Bug 1458745 - Only get the notification box in the inspector for the debugger warning only if the debugger is paused. r=pbro
MozReview-Commit-ID: 7Zc0mufoasH
--- a/devtools/client/framework/toolbox.js
+++ b/devtools/client/framework/toolbox.js
@@ -1056,18 +1056,17 @@ Toolbox.prototype = {
},
/**
* Build the notification box as soon as needed.
*/
get notificationBox() {
if (!this._notificationBox) {
let { NotificationBox, PriorityLevels } =
- this.browserRequire(
- "devtools/client/shared/components/NotificationBox");
+ this.browserRequire("devtools/client/shared/components/NotificationBox");
NotificationBox = this.React.createFactory(NotificationBox);
// Render NotificationBox and assign priority levels to it.
let box = this.doc.getElementById("toolbox-notificationbox");
this._notificationBox = Object.assign(
this.ReactDOM.render(NotificationBox({}), box),
PriorityLevels);
--- a/devtools/client/inspector/inspector.js
+++ b/devtools/client/inspector/inspector.js
@@ -120,22 +120,23 @@ function Inspector(toolbox) {
// telemetry counts in the Grid Inspector are not double counted on reload.
this.previousURL = this.target.url;
this.show3PaneToggle = Services.prefs.getBoolPref(SHOW_THREE_PANE_TOGGLE_PREF);
this.is3PaneModeEnabled = Services.prefs.getBoolPref(THREE_PANE_ENABLED_PREF);
this.nodeMenuTriggerInfo = null;
+ this._clearSearchResultsLabel = this._clearSearchResultsLabel.bind(this);
this._handleRejectionIfNotDestroyed = this._handleRejectionIfNotDestroyed.bind(this);
+ this._onBeforeNavigate = this._onBeforeNavigate.bind(this);
this._onContextMenu = this._onContextMenu.bind(this);
- this._onBeforeNavigate = this._onBeforeNavigate.bind(this);
this._onMarkupFrameLoad = this._onMarkupFrameLoad.bind(this);
this._updateSearchResultsLabel = this._updateSearchResultsLabel.bind(this);
- this._clearSearchResultsLabel = this._clearSearchResultsLabel.bind(this);
+ this._updateDebuggerPausedWarning = this._updateDebuggerPausedWarning.bind(this);
this.onDetached = this.onDetached.bind(this);
this.onMarkupLoaded = this.onMarkupLoaded.bind(this);
this.onNewSelection = this.onNewSelection.bind(this);
this.onNewRoot = this.onNewRoot.bind(this);
this.onPanelWindowResize = this.onPanelWindowResize.bind(this);
this.onShowBoxModelHighlighterForNode =
this.onShowBoxModelHighlighterForNode.bind(this);
@@ -168,29 +169,37 @@ Inspector.prototype = {
return this._deferredOpen(defaultSelection);
},
get toolbox() {
return this._toolbox;
},
get inspector() {
- return this._toolbox.inspector;
+ return this.toolbox.inspector;
},
get walker() {
- return this._toolbox.walker;
+ return this.toolbox.walker;
},
get selection() {
- return this._toolbox.selection;
+ return this.toolbox.selection;
},
get highlighter() {
- return this._toolbox.highlighter;
+ return this.toolbox.highlighter;
+ },
+
+ get notificationBox() {
+ if (!this._notificationBox) {
+ this._notificationBox = this.toolbox.getNotificationBox();
+ }
+
+ return this._notificationBox;
},
get isOuterHTMLEditable() {
return this._target.client.traits.editOuterHTML;
},
get hasUrlToImageDataResolver() {
return this._target.client.traits.urlToImageDataResolver;
@@ -232,42 +241,20 @@ Inspector.prototype = {
this.breadcrumbs = new HTMLBreadcrumbs(this);
this.walker.on("new-root", this.onNewRoot);
this.selection.on("new-node-front", this.onNewSelection);
this.selection.on("detached-front", this.onDetached);
if (this.target.isLocalTab) {
- // Show a warning when the debugger is paused.
- // We show the warning only when the inspector
- // is selected.
- this.updateDebuggerPausedWarning = () => {
- let notificationBox = this._toolbox.getNotificationBox();
- let notification =
- notificationBox.getNotificationWithValue("inspector-script-paused");
- if (!notification && this._toolbox.currentToolId == "inspector" &&
- this._toolbox.threadClient.paused) {
- let message = INSPECTOR_L10N.getStr("debuggerPausedWarning.message");
- notificationBox.appendNotification(message,
- "inspector-script-paused", "", notificationBox.PRIORITY_WARNING_HIGH);
- }
-
- if (notification && this._toolbox.currentToolId != "inspector") {
- notificationBox.removeNotification(notification);
- }
-
- if (notification && !this._toolbox.threadClient.paused) {
- notificationBox.removeNotification(notification);
- }
- };
- this.target.on("thread-paused", this.updateDebuggerPausedWarning);
- this.target.on("thread-resumed", this.updateDebuggerPausedWarning);
- this._toolbox.on("select", this.updateDebuggerPausedWarning);
- this.updateDebuggerPausedWarning();
+ this.target.on("thread-paused", this._updateDebuggerPausedWarning);
+ this.target.on("thread-resumed", this._updateDebuggerPausedWarning);
+ this.toolbox.on("select", this._updateDebuggerPausedWarning);
+ this._updateDebuggerPausedWarning();
}
this._initMarkup();
this.isReady = false;
this.setupSearchBox();
// Setup the splitter before the sidebar is displayed so,
@@ -430,16 +417,45 @@ Inspector.prototype = {
} else {
str = INSPECTOR_L10N.getStr("inspector.searchResultsNone");
}
}
this.searchResultsLabel.textContent = str;
},
+ /**
+ * Show a warning notification box when the debugger is paused. We show the warning only
+ * when the inspector is selected.
+ */
+ _updateDebuggerPausedWarning: function() {
+ if (!this.toolbox.threadClient.paused && !this._notificationBox) {
+ return;
+ }
+
+ let notificationBox = this.notificationBox;
+ let notification = this.notificationBox.getNotificationWithValue(
+ "inspector-script-paused");
+
+ if (!notification && this.toolbox.currentToolId == "inspector" &&
+ this.toolbox.threadClient.paused) {
+ let message = INSPECTOR_L10N.getStr("debuggerPausedWarning.message");
+ notificationBox.appendNotification(message,
+ "inspector-script-paused", "", notificationBox.PRIORITY_WARNING_HIGH);
+ }
+
+ if (notification && this.toolbox.currentToolId != "inspector") {
+ notificationBox.removeNotification(notification);
+ }
+
+ if (notification && !this.toolbox.threadClient.paused) {
+ notificationBox.removeNotification(notification);
+ }
+ },
+
get React() {
return this._toolbox.React;
},
get ReactDOM() {
return this._toolbox.ReactDOM;
},