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