diff options
| author | David Göransson <david.goransson@mullvad.net> | 2024-11-18 14:23:05 +0100 |
|---|---|---|
| committer | David Göransson <david.goransson@mullvad.net> | 2024-11-27 09:00:18 +0100 |
| commit | 1bb7fc7ebaa2837ed9f9d28c2bb5a6fd91033988 (patch) | |
| tree | a83565926fb753a2dd9fd24f0e2bd07262e4507e /android/lib/model/src | |
| parent | 0d155385e1cb7075012bd270de0398d83a438bc5 (diff) | |
| download | mullvadvpn-1bb7fc7ebaa2837ed9f9d28c2bb5a6fd91033988.tar.xz mullvadvpn-1bb7fc7ebaa2837ed9f9d28c2bb5a6fd91033988.zip | |
Handle legacy always-on vpn profiles
Co-authored-by: Jonatan Rhodin <jonatan.rhodin@mullvad.net>
Diffstat (limited to 'android/lib/model/src')
5 files changed, 28 insertions, 6 deletions
diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ConnectError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ConnectError.kt index 307a235314..6feeeee579 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ConnectError.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ConnectError.kt @@ -3,5 +3,5 @@ package net.mullvad.mullvadvpn.lib.model sealed interface ConnectError { data class Unknown(val throwable: Throwable) : ConnectError - data object NoVpnPermission : ConnectError + data class NotPrepared(val error: PrepareError) : ConnectError } diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ErrorStateCause.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ErrorStateCause.kt index ef5947c89a..fdb7dd3a1a 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ErrorStateCause.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ErrorStateCause.kt @@ -17,7 +17,6 @@ sealed class ErrorStateCause { data object DnsError : ErrorStateCause() - // Regression data class InvalidDnsServers(val addresses: List<InetAddress>) : ErrorStateCause() data object StartTunnelError : ErrorStateCause() @@ -26,7 +25,11 @@ sealed class ErrorStateCause { data object IsOffline : ErrorStateCause() - data object VpnPermissionDenied : ErrorStateCause() + data object NotPrepared : ErrorStateCause() + + data class OtherAlwaysOnApp(val appName: String) : ErrorStateCause() + + data object OtherLegacyAlwaysOnApp : ErrorStateCause() } sealed interface AuthFailedError { diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationAction.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationAction.kt index ec938a9fbf..141fe739f5 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationAction.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationAction.kt @@ -15,6 +15,6 @@ sealed interface NotificationAction { data object Dismiss : Tunnel - data object RequestPermission : Tunnel + data object RequestVpnProfile : Tunnel } } diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationTunnelState.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationTunnelState.kt index fffe86c247..3ca573a839 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationTunnelState.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationTunnelState.kt @@ -1,7 +1,7 @@ package net.mullvad.mullvadvpn.lib.model sealed interface NotificationTunnelState { - data class Disconnected(val hasVpnPermission: Boolean) : NotificationTunnelState + data class Disconnected(val prepareError: PrepareError?) : NotificationTunnelState data object Connecting : NotificationTunnelState @@ -18,7 +18,9 @@ sealed interface NotificationTunnelState { data object VpnPermissionDenied : Error - data object AlwaysOnVpn : Error + data class AlwaysOnVpn(val appName: String) : Error + + data object LegacyLockdown : Error data object Critical : Error } diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/PrepareError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/PrepareError.kt new file mode 100644 index 0000000000..8954c5f98a --- /dev/null +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/PrepareError.kt @@ -0,0 +1,17 @@ +package net.mullvad.mullvadvpn.lib.model + +import android.content.Intent + +sealed interface PrepareResult + +sealed interface PrepareError : PrepareResult { + // Result from VpnService.prepare() being invoked with legacy VPN app has always-on + data object OtherLegacyAlwaysOnVpn : PrepareError + + // Prepare gives intent but there is other always VPN app + data class OtherAlwaysOnApp(val appName: String) : PrepareError + + data class NotPrepared(val prepareIntent: Intent) : PrepareError +} + +data object Prepared : PrepareResult |
