Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(841)

Unified Diff: third_party/WebKit/Source/devtools/front_end/sdk/CSSModel.js

Issue 1954423002: DevTools: introduce CSSStyleSheetHeader.originalContentProvider() method (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@simplify-network-project
Patch Set: address comments Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/sdk/CSSModel.js
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/CSSModel.js b/third_party/WebKit/Source/devtools/front_end/sdk/CSSModel.js
index a919dfa91f1dc99e74f358fedfd9cbfcb02e433e..fe993b267d1e3697daffaa49a05240f3ead32494 100644
--- a/third_party/WebKit/Source/devtools/front_end/sdk/CSSModel.js
+++ b/third_party/WebKit/Source/devtools/front_end/sdk/CSSModel.js
@@ -47,6 +47,9 @@ WebInspector.CSSModel = function(target)
/** @type {!Map.<string, !Object.<!PageAgent.FrameId, !Array.<!CSSAgent.StyleSheetId>>>} */
this._styleSheetIdsForURL = new Map();
+ /** @type {!Map.<!WebInspector.CSSStyleSheetHeader, !Promise<string>>} */
+ this._originalStyleSheetText = new Map();
+
/** @type {!Multimap<string, !CSSAgent.StyleSheetId>} */
this._sourceMapLoadingStyleSheetsIds = new Multimap();
@@ -385,15 +388,18 @@ WebInspector.CSSModel.prototype = {
console.assert(styleSheetIds.length === ranges.length && ranges.length === texts.length, "Array lengths must be equal");
var edits = [];
+ var ensureContentPromises = [];
for (var i = 0; i < styleSheetIds.length; ++i) {
edits.push({
styleSheetId: styleSheetIds[i],
range: ranges[i].serializeToObject(),
text: texts[i]
});
+ ensureContentPromises.push(this._ensureOriginalStyleSheetText(styleSheetIds[i]));
}
- return this._agent.setStyleTexts(edits, parsePayload.bind(this))
+ return Promise.all(ensureContentPromises)
+ .then(() => this._agent.setStyleTexts(edits, parsePayload.bind(this)))
.catchException(false);
},
@@ -422,7 +428,8 @@ WebInspector.CSSModel.prototype = {
}
WebInspector.userMetrics.actionTaken(WebInspector.UserMetrics.Action.StyleRuleEdited);
- return this._agent.setRuleSelector(styleSheetId, range, text, callback.bind(this))
+ return this._ensureOriginalStyleSheetText(styleSheetId)
+ .then(() => this._agent.setRuleSelector(styleSheetId, range, text, callback.bind(this)))
.catchException(false);
},
@@ -451,7 +458,8 @@ WebInspector.CSSModel.prototype = {
}
WebInspector.userMetrics.actionTaken(WebInspector.UserMetrics.Action.StyleRuleEdited);
- return this._agent.setKeyframeKey(styleSheetId, range, text, callback.bind(this))
+ return this._ensureOriginalStyleSheetText(styleSheetId)
+ .then(() => this._agent.setKeyframeKey(styleSheetId, range, text, callback.bind(this)))
.catchException(false);
},
@@ -684,7 +692,8 @@ WebInspector.CSSModel.prototype = {
}
WebInspector.userMetrics.actionTaken(WebInspector.UserMetrics.Action.StyleRuleEdited);
- return this._agent.setMediaText(styleSheetId, range, newMediaText, parsePayload.bind(this))
+ return this._ensureOriginalStyleSheetText(styleSheetId)
+ .then(() => this._agent.setMediaText(styleSheetId, range, newMediaText, parsePayload.bind(this)))
.catchException(false);
},
@@ -696,7 +705,8 @@ WebInspector.CSSModel.prototype = {
*/
addRule: function(styleSheetId, ruleText, ruleLocation)
{
- return this._agent.addRule(styleSheetId, ruleText, ruleLocation, parsePayload.bind(this))
+ return this._ensureOriginalStyleSheetText(styleSheetId)
+ .then(() => this._agent.addRule(styleSheetId, ruleText, ruleLocation, parsePayload.bind(this)))
.catchException(/** @type {?WebInspector.CSSStyleRule} */(null))
/**
@@ -792,6 +802,32 @@ WebInspector.CSSModel.prototype = {
},
/**
+ * @param {!CSSAgent.StyleSheetId} styleSheetId
+ * @return {!Promise<string>}
+ */
+ _ensureOriginalStyleSheetText: function(styleSheetId)
+ {
+ var header = this.styleSheetHeaderForId(styleSheetId);
+ if (!header)
+ return Promise.resolve("");
+ var promise = this._originalStyleSheetText.get(header);
+ if (!promise) {
+ promise = this.getStyleSheetText(header.id);
+ this._originalStyleSheetText.set(header, promise);
+ }
+ return promise;
+ },
+
+ /**
+ * @param {!WebInspector.CSSStyleSheetHeader} header
+ * @return {!Promise<string>}
+ */
+ originalStyleSheetText: function(header)
+ {
+ return this._ensureOriginalStyleSheetText(header.id);
+ },
+
+ /**
* @param {!CSSAgent.CSSStyleSheetHeader} header
*/
_styleSheetAdded: function(header)
@@ -832,6 +868,7 @@ WebInspector.CSSModel.prototype = {
if (!Object.keys(frameIdToStyleSheetIds).length)
this._styleSheetIdsForURL.remove(url);
}
+ this._originalStyleSheetText.remove(header);
this._detachSourceMap(header);
this.dispatchEventToListeners(WebInspector.CSSModel.Events.StyleSheetRemoved, header);
},
@@ -865,7 +902,8 @@ WebInspector.CSSModel.prototype = {
newText = WebInspector.CSSModel.trimSourceURL(newText);
if (header.hasSourceURL)
newText += "\n/*# sourceURL=" + header.sourceURL + " */";
- return this._agent.setStyleSheetText(header.id, newText, callback.bind(this));
+ return this._ensureOriginalStyleSheetText(styleSheetId)
+ .then(() => this._agent.setStyleSheetText(header.id, newText, callback.bind(this)));
/**
* @param {?Protocol.Error} error

Powered by Google App Engine
This is Rietveld 408576698