Bug 1172897 - Rename BrowserAddonActor to AddonTargetActor. r=ochameau draft
authorJ. Ryan Stinnett <jryans@gmail.com>
Mon, 04 Jun 2018 18:37:02 -0500
changeset 805443 8a2292f8d1e695bb1f76bb146fe5c0c27d2ed106
parent 805442 45b6109f1247b9ce33a617421b8e365888007bc8
child 805444 9b0ae87d28f563368c0b45d122821dcf0a7c8488
push id112656
push userbmo:jryans@gmail.com
push dateThu, 07 Jun 2018 20:15:26 +0000
reviewersochameau
bugs1172897
milestone62.0a1
Bug 1172897 - Rename BrowserAddonActor to AddonTargetActor. r=ochameau MozReview-Commit-ID: 4iI6BQaleJS
devtools/client/aboutdebugging/components/addons/Panel.js
devtools/client/aboutdebugging/components/addons/Target.js
devtools/client/debugger/test/mochitest/head.js
devtools/client/framework/ToolboxProcess.jsm
devtools/client/framework/connect/connect.js
devtools/client/framework/connect/connect.xhtml
devtools/client/framework/target.js
devtools/client/framework/toolbox-process-window.js
devtools/docs/backend/actor-hierarchy.md
devtools/server/actors/addon.js
devtools/server/actors/addon/addons.js
devtools/server/actors/addon/console.js
devtools/server/actors/moz.build
devtools/server/actors/root.js
devtools/server/actors/targets/addon.js
devtools/server/actors/targets/moz.build
devtools/server/actors/webbrowser.js
devtools/server/main.js
devtools/server/tests/mochitest/test_webextension-addon-debugging-connect.html
devtools/server/tests/mochitest/webextension-helpers.js
devtools/server/tests/unit/test_addon_reload.js
devtools/shared/client/debugger-client.js
--- a/devtools/client/aboutdebugging/components/addons/Panel.js
+++ b/devtools/client/aboutdebugging/components/addons/Panel.js
@@ -86,17 +86,17 @@ class AddonsPanel extends Component {
     this.setState({ debugDisabled });
   }
 
   updateAddonsList() {
     this.props.client.listAddons()
       .then(({addons}) => {
         const extensions = addons.filter(addon => addon.debuggable).map(addon => {
           return {
-            addonActor: addon.actor,
+            addonTargetActor: addon.actor,
             addonID: addon.id,
             // Forward the whole addon actor form for potential remote debugging.
             form: addon,
             icon: addon.iconURL || ExtensionIcon,
             manifestURL: addon.manifestURL,
             name: addon.name,
             temporarilyInstalled: addon.temporarilyInstalled,
             url: addon.url,
--- a/devtools/client/aboutdebugging/components/addons/Target.js
+++ b/devtools/client/aboutdebugging/components/addons/Target.js
@@ -151,17 +151,17 @@ function warningMessages(target) {
 
 class AddonTarget extends Component {
   static get propTypes() {
     return {
       client: PropTypes.instanceOf(DebuggerClient).isRequired,
       connect: PropTypes.object,
       debugDisabled: PropTypes.bool,
       target: PropTypes.shape({
-        addonActor: PropTypes.string.isRequired,
+        addonTargetActor: PropTypes.string.isRequired,
         addonID: PropTypes.string.isRequired,
         form: PropTypes.object.isRequired,
         icon: PropTypes.string,
         name: PropTypes.string.isRequired,
         temporarilyInstalled: PropTypes.bool,
         url: PropTypes.string,
         warnings: PropTypes.array,
       }).isRequired
@@ -190,17 +190,17 @@ class AddonTarget extends Component {
     uninstallAddon(target.addonID);
   }
 
   async reload() {
     const { client, target } = this.props;
     const { AboutDebugging } = window;
     try {
       await client.request({
-        to: target.addonActor,
+        to: target.addonTargetActor,
         type: "reload"
       });
       AboutDebugging.emit("addon-reload");
     } catch (e) {
       throw new Error("Error reloading addon " + target.addonID + ": " + e.message);
     }
   }
 
--- a/devtools/client/debugger/test/mochitest/head.js
+++ b/devtools/client/debugger/test/mochitest/head.js
@@ -170,19 +170,19 @@ function getTabActorForUrl(aClient, aUrl
   return deferred.promise;
 }
 
 function getAddonActorForId(aClient, aAddonId) {
   info("Get addon actor for ID: " + aAddonId);
   let deferred = promise.defer();
 
   aClient.listAddons(aResponse => {
-    let addonActor = aResponse.addons.filter(aGrip => aGrip.id == aAddonId).pop();
+    let addonTargetActor = aResponse.addons.filter(aGrip => aGrip.id == aAddonId).pop();
     info("got addon actor for ID: " + aAddonId);
-    deferred.resolve(addonActor);
+    deferred.resolve(addonTargetActor);
   });
 
   return deferred.promise;
 }
 
 function attachTabActorForUrl(aClient, aUrl) {
   let deferred = promise.defer();
 
@@ -640,20 +640,20 @@ AddonDebugger.prototype = {
     document.documentElement.appendChild(this.frame);
     window.addEventListener("message", this._onMessage);
 
     let transport = DebuggerServer.connectPipe();
     this.client = new DebuggerClient(transport);
 
     yield this.client.connect();
 
-    let addonActor = yield getAddonActorForId(this.client, aAddonId);
+    let addonTargetActor = yield getAddonActorForId(this.client, aAddonId);
 
     let targetOptions = {
-      form: addonActor,
+      form: addonTargetActor,
       client: this.client,
       chrome: true,
       isBrowsingContext: false
     };
 
     let toolboxOptions = {
       customIframe: this.frame
     };
--- a/devtools/client/framework/ToolboxProcess.jsm
+++ b/devtools/client/framework/ToolboxProcess.jsm
@@ -108,17 +108,17 @@ BrowserToolboxProcess.getBrowserToolboxS
     if (!process._options || !process._options.addonID) {
       return true;
     }
   }
   return false;
 };
 
 /**
- * Passes a set of options to the BrowserAddonActors for the given ID.
+ * Passes a set of options to the AddonTargetActors for the given ID.
  *
  * @param id string
  *        The ID of the add-on to pass the options to
  * @param options object
  *        The options.
  * @return a promise that will be resolved when complete.
  */
 BrowserToolboxProcess.setAddonOptions = function(id, options) {
--- a/devtools/client/framework/connect/connect.js
+++ b/devtools/client/framework/connect/connect.js
@@ -83,17 +83,17 @@ var onConnectionReady = async function([
     const response = await gClient.listAddons();
     if (!response.error && response.addons.length > 0) {
       addons = response.addons;
     }
   } catch (e) {
     // listAddons throws if the runtime doesn't support addons
   }
 
-  let parent = document.getElementById("addonActors");
+  let parent = document.getElementById("addonTargetActors");
   if (addons.length > 0) {
     // Add one entry for each add-on.
     for (const addon of addons) {
       if (!addon.debuggable) {
         continue;
       }
       buildAddonLink(addon, parent);
     }
--- a/devtools/client/framework/connect/connect.xhtml
+++ b/devtools/client/framework/connect/connect.xhtml
@@ -37,17 +37,17 @@
       <p class="error-message error-timeout">&errorTimeout;</p>
       <p class="error-message error-refused">&errorRefused;</p>
       <p class="error-message error-unexpected">&errorUnexpected;</p>
     </section>
     <section id="actors-list">
       <p>&availableTabs;</p>
       <ul class="actors" id="tabActors"></ul>
       <p>&availableAddons;</p>
-      <ul class="actors" id="addonActors"></ul>
+      <ul class="actors" id="addonTargetActors"></ul>
       <p>&availableProcesses;</p>
       <ul class="actors" id="globalActors"></ul>
     </section>
     <section id="connecting">
       <p class="devtools-throbber">&connecting;</p>
     </section>
     <footer>&remoteHelp;<a target='_' href='https://developer.mozilla.org/docs/Tools/Remote_Debugging'>&remoteDocumentation;</a>&remoteHelpSuffix;</footer>
   </body>
--- a/devtools/client/framework/target.js
+++ b/devtools/client/framework/target.js
@@ -345,18 +345,19 @@ TabTarget.prototype = {
     return this._url;
   },
 
   get isRemote() {
     return !this.isLocalTab;
   },
 
   get isAddon() {
-    return !!(this._form && this._form.actor &&
-              this._form.actor.match(/conn\d+\.addon\d+/)) || this.isWebExtension;
+    const isLegacyAddon = !!(this._form && this._form.actor &&
+      this._form.actor.match(/conn\d+\.addon(Target)?\d+/));
+    return isLegacyAddon || this.isWebExtension;
   },
 
   get isWebExtension() {
     return !!(this._form && this._form.actor && (
       this._form.actor.match(/conn\d+\.webExtension\d+/) ||
       this._form.actor.match(/child\d+\/webExtension\d+/)
     ));
   },
@@ -415,17 +416,17 @@ TabTarget.prototype = {
       // Enable being able to get child process actors
       DebuggerServer.allowChromeProcess = true;
 
       this._client = new DebuggerClient(DebuggerServer.connectPipe());
       // A local TabTarget will never perform chrome debugging.
       this._chrome = false;
     } else if (this._form.isWebExtension &&
           this.client.mainRoot.traits.webExtensionAddonConnect) {
-      // The addonActor form is related to a WebExtensionParentActor instance,
+      // The addonTargetActor form is related to a WebExtensionParentActor instance,
       // which isn't a target actor on its own, it is an actor living in the parent
       // process with access to the addon metadata, it can control the addon (e.g.
       // reloading it) and listen to the AddonManager events related to the lifecycle of
       // the addon (e.g. when the addon is disabled or uninstalled).
       // To retrieve the target actor instance, we call its "connect" method, (which
       // fetches the target actor form from a WebExtensionChildActor instance).
       const {form} = await this._client.request({
         to: this._form.actor, type: "connect",
--- a/devtools/client/framework/toolbox-process-window.js
+++ b/devtools/client/framework/toolbox-process-window.js
@@ -77,19 +77,19 @@ var connect = async function() {
   });
   gClient = new DebuggerClient(transport);
   appendStatusMessage("Start protocol client for connection");
   await gClient.connect();
 
   appendStatusMessage("Get root form for toolbox");
   if (addonID) {
     const { addons } = await gClient.listAddons();
-    const addonActor = addons.filter(addon => addon.id === addonID).pop();
-    const isBrowsingContext = addonActor.isWebExtension;
-    await openToolbox({form: addonActor, chrome: true, isBrowsingContext});
+    const addonTargetActor = addons.filter(addon => addon.id === addonID).pop();
+    const isBrowsingContext = addonTargetActor.isWebExtension;
+    await openToolbox({form: addonTargetActor, chrome: true, isBrowsingContext});
   } else {
     const response = await gClient.getProcess();
     await openToolbox({form: response.form, chrome: true});
   }
 };
 
 // Certain options should be toggled since we can assume chrome debugging here
 function setPrefDefaults() {
--- a/devtools/docs/backend/actor-hierarchy.md
+++ b/devtools/docs/backend/actor-hierarchy.md
@@ -90,18 +90,18 @@ RootActor (root.js)
    |   Returned by "getProcess" request without any argument.
    |
    |-- ContentProcessTargetActor (content-process.js)
    |   Targets all resources in a content process of Firefox (chrome sandboxes,
    |   frame scripts, documents, etc.)
    |   Returned by "getProcess" request with a id argument, matching the
    |   targeted process.
    |
-   \-- BrowserAddonActor (addon.js)
-       Targets the javascript of add-ons.
+   \-- AddonTargetActor (addon.js)
+       Targets a legacy (non-WebExtension) add-on.
        Returned by "listAddons" request.
 ```
 
 ## Target Actors
 
 Those are the actors exposed by the root actors which are meant to track the
 lifetime of a given target: tab, process, add-on, or worker. It also allows to
 fetch the tab-scoped actors connected to this target, which are actors like
--- a/devtools/server/actors/addon/addons.js
+++ b/devtools/server/actors/addon/addons.js
@@ -22,17 +22,17 @@ const AddonsActor = protocol.ActorClassW
       addonFile = new FileUtils.File(addonPath);
       addon = await AddonManager.installTemporaryAddon(addonFile);
     } catch (error) {
       throw new Error(`Could not install add-on at '${addonPath}': ${error}`);
     }
 
     // TODO: once the add-on actor has been refactored to use
     // protocol.js, we could return it directly.
-    // return new BrowserAddonActor(this.conn, addon);
+    // return new AddonTargetActor(this.conn, addon);
 
     // Return a pseudo add-on object that a calling client can work
     // with. Provide a flag that the client can use to detect when it
     // gets upgraded to a real actor object.
     return { id: addon.id, actor: false };
   },
 });
 
--- a/devtools/server/actors/addon/console.js
+++ b/devtools/server/actors/addon/console.js
@@ -25,17 +25,17 @@ const addonConsolePrototype = extend({},
  * console feature.
  *
  * @constructor
  * @param object addon
  *        The add-on that this console watches.
  * @param object connection
  *        The connection to the client, DebuggerServerConnection.
  * @param object parentActor
- *        The parent BrowserAddonActor actor.
+ *        The parent AddonTargetActor actor.
  */
 addonConsolePrototype.initialize = function(addon, connection, parentActor) {
   this.addon = addon;
   Actor.prototype.initialize.call(this, connection);
   WebConsoleActor.call(this, connection, parentActor);
 };
 
 update(addonConsolePrototype, {
--- a/devtools/server/actors/moz.build
+++ b/devtools/server/actors/moz.build
@@ -16,17 +16,16 @@ DIRS += [
     'webconsole',
     'worker',
 ]
 
 DevToolsModules(
     'accessibility-parent.js',
     'accessibility.js',
     'actor-registry.js',
-    'addon.js',
     'animation-type-longhand.js',
     'animation.js',
     'array-buffer.js',
     'breakpoint.js',
     'call-watcher.js',
     'canvas.js',
     'common.js',
     'css-properties.js',
--- a/devtools/server/actors/root.js
+++ b/devtools/server/actors/root.js
@@ -390,31 +390,31 @@ RootActor.prototype = {
     if (!addonList) {
       return { from: this.actorID, error: "noAddons",
                message: "This root actor has no browser addons." };
     }
 
     // Reattach the onListChanged listener now that a client requested the list.
     addonList.onListChanged = this._onAddonListChanged;
 
-    return addonList.getList().then((addonActors) => {
-      const addonActorPool = new ActorPool(this.conn);
-      for (const addonActor of addonActors) {
-        addonActorPool.addActor(addonActor);
+    return addonList.getList().then((addonTargetActors) => {
+      const addonTargetActorPool = new ActorPool(this.conn);
+      for (const addonTargetActor of addonTargetActors) {
+        addonTargetActorPool.addActor(addonTargetActor);
       }
 
-      if (this._addonActorPool) {
-        this.conn.removeActorPool(this._addonActorPool);
+      if (this._addonTargetActorPool) {
+        this.conn.removeActorPool(this._addonTargetActorPool);
       }
-      this._addonActorPool = addonActorPool;
-      this.conn.addActorPool(this._addonActorPool);
+      this._addonTargetActorPool = addonTargetActorPool;
+      this.conn.addActorPool(this._addonTargetActorPool);
 
       return {
         "from": this.actorID,
-        "addons": addonActors.map(addonActor => addonActor.form())
+        "addons": addonTargetActors.map(addonTargetActor => addonTargetActor.form())
       };
     });
   },
 
   onAddonListChanged: function() {
     this.conn.send({ from: this.actorID, type: "addonListChanged" });
     this._parameters.addonList.onListChanged = null;
   },
rename from devtools/server/actors/addon.js
rename to devtools/server/actors/targets/addon.js
--- a/devtools/server/actors/addon.js
+++ b/devtools/server/actors/targets/addon.js
@@ -1,49 +1,55 @@
 /* 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 a legacy (non-WebExtension) add-on.
+ *
+ * See devtools/docs/backend/actor-hierarchy.md for more details.
+ */
+
 var { Ci, Cu } = require("chrome");
 var Services = require("Services");
 var { ActorPool } = require("devtools/server/actors/common");
-var { TabSources } = require("./utils/TabSources");
-var makeDebugger = require("./utils/make-debugger");
+var { TabSources } = require("devtools/server/actors/utils/TabSources");
+var makeDebugger = require("devtools/server/actors/utils/make-debugger");
 var DevToolsUtils = require("devtools/shared/DevToolsUtils");
 var { assert } = DevToolsUtils;
 
 loader.lazyRequireGetter(this, "AddonThreadActor", "devtools/server/actors/thread", true);
 loader.lazyRequireGetter(this, "unwrapDebuggerObjectGlobal", "devtools/server/actors/thread", true);
 loader.lazyRequireGetter(this, "AddonConsoleActor", "devtools/server/actors/addon/console", true);
 
 loader.lazyImporter(this, "AddonManager", "resource://gre/modules/AddonManager.jsm");
 
-function BrowserAddonActor(connection, addon) {
+function AddonTargetActor(connection, addon) {
   this.conn = connection;
   this._addon = addon;
   this._contextPool = new ActorPool(this.conn);
   this.conn.addActorPool(this._contextPool);
   this.threadActor = null;
   this._global = null;
 
   this._shouldAddNewGlobalAsDebuggee = this._shouldAddNewGlobalAsDebuggee.bind(this);
 
   this.makeDebugger = makeDebugger.bind(null, {
     findDebuggees: this._findDebuggees.bind(this),
     shouldAddNewGlobalAsDebuggee: this._shouldAddNewGlobalAsDebuggee
   });
 
   AddonManager.addAddonListener(this);
 }
-exports.BrowserAddonActor = BrowserAddonActor;
+exports.AddonTargetActor = AddonTargetActor;
 
-BrowserAddonActor.prototype = {
-  actorPrefix: "addon",
+AddonTargetActor.prototype = {
+  actorPrefix: "addonTarget",
 
   get exited() {
     return !this._addon;
   },
 
   get id() {
     return this._addon.id;
   },
@@ -130,17 +136,17 @@ BrowserAddonActor.prototype = {
   onUninstalled: function BAAOnUninstalled(addon) {
     if (addon != this._addon) {
       return;
     }
 
     if (this.attached) {
       this.onDetach();
 
-      // The BrowserAddonActor is not a BrowsingContextTargetActor and it has to send
+      // The AddonTargetActor is not a BrowsingContextTargetActor and it has to send
       // "tabDetached" directly to close the devtools toolbox window.
       this.conn.send({ from: this.actorID, type: "tabDetached" });
     }
 
     this.destroy();
   },
 
   onAttach: function BAAOnAttach() {
@@ -240,14 +246,14 @@ BrowserAddonActor.prototype = {
    * Yield the current set of globals associated with this addon that should be
    * added as debuggees.
    */
   _findDebuggees: function(dbg) {
     return dbg.findAllGlobals().filter(this._shouldAddNewGlobalAsDebuggee);
   }
 };
 
-BrowserAddonActor.prototype.requestTypes = {
-  "attach": BrowserAddonActor.prototype.onAttach,
-  "detach": BrowserAddonActor.prototype.onDetach,
-  "reload": BrowserAddonActor.prototype.onReload
+AddonTargetActor.prototype.requestTypes = {
+  "attach": AddonTargetActor.prototype.onAttach,
+  "detach": AddonTargetActor.prototype.onDetach,
+  "reload": AddonTargetActor.prototype.onReload
 };
 
--- a/devtools/server/actors/targets/moz.build
+++ b/devtools/server/actors/targets/moz.build
@@ -1,15 +1,16 @@
 # -*- 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(
+    'addon.js',
     'browsing-context.js',
     'chrome-window.js',
     'content-process.js',
     'frame-proxy.js',
     'frame.js',
     'parent-process.js',
     'worker.js',
 )
--- a/devtools/server/actors/webbrowser.js
+++ b/devtools/server/actors/webbrowser.js
@@ -8,17 +8,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, "AddonTargetActor", "devtools/server/actors/targets/addon", true);
 loader.lazyRequireGetter(this, "WebExtensionParentActor", "devtools/server/actors/addon/webextension-parent", 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.
@@ -696,17 +696,17 @@ function BrowserAddonList(connection) {
 BrowserAddonList.prototype.getList = async function() {
   const addons = await AddonManager.getAllAddons();
   for (const addon of addons) {
     let actor = this._actorByAddonId.get(addon.id);
     if (!actor) {
       if (addon.isWebExtension) {
         actor = new WebExtensionParentActor(this._connection, addon);
       } else {
-        actor = new BrowserAddonActor(this._connection, addon);
+        actor = new AddonTargetActor(this._connection, addon);
       }
 
       this._actorByAddonId.set(addon.id, actor);
     }
   }
 
   return Array.from(this._actorByAddonId, ([_, actor]) => actor);
 };
--- a/devtools/server/main.js
+++ b/devtools/server/main.js
@@ -535,17 +535,17 @@ var DebuggerServer = {
     this.registerModule("devtools/server/actors/accessibility", {
       prefix: "accessibility",
       constructor: "AccessibilityActor",
       type: { tab: true }
     });
   },
 
   /**
-   * Passes a set of options to the BrowserAddonActors for the given ID.
+   * Passes a set of options to the AddonTargetActors for the given ID.
    *
    * @param id string
    *        The ID of the add-on to pass the options to
    * @param options object
    *        The options.
    * @return a promise that will be resolved when complete.
    */
   setAddonOptions(id, options) {
@@ -1666,31 +1666,31 @@ DebuggerServerConnection.prototype = {
       const prefix = "error occurred while processing '" + type;
       this.transport.send(this._unknownError(from, prefix, error));
     });
 
     this._actorResponses.set(from, responsePromise);
   },
 
   /**
-   * Passes a set of options to the BrowserAddonActors for the given ID.
+   * Passes a set of options to the AddonTargetActors for the given ID.
    *
    * @param id string
    *        The ID of the add-on to pass the options to
    * @param options object
    *        The options.
    * @return a promise that will be resolved when complete.
    */
   setAddonOptions(id, options) {
     const addonList = this.rootActor._parameters.addonList;
     if (!addonList) {
       return Promise.resolve();
     }
-    return addonList.getList().then((addonActors) => {
-      for (const actor of addonActors) {
+    return addonList.getList().then((addonTargetActors) => {
+      for (const actor of addonTargetActors) {
         if (actor.id != id) {
           continue;
         }
         actor.setOptions(options);
         return;
       }
     });
   },
--- a/devtools/server/tests/mochitest/test_webextension-addon-debugging-connect.html
+++ b/devtools/server/tests/mochitest/test_webextension-addon-debugging-connect.html
@@ -31,23 +31,23 @@ async function test_connect_addon(oopMod
 
   // Connect a DebuggerClient.
   const transport = DebuggerServer.connectPipe();
   const client = new DebuggerClient(transport);
   await client.connect();
 
   // List addons and assertions on the expected addon actor.
   const {addons} = await client.mainRoot.listAddons();
-  const addonActor = addons.filter(actor => actor.id === extension.id).pop();
-  ok(addonActor, "The expected webextension addon actor has been found");
+  const addonTargetActor = addons.filter(actor => actor.id === extension.id).pop();
+  ok(addonTargetActor, "The expected webextension addon actor has been found");
 
   // Connect to the target addon actor and wait for the updated list of frames.
   const waitFramesUpdated = waitForFramesUpdated({client});
   const addonTarget = await TargetFactory.forRemoteTab({
-    form: addonActor,
+    form: addonTargetActor,
     client,
     chrome: true,
     isBrowsingContext: true,
   });
   is(addonTarget.form.isOOP, oopMode,
      "Got the expected oop mode in the webextension actor form");
   const frames = await waitFramesUpdated;
   const backgroundPageFrame = frames.filter((frame) => {
--- a/devtools/server/tests/mochitest/webextension-helpers.js
+++ b/devtools/server/tests/mochitest/webextension-helpers.js
@@ -94,44 +94,44 @@ function collectFrameUpdates({client}, m
 
 async function attachAddon(addonId) {
   const transport = DebuggerServer.connectPipe();
   const client = new DebuggerClient(transport);
 
   await client.connect();
 
   const {addons} = await client.mainRoot.listAddons();
-  const addonActor = addons.filter(actor => actor.id === addonId).pop();
+  const addonTargetActor = addons.filter(actor => actor.id === addonId).pop();
 
-  if (!addonActor) {
+  if (!addonTargetActor) {
     client.close();
     throw new Error(`No WebExtension Actor found for ${addonId}`);
   }
 
   const addonTarget = await TargetFactory.forRemoteTab({
-    form: addonActor,
+    form: addonTargetActor,
     client,
     chrome: true,
     isBrowsingContext: true,
   });
 
   return addonTarget;
 }
 
 async function reloadAddon({client}, addonId) {
   const {addons} = await client.mainRoot.listAddons();
-  const addonActor = addons.filter(actor => actor.id === addonId).pop();
+  const addonTargetActor = addons.filter(actor => actor.id === addonId).pop();
 
-  if (!addonActor) {
+  if (!addonTargetActor) {
     client.close();
     throw new Error(`No WebExtension Actor found for ${addonId}`);
   }
 
   await client.request({
-    to: addonActor.actor,
+    to: addonTargetActor.actor,
     type: "reload",
   });
 }
 
 // Test helpers related to the AddonManager.
 
 function generateWebExtensionXPI(extDetails) {
   const addonFile = Extension.generateXPI(extDetails);
--- a/devtools/server/tests/unit/test_addon_reload.js
+++ b/devtools/server/tests/unit/test_addon_reload.js
@@ -31,25 +31,25 @@ function promiseWebExtensionStartup() {
     };
 
     Management.on("ready", listener);
   });
 }
 
 async function findAddonInRootList(client, addonId) {
   const result = await client.listAddons();
-  const addonActor = result.addons.filter(addon => addon.id === addonId)[0];
-  ok(addonActor, `Found add-on actor for ${addonId}`);
-  return addonActor;
+  const addonTargetActor = result.addons.filter(addon => addon.id === addonId)[0];
+  ok(addonTargetActor, `Found add-on actor for ${addonId}`);
+  return addonTargetActor;
 }
 
-async function reloadAddon(client, addonActor) {
+async function reloadAddon(client, addonTargetActor) {
   // The add-on will be re-installed after a successful reload.
   const onInstalled = promiseAddonEvent("onInstalled");
-  await client.request({to: addonActor.actor, type: "reload"});
+  await client.request({to: addonTargetActor.actor, type: "reload"});
   await onInstalled;
 }
 
 function getSupportFile(path) {
   const allowMissing = false;
   return do_get_file(path, allowMissing);
 }
 
@@ -67,35 +67,35 @@ add_task(async function testReloadExited
 
   // Install a decoy add-on.
   const addonFile2 = getSupportFile("addons/web-extension2");
   const [installedAddon2] = await Promise.all([
     AddonManager.installTemporaryAddon(addonFile2),
     promiseWebExtensionStartup(),
   ]);
 
-  const addonActor = await findAddonInRootList(client, installedAddon.id);
+  const addonTargetActor = await findAddonInRootList(client, installedAddon.id);
 
   await Promise.all([
-    reloadAddon(client, addonActor),
+    reloadAddon(client, addonTargetActor),
     promiseWebExtensionStartup(),
   ]);
 
   // Uninstall the decoy add-on, which should cause its actor to exit.
   const onUninstalled = promiseAddonEvent("onUninstalled");
   installedAddon2.uninstall();
   await onUninstalled;
 
   // Try to re-list all add-ons after a reload.
   // This was throwing an exception because of the exited actor.
   const newAddonActor = await findAddonInRootList(client, installedAddon.id);
-  equal(newAddonActor.id, addonActor.id);
+  equal(newAddonActor.id, addonTargetActor.id);
 
   // The actor id should be the same after the reload
-  equal(newAddonActor.actor, addonActor.actor);
+  equal(newAddonActor.actor, addonTargetActor.actor);
 
   const onAddonListChanged = new Promise((resolve) => {
     client.addListener("addonListChanged", function listener() {
       client.removeListener("addonListChanged", listener);
       resolve();
     });
   });
 
@@ -106,17 +106,17 @@ add_task(async function testReloadExited
     promiseWebExtensionStartup(),
   ]);
 
   // Waiting for addonListChanged unsolicited event
   await onAddonListChanged;
 
   // re-list all add-ons after an upgrade.
   const upgradedAddonActor = await findAddonInRootList(client, upgradedAddon.id);
-  equal(upgradedAddonActor.id, addonActor.id);
+  equal(upgradedAddonActor.id, addonTargetActor.id);
   // The actor id should be the same after the upgrade.
-  equal(upgradedAddonActor.actor, addonActor.actor);
+  equal(upgradedAddonActor.actor, addonTargetActor.actor);
 
   // The addon metadata has been updated.
   equal(upgradedAddonActor.name, "Test Addons Actor Upgrade");
 
   await close(client);
 });
--- a/devtools/shared/client/debugger-client.js
+++ b/devtools/shared/client/debugger-client.js
@@ -383,33 +383,33 @@ DebuggerClient.prototype = {
       workerClient = new WorkerClient(this, response);
       this.registerClient(workerClient);
       onResponse(response, workerClient);
       return [response, workerClient];
     });
   },
 
   /**
-   * Attach to an addon actor.
+   * Attach to an addon target actor.
    *
-   * @param string addonActor
+   * @param string addonTargetActor
    *        The actor ID for the addon to attach.
    * @param function onResponse
    *        Called with the response packet and a AddonClient
    *        (which will be undefined on error).
    */
-  attachAddon: function(addonActor, onResponse = noop) {
+  attachAddon: function(addonTargetActor, onResponse = noop) {
     const packet = {
-      to: addonActor,
+      to: addonTargetActor,
       type: "attach"
     };
     return this.request(packet).then(response => {
       let addonClient;
       if (!response.error) {
-        addonClient = new AddonClient(this, addonActor);
+        addonClient = new AddonClient(this, addonTargetActor);
         this.registerClient(addonClient);
         this.activeAddon = addonClient;
       }
       onResponse(response, addonClient);
       return [response, addonClient];
     });
   },