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'); |