summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-10-03 18:46:41 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-10-05 12:32:42 +0000
commitdf2c5877ab88adaa6787d50308c0d1ea467db934 (patch)
tree00f6d08508cf058e1206af890ef3bd33c5ec7845 /android/src
parent9dca1211e1e0c707b2ec59036b510c44872a6963 (diff)
downloadmullvadvpn-df2c5877ab88adaa6787d50308c0d1ea467db934.tar.xz
mullvadvpn-df2c5877ab88adaa6787d50308c0d1ea467db934.zip
React to a start command with a quit action
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/AndroidManifest.xml3
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt7
2 files changed, 9 insertions, 1 deletions
diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml
index 0093dbcb21..6295231f64 100644
--- a/android/src/main/AndroidManifest.xml
+++ b/android/src/main/AndroidManifest.xml
@@ -36,6 +36,9 @@
<intent-filter>
<action android:name="net.mullvad.mullvadvpn.disconnect_action" />
</intent-filter>
+ <intent-filter>
+ <action android:name="net.mullvad.mullvadvpn.quit_action" />
+ </intent-filter>
</service>
<service android:name="net.mullvad.mullvadvpn.service.MullvadTileService"
android:label="@string/app_name"
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 5034d561a1..439216e897 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
@@ -28,6 +28,7 @@ class MullvadVpnService : TalpidVpnService() {
val KEY_CONNECT_ACTION = "net.mullvad.mullvadvpn.connect_action"
val KEY_DISCONNECT_ACTION = "net.mullvad.mullvadvpn.disconnect_action"
+ val KEY_QUIT_ACTION = "net.mullvad.mullvadvpn.quit_action"
init {
System.loadLibrary("mullvad_jni")
@@ -99,6 +100,7 @@ class MullvadVpnService : TalpidVpnService() {
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
Log.d(TAG, "Starting service")
val startResult = super.onStartCommand(intent, flags, startId)
+ var quitCommand = false
if (!keyguardManager.isDeviceLocked) {
val action = intent?.action
@@ -107,10 +109,13 @@ class MullvadVpnService : TalpidVpnService() {
pendingAction = PendingAction.Connect
} else if (action == KEY_DISCONNECT_ACTION) {
pendingAction = PendingAction.Disconnect
+ } else if (action == KEY_QUIT_ACTION && !notificationManager.onForeground) {
+ quitCommand = true
+ stop()
}
}
- if (shouldStop) {
+ if (shouldStop && !quitCommand) {
shouldStop = false
if (isStopping) {