| 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 10 matching lines...) Expand all Loading... |
| 21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | 21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 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 * @implements {WebInspector.ContextFlavorListener} | 31 * @implements {UI.ContextFlavorListener} |
| 32 * @unrestricted | 32 * @unrestricted |
| 33 */ | 33 */ |
| 34 WebInspector.DOMBreakpointsSidebarPane = class extends WebInspector.BreakpointsS
idebarPaneBase { | 34 Components.DOMBreakpointsSidebarPane = class extends Components.BreakpointsSideb
arPaneBase { |
| 35 constructor() { | 35 constructor() { |
| 36 super(); | 36 super(); |
| 37 this._domBreakpointsSetting = WebInspector.settings.createLocalSetting('domB
reakpoints', []); | 37 this._domBreakpointsSetting = Common.settings.createLocalSetting('domBreakpo
ints', []); |
| 38 this.listElement.classList.add('dom-breakpoints-list'); | 38 this.listElement.classList.add('dom-breakpoints-list'); |
| 39 | 39 |
| 40 /** @type {!Map<string, !Element>} */ | 40 /** @type {!Map<string, !Element>} */ |
| 41 this._breakpointElements = new Map(); | 41 this._breakpointElements = new Map(); |
| 42 | 42 |
| 43 WebInspector.targetManager.addModelListener( | 43 SDK.targetManager.addModelListener( |
| 44 WebInspector.DOMModel, WebInspector.DOMModel.Events.NodeRemoved, this._n
odeRemoved, this); | 44 SDK.DOMModel, SDK.DOMModel.Events.NodeRemoved, this._nodeRemoved, this); |
| 45 this._update(); | 45 this._update(); |
| 46 } | 46 } |
| 47 | 47 |
| 48 /** | 48 /** |
| 49 * @param {!WebInspector.DebuggerPausedDetails} details | 49 * @param {!SDK.DebuggerPausedDetails} details |
| 50 * @return {!Element} | 50 * @return {!Element} |
| 51 */ | 51 */ |
| 52 static createBreakpointHitMessage(details) { | 52 static createBreakpointHitMessage(details) { |
| 53 var messageWrapper = createElement('span'); | 53 var messageWrapper = createElement('span'); |
| 54 var mainElement = messageWrapper.createChild('div', 'status-main'); | 54 var mainElement = messageWrapper.createChild('div', 'status-main'); |
| 55 mainElement.appendChild(WebInspector.Icon.create('smallicon-info', 'status-i
con')); | 55 mainElement.appendChild(UI.Icon.create('smallicon-info', 'status-icon')); |
| 56 var auxData = /** @type {!Object} */ (details.auxData); | 56 var auxData = /** @type {!Object} */ (details.auxData); |
| 57 mainElement.appendChild(createTextNode( | 57 mainElement.appendChild(createTextNode( |
| 58 String.sprintf('Paused on %s', WebInspector.DOMBreakpointsSidebarPane.Br
eakpointTypeNouns[auxData['type']]))); | 58 String.sprintf('Paused on %s', Components.DOMBreakpointsSidebarPane.Brea
kpointTypeNouns[auxData['type']]))); |
| 59 | 59 |
| 60 var domModel = WebInspector.DOMModel.fromTarget(details.target()); | 60 var domModel = SDK.DOMModel.fromTarget(details.target()); |
| 61 if (domModel) { | 61 if (domModel) { |
| 62 var subElement = messageWrapper.createChild('div', 'status-sub monospace')
; | 62 var subElement = messageWrapper.createChild('div', 'status-sub monospace')
; |
| 63 var node = domModel.nodeForId(auxData['nodeId']); | 63 var node = domModel.nodeForId(auxData['nodeId']); |
| 64 var linkifiedNode = WebInspector.DOMPresentationUtils.linkifyNodeReference
(node); | 64 var linkifiedNode = Components.DOMPresentationUtils.linkifyNodeReference(n
ode); |
| 65 subElement.appendChild(linkifiedNode); | 65 subElement.appendChild(linkifiedNode); |
| 66 | 66 |
| 67 var targetNode = auxData['targetNodeId'] ? domModel.nodeForId(auxData['tar
getNodeId']) : null; | 67 var targetNode = auxData['targetNodeId'] ? domModel.nodeForId(auxData['tar
getNodeId']) : null; |
| 68 var targetNodeLink = targetNode ? WebInspector.DOMPresentationUtils.linkif
yNodeReference(targetNode) : ''; | 68 var targetNodeLink = targetNode ? Components.DOMPresentationUtils.linkifyN
odeReference(targetNode) : ''; |
| 69 var message; | 69 var message; |
| 70 if (auxData.type === WebInspector.DOMBreakpointsSidebarPane.BreakpointType
s.SubtreeModified) { | 70 if (auxData.type === Components.DOMBreakpointsSidebarPane.BreakpointTypes.
SubtreeModified) { |
| 71 if (auxData['insertion']) | 71 if (auxData['insertion']) |
| 72 message = targetNode === node ? 'Child %s added' : 'Descendant %s adde
d'; | 72 message = targetNode === node ? 'Child %s added' : 'Descendant %s adde
d'; |
| 73 else | 73 else |
| 74 message = 'Descendant %s removed'; | 74 message = 'Descendant %s removed'; |
| 75 subElement.appendChild(createElement('br')); | 75 subElement.appendChild(createElement('br')); |
| 76 subElement.appendChild(WebInspector.formatLocalized(message, [targetNode
Link])); | 76 subElement.appendChild(UI.formatLocalized(message, [targetNodeLink])); |
| 77 } | 77 } |
| 78 } | 78 } |
| 79 return messageWrapper; | 79 return messageWrapper; |
| 80 } | 80 } |
| 81 | 81 |
| 82 /** | 82 /** |
| 83 * @param {!WebInspector.DOMNode} node | 83 * @param {!SDK.DOMNode} node |
| 84 * @param {!WebInspector.ContextMenu} contextMenu | 84 * @param {!UI.ContextMenu} contextMenu |
| 85 * @param {boolean} createSubMenu | 85 * @param {boolean} createSubMenu |
| 86 */ | 86 */ |
| 87 populateNodeContextMenu(node, contextMenu, createSubMenu) { | 87 populateNodeContextMenu(node, contextMenu, createSubMenu) { |
| 88 if (node.pseudoType()) | 88 if (node.pseudoType()) |
| 89 return; | 89 return; |
| 90 | 90 |
| 91 var nodeBreakpoints = this._nodeBreakpoints(node); | 91 var nodeBreakpoints = this._nodeBreakpoints(node); |
| 92 | 92 |
| 93 /** | 93 /** |
| 94 * @param {!Protocol.DOMDebugger.DOMBreakpointType} type | 94 * @param {!Protocol.DOMDebugger.DOMBreakpointType} type |
| 95 * @this {WebInspector.DOMBreakpointsSidebarPane} | 95 * @this {Components.DOMBreakpointsSidebarPane} |
| 96 */ | 96 */ |
| 97 function toggleBreakpoint(type) { | 97 function toggleBreakpoint(type) { |
| 98 if (!nodeBreakpoints.has(type)) | 98 if (!nodeBreakpoints.has(type)) |
| 99 this._setBreakpoint(node, type, true); | 99 this._setBreakpoint(node, type, true); |
| 100 else | 100 else |
| 101 this._removeBreakpoint(node, type); | 101 this._removeBreakpoint(node, type); |
| 102 this._saveBreakpoints(); | 102 this._saveBreakpoints(); |
| 103 } | 103 } |
| 104 | 104 |
| 105 var breakpointsMenu = | 105 var breakpointsMenu = |
| 106 createSubMenu ? contextMenu.appendSubMenuItem(WebInspector.UIString('Bre
ak on...')) : contextMenu; | 106 createSubMenu ? contextMenu.appendSubMenuItem(Common.UIString('Break on.
..')) : contextMenu; |
| 107 for (var key in WebInspector.DOMBreakpointsSidebarPane.BreakpointTypes) { | 107 for (var key in Components.DOMBreakpointsSidebarPane.BreakpointTypes) { |
| 108 var type = WebInspector.DOMBreakpointsSidebarPane.BreakpointTypes[key]; | 108 var type = Components.DOMBreakpointsSidebarPane.BreakpointTypes[key]; |
| 109 var label = WebInspector.DOMBreakpointsSidebarPane.BreakpointTypeNouns[typ
e]; | 109 var label = Components.DOMBreakpointsSidebarPane.BreakpointTypeNouns[type]
; |
| 110 breakpointsMenu.appendCheckboxItem(label, toggleBreakpoint.bind(this, type
), nodeBreakpoints.has(type)); | 110 breakpointsMenu.appendCheckboxItem(label, toggleBreakpoint.bind(this, type
), nodeBreakpoints.has(type)); |
| 111 } | 111 } |
| 112 } | 112 } |
| 113 | 113 |
| 114 /** | 114 /** |
| 115 * @param {!WebInspector.DOMNode} node | 115 * @param {!SDK.DOMNode} node |
| 116 * @return {!Set<!Protocol.DOMDebugger.DOMBreakpointType>} | 116 * @return {!Set<!Protocol.DOMDebugger.DOMBreakpointType>} |
| 117 */ | 117 */ |
| 118 _nodeBreakpoints(node) { | 118 _nodeBreakpoints(node) { |
| 119 /** @type {!Set<!Protocol.DOMDebugger.DOMBreakpointType>} */ | 119 /** @type {!Set<!Protocol.DOMDebugger.DOMBreakpointType>} */ |
| 120 var nodeBreakpoints = new Set(); | 120 var nodeBreakpoints = new Set(); |
| 121 for (var element of this._breakpointElements.values()) { | 121 for (var element of this._breakpointElements.values()) { |
| 122 if (element._node === node && element._checkboxElement.checked) | 122 if (element._node === node && element._checkboxElement.checked) |
| 123 nodeBreakpoints.add(element._type); | 123 nodeBreakpoints.add(element._type); |
| 124 } | 124 } |
| 125 return nodeBreakpoints; | 125 return nodeBreakpoints; |
| 126 } | 126 } |
| 127 | 127 |
| 128 /** | 128 /** |
| 129 * @param {!WebInspector.DOMNode} node | 129 * @param {!SDK.DOMNode} node |
| 130 * @return {boolean} | 130 * @return {boolean} |
| 131 */ | 131 */ |
| 132 hasBreakpoints(node) { | 132 hasBreakpoints(node) { |
| 133 for (var element of this._breakpointElements.values()) { | 133 for (var element of this._breakpointElements.values()) { |
| 134 if (element._node === node && element._checkboxElement.checked) | 134 if (element._node === node && element._checkboxElement.checked) |
| 135 return true; | 135 return true; |
| 136 } | 136 } |
| 137 return false; | 137 return false; |
| 138 } | 138 } |
| 139 | 139 |
| 140 _nodeRemoved(event) { | 140 _nodeRemoved(event) { |
| 141 var node = event.data.node; | 141 var node = event.data.node; |
| 142 this._removeBreakpointsForNode(event.data.node); | 142 this._removeBreakpointsForNode(event.data.node); |
| 143 var children = node.children(); | 143 var children = node.children(); |
| 144 if (!children) | 144 if (!children) |
| 145 return; | 145 return; |
| 146 for (var i = 0; i < children.length; ++i) | 146 for (var i = 0; i < children.length; ++i) |
| 147 this._removeBreakpointsForNode(children[i]); | 147 this._removeBreakpointsForNode(children[i]); |
| 148 this._saveBreakpoints(); | 148 this._saveBreakpoints(); |
| 149 } | 149 } |
| 150 | 150 |
| 151 /** | 151 /** |
| 152 * @param {!WebInspector.DOMNode} node | 152 * @param {!SDK.DOMNode} node |
| 153 */ | 153 */ |
| 154 _removeBreakpointsForNode(node) { | 154 _removeBreakpointsForNode(node) { |
| 155 for (var element of this._breakpointElements.values()) { | 155 for (var element of this._breakpointElements.values()) { |
| 156 if (element._node === node) | 156 if (element._node === node) |
| 157 this._removeBreakpoint(element._node, element._type); | 157 this._removeBreakpoint(element._node, element._type); |
| 158 } | 158 } |
| 159 } | 159 } |
| 160 | 160 |
| 161 /** | 161 /** |
| 162 * @param {!WebInspector.DOMNode} node | 162 * @param {!SDK.DOMNode} node |
| 163 * @param {!Protocol.DOMDebugger.DOMBreakpointType} type | 163 * @param {!Protocol.DOMDebugger.DOMBreakpointType} type |
| 164 * @param {boolean} enabled | 164 * @param {boolean} enabled |
| 165 */ | 165 */ |
| 166 _setBreakpoint(node, type, enabled) { | 166 _setBreakpoint(node, type, enabled) { |
| 167 var breakpointId = this._createBreakpointId(node.id, type); | 167 var breakpointId = this._createBreakpointId(node.id, type); |
| 168 var breakpointElement = this._breakpointElements.get(breakpointId); | 168 var breakpointElement = this._breakpointElements.get(breakpointId); |
| 169 if (!breakpointElement) { | 169 if (!breakpointElement) { |
| 170 breakpointElement = this._createBreakpointElement(node, type, enabled); | 170 breakpointElement = this._createBreakpointElement(node, type, enabled); |
| 171 this._breakpointElements.set(breakpointId, breakpointElement); | 171 this._breakpointElements.set(breakpointId, breakpointElement); |
| 172 } else { | 172 } else { |
| 173 breakpointElement._checkboxElement.checked = enabled; | 173 breakpointElement._checkboxElement.checked = enabled; |
| 174 } | 174 } |
| 175 if (enabled) | 175 if (enabled) |
| 176 node.target().domdebuggerAgent().setDOMBreakpoint(node.id, type); | 176 node.target().domdebuggerAgent().setDOMBreakpoint(node.id, type); |
| 177 node.setMarker(WebInspector.DOMBreakpointsSidebarPane.Marker, true); | 177 node.setMarker(Components.DOMBreakpointsSidebarPane.Marker, true); |
| 178 } | 178 } |
| 179 | 179 |
| 180 /** | 180 /** |
| 181 * @param {!WebInspector.DOMNode} node | 181 * @param {!SDK.DOMNode} node |
| 182 * @param {!Protocol.DOMDebugger.DOMBreakpointType} type | 182 * @param {!Protocol.DOMDebugger.DOMBreakpointType} type |
| 183 * @param {boolean} enabled | 183 * @param {boolean} enabled |
| 184 */ | 184 */ |
| 185 _createBreakpointElement(node, type, enabled) { | 185 _createBreakpointElement(node, type, enabled) { |
| 186 var element = createElement('li'); | 186 var element = createElement('li'); |
| 187 element._node = node; | 187 element._node = node; |
| 188 element._type = type; | 188 element._type = type; |
| 189 element.addEventListener('contextmenu', this._contextMenu.bind(this, node, t
ype), true); | 189 element.addEventListener('contextmenu', this._contextMenu.bind(this, node, t
ype), true); |
| 190 | 190 |
| 191 var checkboxLabel = createCheckboxLabel('', enabled); | 191 var checkboxLabel = createCheckboxLabel('', enabled); |
| 192 var checkboxElement = checkboxLabel.checkboxElement; | 192 var checkboxElement = checkboxLabel.checkboxElement; |
| 193 checkboxElement.addEventListener('click', this._checkboxClicked.bind(this, n
ode, type), false); | 193 checkboxElement.addEventListener('click', this._checkboxClicked.bind(this, n
ode, type), false); |
| 194 element._checkboxElement = checkboxElement; | 194 element._checkboxElement = checkboxElement; |
| 195 element.appendChild(checkboxLabel); | 195 element.appendChild(checkboxLabel); |
| 196 | 196 |
| 197 var labelElement = createElementWithClass('div', 'dom-breakpoint'); | 197 var labelElement = createElementWithClass('div', 'dom-breakpoint'); |
| 198 element.appendChild(labelElement); | 198 element.appendChild(labelElement); |
| 199 | 199 |
| 200 var linkifiedNode = WebInspector.DOMPresentationUtils.linkifyNodeReference(n
ode); | 200 var linkifiedNode = Components.DOMPresentationUtils.linkifyNodeReference(nod
e); |
| 201 linkifiedNode.classList.add('monospace'); | 201 linkifiedNode.classList.add('monospace'); |
| 202 linkifiedNode.style.display = 'block'; | 202 linkifiedNode.style.display = 'block'; |
| 203 labelElement.appendChild(linkifiedNode); | 203 labelElement.appendChild(linkifiedNode); |
| 204 | 204 |
| 205 var description = createElement('div'); | 205 var description = createElement('div'); |
| 206 description.textContent = WebInspector.DOMBreakpointsSidebarPane.BreakpointT
ypeLabels[type]; | 206 description.textContent = Components.DOMBreakpointsSidebarPane.BreakpointTyp
eLabels[type]; |
| 207 labelElement.appendChild(description); | 207 labelElement.appendChild(description); |
| 208 | 208 |
| 209 var currentElement = this.listElement.firstChild; | 209 var currentElement = this.listElement.firstChild; |
| 210 while (currentElement) { | 210 while (currentElement) { |
| 211 if (currentElement._type && currentElement._type < element._type) | 211 if (currentElement._type && currentElement._type < element._type) |
| 212 break; | 212 break; |
| 213 currentElement = currentElement.nextSibling; | 213 currentElement = currentElement.nextSibling; |
| 214 } | 214 } |
| 215 this.addListElement(element, currentElement); | 215 this.addListElement(element, currentElement); |
| 216 return element; | 216 return element; |
| 217 } | 217 } |
| 218 | 218 |
| 219 _removeAllBreakpoints() { | 219 _removeAllBreakpoints() { |
| 220 for (var element of this._breakpointElements.values()) | 220 for (var element of this._breakpointElements.values()) |
| 221 this._removeBreakpoint(element._node, element._type); | 221 this._removeBreakpoint(element._node, element._type); |
| 222 this._saveBreakpoints(); | 222 this._saveBreakpoints(); |
| 223 } | 223 } |
| 224 | 224 |
| 225 /** | 225 /** |
| 226 * @param {!WebInspector.DOMNode} node | 226 * @param {!SDK.DOMNode} node |
| 227 * @param {!Protocol.DOMDebugger.DOMBreakpointType} type | 227 * @param {!Protocol.DOMDebugger.DOMBreakpointType} type |
| 228 */ | 228 */ |
| 229 _removeBreakpoint(node, type) { | 229 _removeBreakpoint(node, type) { |
| 230 var breakpointId = this._createBreakpointId(node.id, type); | 230 var breakpointId = this._createBreakpointId(node.id, type); |
| 231 var element = this._breakpointElements.get(breakpointId); | 231 var element = this._breakpointElements.get(breakpointId); |
| 232 if (!element) | 232 if (!element) |
| 233 return; | 233 return; |
| 234 | 234 |
| 235 this.removeListElement(element); | 235 this.removeListElement(element); |
| 236 this._breakpointElements.delete(breakpointId); | 236 this._breakpointElements.delete(breakpointId); |
| 237 if (element._checkboxElement.checked) | 237 if (element._checkboxElement.checked) |
| 238 node.target().domdebuggerAgent().removeDOMBreakpoint(node.id, type); | 238 node.target().domdebuggerAgent().removeDOMBreakpoint(node.id, type); |
| 239 node.setMarker(WebInspector.DOMBreakpointsSidebarPane.Marker, this.hasBreakp
oints(node) ? true : null); | 239 node.setMarker(Components.DOMBreakpointsSidebarPane.Marker, this.hasBreakpoi
nts(node) ? true : null); |
| 240 } | 240 } |
| 241 | 241 |
| 242 /** | 242 /** |
| 243 * @param {!WebInspector.DOMNode} node | 243 * @param {!SDK.DOMNode} node |
| 244 * @param {!Protocol.DOMDebugger.DOMBreakpointType} type | 244 * @param {!Protocol.DOMDebugger.DOMBreakpointType} type |
| 245 * @param {!Event} event | 245 * @param {!Event} event |
| 246 */ | 246 */ |
| 247 _contextMenu(node, type, event) { | 247 _contextMenu(node, type, event) { |
| 248 var contextMenu = new WebInspector.ContextMenu(event); | 248 var contextMenu = new UI.ContextMenu(event); |
| 249 | 249 |
| 250 /** | 250 /** |
| 251 * @this {WebInspector.DOMBreakpointsSidebarPane} | 251 * @this {Components.DOMBreakpointsSidebarPane} |
| 252 */ | 252 */ |
| 253 function removeBreakpoint() { | 253 function removeBreakpoint() { |
| 254 this._removeBreakpoint(node, type); | 254 this._removeBreakpoint(node, type); |
| 255 this._saveBreakpoints(); | 255 this._saveBreakpoints(); |
| 256 } | 256 } |
| 257 contextMenu.appendItem(WebInspector.UIString.capitalize('Remove ^breakpoint'
), removeBreakpoint.bind(this)); | 257 contextMenu.appendItem(Common.UIString.capitalize('Remove ^breakpoint'), rem
oveBreakpoint.bind(this)); |
| 258 contextMenu.appendItem( | 258 contextMenu.appendItem( |
| 259 WebInspector.UIString.capitalize('Remove ^all DOM breakpoints'), this._r
emoveAllBreakpoints.bind(this)); | 259 Common.UIString.capitalize('Remove ^all DOM breakpoints'), this._removeA
llBreakpoints.bind(this)); |
| 260 contextMenu.show(); | 260 contextMenu.show(); |
| 261 } | 261 } |
| 262 | 262 |
| 263 /** | 263 /** |
| 264 * @param {!WebInspector.DOMNode} node | 264 * @param {!SDK.DOMNode} node |
| 265 * @param {!Protocol.DOMDebugger.DOMBreakpointType} type | 265 * @param {!Protocol.DOMDebugger.DOMBreakpointType} type |
| 266 * @param {!Event} event | 266 * @param {!Event} event |
| 267 */ | 267 */ |
| 268 _checkboxClicked(node, type, event) { | 268 _checkboxClicked(node, type, event) { |
| 269 if (event.target.checked) | 269 if (event.target.checked) |
| 270 node.target().domdebuggerAgent().setDOMBreakpoint(node.id, type); | 270 node.target().domdebuggerAgent().setDOMBreakpoint(node.id, type); |
| 271 else | 271 else |
| 272 node.target().domdebuggerAgent().removeDOMBreakpoint(node.id, type); | 272 node.target().domdebuggerAgent().removeDOMBreakpoint(node.id, type); |
| 273 this._saveBreakpoints(); | 273 this._saveBreakpoints(); |
| 274 } | 274 } |
| 275 | 275 |
| 276 /** | 276 /** |
| 277 * @override | 277 * @override |
| 278 * @param {?Object} object | 278 * @param {?Object} object |
| 279 */ | 279 */ |
| 280 flavorChanged(object) { | 280 flavorChanged(object) { |
| 281 this._update(); | 281 this._update(); |
| 282 } | 282 } |
| 283 | 283 |
| 284 _update() { | 284 _update() { |
| 285 var details = WebInspector.context.flavor(WebInspector.DebuggerPausedDetails
); | 285 var details = UI.context.flavor(SDK.DebuggerPausedDetails); |
| 286 if (!details || details.reason !== WebInspector.DebuggerModel.BreakReason.DO
M) { | 286 if (!details || details.reason !== SDK.DebuggerModel.BreakReason.DOM) { |
| 287 if (this._highlightedElement) { | 287 if (this._highlightedElement) { |
| 288 this._highlightedElement.classList.remove('breakpoint-hit'); | 288 this._highlightedElement.classList.remove('breakpoint-hit'); |
| 289 delete this._highlightedElement; | 289 delete this._highlightedElement; |
| 290 } | 290 } |
| 291 return; | 291 return; |
| 292 } | 292 } |
| 293 var auxData = details.auxData; | 293 var auxData = details.auxData; |
| 294 var breakpointId = this._createBreakpointId(auxData.nodeId, auxData.type); | 294 var breakpointId = this._createBreakpointId(auxData.nodeId, auxData.type); |
| 295 var element = this._breakpointElements.get(breakpointId); | 295 var element = this._breakpointElements.get(breakpointId); |
| 296 if (!element) | 296 if (!element) |
| 297 return; | 297 return; |
| 298 WebInspector.viewManager.showView('sources.domBreakpoints'); | 298 UI.viewManager.showView('sources.domBreakpoints'); |
| 299 element.classList.add('breakpoint-hit'); | 299 element.classList.add('breakpoint-hit'); |
| 300 this._highlightedElement = element; | 300 this._highlightedElement = element; |
| 301 } | 301 } |
| 302 | 302 |
| 303 /** | 303 /** |
| 304 * @param {number} nodeId | 304 * @param {number} nodeId |
| 305 * @param {!Protocol.DOMDebugger.DOMBreakpointType} type | 305 * @param {!Protocol.DOMDebugger.DOMBreakpointType} type |
| 306 */ | 306 */ |
| 307 _createBreakpointId(nodeId, type) { | 307 _createBreakpointId(nodeId, type) { |
| 308 return nodeId + ':' + type; | 308 return nodeId + ':' + type; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 320 breakpoints.push({ | 320 breakpoints.push({ |
| 321 url: this._inspectedURL, | 321 url: this._inspectedURL, |
| 322 path: element._node.path(), | 322 path: element._node.path(), |
| 323 type: element._type, | 323 type: element._type, |
| 324 enabled: element._checkboxElement.checked | 324 enabled: element._checkboxElement.checked |
| 325 }); | 325 }); |
| 326 this._domBreakpointsSetting.set(breakpoints); | 326 this._domBreakpointsSetting.set(breakpoints); |
| 327 } | 327 } |
| 328 | 328 |
| 329 /** | 329 /** |
| 330 * @param {!WebInspector.DOMDocument} domDocument | 330 * @param {!SDK.DOMDocument} domDocument |
| 331 */ | 331 */ |
| 332 restoreBreakpoints(domDocument) { | 332 restoreBreakpoints(domDocument) { |
| 333 this._breakpointElements.clear(); | 333 this._breakpointElements.clear(); |
| 334 this.reset(); | 334 this.reset(); |
| 335 this._inspectedURL = domDocument.documentURL; | 335 this._inspectedURL = domDocument.documentURL; |
| 336 var domModel = domDocument.domModel(); | 336 var domModel = domDocument.domModel(); |
| 337 /** @type {!Map<string, !Array<!Object>>} */ | 337 /** @type {!Map<string, !Array<!Object>>} */ |
| 338 var pathToBreakpoints = new Map(); | 338 var pathToBreakpoints = new Map(); |
| 339 | 339 |
| 340 /** | 340 /** |
| 341 * @param {string} path | 341 * @param {string} path |
| 342 * @param {?Protocol.DOM.NodeId} nodeId | 342 * @param {?Protocol.DOM.NodeId} nodeId |
| 343 * @this {WebInspector.DOMBreakpointsSidebarPane} | 343 * @this {Components.DOMBreakpointsSidebarPane} |
| 344 */ | 344 */ |
| 345 function didPushNodeByPathToFrontend(path, nodeId) { | 345 function didPushNodeByPathToFrontend(path, nodeId) { |
| 346 var node = nodeId ? domModel.nodeForId(nodeId) : null; | 346 var node = nodeId ? domModel.nodeForId(nodeId) : null; |
| 347 if (!node) | 347 if (!node) |
| 348 return; | 348 return; |
| 349 | 349 |
| 350 var breakpoints = pathToBreakpoints.get(path); | 350 var breakpoints = pathToBreakpoints.get(path); |
| 351 for (var i = 0; i < breakpoints.length; ++i) | 351 for (var i = 0; i < breakpoints.length; ++i) |
| 352 this._setBreakpoint(node, breakpoints[i].type, breakpoints[i].enabled); | 352 this._setBreakpoint(node, breakpoints[i].type, breakpoints[i].enabled); |
| 353 } | 353 } |
| 354 | 354 |
| 355 var breakpoints = this._domBreakpointsSetting.get(); | 355 var breakpoints = this._domBreakpointsSetting.get(); |
| 356 for (var i = 0; i < breakpoints.length; ++i) { | 356 for (var i = 0; i < breakpoints.length; ++i) { |
| 357 var breakpoint = breakpoints[i]; | 357 var breakpoint = breakpoints[i]; |
| 358 if (breakpoint.url !== this._inspectedURL) | 358 if (breakpoint.url !== this._inspectedURL) |
| 359 continue; | 359 continue; |
| 360 var path = breakpoint.path; | 360 var path = breakpoint.path; |
| 361 if (!pathToBreakpoints.has(path)) { | 361 if (!pathToBreakpoints.has(path)) { |
| 362 pathToBreakpoints.set(path, []); | 362 pathToBreakpoints.set(path, []); |
| 363 domModel.pushNodeByPathToFrontend(path, didPushNodeByPathToFrontend.bind
(this, path)); | 363 domModel.pushNodeByPathToFrontend(path, didPushNodeByPathToFrontend.bind
(this, path)); |
| 364 } | 364 } |
| 365 pathToBreakpoints.get(path).push(breakpoint); | 365 pathToBreakpoints.get(path).push(breakpoint); |
| 366 } | 366 } |
| 367 } | 367 } |
| 368 }; | 368 }; |
| 369 | 369 |
| 370 WebInspector.DOMBreakpointsSidebarPane.BreakpointTypes = { | 370 Components.DOMBreakpointsSidebarPane.BreakpointTypes = { |
| 371 SubtreeModified: 'subtree-modified', | 371 SubtreeModified: 'subtree-modified', |
| 372 AttributeModified: 'attribute-modified', | 372 AttributeModified: 'attribute-modified', |
| 373 NodeRemoved: 'node-removed' | 373 NodeRemoved: 'node-removed' |
| 374 }; | 374 }; |
| 375 | 375 |
| 376 WebInspector.DOMBreakpointsSidebarPane.BreakpointTypeLabels = { | 376 Components.DOMBreakpointsSidebarPane.BreakpointTypeLabels = { |
| 377 'subtree-modified': WebInspector.UIString('Subtree Modified'), | 377 'subtree-modified': Common.UIString('Subtree Modified'), |
| 378 'attribute-modified': WebInspector.UIString('Attribute Modified'), | 378 'attribute-modified': Common.UIString('Attribute Modified'), |
| 379 'node-removed': WebInspector.UIString('Node Removed') | 379 'node-removed': Common.UIString('Node Removed') |
| 380 }; | 380 }; |
| 381 | 381 |
| 382 WebInspector.DOMBreakpointsSidebarPane.BreakpointTypeNouns = { | 382 Components.DOMBreakpointsSidebarPane.BreakpointTypeNouns = { |
| 383 'subtree-modified': WebInspector.UIString('subtree modifications'), | 383 'subtree-modified': Common.UIString('subtree modifications'), |
| 384 'attribute-modified': WebInspector.UIString('attribute modifications'), | 384 'attribute-modified': Common.UIString('attribute modifications'), |
| 385 'node-removed': WebInspector.UIString('node removal') | 385 'node-removed': Common.UIString('node removal') |
| 386 }; | 386 }; |
| 387 | 387 |
| 388 WebInspector.DOMBreakpointsSidebarPane.Marker = 'breakpoint-marker'; | 388 Components.DOMBreakpointsSidebarPane.Marker = 'breakpoint-marker'; |
| 389 | 389 |
| 390 | 390 |
| 391 /** | 391 /** |
| 392 * @unrestricted | 392 * @unrestricted |
| 393 */ | 393 */ |
| 394 WebInspector.DOMBreakpointsSidebarPane.Proxy = class extends WebInspector.VBox { | 394 Components.DOMBreakpointsSidebarPane.Proxy = class extends UI.VBox { |
| 395 constructor() { | 395 constructor() { |
| 396 super(); | 396 super(); |
| 397 this.registerRequiredCSS('components/breakpointsList.css'); | 397 this.registerRequiredCSS('components/breakpointsList.css'); |
| 398 } | 398 } |
| 399 | 399 |
| 400 /** | 400 /** |
| 401 * @override | 401 * @override |
| 402 */ | 402 */ |
| 403 wasShown() { | 403 wasShown() { |
| 404 super.wasShown(); | 404 super.wasShown(); |
| 405 var pane = WebInspector.domBreakpointsSidebarPane; | 405 var pane = Components.domBreakpointsSidebarPane; |
| 406 if (pane.element.parentNode !== this.element) | 406 if (pane.element.parentNode !== this.element) |
| 407 pane.show(this.element); | 407 pane.show(this.element); |
| 408 } | 408 } |
| 409 }; | 409 }; |
| 410 | 410 |
| 411 /** | 411 /** |
| 412 * @type {!WebInspector.DOMBreakpointsSidebarPane} | 412 * @type {!Components.DOMBreakpointsSidebarPane} |
| 413 */ | 413 */ |
| 414 WebInspector.domBreakpointsSidebarPane; | 414 Components.domBreakpointsSidebarPane; |
| OLD | NEW |