[tor-commits] [tor-browser] 02/02: fixup! Bug 27476: Implement about:torconnect captive portal within Tor Browser

gitolite role git at cupani.torproject.org
Tue May 17 20:17:01 UTC 2022


This is an automated email from the git hooks/post-receive script.

richard pushed a commit to branch tor-browser-91.9.0esr-11.5-1
in repository tor-browser.

commit d559a9e30f1d5efe17bed733baa49cb54278461d
Author: Pier Angelo Vendrame <pierov at torproject.org>
AuthorDate: Tue May 17 16:39:47 2022 +0200

    fixup! Bug 27476: Implement about:torconnect captive portal within Tor Browser
    
    Bug 40923: Redirect to location confirmation rather than location
    detection failed when Moat reports a country code but the bootstrap
    fails anyway.
---
 browser/components/torconnect/TorConnectParent.jsm |  2 ++
 .../torconnect/content/aboutTorConnect.js          | 34 ++++++++++++++--------
 2 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/browser/components/torconnect/TorConnectParent.jsm b/browser/components/torconnect/TorConnectParent.jsm
index 3c2a56934c145..a39f7a07a0ade 100644
--- a/browser/components/torconnect/TorConnectParent.jsm
+++ b/browser/components/torconnect/TorConnectParent.jsm
@@ -36,6 +36,7 @@ class TorConnectParent extends JSWindowActorParent {
       BootstrapProgress: TorConnect.bootstrapProgress,
       BootstrapStatus: TorConnect.bootstrapStatus,
       InternetStatus: TorConnect.internetStatus,
+      DetectedLocation: TorConnect.detectedLocation,
       ShowViewLog: TorConnect.logHasWarningOrError,
       QuickStartEnabled: TorSettings.quickstart.enabled,
       UIState: TorConnect.uiState,
@@ -81,6 +82,7 @@ class TorConnectParent extends JSWindowActorParent {
             self.state.ErrorMessage = obj.message;
             self.state.ErrorDetails = obj.details;
             self.state.InternetStatus = TorConnect.internetStatus;
+            self.state.DetectedLocation = TorConnect.detectedLocation;
             self.state.ShowViewLog = true;
             break;
           }
diff --git a/browser/components/torconnect/content/aboutTorConnect.js b/browser/components/torconnect/content/aboutTorConnect.js
index 28356045525a3..bafbe7c7eeb43 100644
--- a/browser/components/torconnect/content/aboutTorConnect.js
+++ b/browser/components/torconnect/content/aboutTorConnect.js
@@ -404,12 +404,17 @@ class AboutTorConnect {
       this.transitionUIState(UIStates.ConnectionAssist, state);
     } else if (state.PreviousState === TorConnectState.AutoBootstrapping) {
       if (this.uiState.bootstrapCause === UIStates.ConnectionAssist) {
-        this.transitionUIState(
-          this.getLocation() === "automatic"
-            ? UIStates.CouldNotLocate
-            : UIStates.LocationConfirm,
-          state
-        );
+        if (this.getLocation() === "automatic") {
+          this.uiState.allowAutomaticLocation = false;
+          if (!state.DetectedLocation) {
+            this.transitionUIState(UIStates.CouldNotLocate, state);
+            return;
+          }
+          // Change the location only here, to avoid overriding any user change/
+          // insisting with the detected location
+          this.setLocation(state.DetectedLocation);
+        }
+        this.transitionUIState(UIStates.LocationConfirm, state);
       } else {
         this.transitionUIState(UIStates.FinalError, state);
       }
@@ -629,7 +634,7 @@ class AboutTorConnect {
     RPMSendQuery("torconnect:get-country-codes").then(codes => {
       if (codes && codes.length) {
         this.populateFrequentLocations(codes);
-        this.setLocationFromState();
+        this.setLocation();
       }
     });
     let firstOpt = this.elements.locationDropdownSelect.options[0];
@@ -640,7 +645,7 @@ class AboutTorConnect {
       firstOpt.value = "";
       firstOpt.textContent = TorStrings.torConnect.selectCountryRegion;
     }
-    this.setLocationFromState();
+    this.setLocation();
     this.validateLocation();
     this.show(this.elements.locationDropdownLabel);
     this.show(this.elements.locationDropdown);
@@ -657,8 +662,13 @@ class AboutTorConnect {
     return this.elements.locationDropdownSelect.options[selectedIndex].value;
   }
 
-  setLocationFromState() {
-    if (this.getLocation() === this.uiState.selectedLocation) {
+  setLocation(code) {
+    if (!code) {
+      code = this.uiState.selectedLocation;
+    } else {
+      this.uiState.selectedLocation = code;
+    }
+    if (this.getLocation() === code) {
       return;
     }
     const options = this.elements.locationDropdownSelect.options;
@@ -666,7 +676,7 @@ class AboutTorConnect {
     // the .value way to select (which would however require the label,
     // rather than the code)...
     for (let i = 0; i < options.length; i++) {
-      if (options[i].value === this.uiState.selectedLocation) {
+      if (options[i].value === code) {
         this.elements.locationDropdownSelect.selectedIndex = i;
         break;
       }
@@ -777,7 +787,7 @@ class AboutTorConnect {
     RPMAddMessageListener("torconnect:user-action", ({ data }) => {
       if (data.location) {
         this.uiState.selectedLocation = data.location;
-        this.setLocationFromState();
+        this.setLocation();
       }
       if (data.uiState !== undefined) {
         this.transitionUIState(data.uiState, data.connState);

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the tor-commits mailing list