Bug 1411565 - Allow BrowserToolboxProcess to connect to specific host and port
MozReview-Commit-ID: 3tym70c4cop
--- 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();