Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * @constructor | 6 * @constructor |
| 7 * @extends {WebInspector.SimpleView} | 7 * @extends {WebInspector.VBox} |
| 8 * @param {!WebInspector.BreakpointManager} breakpointManager | 8 * @implements {WebInspector.ContextFlavorListener} |
| 9 * @param {function(!WebInspector.UISourceCode, number=, number=, boolean=)} sho wSourceLineDelegate | |
| 10 */ | 9 */ |
| 11 WebInspector.JavaScriptBreakpointsSidebarPane = function(breakpointManager, show SourceLineDelegate) | 10 WebInspector.JavaScriptBreakpointsSidebarPane = function() |
| 12 { | 11 { |
| 13 WebInspector.SimpleView.call(this, WebInspector.UIString("Breakpoints")); | 12 WebInspector.VBox.call(this); |
| 14 this.registerRequiredCSS("components/breakpointsList.css"); | 13 this.registerRequiredCSS("components/breakpointsList.css"); |
| 15 | 14 |
| 16 this._breakpointManager = breakpointManager; | 15 this._breakpointManager = WebInspector.breakpointManager; |
| 17 this._showSourceLineDelegate = showSourceLineDelegate; | |
| 18 | 16 |
| 19 this.listElement = createElementWithClass("ol", "breakpoint-list"); | 17 this._listElement = createElementWithClass("ol", "breakpoint-list"); |
| 20 | 18 |
| 21 this.emptyElement = this.element.createChild("div", "gray-info-message"); | 19 this.emptyElement = this.element.createChild("div", "gray-info-message"); |
| 22 this.emptyElement.textContent = WebInspector.UIString("No Breakpoints"); | 20 this.emptyElement.textContent = WebInspector.UIString("No Breakpoints"); |
| 23 | 21 |
| 24 this._items = new Map(); | 22 this._items = new Map(); |
| 25 | 23 |
| 26 var breakpointLocations = this._breakpointManager.allBreakpointLocations(); | 24 var breakpointLocations = this._breakpointManager.allBreakpointLocations(); |
| 27 for (var i = 0; i < breakpointLocations.length; ++i) | 25 for (var i = 0; i < breakpointLocations.length; ++i) |
| 28 this._addBreakpoint(breakpointLocations[i].breakpoint, breakpointLocatio ns[i].uiLocation); | 26 this._addBreakpoint(breakpointLocations[i].breakpoint, breakpointLocatio ns[i].uiLocation); |
| 29 | 27 |
| 30 this._breakpointManager.addEventListener(WebInspector.BreakpointManager.Even ts.BreakpointAdded, this._breakpointAdded, this); | 28 this._breakpointManager.addEventListener(WebInspector.BreakpointManager.Even ts.BreakpointAdded, this._breakpointAdded, this); |
| 31 this._breakpointManager.addEventListener(WebInspector.BreakpointManager.Even ts.BreakpointRemoved, this._breakpointRemoved, this); | 29 this._breakpointManager.addEventListener(WebInspector.BreakpointManager.Even ts.BreakpointRemoved, this._breakpointRemoved, this); |
| 32 | 30 |
| 33 this.emptyElement.addEventListener("contextmenu", this._emptyElementContextM enu.bind(this), true); | 31 this.emptyElement.addEventListener("contextmenu", this._emptyElementContextM enu.bind(this), true); |
| 32 WebInspector.breakpointManager.addEventListener(WebInspector.BreakpointManag er.Events.BreakpointsActiveStateChanged, this._breakpointsActiveStateChanged, th is); | |
| 33 this._breakpointsActiveStateChanged(); | |
| 34 this._update(); | |
| 34 } | 35 } |
| 35 | 36 |
| 36 WebInspector.JavaScriptBreakpointsSidebarPane.prototype = { | 37 WebInspector.JavaScriptBreakpointsSidebarPane.prototype = { |
| 37 _emptyElementContextMenu: function(event) | 38 _emptyElementContextMenu: function(event) |
| 38 { | 39 { |
| 39 var contextMenu = new WebInspector.ContextMenu(event); | 40 var contextMenu = new WebInspector.ContextMenu(event); |
| 40 this._appendBreakpointActiveItem(contextMenu); | 41 this._appendBreakpointActiveItem(contextMenu); |
| 41 contextMenu.show(); | 42 contextMenu.show(); |
| 42 }, | 43 }, |
| 43 | 44 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 95 var maxSnippetLength = 200; | 96 var maxSnippetLength = 200; |
| 96 var snippetStartIndex = columnNumber > 100 ? columnNumber : 0; | 97 var snippetStartIndex = columnNumber > 100 ? columnNumber : 0; |
| 97 snippetElement.textContent = lineText.substr(snippetStartIndex). trimEnd(maxSnippetLength); | 98 snippetElement.textContent = lineText.substr(snippetStartIndex). trimEnd(maxSnippetLength); |
| 98 } | 99 } |
| 99 this.didReceiveBreakpointLineForTest(uiLocation.uiSourceCode); | 100 this.didReceiveBreakpointLineForTest(uiLocation.uiSourceCode); |
| 100 } | 101 } |
| 101 | 102 |
| 102 uiLocation.uiSourceCode.requestContent().then(didRequestContent.bind(thi s)); | 103 uiLocation.uiSourceCode.requestContent().then(didRequestContent.bind(thi s)); |
| 103 | 104 |
| 104 element._data = uiLocation; | 105 element._data = uiLocation; |
| 105 var currentElement = this.listElement.firstChild; | 106 var currentElement = this._listElement.firstChild; |
| 106 while (currentElement) { | 107 while (currentElement) { |
| 107 if (currentElement._data && this._compareBreakpoints(currentElement. _data, element._data) > 0) | 108 if (currentElement._data && this._compareBreakpoints(currentElement. _data, element._data) > 0) |
| 108 break; | 109 break; |
| 109 currentElement = currentElement.nextSibling; | 110 currentElement = currentElement.nextSibling; |
| 110 } | 111 } |
| 111 this._addListElement(element, currentElement); | 112 this._addListElement(element, currentElement); |
| 112 | 113 |
| 113 var breakpointItem = { element: element, checkbox: checkboxLabel.checkbo xElement }; | 114 var breakpointItem = { element: element, checkbox: checkboxLabel.checkbo xElement }; |
| 114 this._items.set(breakpoint, breakpointItem); | 115 this._items.set(breakpoint, breakpointItem); |
| 115 }, | 116 }, |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 128 { | 129 { |
| 129 var breakpoint = /** @type {!WebInspector.BreakpointManager.Breakpoint} */ (event.data.breakpoint); | 130 var breakpoint = /** @type {!WebInspector.BreakpointManager.Breakpoint} */ (event.data.breakpoint); |
| 130 var breakpointItem = this._items.get(breakpoint); | 131 var breakpointItem = this._items.get(breakpoint); |
| 131 if (!breakpointItem) | 132 if (!breakpointItem) |
| 132 return; | 133 return; |
| 133 this._items.remove(breakpoint); | 134 this._items.remove(breakpoint); |
| 134 this._removeListElement(breakpointItem.element); | 135 this._removeListElement(breakpointItem.element); |
| 135 }, | 136 }, |
| 136 | 137 |
| 137 /** | 138 /** |
| 138 * @param {!WebInspector.BreakpointManager.Breakpoint} breakpoint | 139 * @override |
| 140 * @param {?Object} object | |
| 139 */ | 141 */ |
| 140 highlightBreakpoint: function(breakpoint) | 142 flavorChanged: function(object) |
| 141 { | 143 { |
| 144 this._update(); | |
| 145 }, | |
| 146 | |
| 147 _update: function() | |
| 148 { | |
| 149 var details = WebInspector.context.flavor(WebInspector.DebuggerPausedDet ails); | |
| 150 var uiLocation = details && details.callFrames.length ? WebInspector.deb uggerWorkspaceBinding.rawLocationToUILocation(details.callFrames[0].location()) : null; | |
| 151 var breakpoint = uiLocation ? WebInspector.breakpointManager.findBreakpo intOnLine(uiLocation.uiSourceCode, uiLocation.lineNumber) : null; | |
|
dgozman
2016/08/15 21:31:03
Either this._breakpointManager or WI.breakpointMan
| |
| 142 var breakpointItem = this._items.get(breakpoint); | 152 var breakpointItem = this._items.get(breakpoint); |
| 143 if (!breakpointItem) | 153 if (!breakpointItem) { |
| 154 if (this._highlightedBreakpointItem) { | |
| 155 this._highlightedBreakpointItem.element.classList.remove("breakp oint-hit"); | |
| 156 delete this._highlightedBreakpointItem; | |
| 157 } | |
| 144 return; | 158 return; |
| 159 } | |
| 160 | |
| 145 breakpointItem.element.classList.add("breakpoint-hit"); | 161 breakpointItem.element.classList.add("breakpoint-hit"); |
| 146 this._highlightedBreakpointItem = breakpointItem; | 162 this._highlightedBreakpointItem = breakpointItem; |
| 147 this.revealView(); | 163 WebInspector.viewManager.revealViewWithWidget(this); |
| 148 }, | 164 }, |
| 149 | 165 |
| 150 clearBreakpointHighlight: function() | 166 _breakpointsActiveStateChanged: function() |
| 151 { | 167 { |
| 152 if (this._highlightedBreakpointItem) { | 168 this._listElement.classList.toggle("breakpoints-list-deactivated", !WebI nspector.breakpointManager.breakpointsActive()); |
| 153 this._highlightedBreakpointItem.element.classList.remove("breakpoint -hit"); | |
| 154 delete this._highlightedBreakpointItem; | |
| 155 } | |
| 156 }, | 169 }, |
| 157 | 170 |
| 158 _breakpointClicked: function(uiLocation, event) | 171 _breakpointClicked: function(uiLocation, event) |
| 159 { | 172 { |
| 160 this._showSourceLineDelegate(uiLocation.uiSourceCode, uiLocation.lineNum ber); | 173 WebInspector.Revealer.reveal(uiLocation); |
|
dgozman
2016/08/15 21:31:03
Inline it.
| |
| 161 }, | 174 }, |
| 162 | 175 |
| 163 /** | 176 /** |
| 164 * @param {!WebInspector.BreakpointManager.Breakpoint} breakpoint | 177 * @param {!WebInspector.BreakpointManager.Breakpoint} breakpoint |
| 165 * @param {!Event} event | 178 * @param {!Event} event |
| 166 */ | 179 */ |
| 167 _breakpointCheckboxClicked: function(breakpoint, event) | 180 _breakpointCheckboxClicked: function(breakpoint, event) |
| 168 { | 181 { |
| 169 // Breakpoint element has it's own click handler. | 182 // Breakpoint element has it's own click handler. |
| 170 event.consume(); | 183 event.consume(); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 207 contextMenu.appendItem(enableTitle, this._breakpointManager.toggleAl lBreakpoints.bind(this._breakpointManager, true), !(enableBreakpointCount !== br eakpoints.length)); | 220 contextMenu.appendItem(enableTitle, this._breakpointManager.toggleAl lBreakpoints.bind(this._breakpointManager, true), !(enableBreakpointCount !== br eakpoints.length)); |
| 208 contextMenu.appendItem(disableTitle, this._breakpointManager.toggleA llBreakpoints.bind(this._breakpointManager, false), !(enableBreakpointCount > 1) ); | 221 contextMenu.appendItem(disableTitle, this._breakpointManager.toggleA llBreakpoints.bind(this._breakpointManager, false), !(enableBreakpointCount > 1) ); |
| 209 } | 222 } |
| 210 | 223 |
| 211 contextMenu.show(); | 224 contextMenu.show(); |
| 212 }, | 225 }, |
| 213 | 226 |
| 214 _addListElement: function(element, beforeElement) | 227 _addListElement: function(element, beforeElement) |
| 215 { | 228 { |
| 216 if (beforeElement) | 229 if (beforeElement) |
| 217 this.listElement.insertBefore(element, beforeElement); | 230 this._listElement.insertBefore(element, beforeElement); |
| 218 else { | 231 else { |
| 219 if (!this.listElement.firstChild) { | 232 if (!this._listElement.firstChild) { |
| 220 this.element.removeChild(this.emptyElement); | 233 this.element.removeChild(this.emptyElement); |
| 221 this.element.appendChild(this.listElement); | 234 this.element.appendChild(this._listElement); |
| 222 } | 235 } |
| 223 this.listElement.appendChild(element); | 236 this._listElement.appendChild(element); |
| 224 } | 237 } |
| 225 }, | 238 }, |
| 226 | 239 |
| 227 _removeListElement: function(element) | 240 _removeListElement: function(element) |
| 228 { | 241 { |
| 229 this.listElement.removeChild(element); | 242 this._listElement.removeChild(element); |
| 230 if (!this.listElement.firstChild) { | 243 if (!this._listElement.firstChild) { |
| 231 this.element.removeChild(this.listElement); | 244 this.element.removeChild(this._listElement); |
| 232 this.element.appendChild(this.emptyElement); | 245 this.element.appendChild(this.emptyElement); |
| 233 } | 246 } |
| 234 }, | 247 }, |
| 235 | 248 |
| 236 _compare: function(x, y) | 249 _compare: function(x, y) |
| 237 { | 250 { |
| 238 if (x !== y) | 251 if (x !== y) |
| 239 return x < y ? -1 : 1; | 252 return x < y ? -1 : 1; |
| 240 return 0; | 253 return 0; |
| 241 }, | 254 }, |
| 242 | 255 |
| 243 _compareBreakpoints: function(b1, b2) | 256 _compareBreakpoints: function(b1, b2) |
| 244 { | 257 { |
| 245 return this._compare(b1.uiSourceCode.url(), b2.uiSourceCode.url()) || th is._compare(b1.lineNumber, b2.lineNumber); | 258 return this._compare(b1.uiSourceCode.url(), b2.uiSourceCode.url()) || th is._compare(b1.lineNumber, b2.lineNumber); |
| 246 }, | 259 }, |
| 247 | 260 |
| 248 reset: function() | 261 reset: function() |
| 249 { | 262 { |
| 250 this.listElement.removeChildren(); | 263 this._listElement.removeChildren(); |
| 251 if (this.listElement.parentElement) { | 264 if (this._listElement.parentElement) { |
| 252 this.element.removeChild(this.listElement); | 265 this.element.removeChild(this._listElement); |
| 253 this.element.appendChild(this.emptyElement); | 266 this.element.appendChild(this.emptyElement); |
| 254 } | 267 } |
| 255 this._items.clear(); | 268 this._items.clear(); |
| 256 }, | 269 }, |
| 257 | 270 |
| 258 __proto__: WebInspector.SimpleView.prototype | 271 __proto__: WebInspector.VBox.prototype |
| 259 } | 272 } |
| OLD | NEW |