Bug 883592: stop trying to evaluate scripts for documents with no inner windows, r=sicking

--HG--
extra : transplant_source : %99%1Ap-%EC%80b%2B%DE%A5%05%EE%9C%24Dl%22%E7G%D3
This commit is contained in:
Gavin Sharp 2013-06-15 22:06:27 -04:00
parent af8ed74358
commit 46e72e6454
2 changed files with 14 additions and 9 deletions

View File

@ -15,7 +15,6 @@ include $(DEPTH)/config/autoconf.mk
# browser_589246.js is disabled for leaking browser windows (bug 752467)
# browser_580512.js is disabled for leaking browser windows (bug 752467)
# browser_capabilities.js is disabled for using resources outside of the build network (bug 882575)
# browser_707862.js & browser_705597.js are disabled whilst waiting for review (bug 861700 & bug 883592)
MOCHITEST_BROWSER_FILES = \
head.js \
@ -134,6 +133,8 @@ MOCHITEST_BROWSER_FILES = \
browser_687710_2.js \
browser_694378.js \
browser_701377.js \
browser_705597.js \
browser_707862.js \
browser_739531.js \
browser_739531_sample.html \
browser_739805.js \

View File

@ -728,11 +728,16 @@ nsScriptLoader::ProcessRequest(nsScriptLoadRequest* aRequest)
FireScriptAvailable(NS_OK, aRequest);
bool runScript = true;
nsContentUtils::DispatchTrustedEvent(scriptElem->OwnerDoc(),
scriptElem,
NS_LITERAL_STRING("beforescriptexecute"),
true, true, &runScript);
// The window may have gone away by this point, in which case there's no point
// in trying to run the script.
nsPIDOMWindow *pwin = mDocument->GetInnerWindow();
bool runScript = !!pwin;
if (runScript) {
nsContentUtils::DispatchTrustedEvent(scriptElem->OwnerDoc(),
scriptElem,
NS_LITERAL_STRING("beforescriptexecute"),
true, true, &runScript);
}
nsresult rv = NS_OK;
if (runScript) {
@ -807,9 +812,8 @@ nsScriptLoader::EvaluateScript(nsScriptLoadRequest* aRequest,
}
nsPIDOMWindow *pwin = mDocument->GetInnerWindow();
if (!pwin) {
return NS_ERROR_FAILURE;
}
NS_ASSERTION(pwin, "shouldn't be called with a null inner window");
nsCOMPtr<nsIScriptGlobalObject> globalObject = do_QueryInterface(pwin);
NS_ASSERTION(globalObject, "windows must be global objects");