Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(636)

Unified Diff: third_party/WebKit/Source/devtools/front_end/bindings/NetworkProject.js

Issue 2662513003: DevTools: make StylesSourceMapping in charge of creating and removing UISourceCodes (Closed)
Patch Set: pass tests Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/bindings/NetworkProject.js
diff --git a/third_party/WebKit/Source/devtools/front_end/bindings/NetworkProject.js b/third_party/WebKit/Source/devtools/front_end/bindings/NetworkProject.js
index fa1660f6e1dcd04181770b1ab3b59f8041ff6e8f..05224e41f9dabf0d1bfbf265facd668efe70d44c 100644
--- a/third_party/WebKit/Source/devtools/front_end/bindings/NetworkProject.js
+++ b/third_party/WebKit/Source/devtools/front_end/bindings/NetworkProject.js
@@ -31,12 +31,13 @@
* @implements {SDK.TargetManager.Observer}
* @unrestricted
*/
-Bindings.NetworkProjectManager = class {
+Bindings.NetworkProjectManager = class extends Common.Object {
/**
* @param {!SDK.TargetManager} targetManager
* @param {!Workspace.Workspace} workspace
*/
constructor(targetManager, workspace) {
+ super();
this._workspace = workspace;
targetManager.observeTargets(this);
}
@@ -58,6 +59,17 @@ Bindings.NetworkProjectManager = class {
}
};
+/** @implements {Common.Emittable} */
+Bindings.NetworkProjectManager.FrameAttributionChangedEvent = class {
+ /**
+ * @param {!Workspace.UISourceCode} uiSourceCode
+ */
+ constructor(uiSourceCode) {
+ this.uiSourceCode = uiSourceCode;
+ }
+};
+
+
/**
* @unrestricted
*/
@@ -93,12 +105,6 @@ Bindings.NetworkProject = class extends SDK.SDKObject {
debuggerModel.addEventListener(
SDK.DebuggerModel.Events.FailedToParseScriptSource, this._parsedScriptSource, this));
}
- var cssModel = target.model(SDK.CSSModel);
- if (cssModel) {
- this._eventListeners.push(
- cssModel.addEventListener(SDK.CSSModel.Events.StyleSheetAdded, this._styleSheetAdded, this),
- cssModel.addEventListener(SDK.CSSModel.Events.StyleSheetRemoved, this._styleSheetRemoved, this));
- }
this._eventListeners.push(target.targetManager().addEventListener(
SDK.TargetManager.Events.SuspendStateChanged, this._suspendStateChanged, this));
}
@@ -137,12 +143,16 @@ Bindings.NetworkProject = class extends SDK.SDKObject {
return project[Bindings.NetworkProject._frameSymbol] || null;
}
+ static framesForUISourceCode(uiSourceCode) {
+ return uiSourceCode[Bindings.NetworkProject._frameSymbol] || [];
+ }
+
/**
* @param {!Workspace.UISourceCode} uiSourceCode
* @return {?SDK.Target} target
*/
static targetForUISourceCode(uiSourceCode) {
- return uiSourceCode[Bindings.NetworkProject._targetSymbol] || null;
+ return uiSourceCode.project()[Bindings.NetworkProject._targetSymbol] || null;
}
/**
@@ -150,7 +160,7 @@ Bindings.NetworkProject = class extends SDK.SDKObject {
* @return {string}
*/
static uiSourceCodeMimeType(uiSourceCode) {
- if (uiSourceCode[Bindings.NetworkProject._scriptSymbol] || uiSourceCode[Bindings.NetworkProject._styleSheetSymbol])
+ if (uiSourceCode[Bindings.NetworkProject._useExplicitMimeType])
return uiSourceCode.contentType().canonicalMimeType();
var resource = uiSourceCode[Bindings.NetworkProject._resourceSymbol];
@@ -176,12 +186,55 @@ Bindings.NetworkProject = class extends SDK.SDKObject {
project = new Bindings.ContentProviderBasedProject(
this._workspace, projectId, projectType, '', false /* isServiceProject */);
project[Bindings.NetworkProject._targetSymbol] = this.target();
- project[Bindings.NetworkProject._frameSymbol] = frame;
this._workspaceProjects.set(projectId, project);
return project;
}
/**
+ * @param {!Workspace.Project} project
+ * @param {!SDK.Target} target
+ */
+ static connectProjectToTarget(project, target) {
+ project[Bindings.NetworkProject._targetSymbol] = target;
+ }
+
+ /**
+ * @param {!Workspace.UISourceCode} uiSourceCode
+ * @param {!SDK.ResourceTreeFrame} frame
+ */
+ static connectFrameToUISourceCode(uiSourceCode, frame) {
+ var frames = uiSourceCode[Bindings.NetworkProject._frameSymbol];
+ if (!frames) {
+ frames = [];
+ uiSourceCode[Bindings.NetworkProject._frameSymbol] = frames;
+ }
+ frames.push(frame);
+ Bindings.networkProjectManager.emit(new Bindings.NetworkProjectManager.FrameAttributionChangedEvent(uiSourceCode));
+ }
+
+ /**
+ * @param {!Workspace.UISourceCode} uiSourceCode
+ * @param {!SDK.ResourceTreeFrame} frame
+ */
+ static disconnectFrameFromUISourceCode(uiSourceCode, frame) {
+ var frames = uiSourceCode[Bindings.NetworkProject._frameSymbol];
+ var frameIndex = frames.indexOf(frame);
+ if (frameIndex === -1)
+ return;
+ frames.splice(frameIndex, 1);
+ if (!frames.length)
+ uiSourceCode[Bindings.NetworkProject._frameSymbol] = null;
+ Bindings.networkProjectManager.emit(new Bindings.NetworkProjectManager.FrameAttributionChangedEvent(uiSourceCode));
+ }
+
+ /**
+ * @param {!Workspace.UISourceCode} uiSourceCode
+ */
+ static useExplicitMimeType(uiSourceCode) {
+ uiSourceCode[Bindings.NetworkProject._useExplicitMimeType] = true;
+ }
+
+ /**
* @param {!Common.ContentProvider} contentProvider
* @param {?SDK.ResourceTreeFrame} frame
* @param {boolean} isContentScript
@@ -195,17 +248,6 @@ Bindings.NetworkProject = class extends SDK.SDKObject {
return uiSourceCode;
}
- /**
- * @param {?SDK.ResourceTreeFrame} frame
- * @param {string} url
- */
- _removeFileForURL(frame, url) {
- var project = this._workspaceProjects.get(Bindings.NetworkProject.projectId(this.target(), frame, false));
- if (!project)
- return;
- project.removeFile(url);
- }
-
_populate() {
/**
* @param {!SDK.ResourceTreeFrame} frame
@@ -250,37 +292,10 @@ Bindings.NetworkProject = class extends SDK.SDKObject {
return;
}
var uiSourceCode = this._createFile(script, SDK.ResourceTreeFrame.fromScript(script), script.isContentScript());
- uiSourceCode[Bindings.NetworkProject._scriptSymbol] = script;
- var resource = SDK.ResourceTreeModel.resourceForURL(uiSourceCode.url());
- this._addUISourceCodeWithProvider(uiSourceCode, script, this._resourceMetadata(resource));
- }
-
- /**
- * @param {!Common.Event} event
- */
- _styleSheetAdded(event) {
- var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data);
- if (header.isInline && !header.hasSourceURL && header.origin !== 'inspector')
- return;
- if (!header.resourceURL())
- return;
-
- var originalContentProvider = header.originalContentProvider();
- var uiSourceCode = this._createFile(originalContentProvider, SDK.ResourceTreeFrame.fromStyleSheet(header), false);
- uiSourceCode[Bindings.NetworkProject._styleSheetSymbol] = header;
- var resource = SDK.ResourceTreeModel.resourceForURL(uiSourceCode.url());
- this._addUISourceCodeWithProvider(uiSourceCode, originalContentProvider, this._resourceMetadata(resource));
- }
-
- /**
- * @param {!Common.Event} event
- */
- _styleSheetRemoved(event) {
- var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data);
- if (header.isInline && !header.hasSourceURL && header.origin !== 'inspector')
- return;
-
- this._removeFileForURL(SDK.ResourceTreeFrame.fromStyleSheet(header), header.resourceURL());
+ uiSourceCode[Bindings.NetworkProject._useExplicitMimeType] = true;
+ var frame = SDK.ResourceTreeFrame.fromScript(script);
+ var metadata = frame ? Bindings.resourceMetadata(frame.resourceForURL(uiSourceCode.url())) : null;
+ this._addUISourceCodeWithProvider(uiSourceCode, script, metadata);
}
/**
@@ -317,7 +332,7 @@ Bindings.NetworkProject = class extends SDK.SDKObject {
var uiSourceCode = this._createFile(resource, SDK.ResourceTreeFrame.fromResource(resource), false);
uiSourceCode[Bindings.NetworkProject._resourceSymbol] = resource;
- this._addUISourceCodeWithProvider(uiSourceCode, resource, this._resourceMetadata(resource));
+ this._addUISourceCodeWithProvider(uiSourceCode, resource, Bindings.resourceMetadata(resource));
}
/**
@@ -358,20 +373,10 @@ Bindings.NetworkProject = class extends SDK.SDKObject {
var url = contentProvider.contentURL();
var project = this._workspaceProject(frame, isContentScript);
var uiSourceCode = project.createUISourceCode(url, contentProvider.contentType());
- uiSourceCode[Bindings.NetworkProject._targetSymbol] = this.target();
+ uiSourceCode[Bindings.NetworkProject._frameSymbol] = [frame];
return uiSourceCode;
}
- /**
- * @param {?SDK.Resource} resource
- * @return {?Workspace.UISourceCodeMetadata}
- */
- _resourceMetadata(resource) {
- if (!resource || (typeof resource.contentSize() !== 'number' && !resource.lastModified()))
- return null;
- return new Workspace.UISourceCodeMetadata(resource.lastModified(), resource.contentSize());
- }
-
_dispose() {
this._reset();
Common.EventTarget.removeEventListeners(this._eventListeners);
@@ -411,7 +416,6 @@ Bindings.NetworkProject = class extends SDK.SDKObject {
Bindings.NetworkProject._networkProjectSymbol = Symbol('networkProject');
Bindings.NetworkProject._resourceSymbol = Symbol('resource');
-Bindings.NetworkProject._scriptSymbol = Symbol('script');
-Bindings.NetworkProject._styleSheetSymbol = Symbol('styleSheet');
+Bindings.NetworkProject._useExplicitMimeType = Symbol('useExplicitMimeType');
Bindings.NetworkProject._targetSymbol = Symbol('target');
Bindings.NetworkProject._frameSymbol = Symbol('frame');

Powered by Google App Engine
This is Rietveld 408576698