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@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);