| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com> | 3 * Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com> |
| 4 * Copyright (C) 2009 Joseph Pecoraro | 4 * Copyright (C) 2009 Joseph Pecoraro |
| 5 * | 5 * |
| 6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
| 7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
| 8 * are met: | 8 * are met: |
| 9 * | 9 * |
| 10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY | 22 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY |
| 23 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 23 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
| 26 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| 28 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 29 */ | 29 */ |
| 30 /** | 30 /** |
| 31 * @implements {UI.Searchable} | 31 * @implements {UI.Searchable} |
| 32 * @implements {SDK.TargetManager.Observer} | 32 * @implements {SDK.SDKModelObserver<!SDK.DOMModel>} |
| 33 * @implements {UI.ViewLocationResolver} | 33 * @implements {UI.ViewLocationResolver} |
| 34 * @unrestricted | 34 * @unrestricted |
| 35 */ | 35 */ |
| 36 Elements.ElementsPanel = class extends UI.Panel { | 36 Elements.ElementsPanel = class extends UI.Panel { |
| 37 constructor() { | 37 constructor() { |
| 38 super('elements'); | 38 super('elements'); |
| 39 this.registerRequiredCSS('elements/elementsPanel.css'); | 39 this.registerRequiredCSS('elements/elementsPanel.css'); |
| 40 | 40 |
| 41 this._splitWidget = new UI.SplitWidget(true, true, 'elementsPanelSplitViewSt
ate', 325, 325); | 41 this._splitWidget = new UI.SplitWidget(true, true, 'elementsPanelSplitViewSt
ate', 325, 325); |
| 42 this._splitWidget.addEventListener( | 42 this._splitWidget.addEventListener( |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 | 74 |
| 75 this._stylesSidebarToolbar = this._createStylesSidebarToolbar(); | 75 this._stylesSidebarToolbar = this._createStylesSidebarToolbar(); |
| 76 | 76 |
| 77 Common.moduleSetting('sidebarPosition').addChangeListener(this._updateSideba
rPosition.bind(this)); | 77 Common.moduleSetting('sidebarPosition').addChangeListener(this._updateSideba
rPosition.bind(this)); |
| 78 this._updateSidebarPosition(); | 78 this._updateSidebarPosition(); |
| 79 | 79 |
| 80 /** @type {!Array.<!Elements.ElementsTreeOutline>} */ | 80 /** @type {!Array.<!Elements.ElementsTreeOutline>} */ |
| 81 this._treeOutlines = []; | 81 this._treeOutlines = []; |
| 82 /** @type {!Map<!Elements.ElementsTreeOutline, !Element>} */ | 82 /** @type {!Map<!Elements.ElementsTreeOutline, !Element>} */ |
| 83 this._treeOutlineHeaders = new Map(); | 83 this._treeOutlineHeaders = new Map(); |
| 84 SDK.targetManager.observeTargets(this); | 84 SDK.targetManager.observeModels(SDK.DOMModel, this); |
| 85 SDK.targetManager.addEventListener( | 85 SDK.targetManager.addEventListener( |
| 86 SDK.TargetManager.Events.NameChanged, | 86 SDK.TargetManager.Events.NameChanged, |
| 87 event => this._targetNameChanged(/** @type {!SDK.Target} */ (event.data)
)); | 87 event => this._targetNameChanged(/** @type {!SDK.Target} */ (event.data)
)); |
| 88 Common.moduleSetting('showUAShadowDOM').addChangeListener(this._showUAShadow
DOMChanged.bind(this)); | 88 Common.moduleSetting('showUAShadowDOM').addChangeListener(this._showUAShadow
DOMChanged.bind(this)); |
| 89 SDK.targetManager.addModelListener( | 89 SDK.targetManager.addModelListener( |
| 90 SDK.DOMModel, SDK.DOMModel.Events.DocumentUpdated, this._documentUpdated
Event, this); | 90 SDK.DOMModel, SDK.DOMModel.Events.DocumentUpdated, this._documentUpdated
Event, this); |
| 91 Extensions.extensionServer.addEventListener( | 91 Extensions.extensionServer.addEventListener( |
| 92 Extensions.ExtensionServer.Events.SidebarPaneAdded, this._extensionSideb
arPaneAdded, this); | 92 Extensions.ExtensionServer.Events.SidebarPaneAdded, this._extensionSideb
arPaneAdded, this); |
| 93 } | 93 } |
| 94 | 94 |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 200 | 200 |
| 201 if (this._pendingWidget !== undefined) { | 201 if (this._pendingWidget !== undefined) { |
| 202 this._startToolbarPaneAnimation(this._pendingWidget); | 202 this._startToolbarPaneAnimation(this._pendingWidget); |
| 203 delete this._pendingWidget; | 203 delete this._pendingWidget; |
| 204 } | 204 } |
| 205 } | 205 } |
| 206 } | 206 } |
| 207 | 207 |
| 208 /** | 208 /** |
| 209 * @override | 209 * @override |
| 210 * @param {!SDK.Target} target | 210 * @param {!SDK.DOMModel} domModel |
| 211 */ | 211 */ |
| 212 targetAdded(target) { | 212 modelAdded(domModel) { |
| 213 var domModel = SDK.DOMModel.fromTarget(target); | |
| 214 if (!domModel) | |
| 215 return; | |
| 216 var treeOutline = new Elements.ElementsTreeOutline(domModel, true, true); | 213 var treeOutline = new Elements.ElementsTreeOutline(domModel, true, true); |
| 217 treeOutline.setWordWrap(Common.moduleSetting('domWordWrap').get()); | 214 treeOutline.setWordWrap(Common.moduleSetting('domWordWrap').get()); |
| 218 treeOutline.wireToDOMModel(); | 215 treeOutline.wireToDOMModel(); |
| 219 treeOutline.addEventListener( | 216 treeOutline.addEventListener( |
| 220 Elements.ElementsTreeOutline.Events.SelectedNodeChanged, this._selectedN
odeChanged, this); | 217 Elements.ElementsTreeOutline.Events.SelectedNodeChanged, this._selectedN
odeChanged, this); |
| 221 treeOutline.addEventListener( | 218 treeOutline.addEventListener( |
| 222 Elements.ElementsTreeOutline.Events.ElementsTreeUpdated, this._updateBre
adcrumbIfNeeded, this); | 219 Elements.ElementsTreeOutline.Events.ElementsTreeUpdated, this._updateBre
adcrumbIfNeeded, this); |
| 223 new Elements.ElementsTreeElementHighlighter(treeOutline); | 220 new Elements.ElementsTreeElementHighlighter(treeOutline); |
| 224 this._treeOutlines.push(treeOutline); | 221 this._treeOutlines.push(treeOutline); |
| 225 if (target.parentTarget()) { | 222 if (domModel.target().parentTarget()) { |
| 226 this._treeOutlineHeaders.set(treeOutline, createElementWithClass('div', 'e
lements-tree-header')); | 223 this._treeOutlineHeaders.set(treeOutline, createElementWithClass('div', 'e
lements-tree-header')); |
| 227 this._targetNameChanged(target); | 224 this._targetNameChanged(domModel.target()); |
| 228 } | 225 } |
| 229 | 226 |
| 230 // Perform attach if necessary. | 227 // Perform attach if necessary. |
| 231 if (this.isShowing()) | 228 if (this.isShowing()) |
| 232 this.wasShown(); | 229 this.wasShown(); |
| 233 } | 230 } |
| 234 | 231 |
| 235 /** | 232 /** |
| 236 * @override | 233 * @override |
| 237 * @param {!SDK.Target} target | 234 * @param {!SDK.DOMModel} domModel |
| 238 */ | 235 */ |
| 239 targetRemoved(target) { | 236 modelRemoved(domModel) { |
| 240 var domModel = SDK.DOMModel.fromTarget(target); | |
| 241 if (!domModel) | |
| 242 return; | |
| 243 var treeOutline = Elements.ElementsTreeOutline.forDOMModel(domModel); | 237 var treeOutline = Elements.ElementsTreeOutline.forDOMModel(domModel); |
| 244 treeOutline.unwireFromDOMModel(); | 238 treeOutline.unwireFromDOMModel(); |
| 245 this._treeOutlines.remove(treeOutline); | 239 this._treeOutlines.remove(treeOutline); |
| 246 var header = this._treeOutlineHeaders.get(treeOutline); | 240 var header = this._treeOutlineHeaders.get(treeOutline); |
| 247 if (header) | 241 if (header) |
| 248 header.remove(); | 242 header.remove(); |
| 249 this._treeOutlineHeaders.delete(treeOutline); | 243 this._treeOutlineHeaders.delete(treeOutline); |
| 250 treeOutline.element.remove(); | 244 treeOutline.element.remove(); |
| 251 } | 245 } |
| 252 | 246 |
| 253 /** | 247 /** |
| 254 * @param {!SDK.Target} target | 248 * @param {!SDK.Target} target |
| 255 */ | 249 */ |
| 256 _targetNameChanged(target) { | 250 _targetNameChanged(target) { |
| 257 var domModel = SDK.DOMModel.fromTarget(target); | 251 var domModel = target.model(SDK.DOMModel); |
| 258 if (!domModel) | 252 if (!domModel) |
| 259 return; | 253 return; |
| 260 var treeOutline = Elements.ElementsTreeOutline.forDOMModel(domModel); | 254 var treeOutline = Elements.ElementsTreeOutline.forDOMModel(domModel); |
| 261 if (!treeOutline) | 255 if (!treeOutline) |
| 262 return; | 256 return; |
| 263 var header = this._treeOutlineHeaders.get(treeOutline); | 257 var header = this._treeOutlineHeaders.get(treeOutline); |
| 264 if (!header) | 258 if (!header) |
| 265 return; | 259 return; |
| 266 header.removeChildren(); | 260 header.removeChildren(); |
| 267 header.createChild('div', 'elements-tree-header-frame').textContent = Common
.UIString('Frame'); | 261 header.createChild('div', 'elements-tree-header-frame').textContent = Common
.UIString('Frame'); |
| (...skipping 740 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1008 /** | 1002 /** |
| 1009 * @param {function(undefined)} resolve | 1003 * @param {function(undefined)} resolve |
| 1010 * @param {function(!Error)} reject | 1004 * @param {function(!Error)} reject |
| 1011 */ | 1005 */ |
| 1012 function revealPromise(resolve, reject) { | 1006 function revealPromise(resolve, reject) { |
| 1013 if (node instanceof SDK.DOMNode) { | 1007 if (node instanceof SDK.DOMNode) { |
| 1014 onNodeResolved(/** @type {!SDK.DOMNode} */ (node)); | 1008 onNodeResolved(/** @type {!SDK.DOMNode} */ (node)); |
| 1015 } else if (node instanceof SDK.DeferredDOMNode) { | 1009 } else if (node instanceof SDK.DeferredDOMNode) { |
| 1016 (/** @type {!SDK.DeferredDOMNode} */ (node)).resolve(onNodeResolved); | 1010 (/** @type {!SDK.DeferredDOMNode} */ (node)).resolve(onNodeResolved); |
| 1017 } else if (node instanceof SDK.RemoteObject) { | 1011 } else if (node instanceof SDK.RemoteObject) { |
| 1018 var domModel = SDK.DOMModel.fromTarget(/** @type {!SDK.RemoteObject} */
(node).runtimeModel().target()); | 1012 var domModel = /** @type {!SDK.RemoteObject} */ (node).runtimeModel().ta
rget().model(SDK.DOMModel); |
| 1019 if (domModel) | 1013 if (domModel) |
| 1020 domModel.pushObjectAsNodeToFrontend(node).then(onNodeResolved); | 1014 domModel.pushObjectAsNodeToFrontend(node).then(onNodeResolved); |
| 1021 else | 1015 else |
| 1022 reject(new Error('Could not resolve a node to reveal.')); | 1016 reject(new Error('Could not resolve a node to reveal.')); |
| 1023 } else { | 1017 } else { |
| 1024 reject(new Error('Can\'t reveal a non-node.')); | 1018 reject(new Error('Can\'t reveal a non-node.')); |
| 1025 panel._pendingNodeReveal = false; | 1019 panel._pendingNodeReveal = false; |
| 1026 } | 1020 } |
| 1027 | 1021 |
| 1028 /** | 1022 /** |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1099 * @param {!SDK.DOMNode} node | 1093 * @param {!SDK.DOMNode} node |
| 1100 * @return {?{title: string, color: string}} | 1094 * @return {?{title: string, color: string}} |
| 1101 */ | 1095 */ |
| 1102 decorate(node) { | 1096 decorate(node) { |
| 1103 return { | 1097 return { |
| 1104 color: 'orange', | 1098 color: 'orange', |
| 1105 title: Common.UIString('Element state: %s', ':' + node.domModel().cssModel
().pseudoState(node).join(', :')) | 1099 title: Common.UIString('Element state: %s', ':' + node.domModel().cssModel
().pseudoState(node).join(', :')) |
| 1106 }; | 1100 }; |
| 1107 } | 1101 } |
| 1108 }; | 1102 }; |
| OLD | NEW |