summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-06-04 16:55:04 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-06-05 15:06:02 +0000
commit656b3b3ab1799a53a928b7f711f193a75006896c (patch)
treec0a1011727d6d631fb050963e213ee8071080d16 /android/src
parent284a08c528ac520c9e4dfef33254e7b511bf8679 (diff)
downloadmullvadvpn-656b3b3ab1799a53a928b7f711f193a75006896c.tar.xz
mullvadvpn-656b3b3ab1799a53a928b7f711f193a75006896c.zip
Block screenshots when entering a secure screen
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(