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 |