Bug 1440670 - Make the timeout before showing the connection status in the Browser Toolbox longer and hide it whenever the connection is established. r?jryans draft
authorMike de Boer <mdeboer@mozilla.com>
Fri, 23 Feb 2018 15:39:50 +0100
changeset 758988 925c9c396f5b84e24d5af2009fba1d3cec0f9b07
parent 758987 aa4d31c6f01d91aa693aa5be3a9674d0611255ee
push id100242
push usermdeboer@mozilla.com
push dateFri, 23 Feb 2018 14:40:46 +0000
reviewersjryans
bugs1440670
milestone60.0a1
Bug 1440670 - Make the timeout before showing the connection status in the Browser Toolbox longer and hide it whenever the connection is established. r?jryans MozReview-Commit-ID: BeH95CstC5I
devtools/client/framework/toolbox-process-window.js
--- a/devtools/client/framework/toolbox-process-window.js
+++ b/devtools/client/framework/toolbox-process-window.js
@@ -12,17 +12,20 @@ loader.require("devtools/client/framewor
 
 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");
 
-const STATUS_REVEAL_TIME = 5000;
+// Timeout to wait before we assume that a connect() timed out without an error.
+// In milliseconds. (With the Debugger pane open, this has been reported to last
+// more than 10 seconds!)
+const STATUS_REVEAL_TIME = 15000;
 
 /**
  * Shortcuts for accessing various debugger preferences.
  */
 var Prefs = new PrefsHelper("devtools.debugger", {
   chromeDebuggingHost: ["Char", "chrome-debugging-host"],
   chromeDebuggingWebSocket: ["Bool", "chrome-debugging-websocket"],
 });
@@ -32,19 +35,27 @@ var gToolbox, gClient;
 function appendStatusMessage(msg) {
   let statusMessage = document.getElementById("status-message");
   statusMessage.value += msg + "\n";
   if (msg.stack) {
     statusMessage.value += msg.stack + "\n";
   }
 }
 
-function revealStatusMessage() {
+function toggleStatusMessage(visible = true) {
   let statusMessageContainer = document.getElementById("status-message-container");
-  statusMessageContainer.hidden = false;
+  statusMessageContainer.hidden = !visible;
+}
+
+function revealStatusMessage() {
+  toggleStatusMessage(true);
+}
+
+function hideStatusMessage() {
+  toggleStatusMessage(false);
 }
 
 var connect = async function () {
   // 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");
@@ -94,24 +105,24 @@ function setPrefDefaults() {
   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", async function () {
   let cmdClose = document.getElementById("toolbox-cmd-close");
   cmdClose.addEventListener("command", onCloseCommand);
   setPrefDefaults();
-  // Reveal status message if connecting is slow or if an error occurs
-  let delayedStatusReveal = setTimeout(() => {
-    revealStatusMessage();
-  }, STATUS_REVEAL_TIME);
+  // Reveal status message if connecting is slow or if an error occurs.
+  let delayedStatusReveal = setTimeout(revealStatusMessage, STATUS_REVEAL_TIME);
   try {
     await connect();
     clearTimeout(delayedStatusReveal);
+    hideStatusMessage();
   } catch (e) {
+    clearTimeout(delayedStatusReveal);
     appendStatusMessage(e);
     revealStatusMessage();
     console.error(e);
   }
 }, { once: true });
 
 function onCloseCommand(event) {
   window.close();