mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-22 09:45:41 +00:00
Bug 1297535 - Register devtools menu and keys on DOMContentLoaded to happen before CustomizableUI. r=bgrins
MozReview-Commit-ID: ACy3yJTgzyA --HG-- extra : rebase_source : 2a092d29def1180603f733e484b8a67600092a64
This commit is contained in:
parent
4a28a26c93
commit
6724430882
@ -141,6 +141,10 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "domwindowopened":
|
||||
let win = subject.QueryInterface(Ci.nsIDOMEventTarget);
|
||||
win.addEventListener("DOMContentLoaded", this, { once: true });
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
@ -401,11 +405,28 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||
CustomizableUI.addWidgetToArea("webide-button", CustomizableUI.AREA_NAVBAR);
|
||||
},
|
||||
|
||||
/**
|
||||
* Starts setting up devtools on a given browser window. This method is
|
||||
* called on DOMContentLoaded, so earlier than registerBrowserWindow which
|
||||
* is called after delayed-startup notification. This method should only do
|
||||
* what has to be done early. Otherwise devtools should be initialized lazily
|
||||
* to prevent overloading Firefox startup.
|
||||
*
|
||||
* @param {ChromeWindow} window
|
||||
* The window to which devtools should be hooked to.
|
||||
*/
|
||||
_onBrowserWindowLoaded: function (win) {
|
||||
if (!win.gBrowser) {
|
||||
return;
|
||||
}
|
||||
BrowserMenus.addMenus(win.document);
|
||||
},
|
||||
|
||||
/**
|
||||
* Add this DevTools's presence to a browser window's document
|
||||
*
|
||||
* @param {XULDocument} doc
|
||||
* The document to which devtools should be hooked to.
|
||||
* @param {ChromeWindow} win
|
||||
* The window to which devtools should be hooked to.
|
||||
*/
|
||||
_registerBrowserWindow: function (win) {
|
||||
if (gDevToolsBrowser._trackedBrowserWindows.has(win)) {
|
||||
@ -413,8 +434,6 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||
}
|
||||
gDevToolsBrowser._trackedBrowserWindows.add(win);
|
||||
|
||||
BrowserMenus.addMenus(win.document);
|
||||
|
||||
// Register the Developer widget in the Hamburger menu or navbar
|
||||
// only once menus are registered as it depends on it.
|
||||
gDevToolsBrowser.installDeveloperWidget();
|
||||
@ -679,6 +698,9 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||
case "TabSelect":
|
||||
gDevToolsBrowser._updateMenuCheckbox();
|
||||
break;
|
||||
case "DOMContentLoaded":
|
||||
gDevToolsBrowser._onBrowserWindowLoaded(event.target.defaultView);
|
||||
break;
|
||||
case "unload":
|
||||
// top-level browser window unload
|
||||
gDevToolsBrowser._forgetBrowserWindow(event.target.defaultView);
|
||||
@ -708,6 +730,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||
*/
|
||||
destroy: function () {
|
||||
Services.prefs.removeObserver("devtools.", gDevToolsBrowser);
|
||||
Services.ww.unregisterNotification(gDevToolsBrowser);
|
||||
Services.obs.removeObserver(gDevToolsBrowser, "browser-delayed-startup-finished");
|
||||
Services.obs.removeObserver(gDevToolsBrowser.destroy, "quit-application");
|
||||
|
||||
@ -740,6 +763,7 @@ gDevTools.on("toolbox-ready", gDevToolsBrowser._updateMenuCheckbox);
|
||||
gDevTools.on("toolbox-destroyed", gDevToolsBrowser._updateMenuCheckbox);
|
||||
|
||||
Services.obs.addObserver(gDevToolsBrowser.destroy, "quit-application", false);
|
||||
Services.ww.registerNotification(gDevToolsBrowser);
|
||||
Services.obs.addObserver(gDevToolsBrowser, "browser-delayed-startup-finished", false);
|
||||
|
||||
// Fake end of browser window load event for all already opened windows
|
||||
@ -748,6 +772,7 @@ let enumerator = Services.wm.getEnumerator(gDevTools.chromeWindowType);
|
||||
while (enumerator.hasMoreElements()) {
|
||||
let win = enumerator.getNext();
|
||||
if (win.gBrowserInit && win.gBrowserInit.delayedStartupFinished) {
|
||||
gDevToolsBrowser._onBrowserWindowLoaded(win);
|
||||
gDevToolsBrowser._registerBrowserWindow(win);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user