Index: third_party/WebKit/Source/devtools/front_end/sdk/Target.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/Target.js b/third_party/WebKit/Source/devtools/front_end/sdk/Target.js |
index 914911216d0ac1b8a833666fef4cc3ef03d957b8..0ba8b7e81511d2dda9a0fd9da0ff2643fadcb316 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/sdk/Target.js |
+++ b/third_party/WebKit/Source/devtools/front_end/sdk/Target.js |
@@ -7,24 +7,25 @@ |
/** |
* @unrestricted |
*/ |
-SDK.Target = class extends Protocol.TargetBase { |
+SDK.Target = class { |
/** |
* @param {!SDK.TargetManager} targetManager |
* @param {string} id |
* @param {string} name |
* @param {number} capabilitiesMask |
- * @param {!Protocol.InspectorBackend.Connection.Factory} connectionFactory |
+ * @param {!Protocol.Dispatcher} dispatcher |
* @param {?SDK.Target} parentTarget |
*/ |
- constructor(targetManager, id, name, capabilitiesMask, connectionFactory, parentTarget) { |
- super(connectionFactory); |
+ constructor(targetManager, id, name, capabilitiesMask, dispatcher, parentTarget) { |
this._targetManager = targetManager; |
this._name = name; |
this._inspectedURL = ''; |
this._capabilitiesMask = capabilitiesMask; |
+ this._dispatcher = dispatcher; |
this._parentTarget = parentTarget; |
this._id = id; |
this._modelByConstructor = new Map(); |
+ this._dispatcher.setDisposeCallback(this._dispose.bind(this)); |
} |
createModels(required) { |
@@ -138,17 +139,21 @@ SDK.Target = class extends Protocol.TargetBase { |
return this._parentTarget; |
} |
- /** |
- * @override |
- */ |
- dispose() { |
+ _dispose() { |
this._targetManager.removeTarget(this); |
for (var model of this._modelByConstructor.valuesArray()) |
model.dispose(); |
} |
/** |
- * @param {function(new:T, !SDK.Target)} modelClass |
+ * @return {boolean} |
+ */ |
+ isDisposed() { |
+ return this._dispatcher.isDisposed(); |
+ } |
+ |
+ /** |
+ * @param {function(new:T, !SDK.Target, !Protocol.Dispatcher)} modelClass |
* @return {?T} |
* @template T |
*/ |
@@ -158,7 +163,7 @@ SDK.Target = class extends Protocol.TargetBase { |
if (info === undefined) |
throw 'Model class is not registered @' + new Error().stack; |
if ((this._capabilitiesMask & info.capabilities) === info.capabilities) { |
- var model = new modelClass(this); |
+ var model = new modelClass(this, this._dispatcher); |
this._modelByConstructor.set(modelClass, model); |
if (!this._creatingModels) |
this._targetManager.modelAdded(this, modelClass, model); |
@@ -168,7 +173,7 @@ SDK.Target = class extends Protocol.TargetBase { |
} |
/** |
- * @return {!Map<function(new:SDK.SDKModel, !SDK.Target), !SDK.SDKModel>} |
+ * @return {!Map<function(new:SDK.SDKModel, !SDK.Target, !Protocol.Dispatcher), !SDK.SDKModel>} |
*/ |
models() { |
return this._modelByConstructor; |
@@ -225,8 +230,9 @@ SDK.Target.Capability = { |
SDK.SDKModel = class extends Common.Object { |
/** |
* @param {!SDK.Target} target |
+ * @param {!Protocol.Dispatcher} dispatcher |
*/ |
- constructor(target) { |
+ constructor(target, dispatcher) { |
super(); |
this._target = target; |
} |
@@ -258,7 +264,7 @@ SDK.SDKModel = class extends Common.Object { |
/** |
- * @param {function(new:SDK.SDKModel, !SDK.Target)} modelClass |
+ * @param {function(new:SDK.SDKModel, !SDK.Target, !Protocol.Dispatcher)} modelClass |
* @param {number} capabilities |
* @param {boolean} autostart |
*/ |
@@ -268,5 +274,5 @@ SDK.SDKModel.register = function(modelClass, capabilities, autostart) { |
SDK.SDKModel._registeredModels.set(modelClass, {capabilities: capabilities, autostart: autostart}); |
}; |
-/** @type {!Map<function(new:SDK.SDKModel, !SDK.Target), !{capabilities: number, autostart: boolean}>} */ |
+/** @type {!Map<function(new:SDK.SDKModel, !SDK.Target, !Protocol.Dispatcher), !{capabilities: number, autostart: boolean}>} */ |
SDK.SDKModel._registeredModels; |