| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 | 5 |
| 6 /** | 6 /** |
| 7 * @constructor | 7 * @constructor |
| 8 * @param {!WebInspector.Target} mainTarget | 8 * @param {!WebInspector.Target} mainTarget |
| 9 * @param {!WebInspector.TargetManager} targetManager | 9 * @param {!WebInspector.TargetManager} targetManager |
| 10 */ | 10 */ |
| 11 WebInspector.WorkerTargetManager = function(mainTarget, targetManager) | 11 WebInspector.WorkerTargetManager = function(mainTarget, targetManager) |
| 12 { | 12 { |
| 13 this._mainTarget = mainTarget; | 13 this._mainTarget = mainTarget; |
| 14 this._targetManager = targetManager; | 14 this._targetManager = targetManager; |
| 15 this._targetsByWorkerId = new Map(); |
| 15 mainTarget.workerManager.addEventListener(WebInspector.WorkerManager.Events.
WorkerAdded, this._onWorkerAdded, this); | 16 mainTarget.workerManager.addEventListener(WebInspector.WorkerManager.Events.
WorkerAdded, this._onWorkerAdded, this); |
| 17 mainTarget.workerManager.addEventListener(WebInspector.WorkerManager.Events.
WorkerRemoved, this._onWorkerRemoved, this); |
| 16 mainTarget.workerManager.addEventListener(WebInspector.WorkerManager.Events.
WorkersCleared, this._onWorkersCleared, this); | 18 mainTarget.workerManager.addEventListener(WebInspector.WorkerManager.Events.
WorkersCleared, this._onWorkersCleared, this); |
| 17 WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Event
s.SuspendStateChanged, this._onSuspendStateChanged, this); | 19 WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Event
s.SuspendStateChanged, this._onSuspendStateChanged, this); |
| 18 this._onSuspendStateChanged(); | 20 this._onSuspendStateChanged(); |
| 19 this._lastAnonymousTargetId = 0; | 21 this._lastAnonymousTargetId = 0; |
| 20 this._shouldPauseWorkerOnStart = WebInspector.isWorkerFrontend(); | 22 this._shouldPauseWorkerOnStart = WebInspector.isWorkerFrontend(); |
| 21 } | 23 } |
| 22 | 24 |
| 23 WebInspector.WorkerTargetManager.prototype = { | 25 WebInspector.WorkerTargetManager.prototype = { |
| 24 _onSuspendStateChanged: function() | 26 _onSuspendStateChanged: function() |
| 25 { | 27 { |
| 26 // FIXME: the logic needs to be extended and cover the case when a worke
r was started after disabling autoconnect | 28 // FIXME: the logic needs to be extended and cover the case when a worke
r was started after disabling autoconnect |
| 27 // and still alive after enabling autoconnect. | 29 // and still alive after enabling autoconnect. |
| 28 var suspended = WebInspector.targetManager.allTargetsSuspended(); | 30 var suspended = WebInspector.targetManager.allTargetsSuspended(); |
| 29 this._mainTarget.workerAgent().setAutoconnectToWorkers(!suspended); | 31 this._mainTarget.workerAgent().setAutoconnectToWorkers(!suspended); |
| 30 }, | 32 }, |
| 31 | 33 |
| 32 /** | 34 /** |
| 33 * @param {!WebInspector.Event} event | 35 * @param {!WebInspector.Event} event |
| 34 */ | 36 */ |
| 35 _onWorkerAdded: function(event) | 37 _onWorkerAdded: function(event) |
| 36 { | 38 { |
| 37 var data = /** @type {{workerId: number, url: string, inspectorConnected
: boolean}} */ (event.data); | 39 var data = /** @type {{workerId: number, url: string, inspectorConnected
: boolean}} */ (event.data); |
| 38 new WebInspector.WorkerConnection(this._mainTarget, data.workerId, data.
inspectorConnected, onConnectionReady.bind(this)); | 40 new WebInspector.WorkerConnection(this._mainTarget, data.workerId, data.
inspectorConnected, onConnectionReady.bind(this, data.workerId)); |
| 39 | 41 |
| 40 /** | 42 /** |
| 41 * @this {WebInspector.WorkerTargetManager} | 43 * @this {WebInspector.WorkerTargetManager} |
| 44 * @param {number} workerId |
| 42 * @param {!InspectorBackendClass.Connection} connection | 45 * @param {!InspectorBackendClass.Connection} connection |
| 43 */ | 46 */ |
| 44 function onConnectionReady(connection) | 47 function onConnectionReady(workerId, connection) |
| 45 { | 48 { |
| 46 var parsedURL = data.url.asParsedURL(); | 49 var parsedURL = data.url.asParsedURL(); |
| 47 var workerId = parsedURL ? parsedURL.lastPathComponent : "#" + (++th
is._lastAnonymousTargetId); | 50 var workerName = parsedURL ? parsedURL.lastPathComponent : "#" + (++
this._lastAnonymousTargetId); |
| 48 this._targetManager.createTarget(WebInspector.UIString("Worker %s",
workerId), connection, targetCreated.bind(this)); | 51 this._targetManager.createTarget(WebInspector.UIString("Worker %s",
workerName), connection, targetCreated.bind(this, workerId)); |
| 49 } | 52 } |
| 50 | 53 |
| 51 /** | 54 /** |
| 52 * @this {WebInspector.WorkerTargetManager} | 55 * @this {WebInspector.WorkerTargetManager} |
| 56 * @param {number} workerId |
| 53 * @param {?WebInspector.Target} target | 57 * @param {?WebInspector.Target} target |
| 54 */ | 58 */ |
| 55 function targetCreated(target) | 59 function targetCreated(workerId, target) |
| 56 { | 60 { |
| 57 if (!target) | 61 if (!target) |
| 58 return; | 62 return; |
| 63 if (workerId) |
| 64 this._targetsByWorkerId.set(workerId, target); |
| 59 if (data.inspectorConnected) { | 65 if (data.inspectorConnected) { |
| 60 if (this._shouldPauseWorkerOnStart) | 66 if (this._shouldPauseWorkerOnStart) |
| 61 target.debuggerAgent().pause(); | 67 target.debuggerAgent().pause(); |
| 62 target.runtimeAgent().run(calculateTitle.bind(this, target)); | 68 target.runtimeAgent().run(calculateTitle.bind(this, target)); |
| 63 } else { | 69 } else { |
| 64 calculateTitle.call(this, target); | 70 calculateTitle.call(this, target); |
| 65 } | 71 } |
| 66 this._shouldPauseWorkerOnStart = false; | 72 this._shouldPauseWorkerOnStart = false; |
| 67 } | 73 } |
| 68 | 74 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 98 console.error(error); | 104 console.error(error); |
| 99 return; | 105 return; |
| 100 } | 106 } |
| 101 InspectorFrontendHost.inspectedURLChanged(String(result.value)); | 107 InspectorFrontendHost.inspectedURLChanged(String(result.value)); |
| 102 } | 108 } |
| 103 }, | 109 }, |
| 104 | 110 |
| 105 _onWorkersCleared: function() | 111 _onWorkersCleared: function() |
| 106 { | 112 { |
| 107 this._lastAnonymousTargetId = 0; | 113 this._lastAnonymousTargetId = 0; |
| 114 this._targetsByWorkerId.clear(); |
| 115 }, |
| 116 |
| 117 /** |
| 118 * @param {!WebInspector.Event} event |
| 119 */ |
| 120 _onWorkerRemoved: function(event) |
| 121 { |
| 122 var workerId = /** @type {number} */ (event.data); |
| 123 this._targetsByWorkerId.delete(workerId); |
| 124 }, |
| 125 |
| 126 /** |
| 127 * @param {number} workerId |
| 128 * @return {?WebInspector.Target} |
| 129 */ |
| 130 targetByWorkerId: function(workerId) |
| 131 { |
| 132 return this._targetsByWorkerId.get(workerId) || null; |
| 108 } | 133 } |
| 109 } | 134 } |
| 110 | 135 |
| 111 /** | 136 /** |
| 112 * @constructor | 137 * @constructor |
| 113 * @extends {InspectorBackendClass.Connection} | 138 * @extends {InspectorBackendClass.Connection} |
| 114 * @param {!WebInspector.Target} target | 139 * @param {!WebInspector.Target} target |
| 115 * @param {number} workerId | 140 * @param {number} workerId |
| 116 * @param {boolean} inspectorConnected | 141 * @param {boolean} inspectorConnected |
| 117 * @param {!function(!InspectorBackendClass.Connection)} onConnectionReady | 142 * @param {!function(!InspectorBackendClass.Connection)} onConnectionReady |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 _close: function() | 191 _close: function() |
| 167 { | 192 { |
| 168 this._target.workerManager.removeEventListener(WebInspector.WorkerManage
r.Events.MessageFromWorker, this._dispatchMessageFromWorker, this); | 193 this._target.workerManager.removeEventListener(WebInspector.WorkerManage
r.Events.MessageFromWorker, this._dispatchMessageFromWorker, this); |
| 169 this._target.workerManager.removeEventListener(WebInspector.WorkerManage
r.Events.WorkerRemoved, this._onWorkerRemoved, this); | 194 this._target.workerManager.removeEventListener(WebInspector.WorkerManage
r.Events.WorkerRemoved, this._onWorkerRemoved, this); |
| 170 this._target.workerManager.removeEventListener(WebInspector.WorkerManage
r.Events.WorkersCleared, this._close, this); | 195 this._target.workerManager.removeEventListener(WebInspector.WorkerManage
r.Events.WorkersCleared, this._close, this); |
| 171 this.connectionClosed("worker_terminated"); | 196 this.connectionClosed("worker_terminated"); |
| 172 }, | 197 }, |
| 173 | 198 |
| 174 __proto__: InspectorBackendClass.Connection.prototype | 199 __proto__: InspectorBackendClass.Connection.prototype |
| 175 } | 200 } |
| 201 |
| 202 /** |
| 203 * @type {?WebInspector.WorkerTargetManager} |
| 204 */ |
| 205 WebInspector.workerTargetManager; |
| OLD | NEW |