Index: third_party/WebKit/Source/devtools/front_end/sources/JavaScriptBreakpointsSidebarPane.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/JavaScriptBreakpointsSidebarPane.js b/third_party/WebKit/Source/devtools/front_end/sources/JavaScriptBreakpointsSidebarPane.js |
index 2f845ccdd41f0c17477d2d196f81d176626b04cd..04f163024102c8f9f1ffc36e3970d0de74867f49 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/sources/JavaScriptBreakpointsSidebarPane.js |
+++ b/third_party/WebKit/Source/devtools/front_end/sources/JavaScriptBreakpointsSidebarPane.js |
@@ -1,277 +1,266 @@ |
// Copyright (c) 2015 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
- |
/** |
- * @constructor |
- * @extends {WebInspector.VBox} |
* @implements {WebInspector.ContextFlavorListener} |
+ * @unrestricted |
*/ |
-WebInspector.JavaScriptBreakpointsSidebarPane = function() |
-{ |
- WebInspector.VBox.call(this); |
- this.registerRequiredCSS("components/breakpointsList.css"); |
+WebInspector.JavaScriptBreakpointsSidebarPane = class extends WebInspector.VBox { |
+ constructor() { |
+ super(); |
+ this.registerRequiredCSS('components/breakpointsList.css'); |
this._breakpointManager = WebInspector.breakpointManager; |
- this._listElement = createElementWithClass("ol", "breakpoint-list"); |
+ this._listElement = createElementWithClass('ol', 'breakpoint-list'); |
- this.emptyElement = this.element.createChild("div", "gray-info-message"); |
- this.emptyElement.textContent = WebInspector.UIString("No Breakpoints"); |
+ this.emptyElement = this.element.createChild('div', 'gray-info-message'); |
+ this.emptyElement.textContent = WebInspector.UIString('No Breakpoints'); |
this._items = new Map(); |
var breakpointLocations = this._breakpointManager.allBreakpointLocations(); |
for (var i = 0; i < breakpointLocations.length; ++i) |
- this._addBreakpoint(breakpointLocations[i].breakpoint, breakpointLocations[i].uiLocation); |
+ this._addBreakpoint(breakpointLocations[i].breakpoint, breakpointLocations[i].uiLocation); |
- this._breakpointManager.addEventListener(WebInspector.BreakpointManager.Events.BreakpointAdded, this._breakpointAdded, this); |
- this._breakpointManager.addEventListener(WebInspector.BreakpointManager.Events.BreakpointRemoved, this._breakpointRemoved, this); |
+ this._breakpointManager.addEventListener( |
+ WebInspector.BreakpointManager.Events.BreakpointAdded, this._breakpointAdded, this); |
+ this._breakpointManager.addEventListener( |
+ WebInspector.BreakpointManager.Events.BreakpointRemoved, this._breakpointRemoved, this); |
- this.emptyElement.addEventListener("contextmenu", this._emptyElementContextMenu.bind(this), true); |
- this._breakpointManager.addEventListener(WebInspector.BreakpointManager.Events.BreakpointsActiveStateChanged, this._breakpointsActiveStateChanged, this); |
+ this.emptyElement.addEventListener('contextmenu', this._emptyElementContextMenu.bind(this), true); |
+ this._breakpointManager.addEventListener( |
+ WebInspector.BreakpointManager.Events.BreakpointsActiveStateChanged, this._breakpointsActiveStateChanged, this); |
this._breakpointsActiveStateChanged(); |
this._update(); |
-}; |
- |
-WebInspector.JavaScriptBreakpointsSidebarPane.prototype = { |
- _emptyElementContextMenu: function(event) |
- { |
- var contextMenu = new WebInspector.ContextMenu(event); |
- this._appendBreakpointActiveItem(contextMenu); |
- contextMenu.show(); |
- }, |
- |
- /** |
- * @param {!WebInspector.ContextMenu} contextMenu |
- */ |
- _appendBreakpointActiveItem: function(contextMenu) |
- { |
- var breakpointActive = this._breakpointManager.breakpointsActive(); |
- var breakpointActiveTitle = breakpointActive ? |
- WebInspector.UIString.capitalize("Deactivate ^breakpoints") : |
- WebInspector.UIString.capitalize("Activate ^breakpoints"); |
- contextMenu.appendItem(breakpointActiveTitle, this._breakpointManager.setBreakpointsActive.bind(this._breakpointManager, !breakpointActive)); |
- }, |
+ } |
+ |
+ _emptyElementContextMenu(event) { |
+ var contextMenu = new WebInspector.ContextMenu(event); |
+ this._appendBreakpointActiveItem(contextMenu); |
+ contextMenu.show(); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.ContextMenu} contextMenu |
+ */ |
+ _appendBreakpointActiveItem(contextMenu) { |
+ var breakpointActive = this._breakpointManager.breakpointsActive(); |
+ var breakpointActiveTitle = breakpointActive ? WebInspector.UIString.capitalize('Deactivate ^breakpoints') : |
+ WebInspector.UIString.capitalize('Activate ^breakpoints'); |
+ contextMenu.appendItem( |
+ breakpointActiveTitle, |
+ this._breakpointManager.setBreakpointsActive.bind(this._breakpointManager, !breakpointActive)); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.Event} event |
+ */ |
+ _breakpointAdded(event) { |
+ this._breakpointRemoved(event); |
+ |
+ var breakpoint = /** @type {!WebInspector.BreakpointManager.Breakpoint} */ (event.data.breakpoint); |
+ var uiLocation = /** @type {!WebInspector.UILocation} */ (event.data.uiLocation); |
+ this._addBreakpoint(breakpoint, uiLocation); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.BreakpointManager.Breakpoint} breakpoint |
+ * @param {!WebInspector.UILocation} uiLocation |
+ */ |
+ _addBreakpoint(breakpoint, uiLocation) { |
+ var element = createElementWithClass('li', 'cursor-pointer'); |
+ element.addEventListener('contextmenu', this._breakpointContextMenu.bind(this, breakpoint), true); |
+ element.addEventListener('click', this._breakpointClicked.bind(this, uiLocation), false); |
+ |
+ var checkboxLabel = createCheckboxLabel(uiLocation.linkText(), breakpoint.enabled()); |
+ element.appendChild(checkboxLabel); |
+ checkboxLabel.addEventListener('click', this._breakpointCheckboxClicked.bind(this, breakpoint), false); |
+ |
+ var snippetElement = element.createChild('div', 'source-text monospace'); |
/** |
- * @param {!WebInspector.Event} event |
+ * @param {?string} content |
+ * @this {WebInspector.JavaScriptBreakpointsSidebarPane} |
*/ |
- _breakpointAdded: function(event) |
- { |
- this._breakpointRemoved(event); |
- |
- var breakpoint = /** @type {!WebInspector.BreakpointManager.Breakpoint} */ (event.data.breakpoint); |
- var uiLocation = /** @type {!WebInspector.UILocation} */ (event.data.uiLocation); |
- this._addBreakpoint(breakpoint, uiLocation); |
- }, |
- |
- /** |
- * @param {!WebInspector.BreakpointManager.Breakpoint} breakpoint |
- * @param {!WebInspector.UILocation} uiLocation |
- */ |
- _addBreakpoint: function(breakpoint, uiLocation) |
- { |
- var element = createElementWithClass("li", "cursor-pointer"); |
- element.addEventListener("contextmenu", this._breakpointContextMenu.bind(this, breakpoint), true); |
- element.addEventListener("click", this._breakpointClicked.bind(this, uiLocation), false); |
- |
- var checkboxLabel = createCheckboxLabel(uiLocation.linkText(), breakpoint.enabled()); |
- element.appendChild(checkboxLabel); |
- checkboxLabel.addEventListener("click", this._breakpointCheckboxClicked.bind(this, breakpoint), false); |
- |
- var snippetElement = element.createChild("div", "source-text monospace"); |
- |
- /** |
- * @param {?string} content |
- * @this {WebInspector.JavaScriptBreakpointsSidebarPane} |
- */ |
- function didRequestContent(content) |
- { |
- var lineNumber = uiLocation.lineNumber; |
- var columnNumber = uiLocation.columnNumber; |
- var text = new WebInspector.Text(content || ""); |
- if (lineNumber < text.lineCount()) { |
- var lineText = text.lineAt(lineNumber); |
- var maxSnippetLength = 200; |
- var snippetStartIndex = columnNumber > 100 ? columnNumber : 0; |
- snippetElement.textContent = lineText.substr(snippetStartIndex).trimEnd(maxSnippetLength); |
- } |
- this.didReceiveBreakpointLineForTest(uiLocation.uiSourceCode, lineNumber, columnNumber); |
- } |
- |
- uiLocation.uiSourceCode.requestContent().then(didRequestContent.bind(this)); |
- |
- element._data = uiLocation; |
- var currentElement = this._listElement.firstChild; |
- while (currentElement) { |
- if (currentElement._data && this._compareBreakpoints(currentElement._data, element._data) > 0) |
- break; |
- currentElement = currentElement.nextSibling; |
- } |
- this._addListElement(element, currentElement); |
- |
- var breakpointItem = { element: element, checkbox: checkboxLabel.checkboxElement }; |
- this._items.set(breakpoint, breakpointItem); |
- }, |
- |
- /** |
- * @param {!WebInspector.UISourceCode} uiSourceCode |
- * @param {number} lineNumber |
- * @param {number} columnNumber |
- */ |
- didReceiveBreakpointLineForTest: function(uiSourceCode, lineNumber, columnNumber) |
- { |
- }, |
- |
- /** |
- * @param {!WebInspector.Event} event |
- */ |
- _breakpointRemoved: function(event) |
- { |
- var breakpoint = /** @type {!WebInspector.BreakpointManager.Breakpoint} */ (event.data.breakpoint); |
- var breakpointItem = this._items.get(breakpoint); |
- if (!breakpointItem) |
- return; |
- this._items.remove(breakpoint); |
- this._removeListElement(breakpointItem.element); |
- }, |
- |
- /** |
- * @override |
- * @param {?Object} object |
- */ |
- flavorChanged: function(object) |
- { |
- this._update(); |
- }, |
- |
- _update: function() |
- { |
- var details = WebInspector.context.flavor(WebInspector.DebuggerPausedDetails); |
- var uiLocation = details && details.callFrames.length ? WebInspector.debuggerWorkspaceBinding.rawLocationToUILocation(details.callFrames[0].location()) : null; |
- var breakpoint = uiLocation ? this._breakpointManager.findBreakpointOnLine(uiLocation.uiSourceCode, uiLocation.lineNumber) : null; |
- var breakpointItem = this._items.get(breakpoint); |
- if (!breakpointItem) { |
- if (this._highlightedBreakpointItem) { |
- this._highlightedBreakpointItem.element.classList.remove("breakpoint-hit"); |
- delete this._highlightedBreakpointItem; |
- } |
- return; |
- } |
- |
- breakpointItem.element.classList.add("breakpoint-hit"); |
- this._highlightedBreakpointItem = breakpointItem; |
- WebInspector.viewManager.showView("sources.jsBreakpoints"); |
- }, |
- |
- _breakpointsActiveStateChanged: function() |
- { |
- this._listElement.classList.toggle("breakpoints-list-deactivated", !this._breakpointManager.breakpointsActive()); |
- }, |
- |
- /** |
- * @param {!WebInspector.UILocation} uiLocation |
- */ |
- _breakpointClicked: function(uiLocation) |
- { |
- WebInspector.Revealer.reveal(uiLocation); |
- }, |
- |
- /** |
- * @param {!WebInspector.BreakpointManager.Breakpoint} breakpoint |
- * @param {!Event} event |
- */ |
- _breakpointCheckboxClicked: function(breakpoint, event) |
- { |
- // Breakpoint element has it's own click handler. |
- event.consume(); |
- breakpoint.setEnabled(event.target.checkboxElement.checked); |
- }, |
- |
- /** |
- * @param {!WebInspector.BreakpointManager.Breakpoint} breakpoint |
- * @param {!Event} event |
- */ |
- _breakpointContextMenu: function(breakpoint, event) |
- { |
- var breakpoints = this._items.valuesArray(); |
- var contextMenu = new WebInspector.ContextMenu(event); |
- contextMenu.appendItem(WebInspector.UIString.capitalize("Remove ^breakpoint"), breakpoint.remove.bind(breakpoint)); |
- if (breakpoints.length > 1) { |
- var removeAllTitle = WebInspector.UIString.capitalize("Remove ^all ^breakpoints"); |
- contextMenu.appendItem(removeAllTitle, this._breakpointManager.removeAllBreakpoints.bind(this._breakpointManager)); |
- } |
- |
- contextMenu.appendSeparator(); |
- this._appendBreakpointActiveItem(contextMenu); |
- |
- function enabledBreakpointCount(breakpoints) |
- { |
- var count = 0; |
- for (var i = 0; i < breakpoints.length; ++i) { |
- if (breakpoints[i].checkbox.checked) |
- count++; |
- } |
- return count; |
- } |
- if (breakpoints.length > 1) { |
- var enableBreakpointCount = enabledBreakpointCount(breakpoints); |
- var enableTitle = WebInspector.UIString.capitalize("Enable ^all ^breakpoints"); |
- var disableTitle = WebInspector.UIString.capitalize("Disable ^all ^breakpoints"); |
- |
- contextMenu.appendSeparator(); |
- |
- contextMenu.appendItem(enableTitle, this._breakpointManager.toggleAllBreakpoints.bind(this._breakpointManager, true), !(enableBreakpointCount !== breakpoints.length)); |
- contextMenu.appendItem(disableTitle, this._breakpointManager.toggleAllBreakpoints.bind(this._breakpointManager, false), !(enableBreakpointCount > 1)); |
- } |
- |
- contextMenu.show(); |
- }, |
- |
- _addListElement: function(element, beforeElement) |
- { |
- if (beforeElement) |
- this._listElement.insertBefore(element, beforeElement); |
- else { |
- if (!this._listElement.firstChild) { |
- this.element.removeChild(this.emptyElement); |
- this.element.appendChild(this._listElement); |
- } |
- this._listElement.appendChild(element); |
- } |
- }, |
- |
- _removeListElement: function(element) |
- { |
- this._listElement.removeChild(element); |
- if (!this._listElement.firstChild) { |
- this.element.removeChild(this._listElement); |
- this.element.appendChild(this.emptyElement); |
- } |
- }, |
- |
- _compare: function(x, y) |
- { |
- if (x !== y) |
- return x < y ? -1 : 1; |
- return 0; |
- }, |
- |
- _compareBreakpoints: function(b1, b2) |
- { |
- return this._compare(b1.uiSourceCode.url(), b2.uiSourceCode.url()) || this._compare(b1.lineNumber, b2.lineNumber); |
- }, |
- |
- reset: function() |
- { |
- this._listElement.removeChildren(); |
- if (this._listElement.parentElement) { |
- this.element.removeChild(this._listElement); |
- this.element.appendChild(this.emptyElement); |
- } |
- this._items.clear(); |
- }, |
- |
- __proto__: WebInspector.VBox.prototype |
+ function didRequestContent(content) { |
+ var lineNumber = uiLocation.lineNumber; |
+ var columnNumber = uiLocation.columnNumber; |
+ var text = new WebInspector.Text(content || ''); |
+ if (lineNumber < text.lineCount()) { |
+ var lineText = text.lineAt(lineNumber); |
+ var maxSnippetLength = 200; |
+ var snippetStartIndex = columnNumber > 100 ? columnNumber : 0; |
+ snippetElement.textContent = lineText.substr(snippetStartIndex).trimEnd(maxSnippetLength); |
+ } |
+ this.didReceiveBreakpointLineForTest(uiLocation.uiSourceCode, lineNumber, columnNumber); |
+ } |
+ |
+ uiLocation.uiSourceCode.requestContent().then(didRequestContent.bind(this)); |
+ |
+ element._data = uiLocation; |
+ var currentElement = this._listElement.firstChild; |
+ while (currentElement) { |
+ if (currentElement._data && this._compareBreakpoints(currentElement._data, element._data) > 0) |
+ break; |
+ currentElement = currentElement.nextSibling; |
+ } |
+ this._addListElement(element, currentElement); |
+ |
+ var breakpointItem = {element: element, checkbox: checkboxLabel.checkboxElement}; |
+ this._items.set(breakpoint, breakpointItem); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.UISourceCode} uiSourceCode |
+ * @param {number} lineNumber |
+ * @param {number} columnNumber |
+ */ |
+ didReceiveBreakpointLineForTest(uiSourceCode, lineNumber, columnNumber) { |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.Event} event |
+ */ |
+ _breakpointRemoved(event) { |
+ var breakpoint = /** @type {!WebInspector.BreakpointManager.Breakpoint} */ (event.data.breakpoint); |
+ var breakpointItem = this._items.get(breakpoint); |
+ if (!breakpointItem) |
+ return; |
+ this._items.remove(breakpoint); |
+ this._removeListElement(breakpointItem.element); |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {?Object} object |
+ */ |
+ flavorChanged(object) { |
+ this._update(); |
+ } |
+ |
+ _update() { |
+ var details = WebInspector.context.flavor(WebInspector.DebuggerPausedDetails); |
+ var uiLocation = details && details.callFrames.length ? |
+ WebInspector.debuggerWorkspaceBinding.rawLocationToUILocation(details.callFrames[0].location()) : |
+ null; |
+ var breakpoint = uiLocation ? |
+ this._breakpointManager.findBreakpointOnLine(uiLocation.uiSourceCode, uiLocation.lineNumber) : |
+ null; |
+ var breakpointItem = this._items.get(breakpoint); |
+ if (!breakpointItem) { |
+ if (this._highlightedBreakpointItem) { |
+ this._highlightedBreakpointItem.element.classList.remove('breakpoint-hit'); |
+ delete this._highlightedBreakpointItem; |
+ } |
+ return; |
+ } |
+ |
+ breakpointItem.element.classList.add('breakpoint-hit'); |
+ this._highlightedBreakpointItem = breakpointItem; |
+ WebInspector.viewManager.showView('sources.jsBreakpoints'); |
+ } |
+ |
+ _breakpointsActiveStateChanged() { |
+ this._listElement.classList.toggle('breakpoints-list-deactivated', !this._breakpointManager.breakpointsActive()); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.UILocation} uiLocation |
+ */ |
+ _breakpointClicked(uiLocation) { |
+ WebInspector.Revealer.reveal(uiLocation); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.BreakpointManager.Breakpoint} breakpoint |
+ * @param {!Event} event |
+ */ |
+ _breakpointCheckboxClicked(breakpoint, event) { |
+ // Breakpoint element has it's own click handler. |
+ event.consume(); |
+ breakpoint.setEnabled(event.target.checkboxElement.checked); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.BreakpointManager.Breakpoint} breakpoint |
+ * @param {!Event} event |
+ */ |
+ _breakpointContextMenu(breakpoint, event) { |
+ var breakpoints = this._items.valuesArray(); |
+ var contextMenu = new WebInspector.ContextMenu(event); |
+ contextMenu.appendItem(WebInspector.UIString.capitalize('Remove ^breakpoint'), breakpoint.remove.bind(breakpoint)); |
+ if (breakpoints.length > 1) { |
+ var removeAllTitle = WebInspector.UIString.capitalize('Remove ^all ^breakpoints'); |
+ contextMenu.appendItem( |
+ removeAllTitle, this._breakpointManager.removeAllBreakpoints.bind(this._breakpointManager)); |
+ } |
+ |
+ contextMenu.appendSeparator(); |
+ this._appendBreakpointActiveItem(contextMenu); |
+ |
+ function enabledBreakpointCount(breakpoints) { |
+ var count = 0; |
+ for (var i = 0; i < breakpoints.length; ++i) { |
+ if (breakpoints[i].checkbox.checked) |
+ count++; |
+ } |
+ return count; |
+ } |
+ if (breakpoints.length > 1) { |
+ var enableBreakpointCount = enabledBreakpointCount(breakpoints); |
+ var enableTitle = WebInspector.UIString.capitalize('Enable ^all ^breakpoints'); |
+ var disableTitle = WebInspector.UIString.capitalize('Disable ^all ^breakpoints'); |
+ |
+ contextMenu.appendSeparator(); |
+ |
+ contextMenu.appendItem( |
+ enableTitle, this._breakpointManager.toggleAllBreakpoints.bind(this._breakpointManager, true), |
+ !(enableBreakpointCount !== breakpoints.length)); |
+ contextMenu.appendItem( |
+ disableTitle, this._breakpointManager.toggleAllBreakpoints.bind(this._breakpointManager, false), |
+ !(enableBreakpointCount > 1)); |
+ } |
+ |
+ contextMenu.show(); |
+ } |
+ |
+ _addListElement(element, beforeElement) { |
+ if (beforeElement) |
+ this._listElement.insertBefore(element, beforeElement); |
+ else { |
+ if (!this._listElement.firstChild) { |
+ this.element.removeChild(this.emptyElement); |
+ this.element.appendChild(this._listElement); |
+ } |
+ this._listElement.appendChild(element); |
+ } |
+ } |
+ |
+ _removeListElement(element) { |
+ this._listElement.removeChild(element); |
+ if (!this._listElement.firstChild) { |
+ this.element.removeChild(this._listElement); |
+ this.element.appendChild(this.emptyElement); |
+ } |
+ } |
+ |
+ _compare(x, y) { |
+ if (x !== y) |
+ return x < y ? -1 : 1; |
+ return 0; |
+ } |
+ |
+ _compareBreakpoints(b1, b2) { |
+ return this._compare(b1.uiSourceCode.url(), b2.uiSourceCode.url()) || this._compare(b1.lineNumber, b2.lineNumber); |
+ } |
+ |
+ reset() { |
+ this._listElement.removeChildren(); |
+ if (this._listElement.parentElement) { |
+ this.element.removeChild(this._listElement); |
+ this.element.appendChild(this.emptyElement); |
+ } |
+ this._items.clear(); |
+ } |
}; |