[tbb-commits] [Git][tpo/applications/tor-browser][tor-browser-102.12.0esr-12.5-1] fixup! Bug 31286: Implementation of bridge, proxy, and firewall settings in...

Pier Angelo Vendrame (@pierov) git at gitlab.torproject.org
Wed Jun 14 10:01:33 UTC 2023



Pier Angelo Vendrame pushed to branch tor-browser-102.12.0esr-12.5-1 at The Tor Project / Applications / Tor Browser


Commits:
0d458af9 by Henry Wilkes at 2023-06-14T10:18:34+01:00
fixup! Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection

Bug 41848 - Consistently disable the accept/connect button in the bridge
dialogs until the user gives some input.

- - - - -


3 changed files:

- browser/components/torpreferences/content/builtinBridgeDialog.jsm
- browser/components/torpreferences/content/connectionPane.js
- browser/components/torpreferences/content/provideBridgeDialog.jsm


Changes:

=====================================
browser/components/torpreferences/content/builtinBridgeDialog.jsm
=====================================
@@ -26,6 +26,7 @@ class BuiltinBridgeDialog {
   constructor(onSubmit) {
     this.onSubmit = onSubmit;
     this._acceptButton = null;
+    this._radioGroup = null;
   }
 
   _populateXUL(window, dialog) {
@@ -36,7 +37,7 @@ class BuiltinBridgeDialog {
       "#torPreferences-builtinBridge-description"
     ).textContent = TorStrings.settings.builtinBridgeDescription2;
 
-    const radioGroup = dialog.querySelector(
+    this._radioGroup = dialog.querySelector(
       "#torPreferences-builtinBridge-typeSelection"
     );
 
@@ -60,13 +61,8 @@ class BuiltinBridgeDialog {
       TorSettings.bridges.source == TorBridgeSource.BuiltIn
         ? TorSettings.bridges.builtin_type
         : null;
-    if (currentBuiltinType) {
-      radioGroup.value = currentBuiltinType;
-    } else {
-      radioGroup.selectedItem = null;
-    }
 
-    for (const optionEl of radioGroup.querySelectorAll(
+    for (const optionEl of this._radioGroup.querySelectorAll(
       ".builtin-bridges-option"
     )) {
       const radio = optionEl.querySelector("radio");
@@ -85,8 +81,15 @@ class BuiltinBridgeDialog {
       );
     }
 
+    if (currentBuiltinType) {
+      this._radioGroup.value = currentBuiltinType;
+    } else {
+      this._radioGroup.selectedItem = null;
+    }
+
+    this._radioGroup.addEventListener("select", () => this.onSelectChange());
     dialog.addEventListener("dialogaccept", () => {
-      this.onSubmit(radioGroup.value, TorConnect.canBeginBootstrap);
+      this.onSubmit(this._radioGroup.value, TorConnect.canBeginBootstrap);
     });
     dialog.addEventListener("dialoghelp", e => {
       window.top.openTrustedLinkIn(
@@ -102,9 +105,15 @@ class BuiltinBridgeDialog {
     this._acceptButton = dialog.getButton("accept");
 
     Services.obs.addObserver(this, TorConnectTopics.StateChange);
+
+    this.onSelectChange();
     this.onAcceptStateChange();
   }
 
+  onSelectChange() {
+    this._acceptButton.disabled = !this._radioGroup.value;
+  }
+
   onAcceptStateChange() {
     this._acceptButton.setAttribute(
       "label",


=====================================
browser/components/torpreferences/content/connectionPane.js
=====================================
@@ -1088,14 +1088,9 @@ const gConnectionPane = (function() {
     onAddBuiltinBridge() {
       const builtinBridgeDialog = new BuiltinBridgeDialog(
         (bridgeType, connect) => {
-          if (!bridgeType) {
-            TorSettings.bridges.enabled = false;
-            TorSettings.bridges.builtin_type = "";
-          } else {
-            TorSettings.bridges.enabled = true;
-            TorSettings.bridges.source = TorBridgeSource.BuiltIn;
-            TorSettings.bridges.builtin_type = bridgeType;
-          }
+          TorSettings.bridges.enabled = true;
+          TorSettings.bridges.source = TorBridgeSource.BuiltIn;
+          TorSettings.bridges.builtin_type = bridgeType;
 
           this.saveBridgeSettings(connect);
         }
@@ -1124,15 +1119,9 @@ const gConnectionPane = (function() {
     onAddBridgeManually() {
       const provideBridgeDialog = new ProvideBridgeDialog(
         (aBridgeString, connect) => {
-          if (aBridgeString) {
-            TorSettings.bridges.enabled = true;
-            TorSettings.bridges.source = TorBridgeSource.UserProvided;
-            TorSettings.bridges.bridge_strings = aBridgeString;
-          } else {
-            TorSettings.bridges.enabled = false;
-            TorSettings.bridges.source = TorBridgeSource.Invalid;
-            TorSettings.bridges.bridge_strings = "";
-          }
+          TorSettings.bridges.enabled = true;
+          TorSettings.bridges.source = TorBridgeSource.UserProvided;
+          TorSettings.bridges.bridge_strings = aBridgeString;
 
           this.saveBridgeSettings(connect);
         }


=====================================
browser/components/torpreferences/content/provideBridgeDialog.jsm
=====================================
@@ -56,32 +56,35 @@ class ProvideBridgeDialog {
       "placeholder",
       TorStrings.settings.provideBridgePlaceholder
     );
-    this._textarea.addEventListener("input", () => {
-      this.onAcceptStateChange();
-    });
+
+    this._textarea.addEventListener("input", () => this.onValueChange());
     if (TorSettings.bridges.source == TorBridgeSource.UserProvided) {
       this._textarea.value = TorSettings.bridges.bridge_strings.join("\n");
     }
 
     this._dialog.addEventListener("dialogaccept", e => {
-      let value = this._textarea.value;
-      if (!value.trim()) {
-        value = null;
-      }
-      this.onSubmit(value, value && TorConnect.canBeginBootstrap);
+      this.onSubmit(this._textarea.value, TorConnect.canBeginBootstrap);
     });
     this._dialog.addEventListener("dialoghelp", openHelp);
 
     this._acceptButton = this._dialog.getButton("accept");
 
     Services.obs.addObserver(this, TorConnectTopics.StateChange);
+
+    this.onValueChange();
     this.onAcceptStateChange();
   }
 
+  onValueChange() {
+    // TODO: Do some proper value parsing and error reporting. See
+    // tor-browser#40552.
+    this._acceptButton.disabled = !this._textarea.value.trim();
+  }
+
   onAcceptStateChange() {
     this._acceptButton.setAttribute(
       "label",
-      this._textarea.value.trim() && TorConnect.canBeginBootstrap
+      TorConnect.canBeginBootstrap
         ? TorStrings.settings.bridgeButtonConnect
         : TorStrings.settings.bridgeButtonAccept
     );



View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/0d458af9bf952c1b6f4f685e7c1397156ae8b69c

-- 
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/0d458af9bf952c1b6f4f685e7c1397156ae8b69c
You're receiving this email because of your account on gitlab.torproject.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.torproject.org/pipermail/tbb-commits/attachments/20230614/0bb7e86b/attachment-0001.htm>


More information about the tbb-commits mailing list