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;
|
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);
|
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
|
* Add this DevTools's presence to a browser window's document
|
||||||
*
|
*
|
||||||
* @param {XULDocument} doc
|
* @param {ChromeWindow} win
|
||||||
* The document to which devtools should be hooked to.
|
* The window to which devtools should be hooked to.
|
||||||
*/
|
*/
|
||||||
_registerBrowserWindow: function (win) {
|
_registerBrowserWindow: function (win) {
|
||||||
if (gDevToolsBrowser._trackedBrowserWindows.has(win)) {
|
if (gDevToolsBrowser._trackedBrowserWindows.has(win)) {
|
||||||
@ -413,8 +434,6 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
|||||||
}
|
}
|
||||||
gDevToolsBrowser._trackedBrowserWindows.add(win);
|
gDevToolsBrowser._trackedBrowserWindows.add(win);
|
||||||
|
|
||||||
BrowserMenus.addMenus(win.document);
|
|
||||||
|
|
||||||
// Register the Developer widget in the Hamburger menu or navbar
|
// Register the Developer widget in the Hamburger menu or navbar
|
||||||
// only once menus are registered as it depends on it.
|
// only once menus are registered as it depends on it.
|
||||||
gDevToolsBrowser.installDeveloperWidget();
|
gDevToolsBrowser.installDeveloperWidget();
|
||||||
@ -679,6 +698,9 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
|||||||
case "TabSelect":
|
case "TabSelect":
|
||||||
gDevToolsBrowser._updateMenuCheckbox();
|
gDevToolsBrowser._updateMenuCheckbox();
|
||||||
break;
|
break;
|
||||||
|
case "DOMContentLoaded":
|
||||||
|
gDevToolsBrowser._onBrowserWindowLoaded(event.target.defaultView);
|
||||||
|
break;
|
||||||
case "unload":
|
case "unload":
|
||||||
// top-level browser window unload
|
// top-level browser window unload
|
||||||
gDevToolsBrowser._forgetBrowserWindow(event.target.defaultView);
|
gDevToolsBrowser._forgetBrowserWindow(event.target.defaultView);
|
||||||
@ -708,6 +730,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
|||||||
*/
|
*/
|
||||||
destroy: function () {
|
destroy: function () {
|
||||||
Services.prefs.removeObserver("devtools.", gDevToolsBrowser);
|
Services.prefs.removeObserver("devtools.", gDevToolsBrowser);
|
||||||
|
Services.ww.unregisterNotification(gDevToolsBrowser);
|
||||||
Services.obs.removeObserver(gDevToolsBrowser, "browser-delayed-startup-finished");
|
Services.obs.removeObserver(gDevToolsBrowser, "browser-delayed-startup-finished");
|
||||||
Services.obs.removeObserver(gDevToolsBrowser.destroy, "quit-application");
|
Services.obs.removeObserver(gDevToolsBrowser.destroy, "quit-application");
|
||||||
|
|
||||||
@ -740,6 +763,7 @@ gDevTools.on("toolbox-ready", gDevToolsBrowser._updateMenuCheckbox);
|
|||||||
gDevTools.on("toolbox-destroyed", gDevToolsBrowser._updateMenuCheckbox);
|
gDevTools.on("toolbox-destroyed", gDevToolsBrowser._updateMenuCheckbox);
|
||||||
|
|
||||||
Services.obs.addObserver(gDevToolsBrowser.destroy, "quit-application", false);
|
Services.obs.addObserver(gDevToolsBrowser.destroy, "quit-application", false);
|
||||||
|
Services.ww.registerNotification(gDevToolsBrowser);
|
||||||
Services.obs.addObserver(gDevToolsBrowser, "browser-delayed-startup-finished", false);
|
Services.obs.addObserver(gDevToolsBrowser, "browser-delayed-startup-finished", false);
|
||||||
|
|
||||||
// Fake end of browser window load event for all already opened windows
|
// 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()) {
|
while (enumerator.hasMoreElements()) {
|
||||||
let win = enumerator.getNext();
|
let win = enumerator.getNext();
|
||||||
if (win.gBrowserInit && win.gBrowserInit.delayedStartupFinished) {
|
if (win.gBrowserInit && win.gBrowserInit.delayedStartupFinished) {
|
||||||
|
gDevToolsBrowser._onBrowserWindowLoaded(win);
|
||||||
gDevToolsBrowser._registerBrowserWindow(win);
|
gDevToolsBrowser._registerBrowserWindow(win);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user