Partial fix for bug 1256. A script context should always be created for each new script global object.

git-svn-id: svn://10.0.0.236/trunk@15160 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
vidur%netscape.com 1998-11-23 08:09:11 +00:00
parent ef03ca1113
commit 097c7c3402
2 changed files with 46 additions and 34 deletions

View File

@ -312,6 +312,7 @@ protected:
void ReleaseChildren();
void DestroyChildren();
nsresult CreateScriptEnvironment();
static nsIPluginHost *mPluginHost;
static nsIPluginManager *mPluginManager;
@ -1744,10 +1745,9 @@ nsIBrowserWindow* nsWebShell::GetBrowserWindow()
return browserWindow;
}
nsresult
nsWebShell::GetScriptContext(nsIScriptContext** aContext)
nsresult
nsWebShell::CreateScriptEnvironment()
{
NS_PRECONDITION(nsnull != aContext, "null arg");
nsresult res = NS_OK;
if (nsnull == mScriptGlobal) {
@ -1760,13 +1760,23 @@ nsWebShell::GetScriptContext(nsIScriptContext** aContext)
if (nsnull == mScriptContext) {
res = NS_CreateContext(mScriptGlobal, &mScriptContext);
if (NS_OK != res) {
return res;
}
}
*aContext = mScriptContext;
NS_ADDREF(mScriptContext);
return res;
}
nsresult
nsWebShell::GetScriptContext(nsIScriptContext** aContext)
{
NS_PRECONDITION(nsnull != aContext, "null arg");
nsresult res = NS_OK;
res = CreateScriptEnvironment();
if (NS_OK == res) {
*aContext = mScriptContext;
NS_ADDREF(mScriptContext);
}
return res;
}
@ -1777,16 +1787,12 @@ nsWebShell::GetScriptGlobalObject(nsIScriptGlobalObject** aGlobal)
NS_PRECONDITION(nsnull != aGlobal, "null arg");
nsresult res = NS_OK;
if (nsnull == mScriptGlobal) {
res = NS_NewScriptGlobalObject(&mScriptGlobal);
if (NS_OK != res) {
return res;
}
mScriptGlobal->SetWebShell(this);
}
res = CreateScriptEnvironment();
*aGlobal = mScriptGlobal;
NS_IF_ADDREF(mScriptGlobal);
if (NS_OK == res) {
*aGlobal = mScriptGlobal;
NS_IF_ADDREF(mScriptGlobal);
}
return res;
}

View File

@ -312,6 +312,7 @@ protected:
void ReleaseChildren();
void DestroyChildren();
nsresult CreateScriptEnvironment();
static nsIPluginHost *mPluginHost;
static nsIPluginManager *mPluginManager;
@ -1744,10 +1745,9 @@ nsIBrowserWindow* nsWebShell::GetBrowserWindow()
return browserWindow;
}
nsresult
nsWebShell::GetScriptContext(nsIScriptContext** aContext)
nsresult
nsWebShell::CreateScriptEnvironment()
{
NS_PRECONDITION(nsnull != aContext, "null arg");
nsresult res = NS_OK;
if (nsnull == mScriptGlobal) {
@ -1760,13 +1760,23 @@ nsWebShell::GetScriptContext(nsIScriptContext** aContext)
if (nsnull == mScriptContext) {
res = NS_CreateContext(mScriptGlobal, &mScriptContext);
if (NS_OK != res) {
return res;
}
}
*aContext = mScriptContext;
NS_ADDREF(mScriptContext);
return res;
}
nsresult
nsWebShell::GetScriptContext(nsIScriptContext** aContext)
{
NS_PRECONDITION(nsnull != aContext, "null arg");
nsresult res = NS_OK;
res = CreateScriptEnvironment();
if (NS_OK == res) {
*aContext = mScriptContext;
NS_ADDREF(mScriptContext);
}
return res;
}
@ -1777,16 +1787,12 @@ nsWebShell::GetScriptGlobalObject(nsIScriptGlobalObject** aGlobal)
NS_PRECONDITION(nsnull != aGlobal, "null arg");
nsresult res = NS_OK;
if (nsnull == mScriptGlobal) {
res = NS_NewScriptGlobalObject(&mScriptGlobal);
if (NS_OK != res) {
return res;
}
mScriptGlobal->SetWebShell(this);
}
res = CreateScriptEnvironment();
*aGlobal = mScriptGlobal;
NS_IF_ADDREF(mScriptGlobal);
if (NS_OK == res) {
*aGlobal = mScriptGlobal;
NS_IF_ADDREF(mScriptGlobal);
}
return res;
}