summaryrefslogtreecommitdiffhomepage
path: root/android/lib/model/src/main
diff options
context:
space:
mode:
authorDavid Göransson <david.goransson@mullvad.net>2024-11-18 14:23:05 +0100
committerDavid Göransson <david.goransson@mullvad.net>2024-11-27 09:00:18 +0100
commit1bb7fc7ebaa2837ed9f9d28c2bb5a6fd91033988 (patch)
treea83565926fb753a2dd9fd24f0e2bd07262e4507e /android/lib/model/src/main
parent0d155385e1cb7075012bd270de0398d83a438bc5 (diff)
downloadmullvadvpn-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/main')
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ConnectError.kt2
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ErrorStateCause.kt7
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationAction.kt2
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationTunnelState.kt6
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/PrepareError.kt17
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