Bug 1172897 - Rename WorkerActor to WorkerTargetActor. r=ochameau draft
authorJ. Ryan Stinnett <jryans@gmail.com>
Fri, 01 Jun 2018 15:59:24 -0500
changeset 805438 2da2b957ab57718fdb2e1e3a51bdc055db2c06cb
parent 805437 4e3a5bcf157eb72d20bfd2cbdea580e1d4ba7ca1
child 805439 10bc889df0744580c4da1a5b411f41eba1897992
push id112656
push userbmo:jryans@gmail.com
push dateThu, 07 Jun 2018 20:15:26 +0000
reviewersochameau
bugs1172897
milestone62.0a1
Bug 1172897 - Rename WorkerActor to WorkerTargetActor. r=ochameau MozReview-Commit-ID: 2Qakr1PHKNZ
devtools/client/aboutdebugging/components/workers/ServiceWorkerTarget.js
devtools/client/aboutdebugging/components/workers/Target.js
devtools/client/application/src/components/Worker.js
devtools/client/debugger/debugger-controller.js
devtools/client/debugger/test/mochitest/browser.ini
devtools/client/debugger/test/mochitest/browser2.ini
devtools/client/debugger/test/mochitest/browser_dbg_WorkerActor.attach.js
devtools/client/debugger/test/mochitest/browser_dbg_WorkerActor.attachThread.js
devtools/client/debugger/test/mochitest/browser_dbg_WorkerTargetActor.attach.js
devtools/client/debugger/test/mochitest/browser_dbg_WorkerTargetActor.attachThread.js
devtools/client/debugger/test/mochitest/browser_dbg_worker-console-01.js
devtools/client/debugger/test/mochitest/browser_dbg_worker-console-02.js
devtools/client/debugger/test/mochitest/browser_dbg_worker-console-03.js
devtools/client/debugger/test/mochitest/browser_dbg_worker-console-04.js
devtools/client/debugger/test/mochitest/browser_dbg_worker-window.js
devtools/client/debugger/test/mochitest/code_WorkerActor.attach-worker1.js
devtools/client/debugger/test/mochitest/code_WorkerActor.attach-worker2.js
devtools/client/debugger/test/mochitest/code_WorkerActor.attachThread-worker.js
devtools/client/debugger/test/mochitest/code_WorkerTargetActor.attach-worker1.js
devtools/client/debugger/test/mochitest/code_WorkerTargetActor.attach-worker2.js
devtools/client/debugger/test/mochitest/code_WorkerTargetActor.attachThread-worker.js
devtools/client/debugger/test/mochitest/doc_WorkerActor.attach-tab1.html
devtools/client/debugger/test/mochitest/doc_WorkerActor.attach-tab2.html
devtools/client/debugger/test/mochitest/doc_WorkerActor.attachThread-tab.html
devtools/client/debugger/test/mochitest/doc_WorkerTargetActor.attach-tab1.html
devtools/client/debugger/test/mochitest/doc_WorkerTargetActor.attach-tab2.html
devtools/client/debugger/test/mochitest/doc_WorkerTargetActor.attachThread-tab.html
devtools/client/framework/devtools-browser.js
devtools/client/framework/target.js
devtools/docs/backend/actor-hierarchy.md
devtools/server/actors/child-process.js
devtools/server/actors/moz.build
devtools/server/actors/root.js
devtools/server/actors/targets/browsing-context.js
devtools/server/actors/targets/moz.build
devtools/server/actors/targets/worker.js
devtools/server/actors/webbrowser.js
devtools/server/actors/worker.js
devtools/server/actors/worker/worker-list.js
devtools/shared/client/debugger-client.js
devtools/shared/client/root-client.js
devtools/shared/client/tab-client.js
devtools/shared/specs/index.js
devtools/shared/specs/targets/moz.build
devtools/shared/specs/targets/worker.js
devtools/shared/specs/worker/moz.build
devtools/shared/specs/worker/worker.js
devtools/shared/webconsole/test/common.js
--- a/devtools/client/aboutdebugging/components/workers/ServiceWorkerTarget.js
+++ b/devtools/client/aboutdebugging/components/workers/ServiceWorkerTarget.js
@@ -28,17 +28,17 @@ class ServiceWorkerTarget extends Compon
         active: PropTypes.bool,
         fetch: PropTypes.bool.isRequired,
         icon: PropTypes.string,
         name: PropTypes.string.isRequired,
         url: PropTypes.string,
         scope: PropTypes.string.isRequired,
         // registrationActor can be missing in e10s.
         registrationActor: PropTypes.string,
