Chromium Code Reviews| Index: Source/devtools/front_end/sdk/Target.js |
| diff --git a/Source/devtools/front_end/sdk/Target.js b/Source/devtools/front_end/sdk/Target.js |
| index 6066f7048124722d14af2210b71b389893c9e1ae..3f141a541c0ef6d81266757ea1db135bb2b24e57 100644 |
| --- a/Source/devtools/front_end/sdk/Target.js |
| +++ b/Source/devtools/front_end/sdk/Target.js |
| @@ -260,6 +260,7 @@ WebInspector.SDKModel.prototype = { |
| /** |
| * @constructor |
| + * @extends {WebInspector.Object} |
| */ |
| WebInspector.TargetManager = function() |
| { |
| @@ -268,11 +269,39 @@ WebInspector.TargetManager = function() |
| /** @type {!Array.<!WebInspector.TargetManager.Observer>} */ |
| this._observers = []; |
| /** @type {!Object.<string, !Array.<{modelClass: !Function, thisObject: (!Object|undefined), listener: function(!WebInspector.Event)}>>} */ |
| - this._listeners = {}; |
| + this._modelListeners = {}; |
| +} |
| + |
| +WebInspector.TargetManager.Events = { |
| + InspectedURLChanged: "InspectedURLChanged" |
| } |
| WebInspector.TargetManager.prototype = { |
| /** |
| + * @return {string} |
| + */ |
| + inspectedPageURL: function() |
| + { |
| + return this._targets[0].resourceTreeModel.inspectedPageURL(); |
|
pfeldman
2014/08/18 16:35:20
I have zero targets. This fails for me.
sergeyv
2014/08/18 17:05:51
Done.
|
| + }, |
| + |
| + /** |
| + * @return {string} |
| + */ |
| + inspectedPageDomain: function() |
| + { |
| + return this._targets[0].resourceTreeModel.inspectedPageDomain(); |
| + }, |
| + |
| + /** |
| + * @param {!WebInspector.Event} event |
| + */ |
| + _dispatchInspectedURLChanged: function(event) |
| + { |
| + this.dispatchEventToListeners(WebInspector.TargetManager.Events.InspectedURLChanged, event.data); |
| + }, |
| + |
| + /** |
| * @param {!Function} modelClass |
| * @param {string} eventType |
| * @param {function(!WebInspector.Event)} listener |
| @@ -284,9 +313,9 @@ WebInspector.TargetManager.prototype = { |
| var model = this._targets[i]._modelByConstructor.get(modelClass); |
| model.addEventListener(eventType, listener, thisObject); |
| } |
| - if (!this._listeners[eventType]) |
| - this._listeners[eventType] = []; |
| - this._listeners[eventType].push({ modelClass: modelClass, thisObject: thisObject, listener: listener }); |
| + if (!this._modelListeners[eventType]) |
| + this._modelListeners[eventType] = []; |
| + this._modelListeners[eventType].push({ modelClass: modelClass, thisObject: thisObject, listener: listener }); |
| }, |
| /** |
| @@ -297,7 +326,7 @@ WebInspector.TargetManager.prototype = { |
| */ |
| removeModelListener: function(modelClass, eventType, listener, thisObject) |
| { |
| - if (!this._listeners[eventType]) |
| + if (!this._modelListeners[eventType]) |
| return; |
| for (var i = 0; i < this._targets.length; ++i) { |
| @@ -305,13 +334,13 @@ WebInspector.TargetManager.prototype = { |
| model.removeEventListener(eventType, listener, thisObject); |
| } |
| - var listeners = this._listeners[eventType]; |
| + var listeners = this._modelListeners[eventType]; |
| for (var i = 0; i < listeners.length; ++i) { |
| if (listeners[i].modelClass === modelClass && listeners[i].listener === listener && listeners[i].thisObject === thisObject) |
| listeners.splice(i--, 1); |
| } |
| if (!listeners.length) |
| - delete this._listeners[eventType]; |
| + delete this._modelListeners[eventType]; |
| }, |
| /** |
| @@ -358,12 +387,15 @@ WebInspector.TargetManager.prototype = { |
| addTarget: function(target) |
| { |
| this._targets.push(target); |
| + if (this._targets.length === 1) |
| + target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.InspectedURLChanged, this._dispatchInspectedURLChanged, this); |
| + |
| var copy = this._observers.slice(); |
| for (var i = 0; i < copy.length; ++i) |
| copy[i].targetAdded(target); |
| - for (var eventType in this._listeners) { |
| - var listeners = this._listeners[eventType]; |
| + for (var eventType in this._modelListeners) { |
| + var listeners = this._modelListeners[eventType]; |
| for (var i = 0; i < listeners.length; ++i) { |
| var model = target._modelByConstructor.get(listeners[i].modelClass); |
| model.addEventListener(eventType, listeners[i].listener, listeners[i].thisObject); |
| @@ -377,12 +409,15 @@ WebInspector.TargetManager.prototype = { |
| removeTarget: function(target) |
| { |
| this._targets.remove(target); |
| + if (this._targets.length === 0) |
| + target.resourceTreeModel.removeEventListener(WebInspector.ResourceTreeModel.EventTypes.InspectedURLChanged, this._dispatchInspectedURLChanged, this); |
| + |
| var copy = this._observers.slice(); |
| for (var i = 0; i < copy.length; ++i) |
| copy[i].targetRemoved(target); |
| - for (var eventType in this._listeners) { |
| - var listeners = this._listeners[eventType]; |
| + for (var eventType in this._modelListeners) { |
| + var listeners = this._modelListeners[eventType]; |
| for (var i = 0; i < listeners.length; ++i) { |
| var model = target._modelByConstructor.get(listeners[i].modelClass); |
| model.removeEventListener(eventType, listeners[i].listener, listeners[i].thisObject); |
| @@ -404,7 +439,9 @@ WebInspector.TargetManager.prototype = { |
| mainTarget: function() |
| { |
| return this._targets[0]; |
| - } |
| + }, |
| + |
| + __proto__: WebInspector.Object.prototype |
| } |
| /** |