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

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