Commit f12b93a3 authored by apavlov@chromium.org's avatar apavlov@chromium.org

DevTools: Decouple CSS model from UI entities

CSSPresentationModel has been introduced in order to
- manage source mappings,
- store live locations,
- perform the rawLocationToUILocation conversions.

R=pfeldman, vsevik

Review URL: https://codereview.chromium.org/297923002

git-svn-id: svn://svn.chromium.org/blink/trunk@179012 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 0e0f1297
......@@ -25,9 +25,9 @@ function test()
function step1()
{
InspectorTest.addSniffer(WebInspector.CSSStyleSheetHeader.prototype, "pushSourceMapping", sourceMappingSniffer, true);
InspectorTest.addSniffer(WebInspector.CSSWorkspaceBinding.prototype, "pushSourceMapping", sourceMappingSniffer, true);
function sourceMappingSniffer(sourceMapping)
function sourceMappingSniffer(header, sourceMapping)
{
if (sourceMapping instanceof WebInspector.SASSSourceMapping) {
WebInspector.inspectorView.showPanel("elements");
......
......@@ -65,7 +65,7 @@ function test()
var target = WebInspector.targetManager.mainTarget();
cssModel = new WebInspector.CSSStyleModel(target, InspectorTest.testWorkspace);
target.cssModel = cssModel;
new WebInspector.CSSStyleSheetMapping(cssModel, InspectorTest.testWorkspace, InspectorTest.testNetworkWorkspaceBinding);
new WebInspector.CSSWorkspaceBinding.TargetInfo(target, InspectorTest.testWorkspace, InspectorTest.testNetworkWorkspaceBinding);
var resourcesURL = WebInspector.ParsedURL.completeURL(WebInspector.resourceTreeModel.inspectedPageURL(), "resources/");
var namePrefix = "update-locations-on-filesystem-scss-load."
......
......@@ -12,9 +12,9 @@ function test()
var finalMappedLocation;
InspectorTest.createWorkspace();
var target = WebInspector.targetManager.mainTarget();
var cssModel = new WebInspector.CSSStyleModel(target, InspectorTest.testWorkspace);
var cssModel = new WebInspector.CSSStyleModel(target);
target.cssModel = cssModel;
var mapping = new WebInspector.CSSStyleSheetMapping(cssModel, InspectorTest.testWorkspace, InspectorTest.testNetworkWorkspaceBinding);
new WebInspector.CSSWorkspaceBinding.TargetInfo(target, InspectorTest.testWorkspace, InspectorTest.testNetworkWorkspaceBinding);
InspectorTest.waitForWorkspaceUISourceCodeAddedEvent(cssUISourceCodeAdded);
const styleSheetURL = "http://localhost:8000/inspector/resources/example.css";
......@@ -22,7 +22,7 @@ function test()
const styleSheetId = 1;
InspectorTest.addMockUISourceCodeToWorkspace(styleSheetURL, WebInspector.resourceTypes.Stylesheet, "");
InspectorTest.addSniffer(WebInspector.CSSStyleSheetHeader.prototype, "updateLocations", locationsUpdated, true);
InspectorTest.addSniffer(WebInspector.CSSWorkspaceBinding.prototype, "updateLocations", locationsUpdated, true);
cssModel._styleSheetAdded(createMockStyleSheetHeader(styleSheetURL, sourceMapURL));
function locationsUpdated()
......
......@@ -90,7 +90,6 @@
'front_end/sdk/CSSMetadata.js',
'front_end/sdk/CSSParser.js',
'front_end/sdk/CSSStyleModel.js',
'front_end/sdk/CSSStyleSheetMapping.js',
'front_end/sdk/CSSWorkspaceBinding.js',
'front_end/sdk/BreakpointManager.js',
'front_end/sdk/DOMModel.js',
......
......@@ -151,7 +151,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<script type="text/javascript" src="sdk/ResourceScriptMapping.js"></script>
<script type="text/javascript" src="sdk/CompilerScriptMapping.js"></script>
<script type="text/javascript" src="sdk/LiveEditSupport.js"></script>
<script type="text/javascript" src="sdk/CSSStyleSheetMapping.js"></script>
<script type="text/javascript" src="sdk/SASSSourceMapping.js"></script>
<script type="text/javascript" src="sdk/DOMModel.js"></script>
<script type="text/javascript" src="ui/ForwardedInputEventHandler.js"></script>
......
......@@ -359,7 +359,6 @@ WebInspector.Main.prototype = {
WebInspector.openAnchorLocationRegistry.registerHandler(autoselectPanel, function() { return false; });
WebInspector.Linkifier.setLinkHandler(new WebInspector.HandlerRegistry.LinkHandler());
new WebInspector.WorkspaceController(WebInspector.workspace);
new WebInspector.CSSStyleSheetMapping(WebInspector.cssModel, WebInspector.workspace, WebInspector.networkWorkspaceBinding);
new WebInspector.RenderingOptions();
new WebInspector.Main.PauseListener();
new WebInspector.Main.InspectedNodeRevealer();
......
/*
* Copyright (C) 2013 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* @constructor
* @param {!WebInspector.CSSStyleModel} cssModel
* @param {!WebInspector.Workspace} workspace
* @param {!WebInspector.NetworkWorkspaceBinding} networkWorkspaceBinding
*/
WebInspector.CSSStyleSheetMapping = function(cssModel, workspace, networkWorkspaceBinding)
{
this._cssModel = cssModel;
this._workspace = workspace;
this._stylesSourceMapping = new WebInspector.StylesSourceMapping(cssModel, workspace);
this._sassSourceMapping = new WebInspector.SASSSourceMapping(cssModel, workspace, networkWorkspaceBinding);
cssModel.addEventListener(WebInspector.CSSStyleModel.Events.StyleSheetAdded, this._styleSheetAdded, this);
cssModel.addEventListener(WebInspector.CSSStyleModel.Events.StyleSheetRemoved, this._styleSheetRemoved, this);
}
WebInspector.CSSStyleSheetMapping.prototype = {
/**
* @param {!WebInspector.Event} event
*/
_styleSheetAdded: function(event)
{
var header = /** @type {!WebInspector.CSSStyleSheetHeader} */ (event.data);
this._stylesSourceMapping.addHeader(header);
this._sassSourceMapping.addHeader(header);
},
/**
* @param {!WebInspector.Event} event
*/
_styleSheetRemoved: function(event)
{
var header = /** @type {!WebInspector.CSSStyleSheetHeader} */ (event.data);
this._stylesSourceMapping.removeHeader(header);
this._sassSourceMapping.removeHeader(header);
}
}
......@@ -419,7 +419,7 @@ WebInspector.SASSSourceMapping.prototype = {
var completeSourceMapURL = WebInspector.ParsedURL.completeURL(sourceURL, header.sourceMapURL);
if (completeSourceMapURL)
delete this._sourceMapByURL[completeSourceMapURL];
header.updateLocations();
WebInspector.cssWorkspaceBinding.updateLocations(header);
},
/**
......@@ -445,7 +445,7 @@ WebInspector.SASSSourceMapping.prototype = {
this._sourceMapByStyleSheetURL[sourceURL] = sourceMap;
for (var i = 0; i < headersWithSameSourceURL.length; ++i) {
if (forceRebind)
headersWithSameSourceURL[i].updateLocations();
WebInspector.cssWorkspaceBinding.updateLocations(headersWithSameSourceURL[i]);
else
this._bindUISourceCode(headersWithSameSourceURL[i], sourceMap);
}
......@@ -519,7 +519,7 @@ WebInspector.SASSSourceMapping.prototype = {
*/
_bindUISourceCode: function(header, sourceMap)
{
header.pushSourceMapping(this);
WebInspector.cssWorkspaceBinding.pushSourceMapping(header, this);
var rawURL = header.sourceURL;
var sources = sourceMap.sources();
for (var i = 0; i < sources.length; ++i) {
......@@ -604,7 +604,7 @@ WebInspector.SASSSourceMapping.prototype = {
for (var j = 0; j < ids.length; ++j) {
var header = this._cssModel.styleSheetHeaderForId(ids[j]);
console.assert(header);
header.updateLocations();
WebInspector.cssWorkspaceBinding.updateLocations(/** @type {!WebInspector.CSSStyleSheetHeader} */ (header));
}
}
},
......
......@@ -110,7 +110,7 @@ WebInspector.StylesSourceMapping.prototype = {
if (!url)
return;
header.pushSourceMapping(this);
WebInspector.cssWorkspaceBinding.pushSourceMapping(header, this);
var map = this._urlToHeadersByFrameId[url];
if (!map) {
map = /** @type {!StringMap.<!StringMap.<!WebInspector.CSSStyleSheetHeader>>} */ (new StringMap());
......@@ -187,7 +187,7 @@ WebInspector.StylesSourceMapping.prototype = {
return;
var url = uiSourceCode.url;
this._styleFiles.put(uiSourceCode, new WebInspector.StyleFile(uiSourceCode, this));
header.updateLocations();
WebInspector.cssWorkspaceBinding.updateLocations(header);
},
/**
......
......@@ -38,7 +38,6 @@
"sdk/CSSMetadata.js",
"sdk/CSSParser.js",
"sdk/CSSStyleModel.js",
"sdk/CSSStyleSheetMapping.js",
"sdk/CSSWorkspaceBinding.js",
"sdk/BreakpointManager.js",
"sdk/DOMModel.js",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment