| Index: Source/devtools/front_end/CSSStyleModel.js
|
| diff --git a/Source/devtools/front_end/CSSStyleModel.js b/Source/devtools/front_end/CSSStyleModel.js
|
| index c0c37d4fc976a3820d1db2dd260e1f3f348d0c22..e83204509a24e566cc538952693d9706490aeecb 100644
|
| --- a/Source/devtools/front_end/CSSStyleModel.js
|
| +++ b/Source/devtools/front_end/CSSStyleModel.js
|
| @@ -36,16 +36,19 @@
|
| WebInspector.CSSStyleModel = function(target)
|
| {
|
| this._domModel = target.domModel;
|
| + this._agent = target.cssAgent();
|
| this._pendingCommandsMajorState = [];
|
| this._styleLoader = new WebInspector.CSSStyleModel.ComputedStyleLoader(this);
|
| this._domModel.addEventListener(WebInspector.DOMModel.Events.UndoRedoRequested, this._undoRedoRequested, this);
|
| this._domModel.addEventListener(WebInspector.DOMModel.Events.UndoRedoCompleted, this._undoRedoCompleted, this);
|
| WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.MainFrameCreatedOrNavigated, this._mainFrameCreatedOrNavigated, this);
|
| InspectorBackend.registerCSSDispatcher(new WebInspector.CSSDispatcher(this));
|
| - CSSAgent.enable(this._wasEnabled.bind(this));
|
| + this._agent.enable(this._wasEnabled.bind(this));
|
| this._resetStyleSheets();
|
| }
|
|
|
| +WebInspector.CSSStyleModel.PseudoStatePropertyName = "pseudoState";
|
| +
|
| /**
|
| * @param {!WebInspector.CSSStyleModel} cssModel
|
| * @param {!Array.<!CSSAgent.RuleMatch>|undefined} matchArray
|
| @@ -138,7 +141,7 @@ WebInspector.CSSStyleModel.prototype = {
|
| userCallback(result);
|
| }
|
|
|
| - CSSAgent.getMatchedStylesForNode(nodeId, needPseudo, needInherited, callback.bind(this, userCallback));
|
| + this._agent.getMatchedStylesForNode(nodeId, needPseudo, needInherited, callback.bind(this, userCallback));
|
| },
|
|
|
| /**
|
| @@ -163,7 +166,7 @@ WebInspector.CSSStyleModel.prototype = {
|
| else
|
| callback(cssFamilyName, fonts);
|
| }
|
| - CSSAgent.getPlatformFontsForNode(nodeId, platformFontsCallback);
|
| + this._agent.getPlatformFontsForNode(nodeId, platformFontsCallback);
|
| },
|
|
|
| /**
|
| @@ -211,17 +214,33 @@ WebInspector.CSSStyleModel.prototype = {
|
| userCallback(WebInspector.CSSStyleDeclaration.parsePayload(this, inlinePayload), attributesStylePayload ? WebInspector.CSSStyleDeclaration.parsePayload(this, attributesStylePayload) : null);
|
| }
|
|
|
| - CSSAgent.getInlineStylesForNode(nodeId, callback.bind(this, userCallback));
|
| + this._agent.getInlineStylesForNode(nodeId, callback.bind(this, userCallback));
|
| },
|
|
|
| /**
|
| - * @param {!DOMAgent.NodeId} nodeId
|
| - * @param {?Array.<string>|undefined} forcedPseudoClasses
|
| - * @param {function()=} userCallback
|
| + * @param {!WebInspector.DOMNode} node
|
| + * @param {string} pseudoClass
|
| + * @param {boolean} enable
|
| + * @return {boolean}
|
| */
|
| - forcePseudoState: function(nodeId, forcedPseudoClasses, userCallback)
|
| - {
|
| - CSSAgent.forcePseudoState(nodeId, forcedPseudoClasses || [], userCallback);
|
| + forcePseudoState: function(node, pseudoClass, enable)
|
| + {
|
| + var pseudoClasses = node.getUserProperty(WebInspector.CSSStyleModel.PseudoStatePropertyName) || [];
|
| + if (enable) {
|
| + if (pseudoClasses.indexOf(pseudoClass) >= 0)
|
| + return false;
|
| + pseudoClasses.push(pseudoClass);
|
| + node.setUserProperty(WebInspector.CSSStyleModel.PseudoStatePropertyName, pseudoClasses);
|
| + } else {
|
| + if (pseudoClasses.indexOf(pseudoClass) < 0)
|
| + return false;
|
| + pseudoClasses.remove(pseudoClass);
|
| + if (!pseudoClasses.length)
|
| + node.removeUserProperty(WebInspector.CSSStyleModel.PseudoStatePropertyName);
|
| + }
|
| +
|
| + this._agent.forcePseudoState(node.id, pseudoClasses);
|
| + return true;
|
| },
|
|
|
| /**
|
| @@ -255,7 +274,7 @@ WebInspector.CSSStyleModel.prototype = {
|
|
|
|
|
| this._pendingCommandsMajorState.push(true);
|
| - CSSAgent.setRuleSelector(ruleId, newSelector, callback.bind(this, nodeId, successCallback, failureCallback, newSelector));
|
| + this._agent.setRuleSelector(ruleId, newSelector, callback.bind(this, nodeId, successCallback, failureCallback, newSelector));
|
| },
|
|
|
| /**
|
| @@ -309,7 +328,7 @@ WebInspector.CSSStyleModel.prototype = {
|
| addRule: function(styleSheetId, node, selector, successCallback, failureCallback)
|
| {
|
| this._pendingCommandsMajorState.push(true);
|
| - CSSAgent.addRule(styleSheetId, selector, callback.bind(this));
|
| + this._agent.addRule(styleSheetId, selector, callback.bind(this));
|
|
|
| /**
|
| * @param {?Protocol.Error} error
|
| @@ -359,7 +378,7 @@ WebInspector.CSSStyleModel.prototype = {
|
| callback(this._styleSheetIdToHeader[styleSheetId]);
|
| }
|
|
|
| - CSSAgent.createStyleSheet(frameId, innerCallback.bind(this));
|
| + this._agent.createStyleSheet(frameId, innerCallback.bind(this));
|
| },
|
|
|
| mediaQueryResultChanged: function()
|
| @@ -418,7 +437,7 @@ WebInspector.CSSStyleModel.prototype = {
|
| _styleSheetAdded: function(header)
|
| {
|
| console.assert(!this._styleSheetIdToHeader[header.styleSheetId]);
|
| - var styleSheetHeader = new WebInspector.CSSStyleSheetHeader(header);
|
| + var styleSheetHeader = new WebInspector.CSSStyleSheetHeader(this, header);
|
| this._styleSheetIdToHeader[header.styleSheetId] = styleSheetHeader;
|
| var url = styleSheetHeader.resourceURL();
|
| if (!this._styleSheetIdsForURL[url])
|
| @@ -898,7 +917,7 @@ WebInspector.CSSStyleDeclaration.prototype = {
|
| throw "No style id";
|
|
|
| this._cssModel._pendingCommandsMajorState.push(true);
|
| - CSSAgent.setPropertyText(this.id, index, name + ": " + value + ";", false, callback.bind(this));
|
| + this._cssModel._agent.setPropertyText(this.id, index, name + ": " + value + ";", false, callback.bind(this));
|
| },
|
|
|
| /**
|
| @@ -909,7 +928,7 @@ WebInspector.CSSStyleDeclaration.prototype = {
|
| appendProperty: function(name, value, userCallback)
|
| {
|
| this.insertPropertyAt(this.allProperties.length, name, value, userCallback);
|
| - },
|
| + }
|
| }
|
|
|
| /**
|
| @@ -1158,8 +1177,9 @@ WebInspector.CSSProperty.prototype = {
|
| throw "No owner style id";
|
|
|
| // An index past all the properties adds a new property to the style.
|
| - this.ownerStyle._cssModel._pendingCommandsMajorState.push(majorChange);
|
| - CSSAgent.setPropertyText(this.ownerStyle.id, this.index, propertyText, overwrite, callback.bind(this));
|
| + var cssModel = this.ownerStyle._cssModel;
|
| + cssModel._pendingCommandsMajorState.push(majorChange);
|
| + cssModel._agent.setPropertyText(this.ownerStyle.id, this.index, propertyText, overwrite, callback.bind(this));
|
| },
|
|
|
| /**
|
| @@ -1299,10 +1319,12 @@ WebInspector.CSSMedia.prototype = {
|
| /**
|
| * @constructor
|
| * @implements {WebInspector.ContentProvider}
|
| + * @param {!WebInspector.CSSStyleModel} cssModel
|
| * @param {!CSSAgent.CSSStyleSheetHeader} payload
|
| */
|
| -WebInspector.CSSStyleSheetHeader = function(payload)
|
| +WebInspector.CSSStyleSheetHeader = function(cssModel, payload)
|
| {
|
| + this._cssModel = cssModel;
|
| this.id = payload.styleSheetId;
|
| this.frameId = payload.frameId;
|
| this.sourceURL = payload.sourceURL;
|
| @@ -1444,7 +1466,7 @@ WebInspector.CSSStyleSheetHeader.prototype = {
|
| */
|
| requestContent: function(callback)
|
| {
|
| - CSSAgent.getStyleSheetText(this.id, textCallback.bind(this));
|
| + this._cssModel._agent.getStyleSheetText(this.id, textCallback.bind(this));
|
|
|
| /**
|
| * @this {WebInspector.CSSStyleSheetHeader}
|
| @@ -1484,7 +1506,7 @@ WebInspector.CSSStyleSheetHeader.prototype = {
|
| newText = this._trimSourceURL(newText);
|
| if (this.hasSourceURL)
|
| newText += "\n/*# sourceURL=" + this.sourceURL + " */";
|
| - CSSAgent.setStyleSheetText(this.id, newText, callback);
|
| + this._cssModel._agent.setStyleSheetText(this.id, newText, callback);
|
| },
|
|
|
| /**
|
| @@ -1563,7 +1585,7 @@ WebInspector.CSSStyleModel.ComputedStyleLoader.prototype = {
|
|
|
| this._nodeIdToCallbackData[nodeId] = [userCallback];
|
|
|
| - CSSAgent.getComputedStyleForNode(nodeId, resultCallback.bind(this, nodeId));
|
| + this._cssModel._agent.getComputedStyleForNode(nodeId, resultCallback.bind(this, nodeId));
|
|
|
| /**
|
| * @param {!DOMAgent.NodeId} nodeId
|
|
|