summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt20
1 files changed, 20 insertions, 0 deletions
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 10e886f73e..0ec9581fc4 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
@@ -6,8 +6,10 @@ import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.os.IBinder
+import android.support.v4.app.Fragment
import android.support.v4.app.FragmentActivity
import android.support.v4.app.FragmentManager
+import android.view.WindowManager
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
@@ -27,6 +29,7 @@ class MainActivity : FragmentActivity() {
private var service: MullvadVpnService.LocalBinder? = null
private var serviceConnection: ServiceConnection? = null
private var shouldConnect = false
+ private var visibleSecureScreens = HashSet<Fragment>()
private val serviceConnectionManager = object : android.content.ServiceConnection {
override fun onServiceConnected(className: ComponentName, binder: IBinder) {
@@ -105,6 +108,23 @@ class MainActivity : FragmentActivity() {
super.onDestroy()
}
+ fun enterSecureScreen(screen: Fragment) {
+ synchronized(this) {
+ visibleSecureScreens.add(screen)
+ window?.addFlags(WindowManager.LayoutParams.FLAG_SECURE)
+ }
+ }
+
+ fun leaveSecureScreen(screen: Fragment) {
+ synchronized(this) {
+ visibleSecureScreens.remove(screen)
+
+ if (visibleSecureScreens.isEmpty()) {
+ window?.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
+ }
+ }
+ }
+
fun openSettings() {
supportFragmentManager?.beginTransaction()?.apply {
setCustomAnimations(