Skip to content

Commit 42df973

Browse files
PM-19543: Add flight recorder feature flag (#4929)
1 parent cfa753c commit 42df973

File tree

5 files changed

+30
-1
lines changed

5 files changed

+30
-1
lines changed

app/src/main/java/com/x8bit/bitwarden/data/platform/manager/model/FlagKey.kt

+10
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ sealed class FlagKey<out T : Any> {
4545
SimpleLoginSelfHostAlias,
4646
ChromeAutofill,
4747
MobileErrorReporting,
48+
FlightRecorder,
4849
)
4950
}
5051
}
@@ -76,6 +77,15 @@ sealed class FlagKey<out T : Any> {
7677
override val isRemotelyConfigured: Boolean = false
7778
}
7879

80+
/**
81+
* Data object holding the key for enabling the flught recorder feature.
82+
*/
83+
data object FlightRecorder : FlagKey<Boolean>() {
84+
override val keyName: String = "enable-pm-flight-recorder"
85+
override val defaultValue: Boolean = false
86+
override val isRemotelyConfigured: Boolean = false
87+
}
88+
7989
/**
8090
* Data object holding the feature flag key for the Onboarding Carousel feature.
8191
*/

app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/debugmenu/components/FeatureFlagListItems.kt

+5-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ fun <T : Any> FlagKey<T>.ListItemContent(
2121
FlagKey.DummyBoolean,
2222
is FlagKey.DummyInt,
2323
FlagKey.DummyString,
24-
-> Unit
24+
-> {
25+
Unit
26+
}
2527

2628
FlagKey.AuthenticatorSync,
2729
FlagKey.EmailVerification,
@@ -43,6 +45,7 @@ fun <T : Any> FlagKey<T>.ListItemContent(
4345
FlagKey.SimpleLoginSelfHostAlias,
4446
FlagKey.ChromeAutofill,
4547
FlagKey.MobileErrorReporting,
48+
FlagKey.FlightRecorder,
4649
-> {
4750
@Suppress("UNCHECKED_CAST")
4851
BooleanFlagItem(
@@ -107,4 +110,5 @@ private fun <T : Any> FlagKey<T>.getDisplayLabel(): String = when (this) {
107110
FlagKey.SimpleLoginSelfHostAlias -> stringResource(R.string.simple_login_self_hosted_aliases)
108111
FlagKey.ChromeAutofill -> stringResource(R.string.enable_chrome_autofill)
109112
FlagKey.MobileErrorReporting -> stringResource(R.string.enable_error_reporting_dialog)
113+
FlagKey.FlightRecorder -> stringResource(R.string.enable_flight_recorder)
110114
}

app/src/main/res/values/strings_non_localized.xml

+1
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,6 @@
3030
<string name="simple_login_self_hosted_aliases">SimpleLogin self-hosted aliases</string>
3131
<string name="enable_chrome_autofill">Enable chrome autofill</string>
3232
<string name="enable_error_reporting_dialog">Enable error reporting dialog</string>
33+
<string name="enable_flight_recorder">Enable flight recorder</string>
3334
<!-- /Debug Menu -->
3435
</resources>

app/src/test/java/com/x8bit/bitwarden/data/platform/manager/FlagKeyTest.kt

+12
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,14 @@ class FlagKeyTest {
8181
FlagKey.ChromeAutofill.keyName,
8282
"android-chrome-autofill",
8383
)
84+
assertEquals(
85+
FlagKey.MobileErrorReporting.keyName,
86+
"mobile-error-reporting",
87+
)
88+
assertEquals(
89+
FlagKey.FlightRecorder.keyName,
90+
"enable-pm-flight-recorder",
91+
)
8492
}
8593

8694
@Test
@@ -104,6 +112,8 @@ class FlagKeyTest {
104112
FlagKey.SimpleLoginSelfHostAlias,
105113
FlagKey.CipherKeyEncryption,
106114
FlagKey.ChromeAutofill,
115+
FlagKey.MobileErrorReporting,
116+
FlagKey.FlightRecorder,
107117
).all {
108118
!it.defaultValue
109119
},
@@ -140,6 +150,8 @@ class FlagKeyTest {
140150
assertTrue(
141151
listOf(
142152
FlagKey.IgnoreEnvironmentCheck,
153+
FlagKey.MobileErrorReporting,
154+
FlagKey.FlightRecorder,
143155
).all {
144156
!it.isRemotelyConfigured
145157
},

app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/debugmenu/DebugMenuViewModelTest.kt

+2
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ private val DEFAULT_MAP_VALUE: ImmutableMap<FlagKey<Any>, Any> = persistentMapOf
139139
FlagKey.SimpleLoginSelfHostAlias to true,
140140
FlagKey.ChromeAutofill to true,
141141
FlagKey.MobileErrorReporting to true,
142+
FlagKey.FlightRecorder to true,
142143
)
143144

144145
private val UPDATED_MAP_VALUE: ImmutableMap<FlagKey<Any>, Any> = persistentMapOf(
@@ -161,6 +162,7 @@ private val UPDATED_MAP_VALUE: ImmutableMap<FlagKey<Any>, Any> = persistentMapOf
161162
FlagKey.SimpleLoginSelfHostAlias to false,
162163
FlagKey.ChromeAutofill to false,
163164
FlagKey.MobileErrorReporting to false,
165+
FlagKey.FlightRecorder to false,
164166
)
165167

166168
private val DEFAULT_STATE = DebugMenuState(

0 commit comments

Comments
 (0)