Bug 1329403 - Ensure onload blocker is added once mScriptGlobalObject is set. r=smaug, a=lizzard
MozReview-Commit-ID: KREnly28m0v
--- a/dom/base/nsDocument.cpp
+++ b/dom/base/nsDocument.cpp
@@ -4525,18 +4525,26 @@ nsDocument::SetScriptGlobalObject(nsIScr
if (mOnloadBlockCount != 0) {
nsCOMPtr<nsILoadGroup> loadGroup = GetDocumentLoadGroup();
if (loadGroup) {
loadGroup->RemoveRequest(mOnloadBlocker, nullptr, NS_OK);
}
}
}
+ // BlockOnload() might be called before mScriptGlobalObject is set.
+ // We may need to add the blocker once mScriptGlobalObject is set.
+ bool needOnloadBlocker = !mScriptGlobalObject && aScriptGlobalObject;
+
mScriptGlobalObject = aScriptGlobalObject;
+ if (needOnloadBlocker) {
+ EnsureOnloadBlocker();
+ }
+
if (aScriptGlobalObject) {
mHasHadScriptHandlingObject = true;
mHasHadDefaultView = true;
// Go back to using the docshell for the layout history state
mLayoutHistoryState = nullptr;
mScopeObject = do_GetWeakReference(aScriptGlobalObject);
#ifdef DEBUG
if (!mWillReparent) {