summaryrefslogtreecommitdiffhomepage
path: root/android/src/main
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-01-04 22:07:11 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-04-12 13:19:37 +0000
commit5cb56b98fcb259a00f7c212ece231ea468e0a169 (patch)
tree9052ec65a171b2ee1acc31c0cf682b6efe60878f /android/src/main
parentd54186c61f7534e7658662310af25ba5ca079fbd (diff)
downloadmullvadvpn-5cb56b98fcb259a00f7c212ece231ea468e0a169.tar.xz
mullvadvpn-5cb56b98fcb259a00f7c212ece231ea468e0a169.zip
Move `ConnectionProxy` into `ServiceEndpoint`
Diffstat (limited to 'android/src/main')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt20
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/ServiceInstance.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ConnectionProxy.kt (renamed from android/src/main/kotlin/net/mullvad/mullvadvpn/service/ConnectionProxy.kt)7
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt5
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/tunnelstate/TunnelStateUpdater.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceDependentFragment.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/notification/TunnelStateNotification.kt2
7 files changed, 20 insertions, 20 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
index d287a811f1..a12b7c5f94 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
@@ -50,6 +50,9 @@ class MullvadVpnService : TalpidVpnService() {
private val binder = LocalBinder()
private val serviceNotifier = EventNotifier<ServiceInstance?>(null)
+ private val connectionProxy
+ get() = endpoint.connectionProxy
+
private var state = State.Running
private var setUpDaemonJob: Job? = null
@@ -76,16 +79,13 @@ class MullvadVpnService : TalpidVpnService() {
private lateinit var keyguardManager: KeyguardManager
private lateinit var notificationManager: ForegroundNotificationManager
private lateinit var tunnelStateUpdater: TunnelStateUpdater
- private lateinit var vpnPermission: VpnPermission
private var pendingAction by observable<PendingAction?>(null) { _, _, _ ->
- val connectionProxy = instance?.connectionProxy
-
// The service instance awaits the split tunneling initialization, which also starts the
// endpoint. So if the instance is not null, the endpoint has certainly been initialized.
- if (connectionProxy != null) {
+ if (instance != null) {
endpoint.settingsListener.settings?.let { settings ->
- handlePendingAction(connectionProxy, settings)
+ handlePendingAction(settings)
}
}
}
@@ -110,7 +110,8 @@ class MullvadVpnService : TalpidVpnService() {
Looper.getMainLooper(),
daemonInstance.intermittentDaemon,
connectivityListener,
- SplitTunnelingPersistence(this)
+ SplitTunnelingPersistence(this),
+ VpnPermission(this)
)
notificationManager =
@@ -126,8 +127,6 @@ class MullvadVpnService : TalpidVpnService() {
start()
}
-
- vpnPermission = VpnPermission(this)
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
@@ -234,7 +233,6 @@ class MullvadVpnService : TalpidVpnService() {
}
private suspend fun setUpInstance(daemon: MullvadDaemon, settings: Settings) {
- val connectionProxy = ConnectionProxy(vpnPermission, daemonInstance.intermittentDaemon)
val customDns = CustomDns(daemon, endpoint.settingsListener)
endpoint.splitTunneling.onChange.subscribe(this@MullvadVpnService) { excludedApps ->
@@ -243,7 +241,7 @@ class MullvadVpnService : TalpidVpnService() {
connectionProxy.reconnect()
}
- handlePendingAction(connectionProxy, settings)
+ handlePendingAction(settings)
endpoint.locationInfoCache.stateEvents = connectionProxy.onStateChange
@@ -280,7 +278,7 @@ class MullvadVpnService : TalpidVpnService() {
}
}
- private fun handlePendingAction(connectionProxy: ConnectionProxy, settings: Settings) {
+ private fun handlePendingAction(settings: Settings) {
when (pendingAction) {
PendingAction.Connect -> {
if (settings.accountToken != null) {
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ServiceInstance.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ServiceInstance.kt
index f97d8c870f..e3338d587f 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ServiceInstance.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ServiceInstance.kt
@@ -1,6 +1,7 @@
package net.mullvad.mullvadvpn.service
import android.os.Messenger
+import net.mullvad.mullvadvpn.service.endpoint.ConnectionProxy
import net.mullvad.mullvadvpn.util.Intermittent
class ServiceInstance(
@@ -11,7 +12,6 @@ class ServiceInstance(
val customDns: CustomDns,
) {
fun onDestroy() {
- connectionProxy.onDestroy()
customDns.onDestroy()
}
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ConnectionProxy.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ConnectionProxy.kt
index aedacc8667..26456617f2 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ConnectionProxy.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ConnectionProxy.kt
@@ -1,4 +1,4 @@
-package net.mullvad.mullvadvpn.service
+package net.mullvad.mullvadvpn.service.endpoint
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
@@ -10,15 +10,13 @@ import kotlinx.coroutines.channels.sendBlocking
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import net.mullvad.mullvadvpn.model.TunnelState
-import net.mullvad.mullvadvpn.service.endpoint.VpnPermission
import net.mullvad.mullvadvpn.ui.MainActivity
-import net.mullvad.mullvadvpn.util.Intermittent
import net.mullvad.talpid.tunnel.ActionAfterDisconnect
import net.mullvad.talpid.util.EventNotifier
val ANTICIPATED_STATE_TIMEOUT_MS = 1500L
-class ConnectionProxy(val vpnPermission: VpnPermission, val daemon: Intermittent<MullvadDaemon>) {
+class ConnectionProxy(val vpnPermission: VpnPermission, endpoint: ServiceEndpoint) {
private enum class Command {
CONNECT,
RECONNECT,
@@ -26,6 +24,7 @@ class ConnectionProxy(val vpnPermission: VpnPermission, val daemon: Intermittent
}
private val commandChannel = spawnActor()
+ private val daemon = endpoint.intermittentDaemon
var mainActivity: MainActivity? = null
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt
index 8e11e1e1cd..69c5b23b60 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt
@@ -22,7 +22,8 @@ class ServiceEndpoint(
looper: Looper,
internal val intermittentDaemon: Intermittent<MullvadDaemon>,
val connectivityListener: ConnectivityListener,
- splitTunnelingPersistence: SplitTunnelingPersistence
+ splitTunnelingPersistence: SplitTunnelingPersistence,
+ vpnPermission: VpnPermission
) {
private val listeners = mutableSetOf<Messenger>()
private val registrationQueue: SendChannel<Messenger> = startRegistrator()
@@ -33,6 +34,7 @@ class ServiceEndpoint(
val messenger = Messenger(dispatcher)
+ val connectionProxy = ConnectionProxy(vpnPermission, this)
val settingsListener = SettingsListener(this)
val accountCache = AccountCache(this)
@@ -51,6 +53,7 @@ class ServiceEndpoint(
registrationQueue.close()
accountCache.onDestroy()
+ connectionProxy.onDestroy()
keyStatusListener.onDestroy()
locationInfoCache.onDestroy()
settingsListener.onDestroy()
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/tunnelstate/TunnelStateUpdater.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/tunnelstate/TunnelStateUpdater.kt
index 638a30d333..53c12b456c 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/tunnelstate/TunnelStateUpdater.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/tunnelstate/TunnelStateUpdater.kt
@@ -1,8 +1,8 @@
package net.mullvad.mullvadvpn.service.tunnelstate
import android.content.Context
-import net.mullvad.mullvadvpn.service.ConnectionProxy
import net.mullvad.mullvadvpn.service.ServiceInstance
+import net.mullvad.mullvadvpn.service.endpoint.ConnectionProxy
import net.mullvad.talpid.util.EventNotifier
class TunnelStateUpdater(context: Context, serviceNotifier: EventNotifier<ServiceInstance?>) {
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceDependentFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceDependentFragment.kt
index 0cb33c3334..0383500aa9 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceDependentFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceDependentFragment.kt
@@ -7,9 +7,9 @@ import android.view.ViewGroup
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.dataproxy.AppVersionInfoCache
import net.mullvad.mullvadvpn.dataproxy.RelayListListener
-import net.mullvad.mullvadvpn.service.ConnectionProxy
import net.mullvad.mullvadvpn.service.CustomDns
import net.mullvad.mullvadvpn.service.MullvadDaemon
+import net.mullvad.mullvadvpn.service.endpoint.ConnectionProxy
import net.mullvad.mullvadvpn.ui.serviceconnection.AccountCache
import net.mullvad.mullvadvpn.ui.serviceconnection.KeyStatusListener
import net.mullvad.mullvadvpn.ui.serviceconnection.LocationInfoCache
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/notification/TunnelStateNotification.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/notification/TunnelStateNotification.kt
index 80ae9da5e4..1ec6ce7da5 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/notification/TunnelStateNotification.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/notification/TunnelStateNotification.kt
@@ -3,7 +3,7 @@ package net.mullvad.mullvadvpn.ui.notification
import android.content.Context
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.model.TunnelState
-import net.mullvad.mullvadvpn.service.ConnectionProxy
+import net.mullvad.mullvadvpn.service.endpoint.ConnectionProxy
import net.mullvad.talpid.tunnel.ActionAfterDisconnect
import net.mullvad.talpid.tunnel.ErrorState
import net.mullvad.talpid.tunnel.ErrorStateCause