diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TorConstants.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TorConstants.java
index a9ae3c5ae..3a4432d8c 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TorConstants.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TorConstants.java
@@ -21,6 +21,7 @@ public interface TorConstants {
int PREF_TOR_NETWORK_AUTOMATIC = 0;
int PREF_TOR_NETWORK_WITHOUT_BRIDGES = 1;
int PREF_TOR_NETWORK_WITH_BRIDGES = 2;
+ // TODO: Remove when settings migration code is removed
int PREF_TOR_NETWORK_NEVER = 3;
// Reason codes returned by Plugin#getReasonDisabled()
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java
index cbf21ad40..9d1d8da7f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java
@@ -72,9 +72,11 @@ import static android.widget.Toast.LENGTH_SHORT;
import static androidx.core.view.ViewCompat.LAYOUT_DIRECTION_LTR;
import static java.util.logging.Level.INFO;
import static java.util.logging.Level.WARNING;
+import static org.briarproject.bramble.api.plugin.Plugin.PREF_PLUGIN_ENABLE;
import static org.briarproject.bramble.api.plugin.TorConstants.PREF_TOR_MOBILE;
import static org.briarproject.bramble.api.plugin.TorConstants.PREF_TOR_NETWORK;
import static org.briarproject.bramble.api.plugin.TorConstants.PREF_TOR_NETWORK_AUTOMATIC;
+import static org.briarproject.bramble.api.plugin.TorConstants.PREF_TOR_NETWORK_NEVER;
import static org.briarproject.bramble.api.plugin.TorConstants.PREF_TOR_ONLY_WHEN_CHARGING;
import static org.briarproject.bramble.util.LogUtils.logDuration;
import static org.briarproject.bramble.util.LogUtils.logException;
@@ -341,7 +343,8 @@ public class SettingsFragment extends PreferenceFragmentCompat
try {
long start = now();
settings = settingsManager.getSettings(SETTINGS_NAMESPACE);
- torSettings = settingsManager.getSettings(TOR_NAMESPACE);
+ torSettings = migrateTorSettings(
+ settingsManager.getSettings(TOR_NAMESPACE));
settingsLoaded = true;
logDuration(LOG, "Loading settings", start);
displaySettings();
@@ -351,6 +354,19 @@ public class SettingsFragment extends PreferenceFragmentCompat
});
}
+ // TODO: Remove after a reasonable migration period (added 2020-01-29)
+ private Settings migrateTorSettings(Settings s) {
+ int network = s.getInt(PREF_TOR_NETWORK, PREF_TOR_NETWORK_AUTOMATIC);
+ if (network == PREF_TOR_NETWORK_NEVER) {
+ s.putInt(PREF_TOR_NETWORK, PREF_TOR_NETWORK_AUTOMATIC);
+ s.putBoolean(PREF_PLUGIN_ENABLE, false);
+ // We don't need to save the migrated settings - the Tor plugin is
+ // responsible for that. This code just handles the case where the
+ // settings are loaded before the plugin migrates them.
+ }
+ return s;
+ }
+
private void displaySettings() {
listener.runOnUiThreadUnlessDestroyed(() -> {
// due to events, we might try to display before a load completed
@@ -669,7 +685,7 @@ public class SettingsFragment extends PreferenceFragmentCompat
displaySettings();
} else if (namespace.equals(TOR_NAMESPACE)) {
LOG.info("Tor settings updated");
- torSettings = s.getSettings();
+ torSettings = migrateTorSettings(s.getSettings());
displaySettings();
}
}
diff --git a/briar-android/src/main/res/values/arrays.xml b/briar-android/src/main/res/values/arrays.xml
index a9dc6aed6..8a7313b73 100644
--- a/briar-android/src/main/res/values/arrays.xml
+++ b/briar-android/src/main/res/values/arrays.xml
@@ -4,13 +4,11 @@
- @string/tor_network_setting_automatic
- @string/tor_network_setting_without_bridges
- @string/tor_network_setting_with_bridges
- - @string/tor_network_setting_never
- 0
- 1
- 2
- - 3