Bug 1443849 - Part 4: Call gBrowser.init from gBrowserInit and prevent early access to gBrowser. r=Gijs
MozReview-Commit-ID: 6QxXs8fUk3o
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -136,35 +136,16 @@ XPCOMUtils.defineLazyServiceGetters(this
});
if (AppConstants.MOZ_CRASHREPORTER) {
XPCOMUtils.defineLazyServiceGetter(this, "gCrashReporter",
"@mozilla.org/xre/app-info;1",
"nsICrashReporter");
}
-Object.defineProperty(this, "gBrowser", {
- configurable: true,
- enumerable: true,
- get() {
- delete window.gBrowser;
-
- // The tabbed browser only exists in proper browser windows, but on Mac we
- // load browser.js in other windows and might try to access gBrowser.
- if (!window._gBrowser) {
- return window.gBrowser = null;
- }
-
- window.gBrowser = window._gBrowser;
- delete window._gBrowser;
- gBrowser.init();
- return gBrowser;
- },
-});
-
XPCOMUtils.defineLazyGetter(this, "gBrowserBundle", function() {
return Services.strings.createBundle("chrome://browser/locale/browser.properties");
});
XPCOMUtils.defineLazyGetter(this, "gNavigatorBundle", function() {
// This is a stringbundle-like interface to gBrowserBundle, formerly a getter for
// the "bundle_browser" element.
return {
getString(key) {
@@ -238,16 +219,17 @@ XPCOMUtils.defineLazyGetter(this, "Win7F
}
};
}
return null;
});
const nsIWebNavigation = Ci.nsIWebNavigation;
+var gBrowser;
var gLastValidURLStr = "";
var gInPrintPreviewMode = false;
var gContextMenu = null; // nsContextMenu instance
var gMultiProcessBrowser =
window.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIWebNavigation)
.QueryInterface(Ci.nsILoadContext)
.useRemoteTabs;
@@ -1203,16 +1185,20 @@ let _resolveDelayedStartup;
var delayedStartupPromise = new Promise(resolve => {
_resolveDelayedStartup = resolve;
});
var gBrowserInit = {
delayedStartupFinished: false,
onDOMContentLoaded() {
+ gBrowser = window._gBrowser;
+ delete window._gBrowser;
+ gBrowser.init();
+
window.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(nsIWebNavigation)
.QueryInterface(Ci.nsIDocShellTreeItem).treeOwner
.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIXULWindow)
.XULBrowserWindow = window.XULBrowserWindow;
window.QueryInterface(Ci.nsIDOMChromeWindow).browserDOMWindow =
new nsBrowserAccess();