Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/sdk/ResourceTreeModel.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/ResourceTreeModel.js b/third_party/WebKit/Source/devtools/front_end/sdk/ResourceTreeModel.js |
| index 7caf4b151b003cf95da31289d70bac190c86be11..f4e85075d87200628d9da075afb443bb8d5ba573 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/sdk/ResourceTreeModel.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/sdk/ResourceTreeModel.js |
| @@ -33,8 +33,9 @@ |
| * @extends {WebInspector.SDKModel} |
| * @param {!WebInspector.Target} target |
| * @param {?WebInspector.NetworkManager} networkManager |
| + * @param {!WebInspector.SecurityOriginManager} securityOriginManager |
| */ |
| -WebInspector.ResourceTreeModel = function(target, networkManager) |
| +WebInspector.ResourceTreeModel = function(target, networkManager, securityOriginManager) |
| { |
| WebInspector.SDKModel.call(this, WebInspector.ResourceTreeModel, target); |
| if (networkManager) { |
| @@ -46,12 +47,12 @@ WebInspector.ResourceTreeModel = function(target, networkManager) |
| this._agent = target.pageAgent(); |
| this._agent.enable(); |
| + this._securityOriginManager = securityOriginManager; |
| this._fetchResourceTree(); |
| target.registerPageDispatcher(new WebInspector.PageDispatcher(this)); |
| - this._securityOriginFrameCount = {}; |
| this._inspectedPageURL = ""; |
| this._pendingReloadOptions = null; |
| this._reloadSuspensionCount = 0; |
| @@ -74,13 +75,19 @@ WebInspector.ResourceTreeModel.EventTypes = { |
| PageReloadRequested: "PageReloadRequested", |
| WillReloadPage: "WillReloadPage", |
| InspectedURLChanged: "InspectedURLChanged", |
| - SecurityOriginAdded: "SecurityOriginAdded", |
| - SecurityOriginRemoved: "SecurityOriginRemoved", |
| ScreencastFrame: "ScreencastFrame", |
| ScreencastVisibilityChanged: "ScreencastVisibilityChanged", |
| ColorPicked: "ColorPicked" |
| } |
| +/** |
| + * @param {!WebInspector.Target} target |
| + * @return {?WebInspector.ResourceTreeModel} |
| + */ |
| +WebInspector.ResourceTreeModel.fromTarget = function(target) |
| +{ |
| + return /** @type {?WebInspector.ResourceTreeModel} */ (target.model(WebInspector.ResourceTreeModel)); |
| +} |
| /** |
| * @return {!Array.<!WebInspector.ResourceTreeFrame>} |
| @@ -88,8 +95,11 @@ WebInspector.ResourceTreeModel.EventTypes = { |
| WebInspector.ResourceTreeModel.frames = function() |
| { |
| var result = []; |
| - for (var target of WebInspector.targetManager.targets()) |
| - result = result.concat(target.resourceTreeModel._frames.valuesArray()); |
| + for (var target of WebInspector.targetManager.targets()) { |
| + var resourceTreeModel = WebInspector.ResourceTreeModel.fromTarget(target); |
| + if (resourceTreeModel) |
|
dgozman
2016/07/22 03:27:02
Use DOM capability instead.
eostroukhov-old
2016/07/22 23:27:43
Done.
|
| + result = result.concat(resourceTreeModel._frames.valuesArray()); |
| + } |
| return result; |
| } |
| @@ -100,7 +110,8 @@ WebInspector.ResourceTreeModel.frames = function() |
| WebInspector.ResourceTreeModel.resourceForURL = function(url) |
| { |
| for (var target of WebInspector.targetManager.targets()) { |
| - var mainFrame = target.resourceTreeModel.mainFrame; |
| + var resourceTreeModel = WebInspector.ResourceTreeModel.fromTarget(target); |
| + var mainFrame = resourceTreeModel && resourceTreeModel.mainFrame; |
|
dgozman
2016/07/22 03:27:03
ditto
eostroukhov-old
2016/07/22 23:27:43
Done.
|
| var result = mainFrame ? mainFrame.resourceForURL(url) : null; |
| if (result) |
| return result; |
| @@ -119,22 +130,12 @@ WebInspector.ResourceTreeModel.prototype = { |
| _processCachedResources: function(error, mainFramePayload) |
| { |
| - if (error) { |
| - this._cachedResourcesProcessed = true; |
| - this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.CachedResourcesLoaded); |
| - return; |
| - } |
| - |
| - this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.WillLoadCachedResources); |
| - this._inspectedPageURL = mainFramePayload.frame.url; |
| - |
| - // Do not process SW resources. |
| - if (this.target().hasBrowserCapability()) |
| + if (!error) { |
| + this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.WillLoadCachedResources); |
| + this._inspectedPageURL = mainFramePayload.frame.url; |
| this._addFramesRecursively(null, mainFramePayload); |
| - else |
| - this._addSecurityOrigin(mainFramePayload.frame.securityOrigin); |
| - |
| - this._dispatchInspectedURLChanged(); |
| + this._dispatchInspectedURLChanged(); |
| + } |
| this._cachedResourcesProcessed = true; |
| this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.CachedResourcesLoaded); |
| }, |
| @@ -181,43 +182,7 @@ WebInspector.ResourceTreeModel.prototype = { |
| this.mainFrame = frame; |
| this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.FrameAdded, frame); |
| if (!aboutToNavigate) |
| - this._addSecurityOrigin(frame.securityOrigin); |
| - }, |
| - |
| - /** |
| - * @param {string} securityOrigin |
| - */ |
| - _addSecurityOrigin: function(securityOrigin) |
| - { |
| - if (!this._securityOriginFrameCount[securityOrigin]) { |
| - this._securityOriginFrameCount[securityOrigin] = 1; |
| - this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.SecurityOriginAdded, securityOrigin); |
| - return; |
| - } |
| - this._securityOriginFrameCount[securityOrigin] += 1; |
| - }, |
| - |
| - /** |
| - * @param {string|undefined} securityOrigin |
| - */ |
| - _removeSecurityOrigin: function(securityOrigin) |
| - { |
| - if (typeof securityOrigin === "undefined") |
| - return; |
| - if (this._securityOriginFrameCount[securityOrigin] === 1) { |
| - delete this._securityOriginFrameCount[securityOrigin]; |
| - this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.SecurityOriginRemoved, securityOrigin); |
| - return; |
| - } |
| - this._securityOriginFrameCount[securityOrigin] -= 1; |
| - }, |
| - |
| - /** |
| - * @return {!Array.<string>} |
| - */ |
| - securityOrigins: function() |
| - { |
| - return Object.keys(this._securityOriginFrameCount); |
| + this._securityOriginManager.addSecurityOrigin(frame.securityOrigin); |
| }, |
| /** |
| @@ -234,7 +199,7 @@ WebInspector.ResourceTreeModel.prototype = { |
| for (var i = 0; i < frame.childFrames.length; ++i) |
| removeOriginForFrame.call(this, frame.childFrames[i]); |
| if (!frame.isMainFrame()) |
| - this._removeSecurityOrigin(frame.securityOrigin); |
| + this._securityOriginManager.removeSecurityOrigin(frame.securityOrigin); |
| } |
| removeOriginForFrame.call(this, mainFrame); |
| }, |
| @@ -281,7 +246,7 @@ WebInspector.ResourceTreeModel.prototype = { |
| this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.FrameWillNavigate, frame); |
| - this._removeSecurityOrigin(frame.securityOrigin); |
| + this._securityOriginManager.removeSecurityOrigin(frame.securityOrigin); |
| frame._navigate(framePayload); |
| var addedOrigin = frame.securityOrigin; |
| @@ -297,7 +262,7 @@ WebInspector.ResourceTreeModel.prototype = { |
| this.target().consoleModel.clear(); |
| } |
| if (addedOrigin) |
| - this._addSecurityOrigin(addedOrigin); |
| + this._securityOriginManager.addSecurityOrigin(addedOrigin); |
| // Fill frame with retained resources (the ones loaded using new loader). |
| var resources = frame.resources(); |
| @@ -321,7 +286,7 @@ WebInspector.ResourceTreeModel.prototype = { |
| if (!frame) |
| return; |
| - this._removeSecurityOrigin(frame.securityOrigin); |
| + this._securityOriginManager.removeSecurityOrigin(frame.securityOrigin); |
| if (frame.parentFrame) |
| frame.parentFrame._removeChildFrame(frame); |
| else |
| @@ -577,15 +542,28 @@ WebInspector.ResourceTreeFrame = function(model, parentFrame, frameId, payload) |
| } |
| /** |
| + * @param {!WebInspector.ExecutionContext|!WebInspector.CSSStyleSheetHeader|!WebInspector.Resource} object |
| + * @return {?WebInspector.ResourceTreeFrame} |
| + */ |
| +WebInspector.ResourceTreeFrame._fromObject = function(object) |
| +{ |
| + var resourceTreeModel = WebInspector.ResourceTreeModel.fromTarget(object.target()); |
| + var frameId = object.frameId; |
| + if (!resourceTreeModel || !frameId) |
| + return null; |
| + return resourceTreeModel.frameForId(frameId); |
| +} |
| + |
| +/** |
| * @param {!WebInspector.Script} script |
| * @return {?WebInspector.ResourceTreeFrame} |
| */ |
| WebInspector.ResourceTreeFrame.fromScript = function(script) |
| { |
| var executionContext = script.executionContext(); |
| - if (!executionContext || !executionContext.frameId) |
| + if (!executionContext) |
| return null; |
| - return script.target().resourceTreeModel.frameForId(executionContext.frameId); |
| + return WebInspector.ResourceTreeFrame._fromObject(executionContext); |
| } |
| /** |
| @@ -594,7 +572,7 @@ WebInspector.ResourceTreeFrame.fromScript = function(script) |
| */ |
| WebInspector.ResourceTreeFrame.fromStyleSheet = function(header) |
| { |
| - return header.target().resourceTreeModel.frameForId(header.frameId); |
| + return WebInspector.ResourceTreeFrame._fromObject(header); |
| } |
| /** |
| @@ -603,7 +581,7 @@ WebInspector.ResourceTreeFrame.fromStyleSheet = function(header) |
| */ |
| WebInspector.ResourceTreeFrame.fromResource = function(resource) |
| { |
| - return resource.target().resourceTreeModel.frameForId(resource.frameId); |
| + return WebInspector.ResourceTreeFrame._fromObject(resource); |
| } |
| WebInspector.ResourceTreeFrame.prototype = { |