зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1248600 - Remove registerBrowserWindow/forgetBrowserWindow calls from /browser/. r=jryans
--HG-- rename : devtools/client/devtools-clhandler.js => devtools/client/devtools-startup.js rename : devtools/client/devtools-clhandler.manifest => devtools/client/devtools-startup.manifest
This commit is contained in:
Родитель
b4d417454e
Коммит
fb5133261e
|
@ -1291,9 +1291,6 @@ var gBrowserInit = {
|
||||||
|
|
||||||
gBrowserThumbnails.init();
|
gBrowserThumbnails.init();
|
||||||
|
|
||||||
// Add Devtools menuitems and listeners
|
|
||||||
gDevToolsBrowser.registerBrowserWindow(window);
|
|
||||||
|
|
||||||
gMenuButtonBadgeManager.init();
|
gMenuButtonBadgeManager.init();
|
||||||
|
|
||||||
gMenuButtonUpdateBadge.init();
|
gMenuButtonUpdateBadge.init();
|
||||||
|
@ -1407,8 +1404,6 @@ var gBrowserInit = {
|
||||||
if (!this._loadHandled)
|
if (!this._loadHandled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
gDevToolsBrowser.forgetBrowserWindow(window);
|
|
||||||
|
|
||||||
let desc = Object.getOwnPropertyDescriptor(window, "DeveloperToolbar");
|
let desc = Object.getOwnPropertyDescriptor(window, "DeveloperToolbar");
|
||||||
if (desc && !desc.get) {
|
if (desc && !desc.get) {
|
||||||
DeveloperToolbar.destroy();
|
DeveloperToolbar.destroy();
|
||||||
|
|
|
@ -375,8 +375,8 @@
|
||||||
@RESPATH@/browser/components/nsBrowserGlue.js
|
@RESPATH@/browser/components/nsBrowserGlue.js
|
||||||
@RESPATH@/browser/components/nsSetDefaultBrowser.manifest
|
@RESPATH@/browser/components/nsSetDefaultBrowser.manifest
|
||||||
@RESPATH@/browser/components/nsSetDefaultBrowser.js
|
@RESPATH@/browser/components/nsSetDefaultBrowser.js
|
||||||
@RESPATH@/browser/components/devtools-clhandler.manifest
|
@RESPATH@/browser/components/devtools-startup.manifest
|
||||||
@RESPATH@/browser/components/devtools-clhandler.js
|
@RESPATH@/browser/components/devtools-startup.js
|
||||||
@RESPATH@/browser/components/webideCli.js
|
@RESPATH@/browser/components/webideCli.js
|
||||||
@RESPATH@/browser/components/webideComponents.manifest
|
@RESPATH@/browser/components/webideComponents.manifest
|
||||||
@RESPATH@/browser/components/Experiments.manifest
|
@RESPATH@/browser/components/Experiments.manifest
|
||||||
|
|
|
@ -6,6 +6,15 @@
|
||||||
bug 1242893 is fixed */
|
bug 1242893 is fixed */
|
||||||
/* globals BrowserToolboxProcess */
|
/* globals BrowserToolboxProcess */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This XPCOM component is loaded very early.
|
||||||
|
* It handles command line arguments like -jsconsole, but also ensures starting
|
||||||
|
* core modules like devtools/devtools-browser that listen for application
|
||||||
|
* startup.
|
||||||
|
*
|
||||||
|
* Be careful to lazy load dependencies as much as possible.
|
||||||
|
**/
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
const { interfaces: Ci, utils: Cu } = Components;
|
const { interfaces: Ci, utils: Cu } = Components;
|
||||||
|
@ -16,9 +25,9 @@ const kDebuggerPrefs = [
|
||||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||||
XPCOMUtils.defineLazyModuleGetter(this, "Services", "resource://gre/modules/Services.jsm");
|
XPCOMUtils.defineLazyModuleGetter(this, "Services", "resource://gre/modules/Services.jsm");
|
||||||
|
|
||||||
function devtoolsCommandlineHandler() {}
|
function DevToolsStartup() {}
|
||||||
|
|
||||||
devtoolsCommandlineHandler.prototype = {
|
DevToolsStartup.prototype = {
|
||||||
handle: function(cmdLine) {
|
handle: function(cmdLine) {
|
||||||
let consoleFlag = cmdLine.handleFlag("jsconsole", false);
|
let consoleFlag = cmdLine.handleFlag("jsconsole", false);
|
||||||
let debuggerFlag = cmdLine.handleFlag("jsdebugger", false);
|
let debuggerFlag = cmdLine.handleFlag("jsdebugger", false);
|
||||||
|
@ -30,9 +39,6 @@ devtoolsCommandlineHandler.prototype = {
|
||||||
if (debuggerFlag) {
|
if (debuggerFlag) {
|
||||||
this.handleDebuggerFlag(cmdLine);
|
this.handleDebuggerFlag(cmdLine);
|
||||||
}
|
}
|
||||||
if (devtoolsFlag) {
|
|
||||||
this.handleDevToolsFlag();
|
|
||||||
}
|
|
||||||
let debuggerServerFlag;
|
let debuggerServerFlag;
|
||||||
try {
|
try {
|
||||||
debuggerServerFlag =
|
debuggerServerFlag =
|
||||||
|
@ -45,19 +51,35 @@ devtoolsCommandlineHandler.prototype = {
|
||||||
if (debuggerServerFlag) {
|
if (debuggerServerFlag) {
|
||||||
this.handleDebuggerServerFlag(cmdLine, debuggerServerFlag);
|
this.handleDebuggerServerFlag(cmdLine, debuggerServerFlag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let onStartup = function(window) {
|
||||||
|
Services.obs.removeObserver(onStartup,
|
||||||
|
"browser-delayed-startup-finished");
|
||||||
|
// Ensure loading core module once firefox is ready
|
||||||
|
this.initDevTools();
|
||||||
|
|
||||||
|
if (devtoolsFlag) {
|
||||||
|
this.handleDevToolsFlag();
|
||||||
|
}
|
||||||
|
}.bind(this);
|
||||||
|
Services.obs.addObserver(onStartup, "browser-delayed-startup-finished", false);
|
||||||
|
},
|
||||||
|
|
||||||
|
initDevTools: function() {
|
||||||
|
let { require } = Cu.import("resource://devtools/shared/Loader.jsm", {});
|
||||||
|
// Ensure loading main devtools module that hooks up into browser UI
|
||||||
|
// and initialize all devtools machinery.
|
||||||
|
// browser.xul or main top-level document used to load this module,
|
||||||
|
// but this code may be called without/before it.
|
||||||
|
require("devtools/client/framework/devtools-browser");
|
||||||
},
|
},
|
||||||
|
|
||||||
handleConsoleFlag: function(cmdLine) {
|
handleConsoleFlag: function(cmdLine) {
|
||||||
let window = Services.wm.getMostRecentWindow("devtools:webconsole");
|
let window = Services.wm.getMostRecentWindow("devtools:webconsole");
|
||||||
if (!window) {
|
if (!window) {
|
||||||
let { require } = Cu.import("resource://devtools/shared/Loader.jsm", {});
|
this.initDevTools();
|
||||||
// Ensure loading main devtools module that hooks up into browser UI
|
|
||||||
// and initialize all devtools machinery.
|
|
||||||
// browser.xul or main top-level document used to load this module,
|
|
||||||
// but this code may be called without/before it.
|
|
||||||
// Bug 1247203 should ease handling this.
|
|
||||||
require("devtools/client/framework/devtools-browser");
|
|
||||||
|
|
||||||
|
let { require } = Cu.import("resource://devtools/shared/Loader.jsm", {});
|
||||||
let hudservice = require("devtools/client/webconsole/hudservice");
|
let hudservice = require("devtools/client/webconsole/hudservice");
|
||||||
let { console } = Cu.import("resource://gre/modules/Console.jsm", {});
|
let { console } = Cu.import("resource://gre/modules/Console.jsm", {});
|
||||||
hudservice.toggleBrowserConsole().then(null, console.error);
|
hudservice.toggleBrowserConsole().then(null, console.error);
|
||||||
|
@ -73,15 +95,11 @@ devtoolsCommandlineHandler.prototype = {
|
||||||
|
|
||||||
// Open the toolbox on the selected tab once the browser starts up.
|
// Open the toolbox on the selected tab once the browser starts up.
|
||||||
handleDevToolsFlag: function() {
|
handleDevToolsFlag: function() {
|
||||||
Services.obs.addObserver(function onStartup(window) {
|
const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
|
||||||
Services.obs.removeObserver(onStartup,
|
const {gDevTools} = require("devtools/client/framework/devtools");
|
||||||
"browser-delayed-startup-finished");
|
const {TargetFactory} = require("devtools/client/framework/target");
|
||||||
const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
|
let target = TargetFactory.forTab(window.gBrowser.selectedTab);
|
||||||
const {gDevTools} = require("devtools/client/framework/devtools");
|
gDevTools.showToolbox(target);
|
||||||
const {TargetFactory} = require("devtools/client/framework/target");
|
|
||||||
let target = TargetFactory.forTab(window.gBrowser.selectedTab);
|
|
||||||
gDevTools.showToolbox(target);
|
|
||||||
}, "browser-delayed-startup-finished", false);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_isRemoteDebuggingEnabled() {
|
_isRemoteDebuggingEnabled() {
|
||||||
|
@ -168,4 +186,4 @@ devtoolsCommandlineHandler.prototype = {
|
||||||
};
|
};
|
||||||
|
|
||||||
this.NSGetFactory = XPCOMUtils.generateNSGetFactory(
|
this.NSGetFactory = XPCOMUtils.generateNSGetFactory(
|
||||||
[devtoolsCommandlineHandler]);
|
[DevToolsStartup]);
|
|
@ -1,2 +1,2 @@
|
||||||
component {9e9a9283-0ce9-4e4a-8f1c-ba129a032c32} devtools-clhandler.js
|
component {9e9a9283-0ce9-4e4a-8f1c-ba129a032c32} devtools-startup.js
|
||||||
contract @mozilla.org/toolkit/console-clh;1 {9e9a9283-0ce9-4e4a-8f1c-ba129a032c32}
|
contract @mozilla.org/toolkit/console-clh;1 {9e9a9283-0ce9-4e4a-8f1c-ba129a032c32}
|
|
@ -4,6 +4,14 @@
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is the main module loaded in Firefox desktop that handles browser
|
||||||
|
* windows and coordinates devtools around each window.
|
||||||
|
*
|
||||||
|
* This module is loaded lazily by devtools-clhandler.js, once the first
|
||||||
|
* browser window is ready (i.e. fired browser-delayed-startup-finished event)
|
||||||
|
**/
|
||||||
|
|
||||||
const {Cc, Ci, Cu} = require("chrome");
|
const {Cc, Ci, Cu} = require("chrome");
|
||||||
const Services = require("Services");
|
const Services = require("Services");
|
||||||
const promise = require("promise");
|
const promise = require("promise");
|
||||||
|
@ -116,10 +124,17 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
},
|
},
|
||||||
|
|
||||||
observe: function(subject, topic, prefName) {
|
observe: function(subject, topic, prefName) {
|
||||||
if (prefName.endsWith("enabled")) {
|
switch (topic) {
|
||||||
for (let win of this._trackedBrowserWindows) {
|
case "browser-delayed-startup-finished":
|
||||||
this.updateCommandAvailability(win);
|
this._registerBrowserWindow(subject);
|
||||||
}
|
break;
|
||||||
|
case "nsPref:changed":
|
||||||
|
if (prefName.endsWith("enabled")) {
|
||||||
|
for (let win of this._trackedBrowserWindows) {
|
||||||
|
this.updateCommandAvailability(win);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -319,11 +334,11 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
* @param {XULDocument} doc
|
* @param {XULDocument} doc
|
||||||
* The document to which menuitems and handlers are to be added
|
* The document to which menuitems and handlers are to be added
|
||||||
*/
|
*/
|
||||||
// Used by browser.js
|
_registerBrowserWindow: function(win) {
|
||||||
registerBrowserWindow: function DT_registerBrowserWindow(win) {
|
|
||||||
this.updateCommandAvailability(win);
|
this.updateCommandAvailability(win);
|
||||||
this.ensurePrefObserver();
|
this.ensurePrefObserver();
|
||||||
gDevToolsBrowser._trackedBrowserWindows.add(win);
|
gDevToolsBrowser._trackedBrowserWindows.add(win);
|
||||||
|
win.addEventListener("unload", this);
|
||||||
gDevToolsBrowser._addAllToolsToMenu(win.document);
|
gDevToolsBrowser._addAllToolsToMenu(win.document);
|
||||||
|
|
||||||
if (this._isFirebugInstalled()) {
|
if (this._isFirebugInstalled()) {
|
||||||
|
@ -749,8 +764,9 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
* @param {XULWindow} win
|
* @param {XULWindow} win
|
||||||
* The window containing the menu entry
|
* The window containing the menu entry
|
||||||
*/
|
*/
|
||||||
forgetBrowserWindow: function DT_forgetBrowserWindow(win) {
|
_forgetBrowserWindow: function(win) {
|
||||||
gDevToolsBrowser._trackedBrowserWindows.delete(win);
|
gDevToolsBrowser._trackedBrowserWindows.delete(win);
|
||||||
|
win.removeEventListener("unload", this);
|
||||||
|
|
||||||
// Destroy toolboxes for closed window
|
// Destroy toolboxes for closed window
|
||||||
for (let [target, toolbox] of gDevTools._toolboxes) {
|
for (let [target, toolbox] of gDevTools._toolboxes) {
|
||||||
|
@ -792,6 +808,11 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
break;
|
break;
|
||||||
case "TabSelect":
|
case "TabSelect":
|
||||||
gDevToolsBrowser._updateMenuCheckbox();
|
gDevToolsBrowser._updateMenuCheckbox();
|
||||||
|
break;
|
||||||
|
case "unload":
|
||||||
|
// top-level browser window unload
|
||||||
|
gDevToolsBrowser._forgetBrowserWindow(event.target.defaultView);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -800,7 +821,12 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
*/
|
*/
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
Services.prefs.removeObserver("devtools.", gDevToolsBrowser);
|
Services.prefs.removeObserver("devtools.", gDevToolsBrowser);
|
||||||
|
Services.obs.removeObserver(gDevToolsBrowser, "browser-delayed-startup-finished");
|
||||||
Services.obs.removeObserver(gDevToolsBrowser.destroy, "quit-application");
|
Services.obs.removeObserver(gDevToolsBrowser.destroy, "quit-application");
|
||||||
|
|
||||||
|
for (let win of gDevToolsBrowser._trackedBrowserWindows) {
|
||||||
|
gDevToolsBrowser._forgetBrowserWindow(win);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -820,6 +846,16 @@ 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.obs.addObserver(gDevToolsBrowser, "browser-delayed-startup-finished", false);
|
||||||
|
// Fake end of browser window load event for all already opened windows
|
||||||
|
// that is already fully loaded.
|
||||||
|
let enumerator = Services.wm.getEnumerator("navigator:browser");
|
||||||
|
while (enumerator.hasMoreElements()) {
|
||||||
|
let win = enumerator.getNext();
|
||||||
|
if (win.gBrowserInit && win.gBrowserInit.delayedStartupFinished) {
|
||||||
|
gDevToolsBrowser._registerBrowserWindow(win);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Load the browser devtools main module as the loader's main module.
|
// Load the browser devtools main module as the loader's main module.
|
||||||
// This is done precisely here as main.js ends up dispatching the
|
// This is done precisely here as main.js ends up dispatching the
|
||||||
|
|
|
@ -44,8 +44,8 @@ if CONFIG['MOZ_BUILD_APP'] == 'browser':
|
||||||
DIRS += ['themes/shims']
|
DIRS += ['themes/shims']
|
||||||
|
|
||||||
EXTRA_COMPONENTS += [
|
EXTRA_COMPONENTS += [
|
||||||
'devtools-clhandler.js',
|
'devtools-startup.js',
|
||||||
'devtools-clhandler.manifest',
|
'devtools-startup.manifest',
|
||||||
]
|
]
|
||||||
|
|
||||||
JAR_MANIFESTS += ['jar.mn']
|
JAR_MANIFESTS += ['jar.mn']
|
||||||
|
|
Загрузка…
Ссылка в новой задаче