From 08a8a0b281eb4b86065fe5a436fb0cf8d4e67af6 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Tue, 28 Apr 2020 15:44:38 +0100 Subject: [PATCH] Show reason why Tor is disabled. --- .../bramble/plugin/PluginManagerImpl.java | 5 ++++ .../android/navdrawer/PluginViewModel.java | 5 ++++ .../android/navdrawer/TransportsActivity.java | 25 ++++++++++++++++--- briar-android/src/main/res/values/strings.xml | 3 +++ 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/PluginManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/PluginManagerImpl.java index 856103e18..ef03a78fd 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/PluginManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/PluginManagerImpl.java @@ -53,6 +53,7 @@ import static java.util.logging.Level.WARNING; import static java.util.logging.Logger.getLogger; import static org.briarproject.bramble.api.plugin.Plugin.PREF_PLUGIN_ENABLE; import static org.briarproject.bramble.api.plugin.Plugin.State.ACTIVE; +import static org.briarproject.bramble.api.plugin.Plugin.State.DISABLED; import static org.briarproject.bramble.api.plugin.Plugin.State.STARTING_STOPPING; import static org.briarproject.bramble.util.LogUtils.logDuration; import static org.briarproject.bramble.util.LogUtils.logException; @@ -354,6 +355,10 @@ class PluginManagerImpl implements PluginManager, Service { } else if (oldState == ACTIVE) { eventBus.broadcast(new TransportInactiveEvent(id)); } + } else if (newState == DISABLED) { + // Broadcast an event even though the state hasn't changed, as + // the reasons for the plugin being disabled may have changed + eventBus.broadcast(new TransportStateEvent(id, newState)); } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/PluginViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/PluginViewModel.java index 936199ea4..e26d59eba 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/PluginViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/PluginViewModel.java @@ -162,6 +162,11 @@ public class PluginViewModel extends AndroidViewModel implements EventListener { return bluetoothTurnedOn; } + int getReasonsTorDisabled() { + Plugin plugin = pluginManager.getPlugin(TorConstants.ID); + return plugin == null ? 0 : plugin.getReasonsDisabled(); + } + void enableTransport(TransportId id, boolean enable) { Settings s = new Settings(); s.putBoolean(PREF_PLUGIN_ENABLE, enable); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/TransportsActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/TransportsActivity.java index 5df5e6b63..cf7caef88 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/TransportsActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/TransportsActivity.java @@ -47,6 +47,9 @@ import static org.briarproject.bramble.api.plugin.Plugin.State.ACTIVE; import static org.briarproject.bramble.api.plugin.Plugin.State.DISABLED; import static org.briarproject.bramble.api.plugin.Plugin.State.ENABLING; import static org.briarproject.bramble.api.plugin.Plugin.State.STARTING_STOPPING; +import static org.briarproject.bramble.api.plugin.TorConstants.REASON_BATTERY; +import static org.briarproject.bramble.api.plugin.TorConstants.REASON_COUNTRY_BLOCKED; +import static org.briarproject.bramble.api.plugin.TorConstants.REASON_MOBILE_DATA; @MethodsNotNullByDefault @ParametersNotNullByDefault @@ -253,10 +256,24 @@ public class TransportsActivity extends BriarActivity { @StringRes private int getTorPluginStatus(State state) { - if (state == ENABLING) return R.string.tor_plugin_status_enabling; - else if (state == ACTIVE) return R.string.tor_plugin_status_active; - else if (state == DISABLED) return R.string.tor_plugin_status_disabled; - else return R.string.tor_plugin_status_inactive; + if (state == ENABLING) { + return R.string.tor_plugin_status_enabling; + } else if (state == ACTIVE) { + return R.string.tor_plugin_status_active; + } else if (state == DISABLED) { + int reasons = viewModel.getReasonsTorDisabled(); + if ((reasons & REASON_MOBILE_DATA) != 0) { + return R.string.tor_plugin_status_disabled_mobile_data; + } else if ((reasons & REASON_BATTERY) != 0) { + return R.string.tor_plugin_status_disabled_battery; + } else if ((reasons & REASON_COUNTRY_BLOCKED) != 0) { + return R.string.tor_plugin_status_disabled_country_blocked; + } else { + return R.string.tor_plugin_status_disabled; + } + } else { + return R.string.tor_plugin_status_inactive; + } } @StringRes diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index db94b03be..ed2c392ab 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -79,6 +79,9 @@ Briar is connected to the Internet Briar can\'t connect to the Internet Briar is configured not to use the Internet + Briar is configured not to use mobile data + Briar is configured not to use the Internet when running on battery + Briar is configured not to use the Internet in this country Wi-Fi