| Index: third_party/WebKit/Source/devtools/front_end/bindings/CSSWorkspaceBinding.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/bindings/CSSWorkspaceBinding.js b/third_party/WebKit/Source/devtools/front_end/bindings/CSSWorkspaceBinding.js
|
| index ace66379c46c5064ebca9578244bb61e3bfe3d7f..6b1d3b388c6eb077eb91c4d35a102c987a17cd5d 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/bindings/CSSWorkspaceBinding.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/bindings/CSSWorkspaceBinding.js
|
| @@ -17,8 +17,6 @@ WebInspector.CSSWorkspaceBinding = function(targetManager, workspace, networkMap
|
| /** @type {!Map.<!WebInspector.CSSModel, !WebInspector.CSSWorkspaceBinding.TargetInfo>} */
|
| this._modelToTargetInfo = new Map();
|
| targetManager.observeTargets(this);
|
| -
|
| - targetManager.addModelListener(WebInspector.ResourceTreeModel, WebInspector.ResourceTreeModel.Events.MainFrameNavigated, this._mainFrameCreatedOrNavigated, this);
|
| }
|
|
|
| WebInspector.CSSWorkspaceBinding.prototype = {
|
| @@ -46,46 +44,25 @@ WebInspector.CSSWorkspaceBinding.prototype = {
|
|
|
| /**
|
| * @param {!WebInspector.CSSStyleSheetHeader} header
|
| - * @param {!WebInspector.CSSSourceMapping} mapping
|
| + * @return {?WebInspector.CSSWorkspaceBinding.TargetInfo}
|
| */
|
| - pushSourceMapping: function(header, mapping)
|
| + _targetInfo: function(header)
|
| {
|
| - this._ensureInfoForHeader(header)._pushSourceMapping(mapping);
|
| + return this._modelToTargetInfo.get(header.cssModel()) || null;
|
| },
|
|
|
| /**
|
| * @param {!WebInspector.CSSStyleSheetHeader} header
|
| - * @return {?WebInspector.CSSWorkspaceBinding.HeaderInfo}
|
| + * @return {!WebInspector.CSSWorkspaceBinding.TargetInfo}
|
| */
|
| - _headerInfo: function(header)
|
| - {
|
| - var map = this._modelToTargetInfo.get(header.cssModel());
|
| - return map._headerInfo(header.id) || null;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.CSSStyleSheetHeader} header
|
| - * @return {!WebInspector.CSSWorkspaceBinding.HeaderInfo}
|
| - */
|
| - _ensureInfoForHeader: function(header)
|
| + _ensureTargetInfo: function(header)
|
| {
|
| var targetInfo = this._modelToTargetInfo.get(header.cssModel());
|
| if (!targetInfo) {
|
| targetInfo = new WebInspector.CSSWorkspaceBinding.TargetInfo(header.cssModel(), this._workspace, this._networkMapping);
|
| this._modelToTargetInfo.set(header.cssModel(), targetInfo);
|
| }
|
| - return targetInfo._ensureInfoForHeader(header);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _mainFrameCreatedOrNavigated: function(event)
|
| - {
|
| - var target = /** @type {!WebInspector.ResourceTreeModel} */ (event.target).target();
|
| - var cssModel = WebInspector.CSSModel.fromTarget(target);
|
| - if (cssModel)
|
| - this._modelToTargetInfo.get(cssModel)._reset();
|
| + return targetInfo;
|
| },
|
|
|
| /**
|
| @@ -93,9 +70,9 @@ WebInspector.CSSWorkspaceBinding.prototype = {
|
| */
|
| updateLocations: function(header)
|
| {
|
| - var info = this._headerInfo(header);
|
| - if (info)
|
| - info._updateLocations();
|
| + var targetInfo = this._targetInfo(header);
|
| + if (targetInfo)
|
| + targetInfo._updateLocations(header);
|
| },
|
|
|
| /**
|
| @@ -115,7 +92,7 @@ WebInspector.CSSWorkspaceBinding.prototype = {
|
| */
|
| _addLiveLocation: function(location)
|
| {
|
| - this._ensureInfoForHeader(location._header)._addLocation(location);
|
| + this._ensureTargetInfo(location._header)._addLocation(location);
|
| },
|
|
|
| /**
|
| @@ -123,9 +100,9 @@ WebInspector.CSSWorkspaceBinding.prototype = {
|
| */
|
| _removeLiveLocation: function(location)
|
| {
|
| - var info = this._headerInfo(location._header);
|
| - if (info)
|
| - info._removeLocation(location);
|
| + var targetInfo = this._targetInfo(location._header);
|
| + if (targetInfo)
|
| + targetInfo._removeLocation(location);
|
| },
|
|
|
| /**
|
| @@ -163,8 +140,8 @@ WebInspector.CSSWorkspaceBinding.prototype = {
|
| var header = rawLocation.cssModel().styleSheetHeaderForId(rawLocation.styleSheetId);
|
| if (!header)
|
| return null;
|
| - var info = this._headerInfo(header);
|
| - return info ? info._rawLocationToUILocation(rawLocation.lineNumber, rawLocation.columnNumber) : null;
|
| + var targetInfo = this._targetInfo(header);
|
| + return targetInfo ? targetInfo._rawLocationToUILocation(header, rawLocation.lineNumber, rawLocation.columnNumber) : null;
|
| }
|
| }
|
|
|
| @@ -180,8 +157,8 @@ WebInspector.CSSWorkspaceBinding.TargetInfo = function(cssModel, workspace, netw
|
| this._stylesSourceMapping = new WebInspector.StylesSourceMapping(cssModel, workspace, networkMapping);
|
| this._sassSourceMapping = new WebInspector.SASSSourceMapping(cssModel, networkMapping, WebInspector.NetworkProject.forTarget(cssModel.target()));
|
|
|
| - /** @type {!Map.<string, !WebInspector.CSSWorkspaceBinding.HeaderInfo>} */
|
| - this._headerInfoById = new Map();
|
| + /** @type {!Multimap<!WebInspector.CSSStyleSheetHeader, !WebInspector.LiveLocation>} */
|
| + this._locations = new Multimap();
|
|
|
| cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetAdded, this._styleSheetAdded, this);
|
| cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetRemoved, this._styleSheetRemoved, this);
|
| @@ -206,107 +183,54 @@ WebInspector.CSSWorkspaceBinding.TargetInfo.prototype = {
|
| var header = /** @type {!WebInspector.CSSStyleSheetHeader} */ (event.data);
|
| this._stylesSourceMapping.removeHeader(header);
|
| this._sassSourceMapping.removeHeader(header);
|
| - this._headerInfoById.remove(header.id);
|
| - },
|
| -
|
| - /**
|
| - * @param {!CSSAgent.StyleSheetId} id
|
| - */
|
| - _headerInfo: function(id)
|
| - {
|
| - return this._headerInfoById.get(id);
|
| },
|
|
|
| /**
|
| - * @param {!WebInspector.CSSStyleSheetHeader} header
|
| - * @return {!WebInspector.CSSWorkspaceBinding.HeaderInfo}
|
| - */
|
| - _ensureInfoForHeader: function(header)
|
| - {
|
| - var info = this._headerInfoById.get(header.id);
|
| - if (!info) {
|
| - info = new WebInspector.CSSWorkspaceBinding.HeaderInfo(header);
|
| - this._headerInfoById.set(header.id, info);
|
| - }
|
| - return info;
|
| - },
|
| -
|
| - _dispose: function()
|
| - {
|
| - this._reset();
|
| - this._cssModel.removeEventListener(WebInspector.CSSModel.Events.StyleSheetAdded, this._styleSheetAdded, this);
|
| - this._cssModel.removeEventListener(WebInspector.CSSModel.Events.StyleSheetRemoved, this._styleSheetRemoved, this);
|
| - },
|
| -
|
| - _reset: function()
|
| - {
|
| - this._headerInfoById.clear();
|
| - }
|
| -}
|
| -
|
| -/**
|
| - * @constructor
|
| - * @param {!WebInspector.CSSStyleSheetHeader} header
|
| - */
|
| -WebInspector.CSSWorkspaceBinding.HeaderInfo = function(header)
|
| -{
|
| - this._header = header;
|
| -
|
| - /** @type {!Array.<!WebInspector.CSSSourceMapping>} */
|
| - this._sourceMappings = [];
|
| -
|
| - /** @type {!Set.<!WebInspector.LiveLocation>} */
|
| - this._locations = new Set();
|
| -}
|
| -
|
| -WebInspector.CSSWorkspaceBinding.HeaderInfo.prototype = {
|
| - /**
|
| - * @param {!WebInspector.LiveLocation} location
|
| + * @param {!WebInspector.CSSWorkspaceBinding.LiveLocation} location
|
| */
|
| _addLocation: function(location)
|
| {
|
| - this._locations.add(location);
|
| + var header = location._header;
|
| + this._locations.set(header, location);
|
| location.update();
|
| },
|
|
|
| /**
|
| - * @param {!WebInspector.LiveLocation} location
|
| + * @param {!WebInspector.CSSWorkspaceBinding.LiveLocation} location
|
| */
|
| _removeLocation: function(location)
|
| {
|
| - this._locations.delete(location);
|
| + this._locations.remove(location._header, location);
|
| },
|
|
|
| - _updateLocations: function()
|
| + /**
|
| + * @param {!WebInspector.CSSStyleSheetHeader} header
|
| + */
|
| + _updateLocations: function(header)
|
| {
|
| - var items = this._locations.valuesArray();
|
| - for (var i = 0; i < items.length; ++i)
|
| - items[i].update();
|
| + for (var location of this._locations.get(header))
|
| + location.update();
|
| },
|
|
|
| /**
|
| + * @param {!WebInspector.CSSStyleSheetHeader} header
|
| * @param {number} lineNumber
|
| * @param {number=} columnNumber
|
| * @return {?WebInspector.UILocation}
|
| */
|
| - _rawLocationToUILocation: function(lineNumber, columnNumber)
|
| + _rawLocationToUILocation: function(header, lineNumber, columnNumber)
|
| {
|
| + var rawLocation = new WebInspector.CSSLocation(header, lineNumber, columnNumber);
|
| var uiLocation = null;
|
| - var rawLocation = new WebInspector.CSSLocation(this._header, lineNumber, columnNumber);
|
| - for (var i = this._sourceMappings.length - 1; !uiLocation && i >= 0; --i)
|
| - uiLocation = this._sourceMappings[i].rawLocationToUILocation(rawLocation);
|
| + uiLocation = uiLocation || this._sassSourceMapping.rawLocationToUILocation(rawLocation);
|
| + uiLocation = uiLocation || this._stylesSourceMapping.rawLocationToUILocation(rawLocation);
|
| return uiLocation;
|
| },
|
|
|
| - /**
|
| - * @param {!WebInspector.CSSSourceMapping} sourceMapping
|
| - */
|
| - _pushSourceMapping: function(sourceMapping)
|
| + _dispose: function()
|
| {
|
| - if (this._sourceMappings.indexOf(sourceMapping) !== -1)
|
| - return;
|
| - this._sourceMappings.push(sourceMapping);
|
| - this._updateLocations();
|
| + this._cssModel.removeEventListener(WebInspector.CSSModel.Events.StyleSheetAdded, this._styleSheetAdded, this);
|
| + this._cssModel.removeEventListener(WebInspector.CSSModel.Events.StyleSheetRemoved, this._styleSheetRemoved, this);
|
| }
|
| }
|
|
|
| @@ -383,8 +307,8 @@ WebInspector.CSSWorkspaceBinding.LiveLocation.prototype = {
|
| {
|
| var cssLocation = this._rawLocation;
|
| if (this._header) {
|
| - var headerInfo = this._binding._headerInfo(this._header);
|
| - return headerInfo._rawLocationToUILocation(cssLocation.lineNumber, cssLocation.columnNumber);
|
| + var targetInfo = this._binding._targetInfo(this._header);
|
| + return targetInfo._rawLocationToUILocation(this._header, cssLocation.lineNumber, cssLocation.columnNumber);
|
| }
|
| var uiSourceCode = this._binding._networkMapping.uiSourceCodeForStyleURL(cssLocation.url, cssLocation.header());
|
| if (!uiSourceCode)
|
| @@ -417,41 +341,6 @@ WebInspector.CSSWorkspaceBinding.LiveLocation.prototype = {
|
| }
|
|
|
| /**
|
| - * @interface
|
| - */
|
| -WebInspector.CSSSourceMapping = function()
|
| -{
|
| -}
|
| -
|
| -WebInspector.CSSSourceMapping.prototype = {
|
| - /**
|
| - * @param {!WebInspector.CSSLocation} rawLocation
|
| - * @return {?WebInspector.UILocation}
|
| - */
|
| - rawLocationToUILocation: function(rawLocation) { },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @param {number} lineNumber
|
| - * @param {number} columnNumber
|
| - * @return {?WebInspector.CSSLocation}
|
| - */
|
| - uiLocationToRawLocation: function(uiSourceCode, lineNumber, columnNumber) { },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - isIdentity: function() { },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @param {number} lineNumber
|
| - * @return {boolean}
|
| - */
|
| - uiLineHasMapping: function(uiSourceCode, lineNumber) { }
|
| -}
|
| -
|
| -/**
|
| * @type {!WebInspector.CSSWorkspaceBinding}
|
| */
|
| WebInspector.cssWorkspaceBinding;
|
|
|