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..70711fca43f6c8cbf8b85cca8221056e466a803e 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,45 @@ 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() |
+ { |
+ if (!this._targets.length) |
+ return ""; |
+ |
+ return this._targets[0].resourceTreeModel.inspectedPageURL(); |
+ }, |
+ |
+ /** |
+ * @return {string} |
+ */ |
+ inspectedPageDomain: function() |
+ { |
+ if (!this._targets.length) |
+ return ""; |
+ |
+ 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 +319,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 +332,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 +340,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 +393,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 +415,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 +445,9 @@ WebInspector.TargetManager.prototype = { |
mainTarget: function() |
{ |
return this._targets[0]; |
- } |
+ }, |
+ |
+ __proto__: WebInspector.Object.prototype |
} |
/** |