Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/sdk/CSSStyleModel.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/CSSStyleModel.js b/third_party/WebKit/Source/devtools/front_end/sdk/CSSStyleModel.js |
| index 06759431f7011749dd740f8179f896fd0e71e48a..b7a69c6077a4e51b38d2eba63cd49ac192e06e37 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/sdk/CSSStyleModel.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/sdk/CSSStyleModel.js |
| @@ -80,6 +80,47 @@ WebInspector.CSSStyleModel.PseudoStateMarker = "pseudo-state-marker"; |
| WebInspector.CSSStyleModel.prototype = { |
| /** |
| + * @param {!Array<!CSSAgent.StyleSheetId>} styleSheetIds |
| + * @param {!Array<!WebInspector.TextRange>} ranges |
| + * @param {!Array<string>} texts |
| + * @param {boolean} majorChange |
| + * @return {!Promise<?Array<!CSSAgent.CSSStyle>>} |
| + */ |
| + setStyleTexts: function(styleSheetIds, ranges, texts, majorChange) |
| + { |
| + /** |
| + * @param {?Protocol.Error} error |
| + * @param {?Array<!CSSAgent.CSSStyle>} stylePayloads |
| + * @return {?Array<!CSSAgent.CSSStyle>} |
| + * @this {WebInspector.CSSStyleModel} |
| + */ |
| + function parsePayload(error, stylePayloads) |
| + { |
| + if (error || !stylePayloads || !stylePayloads.length) |
| + return null; |
| + |
| + if (majorChange) |
| + this._domModel.markUndoableState(); |
| + for (var styleSheetId of styleSheetIds) |
| + this._fireStyleSheetChanged(styleSheetId); |
|
dgozman
2016/02/17 23:32:36
Let's coalesce events for the same stylesheet.
lushnikov
2016/02/18 01:40:16
Done.
|
| + return stylePayloads; |
| + } |
| + |
| + console.assert(styleSheetIds.length === ranges.length && ranges.length === texts.length, "Array lengths must be equal"); |
| + var edits = []; |
| + for (var i = 0; i < styleSheetIds.length; ++i) { |
| + edits.push({ |
| + styleSheetId: styleSheetIds[i], |
| + range: ranges[i].serializeToObject(), |
| + text: texts[i] |
| + }); |
| + } |
| + |
| + return this._agent.setStyleTexts(edits, parsePayload.bind(this)) |
| + .catchException(/** @type {?Array<!CSSAgent.CSSStyle>} */(null)); |
| + }, |
| + |
| + /** |
| * @return {!Promise.<!Array.<!WebInspector.CSSMedia>>} |
| */ |
| mediaQueriesPromise: function() |
| @@ -946,28 +987,21 @@ WebInspector.CSSStyleDeclaration.prototype = { |
| */ |
| setText: function(text, majorChange) |
| { |
| - if (!this.styleSheetId) |
| - return Promise.resolve(false); |
| - |
| /** |
| - * @param {?Protocol.Error} error |
| - * @param {?CSSAgent.CSSStyle} stylePayload |
| + * @param {?Array<!CSSAgent.CSSStyle>} stylePayloads |
| * @return {boolean} |
| * @this {WebInspector.CSSStyleDeclaration} |
| */ |
| - function parsePayload(error, stylePayload) |
| + function onPayload(stylePayloads) |
| { |
| - if (error || !stylePayload) |
| + if (!stylePayloads) |
| return false; |
| - |
| - if (majorChange) |
| - this._cssModel._domModel.markUndoableState(); |
| - this._reinitialize(stylePayload); |
| - this._cssModel._fireStyleSheetChanged(this.styleSheetId); |
| + this._reinitialize(stylePayloads[0]); |
| return true; |
| } |
| - return this._cssModel._agent.setStyleText(this.styleSheetId, this.range.serializeToObject(), text, parsePayload.bind(this)) |
| + return this._cssModel.setStyleTexts([this.styleSheetId], [this.range], [text], majorChange) |
| + .then(onPayload.bind(this)) |
| .catchException(false); |
| }, |