Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js b/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js |
| index 02623fe55fef3466c10686d2cee117103124892f..29b762b6e8479d9a5379d33e5a922117538cdc52 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js |
| @@ -31,6 +31,8 @@ WebInspector.TargetManager.Events = { |
| SuspendStateChanged: "SuspendStateChanged" |
| } |
| +WebInspector.TargetManager._ListenersSymbol = Symbol("WebInspector.TargetManager.Listeners"); |
|
dgozman
2016/08/19 20:23:37
style: _listenersSymbol
eostroukhov
2016/08/20 01:22:31
Done.
|
| + |
| WebInspector.TargetManager.prototype = { |
| suspendAllTargets: function() |
| { |
| @@ -99,8 +101,14 @@ WebInspector.TargetManager.prototype = { |
| */ |
| reloadPage: function(bypassCache, injectedScript) |
| { |
| - if (this._targets.length) |
| - this._targets[0].resourceTreeModel.reloadPage(bypassCache, injectedScript); |
| + if (!this._targets.length) |
| + return; |
| + |
| + var resourceTreeModel = WebInspector.ResourceTreeModel.fromTarget(this._targets[0]); |
| + if (!resourceTreeModel) |
| + return; |
| + |
| + resourceTreeModel.reloadPage(bypassCache, injectedScript); |
| }, |
| /** |
| @@ -186,20 +194,20 @@ WebInspector.TargetManager.prototype = { |
| target.runtimeModel = new WebInspector.RuntimeModel(target); |
| var networkManager = null; |
| - if (target.hasNetworkCapability()) |
| + var resourceTreeModel = null; |
| + if (target.hasNetworkCapability()) { |
| networkManager = new WebInspector.NetworkManager(target); |
| - |
| - var securityOriginManager = WebInspector.SecurityOriginManager.fromTarget(target); |
| - /** @type {!WebInspector.ResourceTreeModel} */ |
| - target.resourceTreeModel = new WebInspector.ResourceTreeModel(target, networkManager, securityOriginManager); |
| - |
| - if (networkManager) |
| - new WebInspector.NetworkLog(target, target.resourceTreeModel, networkManager); |
| + if (target.hasDOMCapability()) { |
| + var securityOriginManager = WebInspector.SecurityOriginManager.fromTarget(target); |
|
dgozman
2016/08/19 20:23:37
Inline this one?
eostroukhov
2016/08/20 01:22:31
Done.
|
| + resourceTreeModel = new WebInspector.ResourceTreeModel(target, networkManager, securityOriginManager); |
| + new WebInspector.NetworkLog(target, resourceTreeModel, networkManager); |
|
dgozman
2016/08/19 20:23:37
nit: let's avoid nested if's here. Instead I propo
eostroukhov
2016/08/20 01:22:31
Done.
|
| + } |
| + } |
| if (target.hasJSCapability()) |
| new WebInspector.DebuggerModel(target); |
| - if (target.hasDOMCapability()) { |
| + if (resourceTreeModel) { |
|
dgozman
2016/08/19 20:23:37
Why this change? If DOMModel or CSSModel cannot wo
eostroukhov
2016/08/20 01:22:31
I was trying to do this in an earlier CL - ultimat
dgozman
2016/08/20 01:32:00
Let's add a TODO here then.
eostroukhov-old
2016/08/22 17:55:41
Done.
|
| var domModel = new WebInspector.DOMModel(target); |
| new WebInspector.CSSModel(target, domModel); |
| } |
| @@ -236,10 +244,15 @@ WebInspector.TargetManager.prototype = { |
| { |
| this._targets.push(target); |
| if (this._targets.length === 1) { |
| - target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.MainFrameNavigated, this._redispatchEvent, this); |
| - target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.Load, this._redispatchEvent, this); |
| - target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.PageReloadRequested, this._redispatchEvent, this); |
| - target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.WillReloadPage, this._redispatchEvent, this); |
| + var resourceTreeModel = WebInspector.ResourceTreeModel.fromTarget(target); |
| + if (resourceTreeModel) { |
| + var listeners = []; |
| + listeners.push(resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.MainFrameNavigated, this._redispatchEvent, this)); |
|
dgozman
2016/08/19 20:23:37
nit: instead of push, we can inline:
resourceTreeM
eostroukhov
2016/08/20 01:22:31
Done.
|
| + listeners.push(resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.Load, this._redispatchEvent, this)); |
| + listeners.push(resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.PageReloadRequested, this._redispatchEvent, this)); |
| + listeners.push(resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.WillReloadPage, this._redispatchEvent, this)); |
| + resourceTreeModel[WebInspector.TargetManager._ListenersSymbol] = listeners; |
| + } |
| } |
| var copy = this._observersForTarget(target); |
| for (var i = 0; i < copy.length; ++i) |
| @@ -261,11 +274,11 @@ WebInspector.TargetManager.prototype = { |
| removeTarget: function(target) |
| { |
| this._targets.remove(target); |
| - if (this._targets.length === 0) { |
| - target.resourceTreeModel.removeEventListener(WebInspector.ResourceTreeModel.EventTypes.MainFrameNavigated, this._redispatchEvent, this); |
| - target.resourceTreeModel.removeEventListener(WebInspector.ResourceTreeModel.EventTypes.Load, this._redispatchEvent, this); |
| - target.resourceTreeModel.removeEventListener(WebInspector.ResourceTreeModel.EventTypes.WillReloadPage, this._redispatchEvent, this); |
| - } |
| + var resourceTreeModel = WebInspector.ResourceTreeModel.fromTarget(target); |
| + var treeModelListeners = resourceTreeModel && resourceTreeModel[WebInspector.TargetManager._ListenersSymbol]; |
| + if (treeModelListeners) |
| + WebInspector.EventTarget.removeEventListeners(treeModelListeners); |
| + |
| var copy = this._observersForTarget(target); |
| for (var i = 0; i < copy.length; ++i) |
| copy[i].targetRemoved(target); |