[tor-commits] [tor-launcher/master] Bug #9675: Provide feedback mechanism for clock-skew and other bad problems

brade at torproject.org brade at torproject.org
Fri Sep 13 14:41:18 UTC 2013


commit 8a64ec3b07e2bfe82ab47401993f52f4ec5b0163
Author: Kathy Brade <brade at pearlcrescent.com>
Date:   Fri Sep 13 10:38:22 2013 -0400

    Bug #9675: Provide feedback mechanism for clock-skew and other bad problems
    
    If a tor error or warning message is received by Tor Launcher, add a
    caution icon to the "Open Settings" and "Copy Tor Log to Clipboard" buttons.
---
 src/chrome/content/network-settings.js |   35 ++++++++++++++++++++------------
 src/chrome/content/progress.js         |   11 ++++++++++
 src/chrome/skin/network-settings.css   |    9 ++++++++
 src/chrome/skin/progress.css           |    9 ++++++++
 src/chrome/skin/warning.png            |  Bin 0 -> 2190 bytes
 5 files changed, 51 insertions(+), 13 deletions(-)

diff --git a/src/chrome/content/network-settings.js b/src/chrome/content/network-settings.js
index c9e43ce..573393d 100644
--- a/src/chrome/content/network-settings.js
+++ b/src/chrome/content/network-settings.js
@@ -22,7 +22,7 @@ const kTorProcessReadyTopic = "TorProcessIsReady";
 const kTorProcessExitedTopic = "TorProcessExited";
 const kTorProcessDidNotStartTopic = "TorProcessDidNotStart";
 const kTorBootstrapErrorTopic = "TorBootstrapError";
-const kTorLogHasWarnOrErr = "TorLogHasWarnOrErr";
+const kTorLogHasWarnOrErrTopic = "TorLogHasWarnOrErr";
 
 const kWizardProxyRadioGroup = "proxyRadioGroup";
 const kWizardFirewallRadioGroup = "firewallRadioGroup";
@@ -120,7 +120,7 @@ function initDialog()
     if (gTorProcessService.TorBootstrapErrorOccurred ||
         gProtocolSvc.TorLogHasWarnOrErr)
     {
-      wizardShowCopyLogButton();
+      showCopyLogButton(true);
     }
 
     // Use "Connect" as the finish button label (on the last wizard page)..
@@ -143,7 +143,7 @@ function initDialog()
   }
 
   gObsService.addObserver(gObserver, kTorBootstrapErrorTopic, false);
-  gObsService.addObserver(gObserver, kTorLogHasWarnOrErr, false);
+  gObsService.addObserver(gObserver, kTorLogHasWarnOrErrTopic, false);
 
   if (TorLauncherUtil.shouldStartAndOwnTor &&
       !gTorProcessService.TorIsProcessReady)
