summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-09-22 09:51:29 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-09-22 09:51:29 -0300
commit7f073236b020f2042e89fc6f2e005c2ad89fc464 (patch)
treeede9b595a548ca9554184f32685e1135f0db7f33 /android
parent0ed0091626d560b5a63299f429f22a51c6f23fe2 (diff)
parent82561a21c0ccbabbf570649ab40ae9d7422b9610 (diff)
downloadmullvadvpn-7f073236b020f2042e89fc6f2e005c2ad89fc464.tar.xz
mullvadvpn-7f073236b020f2042e89fc6f2e005c2ad89fc464.zip
Merge branch 'improve-how-service-knows-ui-is-visible'
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt12
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt8
2 files changed, 18 insertions, 2 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 df78593cc6..5034d561a1 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
@@ -77,8 +77,12 @@ class MullvadVpnService : TalpidVpnService() {
}
}
- private var isBound by observable(false) { _, _, isBound ->
- notificationManager.lockedToForeground = isBound
+ private var isBound: Boolean by observable(false) { _, _, isBound ->
+ notificationManager.lockedToForeground = isUiVisible or isBound
+ }
+
+ private var isUiVisible: Boolean by observable(false) { _, _, isUiVisible ->
+ notificationManager.lockedToForeground = isUiVisible or isBound
}
override fun onCreate() {
@@ -160,6 +164,10 @@ class MullvadVpnService : TalpidVpnService() {
inner class LocalBinder : Binder() {
val serviceNotifier
get() = this@MullvadVpnService.serviceNotifier
+
+ var isUiVisible
+ get() = this@MullvadVpnService.isUiVisible
+ set(value) { this@MullvadVpnService.isUiVisible = value }
}
private fun setUp() {
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 8b626eafca..707914c455 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
@@ -27,6 +27,7 @@ class MainActivity : FragmentActivity() {
val problemReport = MullvadProblemReport()
val serviceNotifier = EventNotifier<ServiceConnection?>(null)
+ private var isUiVisible = false
private var service: MullvadVpnService.LocalBinder? = null
private var serviceConnection: ServiceConnection? = null
private var shouldConnect = false
@@ -39,6 +40,8 @@ class MainActivity : FragmentActivity() {
service = localBinder
+ localBinder.isUiVisible = isUiVisible
+
localBinder.serviceNotifier.subscribe(this@MainActivity) { service ->
android.util.Log.d("mullvad", "UI connection to the service changed: $service")
serviceConnection?.onDestroy()
@@ -85,6 +88,8 @@ class MainActivity : FragmentActivity() {
android.util.Log.d("mullvad", "Starting main activity")
super.onStart()
+ isUiVisible = true
+
val intent = Intent(this, MullvadVpnService::class.java)
if (Build.VERSION.SDK_INT >= 26) {
@@ -94,6 +99,7 @@ class MainActivity : FragmentActivity() {
}
bindService(intent, serviceConnectionManager, 0)
+ service?.isUiVisible = true
}
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
@@ -102,6 +108,8 @@ class MainActivity : FragmentActivity() {
override fun onStop() {
android.util.Log.d("mullvad", "Stoping main activity")
+ isUiVisible = false
+ service?.isUiVisible = false
unbindService(serviceConnectionManager)
super.onStop()