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

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

Issue 2893523002: DevTools: make StyleSourceMapping in charge of managing UISourceCodes (Closed)
Patch Set: rebaseline Created 3 years, 6 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 8f0d1aa35008ab94881a9e607c4582686bde2f5b..360e60b8bd003cb89dfe2f4f03f8016281bff88c 100644
--- a/third_party/WebKit/Source/devtools/front_end/sdk/CSSModel.js
+++ b/third_party/WebKit/Source/devtools/front_end/sdk/CSSModel.js
@@ -54,6 +54,9 @@ SDK.CSSModel = class extends SDK.SDKModel {
/** @type {!Map.<string, !Object.<!Protocol.Page.FrameId, !Array.<!Protocol.CSS.StyleSheetId>>>} */
this._styleSheetIdsForURL = new Map();
+ /** @type {!Multimap<string, function(!SDK.CSSStyleSheetHeader)>} */
+ this._styleSheetChangeSubscribers = new Multimap();
+
/** @type {!Map.<!SDK.CSSStyleSheetHeader, !Promise<?string>>} */
this._originalStyleSheetText = new Map();
@@ -90,6 +93,22 @@ SDK.CSSModel = class extends SDK.SDKModel {
return text.substr(0, sourceURLLineIndex) + text.substr(sourceURLLineIndex + sourceURLLine.length + 1);
}
+ /**
+ * @param {string} headerId
+ * @param {function(!SDK.CSSStyleSheetHeader)} callback
+ */
+ subscribeToStyleSheetChanged(headerId, callback) {
+ this._styleSheetChangeSubscribers.set(headerId, callback);
+ }
+
+ /**
+ * @param {string} headerId
+ * @param {function(!SDK.CSSStyleSheetHeader)} callback
+ */
+ unsubscribeFromStyleSheetChanged(headerId, callback) {
+ this._styleSheetChangeSubscribers.delete(headerId, callback);
+ }
+
/**
* @return {!SDK.DOMModel}
*/
@@ -545,6 +564,12 @@ SDK.CSSModel = class extends SDK.SDKModel {
* @param {!SDK.CSSModel.Edit=} edit
*/
_fireStyleSheetChanged(styleSheetId, edit) {
+ if (this._styleSheetChangeSubscribers.has(styleSheetId)) {
+ var header = this._styleSheetIdToHeader.get(styleSheetId);
+ var subscribers = Array.from(this._styleSheetChangeSubscribers.get(styleSheetId));
+ if (header && subscribers)
+ subscribers.forEach(subscriber => subscriber.call(null, header));
+ }
this.dispatchEventToListeners(SDK.CSSModel.Events.StyleSheetChanged, {styleSheetId: styleSheetId, edit: edit});
}
@@ -609,6 +634,7 @@ SDK.CSSModel = class extends SDK.SDKModel {
if (!header)
return;
this._styleSheetIdToHeader.remove(id);
+ this._styleSheetChangeSubscribers.deleteAll(id);
var url = header.resourceURL();
var frameIdToStyleSheetIds = /** @type {!Object.<!Protocol.Page.FrameId, !Array.<!Protocol.CSS.StyleSheetId>>} */ (
this._styleSheetIdsForURL.get(url));

Powered by Google App Engine
This is Rietveld 408576698