com.gargoylesoftware.htmlunit.javascript
Class HtmlUnitContextFactory

java.lang.Object
  extended by net.sourceforge.htmlunit.corejs.javascript.ContextFactory
      extended by com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory

public class HtmlUnitContextFactory
extends net.sourceforge.htmlunit.corejs.javascript.ContextFactory

ContextFactory that supports termination of scripts if they exceed a timeout. Based on example from ContextFactory.

Version:
$Revision: 5864 $
Author:
Andre Soereng, Ahmed Ashour, Marc Guillemot

Nested Class Summary
 
Nested classes/interfaces inherited from class net.sourceforge.htmlunit.corejs.javascript.ContextFactory
net.sourceforge.htmlunit.corejs.javascript.ContextFactory.GlobalSetter, net.sourceforge.htmlunit.corejs.javascript.ContextFactory.Listener
 
Constructor Summary
HtmlUnitContextFactory(WebClient webClient)
          Creates a new instance of HtmlUnitContextFactory.
 
Method Summary
protected  void configureErrorReporter(net.sourceforge.htmlunit.corejs.javascript.Context context)
          Configures the ErrorReporter on the context.
protected  Object doTopCall(net.sourceforge.htmlunit.corejs.javascript.Callable callable, net.sourceforge.htmlunit.corejs.javascript.Context cx, net.sourceforge.htmlunit.corejs.javascript.Scriptable scope, net.sourceforge.htmlunit.corejs.javascript.Scriptable thisObj, Object[] args)
          
 net.sourceforge.htmlunit.corejs.javascript.debug.Debugger getDebugger()
          Returns the JavaScript debugger to use to receive JavaScript execution debugging information.
 long getTimeout()
          Returns the number of milliseconds a script is allowed to execute before being terminated.
protected  boolean hasFeature(net.sourceforge.htmlunit.corejs.javascript.Context cx, int featureIndex)
          
protected  net.sourceforge.htmlunit.corejs.javascript.Context makeContext()
          
protected  void observeInstructionCount(net.sourceforge.htmlunit.corejs.javascript.Context cx, int instructionCount)
          Run-time calls this when instruction counting is enabled and the counter reaches limit set by setInstructionObserverThreshold().
protected  String preProcess(HtmlPage htmlPage, String sourceCode, String sourceName, int lineNumber, HtmlElement htmlElement)
          Pre process the specified source code in the context of the given page using the processor specified in the webclient.
 void setDebugger(net.sourceforge.htmlunit.corejs.javascript.debug.Debugger debugger)
          Sets the JavaScript debugger to use to receive JavaScript execution debugging information.
 void setTimeout(long timeout)
          Sets the number of milliseconds a script is allowed to execute before being terminated.
 
Methods inherited from class net.sourceforge.htmlunit.corejs.javascript.ContextFactory
addListener, call, checkNotSealed, createClassLoader, enter, enterContext, enterContext, exit, getApplicationClassLoader, getE4xImplementationFactory, getGlobal, getGlobalSetter, hasExplicitGlobal, initApplicationClassLoader, initGlobal, isSealed, onContextCreated, onContextReleased, removeListener, seal
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

HtmlUnitContextFactory

public HtmlUnitContextFactory(WebClient webClient)
Creates a new instance of HtmlUnitContextFactory.

Parameters:
webClient - the web client using this factory
Method Detail

setTimeout

public void setTimeout(long timeout)
Sets the number of milliseconds a script is allowed to execute before being terminated. A value of 0 or less means no timeout.

Parameters:
timeout - the timeout value

getTimeout

public long getTimeout()
Returns the number of milliseconds a script is allowed to execute before being terminated. A value of 0 or less means no timeout.

Returns:
the timeout value (default value is 0)

setDebugger

public void setDebugger(net.sourceforge.htmlunit.corejs.javascript.debug.Debugger debugger)
Sets the JavaScript debugger to use to receive JavaScript execution debugging information. The HtmlUnit default implementation (DebuggerImpl, DebugFrameImpl) may be used, or a custom debugger may be used instead. By default, no debugger is used.

Parameters:
debugger - the JavaScript debugger to use (may be null)

getDebugger

public net.sourceforge.htmlunit.corejs.javascript.debug.Debugger getDebugger()
Returns the JavaScript debugger to use to receive JavaScript execution debugging information. By default, no debugger is used, and this method returns null.

Returns:
the JavaScript debugger to use to receive JavaScript execution debugging information

preProcess

protected String preProcess(HtmlPage htmlPage,
                            String sourceCode,
                            String sourceName,
                            int lineNumber,
                            HtmlElement htmlElement)
Pre process the specified source code in the context of the given page using the processor specified in the webclient. This method delegates to the pre processor handler specified in the WebClient. If no pre processor handler is defined, the original source code is returned unchanged.

Parameters:
htmlPage - the page
sourceCode - the code to process
sourceName - a name for the chunk of code (used in error messages)
lineNumber - the line number of the source code
htmlElement - the HTML element that will act as the context
Returns:
the source code after being pre processed
See Also:
ScriptPreProcessor

makeContext

protected net.sourceforge.htmlunit.corejs.javascript.Context makeContext()

Overrides:
makeContext in class net.sourceforge.htmlunit.corejs.javascript.ContextFactory

configureErrorReporter

protected void configureErrorReporter(net.sourceforge.htmlunit.corejs.javascript.Context context)
Configures the ErrorReporter on the context.

Parameters:
context - the context to configure
See Also:
Context#setErrorReporter(ErrorReporter)}

observeInstructionCount

protected void observeInstructionCount(net.sourceforge.htmlunit.corejs.javascript.Context cx,
                                       int instructionCount)
Run-time calls this when instruction counting is enabled and the counter reaches limit set by setInstructionObserverThreshold(). A script can be terminated by throwing an Error instance here.

Overrides:
observeInstructionCount in class net.sourceforge.htmlunit.corejs.javascript.ContextFactory
Parameters:
cx - the context calling us
instructionCount - amount of script instruction executed since last call to observeInstructionCount

doTopCall

protected Object doTopCall(net.sourceforge.htmlunit.corejs.javascript.Callable callable,
                           net.sourceforge.htmlunit.corejs.javascript.Context cx,
                           net.sourceforge.htmlunit.corejs.javascript.Scriptable scope,
                           net.sourceforge.htmlunit.corejs.javascript.Scriptable thisObj,
                           Object[] args)

Overrides:
doTopCall in class net.sourceforge.htmlunit.corejs.javascript.ContextFactory

hasFeature

protected boolean hasFeature(net.sourceforge.htmlunit.corejs.javascript.Context cx,
                             int featureIndex)

Overrides:
hasFeature in class net.sourceforge.htmlunit.corejs.javascript.ContextFactory


Copyright © 2002-2011 Gargoyle Software Inc.. All Rights Reserved.