diff options
Diffstat (limited to 'android')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt | 11 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt | 17 |
2 files changed, 17 insertions, 11 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt index e2d3cc8f4d..8bb7b5945d 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt @@ -13,7 +13,6 @@ import android.app.Activity import android.content.ComponentName import android.content.Intent import android.content.ServiceConnection -import android.net.VpnService import android.os.Bundle import android.os.IBinder import android.support.v4.app.FragmentActivity @@ -134,14 +133,8 @@ class MainActivity : FragmentActivity() { } } - fun requestVpnPermission() { - val intent = VpnService.prepare(this) - - if (intent != null) { - startActivityForResult(intent, 0) - } else { - connectionProxy.vpnPermission.complete(true) - } + fun requestVpnPermission(intent: Intent) { + startActivityForResult(intent, 0) } fun quit() { 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 aa2ac474d4..3fb51c61c9 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt @@ -1,5 +1,7 @@ package net.mullvad.mullvadvpn.dataproxy +import android.net.VpnService + import kotlinx.coroutines.launch import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.Dispatchers @@ -47,8 +49,7 @@ class ConnectionProxy(val parentActivity: MainActivity) { if (anticipateConnectingState()) { cancelActiveAction() - vpnPermission = CompletableDeferred() - parentActivity.requestVpnPermission() + requestVpnPermission() activeAction = GlobalScope.launch(Dispatchers.Default) { if (vpnPermission.await()) { @@ -104,6 +105,18 @@ class ConnectionProxy(val parentActivity: MainActivity) { } } + private fun requestVpnPermission() { + val intent = VpnService.prepare(parentActivity) + + vpnPermission = CompletableDeferred() + + if (intent == null) { + vpnPermission.complete(true) + } else { + parentActivity.requestVpnPermission(intent) + } + } + private fun fetchInitialState() = GlobalScope.launch(Dispatchers.Default) { val initialState = daemon.await().getState() |
