forked from mirrors/gecko-dev
Bug 1360237 - Fix eslint issues for devtools/client/framework/devtools-browser.js. r=pbro
MozReview-Commit-ID: 3P2VOksEmQd --HG-- extra : rebase_source : a735b888b5a99263f004f4eb92954c7590bc0219
This commit is contained in:
parent
b4c0d1615b
commit
af4176fc70
2 changed files with 76 additions and 72 deletions
|
|
@ -84,6 +84,7 @@ devtools/client/commandline/**
|
||||||
devtools/client/debugger/**
|
devtools/client/debugger/**
|
||||||
devtools/client/framework/**
|
devtools/client/framework/**
|
||||||
!devtools/client/framework/devtools.js
|
!devtools/client/framework/devtools.js
|
||||||
|
!devtools/client/framework/devtools-browser.js
|
||||||
!devtools/client/framework/selection.js
|
!devtools/client/framework/selection.js
|
||||||
!devtools/client/framework/target*
|
!devtools/client/framework/target*
|
||||||
!devtools/client/framework/toolbox*
|
!devtools/client/framework/toolbox*
|
||||||
|
|
|
||||||
|
|
@ -14,10 +14,9 @@
|
||||||
|
|
||||||
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 defer = require("devtools/shared/defer");
|
const defer = require("devtools/shared/defer");
|
||||||
const Telemetry = require("devtools/client/shared/telemetry");
|
const Telemetry = require("devtools/client/shared/telemetry");
|
||||||
const { gDevTools } = require("./devtools");
|
const {gDevTools} = require("./devtools");
|
||||||
|
|
||||||
// Load target and toolbox lazily as they need gDevTools to be fully initialized
|
// Load target and toolbox lazily as they need gDevTools to be fully initialized
|
||||||
loader.lazyRequireGetter(this, "TargetFactory", "devtools/client/framework/target", true);
|
loader.lazyRequireGetter(this, "TargetFactory", "devtools/client/framework/target", true);
|
||||||
|
|
@ -68,7 +67,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
* of there
|
* of there
|
||||||
*/
|
*/
|
||||||
// used by browser-sets.inc, command
|
// used by browser-sets.inc, command
|
||||||
toggleToolboxCommand: function (gBrowser) {
|
toggleToolboxCommand(gBrowser) {
|
||||||
let target = TargetFactory.forTab(gBrowser.selectedTab);
|
let target = TargetFactory.forTab(gBrowser.selectedTab);
|
||||||
let toolbox = gDevTools.getToolbox(target);
|
let toolbox = gDevTools.getToolbox(target);
|
||||||
|
|
||||||
|
|
@ -84,7 +83,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
* depending on their relevant prefs. It gets run when a window is registered,
|
* depending on their relevant prefs. It gets run when a window is registered,
|
||||||
* or when any of the devtools prefs change.
|
* or when any of the devtools prefs change.
|
||||||
*/
|
*/
|
||||||
updateCommandAvailability: function (win) {
|
updateCommandAvailability(win) {
|
||||||
let doc = win.document;
|
let doc = win.document;
|
||||||
|
|
||||||
function toggleMenuItem(id, isEnabled) {
|
function toggleMenuItem(id, isEnabled) {
|
||||||
|
|
@ -124,10 +123,12 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
|
|
||||||
// Enable Browser Toolbox?
|
// Enable Browser Toolbox?
|
||||||
let chromeEnabled = Services.prefs.getBoolPref("devtools.chrome.enabled");
|
let chromeEnabled = Services.prefs.getBoolPref("devtools.chrome.enabled");
|
||||||
let devtoolsRemoteEnabled = Services.prefs.getBoolPref("devtools.debugger.remote-enabled");
|
let devtoolsRemoteEnabled = Services.prefs.getBoolPref(
|
||||||
|
"devtools.debugger.remote-enabled");
|
||||||
let remoteEnabled = chromeEnabled && devtoolsRemoteEnabled;
|
let remoteEnabled = chromeEnabled && devtoolsRemoteEnabled;
|
||||||
toggleMenuItem("menu_browserToolbox", remoteEnabled);
|
toggleMenuItem("menu_browserToolbox", remoteEnabled);
|
||||||
toggleMenuItem("menu_browserContentToolbox", remoteEnabled && win.gMultiProcessBrowser);
|
toggleMenuItem("menu_browserContentToolbox",
|
||||||
|
remoteEnabled && win.gMultiProcessBrowser);
|
||||||
|
|
||||||
// Enable DevTools connection screen, if the preference allows this.
|
// Enable DevTools connection screen, if the preference allows this.
|
||||||
toggleMenuItem("menu_devtools_connect", devtoolsRemoteEnabled);
|
toggleMenuItem("menu_devtools_connect", devtoolsRemoteEnabled);
|
||||||
|
|
@ -138,7 +139,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
* window to make it possible to change colors on elements in the browser (like gcli,
|
* window to make it possible to change colors on elements in the browser (like gcli,
|
||||||
* or the splitter between the toolbox and web content).
|
* or the splitter between the toolbox and web content).
|
||||||
*/
|
*/
|
||||||
updateDevtoolsThemeAttribute: function(win) {
|
updateDevtoolsThemeAttribute(win) {
|
||||||
// Set an attribute on root element of each window to make it possible
|
// Set an attribute on root element of each window to make it possible
|
||||||
// to change colors based on the selected devtools theme.
|
// to change colors based on the selected devtools theme.
|
||||||
let devtoolsTheme = Services.prefs.getCharPref("devtools.theme");
|
let devtoolsTheme = Services.prefs.getCharPref("devtools.theme");
|
||||||
|
|
@ -147,9 +148,12 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Style gcli and the splitter between the toolbox and page content. This used to
|
// Style gcli and the splitter between the toolbox and page content. This used to
|
||||||
// set the attribute on the browser's root node but that regressed tpaint: bug 1331449.
|
// set the attribute on the browser's root node but that regressed tpaint:
|
||||||
win.document.getElementById("browser-bottombox").setAttribute("devtoolstheme", devtoolsTheme);
|
// bug 1331449.
|
||||||
win.document.getElementById("content").setAttribute("devtoolstheme", devtoolsTheme);
|
win.document.getElementById("browser-bottombox")
|
||||||
|
.setAttribute("devtoolstheme", devtoolsTheme);
|
||||||
|
win.document.getElementById("content")
|
||||||
|
.setAttribute("devtoolstheme", devtoolsTheme);
|
||||||
|
|
||||||
// If the toolbox color changes and we have the opposite compact theme applied,
|
// If the toolbox color changes and we have the opposite compact theme applied,
|
||||||
// change it to match. For example:
|
// change it to match. For example:
|
||||||
|
|
@ -161,14 +165,16 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
let currentTheme = LightweightThemeManager.currentTheme;
|
let currentTheme = LightweightThemeManager.currentTheme;
|
||||||
let currentThemeID = currentTheme && currentTheme.id;
|
let currentThemeID = currentTheme && currentTheme.id;
|
||||||
if (currentThemeID == COMPACT_LIGHT_ID && devtoolsTheme == "dark") {
|
if (currentThemeID == COMPACT_LIGHT_ID && devtoolsTheme == "dark") {
|
||||||
LightweightThemeManager.currentTheme = LightweightThemeManager.getUsedTheme(COMPACT_DARK_ID);
|
LightweightThemeManager.currentTheme =
|
||||||
|
LightweightThemeManager.getUsedTheme(COMPACT_DARK_ID);
|
||||||
}
|
}
|
||||||
if (currentThemeID == COMPACT_DARK_ID && devtoolsTheme == "light") {
|
if (currentThemeID == COMPACT_DARK_ID && devtoolsTheme == "light") {
|
||||||
LightweightThemeManager.currentTheme = LightweightThemeManager.getUsedTheme(COMPACT_LIGHT_ID);
|
LightweightThemeManager.currentTheme =
|
||||||
|
LightweightThemeManager.getUsedTheme(COMPACT_LIGHT_ID);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
observe: function (subject, topic, prefName) {
|
observe(subject, topic, prefName) {
|
||||||
switch (topic) {
|
switch (topic) {
|
||||||
case "browser-delayed-startup-finished":
|
case "browser-delayed-startup-finished":
|
||||||
this._registerBrowserWindow(subject);
|
this._registerBrowserWindow(subject);
|
||||||
|
|
@ -191,7 +197,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
case "sdk:loader:destroy":
|
case "sdk:loader:destroy":
|
||||||
// This event is fired when the devtools loader unloads, which happens
|
// This event is fired when the devtools loader unloads, which happens
|
||||||
// only when the add-on workflow ask devtools to be reloaded.
|
// only when the add-on workflow ask devtools to be reloaded.
|
||||||
if (subject.wrappedJSObject == require('@loader/unload')) {
|
if (subject.wrappedJSObject == require("@loader/unload")) {
|
||||||
gDevToolsBrowser.destroy({ shuttingDown: false });
|
gDevToolsBrowser.destroy({ shuttingDown: false });
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -206,7 +212,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
Services.prefs.setCharPref("devtools.theme", "light");
|
Services.prefs.setCharPref("devtools.theme", "light");
|
||||||
}
|
}
|
||||||
if (currentThemeID == COMPACT_DARK_ID && devtoolsTheme == "light") {
|
if (currentThemeID == COMPACT_DARK_ID && devtoolsTheme == "light") {
|
||||||
Services.prefs.setCharPref("devtools.theme", "dark");
|
Services.prefs.setCharPref("devtools.theme", "dark");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -214,7 +220,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
|
|
||||||
_prefObserverRegistered: false,
|
_prefObserverRegistered: false,
|
||||||
|
|
||||||
ensurePrefObserver: function () {
|
ensurePrefObserver() {
|
||||||
if (!this._prefObserverRegistered) {
|
if (!this._prefObserverRegistered) {
|
||||||
this._prefObserverRegistered = true;
|
this._prefObserverRegistered = true;
|
||||||
Services.prefs.addObserver("devtools.", this);
|
Services.prefs.addObserver("devtools.", this);
|
||||||
|
|
@ -237,29 +243,26 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
*/
|
*/
|
||||||
// Used when: - registering a new tool
|
// Used when: - registering a new tool
|
||||||
// - new xul window, to add menu items
|
// - new xul window, to add menu items
|
||||||
selectToolCommand: function (gBrowser, toolId) {
|
selectToolCommand(gBrowser, toolId) {
|
||||||
let target = TargetFactory.forTab(gBrowser.selectedTab);
|
let target = TargetFactory.forTab(gBrowser.selectedTab);
|
||||||
let toolbox = gDevTools.getToolbox(target);
|
let toolbox = gDevTools.getToolbox(target);
|
||||||
let toolDefinition = gDevTools.getToolDefinition(toolId);
|
let toolDefinition = gDevTools.getToolDefinition(toolId);
|
||||||
|
|
||||||
if (toolbox &&
|
if (toolbox &&
|
||||||
(toolbox.currentToolId == toolId ||
|
(toolbox.currentToolId == toolId ||
|
||||||
(toolId == "webconsole" && toolbox.splitConsole)))
|
(toolId == "webconsole" && toolbox.splitConsole))) {
|
||||||
{
|
|
||||||
toolbox.fireCustomKey(toolId);
|
toolbox.fireCustomKey(toolId);
|
||||||
|
|
||||||
if (toolDefinition.preventClosingOnKey || toolbox.hostType == Toolbox.HostType.WINDOW) {
|
if (toolDefinition.preventClosingOnKey ||
|
||||||
|
toolbox.hostType == Toolbox.HostType.WINDOW) {
|
||||||
toolbox.raise();
|
toolbox.raise();
|
||||||
} else {
|
} else {
|
||||||
gDevTools.closeToolbox(target);
|
gDevTools.closeToolbox(target);
|
||||||
}
|
}
|
||||||
gDevTools.emit("select-tool-command", toolId);
|
gDevTools.emit("select-tool-command", toolId);
|
||||||
} else {
|
} else {
|
||||||
gDevTools.showToolbox(target, toolId).then(() => {
|
gDevTools.showToolbox(target, toolId).then(newToolbox => {
|
||||||
let target = TargetFactory.forTab(gBrowser.selectedTab);
|
newToolbox.fireCustomKey(toolId);
|
||||||
let toolbox = gDevTools.getToolbox(target);
|
|
||||||
|
|
||||||
toolbox.fireCustomKey(toolId);
|
|
||||||
gDevTools.emit("select-tool-command", toolId);
|
gDevTools.emit("select-tool-command", toolId);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -269,7 +272,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
* Open a tab on "about:debugging", optionally pre-select a given tab.
|
* Open a tab on "about:debugging", optionally pre-select a given tab.
|
||||||
*/
|
*/
|
||||||
// Used by browser-sets.inc, command
|
// Used by browser-sets.inc, command
|
||||||
openAboutDebugging: function (gBrowser, hash) {
|
openAboutDebugging(gBrowser, hash) {
|
||||||
let url = "about:debugging" + (hash ? "#" + hash : "");
|
let url = "about:debugging" + (hash ? "#" + hash : "");
|
||||||
gBrowser.selectedTab = gBrowser.addTab(url);
|
gBrowser.selectedTab = gBrowser.addTab(url);
|
||||||
},
|
},
|
||||||
|
|
@ -278,7 +281,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
* Open a tab to allow connects to a remote browser
|
* Open a tab to allow connects to a remote browser
|
||||||
*/
|
*/
|
||||||
// Used by browser-sets.inc, command
|
// Used by browser-sets.inc, command
|
||||||
openConnectScreen: function (gBrowser) {
|
openConnectScreen(gBrowser) {
|
||||||
gBrowser.selectedTab = gBrowser.addTab("chrome://devtools/content/framework/connect/connect.xhtml");
|
gBrowser.selectedTab = gBrowser.addTab("chrome://devtools/content/framework/connect/connect.xhtml");
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -287,7 +290,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
*/
|
*/
|
||||||
// Used by browser-sets.inc, command
|
// Used by browser-sets.inc, command
|
||||||
// itself, webide widget
|
// itself, webide widget
|
||||||
openWebIDE: function () {
|
openWebIDE() {
|
||||||
let win = Services.wm.getMostRecentWindow("devtools:webide");
|
let win = Services.wm.getMostRecentWindow("devtools:webide");
|
||||||
if (win) {
|
if (win) {
|
||||||
win.focus();
|
win.focus();
|
||||||
|
|
@ -338,7 +341,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
await inspector.once("inspector-updated");
|
await inspector.once("inspector-updated");
|
||||||
},
|
},
|
||||||
|
|
||||||
_getContentProcessTarget: function (processId) {
|
_getContentProcessTarget(processId) {
|
||||||
// Create a DebuggerServer in order to connect locally to it
|
// Create a DebuggerServer in order to connect locally to it
|
||||||
if (!DebuggerServer.initialized) {
|
if (!DebuggerServer.initialized) {
|
||||||
DebuggerServer.init();
|
DebuggerServer.init();
|
||||||
|
|
@ -376,7 +379,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
},
|
},
|
||||||
|
|
||||||
// Used by menus.js
|
// Used by menus.js
|
||||||
openContentProcessToolbox: function (gBrowser) {
|
openContentProcessToolbox(gBrowser) {
|
||||||
let { childCount } = Services.ppmm;
|
let { childCount } = Services.ppmm;
|
||||||
// Get the process message manager for the current tab
|
// Get the process message manager for the current tab
|
||||||
let mm = gBrowser.selectedBrowser.messageManager.processMessageManager;
|
let mm = gBrowser.selectedBrowser.messageManager.processMessageManager;
|
||||||
|
|
@ -404,7 +407,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
/**
|
/**
|
||||||
* Install Developer widget
|
* Install Developer widget
|
||||||
*/
|
*/
|
||||||
installDeveloperWidget: function () {
|
installDeveloperWidget() {
|
||||||
let id = "developer-button";
|
let id = "developer-button";
|
||||||
let widget = CustomizableUI.getWidget(id);
|
let widget = CustomizableUI.getWidget(id);
|
||||||
if (widget && widget.provider == CustomizableUI.PROVIDER_API) {
|
if (widget && widget.provider == CustomizableUI.PROVIDER_API) {
|
||||||
|
|
@ -419,12 +422,11 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
defaultArea: AppConstants.MOZ_DEV_EDITION ?
|
defaultArea: AppConstants.MOZ_DEV_EDITION ?
|
||||||
CustomizableUI.AREA_NAVBAR :
|
CustomizableUI.AREA_NAVBAR :
|
||||||
CustomizableUI.AREA_PANEL,
|
CustomizableUI.AREA_PANEL,
|
||||||
onViewShowing: function (aEvent) {
|
onViewShowing(event) {
|
||||||
// Populate the subview with whatever menuitems are in the developer
|
// Populate the subview with whatever menuitems are in the developer
|
||||||
// menu. We skip menu elements, because the menu panel has no way
|
// menu. We skip menu elements, because the menu panel has no way
|
||||||
// of dealing with those right now.
|
// of dealing with those right now.
|
||||||
let doc = aEvent.target.ownerDocument;
|
let doc = event.target.ownerDocument;
|
||||||
let win = doc.defaultView;
|
|
||||||
|
|
||||||
let menu = doc.getElementById("menuWebDeveloperPopup");
|
let menu = doc.getElementById("menuWebDeveloperPopup");
|
||||||
|
|
||||||
|
|
@ -440,7 +442,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
clearSubview(developerItems);
|
clearSubview(developerItems);
|
||||||
fillSubviewFromMenuItems(itemsToDisplay, developerItems);
|
fillSubviewFromMenuItems(itemsToDisplay, developerItems);
|
||||||
},
|
},
|
||||||
onBeforeCreated: function (doc) {
|
onBeforeCreated(doc) {
|
||||||
// Bug 1223127, CUI should make this easier to do.
|
// Bug 1223127, CUI should make this easier to do.
|
||||||
if (doc.getElementById("PanelUI-developerItems")) {
|
if (doc.getElementById("PanelUI-developerItems")) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -459,7 +461,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
* Install WebIDE widget
|
* Install WebIDE widget
|
||||||
*/
|
*/
|
||||||
// Used by itself
|
// Used by itself
|
||||||
installWebIDEWidget: function () {
|
installWebIDEWidget() {
|
||||||
if (this.isWebIDEWidgetInstalled()) {
|
if (this.isWebIDEWidgetInstalled()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -477,13 +479,13 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
label: "devtools-webide-button2.label",
|
label: "devtools-webide-button2.label",
|
||||||
tooltiptext: "devtools-webide-button2.tooltiptext",
|
tooltiptext: "devtools-webide-button2.tooltiptext",
|
||||||
defaultArea: defaultArea,
|
defaultArea: defaultArea,
|
||||||
onCommand: function (aEvent) {
|
onCommand(event) {
|
||||||
gDevToolsBrowser.openWebIDE();
|
gDevToolsBrowser.openWebIDE();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
isWebIDEWidgetInstalled: function () {
|
isWebIDEWidgetInstalled() {
|
||||||
let widgetWrapper = CustomizableUI.getWidget("webide-button");
|
let widgetWrapper = CustomizableUI.getWidget("webide-button");
|
||||||
return !!(widgetWrapper && widgetWrapper.provider == CustomizableUI.PROVIDER_API);
|
return !!(widgetWrapper && widgetWrapper.provider == CustomizableUI.PROVIDER_API);
|
||||||
},
|
},
|
||||||
|
|
@ -496,7 +498,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
/**
|
/**
|
||||||
* Uninstall WebIDE widget
|
* Uninstall WebIDE widget
|
||||||
*/
|
*/
|
||||||
uninstallWebIDEWidget: function () {
|
uninstallWebIDEWidget() {
|
||||||
if (this.isWebIDEWidgetInstalled()) {
|
if (this.isWebIDEWidgetInstalled()) {
|
||||||
CustomizableUI.removeWidgetFromArea("webide-button");
|
CustomizableUI.removeWidgetFromArea("webide-button");
|
||||||
}
|
}
|
||||||
|
|
@ -507,7 +509,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
* Move WebIDE widget to the navbar
|
* Move WebIDE widget to the navbar
|
||||||
*/
|
*/
|
||||||
// Used by webide.js
|
// Used by webide.js
|
||||||
moveWebIDEWidgetInNavbar: function () {
|
moveWebIDEWidgetInNavbar() {
|
||||||
CustomizableUI.addWidgetToArea("webide-button", CustomizableUI.AREA_NAVBAR);
|
CustomizableUI.addWidgetToArea("webide-button", CustomizableUI.AREA_NAVBAR);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -517,7 +519,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
* @param {XULDocument} doc
|
* @param {XULDocument} doc
|
||||||
* The document to which devtools should be hooked to.
|
* The document to which devtools should be hooked to.
|
||||||
*/
|
*/
|
||||||
_registerBrowserWindow: function (win) {
|
_registerBrowserWindow(win) {
|
||||||
if (gDevToolsBrowser._trackedBrowserWindows.has(win)) {
|
if (gDevToolsBrowser._trackedBrowserWindows.has(win)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -552,13 +554,13 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
* Hook the JS debugger tool to the "Debug Script" button of the slow script
|
* Hook the JS debugger tool to the "Debug Script" button of the slow script
|
||||||
* dialog.
|
* dialog.
|
||||||
*/
|
*/
|
||||||
setSlowScriptDebugHandler: function DT_setSlowScriptDebugHandler() {
|
setSlowScriptDebugHandler() {
|
||||||
let debugService = Cc["@mozilla.org/dom/slow-script-debug;1"]
|
let debugService = Cc["@mozilla.org/dom/slow-script-debug;1"]
|
||||||
.getService(Ci.nsISlowScriptDebug);
|
.getService(Ci.nsISlowScriptDebug);
|
||||||
let tm = Cc["@mozilla.org/thread-manager;1"].getService(Ci.nsIThreadManager);
|
let tm = Cc["@mozilla.org/thread-manager;1"].getService(Ci.nsIThreadManager);
|
||||||
|
|
||||||
function slowScriptDebugHandler(aTab, aCallback) {
|
function slowScriptDebugHandler(tab, callback) {
|
||||||
let target = TargetFactory.forTab(aTab);
|
let target = TargetFactory.forTab(tab);
|
||||||
|
|
||||||
gDevTools.showToolbox(target, "jsdebugger").then(toolbox => {
|
gDevTools.showToolbox(target, "jsdebugger").then(toolbox => {
|
||||||
let threadClient = toolbox.threadClient;
|
let threadClient = toolbox.threadClient;
|
||||||
|
|
@ -569,13 +571,13 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
case "paused":
|
case "paused":
|
||||||
// When the debugger is already paused.
|
// When the debugger is already paused.
|
||||||
threadClient.resumeThenPause();
|
threadClient.resumeThenPause();
|
||||||
aCallback();
|
callback();
|
||||||
break;
|
break;
|
||||||
case "attached":
|
case "attached":
|
||||||
// When the debugger is already open.
|
// When the debugger is already open.
|
||||||
threadClient.interrupt(() => {
|
threadClient.interrupt(() => {
|
||||||
threadClient.resumeThenPause();
|
threadClient.resumeThenPause();
|
||||||
aCallback();
|
callback();
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case "resuming":
|
case "resuming":
|
||||||
|
|
@ -583,7 +585,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
threadClient.addOneTimeListener("resumed", () => {
|
threadClient.addOneTimeListener("resumed", () => {
|
||||||
threadClient.interrupt(() => {
|
threadClient.interrupt(() => {
|
||||||
threadClient.resumeThenPause();
|
threadClient.resumeThenPause();
|
||||||
aCallback();
|
callback();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|
@ -594,8 +596,8 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
debugService.activationHandler = function (aWindow) {
|
debugService.activationHandler = function (window) {
|
||||||
let chromeWindow = aWindow.QueryInterface(Ci.nsIInterfaceRequestor)
|
let chromeWindow = window.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||||
.getInterface(Ci.nsIWebNavigation)
|
.getInterface(Ci.nsIWebNavigation)
|
||||||
.QueryInterface(Ci.nsIDocShellTreeItem)
|
.QueryInterface(Ci.nsIDocShellTreeItem)
|
||||||
.rootTreeItem
|
.rootTreeItem
|
||||||
|
|
@ -605,11 +607,13 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
|
|
||||||
let setupFinished = false;
|
let setupFinished = false;
|
||||||
slowScriptDebugHandler(chromeWindow.gBrowser.selectedTab,
|
slowScriptDebugHandler(chromeWindow.gBrowser.selectedTab,
|
||||||
() => { setupFinished = true; });
|
() => {
|
||||||
|
setupFinished = true;
|
||||||
|
});
|
||||||
|
|
||||||
// Don't return from the interrupt handler until the debugger is brought
|
// Don't return from the interrupt handler until the debugger is brought
|
||||||
// up; no reason to continue executing the slow script.
|
// up; no reason to continue executing the slow script.
|
||||||
let utils = aWindow.QueryInterface(Ci.nsIInterfaceRequestor)
|
let utils = window.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||||
.getInterface(Ci.nsIDOMWindowUtils);
|
.getInterface(Ci.nsIDOMWindowUtils);
|
||||||
utils.enterModalState();
|
utils.enterModalState();
|
||||||
while (!setupFinished) {
|
while (!setupFinished) {
|
||||||
|
|
@ -618,23 +622,21 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
utils.leaveModalState();
|
utils.leaveModalState();
|
||||||
};
|
};
|
||||||
|
|
||||||
debugService.remoteActivationHandler = function (aBrowser, aCallback) {
|
debugService.remoteActivationHandler = function (browser, callback) {
|
||||||
let chromeWindow = aBrowser.ownerDocument.defaultView;
|
let chromeWindow = browser.ownerDocument.defaultView;
|
||||||
let tab = chromeWindow.gBrowser.getTabForBrowser(aBrowser);
|
let tab = chromeWindow.gBrowser.getTabForBrowser(browser);
|
||||||
chromeWindow.gBrowser.selected = tab;
|
chromeWindow.gBrowser.selected = tab;
|
||||||
|
|
||||||
function callback() {
|
slowScriptDebugHandler(tab, function () {
|
||||||
aCallback.finishDebuggerStartup();
|
callback.finishDebuggerStartup();
|
||||||
}
|
});
|
||||||
|
|
||||||
slowScriptDebugHandler(tab, callback);
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unset the slow script debug handler.
|
* Unset the slow script debug handler.
|
||||||
*/
|
*/
|
||||||
unsetSlowScriptDebugHandler: function DT_unsetSlowScriptDebugHandler() {
|
unsetSlowScriptDebugHandler() {
|
||||||
let debugService = Cc["@mozilla.org/dom/slow-script-debug;1"]
|
let debugService = Cc["@mozilla.org/dom/slow-script-debug;1"]
|
||||||
.getService(Ci.nsISlowScriptDebug);
|
.getService(Ci.nsISlowScriptDebug);
|
||||||
debugService.activationHandler = undefined;
|
debugService.activationHandler = undefined;
|
||||||
|
|
@ -646,7 +648,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
* @param {object} toolDefinition
|
* @param {object} toolDefinition
|
||||||
* properties of the tool to add
|
* properties of the tool to add
|
||||||
*/
|
*/
|
||||||
_addToolToWindows: function DT_addToolToWindows(toolDefinition) {
|
_addToolToWindows(toolDefinition) {
|
||||||
// No menu item or global shortcut is required for options panel.
|
// No menu item or global shortcut is required for options panel.
|
||||||
if (!toolDefinition.inMenu) {
|
if (!toolDefinition.inMenu) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -658,7 +660,9 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
!Services.prefs.getBoolPref(toolDefinition.visibilityswitch)) {
|
!Services.prefs.getBoolPref(toolDefinition.visibilityswitch)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} catch (e) {}
|
} catch (e) {
|
||||||
|
// Prevent breaking everything if the pref doesn't exists.
|
||||||
|
}
|
||||||
|
|
||||||
// We need to insert the new tool in the right place, which means knowing
|
// We need to insert the new tool in the right place, which means knowing
|
||||||
// the tool that comes before the tool that we're trying to add
|
// the tool that comes before the tool that we're trying to add
|
||||||
|
|
@ -683,9 +687,9 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
hasToolboxOpened: function (win) {
|
hasToolboxOpened(win) {
|
||||||
let tab = win.gBrowser.selectedTab;
|
let tab = win.gBrowser.selectedTab;
|
||||||
for (let [target, toolbox] of gDevTools._toolboxes) {
|
for (let [target, ] of gDevTools._toolboxes) {
|
||||||
if (target.tab == tab) {
|
if (target.tab == tab) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -697,9 +701,8 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
* Update the "Toggle Tools" checkbox in the developer tools menu. This is
|
* Update the "Toggle Tools" checkbox in the developer tools menu. This is
|
||||||
* called when a toolbox is created or destroyed.
|
* called when a toolbox is created or destroyed.
|
||||||
*/
|
*/
|
||||||
_updateMenuCheckbox: function DT_updateMenuCheckbox() {
|
_updateMenuCheckbox() {
|
||||||
for (let win of gDevToolsBrowser._trackedBrowserWindows) {
|
for (let win of gDevToolsBrowser._trackedBrowserWindows) {
|
||||||
|
|
||||||
let hasToolbox = gDevToolsBrowser.hasToolboxOpened(win);
|
let hasToolbox = gDevToolsBrowser.hasToolboxOpened(win);
|
||||||
|
|
||||||
let menu = win.document.getElementById("menu_devToolbox");
|
let menu = win.document.getElementById("menu_devToolbox");
|
||||||
|
|
@ -717,7 +720,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
* @param {string} toolId
|
* @param {string} toolId
|
||||||
* id of the tool to remove
|
* id of the tool to remove
|
||||||
*/
|
*/
|
||||||
_removeToolFromWindows: function DT_removeToolFromWindows(toolId) {
|
_removeToolFromWindows(toolId) {
|
||||||
for (let win of gDevToolsBrowser._trackedBrowserWindows) {
|
for (let win of gDevToolsBrowser._trackedBrowserWindows) {
|
||||||
BrowserMenus.removeToolFromMenu(toolId, win.document);
|
BrowserMenus.removeToolFromMenu(toolId, win.document);
|
||||||
}
|
}
|
||||||
|
|
@ -734,7 +737,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
* @param {XULWindow} win
|
* @param {XULWindow} win
|
||||||
* The window containing the menu entry
|
* The window containing the menu entry
|
||||||
*/
|
*/
|
||||||
_forgetBrowserWindow: function (win) {
|
_forgetBrowserWindow(win) {
|
||||||
if (!gDevToolsBrowser._trackedBrowserWindows.has(win)) {
|
if (!gDevToolsBrowser._trackedBrowserWindows.has(win)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -764,7 +767,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
tabContainer.removeEventListener("TabUnpinned", this);
|
tabContainer.removeEventListener("TabUnpinned", this);
|
||||||
},
|
},
|
||||||
|
|
||||||
handleEvent: function (event) {
|
handleEvent(event) {
|
||||||
switch (event.type) {
|
switch (event.type) {
|
||||||
case "TabOpen":
|
case "TabOpen":
|
||||||
case "TabClose":
|
case "TabClose":
|
||||||
|
|
@ -797,7 +800,7 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_pingTelemetry: function () {
|
_pingTelemetry() {
|
||||||
let mean = function (arr) {
|
let mean = function (arr) {
|
||||||
if (arr.length === 0) {
|
if (arr.length === 0) {
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -823,9 +826,9 @@ var gDevToolsBrowser = exports.gDevToolsBrowser = {
|
||||||
* some cleanups to speed it up. Otherwise everything need to be
|
* some cleanups to speed it up. Otherwise everything need to be
|
||||||
* cleaned up in order to be able to load devtools again.
|
* cleaned up in order to be able to load devtools again.
|
||||||
*/
|
*/
|
||||||
destroy: function ({ shuttingDown }) {
|
destroy({ shuttingDown }) {
|
||||||
Services.prefs.removeObserver("devtools.", gDevToolsBrowser);
|
Services.prefs.removeObserver("devtools.", gDevToolsBrowser);
|
||||||
Services.obs.removeObserver(gDevToolsBrowser, "lightweight-theme-changed", false);
|
Services.obs.removeObserver(gDevToolsBrowser, "lightweight-theme-changed");
|
||||||
Services.obs.removeObserver(gDevToolsBrowser, "browser-delayed-startup-finished");
|
Services.obs.removeObserver(gDevToolsBrowser, "browser-delayed-startup-finished");
|
||||||
Services.obs.removeObserver(gDevToolsBrowser, "quit-application");
|
Services.obs.removeObserver(gDevToolsBrowser, "quit-application");
|
||||||
Services.obs.removeObserver(gDevToolsBrowser, "sdk:loader:destroy");
|
Services.obs.removeObserver(gDevToolsBrowser, "sdk:loader:destroy");
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue