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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js

Issue 2421913003: DevTools: allow reattaching main target live. (Closed)
Patch Set: link fixed Created 4 years, 2 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
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 {WebInspector.Object} 9 * @extends {WebInspector.Object}
10 */ 10 */
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 if (target.hasBrowserCapability()) { 229 if (target.hasBrowserCapability()) {
230 target.subTargetsManager = new WebInspector.SubTargetsManager(target ); 230 target.subTargetsManager = new WebInspector.SubTargetsManager(target );
231 target.serviceWorkerManager = new WebInspector.ServiceWorkerManager( target, target.subTargetsManager); 231 target.serviceWorkerManager = new WebInspector.ServiceWorkerManager( target, target.subTargetsManager);
232 } 232 }
233 233
234 this.addTarget(target); 234 this.addTarget(target);
235 return target; 235 return target;
236 }, 236 },
237 237
238 /** 238 /**
239 * @param {function()} factory
240 */
241 setMainTargetFactory: function(factory)
242 {
243 this._mainTargetFactory = factory;
244 },
245
246 /**
247 * @param {function(string)} dispatch
248 * @return {!Promise<!WebInspector.RawProtocolConnection>}
249 */
250 interceptMainConnection: function(dispatch)
251 {
252 var target = WebInspector.targetManager.mainTarget();
253 if (target)
254 target.connection().close();
255
256 var fulfill;
257 var result = new Promise(resolve => fulfill = resolve);
258 InspectorFrontendHost.reattach(() => fulfill(new WebInspector.RawProtoco lConnection(dispatch, yieldCallback.bind(this))));
259 return result;
260
261 /**
262 * @this {WebInspector.TargetManager}
263 */
264 function yieldCallback()
265 {
266 InspectorFrontendHost.reattach(this._mainTargetFactory());
267 }
268 },
269
270 /**
239 * @param {!WebInspector.Target} target 271 * @param {!WebInspector.Target} target
240 * @return {!Array<!WebInspector.TargetManager.Observer>} 272 * @return {!Array<!WebInspector.TargetManager.Observer>}
241 */ 273 */
242 _observersForTarget: function(target) 274 _observersForTarget: function(target)
243 { 275 {
244 return this._observers.filter((observer) => target.hasAllCapabilities(ob server[this._observerCapabiliesMaskSymbol] || 0)); 276 return this._observers.filter((observer) => target.hasAllCapabilities(ob server[this._observerCapabiliesMaskSymbol] || 0));
245 }, 277 },
246 278
247 /** 279 /**
248 * @param {!WebInspector.Target} target 280 * @param {!WebInspector.Target} target
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 { 314 {
283 return resourceTreeModel.addEventListener(sourceEvent, this._redispa tchEvent.bind(this, targetEvent)); 315 return resourceTreeModel.addEventListener(sourceEvent, this._redispa tchEvent.bind(this, targetEvent));
284 } 316 }
285 }, 317 },
286 318
287 /** 319 /**
288 * @param {!WebInspector.Target} target 320 * @param {!WebInspector.Target} target
289 */ 321 */
290 removeTarget: function(target) 322 removeTarget: function(target)
291 { 323 {
324 if (!this._targets.includes(target))
325 return;
292 this._targets.remove(target); 326 this._targets.remove(target);
293 var resourceTreeModel = WebInspector.ResourceTreeModel.fromTarget(target ); 327 var resourceTreeModel = WebInspector.ResourceTreeModel.fromTarget(target );
294 var treeModelListeners = resourceTreeModel && resourceTreeModel[WebInspe ctor.TargetManager._listenersSymbol]; 328 var treeModelListeners = resourceTreeModel && resourceTreeModel[WebInspe ctor.TargetManager._listenersSymbol];
295 if (treeModelListeners) 329 if (treeModelListeners)
296 WebInspector.EventTarget.removeEventListeners(treeModelListeners); 330 WebInspector.EventTarget.removeEventListeners(treeModelListeners);
297 331
298 var copy = this._observersForTarget(target); 332 var copy = this._observersForTarget(target);
299 for (var i = 0; i < copy.length; ++i) 333 for (var i = 0; i < copy.length; ++i)
300 copy[i].targetRemoved(target); 334 copy[i].targetRemoved(target);
301 335
302 for (var pair of this._modelListeners) { 336 for (var pair of this._modelListeners) {
303 var listeners = pair[1]; 337 var listeners = pair[1];
304 for (var i = 0; i < listeners.length; ++i) { 338 for (var i = 0; i < listeners.length; ++i) {
305 var model = target.model(listeners[i].modelClass); 339 var model = target.model(listeners[i].modelClass);
306 if (model) 340 if (model)
307 model.removeEventListener(/** @type {symbol} */ (pair[0]), l isteners[i].listener, listeners[i].thisObject); 341 model.removeEventListener(/** @type {symbol} */ (pair[0]), l isteners[i].listener, listeners[i].thisObject);
308 } 342 }
309 } 343 }
310 }, 344 },
311 345
312 removeAllTargets: function()
313 {
314 var targets = this._targets.slice();
315 for (var i = targets.length - 1; i >=0 ; --i)
316 this.removeTarget(targets[i]);
317 this._targets = [];
318 },
319
320 /** 346 /**
321 * @param {number=} capabilitiesMask 347 * @param {number=} capabilitiesMask
322 * @return {!Array.<!WebInspector.Target>} 348 * @return {!Array.<!WebInspector.Target>}
323 */ 349 */
324 targets: function(capabilitiesMask) 350 targets: function(capabilitiesMask)
325 { 351 {
326 if (!capabilitiesMask) 352 if (!capabilitiesMask)
327 return this._targets.slice(); 353 return this._targets.slice();
328 else 354 else
329 return this._targets.filter((target) => target.hasAllCapabilities(ca pabilitiesMask || 0)); 355 return this._targets.filter((target) => target.hasAllCapabilities(ca pabilitiesMask || 0));
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 /** 416 /**
391 * @param {!WebInspector.Target} target 417 * @param {!WebInspector.Target} target
392 */ 418 */
393 targetRemoved: function(target) { }, 419 targetRemoved: function(target) { },
394 } 420 }
395 421
396 /** 422 /**
397 * @type {!WebInspector.TargetManager} 423 * @type {!WebInspector.TargetManager}
398 */ 424 */
399 WebInspector.targetManager = new WebInspector.TargetManager(); 425 WebInspector.targetManager = new WebInspector.TargetManager();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698