Bug 1411565 - Allow BrowserToolboxProcess to connect to specific host and port draft
authorJulian Descottes <jdescottes@mozilla.com>
Mon, 20 Nov 2017 19:16:14 +0100
changeset 700672 1c231c32cd991f8f3ae73959c75a7fa8f0d6fb72
parent 700671 4025fe9641d662d92be76974a6802d22f1a0c4d2
child 700673 4acf9848a445a41a50e015a847d570ff3481c0dc
push id89931
push userjdescottes@mozilla.com
push dateMon, 20 Nov 2017 18:25:22 +0000
bugs1411565
milestone59.0a1
Bug 1411565 - Allow BrowserToolboxProcess to connect to specific host and port MozReview-Commit-ID: 3tym70c4cop
devtools/client/framework/ToolboxProcess.jsm
devtools/client/framework/toolbox-process-window.js
--- a/devtools/client/framework/ToolboxProcess.jsm
+++ b/devtools/client/framework/ToolboxProcess.jsm
@@ -260,16 +260,20 @@ BrowserToolboxProcess.prototype = {
       // Disable safe mode for the new process in case this was opened via the
       // keyboard shortcut.
       MOZ_DISABLE_SAFE_MODE_KEY: "1",
       MOZ_BROWSER_TOOLBOX_PORT: String(this.port),
     };
     if (this._options.addonID) {
       environment.MOZ_BROWSER_TOOLBOX_ADDONID = String(this._options.addonID);
     }
+    if (this._options.host && this._options.port) {
+      environment.MOZ_BROWSER_TOOLBOX_HOST = String(this._options.host);
+      environment.MOZ_BROWSER_TOOLBOX_PORT = String(this._options.port);
+    }
 
     // During local development, incremental builds can trigger the main process
     // to clear its startup cache with the "flag file" .purgecaches, but this
     // file is removed during app startup time, so we aren't able to know if it
     // was present in order to also clear the child profile's startup cache as
     // well.
     //
     // As an approximation of "isLocalBuild", check for an unofficial build.
--- a/devtools/client/framework/toolbox-process-window.js
+++ b/devtools/client/framework/toolbox-process-window.js
@@ -32,27 +32,35 @@ var gToolbox, gClient;
 
 var connect = Task.async(function* () {
   window.removeEventListener("load", connect);
 
   // Initiate the connection
   let env = Components.classes["@mozilla.org/process/environment;1"]
     .getService(Components.interfaces.nsIEnvironment);
   let port = env.get("MOZ_BROWSER_TOOLBOX_PORT");
+  let host = env.get("MOZ_BROWSER_TOOLBOX_HOST");
+
   let addonID = env.get("MOZ_BROWSER_TOOLBOX_ADDONID");
 
   // A port needs to be passed in from the environment, for instance:
   //    MOZ_BROWSER_TOOLBOX_PORT=6080 ./mach run -chrome \
   //      chrome://devtools/content/framework/toolbox-process-window.xul
   if (!port) {
     throw new Error("Must pass a port in an env variable with MOZ_BROWSER_TOOLBOX_PORT");
   }
 
+  // Host is optional and only used for remote debugging, otherwise we can default to
+  // the value stored in preferences.
+  if (!host) {
+    host = Prefs.chromeDebuggingHost;
+  }
+
   let transport = yield DebuggerClient.socketConnect({
-    host: Prefs.chromeDebuggingHost,
+    host,
     port,
     webSocket: Prefs.chromeDebuggingWebSocket,
   });
   gClient = new DebuggerClient(transport);
   yield gClient.connect();
 
   if (addonID) {
     let { addons } = yield gClient.listAddons();