summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt5
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt17
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)
+ }
}
}