Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 29 */ | 29 */ |
| 30 | 30 |
| 31 /** | 31 /** |
| 32 * @constructor | 32 * @constructor |
| 33 * @extends {WebInspector.BreakpointsSidebarPaneBase} | 33 * @extends {WebInspector.BreakpointsSidebarPaneBase} |
| 34 */ | 34 */ |
| 35 WebInspector.DOMBreakpointsSidebarPane = function() | 35 WebInspector.DOMBreakpointsSidebarPane = function() |
| 36 { | 36 { |
| 37 WebInspector.BreakpointsSidebarPaneBase.call(this, WebInspector.UIString("DO M Breakpoints")); | 37 WebInspector.BreakpointsSidebarPaneBase.call(this, WebInspector.UIString("DO M Breakpoints")); |
| 38 this._domBreakpointsSetting = WebInspector.settings.createLocalSetting("domB reakpoints", []); | |
| 39 this.listElement.classList.add("dom-breakpoints-list"); | 38 this.listElement.classList.add("dom-breakpoints-list"); |
| 40 | 39 |
| 41 this._breakpointElements = {}; | 40 this._breakpointElements = {}; |
| 42 | 41 |
| 43 this._breakpointTypes = { | 42 this._breakpointTypes = { |
| 44 SubtreeModified: "subtree-modified", | 43 SubtreeModified: "subtree-modified", |
| 45 AttributeModified: "attribute-modified", | 44 AttributeModified: "attribute-modified", |
| 46 NodeRemoved: "node-removed" | 45 NodeRemoved: "node-removed" |
| 47 }; | 46 }; |
| 48 this._breakpointTypeLabels = {}; | 47 this._breakpointTypeLabels = {}; |
| 49 this._breakpointTypeLabels[this._breakpointTypes.SubtreeModified] = WebInspe ctor.UIString("Subtree Modified"); | 48 this._breakpointTypeLabels[this._breakpointTypes.SubtreeModified] = WebInspe ctor.UIString("Subtree Modified"); |
| 50 this._breakpointTypeLabels[this._breakpointTypes.AttributeModified] = WebIns pector.UIString("Attribute Modified"); | 49 this._breakpointTypeLabels[this._breakpointTypes.AttributeModified] = WebIns pector.UIString("Attribute Modified"); |
| 51 this._breakpointTypeLabels[this._breakpointTypes.NodeRemoved] = WebInspector .UIString("Node Removed"); | 50 this._breakpointTypeLabels[this._breakpointTypes.NodeRemoved] = WebInspector .UIString("Node Removed"); |
| 52 | 51 |
| 53 this._contextMenuLabels = {}; | 52 this._contextMenuLabels = {}; |
| 54 this._contextMenuLabels[this._breakpointTypes.SubtreeModified] = WebInspecto r.UIString.capitalize("Subtree ^modifications"); | 53 this._contextMenuLabels[this._breakpointTypes.SubtreeModified] = WebInspecto r.UIString.capitalize("Subtree ^modifications"); |
| 55 this._contextMenuLabels[this._breakpointTypes.AttributeModified] = WebInspec tor.UIString.capitalize("Attributes ^modifications"); | 54 this._contextMenuLabels[this._breakpointTypes.AttributeModified] = WebInspec tor.UIString.capitalize("Attributes ^modifications"); |
| 56 this._contextMenuLabels[this._breakpointTypes.NodeRemoved] = WebInspector.UI String.capitalize("Node ^removal"); | 55 this._contextMenuLabels[this._breakpointTypes.NodeRemoved] = WebInspector.UI String.capitalize("Node ^removal"); |
| 57 | 56 WebInspector.targetManager.addModelListener(WebInspector.DOMDebuggerModel, W ebInspector.DOMDebuggerModel.Events.BreakpointsChanged, this._reloadBreakpointEl ements, this); |
| 58 WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Event s.InspectedURLChanged, this._inspectedURLChanged, this); | |
| 59 WebInspector.targetManager.addModelListener(WebInspector.DOMModel, WebInspec tor.DOMModel.Events.NodeRemoved, this._nodeRemoved, this); | |
| 60 } | 57 } |
| 61 | 58 |
| 62 WebInspector.DOMBreakpointsSidebarPane.Marker = "breakpoint-marker"; | |
| 63 | |
| 64 WebInspector.DOMBreakpointsSidebarPane.prototype = { | 59 WebInspector.DOMBreakpointsSidebarPane.prototype = { |
| 65 _inspectedURLChanged: function(event) | 60 /** |
| 61 * @return {!WebInspector.DOMDebuggerModel} | |
| 62 */ | |
| 63 domDebuggerModel: function() | |
|
lushnikov
2016/08/08 19:53:07
there should be no method domDebuggerModel(): DOMB
chenwilliam
2016/08/10 19:48:35
Done.
| |
| 66 { | 64 { |
| 67 var target = /** @type {!WebInspector.Target} */ (event.data); | 65 var targets = WebInspector.targetManager.targets(WebInspector.Target.Cap ability.DOM); |
| 68 if (target !== WebInspector.targetManager.mainTarget()) | 66 var domDebuggerModels = targets.map(target => target.model(WebInspector. DOMDebuggerModel)); |
| 69 return; | 67 return domDebuggerModels[0]; |
|
chenwilliam
2016/08/06 00:28:22
This feels a bit hacky, so perhaps there's a bette
lushnikov
2016/08/08 19:53:06
In future, they'll be in separate targets.
chenwilliam
2016/08/10 19:48:35
Done.
| |
| 70 this._breakpointElements = {}; | |
| 71 this.reset(); | |
| 72 this._inspectedURL = target.inspectedURL().removeURLFragment(); | |
| 73 }, | 68 }, |
| 74 | 69 |
| 75 /** | 70 /** |
| 76 * @param {!WebInspector.DOMNode} node | 71 * @param {!WebInspector.DOMNode} node |
| 77 * @param {!WebInspector.ContextMenu} contextMenu | 72 * @param {!WebInspector.ContextMenu} contextMenu |
| 78 * @param {boolean} createSubMenu | 73 * @param {boolean} createSubMenu |
| 79 */ | 74 */ |
| 80 populateNodeContextMenu: function(node, contextMenu, createSubMenu) | 75 populateNodeContextMenu: function(node, contextMenu, createSubMenu) |
| 81 { | 76 { |
| 82 if (node.pseudoType()) | 77 if (node.pseudoType()) |
| 83 return; | 78 return; |
| 84 | 79 |
| 85 var nodeBreakpoints = this._nodeBreakpoints(node); | 80 var nodeBreakpoints = this.domDebuggerModel().nodeBreakpoints(node); |
| 86 | 81 |
| 87 /** | 82 /** |
| 88 * @param {!DOMDebuggerAgent.DOMBreakpointType} type | 83 * @param {!DOMDebuggerAgent.DOMBreakpointType} type |
| 89 * @this {WebInspector.DOMBreakpointsSidebarPane} | 84 * @this {WebInspector.DOMBreakpointsSidebarPane} |
| 90 */ | 85 */ |
| 91 function toggleBreakpoint(type) | 86 function toggleBreakpoint(type) |
| 92 { | 87 { |
| 93 if (!nodeBreakpoints[type]) | 88 this.domDebuggerModel().toggleBreakpoint(node, type); |
| 94 this._setBreakpoint(node, type, true); | |
| 95 else | |
| 96 this._removeBreakpoint(node, type); | |
| 97 this._saveBreakpoints(); | |
| 98 } | 89 } |
| 99 | 90 |
| 100 var breakpointsMenu = createSubMenu ? contextMenu.appendSubMenuItem(WebI nspector.UIString("Break on...")) : contextMenu; | 91 var breakpointsMenu = createSubMenu ? contextMenu.appendSubMenuItem(WebI nspector.UIString("Break on...")) : contextMenu; |
| 101 for (var key in this._breakpointTypes) { | 92 for (var key in this._breakpointTypes) { |
| 102 var type = this._breakpointTypes[key]; | 93 var type = this._breakpointTypes[key]; |
| 103 var label = this._contextMenuLabels[type]; | 94 var label = this._contextMenuLabels[type]; |
| 104 breakpointsMenu.appendCheckboxItem(label, toggleBreakpoint.bind(this , type), nodeBreakpoints[type]); | 95 breakpointsMenu.appendCheckboxItem(label, toggleBreakpoint.bind(this , type), nodeBreakpoints[type]); |
| 105 } | 96 } |
| 106 }, | 97 }, |
| 107 | 98 |
| 108 /** | 99 /** |
| 109 * @param {!WebInspector.DOMNode} node | |
| 110 * @return {!Object<string, boolean>} | |
| 111 */ | |
| 112 _nodeBreakpoints: function(node) | |
| 113 { | |
| 114 var nodeBreakpoints = {}; | |
| 115 for (var id in this._breakpointElements) { | |
| 116 var element = this._breakpointElements[id]; | |
| 117 if (element._node === node && element._checkboxElement.checked) | |
| 118 nodeBreakpoints[element._type] = true; | |
| 119 } | |
| 120 return nodeBreakpoints; | |
| 121 }, | |
| 122 | |
| 123 /** | |
| 124 * @param {!WebInspector.DOMNode} node | |
| 125 * @return {boolean} | |
| 126 */ | |
| 127 hasBreakpoints: function(node) | |
| 128 { | |
| 129 for (var id in this._breakpointElements) { | |
| 130 var element = this._breakpointElements[id]; | |
| 131 if (element._node === node && element._checkboxElement.checked) | |
| 132 return true; | |
| 133 } | |
| 134 return false; | |
| 135 }, | |
| 136 | |
| 137 /** | |
| 138 * @param {!WebInspector.DebuggerPausedDetails} details | 100 * @param {!WebInspector.DebuggerPausedDetails} details |
| 139 * @return {!Element} | 101 * @return {!Element} |
| 140 */ | 102 */ |
| 141 createBreakpointHitStatusMessage: function(details) | 103 createBreakpointHitStatusMessage: function(details) |
| 142 { | 104 { |
| 143 var auxData = /** @type {!Object} */ (details.auxData); | 105 var auxData = /** @type {!Object} */ (details.auxData); |
| 144 var message = "Paused on a \"%s\" breakpoint."; | 106 var message = "Paused on a \"%s\" breakpoint."; |
| 145 var substitutions = []; | 107 var substitutions = []; |
| 146 substitutions.push(this._breakpointTypeLabels[auxData["type"]]); | 108 substitutions.push(this._breakpointTypeLabels[auxData["type"]]); |
| 147 | 109 |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 167 message = "Paused on a \"%s\" breakpoint set on %s, because its descendant %s was removed."; | 129 message = "Paused on a \"%s\" breakpoint set on %s, because its descendant %s was removed."; |
| 168 substitutions.push(targetNodeLink); | 130 substitutions.push(targetNodeLink); |
| 169 } | 131 } |
| 170 } else { | 132 } else { |
| 171 message = "Paused on a \"%s\" breakpoint set on %s."; | 133 message = "Paused on a \"%s\" breakpoint set on %s."; |
| 172 } | 134 } |
| 173 | 135 |
| 174 return WebInspector.formatLocalized(message, substitutions); | 136 return WebInspector.formatLocalized(message, substitutions); |
| 175 }, | 137 }, |
| 176 | 138 |
| 177 _nodeRemoved: function(event) | 139 _reloadBreakpointElements: function() |
| 178 { | 140 { |
| 179 var node = event.data.node; | 141 this._breakpointElements = {}; |
| 180 this._removeBreakpointsForNode(event.data.node); | 142 this.reset(); |
|
chenwilliam
2016/08/06 00:28:22
This could be optimized but I did a quick check of
| |
| 181 var children = node.children(); | 143 var breakpoints = this.domDebuggerModel().domBreakpoints(); |
| 182 if (!children) | 144 for (var id in breakpoints) { |
| 183 return; | 145 var breakpoint = breakpoints[id]; |
| 184 for (var i = 0; i < children.length; ++i) | 146 this._breakpointElements[id] = this._createBreakpointElement(breakpo int.node, breakpoint.type, breakpoint.enabled); |
| 185 this._removeBreakpointsForNode(children[i]); | |
| 186 this._saveBreakpoints(); | |
| 187 }, | |
| 188 | |
| 189 /** | |
| 190 * @param {!WebInspector.DOMNode} node | |
| 191 */ | |
| 192 _removeBreakpointsForNode: function(node) | |
| 193 { | |
| 194 for (var id in this._breakpointElements) { | |
| 195 var element = this._breakpointElements[id]; | |
| 196 if (element._node === node) | |
| 197 this._removeBreakpoint(element._node, element._type); | |
| 198 } | 147 } |
| 199 }, | 148 }, |
| 200 | 149 |
| 201 /** | 150 /** |
| 202 * @param {!WebInspector.DOMNode} node | |
| 203 * @param {!DOMDebuggerAgent.DOMBreakpointType} type | |
| 204 * @param {boolean} enabled | |
| 205 */ | |
| 206 _setBreakpoint: function(node, type, enabled) | |
| 207 { | |
| 208 var breakpointId = this._createBreakpointId(node.id, type); | |
| 209 var breakpointElement = this._breakpointElements[breakpointId]; | |
| 210 if (!breakpointElement) { | |
| 211 breakpointElement = this._createBreakpointElement(node, type, enable d); | |
| 212 this._breakpointElements[breakpointId] = breakpointElement; | |
| 213 } else { | |
| 214 breakpointElement._checkboxElement.checked = enabled; | |
| 215 } | |
| 216 if (enabled) | |
| 217 node.target().domdebuggerAgent().setDOMBreakpoint(node.id, type); | |
| 218 node.setMarker(WebInspector.DOMBreakpointsSidebarPane.Marker, true); | |
| 219 }, | |
| 220 | |
| 221 /** | |
| 222 * @param {!WebInspector.DOMNode} node | 151 * @param {!WebInspector.DOMNode} node |
| 223 * @param {!DOMDebuggerAgent.DOMBreakpointType} type | 152 * @param {!DOMDebuggerAgent.DOMBreakpointType} type |
| 224 * @param {boolean} enabled | 153 * @param {boolean} enabled |
| 225 */ | 154 */ |
| 226 _createBreakpointElement: function(node, type, enabled) | 155 _createBreakpointElement: function(node, type, enabled) |
| 227 { | 156 { |
| 228 var element = createElement("li"); | 157 var element = createElement("li"); |
| 229 element._node = node; | 158 element._node = node; |
| 230 element._type = type; | 159 element._type = type; |
| 231 element.addEventListener("contextmenu", this._contextMenu.bind(this, nod e, type), true); | 160 element.addEventListener("contextmenu", this._contextMenu.bind(this, nod e, type), true); |
| 232 | 161 |
| 233 var checkboxLabel = createCheckboxLabel("", enabled); | 162 var checkboxLabel = createCheckboxLabel("", enabled); |
| 234 checkboxLabel.addEventListener("click", this._checkboxClicked.bind(this, node, type), false); | 163 var checkboxClicked = this.domDebuggerModel().checkboxClicked.bind(this. domDebuggerModel(), node, type); |
| 164 checkboxLabel.addEventListener("click", checkboxClicked, false); | |
| 235 element._checkboxElement = checkboxLabel.checkboxElement; | 165 element._checkboxElement = checkboxLabel.checkboxElement; |
| 236 element.appendChild(checkboxLabel); | 166 element.appendChild(checkboxLabel); |
| 237 | 167 |
| 238 var labelElement = createElementWithClass("div", "dom-breakpoint"); | 168 var labelElement = createElementWithClass("div", "dom-breakpoint"); |
| 239 element.appendChild(labelElement); | 169 element.appendChild(labelElement); |
| 240 | 170 |
| 241 var linkifiedNode = WebInspector.DOMPresentationUtils.linkifyNodeReferen ce(node); | 171 var linkifiedNode = WebInspector.DOMPresentationUtils.linkifyNodeReferen ce(node); |
| 242 linkifiedNode.classList.add("monospace"); | 172 linkifiedNode.classList.add("monospace"); |
| 243 linkifiedNode.style.display = "block"; | 173 linkifiedNode.style.display = "block"; |
| 244 labelElement.appendChild(linkifiedNode); | 174 labelElement.appendChild(linkifiedNode); |
| 245 | 175 |
| 246 var description = createElement("div"); | 176 var description = createElement("div"); |
| 247 description.textContent = this._breakpointTypeLabels[type]; | 177 description.textContent = this._breakpointTypeLabels[type]; |
| 248 labelElement.appendChild(description); | 178 labelElement.appendChild(description); |
| 249 | 179 |
| 250 var currentElement = this.listElement.firstChild; | 180 var currentElement = this.listElement.firstChild; |
| 251 while (currentElement) { | 181 while (currentElement) { |
| 252 if (currentElement._type && currentElement._type < element._type) | 182 if (currentElement._type && currentElement._type < element._type) |
| 253 break; | 183 break; |
| 254 currentElement = currentElement.nextSibling; | 184 currentElement = currentElement.nextSibling; |
| 255 } | 185 } |
| 256 this.addListElement(element, currentElement); | 186 this.addListElement(element, currentElement); |
| 257 return element; | 187 return element; |
| 258 }, | 188 }, |
| 259 | 189 |
| 260 _removeAllBreakpoints: function() | |
| 261 { | |
| 262 for (var id in this._breakpointElements) { | |
| 263 var element = this._breakpointElements[id]; | |
| 264 this._removeBreakpoint(element._node, element._type); | |
| 265 } | |
| 266 this._saveBreakpoints(); | |
| 267 }, | |
| 268 | |
| 269 /** | 190 /** |
| 270 * @param {!WebInspector.DOMNode} node | 191 * @param {!WebInspector.DOMNode} node |
| 271 * @param {!DOMDebuggerAgent.DOMBreakpointType} type | 192 * @param {!DOMDebuggerAgent.DOMBreakpointType} type |
| 272 */ | |
| 273 _removeBreakpoint: function(node, type) | |
| 274 { | |
| 275 var breakpointId = this._createBreakpointId(node.id, type); | |
| 276 var element = this._breakpointElements[breakpointId]; | |
| 277 if (!element) | |
| 278 return; | |
| 279 | |
| 280 this.removeListElement(element); | |
| 281 delete this._breakpointElements[breakpointId]; | |
| 282 if (element._checkboxElement.checked) | |
| 283 node.target().domdebuggerAgent().removeDOMBreakpoint(node.id, type); | |
| 284 node.setMarker(WebInspector.DOMBreakpointsSidebarPane.Marker, this.hasBr eakpoints(node) ? true : null); | |
| 285 }, | |
| 286 | |
| 287 /** | |
| 288 * @param {!WebInspector.DOMNode} node | |
| 289 * @param {!DOMDebuggerAgent.DOMBreakpointType} type | |
| 290 * @param {!Event} event | 193 * @param {!Event} event |
| 291 */ | 194 */ |
| 292 _contextMenu: function(node, type, event) | 195 _contextMenu: function(node, type, event) |
| 293 { | 196 { |
| 294 var contextMenu = new WebInspector.ContextMenu(event); | 197 var contextMenu = new WebInspector.ContextMenu(event); |
| 295 | 198 |
| 296 /** | 199 /** |
| 297 * @this {WebInspector.DOMBreakpointsSidebarPane} | 200 * @this {WebInspector.DOMBreakpointsSidebarPane} |
| 298 */ | 201 */ |
| 299 function removeBreakpoint() | 202 var removeBreakpoint = () => this.domDebuggerModel().removeBreakpoint(no de, type); |
| 300 { | 203 contextMenu.appendItem(WebInspector.UIString.capitalize("Remove ^breakpo int"), removeBreakpoint); |
| 301 this._removeBreakpoint(node, type); | 204 |
| 302 this._saveBreakpoints(); | 205 /** |
| 303 } | 206 * @this {WebInspector.DOMBreakpointsSidebarPane} |
| 304 contextMenu.appendItem(WebInspector.UIString.capitalize("Remove ^breakpo int"), removeBreakpoint.bind(this)); | 207 */ |
| 305 contextMenu.appendItem(WebInspector.UIString.capitalize("Remove ^all DOM breakpoints"), this._removeAllBreakpoints.bind(this)); | 208 var removeAllBreakpoints = () => this.domDebuggerModel().removeAllBreakp oints(); |
| 209 contextMenu.appendItem(WebInspector.UIString.capitalize("Remove ^all DOM breakpoints"), removeAllBreakpoints); | |
| 306 contextMenu.show(); | 210 contextMenu.show(); |
| 307 }, | 211 }, |
| 308 | 212 |
| 309 /** | |
| 310 * @param {!WebInspector.DOMNode} node | |
| 311 * @param {!DOMDebuggerAgent.DOMBreakpointType} type | |
| 312 * @param {!Event} event | |
| 313 */ | |
| 314 _checkboxClicked: function(node, type, event) | |
| 315 { | |
| 316 if (event.target.checked) | |
| 317 node.target().domdebuggerAgent().setDOMBreakpoint(node.id, type); | |
| 318 else | |
| 319 node.target().domdebuggerAgent().removeDOMBreakpoint(node.id, type); | |
| 320 this._saveBreakpoints(); | |
| 321 }, | |
| 322 | |
| 323 highlightBreakpoint: function(auxData) | 213 highlightBreakpoint: function(auxData) |
| 324 { | 214 { |
| 325 var breakpointId = this._createBreakpointId(auxData.nodeId, auxData.type ); | 215 var breakpointId = this.domDebuggerModel().createBreakpointId(auxData.no deId, auxData.type); |
| 326 var element = this._breakpointElements[breakpointId]; | 216 var element = this._breakpointElements[breakpointId]; |
| 327 if (!element) | 217 if (!element) |
| 328 return; | 218 return; |
| 329 this.revealWidget(); | 219 this.revealWidget(); |
| 330 element.classList.add("breakpoint-hit"); | 220 element.classList.add("breakpoint-hit"); |
| 331 this._highlightedElement = element; | 221 this._highlightedElement = element; |
| 332 }, | 222 }, |
| 333 | 223 |
| 334 clearBreakpointHighlight: function() | 224 clearBreakpointHighlight: function() |
| 335 { | 225 { |
| 336 if (this._highlightedElement) { | 226 if (this._highlightedElement) { |
| 337 this._highlightedElement.classList.remove("breakpoint-hit"); | 227 this._highlightedElement.classList.remove("breakpoint-hit"); |
| 338 delete this._highlightedElement; | 228 delete this._highlightedElement; |
| 339 } | 229 } |
| 340 }, | 230 }, |
| 341 | 231 |
| 342 /** | 232 /** |
| 343 * @param {number} nodeId | |
| 344 * @param {!DOMDebuggerAgent.DOMBreakpointType} type | |
| 345 */ | |
| 346 _createBreakpointId: function(nodeId, type) | |
| 347 { | |
| 348 return nodeId + ":" + type; | |
| 349 }, | |
| 350 | |
| 351 _saveBreakpoints: function() | |
| 352 { | |
| 353 var breakpoints = []; | |
| 354 var storedBreakpoints = this._domBreakpointsSetting.get(); | |
| 355 for (var i = 0; i < storedBreakpoints.length; ++i) { | |
| 356 var breakpoint = storedBreakpoints[i]; | |
| 357 if (breakpoint.url !== this._inspectedURL) | |
| 358 breakpoints.push(breakpoint); | |
| 359 } | |
| 360 for (var id in this._breakpointElements) { | |
| 361 var element = this._breakpointElements[id]; | |
| 362 breakpoints.push({ url: this._inspectedURL, path: element._node.path (), type: element._type, enabled: element._checkboxElement.checked }); | |
| 363 } | |
| 364 this._domBreakpointsSetting.set(breakpoints); | |
| 365 }, | |
| 366 | |
| 367 /** | |
| 368 * @param {!WebInspector.DOMModel} domModel | 233 * @param {!WebInspector.DOMModel} domModel |
| 369 */ | 234 */ |
| 370 restoreBreakpoints: function(domModel) | 235 restoreBreakpoints: function(domModel) |
| 371 { | 236 { |
| 372 var pathToBreakpoints = {}; | 237 this.domDebuggerModel().restoreBreakpoints(domModel); |
| 373 | |
| 374 /** | |
| 375 * @param {string} path | |
| 376 * @param {?DOMAgent.NodeId} nodeId | |
| 377 * @this {WebInspector.DOMBreakpointsSidebarPane} | |
| 378 */ | |
| 379 function didPushNodeByPathToFrontend(path, nodeId) | |
| 380 { | |
| 381 var node = nodeId ? domModel.nodeForId(nodeId) : null; | |
| 382 if (!node) | |
| 383 return; | |
| 384 | |
| 385 var breakpoints = pathToBreakpoints[path]; | |
| 386 for (var i = 0; i < breakpoints.length; ++i) | |
| 387 this._setBreakpoint(node, breakpoints[i].type, breakpoints[i].en abled); | |
| 388 } | |
| 389 | |
| 390 var breakpoints = this._domBreakpointsSetting.get(); | |
| 391 for (var i = 0; i < breakpoints.length; ++i) { | |
| 392 var breakpoint = breakpoints[i]; | |
| 393 if (breakpoint.url !== this._inspectedURL) | |
| 394 continue; | |
| 395 var path = breakpoint.path; | |
| 396 if (!pathToBreakpoints[path]) { | |
| 397 pathToBreakpoints[path] = []; | |
| 398 domModel.pushNodeByPathToFrontend(path, didPushNodeByPathToFront end.bind(this, path)); | |
| 399 } | |
| 400 pathToBreakpoints[path].push(breakpoint); | |
| 401 } | |
| 402 }, | 238 }, |
| 403 | 239 |
| 404 /** | 240 /** |
| 405 * @param {!WebInspector.Panel} panel | 241 * @param {!WebInspector.Panel} panel |
| 406 * @return {!WebInspector.DOMBreakpointsSidebarPane.Proxy} | 242 * @return {!WebInspector.DOMBreakpointsSidebarPane.Proxy} |
| 407 */ | 243 */ |
| 408 createProxy: function(panel) | 244 createProxy: function(panel) |
| 409 { | 245 { |
| 410 var proxy = new WebInspector.DOMBreakpointsSidebarPane.Proxy(this, panel ); | 246 var proxy = new WebInspector.DOMBreakpointsSidebarPane.Proxy(this, panel ); |
| 411 if (!this._proxies) | 247 if (!this._proxies) |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 445 this._wrappedPane.show(this.element); | 281 this._wrappedPane.show(this.element); |
| 446 }, | 282 }, |
| 447 | 283 |
| 448 __proto__: WebInspector.View.prototype | 284 __proto__: WebInspector.View.prototype |
| 449 } | 285 } |
| 450 | 286 |
| 451 /** | 287 /** |
| 452 * @type {!WebInspector.DOMBreakpointsSidebarPane} | 288 * @type {!WebInspector.DOMBreakpointsSidebarPane} |
| 453 */ | 289 */ |
| 454 WebInspector.domBreakpointsSidebarPane; | 290 WebInspector.domBreakpointsSidebarPane; |
| OLD | NEW |