15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2010 Google Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions are 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions of source code must retain the above copyright 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions in binary form must reproduce the above 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * in the documentation and/or other materials provided with the 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * distribution. 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * contributors may be used to endorse or promote products derived from 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * this software without specific prior written permission. 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 33c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @extends {WebInspector.SDKModel} 34aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.Target} target 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 36aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.CSSStyleModel = function(target) 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 38c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) WebInspector.SDKModel.call(this, WebInspector.CSSStyleModel, target); 39aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._domModel = target.domModel; 40aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent = target.cssAgent(); 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pendingCommandsMajorState = []; 421e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) this._styleLoader = new WebInspector.CSSStyleModel.ComputedStyleLoader(this); 43aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._domModel.addEventListener(WebInspector.DOMModel.Events.UndoRedoRequested, this._undoRedoRequested, this); 44aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._domModel.addEventListener(WebInspector.DOMModel.Events.UndoRedoCompleted, this._undoRedoCompleted, this); 45f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.MainFrameNavigated, this._mainFrameNavigated, this); 46a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch target.registerCSSDispatcher(new WebInspector.CSSDispatcher(this)); 47aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.enable(this._wasEnabled.bind(this)); 48197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** @type {!StringMap.<!WebInspector.CSSStyleSheetHeader>} */ 49197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._styleSheetIdToHeader = new StringMap(); 50197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** @type {!StringMap.<!Object.<!PageAgent.FrameId, !Array.<!CSSAgent.StyleSheetId>>>} */ 51197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._styleSheetIdsForURL = new StringMap(); 52197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 537242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci if (Runtime.experiments.isEnabled("disableAgentsWhenProfile")) 54e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) WebInspector.profilingLock().addEventListener(WebInspector.Lock.Events.StateChanged, this._profilingStateChanged, this); 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.CSSStyleModel.PseudoStatePropertyName = "pseudoState"; 58aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 60aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.CSSStyleModel} cssModel 61a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!CSSAgent.RuleMatch>|undefined} matchArray 625d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @return {!Array.<!WebInspector.CSSRule>} 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 64aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.CSSStyleModel.parseRuleMatchArrayPayload = function(cssModel, matchArray) 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) if (!matchArray) 6706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) return []; 6806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var result = []; 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < matchArray.length; ++i) 71aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch result.push(WebInspector.CSSRule.parsePayload(cssModel, matchArray[i].rule, matchArray[i].matchingSelectors)); 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return result; 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.CSSStyleModel.Events = { 7606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) ModelWasEnabled: "ModelWasEnabled", 7753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) StyleSheetAdded: "StyleSheetAdded", 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) StyleSheetChanged: "StyleSheetChanged", 7953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) StyleSheetRemoved: "StyleSheetRemoved", 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) MediaQueryResultChanged: "MediaQueryResultChanged", 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 83926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.CSSStyleModel.MediaTypes = ["all", "braille", "embossed", "handheld", "print", "projection", "screen", "speech", "tty", "tv"]; 84926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.CSSStyleModel.prototype = { 86197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch _profilingStateChanged: function() 87197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 88e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) if (WebInspector.profilingLock().isAcquired()) { 89197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._agent.disable(); 90197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._isEnabled = false; 91197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._resetStyleSheets(); 92197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch } else { 93197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._agent.enable(this._wasEnabled.bind(this)); 94197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch } 95197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch }, 96197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 9876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) * @param {function(!Array.<!WebInspector.CSSMedia>)} userCallback 9976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) */ 10076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) getMediaQueries: function(userCallback) 10176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) { 10276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) /** 10376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) * @param {?Protocol.Error} error 10476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) * @param {?Array.<!CSSAgent.CSSMedia>} payload 10576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) * @this {!WebInspector.CSSStyleModel} 10676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) */ 10776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) function callback(error, payload) 10876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) { 10976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) var models = []; 11076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) if (!error && payload) 11176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) models = WebInspector.CSSMedia.parseMediaArrayPayload(this, payload); 11276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) userCallback(models); 11376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) } 11476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) this._agent.getMediaQueries(callback.bind(this)); 11576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) }, 11676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 11776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) /** 11806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @return {boolean} 11906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) */ 12006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) isEnabled: function() 12106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) { 12206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) return this._isEnabled; 12306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) }, 12406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) 12506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) _wasEnabled: function() 12606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) { 12706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._isEnabled = true; 12806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.ModelWasEnabled); 12906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) }, 13006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) 13106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) /** 132a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 133c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {boolean} excludePseudo 134c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {boolean} excludeInherited 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?*)} userCallback 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 137c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) getMatchedStylesAsync: function(nodeId, excludePseudo, excludeInherited, userCallback) 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?*)} userCallback 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?Protocol.Error} error 142a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!CSSAgent.RuleMatch>=} matchedPayload 143a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!CSSAgent.PseudoIdMatches>=} pseudoPayload 144a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!CSSAgent.InheritedStyleEntry>=} inheritedPayload 145aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @this {WebInspector.CSSStyleModel} 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function callback(userCallback, error, matchedPayload, pseudoPayload, inheritedPayload) 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (error) { 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (userCallback) 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) userCallback(null); 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var result = {}; 156aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch result.matchedCSSRules = WebInspector.CSSStyleModel.parseRuleMatchArrayPayload(this, matchedPayload); 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) result.pseudoElements = []; 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (pseudoPayload) { 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < pseudoPayload.length; ++i) { 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var entryPayload = pseudoPayload[i]; 162aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch result.pseudoElements.push({ pseudoId: entryPayload.pseudoId, rules: WebInspector.CSSStyleModel.parseRuleMatchArrayPayload(this, entryPayload.matches) }); 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) result.inherited = []; 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (inheritedPayload) { 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < inheritedPayload.length; ++i) { 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var entryPayload = inheritedPayload[i]; 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var entry = {}; 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (entryPayload.inlineStyle) 172aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch entry.inlineStyle = WebInspector.CSSStyleDeclaration.parsePayload(this, entryPayload.inlineStyle); 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (entryPayload.matchedCSSRules) 174aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch entry.matchedCSSRules = WebInspector.CSSStyleModel.parseRuleMatchArrayPayload(this, entryPayload.matchedCSSRules); 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result.inherited.push(entry); 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (userCallback) 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) userCallback(result); 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 183c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._agent.getMatchedStylesForNode(nodeId, excludePseudo, excludeInherited, callback.bind(this, userCallback)); 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 187a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?WebInspector.CSSStyleDeclaration)} userCallback 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getComputedStyleAsync: function(nodeId, userCallback) 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1921e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) this._styleLoader.getComputedStyle(nodeId, userCallback); 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 196c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * @param {number} nodeId 19709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {function(?string, ?Array.<!CSSAgent.PlatformFontUsage>)} callback 198c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */ 199c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) getPlatformFontsForNode: function(nodeId, callback) 200c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) { 201c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) function platformFontsCallback(error, cssFamilyName, fonts) 202c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) { 203c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) if (error) 204c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) callback(null, null); 205c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) else 206c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) callback(cssFamilyName, fonts); 207c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) } 208aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.getPlatformFontsForNode(nodeId, platformFontsCallback); 209c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) }, 210c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 211c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) /** 21209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {!Array.<!WebInspector.CSSStyleSheetHeader>} 21309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 21409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) allStyleSheets: function() 21509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 216197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var values = this._styleSheetIdToHeader.values(); 21743e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) /** 21843e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) * @param {!WebInspector.CSSStyleSheetHeader} a 21943e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) * @param {!WebInspector.CSSStyleSheetHeader} b 22043e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) * @return {number} 22143e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) */ 22243e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) function styleSheetComparator(a, b) 22343e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) { 22443e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) if (a.sourceURL < b.sourceURL) 22543e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) return -1; 22643e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) else if (a.sourceURL > b.sourceURL) 22743e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) return 1; 22843e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) return a.startLine - b.startLine || a.startColumn - b.startColumn; 22943e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) } 23043e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) values.sort(styleSheetComparator); 23143e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) 23243e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) return values; 23309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) }, 23409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 23509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 236a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?WebInspector.CSSStyleDeclaration, ?WebInspector.CSSStyleDeclaration)} userCallback 2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getInlineStylesAsync: function(nodeId, userCallback) 2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?WebInspector.CSSStyleDeclaration, ?WebInspector.CSSStyleDeclaration)} userCallback 2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?Protocol.Error} error 2445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?CSSAgent.CSSStyle=} inlinePayload 2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?CSSAgent.CSSStyle=} attributesStylePayload 246aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @this {WebInspector.CSSStyleModel} 2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function callback(userCallback, error, inlinePayload, attributesStylePayload) 2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (error || !inlinePayload) 2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) userCallback(null, null); 2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 253aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch userCallback(WebInspector.CSSStyleDeclaration.parsePayload(this, inlinePayload), attributesStylePayload ? WebInspector.CSSStyleDeclaration.parsePayload(this, attributesStylePayload) : null); 2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 256aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.getInlineStylesForNode(nodeId, callback.bind(this, userCallback)); 2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 260aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.DOMNode} node 261aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {string} pseudoClass 262aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {boolean} enable 263aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @return {boolean} 2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 265aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch forcePseudoState: function(node, pseudoClass, enable) 266aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 267aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var pseudoClasses = node.getUserProperty(WebInspector.CSSStyleModel.PseudoStatePropertyName) || []; 268aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (enable) { 269aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (pseudoClasses.indexOf(pseudoClass) >= 0) 270aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return false; 271aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch pseudoClasses.push(pseudoClass); 272aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch node.setUserProperty(WebInspector.CSSStyleModel.PseudoStatePropertyName, pseudoClasses); 273aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } else { 274aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (pseudoClasses.indexOf(pseudoClass) < 0) 275aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return false; 276aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch pseudoClasses.remove(pseudoClass); 277aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (!pseudoClasses.length) 278aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch node.removeUserProperty(WebInspector.CSSStyleModel.PseudoStatePropertyName); 279aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 280aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 281aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.forcePseudoState(node.id, pseudoClasses); 282aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return true; 2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 286a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @param {!CSSAgent.CSSRule} rule 287a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 2885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} newSelector 289a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!WebInspector.CSSRule)} successCallback 2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function()} failureCallback 2915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 292a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch setRuleSelector: function(rule, nodeId, newSelector, successCallback, failureCallback) 2935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 295a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 296a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!WebInspector.CSSRule)} successCallback 2975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function()} failureCallback 2985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?Protocol.Error} error 2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} newSelector 30009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {!CSSAgent.CSSRule} rulePayload 30109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.CSSStyleModel} 3025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function callback(nodeId, successCallback, failureCallback, newSelector, error, rulePayload) 3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pendingCommandsMajorState.pop(); 306f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) if (error) { 3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) failureCallback(); 308f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) return; 3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 310aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._domModel.markUndoableState(); 311f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) this._computeMatchingSelectors(rulePayload, nodeId, successCallback, failureCallback); 3125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 314a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch if (!rule.styleSheetId) 315a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch throw "No rule stylesheet id"; 3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pendingCommandsMajorState.push(true); 317a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this._agent.setRuleSelector(rule.styleSheetId, rule.selectorRange, newSelector, callback.bind(this, nodeId, successCallback, failureCallback, newSelector)); 3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 321a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!CSSAgent.CSSRule} rulePayload 322a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 323a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!WebInspector.CSSRule)} successCallback 3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function()} failureCallback 3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 326f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) _computeMatchingSelectors: function(rulePayload, nodeId, successCallback, failureCallback) 3275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 328f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) var ownerDocumentId = this._ownerDocumentId(nodeId); 329f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) if (!ownerDocumentId) { 330f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) failureCallback(); 331f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) return; 332f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) } 333aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var rule = WebInspector.CSSRule.parsePayload(this, rulePayload); 334f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) var matchingSelectors = []; 335f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) var allSelectorsBarrier = new CallbackBarrier(); 336f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) for (var i = 0; i < rule.selectors.length; ++i) { 337f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) var selector = rule.selectors[i]; 33843e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) var boundCallback = allSelectorsBarrier.createCallback(selectorQueried.bind(null, i, nodeId, matchingSelectors)); 339aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._domModel.querySelectorAll(ownerDocumentId, selector.value, boundCallback); 340f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) } 341f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) allSelectorsBarrier.callWhenDone(function() { 342f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) rule.matchingSelectors = matchingSelectors; 343f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) successCallback(rule); 344f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) }); 345f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) 3465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 347f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) * @param {number} index 348a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 349a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<number>} matchingSelectors 350a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!DOMAgent.NodeId>=} matchingNodeIds 3515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 352f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) function selectorQueried(index, nodeId, matchingSelectors, matchingNodeIds) 3535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 354f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) if (!matchingNodeIds) 3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 356f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) if (matchingNodeIds.indexOf(nodeId) !== -1) 357f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) matchingSelectors.push(index); 3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 359f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) }, 3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 361f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) /** 362d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!CSSAgent.StyleSheetId} styleSheetId 363d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!WebInspector.DOMNode} node 364e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {string} ruleText 365e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!WebInspector.TextRange} ruleLocation 366a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!WebInspector.CSSRule)} successCallback 367f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) * @param {function()} failureCallback 368f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) */ 369e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) addRule: function(styleSheetId, node, ruleText, ruleLocation, successCallback, failureCallback) 370f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) { 371d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._pendingCommandsMajorState.push(true); 372e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) this._agent.addRule(styleSheetId, ruleText, ruleLocation, callback.bind(this)); 373d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 3745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 3755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?Protocol.Error} error 37609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {!CSSAgent.CSSRule} rulePayload 37709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.CSSStyleModel} 3785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 37909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) function callback(error, rulePayload) 3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pendingCommandsMajorState.pop(); 3825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (error) { 3835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Invalid syntax for a selector 3845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) failureCallback(); 3855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 386aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._domModel.markUndoableState(); 387d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._computeMatchingSelectors(rulePayload, node.id, successCallback, failureCallback); 3885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 390d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 3915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 392d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 393d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!WebInspector.DOMNode} node 394d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {function(?WebInspector.CSSStyleSheetHeader)} callback 395d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 396d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) requestViaInspectorStylesheet: function(node, callback) 397d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 398a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch var frameId = node.frameId() || this.target().resourceTreeModel.mainFrame.id; 399197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var headers = this._styleSheetIdToHeader.values(); 400197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch for (var i = 0; i < headers.length; ++i) { 401197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var styleSheetHeader = headers[i]; 402d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (styleSheetHeader.frameId === frameId && styleSheetHeader.isViaInspector()) { 403d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) callback(styleSheetHeader); 404d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return; 405d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 406d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 407d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 408d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 409d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @this {WebInspector.CSSStyleModel} 410d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {?Protocol.Error} error 411d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!CSSAgent.StyleSheetId} styleSheetId 412d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 413d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) function innerCallback(error, styleSheetId) 414d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 415d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (error) { 416d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) console.error(error); 417d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) callback(null); 418d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 419d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 420197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch callback(this._styleSheetIdToHeader.get(styleSheetId) || null); 421d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 422d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 423aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._agent.createStyleSheet(frameId, innerCallback.bind(this)); 4245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) mediaQueryResultChanged: function() 4275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.MediaQueryResultChanged); 4295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 43293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @param {!CSSAgent.StyleSheetId} id 433197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @return {?WebInspector.CSSStyleSheetHeader} 43493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 43593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) styleSheetHeaderForId: function(id) 43693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 437197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return this._styleSheetIdToHeader.get(id) || null; 43893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) }, 43993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 44093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 441a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Array.<!WebInspector.CSSStyleSheetHeader>} 44253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 44353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) styleSheetHeaders: function() 44453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 445197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return this._styleSheetIdToHeader.values(); 44653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) }, 44753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 44853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) /** 449a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 450a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {?DOMAgent.NodeId} 4515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _ownerDocumentId: function(nodeId) 4535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 454aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var node = this._domModel.nodeForId(nodeId); 4555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node) 4565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return null; 4575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return node.ownerDocument ? node.ownerDocument.id : null; 4585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 461a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!CSSAgent.StyleSheetId} styleSheetId 4625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _fireStyleSheetChanged: function(styleSheetId) 4645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this._pendingCommandsMajorState.length) 4665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 4675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var majorChange = this._pendingCommandsMajorState[this._pendingCommandsMajorState.length - 1]; 4695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47019cde67944066db31e633d9e386f2aa9bf9fadb3Torne (Richard Coles) if (!styleSheetId || !this.hasEventListeners(WebInspector.CSSStyleModel.Events.StyleSheetChanged)) 4715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 4725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.StyleSheetChanged, { styleSheetId: styleSheetId, majorChange: majorChange }); 4745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 477a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!CSSAgent.CSSStyleSheetHeader} header 47853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 47953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) _styleSheetAdded: function(header) 48053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 481197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch console.assert(!this._styleSheetIdToHeader.get(header.styleSheetId)); 482aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var styleSheetHeader = new WebInspector.CSSStyleSheetHeader(this, header); 4839e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) this._styleSheetIdToHeader.set(header.styleSheetId, styleSheetHeader); 48493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) var url = styleSheetHeader.resourceURL(); 485197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch if (!this._styleSheetIdsForURL.get(url)) 4869e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) this._styleSheetIdsForURL.set(url, {}); 487197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var frameIdToStyleSheetIds = this._styleSheetIdsForURL.get(url); 488e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch var styleSheetIds = frameIdToStyleSheetIds[styleSheetHeader.frameId]; 489e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch if (!styleSheetIds) { 490e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch styleSheetIds = []; 491e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch frameIdToStyleSheetIds[styleSheetHeader.frameId] = styleSheetIds; 492e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch } 493e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch styleSheetIds.push(styleSheetHeader.id); 49493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.StyleSheetAdded, styleSheetHeader); 49553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) }, 49653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 49753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) /** 49853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * @param {!CSSAgent.StyleSheetId} id 49953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 50053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) _styleSheetRemoved: function(id) 50153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 502197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var header = this._styleSheetIdToHeader.get(id); 50353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) console.assert(header); 504aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (!header) 505aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return; 506197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._styleSheetIdToHeader.remove(id); 50793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) var url = header.resourceURL(); 508197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var frameIdToStyleSheetIds = /** @type {!Object.<!PageAgent.FrameId, !Array.<!CSSAgent.StyleSheetId>>} */ (this._styleSheetIdsForURL.get(url)); 509197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch console.assert(frameIdToStyleSheetIds, "No frameId to styleSheetId map is available for given style sheet URL."); 510e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch frameIdToStyleSheetIds[header.frameId].remove(id); 511e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch if (!frameIdToStyleSheetIds[header.frameId].length) { 512e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch delete frameIdToStyleSheetIds[header.frameId]; 513197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch if (!Object.keys(frameIdToStyleSheetIds).length) 514197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._styleSheetIdsForURL.remove(url); 515e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch } 51653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.StyleSheetRemoved, header); 51753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) }, 51853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 51953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) /** 52093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @param {string} url 521a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Array.<!CSSAgent.StyleSheetId>} 52293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 52393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) styleSheetIdsForURL: function(url) 52493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 525197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var frameIdToStyleSheetIds = this._styleSheetIdsForURL.get(url); 526e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch if (!frameIdToStyleSheetIds) 52793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return []; 528e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch 529e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch var result = []; 530e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch for (var frameId in frameIdToStyleSheetIds) 531e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch result = result.concat(frameIdToStyleSheetIds[frameId]); 532e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch return result; 53393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) }, 53493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 53593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 536521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {string} url 537a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Object.<!PageAgent.FrameId, !Array.<!CSSAgent.StyleSheetId>>} 538521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 539521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) styleSheetIdsByFrameIdForURL: function(url) 540521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 541197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var styleSheetIdsForFrame = this._styleSheetIdsForURL.get(url); 542521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!styleSheetIdsForFrame) 543521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return {}; 544521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return styleSheetIdsForFrame; 545521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 546521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 547521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 548a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!CSSAgent.StyleSheetId} styleSheetId 5495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} newText 5505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} majorChange 55109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {function(?Protocol.Error)} userCallback 5525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setStyleSheetText: function(styleSheetId, newText, majorChange, userCallback) 5545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 555197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var header = this._styleSheetIdToHeader.get(styleSheetId); 55609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) console.assert(header); 55709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._pendingCommandsMajorState.push(majorChange); 55809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) header.setContent(newText, callback.bind(this)); 55909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 56009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 56109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {?Protocol.Error} error 56209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.CSSStyleModel} 56309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 5645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function callback(error) 5655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pendingCommandsMajorState.pop(); 5675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!error && majorChange) 568aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._domModel.markUndoableState(); 569f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 5705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!error && userCallback) 5715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) userCallback(error); 5725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _undoRedoRequested: function() 5765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pendingCommandsMajorState.push(true); 5785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _undoRedoCompleted: function() 5815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pendingCommandsMajorState.pop(); 5835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 585f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) _mainFrameNavigated: function() 5865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 58793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this._resetStyleSheets(); 5885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) _resetStyleSheets: function() 591926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 592197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var headers = this._styleSheetIdToHeader.values(); 593197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._styleSheetIdsForURL.clear(); 594197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._styleSheetIdToHeader.clear(); 595197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch for (var i = 0; i < headers.length; ++i) 596197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.StyleSheetRemoved, headers[i]); 597926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 598926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 599c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) __proto__: WebInspector.SDKModel.prototype 6005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 6035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 604197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @extends {WebInspector.SDKObject} 605f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) * @param {!WebInspector.Target} target 606c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {?CSSAgent.StyleSheetId} styleSheetId 6075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} url 6085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} lineNumber 609926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {number=} columnNumber 6105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 611c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)WebInspector.CSSLocation = function(target, styleSheetId, url, lineNumber, columnNumber) 6125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 613197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebInspector.SDKObject.call(this, target); 614c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this.styleSheetId = styleSheetId; 6155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.url = url; 6165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.lineNumber = lineNumber; 617926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.columnNumber = columnNumber || 0; 6185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 620aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.CSSLocation.prototype = { 621197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch __proto__: WebInspector.SDKObject.prototype 622aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch} 623aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 6245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 6255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 626aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.CSSStyleModel} cssModel 627a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!CSSAgent.CSSStyle} payload 6285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 629aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.CSSStyleDeclaration = function(cssModel, payload) 6305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 631aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._cssModel = cssModel; 632a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this.styleSheetId = payload.styleSheetId; 633aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this.range = payload.range ? WebInspector.TextRange.fromObject(payload.range) : null; 6345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._shorthandValues = WebInspector.CSSStyleDeclaration.buildShorthandValueMap(payload.shorthandEntries); 6355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._livePropertyMap = {}; // LIVE properties (source-based or style-based) : { name -> CSSProperty } 6365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._allProperties = []; // ALL properties: [ CSSProperty ] 6375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.__disabledProperties = {}; // DISABLED properties: { index -> CSSProperty } 6385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var payloadPropertyCount = payload.cssProperties.length; 6395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 640d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 6415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < payloadPropertyCount; ++i) { 6425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var property = WebInspector.CSSProperty.parsePayload(this, i, payload.cssProperties[i]); 6435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._allProperties.push(property); 644d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 645d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 646d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._computeActiveProperties(); 647d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 648d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) var propertyIndex = 0; 649d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) for (var i = 0; i < this._allProperties.length; ++i) { 650d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) var property = this._allProperties[i]; 6515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (property.disabled) 6525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.__disabledProperties[i] = property; 6535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!property.active && !property.styleBased) 6545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) continue; 6555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var name = property.name; 6565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[propertyIndex] = name; 6575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._livePropertyMap[name] = property; 6585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ++propertyIndex; 6595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.length = propertyIndex; 6615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ("cssText" in payload) 6625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.cssText = payload.cssText; 6635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 666a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!CSSAgent.ShorthandEntry>} shorthandEntries 667a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Object} 6685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.CSSStyleDeclaration.buildShorthandValueMap = function(shorthandEntries) 6705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var result = {}; 6725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < shorthandEntries.length; ++i) 6735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result[shorthandEntries[i].name] = shorthandEntries[i].value; 6745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return result; 6755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 678aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.CSSStyleModel} cssModel 679a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!CSSAgent.CSSStyle} payload 680a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.CSSStyleDeclaration} 6815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 682aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.CSSStyleDeclaration.parsePayload = function(cssModel, payload) 6835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 684aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return new WebInspector.CSSStyleDeclaration(cssModel, payload); 6855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 688aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.CSSStyleModel} cssModel 689a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!CSSAgent.CSSComputedStyleProperty>} payload 690a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.CSSStyleDeclaration} 6915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 692aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.CSSStyleDeclaration.parseComputedStylePayload = function(cssModel, payload) 6935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 694a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var newPayload = /** @type {!CSSAgent.CSSStyle} */ ({ cssProperties: [], shorthandEntries: [], width: "", height: "" }); 6955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (payload) 696a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) newPayload.cssProperties = /** @type {!Array.<!CSSAgent.CSSProperty>} */ (payload); 6975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 698aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return new WebInspector.CSSStyleDeclaration(cssModel, newPayload); 6995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.CSSStyleDeclaration.prototype = { 702aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 703c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @return {!WebInspector.Target} 704c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 705c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) target: function() 706c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 707c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return this._cssModel.target(); 708c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 709c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 710c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 711aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {string} styleSheetId 712aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.TextRange} oldRange 713aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.TextRange} newRange 714aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 715aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch sourceStyleSheetEdited: function(styleSheetId, oldRange, newRange) 716aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 717a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch if (this.styleSheetId !== styleSheetId) 718aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return; 719aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (this.range) 720aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this.range = this.range.rebaseAfterTextEdit(oldRange, newRange); 721aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch for (var i = 0; i < this._allProperties.length; ++i) 722aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._allProperties[i].sourceStyleSheetEdited(styleSheetId, oldRange, newRange); 723aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }, 724aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 725d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) _computeActiveProperties: function() 726d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 727d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) var activeProperties = {}; 728d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) for (var i = this._allProperties.length - 1; i >= 0; --i) { 729d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) var property = this._allProperties[i]; 730d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (property.styleBased || property.disabled) 731d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) continue; 732d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) property._setActive(false); 733d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (!property.parsedOk) 734d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) continue; 735d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) var canonicalName = WebInspector.CSSMetadata.canonicalPropertyName(property.name); 736d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) var activeProperty = activeProperties[canonicalName]; 737d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (!activeProperty || (!activeProperty.important && property.important)) 738d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) activeProperties[canonicalName] = property; 739d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 740d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) for (var propertyName in activeProperties) { 741d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) var property = activeProperties[propertyName]; 742d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) property._setActive(true); 743d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 744d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 745d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 7465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get allProperties() 7475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._allProperties; 7495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 7525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 753a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {?WebInspector.CSSProperty} 7545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 7555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getLiveProperty: function(name) 7565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 757a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) return this._livePropertyMap[name] || null; 7585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 7615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 7625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {string} 7635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 7645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getPropertyValue: function(name) 7655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var property = this._livePropertyMap[name]; 7675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return property ? property.value : ""; 7685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 7715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 7725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {boolean} 7735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 7745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isPropertyImplicit: function(name) 7755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var property = this._livePropertyMap[name]; 7775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return property ? property.implicit : ""; 7785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 7815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 782a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Array.<!WebInspector.CSSProperty>} 7835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 7845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) longhandProperties: function(name) 7855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 786926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var longhands = WebInspector.CSSMetadata.cssPropertiesMetainfo.longhands(name); 7875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var result = []; 7885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; longhands && i < longhands.length; ++i) { 7895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var property = this._livePropertyMap[longhands[i]]; 7905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (property) 7915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result.push(property); 7925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return result; 7945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 7975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} shorthandProperty 7985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {string} 7995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) shorthandValue: function(shorthandProperty) 8015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._shorthandValues[shorthandProperty]; 8035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 8065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} index 8075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {?WebInspector.CSSProperty} 8085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propertyAt: function(index) 8105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (index < this.allProperties.length) ? this.allProperties[index] : null; 8125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 8155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {number} 8165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) pastLastSourcePropertyIndex: function() 8185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = this.allProperties.length - 1; i >= 0; --i) { 820d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (this.allProperties[i].range) 8215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return i + 1; 8225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 8245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 827a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @param {number} index 828a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @return {!WebInspector.TextRange} 829a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch */ 830a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch _insertionRange: function(index) 831a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch { 832a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch var property = this.propertyAt(index); 833a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch return property && property.range ? property.range.collapseToStart() : this.range.collapseToEnd(); 834a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch }, 835a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch 836a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch /** 8375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number=} index 83809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {!WebInspector.CSSProperty} 8395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) newBlankProperty: function(index) 8415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) index = (typeof index === "undefined") ? this.pastLastSourcePropertyIndex() : index; 843a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch var property = new WebInspector.CSSProperty(this, index, "", "", false, false, true, false, "", this._insertionRange(index)); 844d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) property._setActive(true); 845d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return property; 8465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 8495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} index 8505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 8515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} value 852926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {function(?WebInspector.CSSStyleDeclaration)=} userCallback 8535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) insertPropertyAt: function(index, name, value, userCallback) 8555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 8575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?string} error 858a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!CSSAgent.CSSStyle} payload 859aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @this {!WebInspector.CSSStyleDeclaration} 8605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 861926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) function callback(error, payload) 8625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 863aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._cssModel._pendingCommandsMajorState.pop(); 8645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!userCallback) 8655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 8665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (error) { 8685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) console.error(error); 8695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) userCallback(null); 87053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } else 871aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch userCallback(WebInspector.CSSStyleDeclaration.parsePayload(this._cssModel, payload)); 8725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 874a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch if (!this.styleSheetId) 875a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch throw "No stylesheet id"; 8765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 877aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._cssModel._pendingCommandsMajorState.push(true); 878a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this._cssModel._agent.setPropertyText(this.styleSheetId, this._insertionRange(index), name + ": " + value + ";", callback.bind(this)); 8795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 8825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 8835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} value 884926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {function(?WebInspector.CSSStyleDeclaration)=} userCallback 8855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) appendProperty: function(name, value, userCallback) 8875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.insertPropertyAt(this.allProperties.length, name, value, userCallback); 889aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 8905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 8935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 894e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!CSSAgent.Selector} payload 895e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 896e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)WebInspector.CSSRuleSelector = function(payload) 897e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles){ 898e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) this.value = payload.value; 899e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) if (payload.range) 900e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) this.range = WebInspector.TextRange.fromObject(payload.range); 901e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)} 902e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 903e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)/** 904e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!CSSAgent.Selector} payload 905e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @return {!WebInspector.CSSRuleSelector} 906e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 907e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)WebInspector.CSSRuleSelector.parsePayload = function(payload) 908e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles){ 909e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return new WebInspector.CSSRuleSelector(payload) 910e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)} 911e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 912e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)WebInspector.CSSRuleSelector.prototype = { 913e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** 914e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!WebInspector.TextRange} oldRange 915e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!WebInspector.TextRange} newRange 916e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 917e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) sourceStyleRuleEdited: function(oldRange, newRange) 918e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) { 919e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) if (!this.range) 920e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return; 921e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) this.range = this.range.rebaseAfterTextEdit(oldRange, newRange); 922e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) } 923e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)} 924e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 925e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)/** 926e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @constructor 927aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.CSSStyleModel} cssModel 928a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!CSSAgent.CSSRule} payload 929a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<number>=} matchingSelectors 9305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 931aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.CSSRule = function(cssModel, payload, matchingSelectors) 9325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 933aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._cssModel = cssModel; 934a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this.styleSheetId = payload.styleSheetId; 9355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (matchingSelectors) 9365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.matchingSelectors = matchingSelectors; 937e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 938e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** @type {!Array.<!WebInspector.CSSRuleSelector>} */ 939e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) this.selectors = []; 940e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) for (var i = 0; i < payload.selectorList.selectors.length; ++i) { 941e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) var selectorPayload = payload.selectorList.selectors[i]; 942e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) this.selectors.push(WebInspector.CSSRuleSelector.parsePayload(selectorPayload)); 943aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 944bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) this.selectorText = this.selectors.select("value").join(", "); 945bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 946bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) var firstRange = this.selectors[0].range; 947bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) if (firstRange) { 948bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) var lastRange = this.selectors.peekLast().range; 949a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.selectorRange = new WebInspector.TextRange(firstRange.startLine, firstRange.startColumn, lastRange.endLine, lastRange.endColumn); 950bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) } 951a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch if (this.styleSheetId) { 952a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch var styleSheetHeader = cssModel.styleSheetHeaderForId(this.styleSheetId); 953a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this.sourceURL = styleSheetHeader.sourceURL; 954a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch } 9555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.origin = payload.origin; 956aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this.style = WebInspector.CSSStyleDeclaration.parsePayload(this._cssModel, payload.style); 9575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.style.parentRule = this; 9585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (payload.media) 959aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this.media = WebInspector.CSSMedia.parseMediaArrayPayload(cssModel, payload.media); 960c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._setFrameId(); 9615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 964aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.CSSStyleModel} cssModel 965a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!CSSAgent.CSSRule} payload 966a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<number>=} matchingIndices 967a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.CSSRule} 9685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 969aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.CSSRule.parsePayload = function(cssModel, payload, matchingIndices) 9705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 971aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return new WebInspector.CSSRule(cssModel, payload, matchingIndices); 9725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.CSSRule.prototype = { 975aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 976aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {string} styleSheetId 977aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.TextRange} oldRange 978aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.TextRange} newRange 979aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 980aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch sourceStyleSheetEdited: function(styleSheetId, oldRange, newRange) 981aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 982a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch if (this.styleSheetId === styleSheetId) { 983aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (this.selectorRange) 984aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this.selectorRange = this.selectorRange.rebaseAfterTextEdit(oldRange, newRange); 985e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) for (var i = 0; i < this.selectors.length; ++i) 986e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) this.selectors[i].sourceStyleRuleEdited(oldRange, newRange); 987aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 988aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (this.media) { 989aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch for (var i = 0; i < this.media.length; ++i) 990aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this.media[i].sourceStyleSheetEdited(styleSheetId, oldRange, newRange); 991aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 992aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this.style.sourceStyleSheetEdited(styleSheetId, oldRange, newRange); 993aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }, 994aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 995c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _setFrameId: function() 996926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 997a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch if (!this.styleSheetId) 998926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 999a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch var styleSheetHeader = this._cssModel.styleSheetHeaderForId(this.styleSheetId); 1000521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this.frameId = styleSheetHeader.frameId; 100193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) }, 100293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 100393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 100493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @return {string} 100593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 100693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) resourceURL: function() 100793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 1008a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch if (!this.styleSheetId) 100993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return ""; 1010a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch var styleSheetHeader = this._cssModel.styleSheetHeaderForId(this.styleSheetId); 101193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return styleSheetHeader.resourceURL(); 101293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) }, 101393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 101493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 1015f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) * @param {number} selectorIndex 101693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @return {number} 101793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 1018f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) lineNumberInSource: function(selectorIndex) 101993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 1020f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) var selector = this.selectors[selectorIndex]; 1021a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch if (!selector || !selector.range || !this.styleSheetId) 102293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return 0; 1023a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch var styleSheetHeader = this._cssModel.styleSheetHeaderForId(this.styleSheetId); 1024f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) return styleSheetHeader.lineNumberInSource(selector.range.startLine); 102593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) }, 102693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 102793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 1028f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) * @param {number} selectorIndex 102993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @return {number|undefined} 103093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 1031f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) columnNumberInSource: function(selectorIndex) 103293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 1033f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) var selector = this.selectors[selectorIndex]; 1034a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch if (!selector || !selector.range || !this.styleSheetId) 103593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return undefined; 1036a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch var styleSheetHeader = this._cssModel.styleSheetHeaderForId(this.styleSheetId); 103793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) console.assert(styleSheetHeader); 1038f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) return styleSheetHeader.columnNumberInSource(selector.range.startLine, selector.range.startColumn); 1039926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1040926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1041c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 1042c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {number} index 1043c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @return {?WebInspector.CSSLocation} 1044c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 1045c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) rawSelectorLocation: function(index) 1046c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 1047c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var lineNumber = this.lineNumberInSource(index); 1048c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var columnNumber = this.columnNumberInSource(index); 1049c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return new WebInspector.CSSLocation(this._cssModel.target(), this.styleSheetId || null, this.resourceURL(), lineNumber, columnNumber); 1050c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 1051c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 10525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get isUserAgent() 10535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 10545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.origin === "user-agent"; 10555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get isUser() 10585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 10595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.origin === "user"; 10605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get isViaInspector() 10635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 10645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.origin === "inspector"; 10655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get isRegular() 10685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 10695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.origin === "regular"; 10705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 10745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 10755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?WebInspector.CSSStyleDeclaration} ownerStyle 10765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} index 10775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 10785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} value 1079d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {boolean} important 1080d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {boolean} disabled 10815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} parsedOk 10825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} implicit 10835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?string=} text 1084a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!CSSAgent.SourceRange=} range 10855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1086d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)WebInspector.CSSProperty = function(ownerStyle, index, name, value, important, disabled, parsedOk, implicit, text, range) 10875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 10885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.ownerStyle = ownerStyle; 10895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.index = index; 10905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.name = name; 10915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.value = value; 1092d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.important = important; 1093d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.disabled = disabled; 10945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.parsedOk = parsedOk; 10955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.implicit = implicit; 10965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.text = text; 1097aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this.range = range ? WebInspector.TextRange.fromObject(range) : null; 10985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 11015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?WebInspector.CSSStyleDeclaration} ownerStyle 11025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} index 1103a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!CSSAgent.CSSProperty} payload 1104a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.CSSProperty} 11055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 11065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.CSSProperty.parsePayload = function(ownerStyle, index, payload) 11075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 11085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The following default field values are used in the payload: 1109d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) // important: false 11105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // parsedOk: true 11115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // implicit: false 1112d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) // disabled: false 11135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var result = new WebInspector.CSSProperty( 1114d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) ownerStyle, index, payload.name, payload.value, payload.important || false, payload.disabled || false, ("parsedOk" in payload) ? !!payload.parsedOk : true, !!payload.implicit, payload.text, payload.range); 11155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return result; 11165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 11175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.CSSProperty.prototype = { 1119d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 1120aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {string} styleSheetId 1121aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.TextRange} oldRange 1122aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.TextRange} newRange 1123aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 1124aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch sourceStyleSheetEdited: function(styleSheetId, oldRange, newRange) 1125aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 1126a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch if (this.ownerStyle.styleSheetId !== styleSheetId) 1127aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return; 1128aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (this.range) 1129aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this.range = this.range.rebaseAfterTextEdit(oldRange, newRange); 1130aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }, 1131aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 1132aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 1133d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {boolean} active 1134d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 1135d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) _setActive: function(active) 1136d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 1137d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._active = active; 1138d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 1139d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 11405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get propertyText() 11415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 11425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.text !== undefined) 11435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.text; 11445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.name === "") 11465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ""; 1147d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return this.name + ": " + this.value + (this.important ? " !important" : "") + ";"; 11485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 11495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get isLive() 11515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 11525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.active || this.styleBased; 11535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 11545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get active() 11565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1157d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return typeof this._active === "boolean" && this._active; 11585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 11595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get styleBased() 11615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1162d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return !this.range; 11635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 11645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get inactive() 11665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1167d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return typeof this._active === "boolean" && !this._active; 11685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 11695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 11715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} propertyText 11725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} majorChange 11735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} overwrite 11745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?WebInspector.CSSStyleDeclaration)=} userCallback 11755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 11765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setText: function(propertyText, majorChange, overwrite, userCallback) 11775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 11785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 11795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?WebInspector.CSSStyleDeclaration} style 11805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 11815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function enabledCallback(style) 11825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 11835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (userCallback) 11845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) userCallback(style); 11855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 11885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?string} error 1189a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!CSSAgent.CSSStyle} stylePayload 119009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.CSSProperty} 11915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 11925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function callback(error, stylePayload) 11935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1194aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this.ownerStyle._cssModel._pendingCommandsMajorState.pop(); 11955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!error) { 11965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (majorChange) 1197aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this.ownerStyle._cssModel._domModel.markUndoableState(); 1198aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var style = WebInspector.CSSStyleDeclaration.parsePayload(this.ownerStyle._cssModel, stylePayload); 11995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var newProperty = style.allProperties[this.index]; 12005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (newProperty && this.disabled && !propertyText.match(/^\s*$/)) { 12025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) newProperty.setDisabled(false, enabledCallback); 12035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 12045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 12055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (userCallback) 12065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) userCallback(style); 12075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 12085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (userCallback) 12095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) userCallback(null); 12105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 12115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 12125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this.ownerStyle) 12145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) throw "No ownerStyle for property"; 12155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1216a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch if (!this.ownerStyle.styleSheetId) 12175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) throw "No owner style id"; 12185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // An index past all the properties adds a new property to the style. 1220aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var cssModel = this.ownerStyle._cssModel; 1221aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch cssModel._pendingCommandsMajorState.push(majorChange); 1222a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch var range = /** @type {!WebInspector.TextRange} */ (this.range); 1223a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch cssModel._agent.setPropertyText(this.ownerStyle.styleSheetId, overwrite ? range : range.collapseToStart(), propertyText, callback.bind(this)); 12245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 12255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 12275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} newValue 12285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} majorChange 12295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} overwrite 12305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?WebInspector.CSSStyleDeclaration)=} userCallback 12315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 12325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setValue: function(newValue, majorChange, overwrite, userCallback) 12335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1234d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) var text = this.name + ": " + newValue + (this.important ? " !important" : "") + ";" 12355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.setText(text, majorChange, overwrite, userCallback); 12365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 12375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 12395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} disabled 12405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?WebInspector.CSSStyleDeclaration)=} userCallback 12415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 12425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setDisabled: function(disabled, userCallback) 12435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 12445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this.ownerStyle && userCallback) 12455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) userCallback(null); 124609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (disabled === this.disabled) { 124709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (userCallback) 124809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) userCallback(this.ownerStyle); 124909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return; 12505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 125109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (disabled) 125209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this.setText("/* " + this.text + " */", true, true, userCallback); 125309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) else 125409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this.setText(this.text.substring(2, this.text.length - 2).trim(), true, true, userCallback); 12555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 12565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 12575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 12595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 12607242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @param {!CSSAgent.MediaQuery} payload 12617242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */ 12627242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciWebInspector.CSSMediaQuery = function(payload) 12637242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{ 12647242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci this._active = payload.active; 12657242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci this._expressions = []; 12667242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci for (var j = 0; j < payload.expressions.length; ++j) 12677242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci this._expressions.push(WebInspector.CSSMediaQueryExpression.parsePayload(payload.expressions[j])); 12687242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} 12697242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 12707242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci/** 12717242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @param {!CSSAgent.MediaQuery} payload 12727242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @return {!WebInspector.CSSMediaQuery} 12737242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */ 12747242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciWebInspector.CSSMediaQuery.parsePayload = function(payload) 12757242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{ 12767242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return new WebInspector.CSSMediaQuery(payload); 12777242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} 12787242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 12797242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciWebInspector.CSSMediaQuery.prototype = { 12807242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci /** 12817242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @return {boolean} 12827242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */ 12837242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci active: function() 12847242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci { 12857242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return this._active; 12867242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci }, 12877242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 12887242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci /** 12897242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @return {!Array.<!WebInspector.CSSMediaQueryExpression>} 12907242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */ 12917242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci expressions: function() 12927242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci { 12937242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return this._expressions; 12947242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci } 12957242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} 12967242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 12977242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci/** 12987242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @constructor 129976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) * @param {!CSSAgent.MediaQueryExpression} payload 130076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) */ 130176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)WebInspector.CSSMediaQueryExpression = function(payload) 130276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles){ 130376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) this._value = payload.value; 130476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) this._unit = payload.unit; 130576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) this._feature = payload.feature; 130676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) this._computedLength = payload.computedLength || null; 130776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)} 130876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 130976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)/** 131076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) * @param {!CSSAgent.MediaQueryExpression} payload 1311c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @return {!WebInspector.CSSMediaQueryExpression} 131276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) */ 131376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)WebInspector.CSSMediaQueryExpression.parsePayload = function(payload) 131476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles){ 131576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) return new WebInspector.CSSMediaQueryExpression(payload); 131676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)} 131776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 131876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)WebInspector.CSSMediaQueryExpression.prototype = { 131976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) /** 132076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) * @return {number} 132176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) */ 132276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) value: function() 132376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) { 132476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) return this._value; 132576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) }, 132676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 132776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) /** 132876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) * @return {string} 132976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) */ 133076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) unit: function() 133176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) { 133276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) return this._unit; 133376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) }, 133476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 133576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) /** 133676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) * @return {string} 133776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) */ 133876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) feature: function() 133976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) { 134076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) return this._feature; 134176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) }, 134276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 134376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) /** 134476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) * @return {?number} 134576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) */ 134676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) computedLength: function() 134776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) { 134876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) return this._computedLength; 134976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) } 135076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)} 135176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 135276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 135376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)/** 135476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) * @constructor 1355aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.CSSStyleModel} cssModel 1356a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!CSSAgent.CSSMedia} payload 13575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1358aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.CSSMedia = function(cssModel, payload) 13595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1360aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._cssModel = cssModel 13615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.text = payload.text; 13625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.source = payload.source; 13635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.sourceURL = payload.sourceURL || ""; 1364a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.range = payload.range ? WebInspector.TextRange.fromObject(payload.range) : null; 13650019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch this.parentStyleSheetId = payload.parentStyleSheetId; 136676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) this.mediaList = null; 136776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) if (payload.mediaList) { 136876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) this.mediaList = []; 13697242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci for (var i = 0; i < payload.mediaList.length; ++i) 13707242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci this.mediaList.push(WebInspector.CSSMediaQuery.parsePayload(payload.mediaList[i])); 137176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) } 13725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 13735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.CSSMedia.Source = { 13755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) LINKED_SHEET: "linkedSheet", 13765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) INLINE_SHEET: "inlineSheet", 13775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) MEDIA_RULE: "mediaRule", 13785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IMPORT_RULE: "importRule" 13795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 13805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 1382aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.CSSStyleModel} cssModel 1383a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!CSSAgent.CSSMedia} payload 1384a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.CSSMedia} 13855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1386aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.CSSMedia.parsePayload = function(cssModel, payload) 13870019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch{ 1388aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return new WebInspector.CSSMedia(cssModel, payload); 13890019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch} 13900019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch 13910019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch/** 1392aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.CSSStyleModel} cssModel 1393a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!CSSAgent.CSSMedia>} payload 1394a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Array.<!WebInspector.CSSMedia>} 13950019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch */ 1396aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.CSSMedia.parseMediaArrayPayload = function(cssModel, payload) 13975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 13980019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch var result = []; 13990019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch for (var i = 0; i < payload.length; ++i) 1400aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch result.push(WebInspector.CSSMedia.parsePayload(cssModel, payload[i])); 14010019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch return result; 1402521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)} 1403521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 1404521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)WebInspector.CSSMedia.prototype = { 1405521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 1406aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {string} styleSheetId 1407aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.TextRange} oldRange 1408aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.TextRange} newRange 1409aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 1410aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch sourceStyleSheetEdited: function(styleSheetId, oldRange, newRange) 1411aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 1412aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (this.parentStyleSheetId !== styleSheetId) 1413aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return; 1414aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (this.range) 1415aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this.range = this.range.rebaseAfterTextEdit(oldRange, newRange); 1416aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }, 1417aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 1418aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 1419521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @return {number|undefined} 1420521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 1421521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) lineNumberInSource: function() 1422521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 1423521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!this.range) 1424521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return undefined; 1425521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var header = this.header(); 1426521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!header) 1427521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return undefined; 1428521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return header.lineNumberInSource(this.range.startLine); 1429521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 1430521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 1431521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 1432521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @return {number|undefined} 1433521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 1434521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) columnNumberInSource: function() 1435521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 1436521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!this.range) 1437521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return undefined; 1438521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var header = this.header(); 1439521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!header) 1440521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return undefined; 1441521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return header.columnNumberInSource(this.range.startLine, this.range.startColumn); 1442521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 1443521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 1444521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 1445521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @return {?WebInspector.CSSStyleSheetHeader} 1446521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 1447521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) header: function() 1448521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 1449aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return this.parentStyleSheetId ? this._cssModel.styleSheetHeaderForId(this.parentStyleSheetId) : null; 1450197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch }, 1451197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 1452197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** 1453c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @return {?WebInspector.CSSLocation} 1454197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 1455c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) rawLocation: function() 1456197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 1457c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) if (!this.header() || this.lineNumberInSource() === undefined) 1458197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return null; 1459c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var lineNumber = Number(this.lineNumberInSource()); 1460c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return new WebInspector.CSSLocation(this._cssModel.target(), this.header().id, this.sourceURL, lineNumber, this.columnNumberInSource()); 1461521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) } 14625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 14635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 14655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 146693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @implements {WebInspector.ContentProvider} 1467aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.CSSStyleModel} cssModel 1468a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!CSSAgent.CSSStyleSheetHeader} payload 146953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 1470aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.CSSStyleSheetHeader = function(cssModel, payload) 147153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles){ 1472aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._cssModel = cssModel; 147353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.id = payload.styleSheetId; 147453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.frameId = payload.frameId; 147553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.sourceURL = payload.sourceURL; 147693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this.hasSourceURL = !!payload.hasSourceURL; 147793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this.sourceMapURL = payload.sourceMapURL; 147853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.origin = payload.origin; 147953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.title = payload.title; 148053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.disabled = payload.disabled; 148193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this.isInline = payload.isInline; 148293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this.startLine = payload.startLine; 148393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this.startColumn = payload.startColumn; 148453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)} 148553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 148653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)WebInspector.CSSStyleSheetHeader.prototype = { 148753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) /** 1488c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @return {!WebInspector.Target} 148953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 1490c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) target: function() 149153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 1492c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return this._cssModel.target(); 149353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) }, 149453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 149553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) /** 1496c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @return {string} 14975267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) */ 1498c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) resourceURL: function() 14995267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) { 1500c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return this.isViaInspector() ? this._viaInspectorResourceURL() : this.sourceURL; 15015267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) }, 15025267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 15035267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) /** 150453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * @return {string} 150553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 150653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) _viaInspectorResourceURL: function() 150753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 1508a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch var frame = this._cssModel.target().resourceTreeModel.frameForId(this.frameId); 150993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) console.assert(frame); 151093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) var parsedURL = new WebInspector.ParsedURL(frame.url); 151153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var fakeURL = "inspector://" + parsedURL.host + parsedURL.folderPathComponents; 151253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!fakeURL.endsWith("/")) 151353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) fakeURL += "/"; 151453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) fakeURL += "inspector-stylesheet"; 151553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return fakeURL; 151693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) }, 151793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 151893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 1519521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {number} lineNumberInStyleSheet 1520521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @return {number} 1521521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 1522521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) lineNumberInSource: function(lineNumberInStyleSheet) 1523521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 1524521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return this.startLine + lineNumberInStyleSheet; 1525521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 1526521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 1527521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 1528521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {number} lineNumberInStyleSheet 1529521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {number} columnNumberInStyleSheet 1530521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @return {number|undefined} 1531521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 1532521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) columnNumberInSource: function(lineNumberInStyleSheet, columnNumberInStyleSheet) 1533521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 1534521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return (lineNumberInStyleSheet ? 0 : this.startColumn) + columnNumberInStyleSheet; 1535521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 1536521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 1537521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 153893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @override 153909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {string} 154093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 154193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) contentURL: function() 154293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 15435267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return this.resourceURL(); 154493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) }, 154593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 154693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 154793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @override 154809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {!WebInspector.ResourceType} 154993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 155093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) contentType: function() 155193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 155293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return WebInspector.resourceTypes.Stylesheet; 155393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) }, 155493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 155593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 155609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {string} text 155709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {string} 155809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 155909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) _trimSourceURL: function(text) 156009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 156109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) var sourceURLRegex = /\n[\040\t]*\/\*[#@][\040\t]sourceURL=[\040\t]*([^\s]*)[\040\t]*\*\/[\040\t]*$/mg; 156209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return text.replace(sourceURLRegex, ""); 156309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) }, 156409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 156509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 156693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @override 1567e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {function(string)} callback 156893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 156993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) requestContent: function(callback) 157093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 1571aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._cssModel._agent.getStyleSheetText(this.id, textCallback.bind(this)); 157293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 157309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 157409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.CSSStyleSheetHeader} 157509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 157693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) function textCallback(error, text) 157793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 157893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (error) { 1579197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebInspector.console.error("Failed to get text for stylesheet " + this.id + ": " + error); 158093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) text = ""; 158193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) // Fall through. 158293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) } 158309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) text = this._trimSourceURL(text); 15841e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) callback(text); 158593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) } 158693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) }, 158793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 158893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 158993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @override 159093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 159193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) searchInContent: function(query, caseSensitive, isRegex, callback) 159293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 159393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) function performSearch(content) 159493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 159593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) callback(WebInspector.ContentProvider.performSearchInContent(content, query, caseSensitive, isRegex)); 159693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) } 159793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 159893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) // searchInContent should call back later. 159993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this.requestContent(performSearch); 160009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) }, 160109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 160209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 160309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {string} newText 160409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {function(?Protocol.Error)} callback 160509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 160609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) setContent: function(newText, callback) 160709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 160809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) newText = this._trimSourceURL(newText); 160909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (this.hasSourceURL) 161009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) newText += "\n/*# sourceURL=" + this.sourceURL + " */"; 1611aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._cssModel._agent.setStyleSheetText(this.id, newText, callback); 161209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) }, 161353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 16145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1615d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @return {boolean} 16165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1617d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) isViaInspector: function() 16185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1619d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return this.origin === "inspector"; 1620c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) } 16215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 16225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 16245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 16255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @implements {CSSAgent.Dispatcher} 1626a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.CSSStyleModel} cssModel 16275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 16285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.CSSDispatcher = function(cssModel) 16295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 16305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._cssModel = cssModel; 16315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 16325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.CSSDispatcher.prototype = { 16345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) mediaQueryResultChanged: function() 16355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 16365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._cssModel.mediaQueryResultChanged(); 16375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 16385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1640a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!CSSAgent.StyleSheetId} styleSheetId 16415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 16425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) styleSheetChanged: function(styleSheetId) 16435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 16445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._cssModel._fireStyleSheetChanged(styleSheetId); 16455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 16465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1648a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!CSSAgent.CSSStyleSheetHeader} header 164953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 165053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) styleSheetAdded: function(header) 165153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 165253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._cssModel._styleSheetAdded(header); 165353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) }, 165453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 165553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) /** 1656a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!CSSAgent.StyleSheetId} id 165753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 165853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) styleSheetRemoved: function(id) 165953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 166053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._cssModel._styleSheetRemoved(id); 166153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) }, 16625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 16631e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 16641e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)/** 16651e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) * @constructor 1666a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.CSSStyleModel} cssModel 16671e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) */ 16681e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)WebInspector.CSSStyleModel.ComputedStyleLoader = function(cssModel) 16691e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles){ 16701e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) this._cssModel = cssModel; 1671a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** @type {!Object.<*, !Array.<function(?WebInspector.CSSStyleDeclaration)>>} */ 16721e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) this._nodeIdToCallbackData = {}; 16731e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)} 16741e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 16751e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)WebInspector.CSSStyleModel.ComputedStyleLoader.prototype = { 16761e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) /** 1677a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 16781e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) * @param {function(?WebInspector.CSSStyleDeclaration)} userCallback 16791e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) */ 16801e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) getComputedStyle: function(nodeId, userCallback) 16811e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 16821e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) if (this._nodeIdToCallbackData[nodeId]) { 16831e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) this._nodeIdToCallbackData[nodeId].push(userCallback); 16841e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) return; 16851e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) } 16861e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 16871e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) this._nodeIdToCallbackData[nodeId] = [userCallback]; 16881e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 1689aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._cssModel._agent.getComputedStyleForNode(nodeId, resultCallback.bind(this, nodeId)); 16901e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 16911e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) /** 16921e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) * @param {!DOMAgent.NodeId} nodeId 16931e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) * @param {?Protocol.Error} error 1694a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!CSSAgent.CSSComputedStyleProperty>} computedPayload 169509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.CSSStyleModel.ComputedStyleLoader} 16961e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) */ 16971e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) function resultCallback(nodeId, error, computedPayload) 16981e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 1699aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var computedStyle = (error || !computedPayload) ? null : WebInspector.CSSStyleDeclaration.parseComputedStylePayload(this._cssModel, computedPayload); 17001e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) var callbacks = this._nodeIdToCallbackData[nodeId]; 17011e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 17021e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) // The loader has been reset. 17031e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) if (!callbacks) 17041e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) return; 17051e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 17061e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) delete this._nodeIdToCallbackData[nodeId]; 17071e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) for (var i = 0; i < callbacks.length; ++i) 17081e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) callbacks[i](computedStyle); 17091e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) } 17101e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) } 17111e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)} 17121e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 17135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 171409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @type {!WebInspector.CSSStyleModel} 17155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 171609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)WebInspector.cssModel; 1717