Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Side by Side Diff: Source/devtools/front_end/sdk/Target.js

Issue 485713002: DevTools: Use targetManager.inspectedPageUrl() instead of resourceTreeModel.inspectedPageUrl() (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Addrss comments Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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();
OLDNEW
« no previous file with comments | « Source/devtools/front_end/network/NetworkPanel.js ('k') | Source/devtools/front_end/sources/NavigatorView.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698