Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 47 this._resourceTreeModel.addEventListener( | 47 this._resourceTreeModel.addEventListener( |
| 48 SDK.ResourceTreeModel.Events.MainFrameNavigated, this._resetStyleSheet s, this); | 48 SDK.ResourceTreeModel.Events.MainFrameNavigated, this._resetStyleSheet s, this); |
| 49 } | 49 } |
| 50 target.registerCSSDispatcher(new SDK.CSSDispatcher(this)); | 50 target.registerCSSDispatcher(new SDK.CSSDispatcher(this)); |
| 51 this._agent.enable().then(this._wasEnabled.bind(this)); | 51 this._agent.enable().then(this._wasEnabled.bind(this)); |
| 52 /** @type {!Map.<string, !SDK.CSSStyleSheetHeader>} */ | 52 /** @type {!Map.<string, !SDK.CSSStyleSheetHeader>} */ |
| 53 this._styleSheetIdToHeader = new Map(); | 53 this._styleSheetIdToHeader = new Map(); |
| 54 /** @type {!Map.<string, !Object.<!Protocol.Page.FrameId, !Array.<!Protocol. CSS.StyleSheetId>>>} */ | 54 /** @type {!Map.<string, !Object.<!Protocol.Page.FrameId, !Array.<!Protocol. CSS.StyleSheetId>>>} */ |
| 55 this._styleSheetIdsForURL = new Map(); | 55 this._styleSheetIdsForURL = new Map(); |
| 56 | 56 |
| 57 /** @type {!Multimap<string, function(!SDK.CSSStyleSheetHeader)>} */ | |
| 58 this._styleSheetChangeSubscribers = new Multimap(); | |
| 59 | |
| 57 /** @type {!Map.<!SDK.CSSStyleSheetHeader, !Promise<?string>>} */ | 60 /** @type {!Map.<!SDK.CSSStyleSheetHeader, !Promise<?string>>} */ |
| 58 this._originalStyleSheetText = new Map(); | 61 this._originalStyleSheetText = new Map(); |
| 59 | 62 |
| 60 this._sourceMapManager.setEnabled(Common.moduleSetting('cssSourceMapsEnabled ').get()); | 63 this._sourceMapManager.setEnabled(Common.moduleSetting('cssSourceMapsEnabled ').get()); |
| 61 Common.moduleSetting('cssSourceMapsEnabled') | 64 Common.moduleSetting('cssSourceMapsEnabled') |
| 62 .addChangeListener(event => this._sourceMapManager.setEnabled(/** @type {boolean} */ (event.data))); | 65 .addChangeListener(event => this._sourceMapManager.setEnabled(/** @type {boolean} */ (event.data))); |
| 63 } | 66 } |
| 64 | 67 |
| 65 /** | 68 /** |
| 66 * @return {!SDK.SourceMapManager<!SDK.CSSStyleSheetHeader>} | 69 * @return {!SDK.SourceMapManager<!SDK.CSSStyleSheetHeader>} |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 84 if (sourceURLLineIndex === -1) | 87 if (sourceURLLineIndex === -1) |
| 85 return text; | 88 return text; |
| 86 var sourceURLLine = text.substr(sourceURLLineIndex + 1).split('\n', 1)[0]; | 89 var sourceURLLine = text.substr(sourceURLLineIndex + 1).split('\n', 1)[0]; |
| 87 var sourceURLRegex = /[\040\t]*\/\*[#@] sourceURL=[\040\t]*([^\s]*)[\040\t]* \*\/[\040\t]*$/; | 90 var sourceURLRegex = /[\040\t]*\/\*[#@] sourceURL=[\040\t]*([^\s]*)[\040\t]* \*\/[\040\t]*$/; |
| 88 if (sourceURLLine.search(sourceURLRegex) === -1) | 91 if (sourceURLLine.search(sourceURLRegex) === -1) |
| 89 return text; | 92 return text; |
| 90 return text.substr(0, sourceURLLineIndex) + text.substr(sourceURLLineIndex + sourceURLLine.length + 1); | 93 return text.substr(0, sourceURLLineIndex) + text.substr(sourceURLLineIndex + sourceURLLine.length + 1); |
| 91 } | 94 } |
| 92 | 95 |
| 93 /** | 96 /** |
| 97 * @param {string} headerId | |
| 98 * @param {function(!SDK.CSSStyleSheetHeader)} callback | |
| 99 */ | |
| 100 subscribeToStyleSheetChanged(headerId, callback) { | |
|
dgozman
2017/05/17 16:46:20
Why subscribe here and not route through StyleSour
lushnikov
2017/05/20 01:24:18
Subscribe/unsubscribe is a natural API to get upda
| |
| 101 this._styleSheetChangeSubscribers.set(headerId, callback); | |
| 102 } | |
| 103 | |
| 104 /** | |
| 105 * @param {string} headerId | |
| 106 * @param {function(!SDK.CSSStyleSheetHeader)} callback | |
| 107 */ | |
| 108 unsubscribeFromStyleSheetChanged(headerId, callback) { | |
| 109 this._styleSheetChangeSubscribers.remove(headerId, callback); | |
| 110 } | |
| 111 | |
| 112 /** | |
| 94 * @return {!SDK.DOMModel} | 113 * @return {!SDK.DOMModel} |
| 95 */ | 114 */ |
| 96 domModel() { | 115 domModel() { |
| 97 return this._domModel; | 116 return this._domModel; |
| 98 } | 117 } |
| 99 | 118 |
| 100 /** | 119 /** |
| 101 * @param {!Protocol.CSS.StyleSheetId} styleSheetId | 120 * @param {!Protocol.CSS.StyleSheetId} styleSheetId |
| 102 * @param {!TextUtils.TextRange} range | 121 * @param {!TextUtils.TextRange} range |
| 103 * @param {string} text | 122 * @param {string} text |
| (...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 629 */ | 648 */ |
| 630 styleSheetHeaders() { | 649 styleSheetHeaders() { |
| 631 return this._styleSheetIdToHeader.valuesArray(); | 650 return this._styleSheetIdToHeader.valuesArray(); |
| 632 } | 651 } |
| 633 | 652 |
| 634 /** | 653 /** |
| 635 * @param {!Protocol.CSS.StyleSheetId} styleSheetId | 654 * @param {!Protocol.CSS.StyleSheetId} styleSheetId |
| 636 * @param {!SDK.CSSModel.Edit=} edit | 655 * @param {!SDK.CSSModel.Edit=} edit |
| 637 */ | 656 */ |
| 638 _fireStyleSheetChanged(styleSheetId, edit) { | 657 _fireStyleSheetChanged(styleSheetId, edit) { |
| 658 if (this._styleSheetChangeSubscribers.has(styleSheetId)) { | |
| 659 var header = this._styleSheetIdToHeader.get(styleSheetId); | |
| 660 var subscribers = Array.from(this._styleSheetChangeSubscribers.get(styleSh eetId)); | |
| 661 if (header && subscribers) | |
| 662 subscribers.forEach(subscriber => subscriber.call(null, header)); | |
| 663 } | |
| 639 this.dispatchEventToListeners(SDK.CSSModel.Events.StyleSheetChanged, {styleS heetId: styleSheetId, edit: edit}); | 664 this.dispatchEventToListeners(SDK.CSSModel.Events.StyleSheetChanged, {styleS heetId: styleSheetId, edit: edit}); |
| 640 } | 665 } |
| 641 | 666 |
| 642 /** | 667 /** |
| 643 * @param {!Protocol.CSS.StyleSheetId} styleSheetId | 668 * @param {!Protocol.CSS.StyleSheetId} styleSheetId |
| 644 * @return {!Promise<?string>} | 669 * @return {!Promise<?string>} |
| 645 */ | 670 */ |
| 646 _ensureOriginalStyleSheetText(styleSheetId) { | 671 _ensureOriginalStyleSheetText(styleSheetId) { |
| 647 var header = this.styleSheetHeaderForId(styleSheetId); | 672 var header = this.styleSheetHeaderForId(styleSheetId); |
| 648 if (!header) | 673 if (!header) |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 693 | 718 |
| 694 /** | 719 /** |
| 695 * @param {!Protocol.CSS.StyleSheetId} id | 720 * @param {!Protocol.CSS.StyleSheetId} id |
| 696 */ | 721 */ |
| 697 _styleSheetRemoved(id) { | 722 _styleSheetRemoved(id) { |
| 698 var header = this._styleSheetIdToHeader.get(id); | 723 var header = this._styleSheetIdToHeader.get(id); |
| 699 console.assert(header); | 724 console.assert(header); |
| 700 if (!header) | 725 if (!header) |
| 701 return; | 726 return; |
| 702 this._styleSheetIdToHeader.remove(id); | 727 this._styleSheetIdToHeader.remove(id); |
| 728 this._styleSheetChangeSubscribers.removeAll(id); | |
| 703 var url = header.resourceURL(); | 729 var url = header.resourceURL(); |
| 704 var frameIdToStyleSheetIds = /** @type {!Object.<!Protocol.Page.FrameId, !Ar ray.<!Protocol.CSS.StyleSheetId>>} */ ( | 730 var frameIdToStyleSheetIds = /** @type {!Object.<!Protocol.Page.FrameId, !Ar ray.<!Protocol.CSS.StyleSheetId>>} */ ( |
| 705 this._styleSheetIdsForURL.get(url)); | 731 this._styleSheetIdsForURL.get(url)); |
| 706 console.assert(frameIdToStyleSheetIds, 'No frameId to styleSheetId map is av ailable for given style sheet URL.'); | 732 console.assert(frameIdToStyleSheetIds, 'No frameId to styleSheetId map is av ailable for given style sheet URL.'); |
| 707 frameIdToStyleSheetIds[header.frameId].remove(id); | 733 frameIdToStyleSheetIds[header.frameId].remove(id); |
| 708 if (!frameIdToStyleSheetIds[header.frameId].length) { | 734 if (!frameIdToStyleSheetIds[header.frameId].length) { |
| 709 delete frameIdToStyleSheetIds[header.frameId]; | 735 delete frameIdToStyleSheetIds[header.frameId]; |
| 710 if (!Object.keys(frameIdToStyleSheetIds).length) | 736 if (!Object.keys(frameIdToStyleSheetIds).length) |
| 711 this._styleSheetIdsForURL.remove(url); | 737 this._styleSheetIdsForURL.remove(url); |
| 712 } | 738 } |
| (...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1025 SDK.CSSModel.InlineStyleResult = class { | 1051 SDK.CSSModel.InlineStyleResult = class { |
| 1026 /** | 1052 /** |
| 1027 * @param {?SDK.CSSStyleDeclaration} inlineStyle | 1053 * @param {?SDK.CSSStyleDeclaration} inlineStyle |
| 1028 * @param {?SDK.CSSStyleDeclaration} attributesStyle | 1054 * @param {?SDK.CSSStyleDeclaration} attributesStyle |
| 1029 */ | 1055 */ |
| 1030 constructor(inlineStyle, attributesStyle) { | 1056 constructor(inlineStyle, attributesStyle) { |
| 1031 this.inlineStyle = inlineStyle; | 1057 this.inlineStyle = inlineStyle; |
| 1032 this.attributesStyle = attributesStyle; | 1058 this.attributesStyle = attributesStyle; |
| 1033 } | 1059 } |
| 1034 }; | 1060 }; |
| OLD | NEW |