Commit 01e38a05 authored by henry's avatar henry Committed by Pier Angelo Vendrame
Browse files

fixup! Bug 31286: Implementation of bridge, proxy, and firewall settings in...

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.


(cherry picked from commit 0d458af9)
parent 9b41c038
Loading
Loading
Loading
Loading
+17 −8
Original line number Original line Diff line number Diff line
@@ -26,6 +26,7 @@ class BuiltinBridgeDialog {
  constructor(onSubmit) {
  constructor(onSubmit) {
    this.onSubmit = onSubmit;
    this.onSubmit = onSubmit;
    this._acceptButton = null;
    this._acceptButton = null;
    this._radioGroup = null;
  }
  }


  _populateXUL(window, dialog) {
  _populateXUL(window, dialog) {
@@ -36,7 +37,7 @@ class BuiltinBridgeDialog {
      "#torPreferences-builtinBridge-description"
      "#torPreferences-builtinBridge-description"
    ).textContent = TorStrings.settings.builtinBridgeDescription2;
    ).textContent = TorStrings.settings.builtinBridgeDescription2;


    const radioGroup = dialog.querySelector(
    this._radioGroup = dialog.querySelector(
      "#torPreferences-builtinBridge-typeSelection"
      "#torPreferences-builtinBridge-typeSelection"
    );
    );


@@ -60,13 +61,8 @@ class BuiltinBridgeDialog {
      TorSettings.bridges.source == TorBridgeSource.BuiltIn
      TorSettings.bridges.source == TorBridgeSource.BuiltIn
        ? TorSettings.bridges.builtin_type
        ? TorSettings.bridges.builtin_type
        : null;
        : 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"
      ".builtin-bridges-option"
    )) {
    )) {
      const radio = optionEl.querySelector("radio");
      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", () => {
    dialog.addEventListener("dialogaccept", () => {
      this.onSubmit(radioGroup.value, TorConnect.canBeginBootstrap);
      this.onSubmit(this._radioGroup.value, TorConnect.canBeginBootstrap);
    });
    });
    dialog.addEventListener("dialoghelp", e => {
    dialog.addEventListener("dialoghelp", e => {
      window.top.openTrustedLinkIn(
      window.top.openTrustedLinkIn(
@@ -102,9 +105,15 @@ class BuiltinBridgeDialog {
    this._acceptButton = dialog.getButton("accept");
    this._acceptButton = dialog.getButton("accept");


    Services.obs.addObserver(this, TorConnectTopics.StateChange);
    Services.obs.addObserver(this, TorConnectTopics.StateChange);

    this.onSelectChange();
    this.onAcceptStateChange();
    this.onAcceptStateChange();
  }
  }


  onSelectChange() {
    this._acceptButton.disabled = !this._radioGroup.value;
  }

  onAcceptStateChange() {
  onAcceptStateChange() {
    this._acceptButton.setAttribute(
    this._acceptButton.setAttribute(
      "label",
      "label",
+6 −17
Original line number Original line Diff line number Diff line
@@ -1088,14 +1088,9 @@ const gConnectionPane = (function() {
    onAddBuiltinBridge() {
    onAddBuiltinBridge() {
      const builtinBridgeDialog = new BuiltinBridgeDialog(
      const builtinBridgeDialog = new BuiltinBridgeDialog(
        (bridgeType, connect) => {
        (bridgeType, connect) => {
          if (!bridgeType) {
            TorSettings.bridges.enabled = false;
            TorSettings.bridges.builtin_type = "";
          } else {
          TorSettings.bridges.enabled = true;
          TorSettings.bridges.enabled = true;
          TorSettings.bridges.source = TorBridgeSource.BuiltIn;
          TorSettings.bridges.source = TorBridgeSource.BuiltIn;
          TorSettings.bridges.builtin_type = bridgeType;
          TorSettings.bridges.builtin_type = bridgeType;
          }


          this.saveBridgeSettings(connect);
          this.saveBridgeSettings(connect);
        }
        }
@@ -1124,15 +1119,9 @@ const gConnectionPane = (function() {
    onAddBridgeManually() {
    onAddBridgeManually() {
      const provideBridgeDialog = new ProvideBridgeDialog(
      const provideBridgeDialog = new ProvideBridgeDialog(
        (aBridgeString, connect) => {
        (aBridgeString, connect) => {
          if (aBridgeString) {
          TorSettings.bridges.enabled = true;
          TorSettings.bridges.enabled = true;
          TorSettings.bridges.source = TorBridgeSource.UserProvided;
          TorSettings.bridges.source = TorBridgeSource.UserProvided;
          TorSettings.bridges.bridge_strings = aBridgeString;
          TorSettings.bridges.bridge_strings = aBridgeString;
          } else {
            TorSettings.bridges.enabled = false;
            TorSettings.bridges.source = TorBridgeSource.Invalid;
            TorSettings.bridges.bridge_strings = "";
          }


          this.saveBridgeSettings(connect);
          this.saveBridgeSettings(connect);
        }
        }
+12 −9
Original line number Original line Diff line number Diff line
@@ -56,32 +56,35 @@ class ProvideBridgeDialog {
      "placeholder",
      "placeholder",
      TorStrings.settings.provideBridgePlaceholder
      TorStrings.settings.provideBridgePlaceholder
    );
    );
    this._textarea.addEventListener("input", () => {

      this.onAcceptStateChange();
    this._textarea.addEventListener("input", () => this.onValueChange());
    });
    if (TorSettings.bridges.source == TorBridgeSource.UserProvided) {
    if (TorSettings.bridges.source == TorBridgeSource.UserProvided) {
      this._textarea.value = TorSettings.bridges.bridge_strings.join("\n");
      this._textarea.value = TorSettings.bridges.bridge_strings.join("\n");
    }
    }


    this._dialog.addEventListener("dialogaccept", e => {
    this._dialog.addEventListener("dialogaccept", e => {
      let value = this._textarea.value;
      this.onSubmit(this._textarea.value, TorConnect.canBeginBootstrap);
      if (!value.trim()) {
        value = null;
      }
      this.onSubmit(value, value && TorConnect.canBeginBootstrap);
    });
    });
    this._dialog.addEventListener("dialoghelp", openHelp);
    this._dialog.addEventListener("dialoghelp", openHelp);


    this._acceptButton = this._dialog.getButton("accept");
    this._acceptButton = this._dialog.getButton("accept");


    Services.obs.addObserver(this, TorConnectTopics.StateChange);
    Services.obs.addObserver(this, TorConnectTopics.StateChange);

    this.onValueChange();
    this.onAcceptStateChange();
    this.onAcceptStateChange();
  }
  }


  onValueChange() {
    // TODO: Do some proper value parsing and error reporting. See
    // tor-browser#40552.
    this._acceptButton.disabled = !this._textarea.value.trim();
  }

  onAcceptStateChange() {
  onAcceptStateChange() {
    this._acceptButton.setAttribute(
    this._acceptButton.setAttribute(
      "label",
      "label",
      this._textarea.value.trim() && TorConnect.canBeginBootstrap
      TorConnect.canBeginBootstrap
        ? TorStrings.settings.bridgeButtonConnect
        ? TorStrings.settings.bridgeButtonConnect
        : TorStrings.settings.bridgeButtonAccept
        : TorStrings.settings.bridgeButtonAccept
    );
    );