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 18 matching lines...) Expand all Loading... |
29 */ | 29 */ |
30 | 30 |
31 /** | 31 /** |
32 * @constructor | 32 * @constructor |
33 * @extends {WebInspector.BreakpointsSidebarPaneBase} | 33 * @extends {WebInspector.BreakpointsSidebarPaneBase} |
34 * @implements {WebInspector.ContextFlavorListener} | 34 * @implements {WebInspector.ContextFlavorListener} |
35 */ | 35 */ |
36 WebInspector.DOMBreakpointsSidebarPane = function() | 36 WebInspector.DOMBreakpointsSidebarPane = function() |
37 { | 37 { |
38 WebInspector.BreakpointsSidebarPaneBase.call(this); | 38 WebInspector.BreakpointsSidebarPaneBase.call(this); |
| 39 this.registerRequiredCSS("components/breakpointsList.css"); |
39 this._domBreakpointsSetting = WebInspector.settings.createLocalSetting("domB
reakpoints", []); | 40 this._domBreakpointsSetting = WebInspector.settings.createLocalSetting("domB
reakpoints", []); |
40 this.listElement.classList.add("dom-breakpoints-list"); | 41 this.listElement.classList.add("dom-breakpoints-list"); |
41 | 42 |
42 this._breakpointElements = {}; | 43 /** @type {!Map<string, !Element>} */ |
| 44 this._breakpointElements = new Map(); |
43 | 45 |
44 this._breakpointTypes = { | 46 WebInspector.domBreakpointManager.addEventListener(WebInspector.DOMBreakpoin
tManager.Events.BreakpointsChanged, this._reloadBreakpointElements, this); |
45 SubtreeModified: "subtree-modified", | |
46 AttributeModified: "attribute-modified", | |
47 NodeRemoved: "node-removed" | |
48 }; | |
49 this._breakpointTypeLabels = {}; | |
50 this._breakpointTypeLabels[this._breakpointTypes.SubtreeModified] = WebInspe
ctor.UIString("Subtree Modified"); | |
51 this._breakpointTypeLabels[this._breakpointTypes.AttributeModified] = WebIns
pector.UIString("Attribute Modified"); | |
52 this._breakpointTypeLabels[this._breakpointTypes.NodeRemoved] = WebInspector
.UIString("Node Removed"); | |
53 | |
54 this._contextMenuLabels = {}; | |
55 this._contextMenuLabels[this._breakpointTypes.SubtreeModified] = WebInspecto
r.UIString.capitalize("Subtree ^modifications"); | |
56 this._contextMenuLabels[this._breakpointTypes.AttributeModified] = WebInspec
tor.UIString.capitalize("Attributes ^modifications"); | |
57 this._contextMenuLabels[this._breakpointTypes.NodeRemoved] = WebInspector.UI
String.capitalize("Node ^removal"); | |
58 | |
59 WebInspector.targetManager.addModelListener(WebInspector.DOMModel, WebInspec
tor.DOMModel.Events.NodeRemoved, this._nodeRemoved, this); | |
60 WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Event
s.InspectedURLChanged, this._inspectedURLChanged, this); | |
61 this._inspectedURL = WebInspector.targetManager.inspectedURL(); | |
62 this._update(); | 47 this._update(); |
| 48 this._reloadBreakpointElements(); |
63 } | 49 } |
64 | 50 |
65 WebInspector.DOMBreakpointsSidebarPane.Marker = "breakpoint-marker"; | |
66 | |
67 WebInspector.DOMBreakpointsSidebarPane.prototype = { | 51 WebInspector.DOMBreakpointsSidebarPane.prototype = { |
68 _inspectedURLChanged: function() | 52 _reloadBreakpointElements: function() |
69 { | 53 { |
70 this._breakpointElements = {}; | 54 this._breakpointElements.clear(); |
71 this.reset(); | 55 this.reset(); |
72 this._inspectedURL = WebInspector.targetManager.inspectedURL(); | 56 var breakpoints = WebInspector.domBreakpointManager.domBreakpoints(); |
73 }, | 57 for (var breakpoint of breakpoints) { |
74 | 58 var id = this._createBreakpointId(breakpoint.node.id, breakpoint.typ
e); |
75 /** | 59 this._breakpointElements.set(id, this._createBreakpointElement(break
point.node, breakpoint.type, breakpoint.enabled)); |
76 * @param {!WebInspector.DOMNode} node | |
77 * @param {!WebInspector.ContextMenu} contextMenu | |
78 * @param {boolean} createSubMenu | |
79 */ | |
80 populateNodeContextMenu: function(node, contextMenu, createSubMenu) | |
81 { | |
82 if (node.pseudoType()) | |
83 return; | |
84 | |
85 var nodeBreakpoints = this._nodeBreakpoints(node); | |
86 | |
87 /** | |
88 * @param {!DOMDebuggerAgent.DOMBreakpointType} type | |
89 * @this {WebInspector.DOMBreakpointsSidebarPane} | |
90 */ | |
91 function toggleBreakpoint(type) | |
92 { | |
93 if (!nodeBreakpoints[type]) | |
94 this._setBreakpoint(node, type, true); | |
95 else | |
96 this._removeBreakpoint(node, type); | |
97 this._saveBreakpoints(); | |
98 } | |
99 | |
100 var breakpointsMenu = createSubMenu ? contextMenu.appendSubMenuItem(WebI
nspector.UIString("Break on...")) : contextMenu; | |
101 for (var key in this._breakpointTypes) { | |
102 var type = this._breakpointTypes[key]; | |
103 var label = this._contextMenuLabels[type]; | |
104 breakpointsMenu.appendCheckboxItem(label, toggleBreakpoint.bind(this
, type), nodeBreakpoints[type]); | |
105 } | 60 } |
106 }, | 61 }, |
107 | 62 |
108 /** | |
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 | |
139 * @return {!Element} | |
140 */ | |
141 createBreakpointHitStatusMessage: function(details) | |
142 { | |
143 var auxData = /** @type {!Object} */ (details.auxData); | |
144 var message = "Paused on a \"%s\" breakpoint."; | |
145 var substitutions = []; | |
146 substitutions.push(this._breakpointTypeLabels[auxData["type"]]); | |
147 | |
148 var domModel = WebInspector.DOMModel.fromTarget(details.target()); | |
149 if (!domModel) | |
150 return WebInspector.formatLocalized(message, substitutions); | |
151 | |
152 var node = domModel.nodeForId(auxData["nodeId"]); | |
153 var linkifiedNode = WebInspector.DOMPresentationUtils.linkifyNodeReferen
ce(node); | |
154 substitutions.push(linkifiedNode); | |
155 | |
156 var targetNode = auxData["targetNodeId"] ? domModel.nodeForId(auxData["t
argetNodeId"]) : null; | |
157 var targetNodeLink = targetNode ? WebInspector.DOMPresentationUtils.link
ifyNodeReference(targetNode) : ""; | |
158 | |
159 if (auxData.type === this._breakpointTypes.SubtreeModified) { | |
160 if (auxData["insertion"]) { | |
161 if (targetNode !== node) { | |
162 message = "Paused on a \"%s\" breakpoint set on %s, because
a new child was added to its descendant %s."; | |
163 substitutions.push(targetNodeLink); | |
164 } else | |
165 message = "Paused on a \"%s\" breakpoint set on %s, because
a new child was added to that node."; | |
166 } else { | |
167 message = "Paused on a \"%s\" breakpoint set on %s, because its
descendant %s was removed."; | |
168 substitutions.push(targetNodeLink); | |
169 } | |
170 } else { | |
171 message = "Paused on a \"%s\" breakpoint set on %s."; | |
172 } | |
173 | |
174 return WebInspector.formatLocalized(message, substitutions); | |
175 }, | |
176 | |
177 _nodeRemoved: function(event) | |
178 { | |
179 var node = event.data.node; | |
180 this._removeBreakpointsForNode(event.data.node); | |
181 var children = node.children(); | |
182 if (!children) | |
183 return; | |
184 for (var i = 0; i < children.length; ++i) | |
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 } | |
199 }, | |
200 | |
201 /** | 63 /** |
202 * @param {!WebInspector.DOMNode} node | 64 * @param {!WebInspector.DOMNode} node |
203 * @param {!DOMDebuggerAgent.DOMBreakpointType} type | 65 * @param {!DOMDebuggerAgent.DOMBreakpointType} type |
204 * @param {boolean} enabled | 66 * @param {boolean} enabled |
205 */ | 67 */ |
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 | |
223 * @param {!DOMDebuggerAgent.DOMBreakpointType} type | |
224 * @param {boolean} enabled | |
225 */ | |
226 _createBreakpointElement: function(node, type, enabled) | 68 _createBreakpointElement: function(node, type, enabled) |
227 { | 69 { |
228 var element = createElement("li"); | 70 var element = createElement("li"); |
229 element._node = node; | 71 element._node = node; |
230 element._type = type; | 72 element._type = type; |
231 element.addEventListener("contextmenu", this._contextMenu.bind(this, nod
e, type), true); | 73 element.addEventListener("contextmenu", this._contextMenu.bind(this, nod
e, type), true); |
232 | 74 |
233 var checkboxLabel = createCheckboxLabel("", enabled); | 75 var checkboxLabel = createCheckboxLabel("", enabled); |
234 checkboxLabel.addEventListener("click", this._checkboxClicked.bind(this,
node, type), false); | 76 checkboxLabel.addEventListener("click", this._checkboxClicked.bind(this,
node, type), false); |
235 element._checkboxElement = checkboxLabel.checkboxElement; | 77 element._checkboxElement = checkboxLabel.checkboxElement; |
236 element.appendChild(checkboxLabel); | 78 element.appendChild(checkboxLabel); |
237 | 79 |
238 var labelElement = createElementWithClass("div", "dom-breakpoint"); | 80 var labelElement = createElementWithClass("div", "dom-breakpoint"); |
239 element.appendChild(labelElement); | 81 element.appendChild(labelElement); |
240 | 82 |
241 var linkifiedNode = WebInspector.DOMPresentationUtils.linkifyNodeReferen
ce(node); | 83 var linkifiedNode = WebInspector.DOMPresentationUtils.linkifyNodeReferen
ce(node); |
242 linkifiedNode.classList.add("monospace"); | 84 linkifiedNode.classList.add("monospace"); |
243 linkifiedNode.style.display = "block"; | 85 linkifiedNode.style.display = "block"; |
244 labelElement.appendChild(linkifiedNode); | 86 labelElement.appendChild(linkifiedNode); |
245 | 87 |
246 var description = createElement("div"); | 88 var description = createElement("div"); |
247 description.textContent = this._breakpointTypeLabels[type]; | 89 description.textContent = WebInspector.DOMBreakpointsSidebarPane.Breakpo
intTypeLabels[type]; |
248 labelElement.appendChild(description); | 90 labelElement.appendChild(description); |
249 | 91 |
250 var currentElement = this.listElement.firstChild; | 92 var currentElement = this.listElement.firstChild; |
251 while (currentElement) { | 93 while (currentElement) { |
252 if (currentElement._type && currentElement._type < element._type) | 94 if (currentElement._type && currentElement._type < element._type) |
253 break; | 95 break; |
254 currentElement = currentElement.nextSibling; | 96 currentElement = currentElement.nextSibling; |
255 } | 97 } |
256 this.addListElement(element, currentElement); | 98 this.addListElement(element, currentElement); |
257 return element; | 99 return element; |
258 }, | 100 }, |
259 | 101 |
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 /** | 102 /** |
270 * @param {!WebInspector.DOMNode} node | 103 * @param {!WebInspector.DOMNode} node |
271 * @param {!DOMDebuggerAgent.DOMBreakpointType} type | 104 * @param {!DOMDebuggerAgent.DOMBreakpointType} type |
| 105 * @param {!Event} event |
272 */ | 106 */ |
273 _removeBreakpoint: function(node, type) | 107 _checkboxClicked: function(node, type, event) |
274 { | 108 { |
275 var breakpointId = this._createBreakpointId(node.id, type); | 109 WebInspector.domBreakpointManager.setBreakpoint(node, type, event.target
["checkboxElement"].checked); |
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 }, | 110 }, |
286 | 111 |
287 /** | 112 /** |
288 * @param {!WebInspector.DOMNode} node | 113 * @param {!WebInspector.DOMNode} node |
289 * @param {!DOMDebuggerAgent.DOMBreakpointType} type | 114 * @param {!DOMDebuggerAgent.DOMBreakpointType} type |
290 * @param {!Event} event | 115 * @param {!Event} event |
291 */ | 116 */ |
292 _contextMenu: function(node, type, event) | 117 _contextMenu: function(node, type, event) |
293 { | 118 { |
294 var contextMenu = new WebInspector.ContextMenu(event); | 119 var contextMenu = new WebInspector.ContextMenu(event); |
295 | 120 var removeBreakpoint = () => WebInspector.domBreakpointManager.removeBre
akpoint(node, type); |
296 /** | 121 contextMenu.appendItem(WebInspector.UIString.capitalize("Remove ^breakpo
int"), removeBreakpoint); |
297 * @this {WebInspector.DOMBreakpointsSidebarPane} | 122 var removeAllBreakpoints = () => WebInspector.domBreakpointManager.remov
eAllBreakpoints(); |
298 */ | 123 contextMenu.appendItem(WebInspector.UIString.capitalize("Remove ^all DOM
breakpoints"), removeAllBreakpoints); |
299 function removeBreakpoint() | |
300 { | |
301 this._removeBreakpoint(node, type); | |
302 this._saveBreakpoints(); | |
303 } | |
304 contextMenu.appendItem(WebInspector.UIString.capitalize("Remove ^breakpo
int"), removeBreakpoint.bind(this)); | |
305 contextMenu.appendItem(WebInspector.UIString.capitalize("Remove ^all DOM
breakpoints"), this._removeAllBreakpoints.bind(this)); | |
306 contextMenu.show(); | 124 contextMenu.show(); |
307 }, | 125 }, |
308 | 126 |
309 /** | 127 /** |
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 /** | |
324 * @override | 128 * @override |
325 * @param {?Object} object | 129 * @param {?Object} object |
326 */ | 130 */ |
327 flavorChanged: function(object) | 131 flavorChanged: function(object) |
328 { | 132 { |
329 this._update(); | 133 this._update(); |
330 }, | 134 }, |
331 | 135 |
332 _update: function() | 136 _update: function() |
333 { | 137 { |
334 var details = WebInspector.context.flavor(WebInspector.DebuggerPausedDet
ails); | 138 var details = WebInspector.context.flavor(WebInspector.DebuggerPausedDet
ails); |
335 if (!details || details.reason !== WebInspector.DebuggerModel.BreakReaso
n.DOM) { | 139 if (!details || details.reason !== WebInspector.DebuggerModel.BreakReaso
n.DOM) { |
336 if (this._highlightedElement) { | 140 if (this._highlightedElement) { |
337 this._highlightedElement.classList.remove("breakpoint-hit"); | 141 this._highlightedElement.classList.remove("breakpoint-hit"); |
338 delete this._highlightedElement; | 142 delete this._highlightedElement; |
339 } | 143 } |
340 return; | 144 return; |
341 } | 145 } |
342 var auxData = details.auxData; | 146 var auxData = details.auxData; |
343 var breakpointId = this._createBreakpointId(auxData.nodeId, auxData.type
); | 147 var breakpointId = this._createBreakpointId(auxData.nodeId, auxData.type
); |
344 var element = this._breakpointElements[breakpointId]; | 148 var element = this._breakpointElements.get(breakpointId); |
345 if (!element) | 149 if (!element) |
346 return; | 150 return; |
347 WebInspector.viewManager.showView("sources.domBreakpoints"); | 151 WebInspector.viewManager.showView("sources.domBreakpoints"); |
348 element.classList.add("breakpoint-hit"); | 152 element.classList.add("breakpoint-hit"); |
349 this._highlightedElement = element; | 153 this._highlightedElement = element; |
350 }, | 154 }, |
351 | 155 |
352 /** | 156 /** |
353 * @param {number} nodeId | 157 * @param {number} nodeId |
354 * @param {!DOMDebuggerAgent.DOMBreakpointType} type | 158 * @param {!DOMDebuggerAgent.DOMBreakpointType} type |
| 159 * @return {string} |
355 */ | 160 */ |
356 _createBreakpointId: function(nodeId, type) | 161 _createBreakpointId: function(nodeId, type) |
357 { | 162 { |
358 return nodeId + ":" + type; | 163 return nodeId + ":" + type; |
359 }, | 164 }, |
360 | 165 |
361 _saveBreakpoints: function() | |
362 { | |
363 var breakpoints = []; | |
364 var storedBreakpoints = this._domBreakpointsSetting.get(); | |
365 for (var i = 0; i < storedBreakpoints.length; ++i) { | |
366 var breakpoint = storedBreakpoints[i]; | |
367 if (breakpoint.url !== this._inspectedURL) | |
368 breakpoints.push(breakpoint); | |
369 } | |
370 for (var id in this._breakpointElements) { | |
371 var element = this._breakpointElements[id]; | |
372 breakpoints.push({ url: this._inspectedURL, path: element._node.path
(), type: element._type, enabled: element._checkboxElement.checked }); | |
373 } | |
374 this._domBreakpointsSetting.set(breakpoints); | |
375 }, | |
376 | |
377 /** | |
378 * @param {!WebInspector.DOMModel} domModel | |
379 */ | |
380 restoreBreakpoints: function(domModel) | |
381 { | |
382 var pathToBreakpoints = {}; | |
383 | |
384 /** | |
385 * @param {string} path | |
386 * @param {?DOMAgent.NodeId} nodeId | |
387 * @this {WebInspector.DOMBreakpointsSidebarPane} | |
388 */ | |
389 function didPushNodeByPathToFrontend(path, nodeId) | |
390 { | |
391 var node = nodeId ? domModel.nodeForId(nodeId) : null; | |
392 if (!node) | |
393 return; | |
394 | |
395 var breakpoints = pathToBreakpoints[path]; | |
396 for (var i = 0; i < breakpoints.length; ++i) | |
397 this._setBreakpoint(node, breakpoints[i].type, breakpoints[i].en
abled); | |
398 } | |
399 | |
400 var breakpoints = this._domBreakpointsSetting.get(); | |
401 for (var i = 0; i < breakpoints.length; ++i) { | |
402 var breakpoint = breakpoints[i]; | |
403 if (breakpoint.url !== this._inspectedURL) | |
404 continue; | |
405 var path = breakpoint.path; | |
406 if (!pathToBreakpoints[path]) { | |
407 pathToBreakpoints[path] = []; | |
408 domModel.pushNodeByPathToFrontend(path, didPushNodeByPathToFront
end.bind(this, path)); | |
409 } | |
410 pathToBreakpoints[path].push(breakpoint); | |
411 } | |
412 }, | |
413 | |
414 __proto__: WebInspector.BreakpointsSidebarPaneBase.prototype | 166 __proto__: WebInspector.BreakpointsSidebarPaneBase.prototype |
415 } | 167 } |
416 | 168 |
417 /** | 169 WebInspector.DOMBreakpointsSidebarPane.BreakpointTypes = { |
418 * @constructor | 170 SubtreeModified: "subtree-modified", |
419 * @extends {WebInspector.VBox} | 171 AttributeModified: "attribute-modified", |
420 */ | 172 NodeRemoved: "node-removed" |
421 WebInspector.DOMBreakpointsSidebarPane.Proxy = function() | |
422 { | |
423 WebInspector.VBox.call(this); | |
424 this.registerRequiredCSS("components/breakpointsList.css"); | |
425 } | 173 } |
426 | 174 |
427 WebInspector.DOMBreakpointsSidebarPane.Proxy.prototype = { | 175 WebInspector.DOMBreakpointsSidebarPane.ContextMenuLabels = { |
428 wasShown: function() | 176 [WebInspector.DOMBreakpointsSidebarPane.BreakpointTypes.SubtreeModified]: We
bInspector.UIString.capitalize("Subtree ^modifications"), |
429 { | 177 [WebInspector.DOMBreakpointsSidebarPane.BreakpointTypes.AttributeModified]:
WebInspector.UIString.capitalize("Attributes ^modifications"), |
430 WebInspector.SimpleView.prototype.wasShown.call(this); | 178 [WebInspector.DOMBreakpointsSidebarPane.BreakpointTypes.NodeRemoved]: WebIns
pector.UIString.capitalize("Node ^removal") |
431 var pane = WebInspector.domBreakpointsSidebarPane; | |
432 if (pane.element.parentNode !== this.element) | |
433 pane.show(this.element); | |
434 }, | |
435 | |
436 __proto__: WebInspector.VBox.prototype | |
437 } | 179 } |
438 | 180 |
439 /** | 181 WebInspector.DOMBreakpointsSidebarPane.BreakpointTypeLabels = { |
440 * @type {!WebInspector.DOMBreakpointsSidebarPane} | 182 [WebInspector.DOMBreakpointsSidebarPane.BreakpointTypes.AttributeModified]:
WebInspector.UIString("Attribute Modified"), |
441 */ | 183 [WebInspector.DOMBreakpointsSidebarPane.BreakpointTypes.SubtreeModified]: We
bInspector.UIString("Subtree Modified"), |
442 WebInspector.domBreakpointsSidebarPane; | 184 [WebInspector.DOMBreakpointsSidebarPane.BreakpointTypes.NodeRemoved]: WebIns
pector.UIString("Node Removed") |
| 185 } |
OLD | NEW |