@@ -216,9 +216,10 @@ function showWizardNavButtons(aShow)
 var gObserver = {
   observe: function(aSubject, aTopic, aData)
   {
-    if ((kTorBootstrapErrorTopic == aTopic) || (kTorLogHasWarnOrErr == aTopic))
+    if ((kTorBootstrapErrorTopic == aTopic) ||
+         (kTorLogHasWarnOrErrTopic == aTopic))
     {
-      wizardShowCopyLogButton();
+      showCopyLogButton(true);
       return;
     }
 
@@ -296,20 +297,28 @@ function showPanel(aPanelID)
 
 function showErrorPanel()
 {
-    showPanel("errorPanel");
-    wizardShowCopyLogButton();
+  showPanel("errorPanel");
+  var haveErrorOrWarning = (gTorProcessService.TorBootstrapErrorOccurred ||
+                            gProtocolSvc.TorLogHasWarnOrErr)
+  showCopyLogButton(haveErrorOrWarning);
 }
 
 
-function wizardShowCopyLogButton()
+function showCopyLogButton(aHaveErrorOrWarning)
 {
-  if (getWizard())
+  var copyLogBtn = document.documentElement.getButton("extra2");
+  if (copyLogBtn)
   {
-    var copyLogBtn = document.documentElement.getButton("extra2");
-    if (copyLogBtn)
-    {
+    if (getWizard())
       copyLogBtn.setAttribute("wizardCanCopyLog", true);
-      copyLogBtn.removeAttribute("hidden");
+
+    copyLogBtn.removeAttribute("hidden");
+
+    if (aHaveErrorOrWarning)
+    {
+      var clz = copyLogBtn.getAttribute("class");
+      copyLogBtn.setAttribute("class", clz ? clz + " torWarning"
+                                           : "torWarning");
     }
   }
 }
diff --git a/src/chrome/content/progress.js b/src/chrome/content/progress.js
index 3a40dbf..6a826e0 100644
--- a/src/chrome/content/progress.js
+++ b/src/chrome/content/progress.js
@@ -9,6 +9,7 @@ const Cu = Components.utils;
 
 const kTorProcessExitedTopic = "TorProcessExited";
 const kBootstrapStatusTopic = "TorBootstrapStatus";
+const kTorLogHasWarnOrErrTopic = "TorLogHasWarnOrErr";
 
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "TorLauncherUtil",
@@ -26,6 +27,7 @@ function initDialog()
                   .getService(Ci.nsIObserverService);
     gObsSvc.addObserver(gObserver, kTorProcessExitedTopic, false);
     gObsSvc.addObserver(gObserver, kBootstrapStatusTopic, false);
+    gObsSvc.addObserver(gObserver, kTorLogHasWarnOrErrTopic, false);
   }
   catch (e) {}
 
@@ -68,6 +70,7 @@ function cleanup()
   {
     gObsSvc.removeObserver(gObserver, kTorProcessExitedTopic);
     gObsSvc.removeObserver(gObserver, kBootstrapStatusTopic);
+    gObsSvc.removeObserver(gObserver, kTorLogHasWarnOrErrTopic);
   }
 }
 
@@ -155,5 +158,13 @@ var gObserver = {
       if (labelText && desc)
         desc.textContent = labelText;
     }
+    else if (kTorLogHasWarnOrErrTopic == aTopic)
+    {
+      var extra2Btn = document.documentElement.getButton("extra2");
+      var clz = extra2Btn.getAttribute("class");
+      extra2Btn.setAttribute("class", clz ? clz + " torWarning" : "torWarning");
+
+      // TODO: show error / warning message in this dialog?
+    }
   },
 };
diff --git a/src/chrome/skin/network-settings.css b/src/chrome/skin/network-settings.css
index 4c51e4a..1d92151 100644
--- a/src/chrome/skin/network-settings.css
+++ b/src/chrome/skin/network-settings.css
@@ -128,3 +128,12 @@ dialog .help {
 {
   font-size: 120%;
 }
+
+.torWarning {
+  list-style-image: url("chrome://torlauncher/skin/warning.png");
+}
+
+/* Ensure that our caution icon is always shown on GTK-based platforms. */
+.torWarning .button-icon {
+  display: inline !important;
+}
diff --git a/src/chrome/skin/progress.css b/src/chrome/skin/progress.css
index 671870f..711a679 100644
--- a/src/chrome/skin/progress.css
+++ b/src/chrome/skin/progress.css
@@ -33,3 +33,12 @@ dialog {
 #progressMeter {
   margin-bottom: 16px;
 }
+
+.torWarning {
+  list-style-image: url("chrome://torlauncher/skin/warning.png");
+}
+
+/* Ensure that our caution icon is always shown on GTK-based platforms. */
+.torWarning .button-icon {
+  display: inline !important;
+}
diff --git a/src/chrome/skin/warning.png b/src/chrome/skin/warning.png
new file mode 100644
index 0000000..da90d1a
Binary files /dev/null and b/src/chrome/skin/warning.png differ



More information about the tor-commits mailing list