This is an automated email from the git hooks/post-receive script.
pierov pushed a commit to branch tor-browser-91.9.0esr-11.5-2 in repository tor-browser.
commit fbff9f39c5664de83eafde828505882a263d66a7 Author: Pier Angelo Vendrame pierov@torproject.org AuthorDate: Fri May 13 12:43:15 2022 +0200
fixup! Bug 27476: Implement about:torconnect captive portal within Tor Browser
Fixes for bugs found in 91.9, to keep as a fixup also in 91.10.
Bug 40918: Hide breadcrumbs on the first bootstrap
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 | 5 +++ .../torconnect/content/aboutTorConnect.js | 40 +++++++++++++++------- 2 files changed, 32 insertions(+), 13 deletions(-)
diff --git a/browser/components/torconnect/TorConnectParent.jsm b/browser/components/torconnect/TorConnectParent.jsm index 3c2a56934c145..cf3c1233dd622 100644 --- a/browser/components/torconnect/TorConnectParent.jsm +++ b/browser/components/torconnect/TorConnectParent.jsm @@ -36,7 +36,9 @@ class TorConnectParent extends JSWindowActorParent { BootstrapProgress: TorConnect.bootstrapProgress, BootstrapStatus: TorConnect.bootstrapStatus, InternetStatus: TorConnect.internetStatus, + DetectedLocation: TorConnect.detectedLocation, ShowViewLog: TorConnect.logHasWarningOrError, + HasBootsrapEverFailed: TorConnect.hasBootstrapEverFailed, QuickStartEnabled: TorSettings.quickstart.enabled, UIState: TorConnect.uiState, }; @@ -65,6 +67,8 @@ class TorConnectParent extends JSWindowActorParent { self.state.ErrorMessage = null; self.state.ErrorDetails = null; } + self.state.HasBootsrapEverFailed = + TorConnect.hasBootstrapEverFailed; break; } case TorConnectTopics.BootstrapProgress: { @@ -81,6 +85,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 8b5f7216e9ef8..6b33442c7d02b 100644 --- a/browser/components/torconnect/content/aboutTorConnect.js +++ b/browser/components/torconnect/content/aboutTorConnect.js @@ -403,12 +403,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); } @@ -499,7 +504,11 @@ class AboutTorConnect { this.setTitle(title, ""); this.showConfigureConnectionLink(description); this.setProgress("", showProgressbar, state.BootstrapProgress); - this.setBreadcrumbsStatus(...breadcrumbs); + if (state.HasBootsrapEverFailed) { + this.setBreadcrumbsStatus(...breadcrumbs); + } else { + this.hideBreadcrumbs(); + } this.hideButtons(); if (state.ShowViewLog) { this.show(this.elements.viewLogContainer); @@ -622,7 +631,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]; @@ -633,7 +642,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); @@ -650,8 +659,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; @@ -659,7 +673,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; } @@ -770,7 +784,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);