Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js b/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js |
| index d83b72d604334f666186c9c5e7ce7044c38b10a3..c02ff54f13dc1511ef18ed99960a2d0b6fe1e01b 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js |
| @@ -50,6 +50,7 @@ WebInspector.SourcesPanel = function() |
| this._debugToolbar = this._createDebugToolbar(); |
| this._debugToolbarDrawer = this._createDebugToolbarDrawer(); |
| + this._debugStatusMessageElement = createElementWithClass("div", "paused-status"); |
| const initialDebugSidebarWidth = 225; |
| this._splitWidget = new WebInspector.SplitWidget(true, true, "sourcesPanelSplitViewState", initialDebugSidebarWidth); |
| @@ -93,7 +94,7 @@ WebInspector.SourcesPanel = function() |
| WebInspector.moduleSetting("sidebarPosition").addChangeListener(this._updateSidebarPosition.bind(this)); |
| this._updateSidebarPosition(); |
| - this._updateDebuggerButtons(); |
| + this._updateDebuggerButtonsAndStatus(); |
| this._pauseOnExceptionEnabledChanged(); |
| WebInspector.moduleSetting("pauseOnExceptionEnabled").addChangeListener(this._pauseOnExceptionEnabledChanged, this); |
| @@ -268,7 +269,7 @@ WebInspector.SourcesPanel.prototype = { |
| _showDebuggerPausedDetails: function(details) |
| { |
| this._paused = true; |
| - this._updateDebuggerButtons(); |
| + this._updateDebuggerButtonsAndStatus(); |
| WebInspector.context.setFlavor(WebInspector.DebuggerPausedDetails, details); |
| this._toggleDebuggerSidebarButton.setEnabled(false); |
| window.focus(); |
| @@ -299,7 +300,7 @@ WebInspector.SourcesPanel.prototype = { |
| if (WebInspector.context.flavor(WebInspector.Target) !== target) |
| return; |
| - this._updateDebuggerButtons(); |
| + this._updateDebuggerButtonsAndStatus(); |
| }, |
| /** |
| @@ -452,7 +453,7 @@ WebInspector.SourcesPanel.prototype = { |
| this._debugToolbarDrawer.classList.toggle("expanded", enabled); |
| }, |
| - _updateDebuggerButtons: function() |
| + _updateDebuggerButtonsAndStatus: function() |
| { |
| var currentTarget = WebInspector.context.flavor(WebInspector.Target); |
| var currentDebuggerModel = WebInspector.DebuggerModel.fromTarget(currentTarget); |
| @@ -474,12 +475,64 @@ WebInspector.SourcesPanel.prototype = { |
| this._stepIntoAction.setEnabled(false); |
| this._stepOutAction.setEnabled(false); |
| } |
| + |
| + var status = this._debugStatusMessageElement; |
| + var details = currentDebuggerModel && currentDebuggerModel.debuggerPausedDetails(); |
| + status.hidden = !details; |
| + status.removeChildren(); |
| + |
| + if (details) { |
|
lushnikov
2016/10/12 21:26:59
if (details)
status.appendChild(this._buildPau
luoe
2016/10/13 00:36:58
Done with a widget as this._debuggerPausedMessage.
|
| + var mainText = createElement("div"); |
| + var subText = createElement("div"); |
| + if (details.reason === WebInspector.DebuggerModel.BreakReason.DOM) { |
|
lushnikov
2016/10/12 21:26:59
Let's create a widget for this thing!
It will hav
luoe
2016/10/13 00:36:58
Done as DebuggerPausedMessage.js
|
| + mainText = WebInspector.domBreakpointsSidebarPane.createBreakpointHitMainMessage(details); |
| + subText = WebInspector.domBreakpointsSidebarPane.createBreakpointHitSubMessage(details); |
| + } else if (details.reason === WebInspector.DebuggerModel.BreakReason.EventListener) { |
| + var eventName = details.auxData["eventName"]; |
| + var eventNameForUI = WebInspector.EventListenerBreakpointsSidebarPane.eventNameForUI(eventName, details.auxData); |
| + mainText.textContent = WebInspector.UIString("Paused on event listener"); |
| + subText.textContent = eventNameForUI; |
| + } else if (details.reason === WebInspector.DebuggerModel.BreakReason.XHR) { |
| + mainText.textContent = WebInspector.UIString("Paused on XMLHttpRequest"); |
| + subText.textContent = details.auxData["url"] || ""; |
| + } else if (details.reason === WebInspector.DebuggerModel.BreakReason.Exception) { |
| + var description = details.auxData["description"] || details.auxData["value"] || ""; |
| + mainText.textContent = WebInspector.UIString("Paused on exception"); |
| + subText.textContent = description.split("\n", 1)[0]; |
| + status.title = description; |
| + } else if (details.reason === WebInspector.DebuggerModel.BreakReason.PromiseRejection) { |
| + var description = details.auxData["description"] || ""; |
| + mainText.textContent = WebInspector.UIString("Paused on promise rejection"); |
| + subText.textContent = description.split("\n", 1)[0]; |
| + status.title = description; |
| + } else if (details.reason === WebInspector.DebuggerModel.BreakReason.Assert) { |
| + mainText.textContent = WebInspector.UIString("Paused on assertion"); |
| + } else if (details.reason === WebInspector.DebuggerModel.BreakReason.DebugCommand) { |
| + mainText.textContent = WebInspector.UIString("Paused on debugged function"); |
| + } else if (details.callFrames.length) { |
| + var uiLocation = details && details.callFrames.length ? WebInspector.debuggerWorkspaceBinding.rawLocationToUILocation(details.callFrames[0].location()) : null; |
| + var breakpoint = uiLocation ? WebInspector.breakpointManager.findBreakpointOnLine(uiLocation.uiSourceCode, uiLocation.lineNumber) : null; |
| + if (breakpoint) |
| + mainText.textContent = WebInspector.UIString("Paused on breakpoint"); |
| + else |
| + mainText.textContent = WebInspector.UIString("Debugger paused"); |
| + } else { |
| + console.warn("ScriptsPanel paused, but callFrames.length is zero."); // TODO remove this once we understand this case better |
| + } |
| + |
| + var errorLike = details.reason === WebInspector.DebuggerModel.BreakReason.Exception || details.reason === WebInspector.DebuggerModel.BreakReason.PromiseRejection || details.reason === WebInspector.DebuggerModel.BreakReason.Assert; |
| + status.classList.toggle("error-reason", errorLike); |
| + status.appendChild(mainText); |
| + status.appendChild(subText); |
| + mainText.classList.add("status-main"); |
| + subText.classList.add("status-sub"); |
| + } |
| }, |
| _clearInterface: function() |
| { |
| this._sourcesView.clearCurrentExecutionLine(); |
| - this._updateDebuggerButtons(); |
| + this._updateDebuggerButtonsAndStatus(); |
| WebInspector.context.setFlavor(WebInspector.DebuggerPausedDetails, null); |
| if (this._switchToPausedTargetTimeout) |
| @@ -1061,6 +1114,7 @@ WebInspector.SourcesPanel.prototype = { |
| this._sidebarPaneStack = WebInspector.viewManager.createStackLocation(this._revealDebuggerSidebar.bind(this)); |
| this._sidebarPaneStack.widget().element.classList.add("overflow-auto"); |
| this._sidebarPaneStack.widget().show(vbox.element); |
| + this._sidebarPaneStack.widget().element.appendChild(this._debugStatusMessageElement); |
| vbox.element.appendChild(this._debugToolbar.element); |
| if (this._threadsSidebarPane) |