Pier Angelo Vendrame pushed to branch tor-browser-102.12.0esr-13.0-1 at The Tor Project / Applications / Tor Browser
Commits:
- 
01e38a05
by Henry Wilkes at 2023-06-14T10:04:00+00:00
3 changed files:
- browser/components/torpreferences/content/builtinBridgeDialog.jsm
- browser/components/torpreferences/content/connectionPane.js
- browser/components/torpreferences/content/provideBridgeDialog.jsm
Changes:
| ... | ... | @@ -26,6 +26,7 @@ class BuiltinBridgeDialog { | 
| 26 | 26 |    constructor(onSubmit) {
 | 
| 27 | 27 |      this._onSubmit_ = onSubmit;
 | 
| 28 | 28 |      this._acceptButton = null;
 | 
| 29 | +    this._radioGroup = null;
 | |
| 29 | 30 |    }
 | 
| 30 | 31 | |
| 31 | 32 |    _populateXUL(window, dialog) {
 | 
| ... | ... | @@ -36,7 +37,7 @@ class BuiltinBridgeDialog { | 
| 36 | 37 |        "#torPreferences-builtinBridge-description"
 | 
| 37 | 38 |      ).textContent = TorStrings.settings.builtinBridgeDescription2;
 | 
| 38 | 39 | |
| 39 | -    const radioGroup = dialog.querySelector(
 | |
| 40 | +    this._radioGroup = dialog.querySelector(
 | |
| 40 | 41 |        "#torPreferences-builtinBridge-typeSelection"
 | 
| 41 | 42 |      );
 | 
| 42 | 43 | |
| ... | ... | @@ -60,13 +61,8 @@ class BuiltinBridgeDialog { | 
| 60 | 61 |        TorSettings.bridges.source == TorBridgeSource.BuiltIn
 | 
| 61 | 62 |          ? TorSettings.bridges.builtin_type
 | 
| 62 | 63 |          : null;
 | 
| 63 | -    if (currentBuiltinType) {
 | |
| 64 | -      radioGroup.value = currentBuiltinType;
 | |
| 65 | -    } else {
 | |
| 66 | -      radioGroup.selectedItem = null;
 | |
| 67 | -    }
 | |
| 68 | 64 | |
| 69 | -    for (const optionEl of radioGroup.querySelectorAll(
 | |
| 65 | +    for (const optionEl of this._radioGroup.querySelectorAll(
 | |
| 70 | 66 |        ".builtin-bridges-option"
 | 
| 71 | 67 |      )) {
 | 
| 72 | 68 |        const radio = optionEl.querySelector("radio");
 | 
| ... | ... | @@ -85,8 +81,15 @@ class BuiltinBridgeDialog { | 
| 85 | 81 |        );
 | 
| 86 | 82 |      }
 | 
| 87 | 83 | |
| 84 | +    if (currentBuiltinType) {
 | |
| 85 | +      this._radioGroup.value = currentBuiltinType;
 | |
| 86 | +    } else {
 | |
| 87 | +      this._radioGroup.selectedItem = null;
 | |
| 88 | +    }
 | |
| 89 | + | |
| 90 | +    this._radioGroup.addEventListener("select", () => this.onSelectChange());
 | |
| 88 | 91 |      dialog.addEventListener("dialogaccept", () => {
 | 
| 89 | -      this.onSubmit(radioGroup.value, TorConnect.canBeginBootstrap);
 | |
| 92 | +      this.onSubmit(this._radioGroup.value, TorConnect.canBeginBootstrap);
 | |
| 90 | 93 |      });
 | 
| 91 | 94 |      dialog.addEventListener("dialoghelp", e => {
 | 
| 92 | 95 |        window.top.openTrustedLinkIn(
 | 
| ... | ... | @@ -102,9 +105,15 @@ class BuiltinBridgeDialog { | 
| 102 | 105 |      this._acceptButton = dialog.getButton("accept");
 | 
| 103 | 106 | |
| 104 | 107 |      Services.obs.addObserver(this, TorConnectTopics.StateChange);
 | 
| 108 | + | |
| 109 | +    this.onSelectChange();
 | |
| 105 | 110 |      this.onAcceptStateChange();
 | 
| 106 | 111 |    }
 | 
| 107 | 112 | |
| 113 | +  onSelectChange() {
 | |
| 114 | +    this._acceptButton.disabled = !this._radioGroup.value;
 | |
| 115 | +  }
 | |
| 116 | + | |
| 108 | 117 |    onAcceptStateChange() {
 | 
| 109 | 118 |      this._acceptButton.setAttribute(
 | 
| 110 | 119 |        "label",
 | 
| ... | ... | @@ -1088,14 +1088,9 @@ const gConnectionPane = (function() { | 
| 1088 | 1088 |      onAddBuiltinBridge() {
 | 
| 1089 | 1089 |        const builtinBridgeDialog = new BuiltinBridgeDialog(
 | 
| 1090 | 1090 |          (bridgeType, connect) => {
 | 
| 1091 | -          if (!bridgeType) {
 | |
| 1092 | -            TorSettings.bridges.enabled = false;
 | |
| 1093 | -            TorSettings.bridges.builtin_type = "";
 | |
| 1094 | -          } else {
 | |
| 1095 | -            TorSettings.bridges.enabled = true;
 | |
| 1096 | -            TorSettings.bridges.source = TorBridgeSource.BuiltIn;
 | |
| 1097 | -            TorSettings.bridges.builtin_type = bridgeType;
 | |
| 1098 | -          }
 | |
| 1091 | +          TorSettings.bridges.enabled = true;
 | |
| 1092 | +          TorSettings.bridges.source = TorBridgeSource.BuiltIn;
 | |
| 1093 | +          TorSettings.bridges.builtin_type = bridgeType;
 | |
| 1099 | 1094 | |
| 1100 | 1095 |            this.saveBridgeSettings(connect);
 | 
| 1101 | 1096 |          }
 | 
| ... | ... | @@ -1124,15 +1119,9 @@ const gConnectionPane = (function() { | 
| 1124 | 1119 |      onAddBridgeManually() {
 | 
| 1125 | 1120 |        const provideBridgeDialog = new ProvideBridgeDialog(
 | 
| 1126 | 1121 |          (aBridgeString, connect) => {
 | 
| 1127 | -          if (aBridgeString) {
 | |
| 1128 | -            TorSettings.bridges.enabled = true;
 | |
| 1129 | -            TorSettings.bridges.source = TorBridgeSource.UserProvided;
 | |
| 1130 | -            TorSettings.bridges.bridge_strings = aBridgeString;
 | |
| 1131 | -          } else {
 | |
| 1132 | -            TorSettings.bridges.enabled = false;
 | |
| 1133 | -            TorSettings.bridges.source = TorBridgeSource.Invalid;
 | |
| 1134 | -            TorSettings.bridges.bridge_strings = "";
 | |
| 1135 | -          }
 | |
| 1122 | +          TorSettings.bridges.enabled = true;
 | |
| 1123 | +          TorSettings.bridges.source = TorBridgeSource.UserProvided;
 | |
| 1124 | +          TorSettings.bridges.bridge_strings = aBridgeString;
 | |
| 1136 | 1125 | |
| 1137 | 1126 |            this.saveBridgeSettings(connect);
 | 
| 1138 | 1127 |          }
 | 
| ... | ... | @@ -56,32 +56,35 @@ class ProvideBridgeDialog { | 
| 56 | 56 |        "placeholder",
 | 
| 57 | 57 |        TorStrings.settings.provideBridgePlaceholder
 | 
| 58 | 58 |      );
 | 
| 59 | -    this._textarea.addEventListener("input", () => {
 | |
| 60 | -      this.onAcceptStateChange();
 | |
| 61 | -    });
 | |
| 59 | + | |
| 60 | +    this._textarea.addEventListener("input", () => this.onValueChange());
 | |
| 62 | 61 |      if (TorSettings.bridges.source == TorBridgeSource.UserProvided) {
 | 
| 63 | 62 |        this._textarea.value = TorSettings.bridges.bridge_strings.join("\n");
 | 
| 64 | 63 |      }
 | 
| 65 | 64 | |
| 66 | 65 |      this._dialog.addEventListener("dialogaccept", e => {
 | 
| 67 | -      let value = this._textarea.value;
 | |
| 68 | -      if (!value.trim()) {
 | |
| 69 | -        value = null;
 | |
| 70 | -      }
 | |
| 71 | -      this.onSubmit(value, value && TorConnect.canBeginBootstrap);
 | |
| 66 | +      this.onSubmit(this._textarea.value, TorConnect.canBeginBootstrap);
 | |
| 72 | 67 |      });
 | 
| 73 | 68 |      this._dialog.addEventListener("dialoghelp", openHelp);
 | 
| 74 | 69 | |
| 75 | 70 |      this._acceptButton = this._dialog.getButton("accept");
 | 
| 76 | 71 | |
| 77 | 72 |      Services.obs.addObserver(this, TorConnectTopics.StateChange);
 | 
| 73 | + | |
| 74 | +    this.onValueChange();
 | |
| 78 | 75 |      this.onAcceptStateChange();
 | 
| 79 | 76 |    }
 | 
| 80 | 77 | |
| 78 | +  onValueChange() {
 | |
| 79 | +    // TODO: Do some proper value parsing and error reporting. See
 | |
| 80 | +    // tor-browser#40552.
 | |
| 81 | +    this._acceptButton.disabled = !this._textarea.value.trim();
 | |
| 82 | +  }
 | |
| 83 | + | |
| 81 | 84 |    onAcceptStateChange() {
 | 
| 82 | 85 |      this._acceptButton.setAttribute(
 | 
| 83 | 86 |        "label",
 | 
| 84 | -      this._textarea.value.trim() && TorConnect.canBeginBootstrap
 | |
| 87 | +      TorConnect.canBeginBootstrap
 | |
| 85 | 88 |          ? TorStrings.settings.bridgeButtonConnect
 | 
| 86 | 89 |          : TorStrings.settings.bridgeButtonAccept
 | 
| 87 | 90 |      );
 |