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

gitolite role git at cupani.torproject.org
Tue May 3 22:40:24 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 ef9c0a301b640370f857681ac9c116e94b65b114
Author: Pier Angelo Vendrame <pierov at torproject.org>
AuthorDate: Mon Apr 11 16:12:49 2022 +0200

    fixup! squash! Bug 27476: Implement about:torconnect captive portal within Tor Browser
    
    Bug 40891: started working on the You Are Offline panel (WIP).
---
 browser/components/torconnect/TorConnectParent.jsm | 12 ++--
 .../torconnect/content/aboutTorConnect.css         | 14 ++--
 .../torconnect/content/aboutTorConnect.js          | 76 +++++++++++++++-------
 .../torconnect/content/aboutTorConnect.xhtml       |  4 +-
 4 files changed, 73 insertions(+), 33 deletions(-)

diff --git a/browser/components/torconnect/TorConnectParent.jsm b/browser/components/torconnect/TorConnectParent.jsm
index 479446898e115..f39b31a974a95 100644
--- a/browser/components/torconnect/TorConnectParent.jsm
+++ b/browser/components/torconnect/TorConnectParent.jsm
@@ -5,6 +5,7 @@ var EXPORTED_SYMBOLS = ["TorConnectParent"];
 const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
 const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
 const {
+  InternetStatus,
   TorConnect,
   TorConnectTopics,
   TorConnectState,
@@ -27,12 +28,13 @@ class TorConnectParent extends JSWindowActorParent {
 
     this.state = {
       State: TorConnect.state,
-      DetectedCensorshipLevel: TorConnect.detectedCensorshipLevel,
       StateChanged: false,
       ErrorMessage: TorConnect.errorMessage,
       ErrorDetails: TorConnect.errorDetails,
       BootstrapProgress: TorConnect.bootstrapProgress,
       BootstrapStatus: TorConnect.bootstrapStatus,
+      DetectedCensorshipLevel: TorConnect.detectedCensorshipLevel,
+      InternetStatus: TorConnect.internetStatus,
       ShowViewLog: TorConnect.logHasWarningOrError,
       QuickStartEnabled: TorSettings.quickstart.enabled,
       CountryCodes: TorConnect.countryCodes,
@@ -77,6 +79,7 @@ class TorConnectParent extends JSWindowActorParent {
             self.state.ErrorMessage = obj.message;
             self.state.ErrorDetails = obj.details;
             self.state.DetectedCensorshipLevel = obj.censorshipLevel;
+            self.state.InternetStatus = TorConnect.internetStatus;
 
             // With severe censorshp, we offer user list of countries to try
             if (
@@ -142,9 +145,6 @@ class TorConnectParent extends JSWindowActorParent {
       case "torconnect:open-tor-preferences":
         TorConnect.openTorPreferences();
         break;
-      case "torconnect:view-tor-logs":
-        TorConnect.viewTorLogs();
-        break;
       case "torconnect:cancel-bootstrap":
         TorConnect.cancelBootstrap();
         break;
@@ -154,6 +154,9 @@ class TorConnectParent extends JSWindowActorParent {
       case "torconnect:begin-autobootstrap":
         TorConnect.beginAutoBootstrap(message.data);
         break;
+      case "torconnect:view-tor-logs":
+        TorConnect.viewTorLogs();
+        break;
       case "torconnect:restart":
         Services.startup.quit(
           Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit
@@ -169,6 +172,7 @@ class TorConnectParent extends JSWindowActorParent {
           TorStrings,
           TorConnectState,
           TorCensorshipLevel,
+          InternetStatus,
           Direction: Services.locale.isAppLocaleRTL ? "rtl" : "ltr",
           State: this.state,
           CountryNames: TorConnect.countryNames,
diff --git a/browser/components/torconnect/content/aboutTorConnect.css b/browser/components/torconnect/content/aboutTorConnect.css
index f2d8089a96326..926ff4927505a 100644
--- a/browser/components/torconnect/content/aboutTorConnect.css
+++ b/browser/components/torconnect/content/aboutTorConnect.css
@@ -69,27 +69,31 @@
   margin-top: -1px;
 }
 
-#breadcrumbs .active {
+.breadcrumb-item.active {
   color: var(--in-content-accent-color-active);
 }
 
-#breadcrumbs .disabled, #breadcrumbs .disabled:hover {
+.breadcrumb-item.disabled, .breadcrumb-item.disabled:hover {
   color: var(--green-90-a40);
   cursor: default;
 }
 
-#breadcrumbs .error {
+.breadcrumb-item.error {
   color: var(--in-content-danger-button-background);
 }
 
-#breadcrumbs .error:hover {
+.breadcrumb-item.error:hover {
   color: var(--in-content-danger-button-background-hover);
 }
 
-#breadcrumbs .error:active {
+.breadcrumb-item.error:active {
   color: var(--in-content-danger-button-background-active);
 }
 
+.breadcrumb-item.hidden, .breadcrumb-separator.hidden {
+  display: none;
+}
+
 #connection-assist {
   margin-left: 0;
 }
diff --git a/browser/components/torconnect/content/aboutTorConnect.js b/browser/components/torconnect/content/aboutTorConnect.js
index eb691444e4d26..30dfbd978315f 100644
--- a/browser/components/torconnect/content/aboutTorConnect.js
+++ b/browser/components/torconnect/content/aboutTorConnect.js
@@ -6,12 +6,14 @@
 let TorStrings = {};
 let TorConnectState = {};
 let TorCensorshipLevel = {};
+let InternetStatus = {};
 
 const BreadcrumbStatus = Object.freeze({
-  Disabled: -1,
-  Default: 0,
-  Active: 1,
-  Error: 2,
+  Hidden: "hidden",
+  Disabled: "disabled",
+  Default: "default",
+  Active: "active",
+  Error: "error",
 });
 
 class AboutTorConnect {
@@ -32,10 +34,12 @@ class AboutTorConnect {
         label: "#connection-assist .breadcrumb-label",
       },
       locationSettings: {
+        separator: "#location-settings-separator",
         link: "#location-settings",
         label: "#location-settings .breadcrumb-label",
       },
       tryBridge: {
+        separator: "#try-bridge-separator",
         link: "#try-bridge",
         label: "#try-bridge .breadcrumb-label",
       },
@@ -81,12 +85,18 @@ class AboutTorConnect {
     connectionAssistLabel: document.querySelector(
       this.selectors.breadcrumbs.connectionAssist.label
     ),
+    locationSettingsSeparator: document.querySelector(
+      this.selectors.breadcrumbs.locationSettings.separator
+    ),
     locationSettingsLink: document.querySelector(
       this.selectors.breadcrumbs.locationSettings.link
     ),
     locationSettingsLabel: document.querySelector(
       this.selectors.breadcrumbs.locationSettings.label
     ),
+    tryBridgeSeparator: document.querySelector(
+      this.selectors.breadcrumbs.tryBridge.separator
+    ),
     tryBridgeLink: document.querySelector(
       this.selectors.breadcrumbs.tryBridge.link
     ),
@@ -284,26 +294,28 @@ class AboutTorConnect {
 
   setBreadcrumbsStatus(connectionAssist, locationSettings, tryBridge) {
     this.elements.breadcrumbContainer.classList.remove("hidden");
-    let elems = [
-      [this.elements.connectionAssistLink, connectionAssist],
-      [this.elements.locationSettingsLink, locationSettings],
-      [this.elements.tryBridgeLink, tryBridge],
+    const elems = [
+      [this.elements.connectionAssistLink, connectionAssist, null],
+      [
+        this.elements.locationSettingsLink,
+        locationSettings,
+        this.elements.locationSettingsSeparator,
+      ],
+      [
+        this.elements.tryBridgeLink,
+        tryBridge,
+        this.elements.tryBridgeSeparator,
+      ],
     ];
-    elems.forEach(([elem, status]) => {
-      elem.classList.remove("disabled");
-      elem.classList.remove("active");
-      elem.classList.remove("error");
-      switch (status) {
-        case BreadcrumbStatus.Disabled:
-          elem.classList.add("disabled");
-          break;
-        case BreadcrumbStatus.Active:
-          elem.classList.add("active");
-          break;
-        case BreadcrumbStatus.Error:
-          elem.classList.add("error");
-          break;
+    elems.forEach(([elem, status, separator]) => {
+      elem.classList.remove(BreadcrumbStatus.Hidden);
+      elem.classList.remove(BreadcrumbStatus.Disabled);
+      elem.classList.remove(BreadcrumbStatus.Active);
+      elem.classList.remove(BreadcrumbStatus.Error);
+      if (status !== "") {
+        elem.classList.add(status);
       }
+      separator?.classList.toggle("hidden", status === BreadcrumbStatus.Hidden);
     });
   }
 
@@ -346,6 +358,10 @@ class AboutTorConnect {
     this.hideButtons();
 
     if (hasError) {
+      if (state.InternetStatus === InternetStatus.Offline) {
+        this.showOffline(state.ErrorMessage);
+        return;
+      }
       switch (state.DetectedCensorshipLevel) {
         case TorCensorshipLevel.None:
           // we shouldn't be able to get here
@@ -463,6 +479,21 @@ class AboutTorConnect {
     // it isn't in use (eg using tor-launcher or system tor)
   }
 
+  showOffline(error) {
+    this.setTitle(TorStrings.torConnect.noInternet, "error");
+    this.setLongText("Some long text from 🍩️");
+    this.setProgress(error, false);
+    this.setBreadcrumbsStatus(
+      BreadcrumbStatus.Default,
+      BreadcrumbStatus.Active,
+      BreadcrumbStatus.Hidden
+    );
+    this.hideButtons();
+    this.show(this.elements.configureButton);
+    this.show(this.elements.connectButton, true);
+    this.elements.connectButton.textContent = TorStrings.torConnect.tryAgain;
+  }
+
   showConnectionAssistant(error) {
     const hasError = !!error;
     this.setTitle(
@@ -662,6 +693,7 @@ class AboutTorConnect {
     TorStrings = Object.freeze(args.TorStrings);
     TorConnectState = Object.freeze(args.TorConnectState);
     TorCensorshipLevel = Object.freeze(args.TorCensorshipLevel);
+    InternetStatus = Object.freeze(args.InternetStatus);
     this.locations = args.CountryNames;
 
     this.initElements(args.Direction);
diff --git a/browser/components/torconnect/content/aboutTorConnect.xhtml b/browser/components/torconnect/content/aboutTorConnect.xhtml
index 0591ed03a540c..4bb5b31949a67 100644
--- a/browser/components/torconnect/content/aboutTorConnect.xhtml
+++ b/browser/components/torconnect/content/aboutTorConnect.xhtml
@@ -14,12 +14,12 @@
           <span id="connection-assist-icon" class="breadcrumb-icon" />
           <span class="breadcrumb-label"/>
         </span>
-        <span class="breadcrumb-separator breadcrumb-icon" />
+        <span id="location-settings-separator" class="breadcrumb-separator breadcrumb-icon" />
         <span id="location-settings" class="breadcrumb-item">
           <span id="location-settings-icon" class="breadcrumb-icon" />
           <span class="breadcrumb-label"/>
         </span>
-        <span class="breadcrumb-separator breadcrumb-icon" />
+        <span id="try-bridge-separator" class="breadcrumb-separator breadcrumb-icon" />
         <span id="try-bridge" class="breadcrumb-item">
           <span id="try-bridge-icon" class="breadcrumb-icon" />
           <span class="breadcrumb-label"/>

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


More information about the tor-commits mailing list