Index: Source/devtools/front_end/DOMAgent.js |
diff --git a/Source/devtools/front_end/DOMAgent.js b/Source/devtools/front_end/DOMAgent.js |
deleted file mode 100644 |
index 3f2e5ff5c4414fbd92069a3b1fbc80cea216a1db..0000000000000000000000000000000000000000 |
--- a/Source/devtools/front_end/DOMAgent.js |
+++ /dev/null |
@@ -1,1689 +0,0 @@ |
-/* |
- * Copyright (C) 2009, 2010 Google Inc. All rights reserved. |
- * Copyright (C) 2009 Joseph Pecoraro |
- * |
- * Redistribution and use in source and binary forms, with or without |
- * modification, are permitted provided that the following conditions are |
- * met: |
- * |
- * * Redistributions of source code must retain the above copyright |
- * notice, this list of conditions and the following disclaimer. |
- * * Redistributions in binary form must reproduce the above |
- * copyright notice, this list of conditions and the following disclaimer |
- * in the documentation and/or other materials provided with the |
- * distribution. |
- * * Neither the name of Google Inc. nor the names of its |
- * contributors may be used to endorse or promote products derived from |
- * this software without specific prior written permission. |
- * |
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- */ |
- |
-/** |
- * @constructor |
- * @param {!WebInspector.DOMAgent} domAgent |
- * @param {?WebInspector.DOMDocument} doc |
- * @param {boolean} isInShadowTree |
- * @param {!DOMAgent.Node} payload |
- */ |
-WebInspector.DOMNode = function(domAgent, doc, isInShadowTree, payload) { |
- this._domAgent = domAgent; |
- this.ownerDocument = doc; |
- this._isInShadowTree = isInShadowTree; |
- |
- this.id = payload.nodeId; |
- domAgent._idToDOMNode[this.id] = this; |
- this._nodeType = payload.nodeType; |
- this._nodeName = payload.nodeName; |
- this._localName = payload.localName; |
- this._nodeValue = payload.nodeValue; |
- this._pseudoType = payload.pseudoType; |
- this._shadowRootType = payload.shadowRootType; |
- this._frameId = payload.frameId || null; |
- |
- this._shadowRoots = []; |
- |
- this._attributes = []; |
- this._attributesMap = {}; |
- if (payload.attributes) |
- this._setAttributesPayload(payload.attributes); |
- |
- this._userProperties = {}; |
- this._descendantUserPropertyCounters = {}; |
- |
- this._childNodeCount = payload.childNodeCount || 0; |
- this._children = null; |
- |
- this.nextSibling = null; |
- this.previousSibling = null; |
- this.firstChild = null; |
- this.lastChild = null; |
- this.parentNode = null; |
- |
- if (payload.shadowRoots) { |
- for (var i = 0; i < payload.shadowRoots.length; ++i) { |
- var root = payload.shadowRoots[i]; |
- var node = new WebInspector.DOMNode(this._domAgent, this.ownerDocument, true, root); |
- this._shadowRoots.push(node); |
- node.parentNode = this; |
- } |
- } |
- |
- if (payload.templateContent) { |
- this._templateContent = new WebInspector.DOMNode(this._domAgent, this.ownerDocument, true, payload.templateContent); |
- this._templateContent.parentNode = this; |
- } |
- |
- if (payload.importedDocument) { |
- this._importedDocument = new WebInspector.DOMNode(this._domAgent, this.ownerDocument, true, payload.importedDocument); |
- this._importedDocument.parentNode = this; |
- } |
- |
- if (payload.children) |
- this._setChildrenPayload(payload.children); |
- |
- this._setPseudoElements(payload.pseudoElements); |
- |
- if (payload.contentDocument) { |
- this._contentDocument = new WebInspector.DOMDocument(domAgent, payload.contentDocument); |
- this._children = [this._contentDocument]; |
- this._renumber(); |
- } |
- |
- if (this._nodeType === Node.ELEMENT_NODE) { |
- // HTML and BODY from internal iframes should not overwrite top-level ones. |
- if (this.ownerDocument && !this.ownerDocument.documentElement && this._nodeName === "HTML") |
- this.ownerDocument.documentElement = this; |
- if (this.ownerDocument && !this.ownerDocument.body && this._nodeName === "BODY") |
- this.ownerDocument.body = this; |
- } else if (this._nodeType === Node.DOCUMENT_TYPE_NODE) { |
- this.publicId = payload.publicId; |
- this.systemId = payload.systemId; |
- this.internalSubset = payload.internalSubset; |
- } else if (this._nodeType === Node.ATTRIBUTE_NODE) { |
- this.name = payload.name; |
- this.value = payload.value; |
- } |
-} |
- |
-/** |
- * @enum {string} |
- */ |
-WebInspector.DOMNode.PseudoElementNames = { |
- Before: "before", |
- After: "after" |
-} |
- |
-/** |
- * @enum {string} |
- */ |
-WebInspector.DOMNode.ShadowRootTypes = { |
- UserAgent: "user-agent", |
- Author: "author" |
-} |
- |
-WebInspector.DOMNode.prototype = { |
- /** |
- * @return {?Array.<!WebInspector.DOMNode>} |
- */ |
- children: function() |
- { |
- return this._children ? this._children.slice() : null; |
- }, |
- |
- /** |
- * @return {boolean} |
- */ |
- hasAttributes: function() |
- { |
- return this._attributes.length > 0; |
- }, |
- |
- /** |
- * @return {number} |
- */ |
- childNodeCount: function() |
- { |
- return this._childNodeCount; |
- }, |
- |
- /** |
- * @return {boolean} |
- */ |
- hasShadowRoots: function() |
- { |
- return !!this._shadowRoots.length; |
- }, |
- |
- /** |
- * @return {!Array.<!WebInspector.DOMNode>} |
- */ |
- shadowRoots: function() |
- { |
- return this._shadowRoots.slice(); |
- }, |
- |
- /** |
- * @return {?WebInspector.DOMNode} |
- */ |
- templateContent: function() |
- { |
- return this._templateContent; |
- }, |
- |
- /** |
- * @return {?WebInspector.DOMNode} |
- */ |
- importedDocument: function() |
- { |
- return this._importedDocument; |
- }, |
- |
- /** |
- * @return {number} |
- */ |
- nodeType: function() |
- { |
- return this._nodeType; |
- }, |
- |
- /** |
- * @return {string} |
- */ |
- nodeName: function() |
- { |
- return this._nodeName; |
- }, |
- |
- /** |
- * @return {string|undefined} |
- */ |
- pseudoType: function() |
- { |
- return this._pseudoType; |
- }, |
- |
- /** |
- * @return {boolean} |
- */ |
- hasPseudoElements: function() |
- { |
- return Object.keys(this._pseudoElements).length !== 0; |
- }, |
- |
- /** |
- * @return {!Object.<string, !WebInspector.DOMNode>} |
- */ |
- pseudoElements: function() |
- { |
- return this._pseudoElements; |
- }, |
- |
- /** |
- * @return {boolean} |
- */ |
- isInShadowTree: function() |
- { |
- return this._isInShadowTree; |
- }, |
- |
- /** |
- * @return {?WebInspector.DOMNode} |
- */ |
- ancestorUserAgentShadowRoot: function() |
- { |
- if (!this._isInShadowTree) |
- return null; |
- |
- var current = this; |
- while (!current.isShadowRoot()) |
- current = current.parentNode; |
- return current.shadowRootType() === WebInspector.DOMNode.ShadowRootTypes.UserAgent ? current : null; |
- }, |
- |
- /** |
- * @return {boolean} |
- */ |
- isShadowRoot: function() |
- { |
- return !!this._shadowRootType; |
- }, |
- |
- /** |
- * @return {?string} |
- */ |
- shadowRootType: function() |
- { |
- return this._shadowRootType || null; |
- }, |
- |
- /** |
- * @return {string} |
- */ |
- nodeNameInCorrectCase: function() |
- { |
- var shadowRootType = this.shadowRootType(); |
- if (shadowRootType) |
- return "#shadow-root" + (shadowRootType === WebInspector.DOMNode.ShadowRootTypes.UserAgent ? " (user-agent)" : ""); |
- return this.isXMLNode() ? this.nodeName() : this.nodeName().toLowerCase(); |
- }, |
- |
- /** |
- * @param {string} name |
- * @param {function(?Protocol.Error)=} callback |
- */ |
- setNodeName: function(name, callback) |
- { |
- DOMAgent.setNodeName(this.id, name, WebInspector.domAgent._markRevision(this, callback)); |
- }, |
- |
- /** |
- * @return {string} |
- */ |
- localName: function() |
- { |
- return this._localName; |
- }, |
- |
- /** |
- * @return {string} |
- */ |
- nodeValue: function() |
- { |
- return this._nodeValue; |
- }, |
- |
- /** |
- * @param {string} value |
- * @param {function(?Protocol.Error)=} callback |
- */ |
- setNodeValue: function(value, callback) |
- { |
- DOMAgent.setNodeValue(this.id, value, WebInspector.domAgent._markRevision(this, callback)); |
- }, |
- |
- /** |
- * @param {string} name |
- * @return {string} |
- */ |
- getAttribute: function(name) |
- { |
- var attr = this._attributesMap[name]; |
- return attr ? attr.value : undefined; |
- }, |
- |
- /** |
- * @param {string} name |
- * @param {string} text |
- * @param {function(?Protocol.Error)=} callback |
- */ |
- setAttribute: function(name, text, callback) |
- { |
- DOMAgent.setAttributesAsText(this.id, text, name, WebInspector.domAgent._markRevision(this, callback)); |
- }, |
- |
- /** |
- * @param {string} name |
- * @param {string} value |
- * @param {function(?Protocol.Error)=} callback |
- */ |
- setAttributeValue: function(name, value, callback) |
- { |
- DOMAgent.setAttributeValue(this.id, name, value, WebInspector.domAgent._markRevision(this, callback)); |
- }, |
- |
- /** |
- * @return {!Object} |
- */ |
- attributes: function() |
- { |
- return this._attributes; |
- }, |
- |
- /** |
- * @param {string} name |
- * @param {function(?Protocol.Error)=} callback |
- */ |
- removeAttribute: function(name, callback) |
- { |
- /** |
- * @param {?Protocol.Error} error |
- * @this {WebInspector.DOMNode} |
- */ |
- function mycallback(error) |
- { |
- if (!error) { |
- delete this._attributesMap[name]; |
- for (var i = 0; i < this._attributes.length; ++i) { |
- if (this._attributes[i].name === name) { |
- this._attributes.splice(i, 1); |
- break; |
- } |
- } |
- } |
- |
- WebInspector.domAgent._markRevision(this, callback)(error); |
- } |
- DOMAgent.removeAttribute(this.id, name, mycallback.bind(this)); |
- }, |
- |
- /** |
- * @param {function(?Array.<!WebInspector.DOMNode>)=} callback |
- */ |
- getChildNodes: function(callback) |
- { |
- if (this._children) { |
- if (callback) |
- callback(this.children()); |
- return; |
- } |
- |
- /** |
- * @this {WebInspector.DOMNode} |
- * @param {?Protocol.Error} error |
- */ |
- function mycallback(error) |
- { |
- if (callback) |
- callback(error ? null : this.children()); |
- } |
- |
- DOMAgent.requestChildNodes(this.id, undefined, mycallback.bind(this)); |
- }, |
- |
- /** |
- * @param {number} depth |
- * @param {function(?Array.<!WebInspector.DOMNode>)=} callback |
- */ |
- getSubtree: function(depth, callback) |
- { |
- /** |
- * @this {WebInspector.DOMNode} |
- * @param {?Protocol.Error} error |
- */ |
- function mycallback(error) |
- { |
- if (callback) |
- callback(error ? null : this._children); |
- } |
- |
- DOMAgent.requestChildNodes(this.id, depth, mycallback.bind(this)); |
- }, |
- |
- /** |
- * @param {function(?Protocol.Error)=} callback |
- */ |
- getOuterHTML: function(callback) |
- { |
- DOMAgent.getOuterHTML(this.id, callback); |
- }, |
- |
- /** |
- * @param {string} html |
- * @param {function(?Protocol.Error)=} callback |
- */ |
- setOuterHTML: function(html, callback) |
- { |
- DOMAgent.setOuterHTML(this.id, html, WebInspector.domAgent._markRevision(this, callback)); |
- }, |
- |
- /** |
- * @param {function(?Protocol.Error, !DOMAgent.NodeId=)=} callback |
- */ |
- removeNode: function(callback) |
- { |
- DOMAgent.removeNode(this.id, WebInspector.domAgent._markRevision(this, callback)); |
- }, |
- |
- copyNode: function() |
- { |
- function copy(error, text) |
- { |
- if (!error) |
- InspectorFrontendHost.copyText(text); |
- } |
- DOMAgent.getOuterHTML(this.id, copy); |
- }, |
- |
- /** |
- * @param {string} objectGroupId |
- * @param {function(?Protocol.Error)=} callback |
- */ |
- eventListeners: function(objectGroupId, callback) |
- { |
- DOMAgent.getEventListenersForNode(this.id, objectGroupId, callback); |
- }, |
- |
- /** |
- * @return {string} |
- */ |
- path: function() |
- { |
- /** |
- * @param {?WebInspector.DOMNode} node |
- */ |
- function canPush(node) |
- { |
- return node && ("index" in node || (node.isShadowRoot() && node.parentNode)) && node._nodeName.length; |
- } |
- |
- var path = []; |
- var node = this; |
- while (canPush(node)) { |
- var index = typeof node.index === "number" ? node.index : (node.shadowRootType() === WebInspector.DOMNode.ShadowRootTypes.UserAgent ? "u" : "a"); |
- path.push([index, node._nodeName]); |
- node = node.parentNode; |
- } |
- path.reverse(); |
- return path.join(","); |
- }, |
- |
- /** |
- * @param {!WebInspector.DOMNode} node |
- * @return {boolean} |
- */ |
- isAncestor: function(node) |
- { |
- if (!node) |
- return false; |
- |
- var currentNode = node.parentNode; |
- while (currentNode) { |
- if (this === currentNode) |
- return true; |
- currentNode = currentNode.parentNode; |
- } |
- return false; |
- }, |
- |
- /** |
- * @param {!WebInspector.DOMNode} descendant |
- * @return {boolean} |
- */ |
- isDescendant: function(descendant) |
- { |
- return descendant !== null && descendant.isAncestor(this); |
- }, |
- |
- /** |
- * @return {?PageAgent.FrameId} |
- */ |
- frameId: function() |
- { |
- var node = this; |
- while (!node._frameId && node.parentNode) |
- node = node.parentNode; |
- return node._frameId; |
- }, |
- |
- /** |
- * @param {!Array.<string>} attrs |
- * @return {boolean} |
- */ |
- _setAttributesPayload: function(attrs) |
- { |
- var attributesChanged = !this._attributes || attrs.length !== this._attributes.length * 2; |
- var oldAttributesMap = this._attributesMap || {}; |
- |
- this._attributes = []; |
- this._attributesMap = {}; |
- |
- for (var i = 0; i < attrs.length; i += 2) { |
- var name = attrs[i]; |
- var value = attrs[i + 1]; |
- this._addAttribute(name, value); |
- |
- if (attributesChanged) |
- continue; |
- |
- if (!oldAttributesMap[name] || oldAttributesMap[name].value !== value) |
- attributesChanged = true; |
- } |
- return attributesChanged; |
- }, |
- |
- /** |
- * @param {!WebInspector.DOMNode} prev |
- * @param {!DOMAgent.Node} payload |
- * @return {!WebInspector.DOMNode} |
- */ |
- _insertChild: function(prev, payload) |
- { |
- var node = new WebInspector.DOMNode(this._domAgent, this.ownerDocument, this._isInShadowTree, payload); |
- this._children.splice(this._children.indexOf(prev) + 1, 0, node); |
- this._renumber(); |
- return node; |
- }, |
- |
- /** |
- * @param {!WebInspector.DOMNode} node |
- */ |
- _removeChild: function(node) |
- { |
- if (node.pseudoType()) { |
- delete this._pseudoElements[node.pseudoType()]; |
- } else { |
- var shadowRootIndex = this._shadowRoots.indexOf(node); |
- if (shadowRootIndex !== -1) |
- this._shadowRoots.splice(shadowRootIndex, 1); |
- else |
- this._children.splice(this._children.indexOf(node), 1); |
- } |
- node.parentNode = null; |
- node._updateChildUserPropertyCountsOnRemoval(this); |
- this._renumber(); |
- }, |
- |
- /** |
- * @param {!Array.<!DOMAgent.Node>} payloads |
- */ |
- _setChildrenPayload: function(payloads) |
- { |
- // We set children in the constructor. |
- if (this._contentDocument) |
- return; |
- |
- this._children = []; |
- for (var i = 0; i < payloads.length; ++i) { |
- var payload = payloads[i]; |
- var node = new WebInspector.DOMNode(this._domAgent, this.ownerDocument, this._isInShadowTree, payload); |
- this._children.push(node); |
- } |
- this._renumber(); |
- }, |
- |
- /** |
- * @param {!Array.<!DOMAgent.Node>|undefined} payloads |
- */ |
- _setPseudoElements: function(payloads) |
- { |
- this._pseudoElements = {}; |
- if (!payloads) |
- return; |
- |
- for (var i = 0; i < payloads.length; ++i) { |
- var node = new WebInspector.DOMNode(this._domAgent, this.ownerDocument, this._isInShadowTree, payloads[i]); |
- node.parentNode = this; |
- this._pseudoElements[node.pseudoType()] = node; |
- } |
- }, |
- |
- _renumber: function() |
- { |
- this._childNodeCount = this._children.length; |
- if (this._childNodeCount == 0) { |
- this.firstChild = null; |
- this.lastChild = null; |
- return; |
- } |
- this.firstChild = this._children[0]; |
- this.lastChild = this._children[this._childNodeCount - 1]; |
- for (var i = 0; i < this._childNodeCount; ++i) { |
- var child = this._children[i]; |
- child.index = i; |
- child.nextSibling = i + 1 < this._childNodeCount ? this._children[i + 1] : null; |
- child.previousSibling = i - 1 >= 0 ? this._children[i - 1] : null; |
- child.parentNode = this; |
- } |
- }, |
- |
- /** |
- * @param {string} name |
- * @param {string} value |
- */ |
- _addAttribute: function(name, value) |
- { |
- var attr = { |
- name: name, |
- value: value, |
- _node: this |
- }; |
- this._attributesMap[name] = attr; |
- this._attributes.push(attr); |
- }, |
- |
- /** |
- * @param {string} name |
- * @param {string} value |
- */ |
- _setAttribute: function(name, value) |
- { |
- var attr = this._attributesMap[name]; |
- if (attr) |
- attr.value = value; |
- else |
- this._addAttribute(name, value); |
- }, |
- |
- /** |
- * @param {string} name |
- */ |
- _removeAttribute: function(name) |
- { |
- var attr = this._attributesMap[name]; |
- if (attr) { |
- this._attributes.remove(attr); |
- delete this._attributesMap[name]; |
- } |
- }, |
- |
- /** |
- * @param {!WebInspector.DOMNode} targetNode |
- * @param {?WebInspector.DOMNode} anchorNode |
- * @param {function(?Protocol.Error, !DOMAgent.NodeId=)=} callback |
- */ |
- moveTo: function(targetNode, anchorNode, callback) |
- { |
- DOMAgent.moveTo(this.id, targetNode.id, anchorNode ? anchorNode.id : undefined, WebInspector.domAgent._markRevision(this, callback)); |
- }, |
- |
- /** |
- * @return {boolean} |
- */ |
- isXMLNode: function() |
- { |
- return !!this.ownerDocument && !!this.ownerDocument.xmlVersion; |
- }, |
- |
- _updateChildUserPropertyCountsOnRemoval: function(parentNode) |
- { |
- var result = {}; |
- if (this._userProperties) { |
- for (var name in this._userProperties) |
- result[name] = (result[name] || 0) + 1; |
- } |
- |
- if (this._descendantUserPropertyCounters) { |
- for (var name in this._descendantUserPropertyCounters) { |
- var counter = this._descendantUserPropertyCounters[name]; |
- result[name] = (result[name] || 0) + counter; |
- } |
- } |
- |
- for (var name in result) |
- parentNode._updateDescendantUserPropertyCount(name, -result[name]); |
- }, |
- |
- _updateDescendantUserPropertyCount: function(name, delta) |
- { |
- if (!this._descendantUserPropertyCounters.hasOwnProperty(name)) |
- this._descendantUserPropertyCounters[name] = 0; |
- this._descendantUserPropertyCounters[name] += delta; |
- if (!this._descendantUserPropertyCounters[name]) |
- delete this._descendantUserPropertyCounters[name]; |
- if (this.parentNode) |
- this.parentNode._updateDescendantUserPropertyCount(name, delta); |
- }, |
- |
- setUserProperty: function(name, value) |
- { |
- if (value === null) { |
- this.removeUserProperty(name); |
- return; |
- } |
- |
- if (this.parentNode && !this._userProperties.hasOwnProperty(name)) |
- this.parentNode._updateDescendantUserPropertyCount(name, 1); |
- |
- this._userProperties[name] = value; |
- }, |
- |
- removeUserProperty: function(name) |
- { |
- if (!this._userProperties.hasOwnProperty(name)) |
- return; |
- |
- delete this._userProperties[name]; |
- if (this.parentNode) |
- this.parentNode._updateDescendantUserPropertyCount(name, -1); |
- }, |
- |
- /** |
- * @param {string} name |
- * @return {?T} |
- * @template T |
- */ |
- getUserProperty: function(name) |
- { |
- return (this._userProperties && this._userProperties[name]) || null; |
- }, |
- |
- /** |
- * @param {string} name |
- * @return {number} |
- */ |
- descendantUserPropertyCount: function(name) |
- { |
- return this._descendantUserPropertyCounters && this._descendantUserPropertyCounters[name] ? this._descendantUserPropertyCounters[name] : 0; |
- }, |
- |
- /** |
- * @param {string} url |
- * @return {?string} |
- */ |
- resolveURL: function(url) |
- { |
- if (!url) |
- return url; |
- for (var frameOwnerCandidate = this; frameOwnerCandidate; frameOwnerCandidate = frameOwnerCandidate.parentNode) { |
- if (frameOwnerCandidate.baseURL) |
- return WebInspector.ParsedURL.completeURL(frameOwnerCandidate.baseURL, url); |
- } |
- return null; |
- } |
-} |
- |
-/** |
- * @extends {WebInspector.DOMNode} |
- * @constructor |
- * @param {!WebInspector.DOMAgent} domAgent |
- * @param {!DOMAgent.Node} payload |
- */ |
-WebInspector.DOMDocument = function(domAgent, payload) |
-{ |
- WebInspector.DOMNode.call(this, domAgent, this, false, payload); |
- this.documentURL = payload.documentURL || ""; |
- this.baseURL = payload.baseURL || ""; |
- this.xmlVersion = payload.xmlVersion; |
- this._listeners = {}; |
-} |
- |
-WebInspector.DOMDocument.prototype = { |
- __proto__: WebInspector.DOMNode.prototype |
-} |
- |
-/** |
- * @extends {WebInspector.Object} |
- * @constructor |
- */ |
-WebInspector.DOMAgent = function() { |
- /** @type {!Object.<number, !WebInspector.DOMNode>} */ |
- this._idToDOMNode = {}; |
- /** @type {?WebInspector.DOMDocument} */ |
- this._document = null; |
- /** @type {!Object.<number, boolean>} */ |
- this._attributeLoadNodeIds = {}; |
- InspectorBackend.registerDOMDispatcher(new WebInspector.DOMDispatcher(this)); |
- |
- this._defaultHighlighter = new WebInspector.DefaultDOMNodeHighlighter(); |
- this._highlighter = this._defaultHighlighter; |
-} |
- |
-WebInspector.DOMAgent.Events = { |
- AttrModified: "AttrModified", |
- AttrRemoved: "AttrRemoved", |
- CharacterDataModified: "CharacterDataModified", |
- NodeInserted: "NodeInserted", |
- NodeRemoved: "NodeRemoved", |
- DocumentUpdated: "DocumentUpdated", |
- ChildNodeCountUpdated: "ChildNodeCountUpdated", |
- UndoRedoRequested: "UndoRedoRequested", |
- UndoRedoCompleted: "UndoRedoCompleted", |
-} |
- |
-WebInspector.DOMAgent.prototype = { |
- /** |
- * @param {function(!WebInspector.DOMDocument)=} callback |
- */ |
- requestDocument: function(callback) |
- { |
- if (this._document) { |
- if (callback) |
- callback(this._document); |
- return; |
- } |
- |
- if (this._pendingDocumentRequestCallbacks) { |
- this._pendingDocumentRequestCallbacks.push(callback); |
- return; |
- } |
- |
- this._pendingDocumentRequestCallbacks = [callback]; |
- |
- /** |
- * @this {WebInspector.DOMAgent} |
- * @param {?Protocol.Error} error |
- * @param {!DOMAgent.Node} root |
- */ |
- function onDocumentAvailable(error, root) |
- { |
- if (!error) |
- this._setDocument(root); |
- |
- for (var i = 0; i < this._pendingDocumentRequestCallbacks.length; ++i) { |
- var callback = this._pendingDocumentRequestCallbacks[i]; |
- if (callback) |
- callback(this._document); |
- } |
- delete this._pendingDocumentRequestCallbacks; |
- } |
- |
- DOMAgent.getDocument(onDocumentAvailable.bind(this)); |
- }, |
- |
- /** |
- * @return {?WebInspector.DOMDocument} |
- */ |
- existingDocument: function() |
- { |
- return this._document; |
- }, |
- |
- /** |
- * @param {!RuntimeAgent.RemoteObjectId} objectId |
- * @param {function(?DOMAgent.NodeId)=} callback |
- */ |
- pushNodeToFrontend: function(objectId, callback) |
- { |
- this._dispatchWhenDocumentAvailable(DOMAgent.requestNode.bind(DOMAgent, objectId), callback); |
- }, |
- |
- /** |
- * @param {string} path |
- * @param {function(?number)=} callback |
- */ |
- pushNodeByPathToFrontend: function(path, callback) |
- { |
- this._dispatchWhenDocumentAvailable(DOMAgent.pushNodeByPathToFrontend.bind(DOMAgent, path), callback); |
- }, |
- |
- /** |
- * @param {!Array.<number>} backendNodeIds |
- * @param {function(?Array.<number>)=} callback |
- */ |
- pushNodesByBackendIdsToFrontend: function(backendNodeIds, callback) |
- { |
- this._dispatchWhenDocumentAvailable(DOMAgent.pushNodesByBackendIdsToFrontend.bind(DOMAgent, backendNodeIds), callback); |
- }, |
- |
- /** |
- * @param {function(!T)=} callback |
- * @return {function(?Protocol.Error, !T=)|undefined} |
- * @template T |
- */ |
- _wrapClientCallback: function(callback) |
- { |
- if (!callback) |
- return; |
- /** |
- * @param {?Protocol.Error} error |
- * @param {!T=} result |
- * @template T |
- */ |
- return function(error, result) |
- { |
- // Caller is responsible for handling the actual error. |
- callback(error ? null : result); |
- } |
- }, |
- |
- /** |
- * @param {function(function(?Protocol.Error, !T=)=)} func |
- * @param {function(!T)=} callback |
- * @template T |
- */ |
- _dispatchWhenDocumentAvailable: function(func, callback) |
- { |
- var callbackWrapper = this._wrapClientCallback(callback); |
- |
- /** |
- * @this {WebInspector.DOMAgent} |
- */ |
- function onDocumentAvailable() |
- { |
- if (this._document) |
- func(callbackWrapper); |
- else { |
- if (callbackWrapper) |
- callbackWrapper("No document"); |
- } |
- } |
- this.requestDocument(onDocumentAvailable.bind(this)); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} nodeId |
- * @param {string} name |
- * @param {string} value |
- */ |
- _attributeModified: function(nodeId, name, value) |
- { |
- var node = this._idToDOMNode[nodeId]; |
- if (!node) |
- return; |
- |
- node._setAttribute(name, value); |
- this.dispatchEventToListeners(WebInspector.DOMAgent.Events.AttrModified, { node: node, name: name }); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} nodeId |
- * @param {string} name |
- */ |
- _attributeRemoved: function(nodeId, name) |
- { |
- var node = this._idToDOMNode[nodeId]; |
- if (!node) |
- return; |
- node._removeAttribute(name); |
- this.dispatchEventToListeners(WebInspector.DOMAgent.Events.AttrRemoved, { node: node, name: name }); |
- }, |
- |
- /** |
- * @param {!Array.<!DOMAgent.NodeId>} nodeIds |
- */ |
- _inlineStyleInvalidated: function(nodeIds) |
- { |
- for (var i = 0; i < nodeIds.length; ++i) |
- this._attributeLoadNodeIds[nodeIds[i]] = true; |
- if ("_loadNodeAttributesTimeout" in this) |
- return; |
- this._loadNodeAttributesTimeout = setTimeout(this._loadNodeAttributes.bind(this), 20); |
- }, |
- |
- _loadNodeAttributes: function() |
- { |
- /** |
- * @this {WebInspector.DOMAgent} |
- * @param {!DOMAgent.NodeId} nodeId |
- * @param {?Protocol.Error} error |
- * @param {!Array.<string>} attributes |
- */ |
- function callback(nodeId, error, attributes) |
- { |
- if (error) { |
- // We are calling _loadNodeAttributes asynchronously, it is ok if node is not found. |
- return; |
- } |
- var node = this._idToDOMNode[nodeId]; |
- if (node) { |
- if (node._setAttributesPayload(attributes)) |
- this.dispatchEventToListeners(WebInspector.DOMAgent.Events.AttrModified, { node: node, name: "style" }); |
- } |
- } |
- |
- delete this._loadNodeAttributesTimeout; |
- |
- for (var nodeId in this._attributeLoadNodeIds) { |
- var nodeIdAsNumber = parseInt(nodeId, 10); |
- DOMAgent.getAttributes(nodeIdAsNumber, callback.bind(this, nodeIdAsNumber)); |
- } |
- this._attributeLoadNodeIds = {}; |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} nodeId |
- * @param {string} newValue |
- */ |
- _characterDataModified: function(nodeId, newValue) |
- { |
- var node = this._idToDOMNode[nodeId]; |
- node._nodeValue = newValue; |
- this.dispatchEventToListeners(WebInspector.DOMAgent.Events.CharacterDataModified, node); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} nodeId |
- * @return {?WebInspector.DOMNode} |
- */ |
- nodeForId: function(nodeId) |
- { |
- return this._idToDOMNode[nodeId] || null; |
- }, |
- |
- _documentUpdated: function() |
- { |
- this._setDocument(null); |
- }, |
- |
- /** |
- * @param {?DOMAgent.Node} payload |
- */ |
- _setDocument: function(payload) |
- { |
- this._idToDOMNode = {}; |
- if (payload && "nodeId" in payload) |
- this._document = new WebInspector.DOMDocument(this, payload); |
- else |
- this._document = null; |
- this.dispatchEventToListeners(WebInspector.DOMAgent.Events.DocumentUpdated, this._document); |
- }, |
- |
- /** |
- * @param {!DOMAgent.Node} payload |
- */ |
- _setDetachedRoot: function(payload) |
- { |
- if (payload.nodeName === "#document") |
- new WebInspector.DOMDocument(this, payload); |
- else |
- new WebInspector.DOMNode(this, null, false, payload); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} parentId |
- * @param {!Array.<!DOMAgent.Node>} payloads |
- */ |
- _setChildNodes: function(parentId, payloads) |
- { |
- if (!parentId && payloads.length) { |
- this._setDetachedRoot(payloads[0]); |
- return; |
- } |
- |
- var parent = this._idToDOMNode[parentId]; |
- parent._setChildrenPayload(payloads); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} nodeId |
- * @param {number} newValue |
- */ |
- _childNodeCountUpdated: function(nodeId, newValue) |
- { |
- var node = this._idToDOMNode[nodeId]; |
- node._childNodeCount = newValue; |
- this.dispatchEventToListeners(WebInspector.DOMAgent.Events.ChildNodeCountUpdated, node); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} parentId |
- * @param {!DOMAgent.NodeId} prevId |
- * @param {!DOMAgent.Node} payload |
- */ |
- _childNodeInserted: function(parentId, prevId, payload) |
- { |
- var parent = this._idToDOMNode[parentId]; |
- var prev = this._idToDOMNode[prevId]; |
- var node = parent._insertChild(prev, payload); |
- this._idToDOMNode[node.id] = node; |
- this.dispatchEventToListeners(WebInspector.DOMAgent.Events.NodeInserted, node); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} parentId |
- * @param {!DOMAgent.NodeId} nodeId |
- */ |
- _childNodeRemoved: function(parentId, nodeId) |
- { |
- var parent = this._idToDOMNode[parentId]; |
- var node = this._idToDOMNode[nodeId]; |
- parent._removeChild(node); |
- this._unbind(node); |
- this.dispatchEventToListeners(WebInspector.DOMAgent.Events.NodeRemoved, {node: node, parent: parent}); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} hostId |
- * @param {!DOMAgent.Node} root |
- */ |
- _shadowRootPushed: function(hostId, root) |
- { |
- var host = this._idToDOMNode[hostId]; |
- if (!host) |
- return; |
- var node = new WebInspector.DOMNode(this, host.ownerDocument, true, root); |
- node.parentNode = host; |
- this._idToDOMNode[node.id] = node; |
- host._shadowRoots.push(node); |
- this.dispatchEventToListeners(WebInspector.DOMAgent.Events.NodeInserted, node); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} hostId |
- * @param {!DOMAgent.NodeId} rootId |
- */ |
- _shadowRootPopped: function(hostId, rootId) |
- { |
- var host = this._idToDOMNode[hostId]; |
- if (!host) |
- return; |
- var root = this._idToDOMNode[rootId]; |
- if (!root) |
- return; |
- host._removeChild(root); |
- this._unbind(root); |
- this.dispatchEventToListeners(WebInspector.DOMAgent.Events.NodeRemoved, {node: root, parent: host}); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} parentId |
- * @param {!DOMAgent.Node} pseudoElement |
- */ |
- _pseudoElementAdded: function(parentId, pseudoElement) |
- { |
- var parent = this._idToDOMNode[parentId]; |
- if (!parent) |
- return; |
- var node = new WebInspector.DOMNode(this, parent.ownerDocument, false, pseudoElement); |
- node.parentNode = parent; |
- this._idToDOMNode[node.id] = node; |
- console.assert(!parent._pseudoElements[node.pseudoType()]); |
- parent._pseudoElements[node.pseudoType()] = node; |
- this.dispatchEventToListeners(WebInspector.DOMAgent.Events.NodeInserted, node); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} parentId |
- * @param {!DOMAgent.NodeId} pseudoElementId |
- */ |
- _pseudoElementRemoved: function(parentId, pseudoElementId) |
- { |
- var parent = this._idToDOMNode[parentId]; |
- if (!parent) |
- return; |
- var pseudoElement = this._idToDOMNode[pseudoElementId]; |
- if (!pseudoElement) |
- return; |
- parent._removeChild(pseudoElement); |
- this._unbind(pseudoElement); |
- this.dispatchEventToListeners(WebInspector.DOMAgent.Events.NodeRemoved, {node: pseudoElement, parent: parent}); |
- }, |
- |
- /** |
- * @param {!WebInspector.DOMNode} node |
- */ |
- _unbind: function(node) |
- { |
- delete this._idToDOMNode[node.id]; |
- for (var i = 0; node._children && i < node._children.length; ++i) |
- this._unbind(node._children[i]); |
- for (var i = 0; i < node._shadowRoots.length; ++i) |
- this._unbind(node._shadowRoots[i]); |
- var pseudoElements = node.pseudoElements(); |
- for (var id in pseudoElements) |
- this._unbind(pseudoElements[id]); |
- if (node._templateContent) |
- this._unbind(node._templateContent); |
- }, |
- |
- /** |
- * @param {number} nodeId |
- */ |
- inspectElement: function(nodeId) |
- { |
- WebInspector.Revealer.reveal(this.nodeForId(nodeId)); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} nodeId |
- */ |
- _inspectNodeRequested: function(nodeId) |
- { |
- this.inspectElement(nodeId); |
- }, |
- |
- /** |
- * @param {string} query |
- * @param {function(number)} searchCallback |
- */ |
- performSearch: function(query, searchCallback) |
- { |
- this.cancelSearch(); |
- |
- /** |
- * @param {?Protocol.Error} error |
- * @param {string} searchId |
- * @param {number} resultsCount |
- * @this {WebInspector.DOMAgent} |
- */ |
- function callback(error, searchId, resultsCount) |
- { |
- this._searchId = searchId; |
- searchCallback(resultsCount); |
- } |
- DOMAgent.performSearch(query, callback.bind(this)); |
- }, |
- |
- /** |
- * @param {number} index |
- * @param {?function(?WebInspector.DOMNode)} callback |
- */ |
- searchResult: function(index, callback) |
- { |
- if (this._searchId) |
- DOMAgent.getSearchResults(this._searchId, index, index + 1, searchResultsCallback.bind(this)); |
- else |
- callback(null); |
- |
- /** |
- * @param {?Protocol.Error} error |
- * @param {!Array.<number>} nodeIds |
- * @this {WebInspector.DOMAgent} |
- */ |
- function searchResultsCallback(error, nodeIds) |
- { |
- if (error) { |
- console.error(error); |
- callback(null); |
- return; |
- } |
- if (nodeIds.length != 1) |
- return; |
- |
- callback(this.nodeForId(nodeIds[0])); |
- } |
- }, |
- |
- cancelSearch: function() |
- { |
- if (this._searchId) { |
- DOMAgent.discardSearchResults(this._searchId); |
- delete this._searchId; |
- } |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} nodeId |
- * @param {string} selectors |
- * @param {function(?DOMAgent.NodeId)=} callback |
- */ |
- querySelector: function(nodeId, selectors, callback) |
- { |
- DOMAgent.querySelector(nodeId, selectors, this._wrapClientCallback(callback)); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} nodeId |
- * @param {string} selectors |
- * @param {function(!Array.<!DOMAgent.NodeId>=)=} callback |
- */ |
- querySelectorAll: function(nodeId, selectors, callback) |
- { |
- DOMAgent.querySelectorAll(nodeId, selectors, this._wrapClientCallback(callback)); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId=} nodeId |
- * @param {string=} mode |
- * @param {!RuntimeAgent.RemoteObjectId=} objectId |
- */ |
- highlightDOMNode: function(nodeId, mode, objectId) |
- { |
- if (this._hideDOMNodeHighlightTimeout) { |
- clearTimeout(this._hideDOMNodeHighlightTimeout); |
- delete this._hideDOMNodeHighlightTimeout; |
- } |
- this._highlighter.highlightDOMNode(nodeId || 0, this._buildHighlightConfig(mode), objectId); |
- }, |
- |
- hideDOMNodeHighlight: function() |
- { |
- this.highlightDOMNode(0); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} nodeId |
- */ |
- highlightDOMNodeForTwoSeconds: function(nodeId) |
- { |
- this.highlightDOMNode(nodeId); |
- this._hideDOMNodeHighlightTimeout = setTimeout(this.hideDOMNodeHighlight.bind(this), 2000); |
- }, |
- |
- /** |
- * @param {boolean} enabled |
- * @param {boolean} inspectUAShadowDOM |
- * @param {function(?Protocol.Error)=} callback |
- */ |
- setInspectModeEnabled: function(enabled, inspectUAShadowDOM, callback) |
- { |
- /** |
- * @this {WebInspector.DOMAgent} |
- */ |
- function onDocumentAvailable() |
- { |
- this._highlighter.setInspectModeEnabled(enabled, inspectUAShadowDOM, this._buildHighlightConfig(), callback); |
- } |
- this.requestDocument(onDocumentAvailable.bind(this)); |
- }, |
- |
- /** |
- * @param {string=} mode |
- * @return {!DOMAgent.HighlightConfig} |
- */ |
- _buildHighlightConfig: function(mode) |
- { |
- mode = mode || "all"; |
- var highlightConfig = { showInfo: mode === "all", showRulers: WebInspector.settings.showMetricsRulers.get() }; |
- if (mode === "all" || mode === "content") |
- highlightConfig.contentColor = WebInspector.Color.PageHighlight.Content.toProtocolRGBA(); |
- |
- if (mode === "all" || mode === "padding") |
- highlightConfig.paddingColor = WebInspector.Color.PageHighlight.Padding.toProtocolRGBA(); |
- |
- if (mode === "all" || mode === "border") |
- highlightConfig.borderColor = WebInspector.Color.PageHighlight.Border.toProtocolRGBA(); |
- |
- if (mode === "all" || mode === "margin") |
- highlightConfig.marginColor = WebInspector.Color.PageHighlight.Margin.toProtocolRGBA(); |
- |
- if (mode === "all") |
- highlightConfig.eventTargetColor = WebInspector.Color.PageHighlight.EventTarget.toProtocolRGBA(); |
- |
- return highlightConfig; |
- }, |
- |
- /** |
- * @param {!WebInspector.DOMNode} node |
- * @param {function(?Protocol.Error, !A=, !B=)=} callback |
- * @return {function(?Protocol.Error, !A=, !B=)} |
- * @template A,B |
- */ |
- _markRevision: function(node, callback) |
- { |
- /** |
- * @param {?Protocol.Error} error |
- * @this {WebInspector.DOMAgent} |
- */ |
- function wrapperFunction(error) |
- { |
- if (!error) |
- this.markUndoableState(); |
- |
- if (callback) |
- callback.apply(this, arguments); |
- } |
- return wrapperFunction.bind(this); |
- }, |
- |
- /** |
- * @param {boolean} emulationEnabled |
- */ |
- emulateTouchEventObjects: function(emulationEnabled) |
- { |
- const injectedFunction = function() { |
- const touchEvents = ["ontouchstart", "ontouchend", "ontouchmove", "ontouchcancel"]; |
- var recepients = [window.__proto__, document.__proto__]; |
- for (var i = 0; i < touchEvents.length; ++i) { |
- for (var j = 0; j < recepients.length; ++j) { |
- if (!(touchEvents[i] in recepients[j])) |
- Object.defineProperty(recepients[j], touchEvents[i], { value: null, writable: true, configurable: true, enumerable: true }); |
- } |
- } |
- } |
- |
- if (emulationEnabled && !this._addTouchEventsScriptInjecting) { |
- this._addTouchEventsScriptInjecting = true; |
- PageAgent.addScriptToEvaluateOnLoad("(" + injectedFunction.toString() + ")()", scriptAddedCallback.bind(this)); |
- } else { |
- if (typeof this._addTouchEventsScriptId !== "undefined") { |
- PageAgent.removeScriptToEvaluateOnLoad(this._addTouchEventsScriptId); |
- delete this._addTouchEventsScriptId; |
- } |
- } |
- |
- /** |
- * @param {?Protocol.Error} error |
- * @param {string} scriptId |
- * @this {WebInspector.DOMAgent} |
- */ |
- function scriptAddedCallback(error, scriptId) |
- { |
- delete this._addTouchEventsScriptInjecting; |
- if (error) |
- return; |
- this._addTouchEventsScriptId = scriptId; |
- } |
- |
- PageAgent.setTouchEmulationEnabled(emulationEnabled); |
- }, |
- |
- markUndoableState: function() |
- { |
- DOMAgent.markUndoableState(); |
- }, |
- |
- /** |
- * @param {function(?Protocol.Error)=} callback |
- */ |
- undo: function(callback) |
- { |
- /** |
- * @param {?Protocol.Error} error |
- * @this {WebInspector.DOMAgent} |
- */ |
- function mycallback(error) |
- { |
- this.dispatchEventToListeners(WebInspector.DOMAgent.Events.UndoRedoCompleted); |
- callback(error); |
- } |
- |
- this.dispatchEventToListeners(WebInspector.DOMAgent.Events.UndoRedoRequested); |
- DOMAgent.undo(callback); |
- }, |
- |
- /** |
- * @param {function(?Protocol.Error)=} callback |
- */ |
- redo: function(callback) |
- { |
- /** |
- * @param {?Protocol.Error} error |
- * @this {WebInspector.DOMAgent} |
- */ |
- function mycallback(error) |
- { |
- this.dispatchEventToListeners(WebInspector.DOMAgent.Events.UndoRedoCompleted); |
- callback(error); |
- } |
- |
- this.dispatchEventToListeners(WebInspector.DOMAgent.Events.UndoRedoRequested); |
- DOMAgent.redo(callback); |
- }, |
- |
- /** |
- * @param {?WebInspector.DOMNodeHighlighter} highlighter |
- */ |
- setHighlighter: function(highlighter) |
- { |
- this._highlighter = highlighter || this._defaultHighlighter; |
- }, |
- |
- __proto__: WebInspector.Object.prototype |
-} |
- |
-/** |
- * @constructor |
- * @implements {DOMAgent.Dispatcher} |
- * @param {!WebInspector.DOMAgent} domAgent |
- */ |
-WebInspector.DOMDispatcher = function(domAgent) |
-{ |
- this._domAgent = domAgent; |
-} |
- |
-WebInspector.DOMDispatcher.prototype = { |
- documentUpdated: function() |
- { |
- this._domAgent._documentUpdated(); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} nodeId |
- */ |
- inspectNodeRequested: function(nodeId) |
- { |
- this._domAgent._inspectNodeRequested(nodeId); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} nodeId |
- * @param {string} name |
- * @param {string} value |
- */ |
- attributeModified: function(nodeId, name, value) |
- { |
- this._domAgent._attributeModified(nodeId, name, value); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} nodeId |
- * @param {string} name |
- */ |
- attributeRemoved: function(nodeId, name) |
- { |
- this._domAgent._attributeRemoved(nodeId, name); |
- }, |
- |
- /** |
- * @param {!Array.<!DOMAgent.NodeId>} nodeIds |
- */ |
- inlineStyleInvalidated: function(nodeIds) |
- { |
- this._domAgent._inlineStyleInvalidated(nodeIds); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} nodeId |
- * @param {string} characterData |
- */ |
- characterDataModified: function(nodeId, characterData) |
- { |
- this._domAgent._characterDataModified(nodeId, characterData); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} parentId |
- * @param {!Array.<!DOMAgent.Node>} payloads |
- */ |
- setChildNodes: function(parentId, payloads) |
- { |
- this._domAgent._setChildNodes(parentId, payloads); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} nodeId |
- * @param {number} childNodeCount |
- */ |
- childNodeCountUpdated: function(nodeId, childNodeCount) |
- { |
- this._domAgent._childNodeCountUpdated(nodeId, childNodeCount); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} parentNodeId |
- * @param {!DOMAgent.NodeId} previousNodeId |
- * @param {!DOMAgent.Node} payload |
- */ |
- childNodeInserted: function(parentNodeId, previousNodeId, payload) |
- { |
- this._domAgent._childNodeInserted(parentNodeId, previousNodeId, payload); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} parentNodeId |
- * @param {!DOMAgent.NodeId} nodeId |
- */ |
- childNodeRemoved: function(parentNodeId, nodeId) |
- { |
- this._domAgent._childNodeRemoved(parentNodeId, nodeId); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} hostId |
- * @param {!DOMAgent.Node} root |
- */ |
- shadowRootPushed: function(hostId, root) |
- { |
- this._domAgent._shadowRootPushed(hostId, root); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} hostId |
- * @param {!DOMAgent.NodeId} rootId |
- */ |
- shadowRootPopped: function(hostId, rootId) |
- { |
- this._domAgent._shadowRootPopped(hostId, rootId); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} parentId |
- * @param {!DOMAgent.Node} pseudoElement |
- */ |
- pseudoElementAdded: function(parentId, pseudoElement) |
- { |
- this._domAgent._pseudoElementAdded(parentId, pseudoElement); |
- }, |
- |
- /** |
- * @param {!DOMAgent.NodeId} parentId |
- * @param {!DOMAgent.NodeId} pseudoElementId |
- */ |
- pseudoElementRemoved: function(parentId, pseudoElementId) |
- { |
- this._domAgent._pseudoElementRemoved(parentId, pseudoElementId); |
- } |
-} |
- |
-/** |
- * @interface |
- */ |
-WebInspector.DOMNodeHighlighter = function() { |
-} |
- |
-WebInspector.DOMNodeHighlighter.prototype = { |
- /** |
- * @param {!DOMAgent.NodeId} nodeId |
- * @param {!DOMAgent.HighlightConfig} config |
- * @param {!RuntimeAgent.RemoteObjectId=} objectId |
- */ |
- highlightDOMNode: function(nodeId, config, objectId) {}, |
- |
- /** |
- * @param {boolean} enabled |
- * @param {boolean} inspectUAShadowDOM |
- * @param {!DOMAgent.HighlightConfig} config |
- * @param {function(?Protocol.Error)=} callback |
- */ |
- setInspectModeEnabled: function(enabled, inspectUAShadowDOM, config, callback) {} |
-} |
- |
-/** |
- * @constructor |
- * @implements {WebInspector.DOMNodeHighlighter} |
- */ |
-WebInspector.DefaultDOMNodeHighlighter = function() { |
-} |
- |
-WebInspector.DefaultDOMNodeHighlighter.prototype = { |
- /** |
- * @param {!DOMAgent.NodeId} nodeId |
- * @param {!DOMAgent.HighlightConfig} config |
- * @param {!RuntimeAgent.RemoteObjectId=} objectId |
- */ |
- highlightDOMNode: function(nodeId, config, objectId) |
- { |
- if (objectId || nodeId) |
- DOMAgent.highlightNode(config, objectId ? undefined : nodeId, objectId); |
- else |
- DOMAgent.hideHighlight(); |
- }, |
- |
- /** |
- * @param {boolean} enabled |
- * @param {boolean} inspectUAShadowDOM |
- * @param {!DOMAgent.HighlightConfig} config |
- * @param {function(?Protocol.Error)=} callback |
- */ |
- setInspectModeEnabled: function(enabled, inspectUAShadowDOM, config, callback) |
- { |
- DOMAgent.setInspectModeEnabled(enabled, inspectUAShadowDOM, config, callback); |
- } |
-} |
- |
-/** |
- * @type {!WebInspector.DOMAgent} |
- */ |
-WebInspector.domAgent; |