summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-08-23 14:15:01 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-08-29 11:13:16 +0000
commitc35ff9a568248c2c8db299fea48dd3eeb6bcd60c (patch)
tree9228dfbec7bd8e3219e1817ba4b00481558f11df
parent570aa1f3aa328fb330a500630698604b7b5204c8 (diff)
downloadmullvadvpn-c35ff9a568248c2c8db299fea48dd3eeb6bcd60c.tar.xz
mullvadvpn-c35ff9a568248c2c8db299fea48dd3eeb6bcd60c.zip
Move VPN permission to `ConnectionProxy`
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt15
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt6
2 files changed, 9 insertions, 12 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt
index ffc11354ff..e2d3cc8f4d 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt
@@ -32,8 +32,6 @@ import net.mullvad.mullvadvpn.relaylist.RelayItem
import net.mullvad.mullvadvpn.relaylist.RelayList
class MainActivity : FragmentActivity() {
- private var vpnPermission: CompletableDeferred<Boolean>? = null
-
var daemon = CompletableDeferred<MullvadDaemon>()
private set
var service = CompletableDeferred<MullvadVpnService.LocalBinder>()
@@ -93,9 +91,9 @@ class MainActivity : FragmentActivity() {
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
if (resultCode == Activity.RESULT_OK) {
- vpnPermission?.complete(true)
+ connectionProxy.vpnPermission.complete(true)
} else {
- vpnPermission?.complete(false)
+ connectionProxy.vpnPermission.complete(false)
}
}
@@ -136,19 +134,14 @@ class MainActivity : FragmentActivity() {
}
}
- fun requestVpnPermission(): Deferred<Boolean> {
+ fun requestVpnPermission() {
val intent = VpnService.prepare(this)
- val request = CompletableDeferred<Boolean>()
-
- vpnPermission = request
if (intent != null) {
startActivityForResult(intent, 0)
} else {
- request.complete(true)
+ connectionProxy.vpnPermission.complete(true)
}
-
- return request
}
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 26abe8a106..aa2ac474d4 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt
@@ -1,6 +1,7 @@
package net.mullvad.mullvadvpn.dataproxy
import kotlinx.coroutines.launch
+import kotlinx.coroutines.CompletableDeferred
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
@@ -40,11 +41,14 @@ class ConnectionProxy(val parentActivity: MainActivity) {
value?.invoke(uiState)
}
+ var vpnPermission = CompletableDeferred<Boolean>()
+
fun connect() {
if (anticipateConnectingState()) {
cancelActiveAction()
- val vpnPermission = parentActivity.requestVpnPermission()
+ vpnPermission = CompletableDeferred()
+ parentActivity.requestVpnPermission()
activeAction = GlobalScope.launch(Dispatchers.Default) {
if (vpnPermission.await()) {