| Index: third_party/WebKit/Source/devtools/front_end/sdk/SubTargetsManager.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/SubTargetsManager.js b/third_party/WebKit/Source/devtools/front_end/sdk/SubTargetsManager.js
|
| index 2980c3b6cf32000b79c36b03ade0112177451a29..212d310eab165a328dfd99f2fb5f1fd9a44b766f 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/sdk/SubTargetsManager.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/sdk/SubTargetsManager.js
|
| @@ -14,12 +14,15 @@ WebInspector.SubTargetsManager = function(target)
|
| this._lastAnonymousTargetId = 0;
|
| this._agent = target.targetAgent();
|
|
|
| + /** @type {!Map<string, !WebInspector.TargetInfo>} */
|
| + this._allTargets = new Map();
|
| +
|
| /** @type {!Map<string, !WebInspector.Target>} */
|
| - this._targets = new Map();
|
| + this._attachedTargets = new Map();
|
| /** @type {!Map<string, !WebInspector.SubTargetConnection>} */
|
| this._connections = new Map();
|
|
|
| - this._agent.setWaitForDebuggerOnStart(true);
|
| + this._agent.setAutoAttach(true /* autoAttach */, true /* waitForDebuggerOnStart */);
|
| this._agent.setAttachToFrames(Runtime.experiments.isEnabled("autoAttachToCrossProcessSubframes"));
|
| this._agent.enable();
|
| }
|
| @@ -30,8 +33,7 @@ WebInspector.SubTargetsManager.Events = {
|
| SubTargetRemoved: Symbol("SubTargetRemoved"),
|
| }
|
|
|
| -WebInspector.SubTargetsManager._TypeSymbol = Symbol("SubTargetType");
|
| -WebInspector.SubTargetsManager._IdSymbol = Symbol("SubTargetId");
|
| +WebInspector.SubTargetsManager._InfoSymbol = Symbol("SubTargetInfo");
|
|
|
| WebInspector.SubTargetsManager.prototype = {
|
| /**
|
| @@ -42,7 +44,7 @@ WebInspector.SubTargetsManager.prototype = {
|
| {
|
| var fulfill;
|
| var promise = new Promise(f => fulfill = f);
|
| - this._agent.setWaitForDebuggerOnStart(false, fulfill);
|
| + this._agent.setAutoAttach(true /* autoAttach */, false /* waitForDebuggerOnStart */, fulfill);
|
| return promise;
|
| },
|
|
|
| @@ -54,7 +56,7 @@ WebInspector.SubTargetsManager.prototype = {
|
| {
|
| var fulfill;
|
| var promise = new Promise(f => fulfill = f);
|
| - this._agent.setWaitForDebuggerOnStart(true, fulfill);
|
| + this._agent.setAutoAttach(true /* autoAttach */, true /* waitForDebuggerOnStart */, fulfill);
|
| return promise;
|
| },
|
|
|
| @@ -66,7 +68,7 @@ WebInspector.SubTargetsManager.prototype = {
|
| for (var connection of this._connections.values())
|
| connection._close();
|
| this._connections.clear();
|
| - this._targets.clear();
|
| + this._attachedTargets.clear();
|
| },
|
|
|
| /**
|
| @@ -108,25 +110,16 @@ WebInspector.SubTargetsManager.prototype = {
|
| */
|
| targetForId: function(targetId)
|
| {
|
| - return this._targets.get(targetId) || null;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Target} target
|
| - * @return {?string}
|
| - */
|
| - targetId: function(target)
|
| - {
|
| - return target[WebInspector.SubTargetsManager._IdSymbol] || null;
|
| + return this._attachedTargets.get(targetId) || null;
|
| },
|
|
|
| /**
|
| * @param {!WebInspector.Target} target
|
| - * @return {?string}
|
| + * @return {?WebInspector.TargetInfo}
|
| */
|
| - targetType: function(target)
|
| + targetInfo: function(target)
|
| {
|
| - return target[WebInspector.SubTargetsManager._TypeSymbol] || null;
|
| + return target[WebInspector.SubTargetsManager._InfoSymbol] || null;
|
| },
|
|
|
| /**
|
| @@ -147,25 +140,44 @@ WebInspector.SubTargetsManager.prototype = {
|
| },
|
|
|
| /**
|
| + * @param {!WebInspector.TargetInfo} targetInfo
|
| + */
|
| + _targetCreated: function(targetInfo)
|
| + {
|
| + console.assert(!this._allTargets.has(targetInfo.id));
|
| + console.assert(!this._attachedTargets.has(targetInfo.id));
|
| + this._allTargets.set(targetInfo.id, targetInfo);
|
| + },
|
| +
|
| + /**
|
| + * @param {string} targetId
|
| + */
|
| + _targetRemoved: function(targetId)
|
| + {
|
| + console.assert(this._allTargets.has(targetId));
|
| + console.assert(!this._attachedTargets.has(targetId));
|
| + this._allTargets.delete(targetId);
|
| + },
|
| +
|
| + /**
|
| * @param {string} targetId
|
| - * @param {string} type
|
| - * @param {string} url
|
| * @param {boolean} waitingForDebugger
|
| */
|
| - _targetCreated: function(targetId, type, url, waitingForDebugger)
|
| + _attachedToTarget: function(targetId, waitingForDebugger)
|
| {
|
| + var targetInfo = /** @type {!WebInspector.TargetInfo} */ (this._allTargets.get(targetId));
|
| +
|
| var connection = new WebInspector.SubTargetConnection(this._agent, targetId);
|
| this._connections.set(targetId, connection);
|
|
|
| var targetName = "";
|
| - if (type !== "iframe") {
|
| - var parsedURL = url.asParsedURL();
|
| + if (targetInfo.type !== "iframe") {
|
| + var parsedURL = targetInfo.url.asParsedURL();
|
| targetName = parsedURL ? parsedURL.lastPathComponentWithFragment() : "#" + (++this._lastAnonymousTargetId);
|
| }
|
| - var target = WebInspector.targetManager.createTarget(targetName, this._capabilitiesForType(type), connection, this.target());
|
| - target[WebInspector.SubTargetsManager._TypeSymbol] = type;
|
| - target[WebInspector.SubTargetsManager._IdSymbol] = targetId;
|
| - this._targets.set(targetId, target);
|
| + var target = WebInspector.targetManager.createTarget(targetName, this._capabilitiesForType(targetInfo.type), connection, this.target());
|
| + target[WebInspector.SubTargetsManager._InfoSymbol] = targetInfo;
|
| + this._attachedTargets.set(targetId, target);
|
|
|
| // Only pause new worker if debugging SW - we are going through the pause on start checkbox.
|
| var mainIsServiceWorker = !this.target().parentTarget() && this.target().hasWorkerCapability() && !this.target().hasBrowserCapability();
|
| @@ -179,14 +191,14 @@ WebInspector.SubTargetsManager.prototype = {
|
| /**
|
| * @param {string} targetId
|
| */
|
| - _targetRemoved: function(targetId)
|
| + _detachedFromTarget: function(targetId)
|
| {
|
| var connection = this._connections.get(targetId);
|
| if (connection)
|
| connection._close();
|
| this._connections.delete(targetId);
|
| - var target = this._targets.get(targetId);
|
| - this._targets.delete(targetId);
|
| + var target = this._attachedTargets.get(targetId);
|
| + this._attachedTargets.delete(targetId);
|
| this.dispatchEventToListeners(WebInspector.SubTargetsManager.Events.SubTargetRemoved, target);
|
| },
|
|
|
| @@ -217,14 +229,11 @@ WebInspector.SubTargetsDispatcher = function(manager)
|
| WebInspector.SubTargetsDispatcher.prototype = {
|
| /**
|
| * @override
|
| - * @param {string} targetId
|
| - * @param {string} type
|
| - * @param {string} url
|
| - * @param {boolean} waitingForDebugger
|
| + * @param {!TargetAgent.TargetInfo} targetInfo
|
| */
|
| - targetCreated: function(targetId, type, url, waitingForDebugger)
|
| + targetCreated: function(targetInfo)
|
| {
|
| - this._manager._targetCreated(targetId, type, url, waitingForDebugger);
|
| + this._manager._targetCreated(new WebInspector.TargetInfo(targetInfo));
|
| },
|
|
|
| /**
|
| @@ -239,6 +248,25 @@ WebInspector.SubTargetsDispatcher.prototype = {
|
| /**
|
| * @override
|
| * @param {string} targetId
|
| + * @param {boolean} waitingForDebugger
|
| + */
|
| + attachedToTarget: function(targetId, waitingForDebugger)
|
| + {
|
| + this._manager._attachedToTarget(targetId, waitingForDebugger);
|
| + },
|
| +
|
| + /**
|
| + * @override
|
| + * @param {string} targetId
|
| + */
|
| + detachedFromTarget: function(targetId)
|
| + {
|
| + this._manager._detachedFromTarget(targetId);
|
| + },
|
| +
|
| + /**
|
| + * @override
|
| + * @param {string} targetId
|
| * @param {string} message
|
| */
|
| receivedMessageFromTarget: function(targetId, message)
|
| @@ -286,7 +314,8 @@ WebInspector.TargetInfo = function(payload)
|
| {
|
| this.id = payload.targetId;
|
| this.url = payload.url;
|
| - if (payload.type !== "page" && payload.type !== "iframe") {
|
| + this.type = payload.type;
|
| + if (this.type !== "page" && this.type !== "iframe") {
|
| this.title = WebInspector.UIString("Worker: %s", this.url);
|
| this.canActivate = false;
|
| } else {
|
|
|