diff options
11 files changed, 28 insertions, 52 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectActionButton.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectActionButton.kt index ae731b4161..4789d27a2c 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectActionButton.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectActionButton.kt @@ -19,9 +19,9 @@ class ConnectActionButton(val parentView: View) { is TunnelState.Disconnected -> disconnected() is TunnelState.Disconnecting -> { when (value.actionAfterDisconnect) { - is ActionAfterDisconnect.Nothing -> disconnected() - is ActionAfterDisconnect.Block -> connected() - is ActionAfterDisconnect.Reconnect -> connecting() + ActionAfterDisconnect.Nothing -> disconnected() + ActionAfterDisconnect.Block -> connected() + ActionAfterDisconnect.Reconnect -> connecting() } } is TunnelState.Connecting -> connecting() diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectionStatus.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectionStatus.kt index 17f44a64da..664156dd04 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectionStatus.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectionStatus.kt @@ -18,9 +18,9 @@ class ConnectionStatus(val parentView: View, val resources: Resources) { when (state) { is TunnelState.Disconnecting -> { when (state.actionAfterDisconnect) { - is ActionAfterDisconnect.Nothing -> disconnected() - is ActionAfterDisconnect.Block -> connected() - is ActionAfterDisconnect.Reconnect -> connecting() + ActionAfterDisconnect.Nothing -> disconnected() + ActionAfterDisconnect.Block -> connected() + ActionAfterDisconnect.Reconnect -> connecting() } } is TunnelState.Disconnected -> disconnected() diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ForegroundNotificationManager.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ForegroundNotificationManager.kt index c99d8d7a0d..80890e56ca 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ForegroundNotificationManager.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ForegroundNotificationManager.kt @@ -40,7 +40,7 @@ class ForegroundNotificationManager(val service: Service, val connectionProxy: C reconnecting = (value is TunnelState.Disconnecting && - value.actionAfterDisconnect is ActionAfterDisconnect.Reconnect) || + value.actionAfterDisconnect == ActionAfterDisconnect.Reconnect) || (value is TunnelState.Connecting && reconnecting) updateNotification() @@ -62,7 +62,7 @@ class ForegroundNotificationManager(val service: Service, val connectionProxy: C is TunnelState.Connected -> R.string.secured is TunnelState.Disconnecting -> { when (state.actionAfterDisconnect) { - is ActionAfterDisconnect.Reconnect -> R.string.reconnecting + ActionAfterDisconnect.Reconnect -> R.string.reconnecting else -> R.string.disconnecting } } @@ -80,7 +80,7 @@ class ForegroundNotificationManager(val service: Service, val connectionProxy: C is TunnelState.Connected -> R.string.disconnect is TunnelState.Disconnecting -> { when (state.actionAfterDisconnect) { - is ActionAfterDisconnect.Reconnect -> R.string.cancel + ActionAfterDisconnect.Reconnect -> R.string.cancel else -> R.string.connect } } @@ -98,7 +98,7 @@ class ForegroundNotificationManager(val service: Service, val connectionProxy: C is TunnelState.Connected -> KEY_DISCONNECT_ACTION is TunnelState.Disconnecting -> { when (state.actionAfterDisconnect) { - is ActionAfterDisconnect.Reconnect -> KEY_DISCONNECT_ACTION + ActionAfterDisconnect.Reconnect -> KEY_DISCONNECT_ACTION else -> KEY_CONNECT_ACTION } } diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt index 352fe4dd71..b37cf81819 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt @@ -124,9 +124,9 @@ class NotificationBanner( when (state) { is TunnelState.Disconnecting -> { when (state.actionAfterDisconnect) { - is ActionAfterDisconnect.Nothing -> return false - is ActionAfterDisconnect.Block -> showBlocking(null) - is ActionAfterDisconnect.Reconnect -> showBlocking(null) + ActionAfterDisconnect.Nothing -> return false + ActionAfterDisconnect.Block -> showBlocking(null) + ActionAfterDisconnect.Reconnect -> showBlocking(null) } } is TunnelState.Disconnected -> return false diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/SwitchLocationButton.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/SwitchLocationButton.kt index f6561e4da1..930c1ff626 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/SwitchLocationButton.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/SwitchLocationButton.kt @@ -57,9 +57,9 @@ class SwitchLocationButton(val parentView: View, val resources: Resources) { is TunnelState.Disconnected -> showLocation() is TunnelState.Disconnecting -> { when (state.actionAfterDisconnect) { - is ActionAfterDisconnect.Nothing -> showLocation() - is ActionAfterDisconnect.Block -> showLocation() - is ActionAfterDisconnect.Reconnect -> showLabel() + ActionAfterDisconnect.Nothing -> showLocation() + ActionAfterDisconnect.Block -> showLocation() + ActionAfterDisconnect.Reconnect -> showLabel() } } is TunnelState.Connecting -> showLabel() diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt index 06c594ed1c..ee429ca18d 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt @@ -105,7 +105,7 @@ class ConnectionProxy(val context: Context, val daemon: Deferred<MullvadDaemon>) return false } else { scheduleToResetAnticipatedState() - uiState = TunnelState.Disconnecting(ActionAfterDisconnect.Nothing()) + uiState = TunnelState.Disconnecting(ActionAfterDisconnect.Nothing) return true } } diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/LocationInfoCache.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/LocationInfoCache.kt index 94444c5d46..0057f034d8 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/LocationInfoCache.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/LocationInfoCache.kt @@ -49,9 +49,9 @@ class LocationInfoCache( } is TunnelState.Disconnecting -> { when (value.actionAfterDisconnect) { - is ActionAfterDisconnect.Nothing -> location = lastKnownRealLocation - is ActionAfterDisconnect.Block -> location = null - is ActionAfterDisconnect.Reconnect -> location = locationFromSelectedRelay() + ActionAfterDisconnect.Nothing -> location = lastKnownRealLocation + ActionAfterDisconnect.Block -> location = null + ActionAfterDisconnect.Reconnect -> location = locationFromSelectedRelay() } } is TunnelState.Blocked -> location = null diff --git a/android/src/main/kotlin/net/mullvad/talpid/tunnel/ActionAfterDisconnect.kt b/android/src/main/kotlin/net/mullvad/talpid/tunnel/ActionAfterDisconnect.kt index c352ab06ad..c20d5b33e4 100644 --- a/android/src/main/kotlin/net/mullvad/talpid/tunnel/ActionAfterDisconnect.kt +++ b/android/src/main/kotlin/net/mullvad/talpid/tunnel/ActionAfterDisconnect.kt @@ -1,7 +1,5 @@ package net.mullvad.talpid.tunnel -sealed class ActionAfterDisconnect { - class Nothing : ActionAfterDisconnect() - class Block : ActionAfterDisconnect() - class Reconnect : ActionAfterDisconnect() +enum class ActionAfterDisconnect { + Nothing, Block, Reconnect } diff --git a/mullvad-jni/src/classes.rs b/mullvad-jni/src/classes.rs index ae8f8c4de1..f4fe862c50 100644 --- a/mullvad-jni/src/classes.rs +++ b/mullvad-jni/src/classes.rs @@ -44,9 +44,7 @@ pub const CLASSES: &[&str] = &[ "net/mullvad/talpid/net/TunnelEndpoint", "net/mullvad/talpid/tun_provider/InetNetwork", "net/mullvad/talpid/tun_provider/TunConfig", - "net/mullvad/talpid/tunnel/ActionAfterDisconnect$Block", - "net/mullvad/talpid/tunnel/ActionAfterDisconnect$Nothing", - "net/mullvad/talpid/tunnel/ActionAfterDisconnect$Reconnect", + "net/mullvad/talpid/tunnel/ActionAfterDisconnect", "net/mullvad/talpid/tunnel/BlockReason$AuthFailed", "net/mullvad/talpid/tunnel/BlockReason$Ipv6Unavailable", "net/mullvad/talpid/tunnel/BlockReason$SetFirewallPolicyError", diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs index fff9bdb191..f93a9bc4ae 100644 --- a/mullvad-jni/src/into_java.rs +++ b/mullvad-jni/src/into_java.rs @@ -70,31 +70,7 @@ wrap_jnix_into_java!(Constraint<T> wrap_jnix_into_java!(KeygenEvent); wrap_jnix_into_java!(Settings); - -impl<'borrow, 'env> IntoJava<'borrow, 'env> for ActionAfterDisconnect -where - 'env: 'borrow, -{ - type JavaType = AutoLocal<'env, 'borrow>; - - fn into_java(self, env: &'borrow JnixEnv<'env>) -> Self::JavaType { - let variant = match self { - ActionAfterDisconnect::Nothing => "Nothing", - ActionAfterDisconnect::Block => "Block", - ActionAfterDisconnect::Reconnect => "Reconnect", - }; - let class_name = format!( - "net/mullvad/talpid/tunnel/ActionAfterDisconnect${}", - variant - ); - let class = env.get_class(&class_name); - - env.auto_local( - env.new_object(&class, "()V", &[]) - .expect("Failed to create ActionAfterDisconnect sub-class variant Java object"), - ) - } -} +wrap_jnix_into_java!(ActionAfterDisconnect); impl<'borrow, 'env> IntoJava<'borrow, 'env> for BlockReason where diff --git a/talpid-types/src/tunnel.rs b/talpid-types/src/tunnel.rs index 24b05ee24b..06b9e96d91 100644 --- a/talpid-types/src/tunnel.rs +++ b/talpid-types/src/tunnel.rs @@ -1,4 +1,6 @@ use crate::net::TunnelEndpoint; +#[cfg(target_os = "android")] +use jnix::IntoJava; use serde::{Deserialize, Serialize}; use std::fmt; @@ -22,6 +24,8 @@ pub enum TunnelStateTransition { /// Action that will be taken after disconnection is complete. #[derive(Clone, Copy, Debug, PartialEq, Serialize, Deserialize)] #[serde(rename_all = "snake_case")] +#[cfg_attr(target_os = "android", derive(IntoJava))] +#[cfg_attr(target_os = "android", jnix(package = "net.mullvad.talpid.tunnel"))] pub enum ActionAfterDisconnect { Nothing, Block, |
