Skip to content

Commit d59d0cb

Browse files
committed
Add featutre flag for nav state
1 parent 55e4641 commit d59d0cb

File tree

6 files changed

+43
-3
lines changed

6 files changed

+43
-3
lines changed

embrace-android-config-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/behavior/FakeAutoDataCaptureBehavior.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class FakeAutoDataCaptureBehavior(
1717
private val endStartupWithAppReady: Boolean = false,
1818
private val enableStateCapture: Boolean = false,
1919
private val networkCallbackConnectivityServiceEnabled: Boolean = false,
20+
private val navigationStateCaptureEnabled: Boolean = true,
2021
) : AutoDataCaptureBehavior {
2122

2223
override fun isThermalStatusCaptureEnabled(): Boolean = thermalStatusCaptureEnabled
@@ -33,4 +34,5 @@ class FakeAutoDataCaptureBehavior(
3334
override fun isEndStartupWithAppReadyEnabled(): Boolean = endStartupWithAppReady
3435
override fun isStateCaptureEnabled(): Boolean = enableStateCapture
3536
override fun isNetworkCallbackConnectivityServiceEnabled(): Boolean = networkCallbackConnectivityServiceEnabled
37+
override fun isNavigationStateCaptureEnabled(): Boolean = navigationStateCaptureEnabled
3638
}

embrace-android-config/src/main/kotlin/io/embrace/android/embracesdk/internal/config/behavior/AutoDataCaptureBehavior.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,9 @@ interface AutoDataCaptureBehavior {
7474
* Whether the NetworkCallback-based connectivity service implementation is enabled
7575
*/
7676
fun isNetworkCallbackConnectivityServiceEnabled(): Boolean
77+
78+
/**
79+
* Whether navigation state capture is enabled
80+
*/
81+
fun isNavigationStateCaptureEnabled(): Boolean
7782
}

embrace-android-config/src/main/kotlin/io/embrace/android/embracesdk/internal/config/behavior/AutoDataCaptureBehaviorImpl.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,7 @@ class AutoDataCaptureBehaviorImpl(
5151

5252
override fun isNetworkCallbackConnectivityServiceEnabled(): Boolean =
5353
thresholdCheck.isBehaviorEnabled(remote?.pctNetworkCallbackConnectivityServiceEnabled) ?: false
54+
55+
override fun isNavigationStateCaptureEnabled(): Boolean =
56+
thresholdCheck.isBehaviorEnabled(remote?.pctNavigationStateCaptureEnabled) ?: true
5457
}

embrace-android-config/src/test/kotlin/io/embrace/android/embracesdk/internal/config/behavior/AutoDataCaptureBehaviorImplTest.kt

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ internal class AutoDataCaptureBehaviorImplTest {
4040
assertFalse(isEndStartupWithAppReadyEnabled())
4141
assertFalse(isStateCaptureEnabled())
4242
assertFalse(isNetworkCallbackConnectivityServiceEnabled())
43+
assertTrue(isNavigationStateCaptureEnabled())
4344
}
4445
}
4546

@@ -187,9 +188,34 @@ internal class AutoDataCaptureBehaviorImplTest {
187188
)
188189
}
189190

191+
@Test
192+
fun `navigation state capture enabled by default when remote pct is null`() {
193+
assertTrue(
194+
createBehavior(remote = RemoteConfig()).isNavigationStateCaptureEnabled()
195+
)
196+
}
197+
198+
@Test
199+
fun `navigation state capture enabled when pct is 100`() {
200+
assertTrue(
201+
createBehavior(
202+
remote = RemoteConfig(pctNavigationStateCaptureEnabled = 100.0f)
203+
).isNavigationStateCaptureEnabled()
204+
)
205+
}
206+
207+
@Test
208+
fun `navigation state capture disabled when pct is 0`() {
209+
assertFalse(
210+
createBehavior(
211+
remote = RemoteConfig(pctNavigationStateCaptureEnabled = 0.0f)
212+
).isNavigationStateCaptureEnabled()
213+
)
214+
}
215+
190216
private fun createBehavior(
191-
localUiLoadTracingEnabled: Boolean,
192-
localUiLoadTracingTraceAllEnabled: Boolean,
217+
localUiLoadTracingEnabled: Boolean = true,
218+
localUiLoadTracingTraceAllEnabled: Boolean = true,
193219
stateCaptureEnabled: Boolean = false,
194220
remote: RemoteConfig,
195221
) = AutoDataCaptureBehaviorImpl(
@@ -198,7 +224,7 @@ internal class AutoDataCaptureBehaviorImplTest {
198224
enabledFeatures = FakeEnabledFeatureConfig(
199225
uiLoadTracingTraceAll = localUiLoadTracingTraceAllEnabled,
200226
uiLoadTracingEnabled = localUiLoadTracingEnabled,
201-
stateCaptureEnabled = stateCaptureEnabled
227+
stateCaptureEnabled = stateCaptureEnabled,
202228
)
203229
),
204230
remote = remote

embrace-android-payload/src/main/kotlin/io/embrace/android/embracesdk/internal/config/instrumented/schema/EnabledFeatureConfig.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,4 +173,5 @@ interface EnabledFeatureConfig {
173173
* Gates whether the state feature is enabled. This is never set to true in production.
174174
*/
175175
fun isStateCaptureEnabled(): Boolean = false
176+
176177
}

embrace-android-payload/src/main/kotlin/io/embrace/android/embracesdk/internal/config/remote/RemoteConfig.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,4 +103,7 @@ data class RemoteConfig(
103103
*/
104104
@Json(name = "pct_network_callback_connectivity_service_enabled")
105105
val pctNetworkCallbackConnectivityServiceEnabled: Float? = null,
106+
107+
@Json(name = "pct_navigation_state_capture_enabled")
108+
val pctNavigationStateCaptureEnabled: Float? = null,
106109
)

0 commit comments

Comments
 (0)