| 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));
|
|
|