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

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

Powered by Google App Engine
This is Rietveld 408576698