From beb9d0db45b6c2b1ca4f72fa0a65dcb89e13c8f6 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 17 Aug 2021 20:20:18 +0200 Subject: [PATCH] Added a setting to disable fragment's secure mode --- .../linphone/activities/main/fragments/SecureFragment.kt | 6 ++++++ .../main/settings/viewmodels/AdvancedSettingsViewModel.kt | 8 ++++++++ app/src/main/java/org/linphone/core/CorePreferences.kt | 7 +++++++ app/src/main/res/layout/settings_advanced_fragment.xml | 7 +++++++ app/src/main/res/values/strings.xml | 2 ++ 5 files changed, 30 insertions(+) diff --git a/app/src/main/java/org/linphone/activities/main/fragments/SecureFragment.kt b/app/src/main/java/org/linphone/activities/main/fragments/SecureFragment.kt index c7951838c..496d80376 100644 --- a/app/src/main/java/org/linphone/activities/main/fragments/SecureFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/fragments/SecureFragment.kt @@ -31,6 +31,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.activities.GenericFragment import org.linphone.core.tools.Log @@ -63,6 +64,11 @@ abstract class SecureFragment : GenericFragment() { } private fun enableSecureMode(enable: Boolean) { + if (corePreferences.disableSecureMode) { + Log.d("[Secure Fragment] Disabling secure flag on window due to setting") + return + } + Log.d("[Secure Fragment] ${if (enable) "Enabling" else "Disabling"} secure flag on window") val window = requireActivity().window val windowManager = requireActivity().windowManager diff --git a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AdvancedSettingsViewModel.kt b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AdvancedSettingsViewModel.kt index 5d283ee1d..ba78aaa23 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AdvancedSettingsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AdvancedSettingsViewModel.kt @@ -134,6 +134,13 @@ class AdvancedSettingsViewModel : LogsUploadViewModel() { } val vfs = MutableLiveData() + val disableSecureFragmentListener = object : SettingListenerStub() { + override fun onBoolValueChanged(newValue: Boolean) { + prefs.disableSecureMode = newValue + } + } + val disableSecureFragment = MutableLiveData() + val goToBatterySettingsListener = object : SettingListenerStub() { override fun onClicked() { goToBatterySettingsEvent.value = Event(true) @@ -174,6 +181,7 @@ class AdvancedSettingsViewModel : LogsUploadViewModel() { deviceName.value = prefs.deviceName remoteProvisioningUrl.value = core.provisioningUri vfs.value = prefs.vfsEnabled + disableSecureFragment.value = prefs.disableSecureMode batterySettingsVisibility.value = Version.sdkAboveOrEqual(Version.API23_MARSHMALLOW_60) } diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index d2dfd7f39..53b27704f 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -133,6 +133,13 @@ class CorePreferences constructor(private val context: Context) { config.setInt("app", "dark_mode", value) } + /** Allow to make screenshots of encrypted chat rooms, disables fragment's secure mode */ + var disableSecureMode: Boolean + get() = config.getBool("app", "disable_fragment_secure_mode", false) + set(value) { + config.setBool("app", "disable_fragment_secure_mode", value) + } + /* Audio */ /* Video */ diff --git a/app/src/main/res/layout/settings_advanced_fragment.xml b/app/src/main/res/layout/settings_advanced_fragment.xml index 1f6571f1a..5c56407b0 100644 --- a/app/src/main/res/layout/settings_advanced_fragment.xml +++ b/app/src/main/res/layout/settings_advanced_fragment.xml @@ -163,6 +163,13 @@ linphone:checked="@={viewModel.vfs}" linphone:enabled="@{!viewModel.vfs}"/> + + Reset logs Debug settings Other settings + Disable UI\'s secure mode + Allow screen capture/recording on sensitive views Hostname