--- a/devtools/client/framework/toolbox-process-window.js
+++ b/devtools/client/framework/toolbox-process-window.js
@@ -11,119 +11,121 @@ var { loader, require } = ChromeUtils.im
loader.require("devtools/client/framework/devtools-browser");
var { gDevTools } = require("devtools/client/framework/devtools");
var { TargetFactory } = require("devtools/client/framework/target");
var { Toolbox } = require("devtools/client/framework/toolbox");
var Services = require("Services");
var { DebuggerClient } = require("devtools/shared/client/debugger-client");
var { PrefsHelper } = require("devtools/client/shared/prefs");
-var { Task } = require("devtools/shared/task");
/**
* Shortcuts for accessing various debugger preferences.
*/
var Prefs = new PrefsHelper("devtools.debugger", {
chromeDebuggingHost: ["Char", "chrome-debugging-host"],
chromeDebuggingWebSocket: ["Bool", "chrome-debugging-websocket"],
});
var gToolbox, gClient;
-var connect = Task.async(function* () {
+var connect = 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 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");
}
- let transport = yield DebuggerClient.socketConnect({
+ let transport = await DebuggerClient.socketConnect({
host: Prefs.chromeDebuggingHost,
port,
webSocket: Prefs.chromeDebuggingWebSocket,
});
gClient = new DebuggerClient(transport);
- yield gClient.connect();
+ await gClient.connect();
if (addonID) {
- let { addons } = yield gClient.listAddons();
+ let { addons } = await gClient.listAddons();
let addonActor = addons.filter(addon => addon.id === addonID).pop();
let isTabActor = addonActor.isWebExtension;
openToolbox({form: addonActor, chrome: true, isTabActor});
} else {
- let response = yield gClient.getProcess();
+ let response = await gClient.getProcess();
openToolbox({form: response.form, chrome: true});
}
-});
+};
// Certain options should be toggled since we can assume chrome debugging here
function setPrefDefaults() {
Services.prefs.setBoolPref("devtools.inspector.showUserAgentStyles", true);
Services.prefs.setBoolPref("devtools.performance.ui.show-platform-data", true);
Services.prefs.setBoolPref("devtools.inspector.showAllAnonymousContent", true);
Services.prefs.setBoolPref("browser.dom.window.dump.enabled", true);
Services.prefs.setBoolPref("devtools.command-button-noautohide.enabled", true);
Services.prefs.setBoolPref("devtools.scratchpad.enabled", true);
// Bug 1225160 - Using source maps with browser debugging can lead to a crash
Services.prefs.setBoolPref("devtools.debugger.source-maps-enabled", false);
Services.prefs.setBoolPref("devtools.debugger.new-debugger-frontend", true);
Services.prefs.setBoolPref("devtools.webconsole.new-frontend-enabled", false);
Services.prefs.setBoolPref("devtools.preference.new-panel-enabled", false);
Services.prefs.setBoolPref("layout.css.emulate-moz-box-with-flex", false);
}
-window.addEventListener("load", function () {
+window.addEventListener("load", async function () {
let cmdClose = document.getElementById("toolbox-cmd-close");
cmdClose.addEventListener("command", onCloseCommand);
setPrefDefaults();
- connect().catch(e => {
+ try {
+ await connect();
+ } catch (e) {
let errorMessageContainer = document.getElementById("error-message-container");
let errorMessage = document.getElementById("error-message");
errorMessage.value = e.message || e;
errorMessageContainer.hidden = false;
console.error(e);
- });
+ }
});
function onCloseCommand(event) {
window.close();
}
-function openToolbox({ form, chrome, isTabActor }) {
+async function openToolbox({ form, chrome, isTabActor }) {
let options = {
form: form,
client: gClient,
chrome: chrome,
isTabActor: isTabActor
};
- TargetFactory.forRemoteTab(options).then(target => {
- let frame = document.getElementById("toolbox-iframe");
+ let target = await TargetFactory.forRemoteTab(options);
+ let frame = document.getElementById("toolbox-iframe");
- // Remember the last panel that was used inside of this profile.
- // But if we are testing, then it should always open the debugger panel.
- let selectedTool =
- Services.prefs.getCharPref("devtools.browsertoolbox.panel",
- Services.prefs.getCharPref("devtools.toolbox.selectedTool",
- "jsdebugger"));
+ // Remember the last panel that was used inside of this profile.
+ // But if we are testing, then it should always open the debugger panel.
+ let selectedTool =
+ Services.prefs.getCharPref("devtools.browsertoolbox.panel",
+ Services.prefs.getCharPref("devtools.toolbox.selectedTool",
+ "jsdebugger"));
- options = { customIframe: frame };
- gDevTools.showToolbox(target,
- selectedTool,
- Toolbox.HostType.CUSTOM,
- options)
- .then(onNewToolbox);
- });
+ options = { customIframe: frame };
+ let toolbox = await gDevTools.showToolbox(
+ target,
+ selectedTool,
+ Toolbox.HostType.CUSTOM,
+ options
+ );
+ onNewToolbox(toolbox);
}
function onNewToolbox(toolbox) {
gToolbox = toolbox;
bindToolboxHandlers();
raise();
let env = Components.classes["@mozilla.org/process/environment;1"]
.getService(Components.interfaces.nsIEnvironment);
@@ -142,29 +144,28 @@ function onNewToolbox(toolbox) {
function evaluateTestScript(script, toolbox) {
let sandbox = Cu.Sandbox(window);
sandbox.window = window;
sandbox.toolbox = toolbox;
sandbox.ChromeUtils = ChromeUtils;
Cu.evalInSandbox(script, sandbox);
}
-function bindToolboxHandlers() {
+async function bindToolboxHandlers() {
gToolbox.once("destroyed", quitApp);
window.addEventListener("unload", onUnload);
if (Services.appinfo.OS == "Darwin") {
// Badge the dock icon to differentiate this process from the main application
// process.
updateBadgeText(false);
// Once the debugger panel opens listen for thread pause / resume.
- gToolbox.getPanelWhenReady("jsdebugger").then(panel => {
- setupThreadListeners(panel);
- });
+ let panel = await gToolbox.getPanelWhenReady("jsdebugger");
+ setupThreadListeners(panel);
}
}
function setupThreadListeners(panel) {
updateBadgeText(panel.isPaused());
let onPaused = updateBadgeText.bind(null, true);
let onResumed = updateBadgeText.bind(null, false);