[tbb-commits] [tor-launcher/master] Bug 23240: retrieve current bootstrap progress before showing progress bar
gk at torproject.org
gk at torproject.org
Tue Aug 29 20:31:50 UTC 2017
commit 26d284e3835ddd5b283b732278b7b5b740bace6e
Author: Kathy Brade <brade at pearlcrescent.com>
Date: Mon Aug 14 16:09:47 2017 -0400
Bug 23240: retrieve current bootstrap progress before showing progress bar
To avoid showing an incorrect progress value, keep the progress bar
hidden until after we have retrieved the current bootstrap progress value.
---
src/chrome/content/progress.js | 28 +++++++++++++++++++++++++++-
src/chrome/content/progress.xul | 5 +++--
2 files changed, 30 insertions(+), 3 deletions(-)
diff --git a/src/chrome/content/progress.js b/src/chrome/content/progress.js
index 48362e7..f7bcaff 100644
--- a/src/chrome/content/progress.js
+++ b/src/chrome/content/progress.js
@@ -1,4 +1,4 @@
-// Copyright (c) 2015, The Tor Project, Inc.
+// Copyright (c) 2017, The Tor Project, Inc.
// See LICENSE for licensing information.
//
// vim: set sw=2 sts=2 ts=8 et syntax=javascript:
@@ -81,6 +81,16 @@ function initDialog()
if (pleaseWait)
pleaseWait.removeAttribute("hidden");
}
+
+ // To avoid showing an incorrect progress value, we keep the progress bar
+ // hidden until a TorBootstrapStatus notification is received. We request
+ // the most recent bootstrap status info (which should cause such a
+ // notification to be generated) and also start a fail-safe timer to ensure
+ // that the progress bar is displayed within 2 seconds in all cases.
+ let protocolSvc = Cc["@torproject.org/torlauncher-protocol-service;1"]
+ .getService(Ci.nsISupports).wrappedJSObject;
+ protocolSvc.TorRetrieveBootstrapStatus();
+ window.setTimeout(function() { showProgressMeterIfNoError(); }, 2000);
}
@@ -158,6 +168,17 @@ function stopTorBootstrap()
}
+function showProgressMeterIfNoError()
+{
+ let meter = document.getElementById("progressMeter");
+ if (meter &&
+ !document.documentElement.hasAttribute("bootstrapErrorOccurred"))
+ {
+ meter.style.visibility = "visible";
+ }
+}
+
+
var gObserver = {
// nsIObserver implementation.
observe: function(aSubject, aTopic, aParam)
@@ -184,7 +205,10 @@ var gObserver = {
var meter = document.getElementById("progressMeter");
if (meter)
+ {
meter.value = percentComplete;
+ showProgressMeterIfNoError();
+ }
var bootstrapDidComplete = (percentComplete >= 100);
if (percentComplete >= 100)
@@ -199,6 +223,8 @@ var gObserver = {
if (s)
labelText = s;
+ document.documentElement.setAttribute("bootstrapErrorOccurred", true);
+
if (meter)
meter.setAttribute("hidden", true);
diff --git a/src/chrome/content/progress.xul b/src/chrome/content/progress.xul
index 473dab9..5b26110 100644
--- a/src/chrome/content/progress.xul
+++ b/src/chrome/content/progress.xul
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2017, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -37,7 +37,8 @@
<description id="progressDesc" />
</vbox>
</hbox>
- <progressmeter id="progressMeter" mode="determined" value="0" />
+ <progressmeter id="progressMeter" mode="determined" value="0"
+ style="visibility:hidden" />
<description id="progressPleaseWait"
hidden="true">&torprogress.pleaseWait;</description>
</vbox>
More information about the tbb-commits
mailing list