[tor-bugs] #23240 [Applications/Tor Launcher]: do not show progress bar at zero when bootstrap progress is greater than zero

Tor Bug Tracker & Wiki blackhole at torproject.org
Tue Aug 15 02:04:09 UTC 2017


#23240: do not show progress bar at zero when bootstrap progress is greater than
zero
---------------------------------------+------------------------------
 Reporter:  mcs                        |          Owner:  brade
     Type:  defect                     |         Status:  needs_review
 Priority:  Medium                     |      Milestone:
Component:  Applications/Tor Launcher  |        Version:
 Severity:  Normal                     |     Resolution:
 Keywords:  TorBrowserTeam201708R      |  Actual Points:
Parent ID:                             |         Points:
 Reviewer:                             |        Sponsor:  Sponsor4
---------------------------------------+------------------------------
Changes (by dcf):

 * cc: dcf (added)


Comment:

 comment:1 looks like an effective workaround, but I suspect it can be
 addressed in a more direct way. I think the root of the problem is that
 progressMeter.value is reset to 0 every time the progress bar dialog is
 shown. I added some logging:
 {{{
 --- a/src/chrome/content/progress.js
 +++ b/src/chrome/content/progress.js
 @@ -51,6 +51,10 @@ function initDialog()
    }
    catch (e) {}

 +  var meter = document.getElementById("progressMeter");
 +  if (meter)
 +    TorLauncherLogger.log(6, "initDialog meter.value " + meter.value);
 +
    var isBrowserStartup = false;
    if (window.arguments)
    {
 @@ -181,9 +185,12 @@ var gObserver = {
        var labelText =
                  TorLauncherUtil.getLocalizedBootstrapStatus(statusObj,
 "TAG");
        var percentComplete = (statusObj.PROGRESS) ? statusObj.PROGRESS :
 0;
 +      TorLauncherLogger.log(6, "statusObj.PROGRESS " +
 statusObj.PROGRESS);

        var meter = document.getElementById("progressMeter");
 +      if (meter)
 +        TorLauncherLogger.log(6, "meter.value " + meter.value + " -> " +
 percentComplete);
        if (meter)
          meter.value = percentComplete;

        var bootstrapDidComplete = (percentComplete >= 100);
 }}}
 I hacked Browser/start-tor-browser to add `--jsconsole` to the command
 line so I could see the log output. Then I did this:
  1. `./start-tor-browser.desktop`
  2. Click "Open Settings" quickly before the bootstrap finishes.
  3. Wait a few seconds on the initial screen.
  4. Click "Connect" to make the progress bar reappear and let it finish
 bootstrapping.
 Step 4 of the above process shows the problem from #22266: even though the
 bootstrapping is really at ~90%, the progress bar goes back to 0% and then
 straight to 100% the second time the progress dialog is shown.

 Here is the log output:
 {{{
 [08-15 01:41:13] TorLauncher -: initDialog meter.value 0
 Tor NOTICE: Bootstrapped 85%: Finishing handshake with first hop
 [08-15 01:41:14] TorLauncher -: statusObj.PROGRESS 85
 [08-15 01:41:14] TorLauncher -: meter.value 0 -> 85
 Tor NOTICE: Bootstrapped 90%: Establishing a Tor circuit
 [08-15 01:41:14] TorLauncher -: statusObj.PROGRESS 90
 [08-15 01:41:14] TorLauncher -: meter.value 85 -> 90

   (Here is where I clicked "Open Settings", waited a few seconds, then
 clicked "Connect")

 [08-15 01:41:20] TorLauncher -: initDialog meter.value 0
 Tor NOTICE: Bootstrapped 100%: Done
 [08-15 01:41:21] TorLauncher -: statusObj.PROGRESS 100
 [08-15 01:41:21] TorLauncher -: meter.value 0 -> 100
 }}}
 Notice that when initDialog is called the second time, meter.value is
 reset to 0, rather than remembering its previous value of 90. Maybe this
 is because [https://gitweb.torproject.org/tor-
 launcher.git/tree/src/chrome/content/network-settings.js?h=0.2.12.3#n1252
 openProgressDialog] creates a brand new dialog from scratch? Perhaps
 instead, it could keep the same dialog in memory, and show or hide it as
 appropriate, so that meter.value retains its state.

 I ''don't'' think the usability problem from #22266 is an initial jump
 from 0% to 80%. That's normal and expected with an up-to-date consensus
 cache. Rather, the usability problem is when you cancel an in-progress
 bootstrapping at 60%, and when you resume, the meter goes down to 0% then
 back up to 65%. The changes in comment:1 make the bar invisible when it
 would misleadingly be set at 0%, but it would be better if the bar
 remembered its state and didn't go back to 0% at all.

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/23240#comment:2>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list