From 650deb026c998b07523a6424f11db72ac0bd1b3a Mon Sep 17 00:00:00 2001 From: Grant Gayed Date: Tue, 9 Apr 2013 13:59:54 -0400 Subject: initial 64-bit XULRunner commit --- .../common/library/nsIScriptContext-2.h | 468 +++++++++++++++++++++ .../common/library/nsIScriptContext.h | 468 --------------------- .../common/library/nsIScriptGlobalObject-2.h | 196 +++++++++ .../common/library/nsIScriptGlobalObject.h | 196 --------- .../Eclipse SWT Mozilla/common/library/xpcom.cpp | 25 -- .../common/library/xpcom_stats.cpp | 5 - .../common/library/xpcom_stats.h | 5 - .../common/org/eclipse/swt/browser/Mozilla.java | 2 +- .../org/eclipse/swt/internal/mozilla/XPCOM.java | 18 +- .../Eclipse SWT PI/win32/library/build.bat | 3 +- .../Eclipse SWT PI/win32/library/make_win32.mak | 9 +- 11 files changed, 681 insertions(+), 714 deletions(-) create mode 100644 bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptContext-2.h delete mode 100644 bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptContext.h create mode 100644 bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptGlobalObject-2.h delete mode 100644 bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptGlobalObject.h diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptContext-2.h b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptContext-2.h new file mode 100644 index 0000000000..783cf3d34f --- /dev/null +++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptContext-2.h @@ -0,0 +1,468 @@ +/* -*- 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. + * + * 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 ***** */ + +/* + * 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". + */ + +#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. + *

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 + */ +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/nsIScriptContext.h b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptContext.h deleted file mode 100644 index 783cf3d34f..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptContext.h +++ /dev/null @@ -1,468 +0,0 @@ -/* -*- 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. - * - * 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 ***** */ - -/* - * 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". - */ - -#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. - *

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 - */ -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-2.h b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptGlobalObject-2.h new file mode 100644 index 0000000000..276d40f4d5 --- /dev/null +++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptGlobalObject-2.h @@ -0,0 +1,196 @@ +/* -*- 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. + * + * 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 ***** */ + +/* + * 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". + */ + +#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 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 deleted file mode 100644 index 276d40f4d5..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptGlobalObject.h +++ /dev/null @@ -1,196 +0,0 @@ -/* -*- 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. - * - * 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 ***** */ - -/* - * 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". - */ - -#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 diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.cpp b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.cpp index 026e178742..580fb4b1f6 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.cpp +++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.cpp @@ -67,31 +67,6 @@ JNIEXPORT jint JNICALL XPCOM_NATIVE(_1Call__JJJJ)(JNIEnv *env, jclass that, jint } #endif -#if (!defined(NO__1Call__IIIIII) && !defined(JNI64)) || (!defined(NO__1Call__JJJJJI) && defined(JNI64)) -#ifndef JNI64 -extern "C" JNIEXPORT jint JNICALL XPCOM_NATIVE(_1Call__IIIIII)(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jintLong arg2, jintLong arg3, jintLong arg4, jint arg5); -JNIEXPORT jint JNICALL XPCOM_NATIVE(_1Call__IIIIII)(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jintLong arg2, jintLong arg3, jintLong arg4, jint arg5) -#else -extern "C" JNIEXPORT jint JNICALL XPCOM_NATIVE(_1Call__JJJJJI)(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jintLong arg2, jintLong arg3, jintLong arg4, jint arg5); -JNIEXPORT jint JNICALL XPCOM_NATIVE(_1Call__JJJJJI)(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jintLong arg2, jintLong arg3, jintLong arg4, jint arg5) -#endif -{ - jint rc = 0; -#ifndef JNI64 - XPCOM_NATIVE_ENTER(env, that, _1Call__IIIIII_FUNC); -#else - XPCOM_NATIVE_ENTER(env, that, _1Call__JJJJJI_FUNC); -#endif - rc = (jint)((SWT_XREInitEmbedding)arg0)((nsILocalFile *)arg1, (nsILocalFile *)arg2, (nsIDirectoryServiceProvider *)arg3, (nsStaticModuleInfo const *)arg4, arg5); -#ifndef JNI64 - XPCOM_NATIVE_EXIT(env, that, _1Call__IIIIII_FUNC); -#else - XPCOM_NATIVE_EXIT(env, that, _1Call__JJJJJI_FUNC); -#endif - return rc; -} -#endif - #if (!defined(NO__1Call__III_3BII_3I) && !defined(JNI64)) || (!defined(NO__1Call__JJJ_3BII_3I) && defined(JNI64)) #ifndef JNI64 extern "C" JNIEXPORT jintLong JNICALL XPCOM_NATIVE(_1Call__III_3BII_3I)(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jintLong arg2, jbyteArray arg3, jint arg4, jint arg5, jintArray arg6); diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_stats.cpp b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_stats.cpp index c51c1689e3..f1e52b40b3 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_stats.cpp +++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_stats.cpp @@ -26,11 +26,6 @@ char * XPCOM_nativeFunctionNames[] = { #else "_1Call__JJJJ", #endif -#ifndef JNI64 - "_1Call__IIIIII", -#else - "_1Call__JJJJJI", -#endif #ifndef JNI64 "_1Call__III_3BII_3I", #else diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_stats.h b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_stats.h index ff1e3a0e5a..afa3bb90c8 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_stats.h +++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_stats.h @@ -36,11 +36,6 @@ typedef enum { #else _1Call__JJJJ_FUNC, #endif -#ifndef JNI64 - _1Call__IIIIII_FUNC, -#else - _1Call__JJJJJI_FUNC, -#endif #ifndef JNI64 _1Call__III_3BII_3I_FUNC, #else diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java index 40f2af1945..7002315ecb 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java @@ -2036,7 +2036,7 @@ void initXPCOM (String mozillaPath, boolean isXULRunner) { error (XPCOM.NS_ERROR_NULL_POINTER); } if (IsPre_4) { - rc = XPCOM.Call (functionPtr, localFile.getAddress (), localFile.getAddress (), LocationProvider.getAddress (), 0, 0); +// rc = XPCOM.Call (functionPtr, localFile.getAddress (), localFile.getAddress (), LocationProvider.getAddress (), 0, 0); } else { rc = XPCOM.Call (functionPtr, localFile.getAddress (), localFile.getAddress (), LocationProvider.getAddress ()); } diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/XPCOM.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/XPCOM.java index b5c7f2751a..e513e3a823 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/XPCOM.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/XPCOM.java @@ -607,15 +607,15 @@ public static final long /*int*/ Call(long /*int*/ ptr, long /*int*/ aInStream, * @param aAppDirProvider cast=(nsIDirectoryServiceProvider *) * @param aStaticComponents cast=(nsStaticModuleInfo const *) */ -public static final native int _Call(long /*int*/ ptr, long /*int*/ aLibXULDirectory, long /*int*/ aAppDirectory, long /*int*/ aAppDirProvider, long /*int*/ aStaticComponents, int aStaticComponentsCount); -public static final int Call(long /*int*/ ptr, long /*int*/ aLibXULDirectory, long /*int*/ aAppDirectory, long /*int*/ aAppDirProvider, long /*int*/ aStaticComponents, int aStaticComponentsCount) { - lock.lock(); - try { - return _Call(ptr, aLibXULDirectory, aAppDirectory, aAppDirProvider, aStaticComponents, aStaticComponentsCount); - } finally { - lock.unlock(); - } -} +//public static final native int _Call(long /*int*/ ptr, long /*int*/ aLibXULDirectory, long /*int*/ aAppDirectory, long /*int*/ aAppDirProvider, long /*int*/ aStaticComponents, int aStaticComponentsCount); +//public static final int Call(long /*int*/ ptr, long /*int*/ aLibXULDirectory, long /*int*/ aAppDirectory, long /*int*/ aAppDirProvider, long /*int*/ aStaticComponents, int aStaticComponentsCount) { +// lock.lock(); +// try { +// return _Call(ptr, aLibXULDirectory, aAppDirectory, aAppDirProvider, aStaticComponents, aStaticComponentsCount); +// } finally { +// lock.unlock(); +// } +//} /** * @param ptr cast=(SWT_XREInitEmbedding2) diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/build.bat b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/build.bat index dcf469287e..f7b23686e0 100755 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/build.bat +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/build.bat @@ -14,7 +14,7 @@ IF EXIST C:\BUILD\swt-builddir set SWT_BUILDDIR=C:\BUILD\swt-builddir IF x.%SWT_BUILDDIR%==x. set SWT_BUILDDIR=S:\swt-builddir echo SWT build dir: %SWT_BUILDDIR% -IF x.%MSSDK%==x. set MSSDK="%SWT_BUILDDIR%\MSSDKs\Windows Server 2003 SP1 SDK" +IF x.%MSSDK%==x. set MSSDK="%SWT_BUILDDIR%\MSSDKs\Microsoft SDK 6.0 Vista" IF x.%1==x.x86 GOTO X86 IF x.%1==x.x86_64 GOTO X86_64 @@ -43,6 +43,7 @@ GOTO MAKE call %MSSDK%\setenv /X64 /RETAIL IF "x.%OUTPUT_DIR%"=="x." set OUTPUT_DIR=..\..\..\org.eclipse.swt.win32.win32.x86_64 IF x.%JAVA_HOME%==x. set JAVA_HOME=%SWT_BUILDDIR%\ibm-sdk50-x86_64 +IF x.%XULRUNNER_SDK%==x. set XULRUNNER_SDK=C:\xulrunner-10-64\xulrunner-sdk set CFLAGS=-DJNI64 shift GOTO MAKE diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/make_win32.mak b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/make_win32.mak index 57be563a6e..39d5489d79 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/make_win32.mak +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/make_win32.mak @@ -54,16 +54,17 @@ WGL_OBJS = wgl.obj wgl_structs.obj wgl_stats.obj XULRUNNER_PREFIX = swt-xulrunner XULRUNNER_LIB = $(XULRUNNER_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).dll -XULRUNNER_LIBS = Advapi32.lib $(XULRUNNER_SDK)\lib\xpcomglue.lib -XULRUNNER_OBJS = xpcom.obj xpcom_custom.obj xpcom_structs.obj xpcom_stats.obj xpcominit.obj xpcominit_structs.obj xpcominit_stats.obj +XULRUNNER_LIBS = Advapi32.lib $(XULRUNNER_SDK)\sdk\lib\xpcomglue.lib +XULRUNNER_OBJS = xpcom.obj xpcom_custom.obj xpcom_structs.obj xpcom_stats.obj MOZILLACFLAGS = -c \ -O1 \ + -DJNI64 \ -DSWT_VERSION=$(SWT_VERSION) \ $(NATIVE_STATS) \ - -MD \ -DMOZILLA_STRICT_API=1 \ -W3 \ + -MD \ -I. \ -I"$(JAVA_HOME)/include" \ -I"$(JAVA_HOME)/include/win32" \ @@ -84,7 +85,7 @@ CFLAGS = -O1 -DNDEBUG $(cflags) $(cvarsmt) $(CFLAGS) \ /I"$(JAVA_HOME)\include" /I"$(JAVA_HOME)\include\win32" /I. RCFLAGS = $(rcflags) $(rcvars) $(RCFLAGS) -DSWT_FILE_VERSION=\"$(maj_ver).$(min_ver)\" -DSWT_COMMA_VERSION=$(comma_ver) -all: make_swt make_awt make_gdip make_wgl +all: make_xulrunner webkit_win32_custom.obj: webkit_win32_custom.cpp cl $(WEBKITCFLAGS) webkit_win32_custom.cpp -- cgit