15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2009, 2010 Google Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2009 Joseph Pecoraro 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions are 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * met: 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions of source code must retain the above copyright 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions in binary form must reproduce the above 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * in the documentation and/or other materials provided with the 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * distribution. 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * contributors may be used to endorse or promote products derived from 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * this software without specific prior written permission. 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 34197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @extends {WebInspector.SDKObject} 3507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @param {!WebInspector.DOMModel} domModel 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?WebInspector.DOMDocument} doc 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} isInShadowTree 38a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.Node} payload 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben MurdochWebInspector.DOMNode = function(domModel, doc, isInShadowTree, payload) { 41197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebInspector.SDKObject.call(this, domModel.target()); 4207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._domModel = domModel; 43aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent = domModel._agent; 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.ownerDocument = doc; 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._isInShadowTree = isInShadowTree; 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.id = payload.nodeId; 4807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch domModel._idToDOMNode[this.id] = this; 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._nodeType = payload.nodeType; 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._nodeName = payload.nodeName; 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._localName = payload.localName; 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._nodeValue = payload.nodeValue; 5306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._pseudoType = payload.pseudoType; 5451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) this._shadowRootType = payload.shadowRootType; 55d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._frameId = payload.frameId || null; 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._shadowRoots = []; 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._attributes = []; 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._attributesMap = {}; 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (payload.attributes) 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._setAttributesPayload(payload.attributes); 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._userProperties = {}; 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._descendantUserPropertyCounters = {}; 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 675267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) this._childNodeCount = payload.childNodeCount || 0; 685267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) this._children = null; 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.nextSibling = null; 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.previousSibling = null; 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.firstChild = null; 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.lastChild = null; 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.parentNode = null; 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 765267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) if (payload.shadowRoots) { 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < payload.shadowRoots.length; ++i) { 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var root = payload.shadowRoots[i]; 7907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch var node = new WebInspector.DOMNode(this._domModel, this.ownerDocument, true, root); 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._shadowRoots.push(node); 815267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) node.parentNode = this; 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 855267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) if (payload.templateContent) { 8607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._templateContent = new WebInspector.DOMNode(this._domModel, this.ownerDocument, true, payload.templateContent); 875267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) this._templateContent.parentNode = this; 885267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) } 89926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 9009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (payload.importedDocument) { 9107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._importedDocument = new WebInspector.DOMNode(this._domModel, this.ownerDocument, true, payload.importedDocument); 9209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._importedDocument.parentNode = this; 9309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 9409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (payload.children) 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._setChildrenPayload(payload.children); 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._setPseudoElements(payload.pseudoElements); 9906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (payload.contentDocument) { 10107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._contentDocument = new WebInspector.DOMDocument(domModel, payload.contentDocument); 1025267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) this._children = [this._contentDocument]; 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._renumber(); 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._nodeType === Node.ELEMENT_NODE) { 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // HTML and BODY from internal iframes should not overwrite top-level ones. 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.ownerDocument && !this.ownerDocument.documentElement && this._nodeName === "HTML") 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.ownerDocument.documentElement = this; 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.ownerDocument && !this.ownerDocument.body && this._nodeName === "BODY") 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.ownerDocument.body = this; 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if (this._nodeType === Node.DOCUMENT_TYPE_NODE) { 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.publicId = payload.publicId; 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.systemId = payload.systemId; 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.internalSubset = payload.internalSubset; 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if (this._nodeType === Node.ATTRIBUTE_NODE) { 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.name = payload.name; 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.value = payload.value; 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 122d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)/** 123d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @enum {string} 124d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 12506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)WebInspector.DOMNode.PseudoElementNames = { 12606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) Before: "before", 12706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) After: "after" 12806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)} 12906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) 130d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)/** 131d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @enum {string} 132d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 13351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)WebInspector.DOMNode.ShadowRootTypes = { 13451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) UserAgent: "user-agent", 13551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) Author: "author" 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.DOMNode.prototype = { 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 140aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @return {!WebInspector.DOMModel} 141aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 142aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch domModel: function() 143aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 144aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return this._domModel; 145aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }, 146aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 147aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 148a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {?Array.<!WebInspector.DOMNode>} 1495267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) */ 1505267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) children: function() 1515267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) { 1525267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return this._children ? this._children.slice() : null; 1535267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) }, 1545267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1555267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) /** 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {boolean} 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hasAttributes: function() 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._attributes.length > 0; 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1645267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * @return {number} 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1665267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) childNodeCount: function() 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1685267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return this._childNodeCount; 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {boolean} 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hasShadowRoots: function() 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !!this._shadowRoots.length; 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 180a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Array.<!WebInspector.DOMNode>} 1815267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) */ 1825267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) shadowRoots: function() 1835267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) { 1845267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return this._shadowRoots.slice(); 1855267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) }, 1865267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1875267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) /** 18809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {?WebInspector.DOMNode} 1895267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) */ 1905267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) templateContent: function() 1915267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) { 1925267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return this._templateContent; 1935267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) }, 1945267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1955267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) /** 19609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {?WebInspector.DOMNode} 19709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 19809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) importedDocument: function() 19909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 20009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return this._importedDocument; 20109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) }, 20209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 20309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {number} 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nodeType: function() 2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._nodeType; 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {string} 2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nodeName: function() 2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._nodeName; 2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 22006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @return {string|undefined} 22106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) */ 22206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) pseudoType: function() 22306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) { 22406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) return this._pseudoType; 22506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) }, 22606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) 22706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) /** 22806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @return {boolean} 22906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) */ 23006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) hasPseudoElements: function() 23106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) { 23206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) return Object.keys(this._pseudoElements).length !== 0; 23306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) }, 23406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) 23506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) /** 236a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Object.<string, !WebInspector.DOMNode>} 23706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) */ 23806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) pseudoElements: function() 23906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) { 24006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) return this._pseudoElements; 24106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) }, 24206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) 24306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) /** 2445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {boolean} 2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isInShadowTree: function() 2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._isInShadowTree; 2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 252d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @return {?WebInspector.DOMNode} 253d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 254d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) ancestorUserAgentShadowRoot: function() 255d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 256d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (!this._isInShadowTree) 257d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return null; 258d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 259d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) var current = this; 260d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) while (!current.isShadowRoot()) 261d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) current = current.parentNode; 262d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return current.shadowRootType() === WebInspector.DOMNode.ShadowRootTypes.UserAgent ? current : null; 263d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 264d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 265d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 266d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @return {boolean} 267d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 268d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) isShadowRoot: function() 269d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 270d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return !!this._shadowRootType; 271d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 272d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 273d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 27451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * @return {?string} 27551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) */ 27651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) shadowRootType: function() 27751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) { 27851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) return this._shadowRootType || null; 27951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) }, 28051b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) 28151b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) /** 2825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {string} 2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nodeNameInCorrectCase: function() 2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 28607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch var shadowRootType = this.shadowRootType(); 28707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if (shadowRootType) 28807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch return "#shadow-root" + (shadowRootType === WebInspector.DOMNode.ShadowRootTypes.UserAgent ? " (user-agent)" : ""); 2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.isXMLNode() ? this.nodeName() : this.nodeName().toLowerCase(); 2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 2935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 294f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) * @param {function(?Protocol.Error, number)=} callback 2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setNodeName: function(name, callback) 2975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 298aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.setNodeName(this.id, name, this._domModel._markRevision(this, callback)); 2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 3025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {string} 3035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) localName: function() 3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._localName; 3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 3105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {string} 3115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nodeValue: function() 3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._nodeValue; 3155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} value 3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?Protocol.Error)=} callback 3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setNodeValue: function(value, callback) 3225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 323aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.setNodeValue(this.id, value, this._domModel._markRevision(this, callback)); 3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 3275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {string} 3295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getAttribute: function(name) 3315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var attr = this._attributesMap[name]; 3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return attr ? attr.value : undefined; 3345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 3375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 3385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} text 3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?Protocol.Error)=} callback 3405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setAttribute: function(name, text, callback) 3425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 343aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.setAttributesAsText(this.id, text, name, this._domModel._markRevision(this, callback)); 3445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 3475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 3485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} value 3495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?Protocol.Error)=} callback 3505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setAttributeValue: function(name, value, callback) 3525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 353aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.setAttributeValue(this.id, name, value, this._domModel._markRevision(this, callback)); 3545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 357a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Object} 3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) attributes: function() 3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._attributes; 3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 3665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?Protocol.Error)=} callback 3675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) removeAttribute: function(name, callback) 3695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 37109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {?Protocol.Error} error 37209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.DOMNode} 3735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function mycallback(error) 3755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!error) { 3775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete this._attributesMap[name]; 3785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < this._attributes.length; ++i) { 3795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._attributes[i].name === name) { 3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._attributes.splice(i, 1); 3815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 3825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 386aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._domModel._markRevision(this, callback)(error); 3875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 388aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.removeAttribute(this.id, name, mycallback.bind(this)); 3895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 392a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(?Array.<!WebInspector.DOMNode>)=} callback 3935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getChildNodes: function(callback) 3955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3965267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) if (this._children) { 3975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (callback) 3985267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) callback(this.children()); 3995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 4005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 4035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @this {WebInspector.DOMNode} 4045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?Protocol.Error} error 4055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function mycallback(error) 4075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 40806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) if (callback) 40906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) callback(error ? null : this.children()); 4105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 412aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.requestChildNodes(this.id, undefined, mycallback.bind(this)); 413926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 414926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 415926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 416926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {number} depth 417a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(?Array.<!WebInspector.DOMNode>)=} callback 418926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 419926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) getSubtree: function(depth, callback) 420926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 421926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 422926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @this {WebInspector.DOMNode} 423926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {?Protocol.Error} error 424926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 425926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) function mycallback(error) 426926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 427926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (callback) 4285267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) callback(error ? null : this._children); 429926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 430926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 431aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.requestChildNodes(this.id, depth, mycallback.bind(this)); 4325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 435f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) * @param {function(?Protocol.Error, string)=} callback 4365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getOuterHTML: function(callback) 4385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 439aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.getOuterHTML(this.id, callback); 4405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 4435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} html 4445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?Protocol.Error)=} callback 4455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setOuterHTML: function(html, callback) 4475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 448aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.setOuterHTML(this.id, html, this._domModel._markRevision(this, callback)); 4495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 452a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(?Protocol.Error, !DOMAgent.NodeId=)=} callback 4535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) removeNode: function(callback) 4555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 456aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.removeNode(this.id, this._domModel._markRevision(this, callback)); 4575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 459c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 460c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {function(?string)=} callback 461c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 462c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) copyNode: function(callback) 4635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function copy(error, text) 4655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!error) 4675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorFrontendHost.copyText(text); 468c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) if (callback) 469c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) callback(error ? null : text); 4705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 471aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.getOuterHTML(this.id, copy); 4725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 475926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} objectGroupId 476aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {function(?Array.<!WebInspector.DOMModel.EventListener>)} callback 4775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 478926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) eventListeners: function(objectGroupId, callback) 4795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 480aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var target = this.target(); 481aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 482aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 483aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {?Protocol.Error} error 484aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!Array.<!DOMAgent.EventListener>} payloads 485aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 486aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch function mycallback(error, payloads) 487aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 488aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (error) { 489aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch callback(null); 490aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return; 491aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 492aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch callback(payloads.map(function(payload) { 493aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return new WebInspector.DOMModel.EventListener(target, payload); 494aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch })); 495aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 496aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.getEventListenersForNode(this.id, objectGroupId, mycallback); 4975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 5005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {string} 5015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) path: function() 5035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 50407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch /** 50507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @param {?WebInspector.DOMNode} node 50607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch */ 50707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch function canPush(node) 50807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch { 50907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch return node && ("index" in node || (node.isShadowRoot() && node.parentNode)) && node._nodeName.length; 51007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch } 51107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 5125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var path = []; 5135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var node = this; 51407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch while (canPush(node)) { 51507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch var index = typeof node.index === "number" ? node.index : (node.shadowRootType() === WebInspector.DOMNode.ShadowRootTypes.UserAgent ? "u" : "a"); 51607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch path.push([index, node._nodeName]); 5175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) node = node.parentNode; 5185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) path.reverse(); 5205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return path.join(","); 5215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 524a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.DOMNode} node 5255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {boolean} 5265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isAncestor: function(node) 5285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node) 5305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 5315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var currentNode = node.parentNode; 5335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while (currentNode) { 5345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this === currentNode) 5355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 5365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) currentNode = currentNode.parentNode; 5375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 5395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 542a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.DOMNode} descendant 5435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {boolean} 5445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isDescendant: function(descendant) 5465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return descendant !== null && descendant.isAncestor(this); 5485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 551d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @return {?PageAgent.FrameId} 552d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 553d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) frameId: function() 554d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 555d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) var node = this; 556d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) while (!node._frameId && node.parentNode) 557d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) node = node.parentNode; 558d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return node._frameId; 559d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 560d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 561d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 562a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<string>} attrs 5635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {boolean} 5645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _setAttributesPayload: function(attrs) 5665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var attributesChanged = !this._attributes || attrs.length !== this._attributes.length * 2; 5685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var oldAttributesMap = this._attributesMap || {}; 5695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._attributes = []; 5715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._attributesMap = {}; 5725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < attrs.length; i += 2) { 5745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var name = attrs[i]; 5755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var value = attrs[i + 1]; 5765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._addAttribute(name, value); 5775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (attributesChanged) 5795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) continue; 5805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!oldAttributesMap[name] || oldAttributesMap[name].value !== value) 5825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) attributesChanged = true; 5835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return attributesChanged; 5855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 588a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.DOMNode} prev 589a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.Node} payload 590a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.DOMNode} 5915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _insertChild: function(prev, payload) 5935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 59407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch var node = new WebInspector.DOMNode(this._domModel, this.ownerDocument, this._isInShadowTree, payload); 5955267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) this._children.splice(this._children.indexOf(prev) + 1, 0, node); 5965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._renumber(); 5975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return node; 5985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 601a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.DOMNode} node 6025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _removeChild: function(node) 6045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 60506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) if (node.pseudoType()) { 60606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) delete this._pseudoElements[node.pseudoType()]; 60706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) } else { 60806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) var shadowRootIndex = this._shadowRoots.indexOf(node); 60906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) if (shadowRootIndex !== -1) 61006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._shadowRoots.splice(shadowRootIndex, 1); 61106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) else 61206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._children.splice(this._children.indexOf(node), 1); 61306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) } 6145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) node.parentNode = null; 6155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) node._updateChildUserPropertyCountsOnRemoval(this); 6165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._renumber(); 6175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 620a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!DOMAgent.Node>} payloads 6215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _setChildrenPayload: function(payloads) 6235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We set children in the constructor. 6255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._contentDocument) 6265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 6275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6285267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) this._children = []; 6295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < payloads.length; ++i) { 6305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var payload = payloads[i]; 63107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch var node = new WebInspector.DOMNode(this._domModel, this.ownerDocument, this._isInShadowTree, payload); 6325267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) this._children.push(node); 6335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._renumber(); 6355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 63706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) /** 638a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!DOMAgent.Node>|undefined} payloads 63906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) */ 64006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) _setPseudoElements: function(payloads) 64106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) { 64206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._pseudoElements = {}; 64306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) if (!payloads) 64406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) return; 64506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) 64606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) for (var i = 0; i < payloads.length; ++i) { 64707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch var node = new WebInspector.DOMNode(this._domModel, this.ownerDocument, this._isInShadowTree, payloads[i]); 64806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) node.parentNode = this; 64906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._pseudoElements[node.pseudoType()] = node; 65006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) } 65106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) }, 65206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) 6535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _renumber: function() 6545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6555267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) this._childNodeCount = this._children.length; 6565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._childNodeCount == 0) { 6575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.firstChild = null; 6585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.lastChild = null; 6595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 6605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6615267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) this.firstChild = this._children[0]; 6625267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) this.lastChild = this._children[this._childNodeCount - 1]; 6635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < this._childNodeCount; ++i) { 6645267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) var child = this._children[i]; 6655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) child.index = i; 6665267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) child.nextSibling = i + 1 < this._childNodeCount ? this._children[i + 1] : null; 6675267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) child.previousSibling = i - 1 >= 0 ? this._children[i - 1] : null; 6685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) child.parentNode = this; 6695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 6735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 6745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} value 6755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _addAttribute: function(name, value) 6775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var attr = { 6795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name: name, 6805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value: value, 6815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _node: this 6825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 6835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._attributesMap[name] = attr; 6845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._attributes.push(attr); 6855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 6885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 6895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} value 6905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _setAttribute: function(name, value) 6925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var attr = this._attributesMap[name]; 6945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (attr) 6955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) attr.value = value; 6965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 6975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._addAttribute(name, value); 6985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 7015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 7025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 7035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _removeAttribute: function(name) 7045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var attr = this._attributesMap[name]; 7065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (attr) { 7075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._attributes.remove(attr); 7085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete this._attributesMap[name]; 7095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 713a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.DOMNode} targetNode 7145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?WebInspector.DOMNode} anchorNode 715a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(?Protocol.Error, !DOMAgent.NodeId=)=} callback 7165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 717c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) copyTo: function(targetNode, anchorNode, callback) 718c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 719c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._agent.copyTo(this.id, targetNode.id, anchorNode ? anchorNode.id : undefined, this._domModel._markRevision(this, callback)); 720c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 721c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 722c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 723c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.DOMNode} targetNode 724c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {?WebInspector.DOMNode} anchorNode 725c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {function(?Protocol.Error, !DOMAgent.NodeId=)=} callback 726c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 7275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) moveTo: function(targetNode, anchorNode, callback) 7285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 729aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.moveTo(this.id, targetNode.id, anchorNode ? anchorNode.id : undefined, this._domModel._markRevision(this, callback)); 7305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 7335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {boolean} 7345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 7355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isXMLNode: function() 7365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !!this.ownerDocument && !!this.ownerDocument.xmlVersion; 7385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _updateChildUserPropertyCountsOnRemoval: function(parentNode) 7415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var result = {}; 7435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._userProperties) { 7445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var name in this._userProperties) 7455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result[name] = (result[name] || 0) + 1; 7465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._descendantUserPropertyCounters) { 7495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var name in this._descendantUserPropertyCounters) { 7505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var counter = this._descendantUserPropertyCounters[name]; 7515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result[name] = (result[name] || 0) + counter; 7525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var name in result) 7565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parentNode._updateDescendantUserPropertyCount(name, -result[name]); 7575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _updateDescendantUserPropertyCount: function(name, delta) 7605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this._descendantUserPropertyCounters.hasOwnProperty(name)) 7625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._descendantUserPropertyCounters[name] = 0; 7635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._descendantUserPropertyCounters[name] += delta; 7645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this._descendantUserPropertyCounters[name]) 7655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete this._descendantUserPropertyCounters[name]; 7665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.parentNode) 7675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.parentNode._updateDescendantUserPropertyCount(name, delta); 7685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setUserProperty: function(name, value) 7715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (value === null) { 7735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.removeUserProperty(name); 7745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 7755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.parentNode && !this._userProperties.hasOwnProperty(name)) 7785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.parentNode._updateDescendantUserPropertyCount(name, 1); 7795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._userProperties[name] = value; 7815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) removeUserProperty: function(name) 7845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this._userProperties.hasOwnProperty(name)) 7865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 7875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete this._userProperties[name]; 7895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.parentNode) 7905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.parentNode._updateDescendantUserPropertyCount(name, -1); 7915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 79409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {string} name 79509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {?T} 79609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @template T 79709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 7985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getUserProperty: function(name) 7995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 80009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return (this._userProperties && this._userProperties[name]) || null; 8015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 80309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 80409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {string} name 80509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {number} 80609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 8075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) descendantUserPropertyCount: function(name) 8085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._descendantUserPropertyCounters && this._descendantUserPropertyCounters[name] ? this._descendantUserPropertyCounters[name] : 0; 8105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 8135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} url 8145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {?string} 8155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) resolveURL: function(url) 8175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!url) 8195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return url; 8205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var frameOwnerCandidate = this; frameOwnerCandidate; frameOwnerCandidate = frameOwnerCandidate.parentNode) { 8215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (frameOwnerCandidate.baseURL) 8225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return WebInspector.ParsedURL.completeURL(frameOwnerCandidate.baseURL, url); 8235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return null; 825aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }, 826aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 827aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 828aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {string=} mode 829aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!RuntimeAgent.RemoteObjectId=} objectId 830aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 831aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch highlight: function(mode, objectId) 832aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 833aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._domModel.highlightDOMNode(this.id, mode, objectId); 834aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }, 835aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 836aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch highlightForTwoSeconds: function() 837aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 838aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._domModel.highlightDOMNodeForTwoSeconds(this.id); 839aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }, 840aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 841aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 842aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {string=} objectGroup 843aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {function(?WebInspector.RemoteObject)=} callback 844aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 845aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch resolveToObject: function(objectGroup, callback) 846aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 847aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.resolveNode(this.id, objectGroup, mycallback.bind(this)); 848aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 849aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 850aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {?Protocol.Error} error 851aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!RuntimeAgent.RemoteObject} object 852aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @this {WebInspector.DOMNode} 853aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 854aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch function mycallback(error, object) 855aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 856aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (!callback) 857aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return; 858aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 859aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (error || !object) 860aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch callback(null); 861aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch else 862aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch callback(this.target().runtimeModel.createRemoteObject(object)); 863aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 864aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }, 865aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 866a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch /** 867a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @param {function(?DOMAgent.BoxModel)} callback 868a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch */ 869a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch boxModel: function(callback) 870a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch { 871f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu this._agent.getBoxModel(this.id, this._domModel._wrapClientCallback(callback)); 872a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch }, 873a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch 874197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch __proto__: WebInspector.SDKObject.prototype 875197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} 876197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 877197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch/** 878197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {!WebInspector.Target} target 879197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {number} backendNodeId 880197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @constructor 881197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 882197021e6b966cfb06891637935ef33fff06433d1Ben MurdochWebInspector.DeferredDOMNode = function(target, backendNodeId) 883197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{ 884197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._target = target; 885197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._backendNodeId = backendNodeId; 886197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} 887197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 888197021e6b966cfb06891637935ef33fff06433d1Ben MurdochWebInspector.DeferredDOMNode.prototype = { 889197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** 890197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {function(?WebInspector.DOMNode)} callback 891197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 892197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch resolve: function(callback) 893197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 894197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._target.domModel.pushNodesByBackendIdsToFrontend([this._backendNodeId], onGotNode.bind(this)); 895197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 896197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** 897197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {?Array.<number>} nodeIds 898197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @this {WebInspector.DeferredDOMNode} 899197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 900197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch function onGotNode(nodeIds) 901197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 902197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch if (!nodeIds || !nodeIds[0]) { 903197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch callback(null); 904197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return; 905197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch } 906197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch callback(this._target.domModel.nodeForId(nodeIds[0])); 907197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch } 908197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch } 9095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 9125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.DOMNode} 9135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 91407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @param {!WebInspector.DOMModel} domModel 915a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.Node} payload 9165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 91707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben MurdochWebInspector.DOMDocument = function(domModel, payload) 9185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 91907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch WebInspector.DOMNode.call(this, domModel, this, false, payload); 9205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.documentURL = payload.documentURL || ""; 92109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this.baseURL = payload.baseURL || ""; 9225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.xmlVersion = payload.xmlVersion; 9235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._listeners = {}; 9245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.DOMDocument.prototype = { 9275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.DOMNode.prototype 9285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 9315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 932c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @extends {WebInspector.SDKModel} 933aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.Target} target 9345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 935aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.DOMModel = function(target) { 936c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) WebInspector.SDKModel.call(this, WebInspector.DOMModel, target); 937aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 938aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent = target.domAgent(); 939aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 940e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) /** @type {!Object.<number, !WebInspector.DOMNode>} */ 9415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._idToDOMNode = {}; 942e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) /** @type {?WebInspector.DOMDocument} */ 9435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._document = null; 944e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) /** @type {!Object.<number, boolean>} */ 9455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._attributeLoadNodeIds = {}; 946a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch target.registerDOMDispatcher(new WebInspector.DOMDispatcher(this)); 947c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 948aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._defaultHighlighter = new WebInspector.DefaultDOMNodeHighlighter(this._agent); 949c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._highlighter = this._defaultHighlighter; 950197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 9517242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci if (Runtime.experiments.isEnabled("disableAgentsWhenProfile")) 952e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) WebInspector.profilingLock().addEventListener(WebInspector.Lock.Events.StateChanged, this._profilingStateChanged, this); 953197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 954f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) this._agent.enable(); 9555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 95707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben MurdochWebInspector.DOMModel.Events = { 9585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) AttrModified: "AttrModified", 9595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) AttrRemoved: "AttrRemoved", 9605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CharacterDataModified: "CharacterDataModified", 9615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) NodeInserted: "NodeInserted", 962197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch NodeInspected: "NodeInspected", 9635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) NodeRemoved: "NodeRemoved", 9645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DocumentUpdated: "DocumentUpdated", 9655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ChildNodeCountUpdated: "ChildNodeCountUpdated", 9665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) UndoRedoRequested: "UndoRedoRequested", 96753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) UndoRedoCompleted: "UndoRedoCompleted", 9685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 97007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben MurdochWebInspector.DOMModel.prototype = { 971197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch _profilingStateChanged: function() 972197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 973e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) if (WebInspector.profilingLock().isAcquired()) 974197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._agent.disable(); 975197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch else 976197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._agent.enable(); 977197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch }, 978197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 9795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 980a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!WebInspector.DOMDocument)=} callback 9815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 9825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) requestDocument: function(callback) 9835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 9845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._document) { 9855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (callback) 9865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(this._document); 9875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 9885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._pendingDocumentRequestCallbacks) { 9915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pendingDocumentRequestCallbacks.push(callback); 9925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 9935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pendingDocumentRequestCallbacks = [callback]; 9965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 99807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @this {WebInspector.DOMModel} 9995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?Protocol.Error} error 1000a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.Node} root 10015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 10025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function onDocumentAvailable(error, root) 10035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 10045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!error) 10055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._setDocument(root); 10065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < this._pendingDocumentRequestCallbacks.length; ++i) { 10085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var callback = this._pendingDocumentRequestCallbacks[i]; 10095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (callback) 10105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(this._document); 10115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete this._pendingDocumentRequestCallbacks; 10135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1015aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.getDocument(onDocumentAvailable.bind(this)); 10165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1019a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {?WebInspector.DOMDocument} 10205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 10215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) existingDocument: function() 10225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 10235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._document; 10245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1027a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!RuntimeAgent.RemoteObjectId} objectId 1028a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @param {function(?WebInspector.DOMNode)=} callback 10295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 10305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) pushNodeToFrontend: function(objectId, callback) 10315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1032a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch /** 1033a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @param {?DOMAgent.NodeId} nodeId 1034a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @this {!WebInspector.DOMModel} 1035a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch */ 1036a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch function mycallback(nodeId) 1037a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch { 1038a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch callback(nodeId ? this.nodeForId(nodeId) : null); 1039a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch } 1040a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this._dispatchWhenDocumentAvailable(this._agent.requestNode.bind(this._agent, objectId), mycallback.bind(this)); 10415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 10445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} path 10453c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch * @param {function(?number)=} callback 10465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 10475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) pushNodeByPathToFrontend: function(path, callback) 10485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1049aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._dispatchWhenDocumentAvailable(this._agent.pushNodeByPathToFrontend.bind(this._agent, path), callback); 10505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1053d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!Array.<number>} backendNodeIds 1054d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {function(?Array.<number>)=} callback 1055e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) */ 1056d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) pushNodesByBackendIdsToFrontend: function(backendNodeIds, callback) 1057e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) { 1058aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._dispatchWhenDocumentAvailable(this._agent.pushNodesByBackendIdsToFrontend.bind(this._agent, backendNodeIds), callback); 1059e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) }, 1060e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) 1061e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) /** 1062a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!T)=} callback 1063a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {function(?Protocol.Error, !T=)|undefined} 10643c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch * @template T 10655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 10665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _wrapClientCallback: function(callback) 10675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 10685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!callback) 10695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 10705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 10715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?Protocol.Error} error 1072a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!T=} result 1073a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @template T 10745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 10755d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) var wrapper = function(error, result) 10765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 10775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Caller is responsible for handling the actual error. 10785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(error ? null : result); 10795d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) }; 10805d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) return wrapper; 10815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1084a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(function(?Protocol.Error, !T=)=)} func 1085a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!T)=} callback 10863c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch * @template T 10875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 10885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _dispatchWhenDocumentAvailable: function(func, callback) 10895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 10903c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch var callbackWrapper = this._wrapClientCallback(callback); 10915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 109209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 109307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @this {WebInspector.DOMModel} 109409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 10955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function onDocumentAvailable() 10965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 10975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._document) 10985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) func(callbackWrapper); 10995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else { 11005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (callbackWrapper) 11015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callbackWrapper("No document"); 11025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.requestDocument(onDocumentAvailable.bind(this)); 11055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 11065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1108a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 11095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 11105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} value 11115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 11125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _attributeModified: function(nodeId, name, value) 11135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 11145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var node = this._idToDOMNode[nodeId]; 11155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node) 11165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 11175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) node._setAttribute(name, value); 111907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.dispatchEventToListeners(WebInspector.DOMModel.Events.AttrModified, { node: node, name: name }); 11205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 11215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1123a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 11245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 11255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 11265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _attributeRemoved: function(nodeId, name) 11275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 11285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var node = this._idToDOMNode[nodeId]; 11295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node) 11305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 11315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) node._removeAttribute(name); 113207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.dispatchEventToListeners(WebInspector.DOMModel.Events.AttrRemoved, { node: node, name: name }); 11335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 11345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1136a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!DOMAgent.NodeId>} nodeIds 11375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 11385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _inlineStyleInvalidated: function(nodeIds) 11395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 11405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < nodeIds.length; ++i) 11415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._attributeLoadNodeIds[nodeIds[i]] = true; 11425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ("_loadNodeAttributesTimeout" in this) 11435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 114409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._loadNodeAttributesTimeout = setTimeout(this._loadNodeAttributes.bind(this), 20); 11455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 11465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _loadNodeAttributes: function() 11485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 11495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 115007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @this {WebInspector.DOMModel} 1151a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 11525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?Protocol.Error} error 1153a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<string>} attributes 11545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 11555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function callback(nodeId, error, attributes) 11565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 11575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (error) { 11585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We are calling _loadNodeAttributes asynchronously, it is ok if node is not found. 11595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 11605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var node = this._idToDOMNode[nodeId]; 11625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (node) { 11635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (node._setAttributesPayload(attributes)) 116407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.dispatchEventToListeners(WebInspector.DOMModel.Events.AttrModified, { node: node, name: "style" }); 11655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete this._loadNodeAttributesTimeout; 11695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var nodeId in this._attributeLoadNodeIds) { 11715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var nodeIdAsNumber = parseInt(nodeId, 10); 1172aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.getAttributes(nodeIdAsNumber, callback.bind(this, nodeIdAsNumber)); 11735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._attributeLoadNodeIds = {}; 11755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 11765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1178a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 11795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} newValue 11805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 11815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _characterDataModified: function(nodeId, newValue) 11825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 11835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var node = this._idToDOMNode[nodeId]; 11845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) node._nodeValue = newValue; 118507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.dispatchEventToListeners(WebInspector.DOMModel.Events.CharacterDataModified, node); 11865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 11875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1189a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 1190a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {?WebInspector.DOMNode} 11915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 11925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nodeForId: function(nodeId) 11935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1194a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) return this._idToDOMNode[nodeId] || null; 11955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 11965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _documentUpdated: function() 11985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 11995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._setDocument(null); 12005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 12015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1203a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {?DOMAgent.Node} payload 12045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 12055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _setDocument: function(payload) 12065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 12075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._idToDOMNode = {}; 12085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (payload && "nodeId" in payload) 12095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._document = new WebInspector.DOMDocument(this, payload); 12105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 12115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._document = null; 121207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.dispatchEventToListeners(WebInspector.DOMModel.Events.DocumentUpdated, this._document); 12135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 12145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1216a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.Node} payload 12175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 12185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _setDetachedRoot: function(payload) 12195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 12205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (payload.nodeName === "#document") 12215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) new WebInspector.DOMDocument(this, payload); 12225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 12235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) new WebInspector.DOMNode(this, null, false, payload); 12245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 12255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1227a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} parentId 1228a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!DOMAgent.Node>} payloads 12295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 12305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _setChildNodes: function(parentId, payloads) 12315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 12325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!parentId && payloads.length) { 12335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._setDetachedRoot(payloads[0]); 12345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 12355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 12365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var parent = this._idToDOMNode[parentId]; 12385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parent._setChildrenPayload(payloads); 12395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 12405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1242a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 12435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} newValue 12445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 12455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _childNodeCountUpdated: function(nodeId, newValue) 12465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 12475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var node = this._idToDOMNode[nodeId]; 12485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) node._childNodeCount = newValue; 124907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.dispatchEventToListeners(WebInspector.DOMModel.Events.ChildNodeCountUpdated, node); 12505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 12515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1253a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} parentId 1254a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} prevId 1255a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.Node} payload 12565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 12575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _childNodeInserted: function(parentId, prevId, payload) 12585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 12595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var parent = this._idToDOMNode[parentId]; 12605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var prev = this._idToDOMNode[prevId]; 12615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var node = parent._insertChild(prev, payload); 12625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._idToDOMNode[node.id] = node; 126307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.dispatchEventToListeners(WebInspector.DOMModel.Events.NodeInserted, node); 12645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 12655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1267a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} parentId 1268a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 12695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 12705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _childNodeRemoved: function(parentId, nodeId) 12715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 12725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var parent = this._idToDOMNode[parentId]; 12735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var node = this._idToDOMNode[nodeId]; 12745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parent._removeChild(node); 12755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._unbind(node); 127607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.dispatchEventToListeners(WebInspector.DOMModel.Events.NodeRemoved, {node: node, parent: parent}); 12775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 12785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1280a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} hostId 1281a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.Node} root 12825267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) */ 12835267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) _shadowRootPushed: function(hostId, root) 12845267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) { 12855267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) var host = this._idToDOMNode[hostId]; 12865267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) if (!host) 12875267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return; 12885267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) var node = new WebInspector.DOMNode(this, host.ownerDocument, true, root); 12895267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) node.parentNode = host; 12905267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) this._idToDOMNode[node.id] = node; 12915267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) host._shadowRoots.push(node); 129207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.dispatchEventToListeners(WebInspector.DOMModel.Events.NodeInserted, node); 12935267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) }, 12945267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 12955267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) /** 1296a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} hostId 1297a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} rootId 12985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 12995267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) _shadowRootPopped: function(hostId, rootId) 13005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 13015267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) var host = this._idToDOMNode[hostId]; 13025267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) if (!host) 13035267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return; 13045267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) var root = this._idToDOMNode[rootId]; 13055267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) if (!root) 13065267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return; 130706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) host._removeChild(root); 13085267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) this._unbind(root); 130907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.dispatchEventToListeners(WebInspector.DOMModel.Events.NodeRemoved, {node: root, parent: host}); 13105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 13115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1313a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} parentId 1314a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.Node} pseudoElement 13159bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) */ 13169bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) _pseudoElementAdded: function(parentId, pseudoElement) 13179bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) { 131806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) var parent = this._idToDOMNode[parentId]; 131906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) if (!parent) 132006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) return; 132106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) var node = new WebInspector.DOMNode(this, parent.ownerDocument, false, pseudoElement); 132206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) node.parentNode = parent; 132306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._idToDOMNode[node.id] = node; 132406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) console.assert(!parent._pseudoElements[node.pseudoType()]); 132506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) parent._pseudoElements[node.pseudoType()] = node; 132607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.dispatchEventToListeners(WebInspector.DOMModel.Events.NodeInserted, node); 13279bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) }, 13289bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) 13299bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) /** 1330a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} parentId 1331a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} pseudoElementId 13329bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) */ 13339bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) _pseudoElementRemoved: function(parentId, pseudoElementId) 13349bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) { 133506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) var parent = this._idToDOMNode[parentId]; 133606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) if (!parent) 133706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) return; 133806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) var pseudoElement = this._idToDOMNode[pseudoElementId]; 133906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) if (!pseudoElement) 134006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) return; 134106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) parent._removeChild(pseudoElement); 134206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._unbind(pseudoElement); 134307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.dispatchEventToListeners(WebInspector.DOMModel.Events.NodeRemoved, {node: pseudoElement, parent: parent}); 13449bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) }, 13459bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) 13469bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) /** 1347a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.DOMNode} node 13485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 13495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _unbind: function(node) 13505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 13515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete this._idToDOMNode[node.id]; 13525267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) for (var i = 0; node._children && i < node._children.length; ++i) 13535267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) this._unbind(node._children[i]); 13545267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) for (var i = 0; i < node._shadowRoots.length; ++i) 13555267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) this._unbind(node._shadowRoots[i]); 135606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) var pseudoElements = node.pseudoElements(); 135706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) for (var id in pseudoElements) 135806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._unbind(pseudoElements[id]); 13595267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) if (node._templateContent) 13605267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) this._unbind(node._templateContent); 13615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 13625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1364a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 136553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 136653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) _inspectNodeRequested: function(nodeId) 136753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 1368197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.dispatchEventToListeners(WebInspector.DOMModel.Events.NodeInspected, this.nodeForId(nodeId)); 136953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) }, 137053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 137153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) /** 13725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} query 1373c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {boolean} includeUserAgentShadowDOM 13745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(number)} searchCallback 13755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1376c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) performSearch: function(query, includeUserAgentShadowDOM, searchCallback) 13775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 13785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.cancelSearch(); 13795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 13815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?Protocol.Error} error 13825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} searchId 13835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} resultsCount 138407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @this {WebInspector.DOMModel} 13855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 13865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function callback(error, searchId, resultsCount) 13875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 13885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._searchId = searchId; 13895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) searchCallback(resultsCount); 13905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1391c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._agent.performSearch(query, includeUserAgentShadowDOM, callback.bind(this)); 13925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 13935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1395197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {string} query 1396c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {boolean} includeUserAgentShadowDOM 1397197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @return {!Promise.<number>} 1398197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 1399c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) performSearchPromise: function(query, includeUserAgentShadowDOM) 1400197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 1401197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return new Promise(performSearch.bind(this)); 1402197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 1403197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** 1404197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {function(number)} resolve 1405197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @this {WebInspector.DOMModel} 1406197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 1407197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch function performSearch(resolve) 1408197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 1409c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._agent.performSearch(query, includeUserAgentShadowDOM, callback.bind(this)); 1410197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 1411197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** 1412197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {?Protocol.Error} error 1413197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {string} searchId 1414197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {number} resultsCount 1415197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @this {WebInspector.DOMModel} 1416197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 1417197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch function callback(error, searchId, resultsCount) 1418197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 1419c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) if (!error) 1420c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._searchId = searchId; 1421197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch resolve(error ? 0 : resultsCount); 1422197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch } 1423197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch } 1424197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch }, 1425197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 1426197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** 14275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} index 142809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {?function(?WebInspector.DOMNode)} callback 14295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 14305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) searchResult: function(index, callback) 14315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1432a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) if (this._searchId) 1433aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.getSearchResults(this._searchId, index, index + 1, searchResultsCallback.bind(this)); 1434a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) else 1435a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) callback(null); 14365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1437a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** 1438a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {?Protocol.Error} error 1439a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<number>} nodeIds 144007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @this {WebInspector.DOMModel} 1441a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) */ 1442a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) function searchResultsCallback(error, nodeIds) 1443a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) { 1444a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) if (error) { 1445a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) console.error(error); 1446a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) callback(null); 1447a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) return; 14485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1449a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) if (nodeIds.length != 1) 1450a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) return; 1451a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) 145209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) callback(this.nodeForId(nodeIds[0])); 1453a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) } 14545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 14555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cancelSearch: function() 14575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 14585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._searchId) { 1459aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.discardSearchResults(this._searchId); 14605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete this._searchId; 14615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 14635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1465a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 14665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} selectors 14675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?DOMAgent.NodeId)=} callback 14685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 14695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) querySelector: function(nodeId, selectors, callback) 14705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1471aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.querySelector(nodeId, selectors, this._wrapClientCallback(callback)); 14725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 14735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1475a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 14765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} selectors 1477a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!Array.<!DOMAgent.NodeId>=)=} callback 14785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 14795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) querySelectorAll: function(nodeId, selectors, callback) 14805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1481aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.querySelectorAll(nodeId, selectors, this._wrapClientCallback(callback)); 14825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 14835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1485a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId=} nodeId 14865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string=} mode 1487a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!RuntimeAgent.RemoteObjectId=} objectId 14885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1489926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) highlightDOMNode: function(nodeId, mode, objectId) 14905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1491323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) this.highlightDOMNodeWithConfig(nodeId, { mode: mode }, objectId); 1492323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) }, 1493323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 1494323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) /** 1495323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) * @param {!DOMAgent.NodeId=} nodeId 1496323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) * @param {!{mode: (string|undefined), showInfo: (boolean|undefined)}=} config 1497323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) * @param {!RuntimeAgent.RemoteObjectId=} objectId 1498323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) */ 1499323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) highlightDOMNodeWithConfig: function(nodeId, config, objectId) 1500323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) { 1501323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) config = config || { mode: "all", showInfo: undefined }; 15025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._hideDOMNodeHighlightTimeout) { 15035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clearTimeout(this._hideDOMNodeHighlightTimeout); 15045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete this._hideDOMNodeHighlightTimeout; 15055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1506323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) var highlightConfig = this._buildHighlightConfig(config.mode); 1507323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) if (typeof config.showInfo !== "undefined") 1508323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) highlightConfig.showInfo = config.showInfo; 1509323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) this._highlighter.highlightDOMNode(this.nodeForId(nodeId || 0), highlightConfig, objectId); 15105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 15115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hideDOMNodeHighlight: function() 15135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 15145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.highlightDOMNode(0); 15155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 15165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1518a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 15195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 15205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) highlightDOMNodeForTwoSeconds: function(nodeId) 15215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 15225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.highlightDOMNode(nodeId); 15235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._hideDOMNodeHighlightTimeout = setTimeout(this.hideDOMNodeHighlight.bind(this), 2000); 15245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 15255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 15275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} enabled 152843e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) * @param {boolean} inspectUAShadowDOM 15295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?Protocol.Error)=} callback 15305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 153143e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) setInspectModeEnabled: function(enabled, inspectUAShadowDOM, callback) 15325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 153309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 153407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @this {WebInspector.DOMModel} 153509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 15368abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) function onDocumentAvailable() 15378abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) { 153843e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) this._highlighter.setInspectModeEnabled(enabled, inspectUAShadowDOM, this._buildHighlightConfig(), callback); 15398abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) } 15408abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) this.requestDocument(onDocumentAvailable.bind(this)); 15415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 15425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 15445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string=} mode 1545a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!DOMAgent.HighlightConfig} 15465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 15475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _buildHighlightConfig: function(mode) 15485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 15495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) mode = mode || "all"; 1550197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var highlightConfig = { showInfo: mode === "all", showRulers: WebInspector.overridesSupport.showMetricsRulers(), showExtensionLines: WebInspector.overridesSupport.showExtensionLines()}; 15515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (mode === "all" || mode === "content") 15525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) highlightConfig.contentColor = WebInspector.Color.PageHighlight.Content.toProtocolRGBA(); 15535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (mode === "all" || mode === "padding") 15555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) highlightConfig.paddingColor = WebInspector.Color.PageHighlight.Padding.toProtocolRGBA(); 15565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (mode === "all" || mode === "border") 15585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) highlightConfig.borderColor = WebInspector.Color.PageHighlight.Border.toProtocolRGBA(); 15595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (mode === "all" || mode === "margin") 15615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) highlightConfig.marginColor = WebInspector.Color.PageHighlight.Margin.toProtocolRGBA(); 15625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1563c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) if (mode === "all") { 156453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) highlightConfig.eventTargetColor = WebInspector.Color.PageHighlight.EventTarget.toProtocolRGBA(); 1565c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) highlightConfig.shapeColor = WebInspector.Color.PageHighlight.Shape.toProtocolRGBA(); 1566c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) highlightConfig.shapeMarginColor = WebInspector.Color.PageHighlight.ShapeMargin.toProtocolRGBA(); 1567c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) } 15685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return highlightConfig; 15695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 15705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1572a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.DOMNode} node 1573f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) * @param {function(?Protocol.Error, ...)=} callback 1574f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) * @return {function(...)} 1575f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) * @template T 15765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 15775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _markRevision: function(node, callback) 15785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 157909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 158009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {?Protocol.Error} error 158107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @this {WebInspector.DOMModel} 158209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 15835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function wrapperFunction(error) 15845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 15855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!error) 15865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.markUndoableState(); 15875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (callback) 15895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback.apply(this, arguments); 15905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return wrapperFunction.bind(this); 15925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 15935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15945267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) /** 15955267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * @param {boolean} emulationEnabled 15965267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) */ 15975267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) emulateTouchEventObjects: function(emulationEnabled) 15985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 15995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const injectedFunction = function() { 16005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const touchEvents = ["ontouchstart", "ontouchend", "ontouchmove", "ontouchcancel"]; 1601926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var recepients = [window.__proto__, document.__proto__]; 16025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < touchEvents.length; ++i) { 1603926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (var j = 0; j < recepients.length; ++j) { 1604926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!(touchEvents[i] in recepients[j])) 1605926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Object.defineProperty(recepients[j], touchEvents[i], { value: null, writable: true, configurable: true, enumerable: true }); 1606926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 16075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (emulationEnabled && !this._addTouchEventsScriptInjecting) { 16115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._addTouchEventsScriptInjecting = true; 1612926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) PageAgent.addScriptToEvaluateOnLoad("(" + injectedFunction.toString() + ")()", scriptAddedCallback.bind(this)); 16135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 16145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (typeof this._addTouchEventsScriptId !== "undefined") { 16155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PageAgent.removeScriptToEvaluateOnLoad(this._addTouchEventsScriptId); 16165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete this._addTouchEventsScriptId; 16175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 162009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 162109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {?Protocol.Error} error 162209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {string} scriptId 162307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @this {WebInspector.DOMModel} 162409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 16255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function scriptAddedCallback(error, scriptId) 16265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 16275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete this._addTouchEventsScriptInjecting; 16285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (error) 16295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 16305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._addTouchEventsScriptId = scriptId; 16315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PageAgent.setTouchEmulationEnabled(emulationEnabled); 16345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 16355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) markUndoableState: function() 16375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1638aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.markUndoableState(); 16395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 16405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 16425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?Protocol.Error)=} callback 16435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 16445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) undo: function(callback) 16455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 164609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 164709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {?Protocol.Error} error 164807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @this {WebInspector.DOMModel} 164909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 16505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function mycallback(error) 16515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 165207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.dispatchEventToListeners(WebInspector.DOMModel.Events.UndoRedoCompleted); 16535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(error); 16545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 165607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.dispatchEventToListeners(WebInspector.DOMModel.Events.UndoRedoRequested); 1657aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.undo(callback); 16585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 16595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 16615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?Protocol.Error)=} callback 16625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 16635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) redo: function(callback) 16645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 166509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 166609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {?Protocol.Error} error 166707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @this {WebInspector.DOMModel} 166809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 16695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function mycallback(error) 16705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 167107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.dispatchEventToListeners(WebInspector.DOMModel.Events.UndoRedoCompleted); 16725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(error); 16735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 167507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.dispatchEventToListeners(WebInspector.DOMModel.Events.UndoRedoRequested); 1676aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.redo(callback); 16775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 16785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1679c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) /** 1680a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {?WebInspector.DOMNodeHighlighter} highlighter 1681c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */ 1682c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) setHighlighter: function(highlighter) 1683c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) { 1684c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._highlighter = highlighter || this._defaultHighlighter; 1685c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) }, 1686c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 1687a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch /** 1688a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @param {number} x 1689a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @param {number} y 1690a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @param {function(?WebInspector.DOMNode)} callback 1691a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch */ 1692a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch nodeForLocation: function(x, y, callback) 1693a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch { 1694a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this._agent.getNodeForLocation(x, y, mycallback.bind(this)); 1695a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch 1696a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch /** 1697a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @param {?Protocol.Error} error 1698a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @param {number} nodeId 1699a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @this {WebInspector.DOMModel} 1700a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch */ 1701a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch function mycallback(error, nodeId) 1702a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch { 1703a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch if (error) { 1704a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch callback(null); 1705a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch return; 1706a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch } 1707a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch callback(this.nodeForId(nodeId)); 1708a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch } 1709a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch }, 1710a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch 1711c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) __proto__: WebInspector.SDKModel.prototype 17125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 17135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 17155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 17165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @implements {DOMAgent.Dispatcher} 171707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @param {!WebInspector.DOMModel} domModel 17185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 171907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben MurdochWebInspector.DOMDispatcher = function(domModel) 17205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 172107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._domModel = domModel; 17225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 17235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.DOMDispatcher.prototype = { 17255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) documentUpdated: function() 17265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 172707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._domModel._documentUpdated(); 17285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 17295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1731a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 173253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 173353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) inspectNodeRequested: function(nodeId) 173453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 173507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._domModel._inspectNodeRequested(nodeId); 173653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) }, 173753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 173853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) /** 1739a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 17405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 17415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} value 17425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 17435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) attributeModified: function(nodeId, name, value) 17445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 174507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._domModel._attributeModified(nodeId, name, value); 17465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 17475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1749a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 17505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 17515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 17525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) attributeRemoved: function(nodeId, name) 17535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 175407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._domModel._attributeRemoved(nodeId, name); 17555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 17565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1758a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!DOMAgent.NodeId>} nodeIds 17595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 17605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inlineStyleInvalidated: function(nodeIds) 17615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 176207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._domModel._inlineStyleInvalidated(nodeIds); 17635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 17645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1766a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 17675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} characterData 17685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 17695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) characterDataModified: function(nodeId, characterData) 17705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 177107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._domModel._characterDataModified(nodeId, characterData); 17725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 17735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1775a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} parentId 1776a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!DOMAgent.Node>} payloads 17775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 17785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setChildNodes: function(parentId, payloads) 17795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 178007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._domModel._setChildNodes(parentId, payloads); 17815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 17825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1784a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 17855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} childNodeCount 17865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 17875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) childNodeCountUpdated: function(nodeId, childNodeCount) 17885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 178907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._domModel._childNodeCountUpdated(nodeId, childNodeCount); 17905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 17915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1793a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} parentNodeId 1794a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} previousNodeId 1795a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.Node} payload 17965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 17975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) childNodeInserted: function(parentNodeId, previousNodeId, payload) 17985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 179907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._domModel._childNodeInserted(parentNodeId, previousNodeId, payload); 18005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1803a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} parentNodeId 1804a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 18055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 18065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) childNodeRemoved: function(parentNodeId, nodeId) 18075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 180807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._domModel._childNodeRemoved(parentNodeId, nodeId); 18095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1812a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} hostId 1813a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.Node} root 18145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 18155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) shadowRootPushed: function(hostId, root) 18165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 181707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._domModel._shadowRootPushed(hostId, root); 18185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1821a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} hostId 1822a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} rootId 18235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 18245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) shadowRootPopped: function(hostId, rootId) 18255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 182607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._domModel._shadowRootPopped(hostId, rootId); 18279bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) }, 18289bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) 18299bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) /** 1830a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} parentId 1831a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.Node} pseudoElement 18329bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) */ 18339bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) pseudoElementAdded: function(parentId, pseudoElement) 18349bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) { 183507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._domModel._pseudoElementAdded(parentId, pseudoElement); 18369bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) }, 18379bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) 18389bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) /** 1839a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} parentId 1840a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} pseudoElementId 18419bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) */ 18429bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) pseudoElementRemoved: function(parentId, pseudoElementId) 18439bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) { 184407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._domModel._pseudoElementRemoved(parentId, pseudoElementId); 18455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 18475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 1849aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @constructor 1850197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @extends {WebInspector.SDKObject} 1851aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.Target} target 1852aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!DOMAgent.EventListener} payload 1853aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 1854aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.DOMModel.EventListener = function(target, payload) 1855aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch{ 1856197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebInspector.SDKObject.call(this, target); 1857aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._payload = payload; 1858c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var sourceName = this._payload.sourceName; 1859c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) if (!sourceName) { 1860c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var script = target.debuggerModel.scriptForId(payload.location.scriptId); 1861c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) sourceName = script ? script.contentURL() : ""; 1862c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) } 1863c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._sourceName = sourceName; 1864aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch} 1865aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 1866aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.DOMModel.EventListener.prototype = { 1867aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 1868aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @return {!DOMAgent.EventListener} 1869aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 1870aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch payload: function() 1871aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 1872aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return this._payload; 1873aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }, 1874aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 1875aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 1876aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @return {?WebInspector.DOMNode} 1877aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 1878aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch node: function() 1879aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 1880aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return this.target().domModel.nodeForId(this._payload.nodeId); 1881aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }, 1882aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 1883aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 1884aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @return {!WebInspector.DebuggerModel.Location} 1885aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 1886aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch location: function() 1887aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 1888aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return WebInspector.DebuggerModel.Location.fromPayload(this.target(), this._payload.location); 1889aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }, 1890aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 1891aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 1892aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @return {?WebInspector.RemoteObject} 1893aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 1894aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch handler: function() 1895aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 1896aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return this._payload.handler ? this.target().runtimeModel.createRemoteObject(this._payload.handler) : null; 1897aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }, 1898aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 1899c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 1900c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @return {string} 1901c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 1902c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) sourceName: function() 1903c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 1904c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return this._sourceName; 1905c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 1906c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 1907197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch __proto__: WebInspector.SDKObject.prototype 1908aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch} 1909aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 1910aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch/** 1911c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * @interface 1912c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */ 1913c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)WebInspector.DOMNodeHighlighter = function() { 1914c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)} 1915c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 1916c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)WebInspector.DOMNodeHighlighter.prototype = { 1917c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) /** 1918a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @param {?WebInspector.DOMNode} node 1919a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.HighlightConfig} config 1920a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!RuntimeAgent.RemoteObjectId=} objectId 1921c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */ 1922a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch highlightDOMNode: function(node, config, objectId) {}, 19238abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 19248abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) /** 19258abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * @param {boolean} enabled 192643e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) * @param {boolean} inspectUAShadowDOM 1927a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.HighlightConfig} config 192809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {function(?Protocol.Error)=} callback 19298abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) */ 193043e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) setInspectModeEnabled: function(enabled, inspectUAShadowDOM, config, callback) {} 1931c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)} 1932c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 1933c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)/** 1934c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * @constructor 1935c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * @implements {WebInspector.DOMNodeHighlighter} 1936aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!Protocol.DOMAgent} agent 1937c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */ 1938aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.DefaultDOMNodeHighlighter = function(agent) 1939aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch{ 1940aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent = agent; 1941c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)} 1942c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 1943c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)WebInspector.DefaultDOMNodeHighlighter.prototype = { 1944c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) /** 1945a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @param {?WebInspector.DOMNode} node 1946a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.HighlightConfig} config 1947a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!RuntimeAgent.RemoteObjectId=} objectId 1948c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */ 1949a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch highlightDOMNode: function(node, config, objectId) 1950c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) { 1951a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch if (objectId || node) 1952a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this._agent.highlightNode(config, objectId ? undefined : node.id, objectId); 1953c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) else 1954aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.hideHighlight(); 19558abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) }, 19568abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 19578abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) /** 19588abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * @param {boolean} enabled 195943e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) * @param {boolean} inspectUAShadowDOM 1960a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.HighlightConfig} config 196109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {function(?Protocol.Error)=} callback 19628abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) */ 196343e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) setInspectModeEnabled: function(enabled, inspectUAShadowDOM, config, callback) 19648abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) { 1965197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebInspector.overridesSupport.setTouchEmulationSuspended(enabled); 1966aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.setInspectModeEnabled(enabled, inspectUAShadowDOM, config, callback); 1967c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) } 1968c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)} 1969