Skip to content
Snippets Groups Projects
Commit 0d458af9 authored by henry's avatar henry
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.
parent 5a49e443
Branches
Tags
No related merge requests found
...@@ -26,6 +26,7 @@ class BuiltinBridgeDialog { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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",
......
...@@ -1088,14 +1088,9 @@ const gConnectionPane = (function() { ...@@ -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() { ...@@ -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);
} }
......
...@@ -56,32 +56,35 @@ class ProvideBridgeDialog { ...@@ -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
); );
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment