| 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..8da2c925cc98b4b48ea4f55fa3cee12c3d3ee324 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));
|
| }
|
| @@ -130,11 +136,11 @@ Bindings.NetworkProject = class extends SDK.SDKObject {
|
| }
|
|
|
| /**
|
| - * @param {!Workspace.Project} project
|
| - * @return {?SDK.ResourceTreeFrame}
|
| + * @param {!Workspace.UISourceCode} uiSourceCode
|
| + * @return {!Array<!SDK.ResourceTreeFrame>}
|
| */
|
| - static frameForProject(project) {
|
| - return project[Bindings.NetworkProject._frameSymbol] || null;
|
| + static framesForUISourceCode(uiSourceCode) {
|
| + return uiSourceCode[Bindings.NetworkProject._frameSymbol] || [];
|
| }
|
|
|
| /**
|
| @@ -142,7 +148,7 @@ Bindings.NetworkProject = class extends SDK.SDKObject {
|
| * @return {?SDK.Target} target
|
| */
|
| static targetForUISourceCode(uiSourceCode) {
|
| - return uiSourceCode[Bindings.NetworkProject._targetSymbol] || null;
|
| + return uiSourceCode.project()[Bindings.NetworkProject._targetSymbol] || null;
|
| }
|
|
|
| /**
|
| @@ -150,7 +156,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 +182,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 +244,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 +288,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 +328,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 +369,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 +412,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');
|
|
|