Bug 807410 - Part a: Pass the global object to the nsJSContext constructor; r=jst

This commit is contained in:
Ms2ger 2012-11-04 09:04:04 +01:00
parent 77f04937ad
commit af22942dae
7 changed files with 20 additions and 27 deletions

View File

@ -258,7 +258,7 @@ nsXBLDocGlobalObject::EnsureScriptEnvironment()
NS_GetJSRuntime(getter_AddRefs(scriptRuntime));
NS_ENSURE_TRUE(scriptRuntime, NS_OK);
nsCOMPtr<nsIScriptContext> newCtx = scriptRuntime->CreateContext();
nsCOMPtr<nsIScriptContext> newCtx = scriptRuntime->CreateContext(nullptr);
MOZ_ASSERT(newCtx);
newCtx->WillInitializeContext();

View File

@ -742,7 +742,7 @@ nsXULPDGlobalObject::EnsureScriptEnvironment()
nsresult rv = NS_GetJSRuntime(getter_AddRefs(languageRuntime));
NS_ENSURE_SUCCESS(rv, NS_OK);
nsCOMPtr<nsIScriptContext> ctxNew = languageRuntime->CreateContext();
nsCOMPtr<nsIScriptContext> ctxNew = languageRuntime->CreateContext(nullptr);
MOZ_ASSERT(ctxNew);
// We have to setup a special global object. We do this then

View File

@ -1450,17 +1450,13 @@ nsGlobalWindow::EnsureScriptEnvironment()
nsresult rv = NS_GetJSRuntime(getter_AddRefs(scriptRuntime));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIScriptContext> context = scriptRuntime->CreateContext();
nsCOMPtr<nsIScriptContext> context = scriptRuntime->CreateContext(this);
NS_ASSERTION(!mContext, "Will overwrite mContext!");
// should probably assert the context is clean???
context->WillInitializeContext();
// We need point the context to the global window before initializing it
// so that it can make various decisions properly.
context->SetGlobalObject(this);
rv = context->InitContext();
NS_ENSURE_SUCCESS(rv, rv);

View File

@ -45,8 +45,8 @@ NS_DEFINE_STATIC_IID_ACCESSOR(nsIScriptContextPrincipal,
NS_ISCRIPTCONTEXTPRINCIPAL_IID)
#define NS_ISCRIPTCONTEXT_IID \
{ 0x8bdcea47, 0x6704, 0x4dd9, \
{ 0xa1, 0x48, 0x05, 0x34, 0xcf, 0xe2, 0xdd, 0x57 } }
{ 0x9ab23956, 0x39be, 0x430c, \
{ 0x8e, 0xe5, 0x44, 0xa3, 0xbf, 0x39, 0xe9, 0x96 } }
/* This MUST match JSVERSION_DEFAULT. This version stuff if we don't
know what language we have is a little silly... */
@ -61,8 +61,6 @@ class nsIScriptContext : public nsIScriptContextPrincipal
public:
NS_DECLARE_STATIC_IID_ACCESSOR(NS_ISCRIPTCONTEXT_IID)
virtual void SetGlobalObject(nsIScriptGlobalObject* aGlobalObject) = 0;
/**
* Compile and execute a script.
*

View File

@ -8,8 +8,8 @@
#include "nsIScriptContext.h"
#define NS_ISCRIPTRUNTIME_IID \
{ 0xfa30d7a8, 0x7f0a, 0x437a, \
{ 0xa1, 0x0c, 0xc2, 0xbe, 0xa3, 0xdb, 0x4f, 0x4b } }
{ 0x80f87f51, 0x626d, 0x4311, \
{ 0x8c, 0x4e, 0x31, 0x37, 0xcf, 0x52, 0x1e, 0x9b } }
/**
* A singleton language environment for an application. Responsible for
@ -22,7 +22,8 @@ public:
NS_DECLARE_STATIC_IID_ACCESSOR(NS_ISCRIPTRUNTIME_IID)
/* Factory for a new context for this language */
virtual already_AddRefed<nsIScriptContext> CreateContext() = 0;
virtual already_AddRefed<nsIScriptContext>
CreateContext(nsIScriptGlobalObject* aGlobalObject) = 0;
/* Memory managment for script objects returned from various
* nsIScriptContext methods. These are identical to those in

View File

@ -1071,10 +1071,11 @@ nsJSContext::JSOptionChangedCallback(const char *pref, void *data)
return 0;
}
nsJSContext::nsJSContext(JSRuntime *aRuntime)
: mActive(false),
mGCOnDestruction(true),
mExecuteDepth(0)
nsJSContext::nsJSContext(JSRuntime *aRuntime, nsIScriptGlobalObject* aGlobalObject)
: mActive(false)
, mGCOnDestruction(true)
, mExecuteDepth(0)
, mGlobalObjectRef(aGlobalObject)
{
mNext = sContextList;
mPrev = &sContextList;
@ -3624,9 +3625,10 @@ NS_IMPL_ADDREF(nsJSRuntime)
NS_IMPL_RELEASE(nsJSRuntime)
already_AddRefed<nsIScriptContext>
nsJSRuntime::CreateContext()
nsJSRuntime::CreateContext(nsIScriptGlobalObject* aGlobalObject)
{
nsCOMPtr<nsIScriptContext> scriptContext = new nsJSContext(sRuntime);
nsCOMPtr<nsIScriptContext> scriptContext =
new nsJSContext(sRuntime, aGlobalObject);
return scriptContext.forget();
}

View File

@ -34,7 +34,7 @@ class nsJSContext : public nsIScriptContext,
public nsIXPCScriptNotify
{
public:
nsJSContext(JSRuntime *aRuntime);
nsJSContext(JSRuntime* aRuntime, nsIScriptGlobalObject* aGlobalObject);
virtual ~nsJSContext();
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
@ -43,11 +43,6 @@ public:
virtual nsIScriptObjectPrincipal* GetObjectPrincipal();
virtual void SetGlobalObject(nsIScriptGlobalObject* aGlobalObject)
{
mGlobalObjectRef = aGlobalObject;
}
virtual nsresult EvaluateString(const nsAString& aScript,
JSObject* aScopeObject,
nsIPrincipal *principal,
@ -314,7 +309,8 @@ public:
// nsISupports
NS_DECL_ISUPPORTS
virtual already_AddRefed<nsIScriptContext> CreateContext();
virtual already_AddRefed<nsIScriptContext>
CreateContext(nsIScriptGlobalObject* aGlobalObject);
virtual nsresult DropScriptObject(void *object);
virtual nsresult HoldScriptObject(void *object);