[DevTools] (Re-)introduce SDK.Target.Type
We failed to abstract away the types with capabilities, so
I am bringing the type back in preparation of removing
service/shadow workers shadow page target.
Bug: 882467
Change-Id: I480bb18b1cfa9cf79e83435d735d102711991562
Reviewed-on: https://chromium-review.googlesource.com/c/1310759
Reviewed-by: Joel Einbinder <[email protected]>
Commit-Queue: Dmitry Gozman <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#604446}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 1382cbcc0e916f8449d471dd54ca62aeb14db252
diff --git a/front_end/console/ConsoleContextSelector.js b/front_end/console/ConsoleContextSelector.js
index 56afa11..6ff70fc 100644
--- a/front_end/console/ConsoleContextSelector.js
+++ b/front_end/console/ConsoleContextSelector.js
@@ -107,13 +107,12 @@
}
let targetDepth = 0;
while (target.parentTarget()) {
- if (target.parentTarget().hasJSCapability()) {
- targetDepth++;
- } else {
+ if (target.parentTarget().type() === SDK.Target.Type.ServiceWorker) {
// Special casing service workers to be top-level.
targetDepth = 0;
break;
}
+ targetDepth++;
target = target.parentTarget();
}
depth += targetDepth;
@@ -153,7 +152,7 @@
_executionContextCreated(executionContext) {
// FIXME(413886): We never want to show execution context for the main thread of shadow page in service/shared worker frontend.
// This check could be removed once we do not send this context to frontend.
- if (!executionContext.target().hasJSCapability())
+ if (executionContext.target().type() === SDK.Target.Type.ServiceWorker)
return;
this._items.insertWithComparator(executionContext, executionContext.runtimeModel.executionContextComparator());
diff --git a/front_end/inspector_main/InspectorMain.js b/front_end/inspector_main/InspectorMain.js
index 4666c81..51488d2 100644
--- a/front_end/inspector_main/InspectorMain.js
+++ b/front_end/inspector_main/InspectorMain.js
@@ -31,27 +31,19 @@
}
_connectAndCreateMainTarget() {
- const isNodeJS = !!Runtime.queryParam('v8only');
+ const type = Runtime.queryParam('v8only') ? SDK.Target.Type.Node : SDK.Target.Type.Frame;
+ const capabilities = Runtime.queryParam('v8only') ? SDK.Target.Capability.JS :
+ SDK.Target.Capability.Browser | SDK.Target.Capability.DOM |
+ SDK.Target.Capability.DeviceEmulation | SDK.Target.Capability.Emulation | SDK.Target.Capability.Input |
+ SDK.Target.Capability.JS | SDK.Target.Capability.Log | SDK.Target.Capability.Network |
+ SDK.Target.Capability.ScreenCapture | SDK.Target.Capability.Security | SDK.Target.Capability.Target |
+ SDK.Target.Capability.Tracing | SDK.Target.Capability.Inspector;
const target = SDK.targetManager.createTarget(
- 'main', Common.UIString('Main'), this._capabilitiesForMainTarget(), this._createMainConnection.bind(this), null,
- isNodeJS);
+ 'main', Common.UIString('Main'), capabilities, type, this._createMainConnection.bind(this), null);
target.runtimeAgent().runIfWaitingForDebugger();
}
/**
- * @return {number}
- */
- _capabilitiesForMainTarget() {
- if (Runtime.queryParam('v8only'))
- return SDK.Target.Capability.JS;
- return SDK.Target.Capability.Browser | SDK.Target.Capability.DOM | SDK.Target.Capability.DeviceEmulation |
- SDK.Target.Capability.Emulation | SDK.Target.Capability.Input | SDK.Target.Capability.JS |
- SDK.Target.Capability.Log | SDK.Target.Capability.Network | SDK.Target.Capability.ScreenCapture |
- SDK.Target.Capability.Security | SDK.Target.Capability.Target | SDK.Target.Capability.Tracing |
- SDK.Target.Capability.Inspector;
- }
-
- /**
* @param {!Protocol.InspectorBackend.Connection.Params} params
* @return {!Protocol.InspectorBackend.Connection}
*/
@@ -218,7 +210,7 @@
* @param {!SDK.Target} target
*/
_updateTarget(target) {
- if (target.parentTarget())
+ if (target.type() !== SDK.Target.Type.Frame || target.parentTarget())
return;
target.pageAgent().setAdBlockingEnabled(this._adBlockEnabledSetting.get());
target.emulationAgent().setFocusEmulationEnabled(this._emulatePageFocusSetting.get());
diff --git a/front_end/inspector_main/RequestAppBannerActionDelegate.js b/front_end/inspector_main/RequestAppBannerActionDelegate.js
index 8792584..9dc8491 100644
--- a/front_end/inspector_main/RequestAppBannerActionDelegate.js
+++ b/front_end/inspector_main/RequestAppBannerActionDelegate.js
@@ -14,7 +14,7 @@
*/
handleAction(context, actionId) {
const target = SDK.targetManager.mainTarget();
- if (target && target.hasBrowserCapability()) {
+ if (target && target.type() === SDK.Target.Type.Frame) {
target.pageAgent().requestAppBanner();
Common.console.show();
}
diff --git a/front_end/js_main/JsMain.js b/front_end/js_main/JsMain.js
index 59a109d..cd65b76 100644
--- a/front_end/js_main/JsMain.js
+++ b/front_end/js_main/JsMain.js
@@ -12,7 +12,8 @@
run() {
Host.userMetrics.actionTaken(Host.UserMetrics.Action.ConnectToNodeJSDirectly);
const target = SDK.targetManager.createTarget(
- 'main', Common.UIString('Main'), SDK.Target.Capability.JS, this._createMainConnection.bind(this), null, true /* isNodeJS */);
+ 'main', Common.UIString('Main'), SDK.Target.Capability.JS, SDK.Target.Type.Node,
+ this._createMainConnection.bind(this), null);
target.runtimeAgent().runIfWaitingForDebugger();
InspectorFrontendHost.connectionReady();
}
diff --git a/front_end/main/Main.js b/front_end/main/Main.js
index 518fb19..0eb31b1 100644
--- a/front_end/main/Main.js
+++ b/front_end/main/Main.js
@@ -561,7 +561,7 @@
}
if (Components.dockController.dockSide() === Components.DockController.State.Undocked &&
- SDK.targetManager.mainTarget() && SDK.targetManager.mainTarget().hasBrowserCapability())
+ SDK.targetManager.mainTarget() && SDK.targetManager.mainTarget().type() === SDK.Target.Type.Frame)
contextMenu.defaultSection().appendAction('inspector_main.focus-debuggee', Common.UIString('Focus debuggee'));
contextMenu.defaultSection().appendAction(
diff --git a/front_end/node_main/NodeMain.js b/front_end/node_main/NodeMain.js
index 3a2cb44..7c0f43c 100644
--- a/front_end/node_main/NodeMain.js
+++ b/front_end/node_main/NodeMain.js
@@ -12,8 +12,8 @@
run() {
Host.userMetrics.actionTaken(Host.UserMetrics.Action.ConnectToNodeJSFromFrontend);
const target = SDK.targetManager.createTarget(
- 'main', Common.UIString('Main'), SDK.Target.Capability.Target, params => new SDK.MainConnection(params), null,
- false /* isNodeJS */);
+ 'main', Common.UIString('Main'), SDK.Target.Capability.Target, SDK.Target.Type.Browser,
+ params => new SDK.MainConnection(params), null);
target.setInspectedURL('Node.js');
InspectorFrontendHost.connectionReady();
}
@@ -100,7 +100,7 @@
attachedToTarget(sessionId, targetInfo, waitingForDebugger) {
const target = this._targetManager.createTarget(
targetInfo.targetId, Common.UIString('Node.js: %s', targetInfo.url), SDK.Target.Capability.JS,
- this._createChildConnection.bind(this, this._targetAgent, sessionId), this._parentTarget, true /* isNodeJS */);
+ SDK.Target.Type.Node, this._createChildConnection.bind(this, this._targetAgent, sessionId), this._parentTarget);
target.runtimeAgent().runIfWaitingForDebugger();
}
diff --git a/front_end/persistence/Automapping.js b/front_end/persistence/Automapping.js
index 6a486db..bc64a00 100644
--- a/front_end/persistence/Automapping.js
+++ b/front_end/persistence/Automapping.js
@@ -219,7 +219,7 @@
const target = Bindings.NetworkProject.targetForUISourceCode(status.network);
let isValid = false;
- if (target && target.isNodeJS()) {
+ if (target && target.type() === SDK.Target.Type.Node) {
const rewrappedNetworkContent =
Persistence.Persistence.rewrapNodeJSContent(status.fileSystem, fileSystemContent, networkContent);
isValid = fileSystemContent === rewrappedNetworkContent;
diff --git a/front_end/persistence/Persistence.js b/front_end/persistence/Persistence.js
index 14accb9..fac5b99 100644
--- a/front_end/persistence/Persistence.js
+++ b/front_end/persistence/Persistence.js
@@ -178,7 +178,7 @@
}
const target = Bindings.NetworkProject.targetForUISourceCode(binding.network);
- if (target.isNodeJS()) {
+ if (target.type() === SDK.Target.Type.Node) {
const newContent = uiSourceCode.workingCopy();
other.requestContent().then(() => {
const nodeJSContent = Persistence.Persistence.rewrapNodeJSContent(other, other.workingCopy(), newContent);
@@ -221,7 +221,7 @@
return;
const other = binding.network === uiSourceCode ? binding.fileSystem : binding.network;
const target = Bindings.NetworkProject.targetForUISourceCode(binding.network);
- if (target.isNodeJS()) {
+ if (target.type() === SDK.Target.Type.Node) {
other.requestContent().then(currentContent => {
const nodeJSContent = Persistence.Persistence.rewrapNodeJSContent(other, currentContent, newContent);
setContent.call(this, nodeJSContent);
diff --git a/front_end/protocol/InspectorBackend.js b/front_end/protocol/InspectorBackend.js
index c8f5919..168bab4 100644
--- a/front_end/protocol/InspectorBackend.js
+++ b/front_end/protocol/InspectorBackend.js
@@ -230,9 +230,9 @@
Protocol.TargetBase = class extends Common.Object {
/**
* @param {!Protocol.InspectorBackend.Connection.Factory} connectionFactory
- * @param {boolean} isNodeJS
+ * @param {boolean} needsNodeJSPatching
*/
- constructor(connectionFactory, isNodeJS) {
+ constructor(connectionFactory, needsNodeJSPatching) {
super();
this._connection =
connectionFactory({onMessage: this._onMessage.bind(this), onDisconnect: this._onDisconnect.bind(this)});
@@ -249,7 +249,7 @@
}
if (!Protocol.InspectorBackend.sendRawMessageForTesting)
Protocol.InspectorBackend.sendRawMessageForTesting = this._sendRawMessageForTesting.bind(this);
- this._isNodeJS = isNodeJS;
+ this._needsNodeJSPatching = needsNodeJSPatching;
}
/**
@@ -363,7 +363,8 @@
const messageObject = /** @type {!Object} */ ((typeof message === 'string') ? JSON.parse(message) : message);
- Protocol.NodeURL.patch(this, messageObject);
+ if (this._needsNodeJSPatching)
+ Protocol.NodeURL.patch(messageObject);
if ('id' in messageObject) { // just a response for some request
const callback = this._callbacks[messageObject.id];
@@ -505,15 +506,8 @@
0);
}
- /**
- * @return {boolean}
- */
- isNodeJS() {
- return this._isNodeJS;
- }
-
markAsNodeJSForTest() {
- this._isNodeJS = true;
+ this._needsNodeJSPatching = true;
}
};
diff --git a/front_end/protocol/NodeURL.js b/front_end/protocol/NodeURL.js
index b4234cb..e69d057 100644
--- a/front_end/protocol/NodeURL.js
+++ b/front_end/protocol/NodeURL.js
@@ -4,12 +4,10 @@
Protocol.NodeURL = class {
/**
- * @param {!Protocol.TargetBase} target
* @param {!Object} object
*/
- static patch(target, object) {
- if (target.isNodeJS())
- process(object, '');
+ static patch(object) {
+ process(object, '');
/**
* @param {!Object} object
diff --git a/front_end/resources/AppManifestView.js b/front_end/resources/AppManifestView.js
index 6057f58..58cef46 100644
--- a/front_end/resources/AppManifestView.js
+++ b/front_end/resources/AppManifestView.js
@@ -159,7 +159,7 @@
*/
_addToHomescreen(event) {
const target = SDK.targetManager.mainTarget();
- if (target && target.hasBrowserCapability()) {
+ if (target && target.type() === SDK.Target.Type.Frame) {
target.pageAgent().requestAppBanner();
Common.console.show();
}
diff --git a/front_end/sdk/ChildTargetManager.js b/front_end/sdk/ChildTargetManager.js
index 81d17a9..c1bfde8 100644
--- a/front_end/sdk/ChildTargetManager.js
+++ b/front_end/sdk/ChildTargetManager.js
@@ -62,25 +62,6 @@
}
/**
- * @param {string} type
- * @return {number}
- */
- _capabilitiesForType(type) {
- if (type === 'worker') {
- return SDK.Target.Capability.JS | SDK.Target.Capability.Log | SDK.Target.Capability.Network |
- SDK.Target.Capability.Target;
- }
- if (type === 'service_worker')
- return SDK.Target.Capability.Log | SDK.Target.Capability.Network | SDK.Target.Capability.Target;
- if (type === 'iframe') {
- return SDK.Target.Capability.Browser | SDK.Target.Capability.DOM | SDK.Target.Capability.JS |
- SDK.Target.Capability.Log | SDK.Target.Capability.Network | SDK.Target.Capability.Target |
- SDK.Target.Capability.Tracing | SDK.Target.Capability.Emulation | SDK.Target.Capability.Input;
- }
- return 0;
- }
-
- /**
* @override
* @param {!Protocol.Target.TargetInfo} targetInfo
*/
@@ -134,9 +115,29 @@
targetName = parsedURL ? parsedURL.lastPathComponentWithFragment() :
'#' + (++SDK.ChildTargetManager._lastAnonymousTargetId);
}
+
+ let type = SDK.Target.Type.Browser;
+ let capabilities = 0;
+
+ if (targetInfo.type === 'iframe') {
+ type = SDK.Target.Type.Frame;
+ capabilities = SDK.Target.Capability.Browser | SDK.Target.Capability.DOM | SDK.Target.Capability.JS |
+ SDK.Target.Capability.Log | SDK.Target.Capability.Network | SDK.Target.Capability.Target |
+ SDK.Target.Capability.Tracing | SDK.Target.Capability.Emulation | SDK.Target.Capability.Input;
+ }
+ if (targetInfo.type === 'worker') {
+ type = SDK.Target.Type.Worker;
+ capabilities = SDK.Target.Capability.JS | SDK.Target.Capability.Log | SDK.Target.Capability.Network |
+ SDK.Target.Capability.Target;
+ }
+ if (targetInfo.type === 'service_worker') {
+ type = SDK.Target.Type.ServiceWorker;
+ capabilities = SDK.Target.Capability.Log | SDK.Target.Capability.Network | SDK.Target.Capability.Target;
+ }
+
const target = this._targetManager.createTarget(
- targetInfo.targetId, targetName, this._capabilitiesForType(targetInfo.type),
- this._createChildConnection.bind(this, this._targetAgent, sessionId), this._parentTarget, false /* isNodeJS */);
+ targetInfo.targetId, targetName, capabilities, type,
+ this._createChildConnection.bind(this, this._targetAgent, sessionId), this._parentTarget);
if (SDK.ChildTargetManager._attachCallback) {
SDK.ChildTargetManager._attachCallback({target, waitingForDebugger}).then(() => {
diff --git a/front_end/sdk/DebuggerModel.js b/front_end/sdk/DebuggerModel.js
index 85a574e..039ac57 100644
--- a/front_end/sdk/DebuggerModel.js
+++ b/front_end/sdk/DebuggerModel.js
@@ -260,7 +260,7 @@
async setBreakpointByURL(url, lineNumber, columnNumber, condition) {
// Convert file url to node-js path.
let urlRegex;
- if (this.target().isNodeJS()) {
+ if (this.target().type() === SDK.Target.Type.Node) {
const platformPath = Common.ParsedURL.urlToPlatformPath(url, Host.isWin());
urlRegex = `${platformPath.escapeForRegExp()}|${url.escapeForRegExp()}`;
}
diff --git a/front_end/sdk/RuntimeModel.js b/front_end/sdk/RuntimeModel.js
index a8da06a..3262081 100644
--- a/front_end/sdk/RuntimeModel.js
+++ b/front_end/sdk/RuntimeModel.js
@@ -695,10 +695,12 @@
*/
function targetWeight(target) {
if (!target.parentTarget())
+ return 5;
+ if (target.type() === SDK.Target.Type.Frame)
return 4;
- if (target.hasBrowserCapability())
+ if (target.type() === SDK.Target.Type.ServiceWorker)
return 3;
- if (target.hasJSCapability())
+ if (target.type() === SDK.Target.Type.Worker)
return 2;
return 1;
}
diff --git a/front_end/sdk/ServiceWorkerManager.js b/front_end/sdk/ServiceWorkerManager.js
index bbe4f76..4a6e908 100644
--- a/front_end/sdk/ServiceWorkerManager.js
+++ b/front_end/sdk/ServiceWorkerManager.js
@@ -580,7 +580,7 @@
const parent = target.parentTarget();
if (!parent || parent.parentTarget() !== this._target)
return null;
- return parent.id();
+ return parent.type() === SDK.Target.Type.ServiceWorker ? parent.id() : null;
}
_updateAllContextLabels() {
diff --git a/front_end/sdk/Target.js b/front_end/sdk/Target.js
index 9ed9f30..a753051 100644
--- a/front_end/sdk/Target.js
+++ b/front_end/sdk/Target.js
@@ -13,17 +13,20 @@
* @param {string} id
* @param {string} name
* @param {number} capabilitiesMask
+ * @param {!SDK.Target.Type} type
* @param {!Protocol.InspectorBackend.Connection.Factory} connectionFactory
* @param {?SDK.Target} parentTarget
* @param {boolean} suspended
- * @param {boolean} isNodeJS
*/
- constructor(targetManager, id, name, capabilitiesMask, connectionFactory, parentTarget, suspended, isNodeJS) {
- super(connectionFactory, isNodeJS);
+ constructor(targetManager, id, name, capabilitiesMask, type, connectionFactory, parentTarget, suspended) {
+ const needsNodeJSPatching = type === SDK.Target.Type.Node;
+ super(connectionFactory, needsNodeJSPatching);
this._targetManager = targetManager;
this._name = name;
this._inspectedURL = '';
+ // TODO(dgozman): specify capabilities per type here, instead of passing them.
this._capabilitiesMask = capabilitiesMask;
+ this._type = type;
this._parentTarget = parentTarget;
this._id = id;
this._modelByConstructor = new Map();
@@ -58,6 +61,21 @@
}
/**
+ * @return {!SDK.Target.Type}
+ */
+ type() {
+ return this._type;
+ }
+
+ /**
+ * @override
+ */
+ markAsNodeJSForTest() {
+ super.markAsNodeJSForTest();
+ this._type = SDK.Target.Type.Node;
+ }
+
+ /**
* @return {!SDK.TargetManager}
*/
targetManager() {
@@ -69,6 +87,8 @@
* @return {boolean}
*/
hasAllCapabilities(capabilitiesMask) {
+ // TODO(dgozman): get rid of this method, once we never observe targets with
+ // capability mask.
return (this._capabilitiesMask & capabilitiesMask) === capabilitiesMask;
}
@@ -77,49 +97,8 @@
* @return {string}
*/
decorateLabel(label) {
- return !this.hasBrowserCapability() ? '\u2699 ' + label : label;
- }
-
- /**
- * @return {boolean}
- */
- hasBrowserCapability() {
- return this.hasAllCapabilities(SDK.Target.Capability.Browser);
- }
-
- /**
- * @return {boolean}
- */
- hasJSCapability() {
- return this.hasAllCapabilities(SDK.Target.Capability.JS);
- }
-
- /**
- * @return {boolean}
- */
- hasLogCapability() {
- return this.hasAllCapabilities(SDK.Target.Capability.Log);
- }
-
- /**
- * @return {boolean}
- */
- hasNetworkCapability() {
- return this.hasAllCapabilities(SDK.Target.Capability.Network);
- }
-
- /**
- * @return {boolean}
- */
- hasTargetCapability() {
- return this.hasAllCapabilities(SDK.Target.Capability.Target);
- }
-
- /**
- * @return {boolean}
- */
- hasDOMCapability() {
- return this.hasAllCapabilities(SDK.Target.Capability.DOM);
+ return (this._type === SDK.Target.Type.Worker || this._type === SDK.Target.Type.ServiceWorker) ? '\u2699 ' + label :
+ label;
}
/**
@@ -246,6 +225,17 @@
};
/**
+ * @enum {string}
+ */
+SDK.Target.Type = {
+ Frame: 'frame',
+ ServiceWorker: 'service-worker',
+ Worker: 'worker',
+ Node: 'node',
+ Browser: 'browser',
+};
+
+/**
* @unrestricted
*/
SDK.SDKModel = class extends Common.Object {
diff --git a/front_end/sdk/TargetManager.js b/front_end/sdk/TargetManager.js
index bf2bad7..c1d0d50 100644
--- a/front_end/sdk/TargetManager.js
+++ b/front_end/sdk/TargetManager.js
@@ -172,14 +172,14 @@
* @param {string} id
* @param {string} name
* @param {number} capabilitiesMask
+ * @param {!SDK.Target.Type} type
* @param {!Protocol.InspectorBackend.Connection.Factory} connectionFactory
* @param {?SDK.Target} parentTarget
- * @param {boolean} isNodeJS
* @return {!SDK.Target}
*/
- createTarget(id, name, capabilitiesMask, connectionFactory, parentTarget, isNodeJS) {
+ createTarget(id, name, capabilitiesMask, type, connectionFactory, parentTarget) {
const target =
- new SDK.Target(this, id, name, capabilitiesMask, connectionFactory, parentTarget, this._isSuspended, isNodeJS);
+ new SDK.Target(this, id, name, capabilitiesMask, type, connectionFactory, parentTarget, this._isSuspended);
target.createModels(new Set(this._modelObservers.keysArray()));
this._targets.push(target);
diff --git a/front_end/sdk_test_runner/PageMockTestRunner.js b/front_end/sdk_test_runner/PageMockTestRunner.js
index d062f78..e1e522f 100644
--- a/front_end/sdk_test_runner/PageMockTestRunner.js
+++ b/front_end/sdk_test_runner/PageMockTestRunner.js
@@ -15,7 +15,8 @@
SDKTestRunner.connectToPage = function(targetName, pageMock, makeMainTarget) {
const mockTarget = SDK.targetManager.createTarget(
- nextId('mock-target-'), targetName, pageMock.capabilities(), params => pageMock.createConnection(params));
+ nextId('mock-target-'), targetName, pageMock.capabilities(), SDK.Target.Type.Frame,
+ params => pageMock.createConnection(params));
if (makeMainTarget) {
SDK.targetManager._targets = SDK.targetManager._targets.filter(target => target !== mockTarget);
diff --git a/front_end/sources/NavigatorView.js b/front_end/sources/NavigatorView.js
index 668372b..a2016ca 100644
--- a/front_end/sources/NavigatorView.js
+++ b/front_end/sources/NavigatorView.js
@@ -527,7 +527,8 @@
if (!targetNode) {
targetNode = new Sources.NavigatorGroupTreeNode(
this, project, 'target:' + target.id(),
- !target.hasBrowserCapability() ? Sources.NavigatorView.Types.Worker : Sources.NavigatorView.Types.Frame,
+ target.type() === SDK.Target.Type.Frame ? Sources.NavigatorView.Types.Frame :
+ Sources.NavigatorView.Types.Worker,
target.name());
this._rootNode.appendChild(targetNode);
}
diff --git a/front_end/test_runner/TestRunner.js b/front_end/test_runner/TestRunner.js
index 38f6d19..292ed22 100644
--- a/front_end/test_runner/TestRunner.js
+++ b/front_end/test_runner/TestRunner.js
@@ -1225,7 +1225,7 @@
* @return {boolean}
*/
TestRunner.isDedicatedWorker = function(target) {
- return target && !target.hasBrowserCapability() && target.hasJSCapability() && target.hasLogCapability();
+ return target && target.type() === SDK.Target.Type.Worker;
};
/**
@@ -1233,8 +1233,7 @@
* @return {boolean}
*/
TestRunner.isServiceWorker = function(target) {
- return target && !target.hasBrowserCapability() && !target.hasJSCapability() && target.hasNetworkCapability() &&
- target.hasTargetCapability();
+ return target && target.type() === SDK.Target.Type.ServiceWorker;
};
/**
@@ -1242,13 +1241,17 @@
* @return {string}
*/
TestRunner.describeTargetType = function(target) {
- if (TestRunner.isDedicatedWorker(target))
+ if (!target)
+ return 'browser';
+ if (target.type() === SDK.Target.Type.Worker)
return 'worker';
- if (TestRunner.isServiceWorker(target))
+ if (target.type() === SDK.Target.Type.ServiceWorker)
return 'service-worker';
- if (!target.parentTarget())
- return 'page';
- return 'frame';
+ if (target.type() === SDK.Target.Type.Frame)
+ return target.parentTarget() ? 'frame' : 'page';
+ if (target.type() === SDK.Target.Type.Node)
+ return 'node';
+ return 'browser';
};
/**
diff --git a/front_end/worker_main/WorkerMain.js b/front_end/worker_main/WorkerMain.js
index 2915747..2a1fe31 100644
--- a/front_end/worker_main/WorkerMain.js
+++ b/front_end/worker_main/WorkerMain.js
@@ -13,7 +13,8 @@
const capabilities = SDK.Target.Capability.Browser | SDK.Target.Capability.Log | SDK.Target.Capability.Network |
SDK.Target.Capability.Target | SDK.Target.Capability.Inspector;
SDK.targetManager.createTarget(
- 'main', Common.UIString('Main'), capabilities, this._createMainConnection.bind(this), null, false /* isNodeJS */);
+ 'main', Common.UIString('Main'), capabilities, SDK.Target.Type.ServiceWorker,
+ this._createMainConnection.bind(this), null);
InspectorFrontendHost.connectionReady();
new MobileThrottling.NetworkPanelIndicator();
}
@@ -28,9 +29,8 @@
};
SDK.ChildTargetManager.install(async ({target, waitingForDebugger}) => {
- const parentTarget = target.parentTarget();
// Only pause the new worker if debugging SW - we are going through the pause on start checkbox.
- if (parentTarget.parentTarget() || !waitingForDebugger)
+ if (target.parentTarget().type() !== SDK.Target.Type.ServiceWorker || !waitingForDebugger)
return;
const debuggerModel = target.model(SDK.DebuggerModel);
if (!debuggerModel)