| 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 40605ff48bd3013a83576f759d2bd49d39c442ac..1a2fafa7078e2a92089d8e601fe07d2871b4eade 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/bindings/NetworkProject.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/bindings/NetworkProject.js
|
| @@ -27,49 +27,48 @@
|
| * (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.TargetManager} targetManager
|
| - * @param {!WebInspector.Workspace} workspace
|
| * @implements {WebInspector.TargetManager.Observer}
|
| + * @unrestricted
|
| */
|
| -WebInspector.NetworkProjectManager = function(targetManager, workspace)
|
| -{
|
| +WebInspector.NetworkProjectManager = class {
|
| + /**
|
| + * @param {!WebInspector.TargetManager} targetManager
|
| + * @param {!WebInspector.Workspace} workspace
|
| + */
|
| + constructor(targetManager, workspace) {
|
| this._workspace = workspace;
|
| targetManager.observeTargets(this);
|
| -};
|
| -
|
| -WebInspector.NetworkProjectManager.prototype = {
|
| - /**
|
| - * @override
|
| - * @param {!WebInspector.Target} target
|
| - */
|
| - targetAdded: function(target)
|
| - {
|
| - new WebInspector.NetworkProject(target, this._workspace, WebInspector.ResourceTreeModel.fromTarget(target));
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @param {!WebInspector.Target} target
|
| - */
|
| - targetRemoved: function(target)
|
| - {
|
| - WebInspector.NetworkProject.forTarget(target)._dispose();
|
| - }
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {!WebInspector.Target} target
|
| + */
|
| + targetAdded(target) {
|
| + new WebInspector.NetworkProject(target, this._workspace, WebInspector.ResourceTreeModel.fromTarget(target));
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {!WebInspector.Target} target
|
| + */
|
| + targetRemoved(target) {
|
| + WebInspector.NetworkProject.forTarget(target)._dispose();
|
| + }
|
| };
|
|
|
| /**
|
| - * @constructor
|
| - * @extends {WebInspector.SDKObject}
|
| - * @param {!WebInspector.Target} target
|
| - * @param {!WebInspector.Workspace} workspace
|
| - * @param {?WebInspector.ResourceTreeModel} resourceTreeModel
|
| + * @unrestricted
|
| */
|
| -WebInspector.NetworkProject = function(target, workspace, resourceTreeModel)
|
| -{
|
| - WebInspector.SDKObject.call(this, target);
|
| +WebInspector.NetworkProject = class extends WebInspector.SDKObject {
|
| + /**
|
| + * @param {!WebInspector.Target} target
|
| + * @param {!WebInspector.Workspace} workspace
|
| + * @param {?WebInspector.ResourceTreeModel} resourceTreeModel
|
| + */
|
| + constructor(target, workspace, resourceTreeModel) {
|
| + super(target);
|
| this._workspace = workspace;
|
| /** @type {!Map<string, !WebInspector.ContentProviderBasedProject>} */
|
| this._workspaceProjects = new Map();
|
| @@ -79,338 +78,321 @@ WebInspector.NetworkProject = function(target, workspace, resourceTreeModel)
|
| this._eventListeners = [];
|
|
|
| if (resourceTreeModel) {
|
| - this._eventListeners.push(
|
| - resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.Events.ResourceAdded, this._resourceAdded, this),
|
| - resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.Events.FrameWillNavigate, this._frameWillNavigate, this),
|
| - resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.Events.MainFrameNavigated, this._mainFrameNavigated, this));
|
| + this._eventListeners.push(
|
| + resourceTreeModel.addEventListener(
|
| + WebInspector.ResourceTreeModel.Events.ResourceAdded, this._resourceAdded, this),
|
| + resourceTreeModel.addEventListener(
|
| + WebInspector.ResourceTreeModel.Events.FrameWillNavigate, this._frameWillNavigate, this),
|
| + resourceTreeModel.addEventListener(
|
| + WebInspector.ResourceTreeModel.Events.MainFrameNavigated, this._mainFrameNavigated, this));
|
| }
|
|
|
| var debuggerModel = WebInspector.DebuggerModel.fromTarget(target);
|
| if (debuggerModel) {
|
| - this._eventListeners.push(
|
| - debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.ParsedScriptSource, this._parsedScriptSource, this),
|
| - debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.FailedToParseScriptSource, this._parsedScriptSource, this));
|
| + this._eventListeners.push(
|
| + debuggerModel.addEventListener(
|
| + WebInspector.DebuggerModel.Events.ParsedScriptSource, this._parsedScriptSource, this),
|
| + debuggerModel.addEventListener(
|
| + WebInspector.DebuggerModel.Events.FailedToParseScriptSource, this._parsedScriptSource, this));
|
| }
|
| var cssModel = WebInspector.CSSModel.fromTarget(target);
|
| if (cssModel) {
|
| - this._eventListeners.push(
|
| - cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetAdded, this._styleSheetAdded, this),
|
| - cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetRemoved, this._styleSheetRemoved, this));
|
| + this._eventListeners.push(
|
| + cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetAdded, this._styleSheetAdded, this),
|
| + cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetRemoved, this._styleSheetRemoved, this));
|
| }
|
| - this._eventListeners.push(
|
| - target.targetManager().addEventListener(WebInspector.TargetManager.Events.SuspendStateChanged, this._suspendStateChanged, this));
|
| -};
|
| -
|
| -WebInspector.NetworkProject._networkProjectSymbol = Symbol("networkProject");
|
| -WebInspector.NetworkProject._resourceSymbol = Symbol("resource");
|
| -WebInspector.NetworkProject._scriptSymbol = Symbol("script");
|
| -WebInspector.NetworkProject._styleSheetSymbol = Symbol("styleSheet");
|
| -WebInspector.NetworkProject._targetSymbol = Symbol("target");
|
| -WebInspector.NetworkProject._frameSymbol = Symbol("frame");
|
| -
|
| -/**
|
| - * @param {!WebInspector.Target} target
|
| - * @param {?WebInspector.ResourceTreeFrame} frame
|
| - * @param {boolean} isContentScripts
|
| - * @return {string}
|
| - */
|
| -WebInspector.NetworkProject.projectId = function(target, frame, isContentScripts)
|
| -{
|
| - return target.id() + ":" + (frame ? frame.id : "") + ":" + (isContentScripts ? "contentscripts" : "");
|
| -};
|
| -
|
| -/**
|
| - * @param {!WebInspector.Target} target
|
| - * @return {!WebInspector.NetworkProject}
|
| - */
|
| -WebInspector.NetworkProject.forTarget = function(target)
|
| -{
|
| + this._eventListeners.push(target.targetManager().addEventListener(
|
| + WebInspector.TargetManager.Events.SuspendStateChanged, this._suspendStateChanged, this));
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Target} target
|
| + * @param {?WebInspector.ResourceTreeFrame} frame
|
| + * @param {boolean} isContentScripts
|
| + * @return {string}
|
| + */
|
| + static projectId(target, frame, isContentScripts) {
|
| + return target.id() + ':' + (frame ? frame.id : '') + ':' + (isContentScripts ? 'contentscripts' : '');
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Target} target
|
| + * @return {!WebInspector.NetworkProject}
|
| + */
|
| + static forTarget(target) {
|
| return target[WebInspector.NetworkProject._networkProjectSymbol];
|
| -};
|
| + }
|
|
|
| -/**
|
| - * @param {!WebInspector.Project} project
|
| - * @return {?WebInspector.Target} target
|
| - */
|
| -WebInspector.NetworkProject.targetForProject = function(project)
|
| -{
|
| + /**
|
| + * @param {!WebInspector.Project} project
|
| + * @return {?WebInspector.Target} target
|
| + */
|
| + static targetForProject(project) {
|
| return project[WebInspector.NetworkProject._targetSymbol] || null;
|
| -};
|
| + }
|
|
|
| -/**
|
| - * @param {!WebInspector.Project} project
|
| - * @return {?WebInspector.ResourceTreeFrame}
|
| - */
|
| -WebInspector.NetworkProject.frameForProject = function(project)
|
| -{
|
| + /**
|
| + * @param {!WebInspector.Project} project
|
| + * @return {?WebInspector.ResourceTreeFrame}
|
| + */
|
| + static frameForProject(project) {
|
| return project[WebInspector.NetworkProject._frameSymbol] || null;
|
| -};
|
| + }
|
|
|
| -/**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @return {?WebInspector.Target} target
|
| - */
|
| -WebInspector.NetworkProject.targetForUISourceCode = function(uiSourceCode)
|
| -{
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @return {?WebInspector.Target} target
|
| + */
|
| + static targetForUISourceCode(uiSourceCode) {
|
| return uiSourceCode[WebInspector.NetworkProject._targetSymbol] || null;
|
| -};
|
| + }
|
|
|
| -/**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @return {string}
|
| - */
|
| -WebInspector.NetworkProject.uiSourceCodeMimeType = function(uiSourceCode)
|
| -{
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @return {string}
|
| + */
|
| + static uiSourceCodeMimeType(uiSourceCode) {
|
| if (uiSourceCode[WebInspector.NetworkProject._scriptSymbol] ||
|
| uiSourceCode[WebInspector.NetworkProject._styleSheetSymbol]) {
|
| - return uiSourceCode.contentType().canonicalMimeType();
|
| + return uiSourceCode.contentType().canonicalMimeType();
|
| }
|
| var resource = uiSourceCode[WebInspector.NetworkProject._resourceSymbol];
|
| if (resource)
|
| - return resource.mimeType;
|
| + return resource.mimeType;
|
| var mimeType = WebInspector.ResourceType.mimeFromURL(uiSourceCode.url());
|
| return mimeType || uiSourceCode.contentType().canonicalMimeType();
|
| -};
|
| -
|
| -WebInspector.NetworkProject.prototype = {
|
| - /**
|
| - * @param {?WebInspector.ResourceTreeFrame} frame
|
| - * @param {boolean} isContentScripts
|
| - * @return {!WebInspector.ContentProviderBasedProject}
|
| - */
|
| - _workspaceProject: function(frame, isContentScripts)
|
| - {
|
| - var projectId = WebInspector.NetworkProject.projectId(this.target(), frame, isContentScripts);
|
| - var projectType = isContentScripts ? WebInspector.projectTypes.ContentScripts : WebInspector.projectTypes.Network;
|
| -
|
| - var project = this._workspaceProjects.get(projectId);
|
| - if (project)
|
| - return project;
|
| -
|
| - project = new WebInspector.ContentProviderBasedProject(this._workspace, projectId, projectType, "");
|
| - project[WebInspector.NetworkProject._targetSymbol] = this.target();
|
| - project[WebInspector.NetworkProject._frameSymbol] = frame;
|
| - this._workspaceProjects.set(projectId, project);
|
| - return project;
|
| - },
|
| -
|
| + }
|
| +
|
| + /**
|
| + * @param {?WebInspector.ResourceTreeFrame} frame
|
| + * @param {boolean} isContentScripts
|
| + * @return {!WebInspector.ContentProviderBasedProject}
|
| + */
|
| + _workspaceProject(frame, isContentScripts) {
|
| + var projectId = WebInspector.NetworkProject.projectId(this.target(), frame, isContentScripts);
|
| + var projectType = isContentScripts ? WebInspector.projectTypes.ContentScripts : WebInspector.projectTypes.Network;
|
| +
|
| + var project = this._workspaceProjects.get(projectId);
|
| + if (project)
|
| + return project;
|
| +
|
| + project = new WebInspector.ContentProviderBasedProject(this._workspace, projectId, projectType, '');
|
| + project[WebInspector.NetworkProject._targetSymbol] = this.target();
|
| + project[WebInspector.NetworkProject._frameSymbol] = frame;
|
| + this._workspaceProjects.set(projectId, project);
|
| + return project;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.ContentProvider} contentProvider
|
| + * @param {?WebInspector.ResourceTreeFrame} frame
|
| + * @param {boolean} isContentScript
|
| + * @param {?number} contentSize
|
| + * @return {!WebInspector.UISourceCode}
|
| + */
|
| + addFile(contentProvider, frame, isContentScript, contentSize) {
|
| + var uiSourceCode = this._createFile(contentProvider, frame, isContentScript || false);
|
| + var metadata = typeof contentSize === 'number' ? new WebInspector.UISourceCodeMetadata(null, contentSize) : null;
|
| + this._addUISourceCodeWithProvider(uiSourceCode, contentProvider, metadata);
|
| + return uiSourceCode;
|
| + }
|
| +
|
| + /**
|
| + * @param {?WebInspector.ResourceTreeFrame} frame
|
| + * @param {string} url
|
| + */
|
| + _removeFileForURL(frame, url) {
|
| + var project = this._workspaceProjects.get(WebInspector.NetworkProject.projectId(this.target(), frame, false));
|
| + if (!project)
|
| + return;
|
| + project.removeFile(url);
|
| + }
|
| +
|
| + _populate() {
|
| /**
|
| - * @param {!WebInspector.ContentProvider} contentProvider
|
| - * @param {?WebInspector.ResourceTreeFrame} frame
|
| - * @param {boolean} isContentScript
|
| - * @param {?number} contentSize
|
| - * @return {!WebInspector.UISourceCode}
|
| + * @param {!WebInspector.ResourceTreeFrame} frame
|
| + * @this {WebInspector.NetworkProject}
|
| */
|
| - addFile: function(contentProvider, frame, isContentScript, contentSize)
|
| - {
|
| - var uiSourceCode = this._createFile(contentProvider, frame, isContentScript || false);
|
| - var metadata = typeof contentSize === "number" ? new WebInspector.UISourceCodeMetadata(null, contentSize) : null;
|
| - this._addUISourceCodeWithProvider(uiSourceCode, contentProvider, metadata);
|
| - return uiSourceCode;
|
| - },
|
| -
|
| - /**
|
| - * @param {?WebInspector.ResourceTreeFrame} frame
|
| - * @param {string} url
|
| - */
|
| - _removeFileForURL: function(frame, url)
|
| - {
|
| - var project = this._workspaceProjects.get(WebInspector.NetworkProject.projectId(this.target(), frame, false));
|
| - if (!project)
|
| - return;
|
| - project.removeFile(url);
|
| - },
|
| -
|
| - _populate: function()
|
| - {
|
| - /**
|
| - * @param {!WebInspector.ResourceTreeFrame} frame
|
| - * @this {WebInspector.NetworkProject}
|
| - */
|
| - function populateFrame(frame)
|
| - {
|
| - for (var i = 0; i < frame.childFrames.length; ++i)
|
| - populateFrame.call(this, frame.childFrames[i]);
|
| -
|
| - var resources = frame.resources();
|
| - for (var i = 0; i < resources.length; ++i)
|
| - this._addResource(resources[i]);
|
| - }
|
| -
|
| - var resourceTreeModel = this._resourceTreeModel;
|
| - var mainFrame = resourceTreeModel && resourceTreeModel.mainFrame;
|
| - if (mainFrame)
|
| - populateFrame.call(this, mainFrame);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @param {!WebInspector.ContentProvider} contentProvider
|
| - * @param {?WebInspector.UISourceCodeMetadata} metadata
|
| - */
|
| - _addUISourceCodeWithProvider: function(uiSourceCode, contentProvider, metadata)
|
| - {
|
| - /** @type {!WebInspector.ContentProviderBasedProject} */ (uiSourceCode.project()).addUISourceCodeWithProvider(uiSourceCode, contentProvider, metadata);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _parsedScriptSource: function(event)
|
| - {
|
| - var script = /** @type {!WebInspector.Script} */ (event.data);
|
| - if (!script.sourceURL || script.isLiveEdit() || (script.isInlineScript() && !script.hasSourceURL))
|
| - return;
|
| - // Filter out embedder injected content scripts.
|
| - if (script.isContentScript() && !script.hasSourceURL) {
|
| - var parsedURL = new WebInspector.ParsedURL(script.sourceURL);
|
| - if (!parsedURL.isValid)
|
| - return;
|
| - }
|
| - var uiSourceCode = this._createFile(script, WebInspector.ResourceTreeFrame.fromScript(script), script.isContentScript());
|
| - uiSourceCode[WebInspector.NetworkProject._scriptSymbol] = script;
|
| - var resource = WebInspector.ResourceTreeModel.resourceForURL(uiSourceCode.url());
|
| - this._addUISourceCodeWithProvider(uiSourceCode, script, this._resourceMetadata(resource));
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _styleSheetAdded: function(event)
|
| - {
|
| - var header = /** @type {!WebInspector.CSSStyleSheetHeader} */ (event.data);
|
| - if (header.isInline && !header.hasSourceURL && header.origin !== "inspector")
|
| - return;
|
| -
|
| - var originalContentProvider = header.originalContentProvider();
|
| - var uiSourceCode = this._createFile(originalContentProvider, WebInspector.ResourceTreeFrame.fromStyleSheet(header), false);
|
| - uiSourceCode[WebInspector.NetworkProject._styleSheetSymbol] = header;
|
| - var resource = WebInspector.ResourceTreeModel.resourceForURL(uiSourceCode.url());
|
| - this._addUISourceCodeWithProvider(uiSourceCode, originalContentProvider, this._resourceMetadata(resource));
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _styleSheetRemoved: function(event)
|
| - {
|
| - var header = /** @type {!WebInspector.CSSStyleSheetHeader} */ (event.data);
|
| - if (header.isInline && !header.hasSourceURL && header.origin !== "inspector")
|
| - return;
|
| -
|
| - this._removeFileForURL(WebInspector.ResourceTreeFrame.fromStyleSheet(header), header.resourceURL());
|
| - },
|
| + function populateFrame(frame) {
|
| + for (var i = 0; i < frame.childFrames.length; ++i)
|
| + populateFrame.call(this, frame.childFrames[i]);
|
|
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _resourceAdded: function(event)
|
| - {
|
| - var resource = /** @type {!WebInspector.Resource} */ (event.data);
|
| - this._addResource(resource);
|
| - },
|
| + var resources = frame.resources();
|
| + for (var i = 0; i < resources.length; ++i)
|
| + this._addResource(resources[i]);
|
| + }
|
|
|
| - /**
|
| - * @param {!WebInspector.Resource} resource
|
| - */
|
| - _addResource: function(resource)
|
| - {
|
| - var resourceType = resource.resourceType();
|
| - // Only load selected resource types from resources.
|
| - if (resourceType !== WebInspector.resourceTypes.Image &&
|
| - resourceType !== WebInspector.resourceTypes.Font &&
|
| - resourceType !== WebInspector.resourceTypes.Document &&
|
| - resourceType !== WebInspector.resourceTypes.Manifest) {
|
| - return;
|
| - }
|
| -
|
| - // Ignore non-images and non-fonts.
|
| - if (resourceType === WebInspector.resourceTypes.Image && resource.mimeType && !resource.mimeType.startsWith("image"))
|
| - return;
|
| - if (resourceType === WebInspector.resourceTypes.Font && resource.mimeType && !resource.mimeType.includes("font"))
|
| - return;
|
| - if ((resourceType === WebInspector.resourceTypes.Image || resourceType === WebInspector.resourceTypes.Font) && resource.contentURL().startsWith("data:"))
|
| - return;
|
| -
|
| - // Never load document twice.
|
| - if (this._workspace.uiSourceCodeForURL(resource.url))
|
| - return;
|
| -
|
| - var uiSourceCode = this._createFile(resource, WebInspector.ResourceTreeFrame.fromResource(resource), false);
|
| - uiSourceCode[WebInspector.NetworkProject._resourceSymbol] = resource;
|
| - this._addUISourceCodeWithProvider(uiSourceCode, resource, this._resourceMetadata(resource));
|
| - },
|
| + var resourceTreeModel = this._resourceTreeModel;
|
| + var mainFrame = resourceTreeModel && resourceTreeModel.mainFrame;
|
| + if (mainFrame)
|
| + populateFrame.call(this, mainFrame);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @param {!WebInspector.ContentProvider} contentProvider
|
| + * @param {?WebInspector.UISourceCodeMetadata} metadata
|
| + */
|
| + _addUISourceCodeWithProvider(uiSourceCode, contentProvider, metadata) {
|
| + /** @type {!WebInspector.ContentProviderBasedProject} */ (uiSourceCode.project())
|
| + .addUISourceCodeWithProvider(uiSourceCode, contentProvider, metadata);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _parsedScriptSource(event) {
|
| + var script = /** @type {!WebInspector.Script} */ (event.data);
|
| + if (!script.sourceURL || script.isLiveEdit() || (script.isInlineScript() && !script.hasSourceURL))
|
| + return;
|
| + // Filter out embedder injected content scripts.
|
| + if (script.isContentScript() && !script.hasSourceURL) {
|
| + var parsedURL = new WebInspector.ParsedURL(script.sourceURL);
|
| + if (!parsedURL.isValid)
|
| + return;
|
| + }
|
| + var uiSourceCode =
|
| + this._createFile(script, WebInspector.ResourceTreeFrame.fromScript(script), script.isContentScript());
|
| + uiSourceCode[WebInspector.NetworkProject._scriptSymbol] = script;
|
| + var resource = WebInspector.ResourceTreeModel.resourceForURL(uiSourceCode.url());
|
| + this._addUISourceCodeWithProvider(uiSourceCode, script, this._resourceMetadata(resource));
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _styleSheetAdded(event) {
|
| + var header = /** @type {!WebInspector.CSSStyleSheetHeader} */ (event.data);
|
| + if (header.isInline && !header.hasSourceURL && header.origin !== 'inspector')
|
| + return;
|
| +
|
| + var originalContentProvider = header.originalContentProvider();
|
| + var uiSourceCode =
|
| + this._createFile(originalContentProvider, WebInspector.ResourceTreeFrame.fromStyleSheet(header), false);
|
| + uiSourceCode[WebInspector.NetworkProject._styleSheetSymbol] = header;
|
| + var resource = WebInspector.ResourceTreeModel.resourceForURL(uiSourceCode.url());
|
| + this._addUISourceCodeWithProvider(uiSourceCode, originalContentProvider, this._resourceMetadata(resource));
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _styleSheetRemoved(event) {
|
| + var header = /** @type {!WebInspector.CSSStyleSheetHeader} */ (event.data);
|
| + if (header.isInline && !header.hasSourceURL && header.origin !== 'inspector')
|
| + return;
|
| +
|
| + this._removeFileForURL(WebInspector.ResourceTreeFrame.fromStyleSheet(header), header.resourceURL());
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _resourceAdded(event) {
|
| + var resource = /** @type {!WebInspector.Resource} */ (event.data);
|
| + this._addResource(resource);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Resource} resource
|
| + */
|
| + _addResource(resource) {
|
| + var resourceType = resource.resourceType();
|
| + // Only load selected resource types from resources.
|
| + if (resourceType !== WebInspector.resourceTypes.Image && resourceType !== WebInspector.resourceTypes.Font &&
|
| + resourceType !== WebInspector.resourceTypes.Document && resourceType !== WebInspector.resourceTypes.Manifest) {
|
| + return;
|
| + }
|
|
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _frameWillNavigate: function(event)
|
| - {
|
| - var frame = /** @type {!WebInspector.ResourceTreeFrame} */ (event.data);
|
| - var project = this._workspaceProject(frame, false);
|
| - for (var resource of frame.resources())
|
| - project.removeUISourceCode(resource.url);
|
| - project = this._workspaceProject(frame, true);
|
| - for (var resource of frame.resources())
|
| - project.removeUISourceCode(resource.url);
|
| - },
|
| + // Ignore non-images and non-fonts.
|
| + if (resourceType === WebInspector.resourceTypes.Image && resource.mimeType &&
|
| + !resource.mimeType.startsWith('image'))
|
| + return;
|
| + if (resourceType === WebInspector.resourceTypes.Font && resource.mimeType && !resource.mimeType.includes('font'))
|
| + return;
|
| + if ((resourceType === WebInspector.resourceTypes.Image || resourceType === WebInspector.resourceTypes.Font) &&
|
| + resource.contentURL().startsWith('data:'))
|
| + return;
|
| +
|
| + // Never load document twice.
|
| + if (this._workspace.uiSourceCodeForURL(resource.url))
|
| + return;
|
| +
|
| + var uiSourceCode = this._createFile(resource, WebInspector.ResourceTreeFrame.fromResource(resource), false);
|
| + uiSourceCode[WebInspector.NetworkProject._resourceSymbol] = resource;
|
| + this._addUISourceCodeWithProvider(uiSourceCode, resource, this._resourceMetadata(resource));
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _frameWillNavigate(event) {
|
| + var frame = /** @type {!WebInspector.ResourceTreeFrame} */ (event.data);
|
| + var project = this._workspaceProject(frame, false);
|
| + for (var resource of frame.resources())
|
| + project.removeUISourceCode(resource.url);
|
| + project = this._workspaceProject(frame, true);
|
| + for (var resource of frame.resources())
|
| + project.removeUISourceCode(resource.url);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _mainFrameNavigated(event) {
|
| + this._reset();
|
| + this._populate();
|
| + }
|
| +
|
| + _suspendStateChanged() {
|
| + if (this.target().targetManager().allTargetsSuspended())
|
| + this._reset();
|
| + else
|
| + this._populate();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.ContentProvider} contentProvider
|
| + * @param {?WebInspector.ResourceTreeFrame} frame
|
| + * @param {boolean} isContentScript
|
| + * @return {!WebInspector.UISourceCode}
|
| + */
|
| + _createFile(contentProvider, frame, isContentScript) {
|
| + var url = contentProvider.contentURL();
|
| + var project = this._workspaceProject(frame, isContentScript);
|
| + var uiSourceCode = project.createUISourceCode(url, contentProvider.contentType());
|
| + uiSourceCode[WebInspector.NetworkProject._targetSymbol] = this.target();
|
| + return uiSourceCode;
|
| + }
|
| +
|
| + /**
|
| + * @param {?WebInspector.Resource} resource
|
| + * @return {?WebInspector.UISourceCodeMetadata}
|
| + */
|
| + _resourceMetadata(resource) {
|
| + if (!resource || (typeof resource.contentSize() !== 'number' && !resource.lastModified()))
|
| + return null;
|
| + return new WebInspector.UISourceCodeMetadata(resource.lastModified(), resource.contentSize());
|
| + }
|
| +
|
| + _dispose() {
|
| + this._reset();
|
| + WebInspector.EventTarget.removeEventListeners(this._eventListeners);
|
| + delete this.target()[WebInspector.NetworkProject._networkProjectSymbol];
|
| + }
|
| +
|
| + _reset() {
|
| + for (var project of this._workspaceProjects.values())
|
| + project.removeProject();
|
| + this._workspaceProjects.clear();
|
| + }
|
| +};
|
|
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _mainFrameNavigated: function(event)
|
| - {
|
| - this._reset();
|
| - this._populate();
|
| - },
|
| -
|
| - _suspendStateChanged: function()
|
| - {
|
| - if (this.target().targetManager().allTargetsSuspended())
|
| - this._reset();
|
| - else
|
| - this._populate();
|
| - },
|
| +WebInspector.NetworkProject._networkProjectSymbol = Symbol('networkProject');
|
| +WebInspector.NetworkProject._resourceSymbol = Symbol('resource');
|
| +WebInspector.NetworkProject._scriptSymbol = Symbol('script');
|
| +WebInspector.NetworkProject._styleSheetSymbol = Symbol('styleSheet');
|
| +WebInspector.NetworkProject._targetSymbol = Symbol('target');
|
| +WebInspector.NetworkProject._frameSymbol = Symbol('frame');
|
|
|
| - /**
|
| - * @param {!WebInspector.ContentProvider} contentProvider
|
| - * @param {?WebInspector.ResourceTreeFrame} frame
|
| - * @param {boolean} isContentScript
|
| - * @return {!WebInspector.UISourceCode}
|
| - */
|
| - _createFile: function(contentProvider, frame, isContentScript)
|
| - {
|
| - var url = contentProvider.contentURL();
|
| - var project = this._workspaceProject(frame, isContentScript);
|
| - var uiSourceCode = project.createUISourceCode(url, contentProvider.contentType());
|
| - uiSourceCode[WebInspector.NetworkProject._targetSymbol] = this.target();
|
| - return uiSourceCode;
|
| - },
|
|
|
| - /**
|
| - * @param {?WebInspector.Resource} resource
|
| - * @return {?WebInspector.UISourceCodeMetadata}
|
| - */
|
| - _resourceMetadata: function(resource)
|
| - {
|
| - if (!resource || (typeof resource.contentSize() !== "number" && !resource.lastModified()))
|
| - return null;
|
| - return new WebInspector.UISourceCodeMetadata(resource.lastModified(), resource.contentSize());
|
| - },
|
| -
|
| - _dispose: function()
|
| - {
|
| - this._reset();
|
| - WebInspector.EventTarget.removeEventListeners(this._eventListeners);
|
| - delete this.target()[WebInspector.NetworkProject._networkProjectSymbol];
|
| - },
|
| -
|
| - _reset: function()
|
| - {
|
| - for (var project of this._workspaceProjects.values())
|
| - project.removeProject();
|
| - this._workspaceProjects.clear();
|
| - },
|
| -
|
| - __proto__: WebInspector.SDKObject.prototype
|
| -};
|
|
|