Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/components/DOMBreakpointsSidebarPane.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/components/DOMBreakpointsSidebarPane.js b/third_party/WebKit/Source/devtools/front_end/components/DOMBreakpointsSidebarPane.js |
| index ad6cfe6c201a6d81d3ca7f92b5ca128d154e7f57..42654145de2d4c71d8d5678a69f01c64e2bd5682 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/components/DOMBreakpointsSidebarPane.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/components/DOMBreakpointsSidebarPane.js |
| @@ -39,7 +39,8 @@ WebInspector.DOMBreakpointsSidebarPane = function() |
| this._domBreakpointsSetting = WebInspector.settings.createLocalSetting("domBreakpoints", []); |
| this.listElement.classList.add("dom-breakpoints-list"); |
| - this._breakpointElements = {}; |
| + /** @type {!Map<string, !Element>} */ |
| + this._breakpointElements = new Map(); |
| this._breakpointTypes = { |
| SubtreeModified: "subtree-modified", |
| @@ -81,7 +82,7 @@ WebInspector.DOMBreakpointsSidebarPane.prototype = { |
| */ |
| function toggleBreakpoint(type) |
| { |
| - if (!nodeBreakpoints[type]) |
| + if (!nodeBreakpoints.has(type)) |
| this._setBreakpoint(node, type, true); |
| else |
| this._removeBreakpoint(node, type); |
| @@ -92,21 +93,21 @@ WebInspector.DOMBreakpointsSidebarPane.prototype = { |
| for (var key in this._breakpointTypes) { |
| var type = this._breakpointTypes[key]; |
| var label = this._contextMenuLabels[type]; |
| - breakpointsMenu.appendCheckboxItem(label, toggleBreakpoint.bind(this, type), nodeBreakpoints[type]); |
| + breakpointsMenu.appendCheckboxItem(label, toggleBreakpoint.bind(this, type), nodeBreakpoints.has(type)); |
| } |
| }, |
| /** |
| * @param {!WebInspector.DOMNode} node |
| - * @return {!Object<string, boolean>} |
| + * @return {!Set<!DOMDebuggerAgent.DOMBreakpointType>} |
| */ |
| _nodeBreakpoints: function(node) |
| { |
| - var nodeBreakpoints = {}; |
| - for (var id in this._breakpointElements) { |
| - var element = this._breakpointElements[id]; |
| + /** @type {!Set<!DOMDebuggerAgent.DOMBreakpointType>} */ |
| + var nodeBreakpoints = new Set(); |
| + for (var element of this._breakpointElements.values()) { |
| if (element._node === node && element._checkboxElement.checked) |
| - nodeBreakpoints[element._type] = true; |
| + nodeBreakpoints.add(element._type); |
| } |
| return nodeBreakpoints; |
| }, |
| @@ -117,8 +118,7 @@ WebInspector.DOMBreakpointsSidebarPane.prototype = { |
| */ |
| hasBreakpoints: function(node) |
| { |
| - for (var id in this._breakpointElements) { |
| - var element = this._breakpointElements[id]; |
| + for (var element of this._breakpointElements.values()) { |
| if (element._node === node && element._checkboxElement.checked) |
| return true; |
| } |
| @@ -182,8 +182,7 @@ WebInspector.DOMBreakpointsSidebarPane.prototype = { |
| */ |
| _removeBreakpointsForNode: function(node) |
| { |
| - for (var id in this._breakpointElements) { |
| - var element = this._breakpointElements[id]; |
| + for (var element of this._breakpointElements.values()) { |
| if (element._node === node) |
| this._removeBreakpoint(element._node, element._type); |
| } |
| @@ -197,10 +196,10 @@ WebInspector.DOMBreakpointsSidebarPane.prototype = { |
| _setBreakpoint: function(node, type, enabled) |
| { |
| var breakpointId = this._createBreakpointId(node.id, type); |
| - var breakpointElement = this._breakpointElements[breakpointId]; |
| + var breakpointElement = this._breakpointElements.get(breakpointId); |
| if (!breakpointElement) { |
| breakpointElement = this._createBreakpointElement(node, type, enabled); |
| - this._breakpointElements[breakpointId] = breakpointElement; |
| + this._breakpointElements.set(breakpointId, breakpointElement); |
| } else { |
| breakpointElement._checkboxElement.checked = enabled; |
| } |
| @@ -251,10 +250,8 @@ WebInspector.DOMBreakpointsSidebarPane.prototype = { |
| _removeAllBreakpoints: function() |
| { |
| - for (var id in this._breakpointElements) { |
| - var element = this._breakpointElements[id]; |
| + for (var element of this._breakpointElements.values()) |
| this._removeBreakpoint(element._node, element._type); |
| - } |
| this._saveBreakpoints(); |
| }, |
| @@ -265,12 +262,12 @@ WebInspector.DOMBreakpointsSidebarPane.prototype = { |
| _removeBreakpoint: function(node, type) |
| { |
| var breakpointId = this._createBreakpointId(node.id, type); |
| - var element = this._breakpointElements[breakpointId]; |
| + var element = this._breakpointElements.get(breakpointId); |
| if (!element) |
| return; |
| this.removeListElement(element); |
| - delete this._breakpointElements[breakpointId]; |
| + this._breakpointElements.delete(breakpointId); |
| if (element._checkboxElement.checked) |
| node.target().domdebuggerAgent().removeDOMBreakpoint(node.id, type); |
| node.setMarker(WebInspector.DOMBreakpointsSidebarPane.Marker, this.hasBreakpoints(node) ? true : null); |
| @@ -333,7 +330,7 @@ WebInspector.DOMBreakpointsSidebarPane.prototype = { |
| } |
| var auxData = details.auxData; |
| var breakpointId = this._createBreakpointId(auxData.nodeId, auxData.type); |
|
lushnikov
2016/08/29 22:19:30
let's get rid of this _createBreakpointId in a fol
|
| - var element = this._breakpointElements[breakpointId]; |
| + var element = this._breakpointElements.get(breakpointId); |
| if (!element) |
| return; |
| WebInspector.viewManager.showView("sources.domBreakpoints"); |
| @@ -359,10 +356,8 @@ WebInspector.DOMBreakpointsSidebarPane.prototype = { |
| if (breakpoint.url !== this._inspectedURL) |
| breakpoints.push(breakpoint); |
| } |
| - for (var id in this._breakpointElements) { |
| - var element = this._breakpointElements[id]; |
| + for (var element of this._breakpointElements.values()) |
| breakpoints.push({ url: this._inspectedURL, path: element._node.path(), type: element._type, enabled: element._checkboxElement.checked }); |
| - } |
| this._domBreakpointsSetting.set(breakpoints); |
| }, |
| @@ -371,11 +366,12 @@ WebInspector.DOMBreakpointsSidebarPane.prototype = { |
| */ |
| restoreBreakpoints: function(domDocument) |
| { |
| - this._breakpointElements = {}; |
| + this._breakpointElements.clear(); |
| this.reset(); |
| this._inspectedURL = domDocument.documentURL; |
| var domModel = domDocument.domModel(); |
| - var pathToBreakpoints = {}; |
| + /** @type {!Map<string, !Array<!Object>>} */ |
|
chenwilliam
2016/08/29 20:10:43
I'm planning on improving this type annotation by
|
| + var pathToBreakpoints = new Map(); |
| /** |
| * @param {string} path |
| @@ -388,7 +384,7 @@ WebInspector.DOMBreakpointsSidebarPane.prototype = { |
| if (!node) |
| return; |
| - var breakpoints = pathToBreakpoints[path]; |
| + var breakpoints = pathToBreakpoints.get(path); |
| for (var i = 0; i < breakpoints.length; ++i) |
| this._setBreakpoint(node, breakpoints[i].type, breakpoints[i].enabled); |
| } |
| @@ -399,11 +395,11 @@ WebInspector.DOMBreakpointsSidebarPane.prototype = { |
| if (breakpoint.url !== this._inspectedURL) |
| continue; |
| var path = breakpoint.path; |
| - if (!pathToBreakpoints[path]) { |
| - pathToBreakpoints[path] = []; |
| + if (!pathToBreakpoints.has(path)) { |
| + pathToBreakpoints.set(path, []); |
| domModel.pushNodeByPathToFrontend(path, didPushNodeByPathToFrontend.bind(this, path)); |
| } |
| - pathToBreakpoints[path].push(breakpoint); |
| + pathToBreakpoints.get(path).push(breakpoint); |
| } |
| }, |