diff options
author | Grant Gayed <ggayed> | 2009-05-19 20:11:21 +0000 |
---|---|---|
committer | Grant Gayed <ggayed> | 2009-05-19 20:11:21 +0000 |
commit | e1944478e22e20ecb9470ddd94a9bc42df4b91c5 (patch) | |
tree | 5450544fe78fd4c4bc8188eb92d59e073429feb7 | |
parent | 0bd40b87105c62acb1c4b13c39c51480544cb139 (diff) | |
download | eclipse.platform.swt-e1944478e22e20ecb9470ddd94a9bc42df4b91c5.tar.gz eclipse.platform.swt-e1944478e22e20ecb9470ddd94a9bc42df4b91c5.tar.xz eclipse.platform.swt-e1944478e22e20ecb9470ddd94a9bc42df4b91c5.zip |
re-commit
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptContext.h | 466 | ||||
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptGlobalObject.h | 194 |
2 files changed, 660 insertions, 0 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptContext.h b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptContext.h new file mode 100644 index 0000000000..1bfcacd8ac --- /dev/null +++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptContext.h @@ -0,0 +1,466 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998-1999 + * the Initial Developer. All Rights Reserved. + * + * This file is derived from the Original Code provided by mozilla.org, + * whose Initial Developer is Netscape Communications Corporation. Changes + * to the original file were made by SWT on April 7, 2009 and are marked + * with trailing comment "//SWT-20090407". + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either of the GNU General Public License Version 2 or later (the "GPL"), + * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef nsIScriptContext_h__ +#define nsIScriptContext_h__ + +#include "nscore.h" +//#include "nsStringGlue.h" //SWT-20090407 +#include "nsISupports.h" +#include "nsCOMPtr.h" +#include "nsIProgrammingLanguage.h" + +class nsIScriptGlobalObject; +class nsIScriptSecurityManager; +class nsIPrincipal; +class nsIAtom; +class nsIArray; +class nsIVariant; +class nsIObjectInputStream; +class nsIObjectOutputStream; +class nsScriptObjectHolder; + +typedef void (*nsScriptTerminationFunc)(nsISupports* aRef); + +#define NS_ISCRIPTCONTEXT_IID \ +{ /* {e7b9871d-3adc-4bf7-850d-7fb9554886bf} */ \ + 0xe7b9871d, 0x3adc, 0x4bf7, \ + { 0x85, 0x0d, 0x7f, 0xb9, 0x55, 0x48, 0x86, 0xbf } } + +/* This MUST match JSVERSION_DEFAULT. This version stuff if we don't + know what language we have is a little silly... */ +#define SCRIPTVERSION_DEFAULT JSVERSION_DEFAULT + +/** + * It is used by the application to initialize a runtime and run scripts. + * A script runtime would implement this interface. + * <P><I>It does have a bit too much java script information now, that + * should be removed in a short time. Ideally this interface will be + * language neutral</I> + */ +class nsIScriptContext : public nsISupports +{ +public: +//NS_DECLARE_STATIC_IID_ACCESSOR(NS_ISCRIPTCONTEXT_IID) //SWT-20090407 + + /* Get the ID of this language. */ + virtual PRUint32 GetScriptTypeID() = 0; + + /** + * Compile and execute a script. + * + * @param aScript a string representing the script to be executed + * @param aScopeObject a script object for the scope to execute in, or + * nsnull to use a default scope + * @param aPrincipal the principal that produced the script + * @param aURL the URL or filename for error messages + * @param aLineNo the starting line number of the script for error messages + * @param aVersion the script language version to use when executing + * @param aRetValue the result of executing the script, or null for no result. + * If this is a JS context, it's the caller's responsibility to + * preserve aRetValue from GC across this call + * @param aIsUndefined true if the result of executing the script is the + * undefined value + * + * @return NS_OK if the script was valid and got executed + * + **/ + virtual nsresult EvaluateString(const nsAString& aScript, + void *aScopeObject, + nsIPrincipal *aPrincipal, + const char *aURL, + PRUint32 aLineNo, + PRUint32 aVersion, + nsAString *aRetValue, + PRBool* aIsUndefined) = 0; + + // Note JS bigotry remains here - 'void *aRetValue' is assumed to be a + // jsval. This must move to JSObject before it can be made agnostic. + virtual nsresult EvaluateStringWithValue(const nsAString& aScript, + void *aScopeObject, + nsIPrincipal *aPrincipal, + const char *aURL, + PRUint32 aLineNo, + PRUint32 aVersion, + void* aRetValue, + PRBool* aIsUndefined) = 0; + + /** + * Compile a script. + * + * @param aText a PRUnichar buffer containing script source + * @param aTextLength number of characters in aText + * @param aScopeObject an object telling the scope in which to execute, + * or nsnull to use a default scope + * @param aPrincipal the principal that produced the script + * @param aURL the URL or filename for error messages + * @param aLineNo the starting line number of the script for error messages + * @param aVersion the script language version to use when executing + * @param aScriptObject an executable object that's the result of compiling + * the script. + * + * @return NS_OK if the script source was valid and got compiled. + * + **/ + virtual nsresult CompileScript(const PRUnichar* aText, + PRInt32 aTextLength, + void* aScopeObject, + nsIPrincipal* aPrincipal, + const char* aURL, + PRUint32 aLineNo, + PRUint32 aVersion, + nsScriptObjectHolder &aScriptObject) = 0; + + /** + * Execute a precompiled script object. + * + * @param aScriptObject an object representing the script to be executed + * @param aScopeObject an object telling the scope in which to execute, + * or nsnull to use a default scope + * @param aRetValue the result of executing the script, may be null in + * which case no result string is computed + * @param aIsUndefined true if the result of executing the script is the + * undefined value, may be null for "don't care" + * + * @return NS_OK if the script was valid and got executed + * + */ + virtual nsresult ExecuteScript(void* aScriptObject, + void* aScopeObject, + nsAString* aRetValue, + PRBool* aIsUndefined) = 0; + + /** + * Compile the event handler named by atom aName, with function body aBody + * into a function object returned if ok via aHandler. Does NOT bind the + * function to anything - BindCompiledEventHandler() should be used for that + * purpose. Note that this event handler is always considered 'shared' and + * hence is compiled without principals. Never call the returned object + * directly - it must be bound (and thereby cloned, and therefore have the + * correct principals) before use! + * + * @param aName an nsIAtom pointer naming the function; it must be lowercase + * and ASCII, and should not be longer than 63 chars. This bound on + * length is enforced only by assertions, so caveat caller! + * @param aEventName the name that the event object should be bound to + * @param aBody the event handler function's body + * @param aURL the URL or filename for error messages + * @param aLineNo the starting line number of the script for error messages + * @param aVersion the script language version to use when executing + * @param aHandler the out parameter in which a void pointer to the compiled + * function object is stored on success + * + * @return NS_OK if the function body was valid and got compiled + */ + virtual nsresult CompileEventHandler(nsIAtom* aName, + PRUint32 aArgCount, + const char** aArgNames, + const nsAString& aBody, + const char* aURL, + PRUint32 aLineNo, + PRUint32 aVersion, + nsScriptObjectHolder &aHandler) = 0; + + /** + * Call the function object with given args and return its boolean result, + * or true if the result isn't boolean. + * + * @param aTarget the event target + * @param aScript an object telling the scope in which to call the compiled + * event handler function. + * @param aHandler function object (function and static scope) to invoke. + * @param argv array of arguments. Note each element is assumed to + * be an nsIVariant. + * @param rval out parameter returning result + **/ + virtual nsresult CallEventHandler(nsISupports* aTarget, + void *aScope, void* aHandler, + nsIArray *argv, nsIVariant **rval) = 0; + + /** + * Bind an already-compiled event handler function to a name in the given + * scope object. The same restrictions on aName (lowercase ASCII, not too + * long) applies here as for CompileEventHandler. Scripting languages with + * static scoping must re-bind the scope chain for aHandler to begin (after + * the activation scope for aHandler itself, typically) with aTarget's scope. + * + * Logically, this 'bind' operation is more of a 'copy' - it simply + * stashes/associates the event handler function with the event target, so + * it can be fetched later with GetBoundEventHandler(). + * + * @param aTarget an object telling the scope in which to bind the compiled + * event handler function. The context will presumably associate + * this nsISupports with a native script object. + * @param aName an nsIAtom pointer naming the function; it must be lowercase + * and ASCII, and should not be longer than 63 chars. This bound on + * length is enforced only by assertions, so caveat caller! + * @param aHandler the function object to name, created by an earlier call to + * CompileEventHandler + * @return NS_OK if the function was successfully bound to the name + * + * XXXmarkh - fold this in with SetProperty? Exactly the same concept! + */ + virtual nsresult BindCompiledEventHandler(nsISupports* aTarget, void *aScope, + nsIAtom* aName, + void* aHandler) = 0; + + /** + * Lookup a previously bound event handler for the specified target. This + * will return an object equivilent to the one passed to + * BindCompiledEventHandler (although the pointer may not be the same). + * + */ + virtual nsresult GetBoundEventHandler(nsISupports* aTarget, void *aScope, + nsIAtom* aName, + nsScriptObjectHolder &aHandler) = 0; + + /** + * Compile a function that isn't used as an event handler. + * + * NOTE: Not yet language agnostic (main problem is XBL - not yet agnostic) + * Caller must make sure aFunctionObject is a JS GC root. + * + **/ + virtual nsresult CompileFunction(void* aTarget, + const nsACString& aName, + PRUint32 aArgCount, + const char** aArgArray, + const nsAString& aBody, + const char* aURL, + PRUint32 aLineNo, + PRUint32 aVersion, + PRBool aShared, + void **aFunctionObject) = 0; + + /** + * Set the default scripting language version for this context, which must + * be a context specific to a particular scripting language. + * + **/ + virtual void SetDefaultLanguageVersion(PRUint32 aVersion) = 0; + + /** + * Return the global object. + * + **/ + virtual nsIScriptGlobalObject *GetGlobalObject() = 0; + + /** + * Return the native script context + * + **/ + virtual void *GetNativeContext() = 0; + + /** + * Return the native global object for this context. + * + **/ + virtual void *GetNativeGlobal() = 0; + + /** + * Create a new global object that will be used for an inner window. + * Return the native global and an nsISupports 'holder' that can be used + * to manage the lifetime of it. + */ + virtual nsresult CreateNativeGlobalForInner( + nsIScriptGlobalObject *aNewInner, + PRBool aIsChrome, + void **aNativeGlobal, + nsISupports **aHolder) = 0; + + /** + * Connect this context to a new inner window, to allow "prototype" + * chaining from the inner to the outer. + * Called after both the the inner and outer windows are initialized + **/ + virtual nsresult ConnectToInner(nsIScriptGlobalObject *aNewInner, + void *aOuterGlobal) = 0; + + + /** + * Init this context ready for use. If aGlobalObject is not NULL, this + * function may initialize based on this global (for example, using the + * global to locate a chrome window, create a new 'scope' for this + * global, etc) + * + * @param aGlobalObject the gobal object, which may be nsnull. + * + * @return NS_OK if context initialization was successful + * + **/ + virtual nsresult InitContext(nsIScriptGlobalObject *aGlobalObject) = 0; + + /** + * Check to see if context is as yet intialized. Used to prevent + * reentrancy issues during the initialization process. + * + * @return PR_TRUE if initialized, PR_FALSE if not + * + */ + virtual PRBool IsContextInitialized() = 0; + + /** + * Called as the global object discards its reference to the context. + */ + virtual void FinalizeContext() = 0; + + /** + * For garbage collected systems, do a synchronous collection pass. + * May be a no-op on other systems + * + * @return NS_OK if the method is successful + */ + virtual void GC() = 0; + + /** + * Inform the context that a script was evaluated. + * A GC may be done if "necessary." + * This call is necessary if script evaluation is done + * without using the EvaluateScript method. + * @param aTerminated If true then call termination function if it was + * previously set. Within DOM this will always be true, but outside + * callers (such as xpconnect) who may do script evaluations nested + * inside DOM script evaluations can pass false to avoid premature + * calls to the termination function. + * @return NS_OK if the method is successful + */ + virtual void ScriptEvaluated(PRBool aTerminated) = 0; + + virtual nsresult Serialize(nsIObjectOutputStream* aStream, + void *aScriptObject) = 0; + + /* Deserialize a script from a stream. + */ + virtual nsresult Deserialize(nsIObjectInputStream* aStream, + nsScriptObjectHolder &aResult) = 0; + + /** + * JS only - this function need not be implemented by languages other + * than JS (ie, this should be moved to a private interface!) + * Called to specify a function that should be called when the current + * script (if there is one) terminates. Generally used if breakdown + * of script state needs to happen, but should be deferred till + * the end of script evaluation. + * + * @throws NS_ERROR_OUT_OF_MEMORY if that happens + */ + virtual nsresult SetTerminationFunction(nsScriptTerminationFunc aFunc, + nsISupports* aRef) = 0; + + /** + * Called to disable/enable script execution in this context. + */ + virtual PRBool GetScriptsEnabled() = 0; + virtual void SetScriptsEnabled(PRBool aEnabled, PRBool aFireTimeouts) = 0; + + // SetProperty is suspect and jst believes should not be needed. Currenly + // used only for "arguments". + virtual nsresult SetProperty(void *aTarget, const char *aPropName, nsISupports *aVal) = 0; + /** + * Called to set/get information if the script context is + * currently processing a script tag + */ + virtual PRBool GetProcessingScriptTag() = 0; + virtual void SetProcessingScriptTag(PRBool aResult) = 0; + + /** + * Tell the context whether or not to GC when destroyed. An optimization + * used when the window is a [i]frame, so GC will happen anyway. + */ + virtual void SetGCOnDestruction(PRBool aGCOnDestruction) = 0; + + /** + * Initialize DOM classes on aGlobalObj, always call + * WillInitializeContext() before calling InitContext(), and always + * call DidInitializeContext() when a context is fully + * (successfully) initialized. + */ + virtual nsresult InitClasses(void *aGlobalObj) = 0; + + /** + * Clear the scope object - may be called either as we are being torn down, + * or before we are attached to a different document. + * + * aClearFromProtoChain is probably somewhat JavaScript specific. It + * indicates that the global scope polluter should be removed from the + * prototype chain and that the objects in the prototype chain should + * also have their scopes cleared. We don't do this all the time + * because the prototype chain is shared between inner and outer + * windows, and needs to stay with inner windows that we're keeping + * around. + */ + virtual void ClearScope(void* aGlobalObj, PRBool aClearFromProtoChain) = 0; + + /** + * Tell the context we're about to be reinitialize it. + */ + virtual void WillInitializeContext() = 0; + + /** + * Tell the context we're done reinitializing it. + */ + virtual void DidInitializeContext() = 0; + + /** + * Tell the context our global has a new document, and the scope + * used by it. Use nsISupports to avoid dependency issues - but expect + * a QI for nsIDOMDocument and/or nsIDocument. + */ + virtual void DidSetDocument(nsISupports *aDoc, void *aGlobal) = 0; + + /* Memory managment for script objects. Used by the implementation of + * nsScriptObjectHolder to manage the lifetimes of the held script objects. + * + * See also nsIScriptRuntime, which has identical methods and is useful + * in situations when you do not have an nsIScriptContext. + * + */ + virtual nsresult DropScriptObject(void *object) = 0; + virtual nsresult HoldScriptObject(void *object) = 0; + + /* Report a pending exception if there is one on the native context */ + virtual void ReportPendingException() = 0; +}; + +//NS_DEFINE_STATIC_IID_ACCESSOR(nsIScriptContext, NS_ISCRIPTCONTEXT_IID) //SWT-20090407 + +#endif // nsIScriptContext_h__ diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptGlobalObject.h b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptGlobalObject.h new file mode 100644 index 0000000000..aa0198e11b --- /dev/null +++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptGlobalObject.h @@ -0,0 +1,194 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=2 sw=2 et tw=80: */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998 + * the Initial Developer. All Rights Reserved. + * + * This file is derived from the Original Code provided by mozilla.org, + * whose Initial Developer is Netscape Communications Corporation. Changes + * to the original file were made by SWT on April 7, 2009 and are marked + * with trailing comment "//SWT-20090407". + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either of the GNU General Public License Version 2 or later (the "GPL"), + * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef nsIScriptGlobalObject_h__ +#define nsIScriptGlobalObject_h__ + +#include "nsISupports.h" +//#include "nsEvent.h" //SWT-20090407 +#include "nsIProgrammingLanguage.h" + +class nsIScriptContext; +class nsIDOMDocument; +class nsIDOMEvent; +class nsPresContext; +class nsIScriptGlobalObjectOwner; +class nsIArray; +class nsScriptErrorEvent; +class nsIScriptGlobalObject; +//enum nsEventStatus; //SWT-20090407 +struct JSObject; // until we finally remove GetGlobalJSObject... + +// Some helpers for working with integer "script type IDs", and specifically +// for working with arrays of such objects. For example, it is common for +// implementations supporting multiple script languages to keep each +// language's nsIScriptContext in an array indexed by the language ID. + +// Implementation note: We always ignore nsIProgrammingLanguage::UNKNOWN and +// nsIProgrammingLanguage::CPLUSPLUS - this gives javascript slot 0. An +// attempted micro-optimization tried to avoid us going all the way to +// nsIProgrammingLanguage::MAX; however: +// * Someone is reportedly working on a PHP impl - that has value 9 +// * nsGenericElement therefore allows 4 bits for the value. +// So there is no good reason for us to be more restrictive again... + +#define NS_STID_FIRST nsIProgrammingLanguage::JAVASCRIPT +// like nsGenericElement, only 4 bits worth is valid... +#define NS_STID_LAST (nsIProgrammingLanguage::MAX > 0x000FU ? \ + 0x000FU : nsIProgrammingLanguage::MAX) + +// Use to declare the array size +#define NS_STID_ARRAY_UBOUND (NS_STID_LAST-NS_STID_FIRST+1) + +// Is a language ID valid? +#define NS_STID_VALID(langID) (langID >= NS_STID_FIRST && langID <= NS_STID_LAST) + +// Return an index for a given ID. +#define NS_STID_INDEX(langID) (langID-NS_STID_FIRST) + +// Create a 'for' loop iterating over all possible language IDs (*not* indexes) +#define NS_STID_FOR_ID(varName) \ + for (varName=NS_STID_FIRST;varName<=NS_STID_LAST;varName++) + +// Create a 'for' loop iterating over all indexes (when you don't need to know +// what language it is) +#define NS_STID_FOR_INDEX(varName) \ + for (varName=0;varName<=NS_STID_INDEX(NS_STID_LAST);varName++) + +// A helper function for nsIScriptGlobalObject implementations to use +// when handling a script error. Generally called by the global when a context +// notifies it of an error via nsIScriptGlobalObject::HandleScriptError. +// Returns PR_TRUE if HandleDOMEvent was actually called, in which case +// aStatus will be filled in with the status. +//PRBool //SWT-20090407 +//NS_HandleScriptError(nsIScriptGlobalObject *aScriptGlobal, //SWT-20090407 +// nsScriptErrorEvent *aErrorEvent, //SWT-20090407 +// nsEventStatus *aStatus); //SWT-20090407 + + +#define NS_ISCRIPTGLOBALOBJECT_IID \ +{ /* {6afecd40-0b9a-4cfd-8c42-0f645cd91829} */ \ + 0x6afecd40, 0x0b9a, 0x4cfd, \ + { 0x8c, 0x42, 0x0f, 0x64, 0x5c, 0xd9, 0x18, 0x29 } } + +/** ++ * The global object which keeps a script context for each supported script ++ * language. This often used to store per-window global state. + */ + +class nsIScriptGlobalObject : public nsISupports +{ +public: +//NS_DECLARE_STATIC_IID_ACCESSOR(NS_ISCRIPTGLOBALOBJECT_IID) //SWT-20090407 + + /** + * Ensure that the script global object is initialized for working with the + * specified script language ID. This will set up the nsIScriptContext + * and 'script global' for that language, allowing these to be fetched + * and manipulated. + * @return NS_OK if successful; error conditions include that the language + * has not been registered, as well as 'normal' errors, such as + * out-of-memory + */ + virtual nsresult EnsureScriptEnvironment(PRUint32 aLangID) = 0; + /** + * Get a script context (WITHOUT added reference) for the specified language. + */ + virtual nsIScriptContext *GetScriptContext(PRUint32 lang) = 0; + + /** + * Get the opaque "global" object for the specified lang. + */ + virtual void *GetScriptGlobal(PRUint32 lang) = 0; + + // Set/GetContext deprecated methods - use GetScriptContext/Global + virtual JSObject *GetGlobalJSObject() { + return (JSObject *)GetScriptGlobal(nsIProgrammingLanguage::JAVASCRIPT); + } + + virtual nsIScriptContext *GetContext() { + return GetScriptContext(nsIProgrammingLanguage::JAVASCRIPT); + } + + /** + * Set a new language context for this global. The native global for the + * context is created by the context's GetNativeGlobal() method. + */ + + virtual nsresult SetScriptContext(PRUint32 lang, nsIScriptContext *aContext) = 0; + + /** + * Called when the global script for a language is finalized, typically as + * part of its GC process. By the time this call is made, the + * nsIScriptContext for the language has probably already been removed. + * After this call, the passed object is dead - which should generally be the + * same object the global is using for a global for that language. + */ + + virtual void OnFinalize(PRUint32 aLangID, void *aScriptGlobal) = 0; + + /** + * Called to enable/disable scripts. + */ + virtual void SetScriptsEnabled(PRBool aEnabled, PRBool aFireTimeouts) = 0; + + /** Set a new arguments object for this window. This will be set on + * the window right away (if there's an existing document) and it + * will also be installed on the window when the next document is + * loaded. Each language impl is responsible for converting to + * an array of args as appropriate for that language. + */ + virtual nsresult SetNewArguments(nsIArray *aArguments) = 0; + + /** Handle a script error. Generally called by a script context. + */ +//virtual nsresult HandleScriptError(nsScriptErrorEvent *aErrorEvent, //SWT-20090407 +// nsEventStatus *aEventStatus) { //SWT-20090407 +// return NS_HandleScriptError(this, aErrorEvent, aEventStatus); //SWT-20090407 +//} +}; + +//NS_DEFINE_STATIC_IID_ACCESSOR(nsIScriptGlobalObject, //SWT-20090407 +// NS_ISCRIPTGLOBALOBJECT_IID) //SWT-20090407 + +#endif |