-        workerActor: PropTypes.string
+        workerTargetActor: PropTypes.string
       }).isRequired
     };
   }
 
   constructor(props) {
     super(props);
 
     this.state = {
@@ -81,30 +81,30 @@ class ServiceWorkerTarget extends Compon
 
   debug() {
     if (!this.isRunning()) {
       // If the worker is not running, we can't debug it.
       return;
     }
 
     const { client, target } = this.props;
-    gDevToolsBrowser.openWorkerToolbox(client, target.workerActor);
+    gDevToolsBrowser.openWorkerToolbox(client, target.workerTargetActor);
   }
 
   push() {
     if (!this.isActive() || !this.isRunning()) {
       // If the worker is not running, we can't push to it.
       // If the worker is not active, the registration might be unavailable and the
       // push will not succeed.
       return;
     }
 
     const { client, target } = this.props;
     client.request({
-      to: target.workerActor,
+      to: target.workerTargetActor,
       type: "push"
     });
   }
 
   start() {
     if (!this.isActive() || this.isRunning()) {
       // If the worker is not active or if it is already running, we can't start it.
       return;
@@ -144,17 +144,17 @@ class ServiceWorkerTarget extends Compon
       type: "getPushSubscription"
     }, ({ subscription }) => {
       this.setState({ pushSubscription: subscription });
     });
   }
 
   isRunning() {
     // We know the target is running if it has a worker actor.
-    return !!this.props.target.workerActor;
+    return !!this.props.target.workerTargetActor;
   }
 
   isActive() {
     return this.props.target.active;
   }
 
   getServiceWorkerStatus() {
     if (this.isActive() && this.isRunning()) {
--- a/devtools/client/aboutdebugging/components/workers/Target.js
+++ b/devtools/client/aboutdebugging/components/workers/Target.js
@@ -22,29 +22,29 @@ const Strings = Services.strings.createB
 class WorkerTarget extends Component {
   static get propTypes() {
     return {
       client: PropTypes.instanceOf(DebuggerClient).isRequired,
       debugDisabled: PropTypes.bool,
       target: PropTypes.shape({
         icon: PropTypes.string,
         name: PropTypes.string.isRequired,
-        workerActor: PropTypes.string
+        workerTargetActor: PropTypes.string
       }).isRequired
     };
   }
 
   constructor(props) {
     super(props);
     this.debug = this.debug.bind(this);
   }
 
   debug() {
     const { client, target } = this.props;
-    gDevToolsBrowser.openWorkerToolbox(client, target.workerActor);
+    gDevToolsBrowser.openWorkerToolbox(client, target.workerTargetActor);
   }
 
   render() {
     const { target, debugDisabled } = this.props;
 
     return dom.li({ className: "target-container" },
       dom.img({
         className: "target-icon",
--- a/devtools/client/application/src/components/Worker.js
+++ b/devtools/client/application/src/components/Worker.js
@@ -30,17 +30,17 @@ class Worker extends Component {
       client: PropTypes.instanceOf(DebuggerClient).isRequired,
       debugDisabled: PropTypes.bool,
       worker: PropTypes.shape({
         active: PropTypes.bool,
         name: PropTypes.string.isRequired,
         scope: PropTypes.string.isRequired,
         // registrationActor can be missing in e10s.
         registrationActor: PropTypes.string,
-        workerActor: PropTypes.string
+        workerTargetActor: PropTypes.string
       }).isRequired
     };
   }
 
   constructor(props) {
     super(props);
 
     this.debug = this.debug.bind(this);
@@ -50,17 +50,17 @@ class Worker extends Component {
 
   debug() {
     if (!this.isRunning()) {
       console.log("Service workers cannot be debugged if they are not running");
       return;
     }
 
     const { client, worker } = this.props;
-    gDevToolsBrowser.openWorkerToolbox(client, worker.workerActor);
+    gDevToolsBrowser.openWorkerToolbox(client, worker.workerTargetActor);
   }
 
   start() {
     if (!this.isActive() || this.isRunning()) {
       console.log("Running or inactive service workers cannot be started");
       return;
     }
 
@@ -76,17 +76,17 @@ class Worker extends Component {
     client.request({
       to: worker.registrationActor,
       type: "unregister"
     });
   }
 
   isRunning() {
     // We know the worker is running if it has a worker actor.
-    return !!this.props.worker.workerActor;
+    return !!this.props.worker.workerTargetActor;
   }
 
   isActive() {
     return this.props.worker.active;
   }
 
   getServiceWorkerStatus() {
     if (this.isActive() && this.isRunning()) {
--- a/devtools/client/debugger/debugger-controller.js
+++ b/devtools/client/debugger/debugger-controller.js
@@ -496,27 +496,27 @@ Workers.prototype = {
     }
 
     this._tabClient.listWorkers((response) => {
       let workerForms = Object.create(null);
       for (let worker of response.workers) {
         workerForms[worker.actor] = worker;
       }
 
-      for (let workerActor in this._workerForms) {
-        if (!(workerActor in workerForms)) {
-          DebuggerView.Workers.removeWorker(this._workerForms[workerActor]);
-          delete this._workerForms[workerActor];
+      for (let workerTargetActor in this._workerForms) {
+        if (!(workerTargetActor in workerForms)) {
+          DebuggerView.Workers.removeWorker(this._workerForms[workerTargetActor]);
+          delete this._workerForms[workerTargetActor];
         }
       }
 
-      for (let workerActor in workerForms) {
-        if (!(workerActor in this._workerForms)) {
-          let workerForm = workerForms[workerActor];
-          this._workerForms[workerActor] = workerForm;
+      for (let workerTargetActor in workerForms) {
+        if (!(workerTargetActor in this._workerForms)) {
+          let workerForm = workerForms[workerTargetActor];
+          this._workerForms[workerTargetActor] = workerForm;
           DebuggerView.Workers.addWorker(workerForm);
         }
       }
     });
   },
 
   _onWorkerListChanged: function () {
     this._updateWorkerList();
--- a/devtools/client/debugger/test/mochitest/browser.ini
+++ b/devtools/client/debugger/test/mochitest/browser.ini
@@ -47,19 +47,19 @@ support-files =
   code_ugly-5.js
   code_ugly-6.js
   code_ugly-7.js
   code_ugly-8
   code_ugly-8^headers^
   code_worker-source-map.coffee
   code_worker-source-map.js
   code_worker-source-map.js.map
-  code_WorkerActor.attach-worker1.js
-  code_WorkerActor.attach-worker2.js
-  code_WorkerActor.attachThread-worker.js
+  code_WorkerTargetActor.attach-worker1.js
+  code_WorkerTargetActor.attach-worker2.js
+  code_WorkerTargetActor.attachThread-worker.js
   doc_auto-pretty-print-01.html
   doc_auto-pretty-print-02.html
   doc_binary_search.html
   doc_blackboxing.html
   doc_blackboxing_unblackbox.html
   doc_breakpoints-break-on-last-line-of-script-on-reload.html
   doc_breakpoints-other-tabs.html
   doc_breakpoints-reload.html
@@ -116,19 +116,19 @@ support-files =
   doc_step-many-statements.html
   doc_step-out.html
   doc_terminate-on-tab-close.html
   doc_watch-expressions.html
   doc_watch-expression-button.html
   doc_whitespace-property-names.html
   doc_with-frame.html
   doc_worker-source-map.html
-  doc_WorkerActor.attach-tab1.html
-  doc_WorkerActor.attach-tab2.html
-  doc_WorkerActor.attachThread-tab.html
+  doc_WorkerTargetActor.attach-tab1.html
+  doc_WorkerTargetActor.attach-tab2.html
+  doc_WorkerTargetActor.attachThread-tab.html
   head.js
   sjs_post-page.sjs
   sjs_random-javascript.sjs
   testactors.js
   !/devtools/client/commandline/test/helpers.js
   !/devtools/client/shared/test/shared-head.js
   !/devtools/client/shared/test/telemetry-test-helpers.js
 
--- a/devtools/client/debugger/test/mochitest/browser2.ini
+++ b/devtools/client/debugger/test/mochitest/browser2.ini
@@ -47,19 +47,19 @@ support-files =
   code_ugly-5.js
   code_ugly-6.js
   code_ugly-7.js
   code_ugly-8
   code_ugly-8^headers^
   code_worker-source-map.coffee
   code_worker-source-map.js
   code_worker-source-map.js.map
-  code_WorkerActor.attach-worker1.js
-  code_WorkerActor.attach-worker2.js
-  code_WorkerActor.attachThread-worker.js
+  code_WorkerTargetActor.attach-worker1.js
+  code_WorkerTargetActor.attach-worker2.js
+  code_WorkerTargetActor.attachThread-worker.js
   doc_auto-pretty-print-01.html
   doc_auto-pretty-print-02.html
   doc_binary_search.html
   doc_blackboxing.html
   doc_blackboxing_unblackbox.html
   doc_breakpoints-break-on-last-line-of-script-on-reload.html
   doc_breakpoints-other-tabs.html
   doc_breakpoints-reload.html
@@ -116,19 +116,19 @@ support-files =
   doc_step-many-statements.html
   doc_step-out.html
   doc_terminate-on-tab-close.html
   doc_watch-expressions.html
   doc_watch-expression-button.html
   doc_whitespace-property-names.html
   doc_with-frame.html
   doc_worker-source-map.html
-  doc_WorkerActor.attach-tab1.html
-  doc_WorkerActor.attach-tab2.html
-  doc_WorkerActor.attachThread-tab.html
+  doc_WorkerTargetActor.attach-tab1.html
+  doc_WorkerTargetActor.attach-tab2.html
+  doc_WorkerTargetActor.attachThread-tab.html
   head.js
   sjs_post-page.sjs
   sjs_random-javascript.sjs
   testactors.js
   !/devtools/client/commandline/test/helpers.js
   !/devtools/client/shared/test/shared-head.js
   !/devtools/client/shared/test/telemetry-test-helpers.js
 
@@ -581,15 +581,15 @@ skip-if = e10s && debug
 skip-if = debug # bug 1334683
 [browser_dbg_worker-console-04.js]
 skip-if = e10s && debug
 [browser_dbg_worker-source-map.js]
 uses-unsafe-cpows = true
 skip-if = e10s && debug
 [browser_dbg_worker-window.js]
 skip-if = e10s && debug
-[browser_dbg_WorkerActor.attach.js]
+[browser_dbg_WorkerTargetActor.attach.js]
 skip-if = e10s && debug
-[browser_dbg_WorkerActor.attachThread.js]
+[browser_dbg_WorkerTargetActor.attachThread.js]
 skip-if = e10s && debug
 [browser_dbg_split-console-keypress.js]
 uses-unsafe-cpows = true
 skip-if = (debug || os == "linux") # Bug 1214439
rename from devtools/client/debugger/test/mochitest/browser_dbg_WorkerActor.attach.js
rename to devtools/client/debugger/test/mochitest/browser_dbg_WorkerTargetActor.attach.js
--- a/devtools/client/debugger/test/mochitest/browser_dbg_WorkerActor.attach.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_WorkerTargetActor.attach.js
@@ -1,14 +1,14 @@
 var MAX_TOTAL_VIEWERS = "browser.sessionhistory.max_total_viewers";
 
-var TAB1_URL = EXAMPLE_URL + "doc_WorkerActor.attach-tab1.html";
-var TAB2_URL = EXAMPLE_URL + "doc_WorkerActor.attach-tab2.html";
-var WORKER1_URL = "code_WorkerActor.attach-worker1.js";
-var WORKER2_URL = "code_WorkerActor.attach-worker2.js";
+var TAB1_URL = EXAMPLE_URL + "doc_WorkerTargetActor.attach-tab1.html";
+var TAB2_URL = EXAMPLE_URL + "doc_WorkerTargetActor.attach-tab2.html";
+var WORKER1_URL = "code_WorkerTargetActor.attach-worker1.js";
+var WORKER2_URL = "code_WorkerTargetActor.attach-worker2.js";
 
 function test() {
   Task.spawn(function* () {
     let oldMaxTotalViewers = SpecialPowers.getIntPref(MAX_TOTAL_VIEWERS);
     SpecialPowers.setIntPref(MAX_TOTAL_VIEWERS, 10);
 
     DebuggerServer.init();
     DebuggerServer.registerAllActors();
rename from devtools/client/debugger/test/mochitest/browser_dbg_WorkerActor.attachThread.js
rename to devtools/client/debugger/test/mochitest/browser_dbg_WorkerTargetActor.attachThread.js
--- a/devtools/client/debugger/test/mochitest/browser_dbg_WorkerActor.attachThread.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_WorkerTargetActor.attachThread.js
@@ -1,10 +1,10 @@
-var TAB_URL = EXAMPLE_URL + "doc_WorkerActor.attachThread-tab.html";
-var WORKER_URL = "code_WorkerActor.attachThread-worker.js";
+var TAB_URL = EXAMPLE_URL + "doc_WorkerTargetActor.attachThread-tab.html";
+var WORKER_URL = "code_WorkerTargetActor.attachThread-worker.js";
 
 function test() {
   Task.spawn(function* () {
     DebuggerServer.init();
     DebuggerServer.registerAllActors();
 
     let client1 = new DebuggerClient(DebuggerServer.connectPipe());
     yield connect(client1);
--- a/devtools/client/debugger/test/mochitest/browser_dbg_worker-console-01.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_worker-console-01.js
@@ -1,13 +1,13 @@
 // Check to make sure that a worker can be attached to a toolbox
 // and that the console works.
 
-var TAB_URL = EXAMPLE_URL + "doc_WorkerActor.attachThread-tab.html";
-var WORKER_URL = "code_WorkerActor.attachThread-worker.js";
+var TAB_URL = EXAMPLE_URL + "doc_WorkerTargetActor.attachThread-tab.html";
+var WORKER_URL = "code_WorkerTargetActor.attachThread-worker.js";
 
 add_task(async function testNormalExecution() {
   let {client, tab, tabClient, workerClient, toolbox, gDebugger} =
     await initWorkerDebugger(TAB_URL, WORKER_URL);
 
   let jsterm = await getSplitConsole(toolbox);
   let executed = await jsterm.execute("this.location.toString()");
   ok(executed.textContent.includes(WORKER_URL),
--- a/devtools/client/debugger/test/mochitest/browser_dbg_worker-console-02.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_worker-console-02.js
@@ -1,13 +1,13 @@
 // Check to make sure that a worker can be attached to a toolbox
 // and that the console works.
 
-var TAB_URL = EXAMPLE_URL + "doc_WorkerActor.attachThread-tab.html";
-var WORKER_URL = "code_WorkerActor.attachThread-worker.js";
+var TAB_URL = EXAMPLE_URL + "doc_WorkerTargetActor.attachThread-tab.html";
+var WORKER_URL = "code_WorkerTargetActor.attachThread-worker.js";
 
 add_task(async function testWhilePaused() {
   let {client, tab, tabClient, workerClient, toolbox, gDebugger} =
     await initWorkerDebugger(TAB_URL, WORKER_URL);
 
   let gTarget = gDebugger.gTarget;
   let gResumeButton = gDebugger.document.getElementById("resume");
   let gResumeKey = gDebugger.document.getElementById("resumeKey");
--- a/devtools/client/debugger/test/mochitest/browser_dbg_worker-console-03.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_worker-console-03.js
@@ -1,13 +1,13 @@
 // Check to make sure that a worker can be attached to a toolbox
 // and that the console works.
 
-var TAB_URL = EXAMPLE_URL + "doc_WorkerActor.attachThread-tab.html";
-var WORKER_URL = "code_WorkerActor.attachThread-worker.js";
+var TAB_URL = EXAMPLE_URL + "doc_WorkerTargetActor.attachThread-tab.html";
+var WORKER_URL = "code_WorkerTargetActor.attachThread-worker.js";
 
 // Test to see if creating the pause from the console works.
 add_task(async function testPausedByConsole() {
   let {client, tab, tabClient, workerClient, toolbox, gDebugger} =
     await initWorkerDebugger(TAB_URL, WORKER_URL);
 
   let gTarget = gDebugger.gTarget;
   let gResumeButton = gDebugger.document.getElementById("resume");
--- a/devtools/client/debugger/test/mochitest/browser_dbg_worker-console-04.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_worker-console-04.js
@@ -2,18 +2,18 @@
 
 "use strict";
 
 // There are shutdown issues for which multiple rejections are left uncaught.
 // See bug 1018184 for resolving these issues.
 const { PromiseTestUtils } = scopedCuImport("resource://testing-common/PromiseTestUtils.jsm");
 PromiseTestUtils.whitelistRejectionsGlobally(/connection just closed/);
 
-const TAB_URL = EXAMPLE_URL + "doc_WorkerActor.attachThread-tab.html";
-const WORKER_URL = "code_WorkerActor.attachThread-worker.js";
+const TAB_URL = EXAMPLE_URL + "doc_WorkerTargetActor.attachThread-tab.html";
+const WORKER_URL = "code_WorkerTargetActor.attachThread-worker.js";
 
 add_task(async function testPausedByConsole() {
   let {client, tab, workerClient, toolbox} =
     await initWorkerDebugger(TAB_URL, WORKER_URL);
 
   info("Check Date objects can be used in the console");
   let jsterm = await getSplitConsole(toolbox);
   let executed = await jsterm.execute("new Date(0)");
--- a/devtools/client/debugger/test/mochitest/browser_dbg_worker-window.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_worker-window.js
@@ -3,18 +3,18 @@
 
 "use strict";
 
 // The following "connectionClosed" rejection should not be left uncaught. This
 // test has been whitelisted until the issue is fixed.
 ChromeUtils.import("resource://testing-common/PromiseTestUtils.jsm", this);
 PromiseTestUtils.expectUncaughtRejection(/[object Object]/);
 
-var TAB_URL = EXAMPLE_URL + "doc_WorkerActor.attachThread-tab.html";
-var WORKER_URL = "code_WorkerActor.attachThread-worker.js";
+var TAB_URL = EXAMPLE_URL + "doc_WorkerTargetActor.attachThread-tab.html";
+var WORKER_URL = "code_WorkerTargetActor.attachThread-worker.js";
 
 add_task(async function() {
   await pushPrefs(["devtools.scratchpad.enabled", true]);
 
   DebuggerServer.init();
   DebuggerServer.registerAllActors();
 
   let client = new DebuggerClient(DebuggerServer.connectPipe());
rename from devtools/client/debugger/test/mochitest/code_WorkerActor.attach-worker1.js
rename to devtools/client/debugger/test/mochitest/code_WorkerTargetActor.attach-worker1.js
rename from devtools/client/debugger/test/mochitest/code_WorkerActor.attach-worker2.js
rename to devtools/client/debugger/test/mochitest/code_WorkerTargetActor.attach-worker2.js
rename from devtools/client/debugger/test/mochitest/code_WorkerActor.attachThread-worker.js
rename to devtools/client/debugger/test/mochitest/code_WorkerTargetActor.attachThread-worker.js
rename from devtools/client/debugger/test/mochitest/doc_WorkerActor.attach-tab1.html
rename to devtools/client/debugger/test/mochitest/doc_WorkerTargetActor.attach-tab1.html
rename from devtools/client/debugger/test/mochitest/doc_WorkerActor.attach-tab2.html
rename to devtools/client/debugger/test/mochitest/doc_WorkerTargetActor.attach-tab2.html
rename from devtools/client/debugger/test/mochitest/doc_WorkerActor.attachThread-tab.html
rename to devtools/client/debugger/test/mochitest/doc_WorkerTargetActor.attachThread-tab.html
--- a/devtools/client/framework/devtools-browser.js
+++ b/devtools/client/framework/devtools-browser.js
@@ -367,21 +367,21 @@ var gDevToolsBrowser = exports.gDevTools
     return Promise.reject(msg);
   },
 
   /**
    * Open a window-hosted toolbox to debug the worker associated to the provided
    * worker actor.
    *
    * @param  {DebuggerClient} client
-   * @param  {Object} workerActor
+   * @param  {Object} workerTargetActor
    *         worker actor form to debug
    */
-  openWorkerToolbox(client, workerActor) {
-    client.attachWorker(workerActor, (response, workerClient) => {
+  openWorkerToolbox(client, workerTargetActor) {
+    client.attachWorker(workerTargetActor, (response, workerClient) => {
       const workerTarget = TargetFactory.forWorker(workerClient);
       gDevTools.showToolbox(workerTarget, null, Toolbox.HostType.WINDOW)
         .then(toolbox => {
           toolbox.once("destroy", () => workerClient.detach());
         });
     });
   },
 
--- a/devtools/client/framework/target.js
+++ b/devtools/client/framework/target.js
@@ -808,17 +808,17 @@ WorkerTarget.prototype = {
     return this._workerClient.client;
   },
 
   destroy: function() {
     this._workerClient.detach();
   },
 
   hasActor: function(name) {
-    // console is the only one actor implemented by WorkerActor
+    // console is the only one actor implemented by WorkerTargetActor
     if (name == "console") {
       return true;
     }
     return false;
   },
 
   getTrait: function() {
     return undefined;
--- a/devtools/docs/backend/actor-hierarchy.md
+++ b/devtools/docs/backend/actor-hierarchy.md
@@ -21,17 +21,17 @@ RootActor: First one, automatically inst
    |
    \-- Target actors:
        Actors that represent the main "thing" being targeted by a given toolbox,
        such as a tab, frame, worker, add-on, etc. and track its lifetime.
        Generally, there is a target actor for each thing you can point a
        toolbox at.
        Examples include:
        FrameTargetActor (for a frame, such as a tab)
-       WorkerActor (for various kind of workers)
+       WorkerTargetActor (for various kind of workers)
        |
        \-- Tab-scoped actors:
            Actors exposing one particular feature set. They are children of a
            given target actor and the data they return is filtered to reflect
            the target.
            These actors are registered with `tab: true` in
            devtools/server/main.js.
            Examples include:
@@ -62,17 +62,17 @@ RootActor (root.js)
    |   |
    |   \-- FrameTargetActor (frame.js)
    |       The "real" target actor for a frame (such as a tab) which runs in
    |       whichever process holds the content. FrameTargetActorProxy
    |       communicates with this via the frame's message manager.
    |       Extends the abstract class BrowsingContextTargetActor.
    |       Returned by "connect" on FrameTargetActorProxy.
    |
-   |-- WorkerActor (worker.js)
+   |-- WorkerTargetActor (worker.js)
    |   Targets a worker (applies to various kinds like web worker, service
    |   worker, etc.).
    |   Returned by "listWorkers" request to the root actor to get all workers.
    |   Returned by "listWorkers" request to a FrameTargetActorProxy to get
    |   workers for a specific frame.
    |   Returned by "listWorkers" request to a ChildProcessActor to get workers
    |   for the chrome of the child process.
    |
--- a/devtools/server/actors/child-process.js
+++ b/devtools/server/actors/child-process.js
@@ -9,17 +9,17 @@ const Services = require("Services");
 
 const { ChromeDebuggerActor } = require("devtools/server/actors/thread");
 const { WebConsoleActor } = require("devtools/server/actors/webconsole");
 const makeDebugger = require("devtools/server/actors/utils/make-debugger");
 const { ActorPool } = require("devtools/server/main");
 const { assert } = require("devtools/shared/DevToolsUtils");
 const { TabSources } = require("./utils/TabSources");
 
-loader.lazyRequireGetter(this, "WorkerActorList", "devtools/server/actors/worker/worker-list", true);
+loader.lazyRequireGetter(this, "WorkerTargetActorList", "devtools/server/actors/worker/worker-list", true);
 
 function ChildProcessActor(connection) {
   this.conn = connection;
   this._contextPool = new ActorPool(this.conn);
   this.conn.addActorPool(this._contextPool);
   this.threadActor = null;
 
   // Use a see-everything debugger
@@ -50,17 +50,17 @@ function ChildProcessActor(connection) {
   const systemPrincipal = Cc["@mozilla.org/systemprincipal;1"]
     .createInstance(Ci.nsIPrincipal);
   const sandbox = Cu.Sandbox(systemPrincipal, {
     sandboxPrototype,
   });
   this._consoleScope = sandbox;
 
   this._workerList = null;
-  this._workerActorPool = null;
+  this._workerTargetActorPool = null;
   this._onWorkerListChanged = this._onWorkerListChanged.bind(this);
 }
 exports.ChildProcessActor = ChildProcessActor;
 
 ChildProcessActor.prototype = {
   actorPrefix: "process",
 
   get isRootActor() {
@@ -109,27 +109,27 @@ ChildProcessActor.prototype = {
         highlightable: false,
         networkMonitor: false,
       },
     };
   },
 
   onListWorkers: function() {
     if (!this._workerList) {
-      this._workerList = new WorkerActorList(this.conn, {});
+      this._workerList = new WorkerTargetActorList(this.conn, {});
     }
     return this._workerList.getList().then(actors => {
       const pool = new ActorPool(this.conn);
       for (const actor of actors) {
         pool.addActor(actor);
       }
 
-      this.conn.removeActorPool(this._workerActorPool);
-      this._workerActorPool = pool;
-      this.conn.addActorPool(this._workerActorPool);
+      this.conn.removeActorPool(this._workerTargetActorPool);
+      this._workerTargetActorPool = pool;
+      this.conn.addActorPool(this._workerTargetActorPool);
 
       this._workerList.onListChanged = this._onWorkerListChanged;
 
       return {
         "from": this.actorID,
         "workers": actors.map(actor => actor.form())
       };
     });
--- a/devtools/server/actors/moz.build
+++ b/devtools/server/actors/moz.build
@@ -68,17 +68,16 @@ DevToolsModules(
     'webaudio.js',
     'webbrowser.js',
     'webconsole.js',
     'webextension-inspected-window.js',
     'webextension-parent.js',
     'webextension.js',
     'webgl.js',
     'window.js',
-    'worker.js',
 )
 
 with Files('animation.js'):
     BUG_COMPONENT = ('Firefox', 'Developer Tools: Animation Inspector')
 
 with Files('breakpoint.js'):
     BUG_COMPONENT = ('Firefox', 'Developer Tools: Debugger')
 
--- a/devtools/server/actors/root.js
+++ b/devtools/server/actors/root.js
@@ -430,19 +430,19 @@ RootActor.prototype = {
     workerList.onListChanged = this._onWorkerListChanged;
 
     return workerList.getList().then(actors => {
       const pool = new ActorPool(this.conn);
       for (const actor of actors) {
         pool.addActor(actor);
       }
 
-      this.conn.removeActorPool(this._workerActorPool);
-      this._workerActorPool = pool;
-      this.conn.addActorPool(this._workerActorPool);
+      this.conn.removeActorPool(this._workerTargetActorPool);
+      this._workerTargetActorPool = pool;
+      this.conn.addActorPool(this._workerTargetActorPool);
 
       return {
         "from": this.actorID,
         "workers": actors.map(actor => actor.form())
       };
     });
   },
 
--- a/devtools/server/actors/targets/browsing-context.js
+++ b/devtools/server/actors/targets/browsing-context.js
@@ -34,17 +34,17 @@ const InspectorUtils = require("Inspecto
 
 const EXTENSION_CONTENT_JSM = "resource://gre/modules/ExtensionContent.jsm";
 
 const { ActorClassWithSpec, Actor } = require("devtools/shared/protocol");
 const { browsingContextTargetSpec } = require("devtools/shared/specs/targets/browsing-context");
 
 loader.lazyRequireGetter(this, "ThreadActor", "devtools/server/actors/thread", true);
 loader.lazyRequireGetter(this, "unwrapDebuggerObjectGlobal", "devtools/server/actors/thread", true);
-loader.lazyRequireGetter(this, "WorkerActorList", "devtools/server/actors/worker/worker-list", true);
+loader.lazyRequireGetter(this, "WorkerTargetActorList", "devtools/server/actors/worker/worker-list", true);
 loader.lazyImporter(this, "ExtensionContent", EXTENSION_CONTENT_JSM);
 
 loader.lazyRequireGetter(this, "StyleSheetActor", "devtools/server/actors/stylesheets", true);
 loader.lazyRequireGetter(this, "getSheetText", "devtools/server/actors/stylesheets", true);
 
 function getWindowID(window) {
   return window.QueryInterface(Ci.nsIInterfaceRequestor)
                .getInterface(Ci.nsIDOMWindowUtils)
@@ -244,19 +244,20 @@ const browsingContextTargetPrototype = {
       frames: true,
       // Do not require to send reconfigure request to reset the document state
       // to what it was before using the actor
       noTabReconfigureOnClose: true,
       // Supports the logInPage request.
       logInPage: true,
     };
 
-    this._workerActorList = null;
-    this._workerActorPool = null;
-    this._onWorkerActorListChanged = this._onWorkerActorListChanged.bind(this);
+    this._workerTargetActorList = null;
+    this._workerTargetActorPool = null;
+    this._onWorkerTargetActorListChanged =
+      this._onWorkerTargetActorListChanged.bind(this);
   },
 
   traits: null,
 
   // Optional console API listener options (e.g. used by the WebExtensionActor to
   // filter console messages by addonID), set to an empty (no options) object by default.
   consoleAPIListenerOptions: {},
 
@@ -652,34 +653,34 @@ const browsingContextTargetPrototype = {
     return { frames: windows };
   },
 
   listWorkers(request) {
     if (!this.attached) {
       return { error: "wrongState" };
     }
 
-    if (this._workerActorList === null) {
-      this._workerActorList = new WorkerActorList(this.conn, {
+    if (this._workerTargetActorList === null) {
+      this._workerTargetActorList = new WorkerTargetActorList(this.conn, {
         type: Ci.nsIWorkerDebugger.TYPE_DEDICATED,
         window: this.window
       });
     }
 
-    return this._workerActorList.getList().then((actors) => {
+    return this._workerTargetActorList.getList().then((actors) => {
       const pool = new ActorPool(this.conn);
       for (const actor of actors) {
         pool.addActor(actor);
       }
 
-      this.conn.removeActorPool(this._workerActorPool);
-      this._workerActorPool = pool;
-      this.conn.addActorPool(this._workerActorPool);
+      this.conn.removeActorPool(this._workerTargetActorPool);
+      this._workerTargetActorPool = pool;
+      this.conn.addActorPool(this._workerTargetActorPool);
 
-      this._workerActorList.onListChanged = this._onWorkerActorListChanged;
+      this._workerTargetActorList.onListChanged = this._onWorkerTargetActorListChanged;
 
       return {
         "from": this.actorID,
         "workers": actors.map((actor) => actor.form())
       };
     });
   },
 
@@ -688,18 +689,18 @@ const browsingContextTargetPrototype = {
     const scriptErrorClass = Cc["@mozilla.org/scripterror;1"];
     const scriptError = scriptErrorClass.createInstance(Ci.nsIScriptError);
     scriptError.initWithWindowID(text, null, null, 0, 0, flags,
                                  category, getInnerId(this.window));
     Services.console.logMessage(scriptError);
     return {};
   },
 
-  _onWorkerActorListChanged() {
-    this._workerActorList.onListChanged = null;
+  _onWorkerTargetActorListChanged() {
+    this._workerTargetActorList.onListChanged = null;
     this.conn.sendActorEvent(this.actorID, "workerListChanged");
   },
 
   observe(subject, topic, data) {
     // Ignore any event that comes before/after the actor is attached.
     // That typically happens during Firefox shutdown.
     if (!this.attached) {
       return;
@@ -930,24 +931,24 @@ const browsingContextTargetPrototype = {
     this.conn.removeActorPool(this._tabPool);
     this._tabPool = null;
     if (this._tabActorPool) {
       this.conn.removeActorPool(this._tabActorPool);
       this._tabActorPool = null;
     }
 
     // Make sure that no more workerListChanged notifications are sent.
-    if (this._workerActorList !== null) {
-      this._workerActorList.onListChanged = null;
-      this._workerActorList = null;
+    if (this._workerTargetActorList !== null) {
+      this._workerTargetActorList.onListChanged = null;
+      this._workerTargetActorList = null;
     }
 
-    if (this._workerActorPool !== null) {
-      this.conn.removeActorPool(this._workerActorPool);
-      this._workerActorPool = null;
+    if (this._workerTargetActorPool !== null) {
+      this.conn.removeActorPool(this._workerTargetActorPool);
+      this._workerTargetActorPool = null;
     }
 
     this._attached = false;
 
     this.conn.send({ from: this.actorID,
                      type: "tabDetached" });
 
     return true;
--- a/devtools/server/actors/targets/moz.build
+++ b/devtools/server/actors/targets/moz.build
@@ -3,9 +3,10 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DevToolsModules(
     'browsing-context.js',
     'frame-proxy.js',
     'frame.js',
+    'worker.js',
 )
rename from devtools/server/actors/worker.js
rename to devtools/server/actors/targets/worker.js
--- a/devtools/server/actors/worker.js
+++ b/devtools/server/actors/targets/worker.js
@@ -1,30 +1,36 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
+/*
+ * Target actor for any of the various kinds of workers.
+ *
+ * See devtools/docs/backend/actor-hierarchy.md for more details.
+ */
+
 const { Ci } = require("chrome");
 const ChromeUtils = require("ChromeUtils");
 const { DebuggerServer } = require("devtools/server/main");
 const { XPCOMUtils } = require("resource://gre/modules/XPCOMUtils.jsm");
 const protocol = require("devtools/shared/protocol");
-const { workerSpec } = require("devtools/shared/specs/worker/worker");
+const { workerTargetSpec } = require("devtools/shared/specs/targets/worker");
 
 loader.lazyRequireGetter(this, "ChromeUtils");
 
 XPCOMUtils.defineLazyServiceGetter(
   this, "swm",
   "@mozilla.org/serviceworkers/manager;1",
   "nsIServiceWorkerManager"
 );
 
-const WorkerActor = protocol.ActorClassWithSpec(workerSpec, {
+const WorkerTargetActor = protocol.ActorClassWithSpec(workerTargetSpec, {
   initialize(conn, dbg) {
     protocol.Actor.prototype.initialize.call(this, conn);
     this._dbg = dbg;
     this._attached = false;
     this._threadActor = null;
     this._transport = null;
   },
 
@@ -174,9 +180,9 @@ const WorkerActor = protocol.ActorClassW
       }
     }
 
     this._dbg.removeListener(this);
     this._attached = false;
   }
 });
 
-exports.WorkerActor = WorkerActor;
+exports.WorkerTargetActor = WorkerTargetActor;
--- a/devtools/server/actors/webbrowser.js
+++ b/devtools/server/actors/webbrowser.js
@@ -10,17 +10,17 @@ var { Ci } = require("chrome");
 var Services = require("Services");
 var { DebuggerServer } = require("devtools/server/main");
 var DevToolsUtils = require("devtools/shared/DevToolsUtils");
 
 loader.lazyRequireGetter(this, "RootActor", "devtools/server/actors/root", true);
 loader.lazyRequireGetter(this, "FrameTargetActorProxy", "devtools/server/actors/targets/frame-proxy", true);
 loader.lazyRequireGetter(this, "BrowserAddonActor", "devtools/server/actors/addon", true);
 loader.lazyRequireGetter(this, "WebExtensionParentActor", "devtools/server/actors/webextension-parent", true);
-loader.lazyRequireGetter(this, "WorkerActorList", "devtools/server/actors/worker/worker-list", true);
+loader.lazyRequireGetter(this, "WorkerTargetActorList", "devtools/server/actors/worker/worker-list", true);
 loader.lazyRequireGetter(this, "ServiceWorkerRegistrationActorList", "devtools/server/actors/worker/worker-list", true);
 loader.lazyRequireGetter(this, "ProcessActorList", "devtools/server/actors/process", true);
 loader.lazyImporter(this, "AddonManager", "resource://gre/modules/AddonManager.jsm");
 
 /**
  * Browser-specific actors.
  */
 
@@ -69,17 +69,17 @@ exports.sendShutdownEvent = sendShutdown
  *
  * * @param connection DebuggerServerConnection
  *          The conection to the client.
  */
 function createRootActor(connection) {
   return new RootActor(connection, {
     tabList: new BrowserTabList(connection),
     addonList: new BrowserAddonList(connection),
-    workerList: new WorkerActorList(connection, {}),
+    workerList: new WorkerTargetActorList(connection, {}),
     serviceWorkerRegistrationList:
       new ServiceWorkerRegistrationActorList(connection),
     processList: new ProcessActorList(),
     globalActorFactories: DebuggerServer.globalActorFactories,
     onShutdown: sendShutdownEvent
   });
 }
 
--- a/devtools/server/actors/worker/worker-list.js
+++ b/devtools/server/actors/worker/worker-list.js
@@ -1,17 +1,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 const { Ci } = require("chrome");
 const { XPCOMUtils } = require("resource://gre/modules/XPCOMUtils.jsm");
-loader.lazyRequireGetter(this, "WorkerActor", "devtools/server/actors/worker", true);
+loader.lazyRequireGetter(this, "WorkerTargetActor", "devtools/server/actors/targets/worker", true);
 loader.lazyRequireGetter(this, "ServiceWorkerRegistrationActor", "devtools/server/actors/worker/service-worker", true);
 
 XPCOMUtils.defineLazyServiceGetter(
   this, "wdm",
   "@mozilla.org/dom/workers/workerdebuggermanager;1",
   "nsIWorkerDebuggerManager"
 );
 
@@ -34,27 +34,27 @@ function matchWorkerDebugger(dbg, option
     if (window !== options.window) {
       return false;
     }
   }
 
   return true;
 }
 
-function WorkerActorList(conn, options) {
+function WorkerTargetActorList(conn, options) {
   this._conn = conn;
   this._options = options;
   this._actors = new Map();
   this._onListChanged = null;
   this._mustNotify = false;
   this.onRegister = this.onRegister.bind(this);
   this.onUnregister = this.onUnregister.bind(this);
 }
 
-WorkerActorList.prototype = {
+WorkerTargetActorList.prototype = {
   getList() {
     // Create a set of debuggers.
     const dbgs = new Set();
     const e = wdm.getWorkerDebuggerEnumerator();
     while (e.hasMoreElements()) {
       const dbg = e.getNext().QueryInterface(Ci.nsIWorkerDebugger);
       if (matchWorkerDebugger(dbg, this._options)) {
         dbgs.add(dbg);
@@ -66,17 +66,17 @@ WorkerActorList.prototype = {
       if (!dbgs.has(dbg)) {
         this._actors.delete(dbg);
       }
     }
 
     // Create an actor for each debugger for which we don't have one.
     for (const dbg of dbgs) {
       if (!this._actors.has(dbg)) {
-        this._actors.set(dbg, new WorkerActor(this._conn, dbg));
+        this._actors.set(dbg, new WorkerTargetActor(this._conn, dbg));
       }
     }
 
     const actors = [];
     for (const [, actor] of this._actors) {
       actors.push(actor);
     }
 
@@ -130,17 +130,17 @@ WorkerActorList.prototype = {
 
   onUnregister(dbg) {
     if (matchWorkerDebugger(dbg, this._options)) {
       this._notifyListChanged();
     }
   }
 };
 
-exports.WorkerActorList = WorkerActorList;
+exports.WorkerTargetActorList = WorkerTargetActorList;
 
 function ServiceWorkerRegistrationActorList(conn) {
   this._conn = conn;
   this._actors = new Map();
   this._onListChanged = null;
   this._mustNotify = false;
   this.onRegister = this.onRegister.bind(this);
   this.onUnregister = this.onUnregister.bind(this);
--- a/devtools/shared/client/debugger-client.js
+++ b/devtools/shared/client/debugger-client.js
@@ -357,29 +357,29 @@ DebuggerClient.prototype = {
         tabClient = new TabClient(this, response);
         this.registerClient(tabClient);
       }
       onResponse(response, tabClient);
       return [response, tabClient];
     });
   },
 
-  attachWorker: function(workerActor, onResponse = noop) {
-    let workerClient = this._clients.get(workerActor);
+  attachWorker: function(workerTargetActor, onResponse = noop) {
+    let workerClient = this._clients.get(workerTargetActor);
     if (workerClient !== undefined) {
       const response = {
         from: workerClient.actor,
         type: "attached",
         url: workerClient.url
       };
       DevToolsUtils.executeSoon(() => onResponse(response, workerClient));
       return promise.resolve([response, workerClient]);
     }
 
-    return this.request({ to: workerActor, type: "attach" }).then(response => {
+    return this.request({ to: workerTargetActor, type: "attach" }).then(response => {
       if (response.error) {
         onResponse(response, null);
         return [response, null];
       }
 
       workerClient = new WorkerClient(this, response);
       this.registerClient(workerClient);
       onResponse(response, workerClient);
--- a/devtools/shared/client/root-client.js
+++ b/devtools/shared/client/root-client.js
@@ -96,19 +96,19 @@ RootClient.prototype = {
    * registrations and workers, this method will combine this information to present a
    * unified array of serviceWorkers. If you are only interested in other workers, use
    * listWorkers.
    *
    * @return {Object}
    *         - {Array} service
    *           array of form-like objects for serviceworkers
    *         - {Array} shared
-   *           Array of WorkerActor forms, containing shared workers.
+   *           Array of WorkerTargetActor forms, containing shared workers.
    *         - {Array} other
-   *           Array of WorkerActor forms, containing other workers.
+   *           Array of WorkerTargetActor forms, containing other workers.
    */
   listAllWorkers: async function() {
     let registrations = [];
     let workers = [];
 
     try {
       // List service worker registrations
       ({ registrations } = await this.listServiceWorkerRegistrations());
@@ -152,28 +152,28 @@ RootClient.prototype = {
         lastUpdateTime: form.lastUpdateTime
       });
     });
 
     workers.forEach(form => {
       const worker = {
         name: form.url,
         url: form.url,
-        workerActor: form.actor
+        workerTargetActor: form.actor
       };
       switch (form.type) {
         case Ci.nsIWorkerDebugger.TYPE_SERVICE:
           const registration = result.service.find(r => r.scope === form.scope);
           if (registration) {
             // XXX: Race, sometimes a ServiceWorkerRegistrationInfo doesn't
             // have a scriptSpec, but its associated WorkerDebugger does.
             if (!registration.url) {
               registration.name = registration.url = form.url;
             }
-            registration.workerActor = form.actor;
+            registration.workerTargetActor = form.actor;
           } else {
             worker.fetch = form.fetch;
 
             // If a service worker registration could not be found, this means we are in
             // e10s, and registrations are not forwarded to other processes until they
             // reach the activated state. Augment the worker as a registration worker to
             // display it in aboutdebugging.
             worker.scope = form.scope;
--- a/devtools/shared/client/tab-client.js
+++ b/devtools/shared/client/tab-client.js
@@ -147,16 +147,16 @@ TabClient.prototype = {
     type: "reconfigure",
     options: arg(0)
   }),
 
   listWorkers: DebuggerClient.requester({
     type: "listWorkers"
   }),
 
-  attachWorker: function(workerActor, onResponse) {
-    return this.client.attachWorker(workerActor, onResponse);
+  attachWorker: function(workerTargetActor, onResponse) {
+    return this.client.attachWorker(workerTargetActor, onResponse);
   },
 };
 
 eventSource(TabClient.prototype);
 
 module.exports = TabClient;
--- a/devtools/shared/specs/index.js
+++ b/devtools/shared/specs/index.js
@@ -220,16 +220,21 @@ const Types = exports.__TypesForTests = 
     front: null,
   },
   {
     types: ["frameTarget"],
     spec: "devtools/shared/specs/targets/frame",
     front: null,
   },
   {
+    types: ["workerTarget"],
+    spec: "devtools/shared/specs/targets/worker",
+    front: null,
+  },
+  {
     types: ["timeline"],
     spec: "devtools/shared/specs/timeline",
     front: "devtools/shared/fronts/timeline",
   },
   {
     types: ["audionode", "webaudio"],
     spec: "devtools/shared/specs/webaudio",
     front: "devtools/shared/fronts/webaudio",
@@ -254,21 +259,16 @@ const Types = exports.__TypesForTests = 
     spec: "devtools/shared/specs/webgl",
     front: "devtools/shared/fronts/webgl",
   },
   {
     types: ["pushSubscription", "serviceWorkerRegistration", "serviceWorker"],
     spec: "devtools/shared/specs/worker/service-worker",
     front: null,
   },
-  {
-    types: ["worker"],
-    spec: "devtools/shared/specs/worker/worker",
-    front: null,
-  },
 ];
 
 const lazySpecs = new Map();
 const lazyFronts = new Map();
 
 // Convert the human readable `Types` list into efficient maps
 Types.forEach(item => {
   item.types.forEach(type => {
--- a/devtools/shared/specs/targets/moz.build
+++ b/devtools/shared/specs/targets/moz.build
@@ -2,9 +2,10 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DevToolsModules(
     'browsing-context.js',
     'frame.js',
+    'worker.js',
 )
rename from devtools/shared/specs/worker/worker.js
rename to devtools/shared/specs/targets/worker.js
--- a/devtools/shared/specs/worker/worker.js
+++ b/devtools/shared/specs/targets/worker.js
@@ -1,17 +1,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
 const {Arg, RetVal, generateActorSpec} = require("devtools/shared/protocol");
 
-const workerSpec = generateActorSpec({
-  typeName: "worker",
+const workerTargetSpec = generateActorSpec({
+  typeName: "workerTarget",
 
   methods: {
     attach: {
       request: {},
       response: RetVal("json")
     },
     detach: {
       request: {},
@@ -25,9 +25,9 @@ const workerSpec = generateActorSpec({
     },
     push: {
       request: {},
       response: RetVal("json")
     },
   },
 });
 
-exports.workerSpec = workerSpec;
+exports.workerTargetSpec = workerTargetSpec;
--- a/devtools/shared/specs/worker/moz.build
+++ b/devtools/shared/specs/worker/moz.build
@@ -1,10 +1,9 @@
 # -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DevToolsModules(
     'service-worker.js',
-    'worker.js',
 )
--- a/devtools/shared/webconsole/test/common.js
+++ b/devtools/shared/webconsole/test/common.js
@@ -100,23 +100,24 @@ var _attachConsole = async function(
     const worker = new Worker(workerName);
     // Keep a strong reference to the Worker to avoid it being
     // GCd during the test (bug 1237492).
     // eslint-disable-next-line camelcase
     state._worker_ref = worker;
     await waitForMessage(worker);
 
     const { workers } = await tabClient.listWorkers();
-    const workerActor = workers.filter(w => w.url == workerName)[0].actor;
-    if (!workerActor) {
+    const workerTargetActor = workers.filter(w => w.url == workerName)[0].actor;
+    if (!workerTargetActor) {
       console.error("listWorkers failed. Unable to find the " +
                     "worker actor\n");
       return;
     }
-    const [workerResponse, workerClient] = await tabClient.attachWorker(workerActor);
+    const [workerResponse, workerClient] =
+      await tabClient.attachWorker(workerTargetActor);
     if (!workerClient || workerResponse.error) {
       console.error("attachWorker failed. No worker client or " +
                     " error: " + workerResponse.error);
       return;
     }
     await workerClient.attachThread({});
     state.actor = workerClient.consoleActor;
     state.dbgClient.attachConsole(workerClient.consoleActor, listeners,