| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2014 The Chromium Authors. All rights reserved. | 2 * Copyright 2014 The Chromium Authors. All rights reserved. |
| 3 * Use of this source code is governed by a BSD-style license that can be | 3 * Use of this source code is governed by a BSD-style license that can be |
| 4 * found in the LICENSE file. | 4 * found in the LICENSE file. |
| 5 */ | 5 */ |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * @unrestricted | 8 * @unrestricted |
| 9 */ | 9 */ |
| 10 SDK.Target = class extends Protocol.TargetBase { | 10 SDK.Target = class { |
| 11 /** | 11 /** |
| 12 * @param {!SDK.TargetManager} targetManager | 12 * @param {!SDK.TargetManager} targetManager |
| 13 * @param {string} id | 13 * @param {string} id |
| 14 * @param {string} name | 14 * @param {string} name |
| 15 * @param {number} capabilitiesMask | 15 * @param {number} capabilitiesMask |
| 16 * @param {!Protocol.InspectorBackend.Connection.Factory} connectionFactory | 16 * @param {!Protocol.Dispatcher} dispatcher |
| 17 * @param {?SDK.Target} parentTarget | 17 * @param {?SDK.Target} parentTarget |
| 18 */ | 18 */ |
| 19 constructor(targetManager, id, name, capabilitiesMask, connectionFactory, pare
ntTarget) { | 19 constructor(targetManager, id, name, capabilitiesMask, dispatcher, parentTarge
t) { |
| 20 super(connectionFactory); | |
| 21 this._targetManager = targetManager; | 20 this._targetManager = targetManager; |
| 22 this._name = name; | 21 this._name = name; |
| 23 this._inspectedURL = ''; | 22 this._inspectedURL = ''; |
| 24 this._capabilitiesMask = capabilitiesMask; | 23 this._capabilitiesMask = capabilitiesMask; |
| 24 this._dispatcher = dispatcher; |
| 25 this._parentTarget = parentTarget; | 25 this._parentTarget = parentTarget; |
| 26 this._id = id; | 26 this._id = id; |
| 27 this._modelByConstructor = new Map(); | 27 this._modelByConstructor = new Map(); |
| 28 this._dispatcher.setDisposeCallback(this._dispose.bind(this)); |
| 28 } | 29 } |
| 29 | 30 |
| 30 createModels(required) { | 31 createModels(required) { |
| 31 this._creatingModels = true; | 32 this._creatingModels = true; |
| 32 // TODO(dgozman): fix this in bindings layer. | 33 // TODO(dgozman): fix this in bindings layer. |
| 33 this.model(SDK.ResourceTreeModel); | 34 this.model(SDK.ResourceTreeModel); |
| 34 var registered = Array.from(SDK.SDKModel._registeredModels.keys()); | 35 var registered = Array.from(SDK.SDKModel._registeredModels.keys()); |
| 35 for (var modelClass of registered) { | 36 for (var modelClass of registered) { |
| 36 var info = SDK.SDKModel._registeredModels.get(modelClass); | 37 var info = SDK.SDKModel._registeredModels.get(modelClass); |
| 37 if (info.autostart || required.has(modelClass)) | 38 if (info.autostart || required.has(modelClass)) |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 131 return this.hasAllCapabilities(SDK.Target.Capability.DOM); | 132 return this.hasAllCapabilities(SDK.Target.Capability.DOM); |
| 132 } | 133 } |
| 133 | 134 |
| 134 /** | 135 /** |
| 135 * @return {?SDK.Target} | 136 * @return {?SDK.Target} |
| 136 */ | 137 */ |
| 137 parentTarget() { | 138 parentTarget() { |
| 138 return this._parentTarget; | 139 return this._parentTarget; |
| 139 } | 140 } |
| 140 | 141 |
| 141 /** | 142 _dispose() { |
| 142 * @override | |
| 143 */ | |
| 144 dispose() { | |
| 145 this._targetManager.removeTarget(this); | 143 this._targetManager.removeTarget(this); |
| 146 for (var model of this._modelByConstructor.valuesArray()) | 144 for (var model of this._modelByConstructor.valuesArray()) |
| 147 model.dispose(); | 145 model.dispose(); |
| 148 } | 146 } |
| 149 | 147 |
| 150 /** | 148 /** |
| 151 * @param {function(new:T, !SDK.Target)} modelClass | 149 * @return {boolean} |
| 150 */ |
| 151 isDisposed() { |
| 152 return this._dispatcher.isDisposed(); |
| 153 } |
| 154 |
| 155 /** |
| 156 * @param {function(new:T, !SDK.Target, !Protocol.Dispatcher)} modelClass |
| 152 * @return {?T} | 157 * @return {?T} |
| 153 * @template T | 158 * @template T |
| 154 */ | 159 */ |
| 155 model(modelClass) { | 160 model(modelClass) { |
| 156 if (!this._modelByConstructor.get(modelClass)) { | 161 if (!this._modelByConstructor.get(modelClass)) { |
| 157 var info = SDK.SDKModel._registeredModels.get(modelClass); | 162 var info = SDK.SDKModel._registeredModels.get(modelClass); |
| 158 if (info === undefined) | 163 if (info === undefined) |
| 159 throw 'Model class is not registered @' + new Error().stack; | 164 throw 'Model class is not registered @' + new Error().stack; |
| 160 if ((this._capabilitiesMask & info.capabilities) === info.capabilities) { | 165 if ((this._capabilitiesMask & info.capabilities) === info.capabilities) { |
| 161 var model = new modelClass(this); | 166 var model = new modelClass(this, this._dispatcher); |
| 162 this._modelByConstructor.set(modelClass, model); | 167 this._modelByConstructor.set(modelClass, model); |
| 163 if (!this._creatingModels) | 168 if (!this._creatingModels) |
| 164 this._targetManager.modelAdded(this, modelClass, model); | 169 this._targetManager.modelAdded(this, modelClass, model); |
| 165 } | 170 } |
| 166 } | 171 } |
| 167 return this._modelByConstructor.get(modelClass) || null; | 172 return this._modelByConstructor.get(modelClass) || null; |
| 168 } | 173 } |
| 169 | 174 |
| 170 /** | 175 /** |
| 171 * @return {!Map<function(new:SDK.SDKModel, !SDK.Target), !SDK.SDKModel>} | 176 * @return {!Map<function(new:SDK.SDKModel, !SDK.Target, !Protocol.Dispatcher)
, !SDK.SDKModel>} |
| 172 */ | 177 */ |
| 173 models() { | 178 models() { |
| 174 return this._modelByConstructor; | 179 return this._modelByConstructor; |
| 175 } | 180 } |
| 176 | 181 |
| 177 /** | 182 /** |
| 178 * @return {string} | 183 * @return {string} |
| 179 */ | 184 */ |
| 180 inspectedURL() { | 185 inspectedURL() { |
| 181 return this._inspectedURL; | 186 return this._inspectedURL; |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 | 223 |
| 219 AllForTests: (1 << 13) - 1 | 224 AllForTests: (1 << 13) - 1 |
| 220 }; | 225 }; |
| 221 | 226 |
| 222 /** | 227 /** |
| 223 * @unrestricted | 228 * @unrestricted |
| 224 */ | 229 */ |
| 225 SDK.SDKModel = class extends Common.Object { | 230 SDK.SDKModel = class extends Common.Object { |
| 226 /** | 231 /** |
| 227 * @param {!SDK.Target} target | 232 * @param {!SDK.Target} target |
| 233 * @param {!Protocol.Dispatcher} dispatcher |
| 228 */ | 234 */ |
| 229 constructor(target) { | 235 constructor(target, dispatcher) { |
| 230 super(); | 236 super(); |
| 231 this._target = target; | 237 this._target = target; |
| 232 } | 238 } |
| 233 | 239 |
| 234 /** | 240 /** |
| 235 * @return {!SDK.Target} | 241 * @return {!SDK.Target} |
| 236 */ | 242 */ |
| 237 target() { | 243 target() { |
| 238 return this._target; | 244 return this._target; |
| 239 } | 245 } |
| (...skipping 11 matching lines...) Expand all Loading... |
| 251 resumeModel() { | 257 resumeModel() { |
| 252 return Promise.resolve(); | 258 return Promise.resolve(); |
| 253 } | 259 } |
| 254 | 260 |
| 255 dispose() { | 261 dispose() { |
| 256 } | 262 } |
| 257 }; | 263 }; |
| 258 | 264 |
| 259 | 265 |
| 260 /** | 266 /** |
| 261 * @param {function(new:SDK.SDKModel, !SDK.Target)} modelClass | 267 * @param {function(new:SDK.SDKModel, !SDK.Target, !Protocol.Dispatcher)} modelC
lass |
| 262 * @param {number} capabilities | 268 * @param {number} capabilities |
| 263 * @param {boolean} autostart | 269 * @param {boolean} autostart |
| 264 */ | 270 */ |
| 265 SDK.SDKModel.register = function(modelClass, capabilities, autostart) { | 271 SDK.SDKModel.register = function(modelClass, capabilities, autostart) { |
| 266 if (!SDK.SDKModel._registeredModels) | 272 if (!SDK.SDKModel._registeredModels) |
| 267 SDK.SDKModel._registeredModels = new Map(); | 273 SDK.SDKModel._registeredModels = new Map(); |
| 268 SDK.SDKModel._registeredModels.set(modelClass, {capabilities: capabilities, au
tostart: autostart}); | 274 SDK.SDKModel._registeredModels.set(modelClass, {capabilities: capabilities, au
tostart: autostart}); |
| 269 }; | 275 }; |
| 270 | 276 |
| 271 /** @type {!Map<function(new:SDK.SDKModel, !SDK.Target), !{capabilities: number,
autostart: boolean}>} */ | 277 /** @type {!Map<function(new:SDK.SDKModel, !SDK.Target, !Protocol.Dispatcher), !
{capabilities: number, autostart: boolean}>} */ |
| 272 SDK.SDKModel._registeredModels; | 278 SDK.SDKModel._registeredModels; |
| OLD | NEW |