summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-12-17 13:45:44 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-12-17 17:03:26 +0000
commit6bb5719b352c3aa96052bcb61f5853dc3023b52d (patch)
tree474e31b8cf15b64c1e674f799a0f5540ae50d7ce /android/src
parent9ff243a6bc1d23409aeec251a3284d52a40dbeff (diff)
downloadmullvadvpn-6bb5719b352c3aa96052bcb61f5853dc3023b52d.tar.xz
mullvadvpn-6bb5719b352c3aa96052bcb61f5853dc3023b52d.zip
Remove service connection coroutines
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt3
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt54
2 files changed, 17 insertions, 40 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
index 3b39862102..fb2c92736c 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
@@ -55,9 +55,6 @@ class MullvadVpnService : TalpidVpnService() {
val serviceNotifier
get() = this@MullvadVpnService.serviceNotifier
- val resetComplete
- get() = this@MullvadVpnService.resetComplete
-
fun stop() {
this@MullvadVpnService.stop()
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
index cd417c3d66..71c8ffdfb5 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
@@ -6,12 +6,9 @@ import android.content.Intent
import android.os.Bundle
import android.os.IBinder
import android.support.v4.app.FragmentActivity
-import kotlinx.coroutines.CompletableDeferred
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
-import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
-import kotlinx.coroutines.runBlocking
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.dataproxy.MullvadProblemReport
import net.mullvad.mullvadvpn.service.MullvadVpnService
@@ -22,24 +19,21 @@ class MainActivity : FragmentActivity() {
val KEY_SHOULD_CONNECT = "should_connect"
}
- private var serviceConnection: ServiceConnection? = null
- private var serviceConnectionSubscription: Int? = null
-
- var service = CompletableDeferred<MullvadVpnService.LocalBinder>()
- private set
-
val problemReport = MullvadProblemReport()
val serviceNotifier = EventNotifier<ServiceConnection?>(null)
- private var quitJob: Job? = null
- private var serviceToStop: MullvadVpnService.LocalBinder? = null
+ private var service: MullvadVpnService.LocalBinder? = null
+ private var serviceConnection: ServiceConnection? = null
+ private var serviceConnectionSubscription: Int? = null
private var shouldConnect = false
- private var waitForDaemonJob: Job? = null
+ private var shouldStopService = false
private val serviceConnectionManager = object : android.content.ServiceConnection {
override fun onServiceConnected(className: ComponentName, binder: IBinder) {
val localBinder = binder as MullvadVpnService.LocalBinder
+ service = localBinder
+
serviceConnectionSubscription = localBinder.serviceNotifier.subscribe { service ->
serviceConnection?.onDestroy()
@@ -54,27 +48,17 @@ class MainActivity : FragmentActivity() {
tryToConnect()
}
}
-
- waitForDaemonJob = GlobalScope.launch(Dispatchers.Default) {
- localBinder.resetComplete?.await()
- service.complete(localBinder)
- }
}
override fun onServiceDisconnected(className: ComponentName) {
- waitForDaemonJob?.cancel()
- waitForDaemonJob = null
-
- serviceConnectionSubscription?.let { subscription ->
- runBlocking {
- service.await().serviceNotifier.unsubscribe(subscription)
+ serviceConnectionSubscription?.let { subscriptionId ->
+ service?.apply {
+ serviceNotifier.unsubscribe(subscriptionId)
}
- serviceConnection = null
}
- service.cancel()
- service = CompletableDeferred<MullvadVpnService.LocalBinder>()
-
+ serviceConnection = null
+ serviceConnectionSubscription = null
serviceNotifier.notify(null)
}
}
@@ -107,11 +91,12 @@ class MainActivity : FragmentActivity() {
}
override fun onStop() {
- quitJob?.cancel()
-
serviceNotifier.unsubscribeAll()
- serviceToStop?.apply { stop() }
+ if (shouldStopService) {
+ service?.apply { stop() }
+ }
+
unbindService(serviceConnectionManager)
super.onStop()
@@ -120,8 +105,6 @@ class MainActivity : FragmentActivity() {
override fun onDestroy() {
serviceConnection?.onDestroy()
- waitForDaemonJob?.cancel()
-
super.onDestroy()
}
@@ -144,11 +127,8 @@ class MainActivity : FragmentActivity() {
}
fun quit() {
- quitJob?.cancel()
- quitJob = GlobalScope.launch(Dispatchers.Main) {
- serviceToStop = service.await()
- finishAndRemoveTask()
- }
+ shouldStopService = true
+ finishAndRemoveTask()
}
private fun tryToConnect() {