| 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 * @constructor | 8 * @constructor |
| 9 * @extends {Protocol.Agents} | 9 * @extends {Protocol.Agents} |
| 10 * @param {string} name | 10 * @param {string} name |
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 253 WebInspector.SDKObject.call(this, target); | 253 WebInspector.SDKObject.call(this, target); |
| 254 target._modelByConstructor.put(modelClass, this); | 254 target._modelByConstructor.put(modelClass, this); |
| 255 } | 255 } |
| 256 | 256 |
| 257 WebInspector.SDKModel.prototype = { | 257 WebInspector.SDKModel.prototype = { |
| 258 __proto__: WebInspector.SDKObject.prototype | 258 __proto__: WebInspector.SDKObject.prototype |
| 259 } | 259 } |
| 260 | 260 |
| 261 /** | 261 /** |
| 262 * @constructor | 262 * @constructor |
| 263 * @extends {WebInspector.Object} |
| 263 */ | 264 */ |
| 264 WebInspector.TargetManager = function() | 265 WebInspector.TargetManager = function() |
| 265 { | 266 { |
| 266 /** @type {!Array.<!WebInspector.Target>} */ | 267 /** @type {!Array.<!WebInspector.Target>} */ |
| 267 this._targets = []; | 268 this._targets = []; |
| 268 /** @type {!Array.<!WebInspector.TargetManager.Observer>} */ | 269 /** @type {!Array.<!WebInspector.TargetManager.Observer>} */ |
| 269 this._observers = []; | 270 this._observers = []; |
| 270 /** @type {!Object.<string, !Array.<{modelClass: !Function, thisObject: (!Ob
ject|undefined), listener: function(!WebInspector.Event)}>>} */ | 271 /** @type {!Object.<string, !Array.<{modelClass: !Function, thisObject: (!Ob
ject|undefined), listener: function(!WebInspector.Event)}>>} */ |
| 271 this._listeners = {}; | 272 this._modelListeners = {}; |
| 273 } |
| 274 |
| 275 WebInspector.TargetManager.Events = { |
| 276 InspectedURLChanged: "InspectedURLChanged" |
| 272 } | 277 } |
| 273 | 278 |
| 274 WebInspector.TargetManager.prototype = { | 279 WebInspector.TargetManager.prototype = { |
| 275 /** | 280 /** |
| 281 * @return {string} |
| 282 */ |
| 283 inspectedPageURL: function() |
| 284 { |
| 285 if (!this._targets.length) |
| 286 return ""; |
| 287 |
| 288 return this._targets[0].resourceTreeModel.inspectedPageURL(); |
| 289 }, |
| 290 |
| 291 /** |
| 292 * @return {string} |
| 293 */ |
| 294 inspectedPageDomain: function() |
| 295 { |
| 296 if (!this._targets.length) |
| 297 return ""; |
| 298 |
| 299 return this._targets[0].resourceTreeModel.inspectedPageDomain(); |
| 300 }, |
| 301 |
| 302 /** |
| 303 * @param {!WebInspector.Event} event |
| 304 */ |
| 305 _dispatchInspectedURLChanged: function(event) |
| 306 { |
| 307 this.dispatchEventToListeners(WebInspector.TargetManager.Events.Inspecte
dURLChanged, event.data); |
| 308 }, |
| 309 |
| 310 /** |
| 276 * @param {!Function} modelClass | 311 * @param {!Function} modelClass |
| 277 * @param {string} eventType | 312 * @param {string} eventType |
| 278 * @param {function(!WebInspector.Event)} listener | 313 * @param {function(!WebInspector.Event)} listener |
| 279 * @param {!Object=} thisObject | 314 * @param {!Object=} thisObject |
| 280 */ | 315 */ |
| 281 addModelListener: function(modelClass, eventType, listener, thisObject) | 316 addModelListener: function(modelClass, eventType, listener, thisObject) |
| 282 { | 317 { |
| 283 for (var i = 0; i < this._targets.length; ++i) { | 318 for (var i = 0; i < this._targets.length; ++i) { |
| 284 var model = this._targets[i]._modelByConstructor.get(modelClass); | 319 var model = this._targets[i]._modelByConstructor.get(modelClass); |
| 285 model.addEventListener(eventType, listener, thisObject); | 320 model.addEventListener(eventType, listener, thisObject); |
| 286 } | 321 } |
| 287 if (!this._listeners[eventType]) | 322 if (!this._modelListeners[eventType]) |
| 288 this._listeners[eventType] = []; | 323 this._modelListeners[eventType] = []; |
| 289 this._listeners[eventType].push({ modelClass: modelClass, thisObject: th
isObject, listener: listener }); | 324 this._modelListeners[eventType].push({ modelClass: modelClass, thisObjec
t: thisObject, listener: listener }); |
| 290 }, | 325 }, |
| 291 | 326 |
| 292 /** | 327 /** |
| 293 * @param {!Function} modelClass | 328 * @param {!Function} modelClass |
| 294 * @param {string} eventType | 329 * @param {string} eventType |
| 295 * @param {function(!WebInspector.Event)} listener | 330 * @param {function(!WebInspector.Event)} listener |
| 296 * @param {!Object=} thisObject | 331 * @param {!Object=} thisObject |
| 297 */ | 332 */ |
| 298 removeModelListener: function(modelClass, eventType, listener, thisObject) | 333 removeModelListener: function(modelClass, eventType, listener, thisObject) |
| 299 { | 334 { |
| 300 if (!this._listeners[eventType]) | 335 if (!this._modelListeners[eventType]) |
| 301 return; | 336 return; |
| 302 | 337 |
| 303 for (var i = 0; i < this._targets.length; ++i) { | 338 for (var i = 0; i < this._targets.length; ++i) { |
| 304 var model = this._targets[i]._modelByConstructor.get(modelClass); | 339 var model = this._targets[i]._modelByConstructor.get(modelClass); |
| 305 model.removeEventListener(eventType, listener, thisObject); | 340 model.removeEventListener(eventType, listener, thisObject); |
| 306 } | 341 } |
| 307 | 342 |
| 308 var listeners = this._listeners[eventType]; | 343 var listeners = this._modelListeners[eventType]; |
| 309 for (var i = 0; i < listeners.length; ++i) { | 344 for (var i = 0; i < listeners.length; ++i) { |
| 310 if (listeners[i].modelClass === modelClass && listeners[i].listener
=== listener && listeners[i].thisObject === thisObject) | 345 if (listeners[i].modelClass === modelClass && listeners[i].listener
=== listener && listeners[i].thisObject === thisObject) |
| 311 listeners.splice(i--, 1); | 346 listeners.splice(i--, 1); |
| 312 } | 347 } |
| 313 if (!listeners.length) | 348 if (!listeners.length) |
| 314 delete this._listeners[eventType]; | 349 delete this._modelListeners[eventType]; |
| 315 }, | 350 }, |
| 316 | 351 |
| 317 /** | 352 /** |
| 318 * @param {!WebInspector.TargetManager.Observer} targetObserver | 353 * @param {!WebInspector.TargetManager.Observer} targetObserver |
| 319 */ | 354 */ |
| 320 observeTargets: function(targetObserver) | 355 observeTargets: function(targetObserver) |
| 321 { | 356 { |
| 322 this.targets().forEach(targetObserver.targetAdded.bind(targetObserver)); | 357 this.targets().forEach(targetObserver.targetAdded.bind(targetObserver)); |
| 323 this._observers.push(targetObserver); | 358 this._observers.push(targetObserver); |
| 324 }, | 359 }, |
| (...skipping 26 matching lines...) Expand all Loading... |
| 351 callback(newTarget); | 386 callback(newTarget); |
| 352 } | 387 } |
| 353 }, | 388 }, |
| 354 | 389 |
| 355 /** | 390 /** |
| 356 * @param {!WebInspector.Target} target | 391 * @param {!WebInspector.Target} target |
| 357 */ | 392 */ |
| 358 addTarget: function(target) | 393 addTarget: function(target) |
| 359 { | 394 { |
| 360 this._targets.push(target); | 395 this._targets.push(target); |
| 396 if (this._targets.length === 1) |
| 397 target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeM
odel.EventTypes.InspectedURLChanged, this._dispatchInspectedURLChanged, this); |
| 398 |
| 361 var copy = this._observers.slice(); | 399 var copy = this._observers.slice(); |
| 362 for (var i = 0; i < copy.length; ++i) | 400 for (var i = 0; i < copy.length; ++i) |
| 363 copy[i].targetAdded(target); | 401 copy[i].targetAdded(target); |
| 364 | 402 |
| 365 for (var eventType in this._listeners) { | 403 for (var eventType in this._modelListeners) { |
| 366 var listeners = this._listeners[eventType]; | 404 var listeners = this._modelListeners[eventType]; |
| 367 for (var i = 0; i < listeners.length; ++i) { | 405 for (var i = 0; i < listeners.length; ++i) { |
| 368 var model = target._modelByConstructor.get(listeners[i].modelCla
ss); | 406 var model = target._modelByConstructor.get(listeners[i].modelCla
ss); |
| 369 model.addEventListener(eventType, listeners[i].listener, listene
rs[i].thisObject); | 407 model.addEventListener(eventType, listeners[i].listener, listene
rs[i].thisObject); |
| 370 } | 408 } |
| 371 } | 409 } |
| 372 }, | 410 }, |
| 373 | 411 |
| 374 /** | 412 /** |
| 375 * @param {!WebInspector.Target} target | 413 * @param {!WebInspector.Target} target |
| 376 */ | 414 */ |
| 377 removeTarget: function(target) | 415 removeTarget: function(target) |
| 378 { | 416 { |
| 379 this._targets.remove(target); | 417 this._targets.remove(target); |
| 418 if (this._targets.length === 0) |
| 419 target.resourceTreeModel.removeEventListener(WebInspector.ResourceTr
eeModel.EventTypes.InspectedURLChanged, this._dispatchInspectedURLChanged, this)
; |
| 420 |
| 380 var copy = this._observers.slice(); | 421 var copy = this._observers.slice(); |
| 381 for (var i = 0; i < copy.length; ++i) | 422 for (var i = 0; i < copy.length; ++i) |
| 382 copy[i].targetRemoved(target); | 423 copy[i].targetRemoved(target); |
| 383 | 424 |
| 384 for (var eventType in this._listeners) { | 425 for (var eventType in this._modelListeners) { |
| 385 var listeners = this._listeners[eventType]; | 426 var listeners = this._modelListeners[eventType]; |
| 386 for (var i = 0; i < listeners.length; ++i) { | 427 for (var i = 0; i < listeners.length; ++i) { |
| 387 var model = target._modelByConstructor.get(listeners[i].modelCla
ss); | 428 var model = target._modelByConstructor.get(listeners[i].modelCla
ss); |
| 388 model.removeEventListener(eventType, listeners[i].listener, list
eners[i].thisObject); | 429 model.removeEventListener(eventType, listeners[i].listener, list
eners[i].thisObject); |
| 389 } | 430 } |
| 390 } | 431 } |
| 391 }, | 432 }, |
| 392 | 433 |
| 393 /** | 434 /** |
| 394 * @return {!Array.<!WebInspector.Target>} | 435 * @return {!Array.<!WebInspector.Target>} |
| 395 */ | 436 */ |
| 396 targets: function() | 437 targets: function() |
| 397 { | 438 { |
| 398 return this._targets.slice(); | 439 return this._targets.slice(); |
| 399 }, | 440 }, |
| 400 | 441 |
| 401 /** | 442 /** |
| 402 * @return {?WebInspector.Target} | 443 * @return {?WebInspector.Target} |
| 403 */ | 444 */ |
| 404 mainTarget: function() | 445 mainTarget: function() |
| 405 { | 446 { |
| 406 return this._targets[0]; | 447 return this._targets[0]; |
| 407 } | 448 }, |
| 449 |
| 450 __proto__: WebInspector.Object.prototype |
| 408 } | 451 } |
| 409 | 452 |
| 410 /** | 453 /** |
| 411 * @interface | 454 * @interface |
| 412 */ | 455 */ |
| 413 WebInspector.TargetManager.Observer = function() | 456 WebInspector.TargetManager.Observer = function() |
| 414 { | 457 { |
| 415 } | 458 } |
| 416 | 459 |
| 417 WebInspector.TargetManager.Observer.prototype = { | 460 WebInspector.TargetManager.Observer.prototype = { |
| 418 /** | 461 /** |
| 419 * @param {!WebInspector.Target} target | 462 * @param {!WebInspector.Target} target |
| 420 */ | 463 */ |
| 421 targetAdded: function(target) { }, | 464 targetAdded: function(target) { }, |
| 422 | 465 |
| 423 /** | 466 /** |
| 424 * @param {!WebInspector.Target} target | 467 * @param {!WebInspector.Target} target |
| 425 */ | 468 */ |
| 426 targetRemoved: function(target) { }, | 469 targetRemoved: function(target) { }, |
| 427 } | 470 } |
| 428 | 471 |
| 429 /** | 472 /** |
| 430 * @type {!WebInspector.TargetManager} | 473 * @type {!WebInspector.TargetManager} |
| 431 */ | 474 */ |
| 432 WebInspector.targetManager = new WebInspector.TargetManager(); | 475 WebInspector.targetManager = new WebInspector.TargetManager(); |
| OLD | NEW |