diff options
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt | 5 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt | 17 |
2 files changed, 17 insertions, 5 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt index 8bb7b5945d..d0900cee15 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt @@ -37,7 +37,7 @@ class MainActivity : FragmentActivity() { private set var appVersionInfoCache = AppVersionInfoCache(this) - val connectionProxy = ConnectionProxy(this) + val connectionProxy = ConnectionProxy(this, daemon) val keyStatusListener = KeyStatusListener(daemon) val problemReport = MullvadProblemReport() var settingsListener = SettingsListener(this) @@ -77,6 +77,7 @@ class MainActivity : FragmentActivity() { } appVersionInfoCache.onCreate() + connectionProxy.mainActivity = this } override fun onStart() { @@ -107,6 +108,8 @@ class MainActivity : FragmentActivity() { } override fun onDestroy() { + connectionProxy.mainActivity = null + accountCache.onDestroy() appVersionInfoCache.onDestroy() keyStatusListener.onDestroy() 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 3fb51c61c9..5aef547a02 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt @@ -1,19 +1,22 @@ package net.mullvad.mullvadvpn.dataproxy +import android.content.Context import android.net.VpnService import kotlinx.coroutines.launch import kotlinx.coroutines.CompletableDeferred +import kotlinx.coroutines.Deferred import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.Job import net.mullvad.mullvadvpn.MainActivity +import net.mullvad.mullvadvpn.MullvadDaemon import net.mullvad.mullvadvpn.model.ActionAfterDisconnect import net.mullvad.mullvadvpn.model.TunnelState -class ConnectionProxy(val parentActivity: MainActivity) { - val daemon = parentActivity.daemon +class ConnectionProxy(val context: Context, val daemon: Deferred<MullvadDaemon>) { + var mainActivity: MainActivity? = null private var activeAction: Job? = null @@ -106,14 +109,20 @@ class ConnectionProxy(val parentActivity: MainActivity) { } private fun requestVpnPermission() { - val intent = VpnService.prepare(parentActivity) + val intent = VpnService.prepare(context) vpnPermission = CompletableDeferred() if (intent == null) { vpnPermission.complete(true) } else { - parentActivity.requestVpnPermission(intent) + val activity = mainActivity + + if (activity != null) { + activity.requestVpnPermission(intent) + } else { + vpnPermission.complete(false) + } } } |
