Package org.htmlunit.javascript
Class HtmlUnitContextFactory
- java.lang.Object
-
- org.htmlunit.corejs.javascript.ContextFactory
-
- org.htmlunit.javascript.HtmlUnitContextFactory
-
public class HtmlUnitContextFactory extends org.htmlunit.corejs.javascript.ContextFactoryContextFactory that supports termination of scripts if they exceed a timeout. Based on example from ContextFactory.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classHtmlUnitContextFactory.HtmlUnitErrorReporterprivate classHtmlUnitContextFactory.TimeoutContextCustom context to store execution time and handle timeouts.
-
Field Summary
Fields Modifier and Type Field Description private BrowserVersionbrowserVersion_private org.htmlunit.corejs.javascript.debug.Debuggerdebugger_private booleandeminifyFunctionCode_private static intINSTRUCTION_COUNT_THRESHOLDprivate longtimeout_private WebClientwebClient_
-
Constructor Summary
Constructors Constructor Description HtmlUnitContextFactory(WebClient webClient)Creates a new instance of HtmlUnitContextFactory.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <T> TcallSecured(org.htmlunit.corejs.javascript.ContextAction<T> action, HtmlPage page)Same asContextFactoryContextFactory.call(ContextAction)but with handling of some exceptions.protected java.lang.ObjectdoTopCall(org.htmlunit.corejs.javascript.Callable callable, org.htmlunit.corejs.javascript.Context cx, org.htmlunit.corejs.javascript.Scriptable scope, org.htmlunit.corejs.javascript.Scriptable thisObj, java.lang.Object[] args)org.htmlunit.corejs.javascript.debug.DebuggergetDebugger()Returns the JavaScript debugger to use to receive JavaScript execution debugging information.longgetTimeout()Returns the number of milliseconds a script is allowed to execute before being terminated.protected booleanhasFeature(org.htmlunit.corejs.javascript.Context cx, int featureIndex)booleanisDeminifyFunctionCode()Indicates code of calls likenew Function("...some code...")should be deminified to be more readable when using the debugger.protected org.htmlunit.corejs.javascript.ContextmakeContext()protected voidobserveInstructionCount(org.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 java.lang.StringpreProcess(HtmlPage htmlPage, java.lang.String sourceCode, java.lang.String sourceName, int lineNumber, HtmlElement htmlElement)Pre process the specified source code in the context of the given page using the processor specified in theWebClient.voidsetDebugger(org.htmlunit.corejs.javascript.debug.Debugger debugger)Sets the JavaScript debugger to use to receive JavaScript execution debugging information.voidsetDeminifyFunctionCode(boolean deminify)Configures if the code ofnew Function("...some code...")should be deminified to be more readable when using the debugger.voidsetTimeout(long timeout)Sets the number of milliseconds a script is allowed to execute before being terminated.-
Methods inherited from class org.htmlunit.corejs.javascript.ContextFactory
addListener, call, checkNotSealed, createClassLoader, enter, enterContext, enterContext, exit, getApplicationClassLoader, getE4xImplementationFactory, getGlobal, getGlobalSetter, hasExplicitGlobal, initApplicationClassLoader, initGlobal, isSealed, onContextCreated, onContextReleased, removeListener, seal
-
-
-
-
Field Detail
-
INSTRUCTION_COUNT_THRESHOLD
private static final int INSTRUCTION_COUNT_THRESHOLD
- See Also:
- Constant Field Values
-
webClient_
private final WebClient webClient_
-
browserVersion_
private final BrowserVersion browserVersion_
-
timeout_
private long timeout_
-
debugger_
private org.htmlunit.corejs.javascript.debug.Debugger debugger_
-
deminifyFunctionCode_
private boolean deminifyFunctionCode_
-
-
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(org.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 benull)
-
getDebugger
public org.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 returnsnull.- Returns:
- the JavaScript debugger to use to receive JavaScript execution debugging information
-
setDeminifyFunctionCode
public void setDeminifyFunctionCode(boolean deminify)
Configures if the code ofnew Function("...some code...")should be deminified to be more readable when using the debugger. This is a small performance cost.- Parameters:
deminify- the new value
-
isDeminifyFunctionCode
public boolean isDeminifyFunctionCode()
Indicates code of calls likenew Function("...some code...")should be deminified to be more readable when using the debugger.- Returns:
- the de-minify status
-
preProcess
protected java.lang.String preProcess(HtmlPage htmlPage, java.lang.String sourceCode, java.lang.String sourceName, int lineNumber, HtmlElement htmlElement)
Pre process the specified source code in the context of the given page using the processor specified in theWebClient. This method delegates to the pre processor handler specified in theWebClient. If no pre processor handler is defined, the original source code is returned unchanged.- Parameters:
htmlPage- the pagesourceCode- the code to processsourceName- a name for the chunk of code (used in error messages)lineNumber- the line number of the source codehtmlElement- the HTML element that will act as the context- Returns:
- the source code after being pre processed
- See Also:
ScriptPreProcessor
-
makeContext
protected org.htmlunit.corejs.javascript.Context makeContext()
- Overrides:
makeContextin classorg.htmlunit.corejs.javascript.ContextFactory
-
observeInstructionCount
protected void observeInstructionCount(org.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:
observeInstructionCountin classorg.htmlunit.corejs.javascript.ContextFactory- Parameters:
cx- the context calling usinstructionCount- amount of script instruction executed since last call to observeInstructionCount
-
doTopCall
protected java.lang.Object doTopCall(org.htmlunit.corejs.javascript.Callable callable, org.htmlunit.corejs.javascript.Context cx, org.htmlunit.corejs.javascript.Scriptable scope, org.htmlunit.corejs.javascript.Scriptable thisObj, java.lang.Object[] args)- Overrides:
doTopCallin classorg.htmlunit.corejs.javascript.ContextFactory
-
callSecured
public final <T> T callSecured(org.htmlunit.corejs.javascript.ContextAction<T> action, HtmlPage page)Same asContextFactoryContextFactory.call(ContextAction)but with handling of some exceptions.- Type Parameters:
T- return type of the action- Parameters:
action- the contextActionpage- the page- Returns:
- the result of the call
-
hasFeature
protected boolean hasFeature(org.htmlunit.corejs.javascript.Context cx, int featureIndex)- Overrides:
hasFeaturein classorg.htmlunit.corejs.javascript.ContextFactory
-
-