diff --git a/app/src/main/java/com/x8bit/bitwarden/data/platform/manager/model/FlagKey.kt b/app/src/main/java/com/x8bit/bitwarden/data/platform/manager/model/FlagKey.kt index b81230f1f3..8fce1161ff 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/platform/manager/model/FlagKey.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/platform/manager/model/FlagKey.kt @@ -45,6 +45,7 @@ sealed class FlagKey { SimpleLoginSelfHostAlias, ChromeAutofill, MobileErrorReporting, + FlightRecorder, ) } } @@ -76,6 +77,15 @@ sealed class FlagKey { override val isRemotelyConfigured: Boolean = false } + /** + * Data object holding the key for enabling the flught recorder feature. + */ + data object FlightRecorder : FlagKey() { + override val keyName: String = "enable-pm-flight-recorder" + override val defaultValue: Boolean = false + override val isRemotelyConfigured: Boolean = false + } + /** * Data object holding the feature flag key for the Onboarding Carousel feature. */ diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/debugmenu/components/FeatureFlagListItems.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/debugmenu/components/FeatureFlagListItems.kt index 15a27a1d71..793aa16bec 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/debugmenu/components/FeatureFlagListItems.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/debugmenu/components/FeatureFlagListItems.kt @@ -21,7 +21,9 @@ fun FlagKey.ListItemContent( FlagKey.DummyBoolean, is FlagKey.DummyInt, FlagKey.DummyString, - -> Unit + -> { + Unit + } FlagKey.AuthenticatorSync, FlagKey.EmailVerification, @@ -43,6 +45,7 @@ fun FlagKey.ListItemContent( FlagKey.SimpleLoginSelfHostAlias, FlagKey.ChromeAutofill, FlagKey.MobileErrorReporting, + FlagKey.FlightRecorder, -> { @Suppress("UNCHECKED_CAST") BooleanFlagItem( @@ -107,4 +110,5 @@ private fun FlagKey.getDisplayLabel(): String = when (this) { FlagKey.SimpleLoginSelfHostAlias -> stringResource(R.string.simple_login_self_hosted_aliases) FlagKey.ChromeAutofill -> stringResource(R.string.enable_chrome_autofill) FlagKey.MobileErrorReporting -> stringResource(R.string.enable_error_reporting_dialog) + FlagKey.FlightRecorder -> stringResource(R.string.enable_flight_recorder) } diff --git a/app/src/main/res/values/strings_non_localized.xml b/app/src/main/res/values/strings_non_localized.xml index ff80c2e7eb..75c848a995 100644 --- a/app/src/main/res/values/strings_non_localized.xml +++ b/app/src/main/res/values/strings_non_localized.xml @@ -30,5 +30,6 @@ SimpleLogin self-hosted aliases Enable chrome autofill Enable error reporting dialog + Enable flight recorder diff --git a/app/src/test/java/com/x8bit/bitwarden/data/platform/manager/FlagKeyTest.kt b/app/src/test/java/com/x8bit/bitwarden/data/platform/manager/FlagKeyTest.kt index 9315fd2e7e..6c7c645d72 100644 --- a/app/src/test/java/com/x8bit/bitwarden/data/platform/manager/FlagKeyTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/data/platform/manager/FlagKeyTest.kt @@ -81,6 +81,14 @@ class FlagKeyTest { FlagKey.ChromeAutofill.keyName, "android-chrome-autofill", ) + assertEquals( + FlagKey.MobileErrorReporting.keyName, + "mobile-error-reporting", + ) + assertEquals( + FlagKey.FlightRecorder.keyName, + "enable-pm-flight-recorder", + ) } @Test @@ -104,6 +112,8 @@ class FlagKeyTest { FlagKey.SimpleLoginSelfHostAlias, FlagKey.CipherKeyEncryption, FlagKey.ChromeAutofill, + FlagKey.MobileErrorReporting, + FlagKey.FlightRecorder, ).all { !it.defaultValue }, @@ -140,6 +150,8 @@ class FlagKeyTest { assertTrue( listOf( FlagKey.IgnoreEnvironmentCheck, + FlagKey.MobileErrorReporting, + FlagKey.FlightRecorder, ).all { !it.isRemotelyConfigured }, diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/debugmenu/DebugMenuViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/debugmenu/DebugMenuViewModelTest.kt index 28b1c37cbf..51b19a8a3d 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/debugmenu/DebugMenuViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/debugmenu/DebugMenuViewModelTest.kt @@ -139,6 +139,7 @@ private val DEFAULT_MAP_VALUE: ImmutableMap, Any> = persistentMapOf FlagKey.SimpleLoginSelfHostAlias to true, FlagKey.ChromeAutofill to true, FlagKey.MobileErrorReporting to true, + FlagKey.FlightRecorder to true, ) private val UPDATED_MAP_VALUE: ImmutableMap, Any> = persistentMapOf( @@ -161,6 +162,7 @@ private val UPDATED_MAP_VALUE: ImmutableMap, Any> = persistentMapOf FlagKey.SimpleLoginSelfHostAlias to false, FlagKey.ChromeAutofill to false, FlagKey.MobileErrorReporting to false, + FlagKey.FlightRecorder to false, ) private val DEFAULT_STATE = DebugMenuState(