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 eae9251e9005566caaf2e9310077938664f63d03..c9a0f4f11110df6f49a7f05befd3b3157b0136a1 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/sdk/ResourceTreeModel.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/sdk/ResourceTreeModel.js |
| @@ -129,30 +129,11 @@ SDK.ResourceTreeModel = class extends SDK.SDKModel { |
| */ |
| _addFrame(frame, aboutToNavigate) { |
| this._frames.set(frame.id, frame); |
| - if (frame.isMainFrame()) { |
| + if (frame.isMainFrame()) |
| this.mainFrame = frame; |
| - this._securityOriginManager.setMainSecurityOrigin(frame.url); |
| - } |
| this.dispatchEventToListeners(SDK.ResourceTreeModel.Events.FrameAdded, frame); |
| if (!aboutToNavigate) |
| - this._securityOriginManager.addSecurityOrigin(frame.securityOrigin); |
| - } |
| - |
| - /** |
| - * @param {!SDK.ResourceTreeFrame} mainFrame |
| - */ |
| - _handleMainFrameDetached(mainFrame) { |
| - /** |
| - * @param {!SDK.ResourceTreeFrame} frame |
| - * @this {SDK.ResourceTreeModel} |
| - */ |
| - function removeOriginForFrame(frame) { |
| - for (var i = 0; i < frame.childFrames.length; ++i) |
| - removeOriginForFrame.call(this, frame.childFrames[i]); |
| - if (!frame.isMainFrame()) |
| - this._securityOriginManager.removeSecurityOrigin(frame.securityOrigin); |
| - } |
| - removeOriginForFrame.call(this, mainFrame); |
| + this._updateSecurityOrigins(); |
|
pfeldman
2017/01/09 20:06:13
You should unconditionally update origins.
eostroukhov
2017/01/09 20:32:01
Done.
|
| } |
| /** |
| @@ -170,7 +151,6 @@ SDK.ResourceTreeModel = class extends SDK.SDKModel { |
| var parentFrame = parentFrameId ? (this._frames.get(parentFrameId) || null) : null; |
| var frame = new SDK.ResourceTreeFrame(this, parentFrame, frameId); |
| if (frame.isMainFrame() && this.mainFrame) { |
| - this._handleMainFrameDetached(this.mainFrame); |
| // Navigation to the new backend process. |
| this._frameDetached(this.mainFrame.id); |
| } |
| @@ -194,19 +174,14 @@ SDK.ResourceTreeModel = class extends SDK.SDKModel { |
| } |
| this.dispatchEventToListeners(SDK.ResourceTreeModel.Events.FrameWillNavigate, frame); |
| - |
| - this._securityOriginManager.removeSecurityOrigin(frame.securityOrigin); |
| frame._navigate(framePayload); |
| - var addedOrigin = frame.securityOrigin; |
| - |
| this.dispatchEventToListeners(SDK.ResourceTreeModel.Events.FrameNavigated, frame); |
| + |
| if (frame.isMainFrame()) { |
| this.dispatchEventToListeners(SDK.ResourceTreeModel.Events.MainFrameNavigated, frame); |
| if (Common.moduleSetting('preserveConsoleLog').get()) |
| Common.console.log(Common.UIString('Navigated to %s', frame.url)); |
| } |
| - if (addedOrigin) |
| - this._securityOriginManager.addSecurityOrigin(addedOrigin); |
| // Fill frame with retained resources (the ones loaded using new loader). |
| var resources = frame.resources(); |
| @@ -215,6 +190,7 @@ SDK.ResourceTreeModel = class extends SDK.SDKModel { |
| if (frame.isMainFrame()) |
| this.target().setInspectedURL(frame.url); |
| + this._updateSecurityOrigins(); |
| } |
| /** |
| @@ -229,7 +205,6 @@ SDK.ResourceTreeModel = class extends SDK.SDKModel { |
| if (!frame) |
| return; |
| - this._securityOriginManager.removeSecurityOrigin(frame.securityOrigin); |
| if (frame.parentFrame) |
| frame.parentFrame._removeChildFrame(frame); |
| else |
| @@ -451,6 +426,21 @@ SDK.ResourceTreeModel = class extends SDK.SDKModel { |
| return SDK.ExecutionContext.comparator(a, b); |
| } |
| + |
| + _updateSecurityOrigins() { |
| + var securityOrigins = []; |
|
pfeldman
2017/01/09 20:06:13
You should use Set here, otherwise you report same
eostroukhov
2017/01/09 20:32:01
Done.
|
| + var mainSecurityOrigin = null; |
| + for (var frame of this._frames.values()) { |
| + var origin = frame.securityOrigin; |
| + if (!origin) |
| + continue; |
| + securityOrigins.push(origin); |
| + if (frame.isMainFrame()) |
| + mainSecurityOrigin = origin; |
| + } |
| + this._securityOriginManager.updateSecurityOrigins(securityOrigins); |
| + this._securityOriginManager.setMainSecurityOrigin(mainSecurityOrigin || ''); |
| + } |
| }; |
| /** @enum {symbol} */ |
| @@ -658,6 +648,7 @@ SDK.ResourceTreeFrame = class { |
| _remove() { |
| this._removeChildFrames(); |
| this._model._frames.delete(this.id); |
| + this._model._updateSecurityOrigins(); |
|
pfeldman
2017/01/09 20:06:13
You are calling this in a loop, I'd rather interce
eostroukhov
2017/01/09 20:32:01
Done.
|
| this._model.dispatchEventToListeners(SDK.ResourceTreeModel.Events.FrameDetached, this); |
| } |