Skip to content

Commit 7ad771c

Browse files
committed
Prepare feature flags and defaults for nav state dark mode
1 parent 977b375 commit 7ad771c

File tree

16 files changed

+30
-158
lines changed

16 files changed

+30
-158
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class FakeAutoDataCaptureBehavior(
1515
private val uiLoadTracingEnabled: Boolean = true,
1616
private val uiLoadTracingTraceAll: Boolean = true,
1717
private val endStartupWithAppReady: Boolean = false,
18-
private val enableStateCapture: Boolean = false,
18+
private val enableStateCapture: Boolean = true,
1919
private val networkCallbackConnectivityServiceEnabled: Boolean = false,
2020
private val navigationStateCaptureEnabled: Boolean = true,
2121
) : AutoDataCaptureBehavior {

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ class FakeEnabledFeatureConfig(
3131
private val uiLoadTracingTraceAll: Boolean = base.isUiLoadTracingTraceAll(),
3232
private val endStartupWithAppReady: Boolean = base.isEndStartupWithAppReadyEnabled(),
3333
private val otelKotlinSdkEnabled: Boolean = base.isOtelKotlinSdkEnabled(),
34-
private val stateCaptureEnabled: Boolean = base.isStateCaptureEnabled(),
3534
) : EnabledFeatureConfig {
3635

3736
override fun isActivityBreadcrumbCaptureEnabled(): Boolean = activityBreadcrumbCapture
@@ -58,5 +57,4 @@ class FakeEnabledFeatureConfig(
5857
override fun isUiLoadTracingTraceAll(): Boolean = uiLoadTracingTraceAll
5958
override fun isEndStartupWithAppReadyEnabled(): Boolean = endStartupWithAppReady
6059
override fun isOtelKotlinSdkEnabled(): Boolean = otelKotlinSdkEnabled
61-
override fun isStateCaptureEnabled(): Boolean = stateCaptureEnabled
6260
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ class AutoDataCaptureBehaviorImpl(
1616
private companion object {
1717
const val THERMAL_STATUS_ENABLED_DEFAULT = true
1818
const val UI_LOAD_REMOTE_ENABLED_DEFAULT = true
19+
const val STATE_CAPTURE_ENABLED_DEFAULT = true
20+
const val NAVIGATION_STATE_CAPTURE_ENABLED_DEFAULT = true
1921
}
2022

2123
private val local = local.enabledFeatures
@@ -47,11 +49,11 @@ class AutoDataCaptureBehaviorImpl(
4749

4850
override fun isEndStartupWithAppReadyEnabled(): Boolean = local.isEndStartupWithAppReadyEnabled()
4951
override fun isStateCaptureEnabled(): Boolean =
50-
thresholdCheck.isBehaviorEnabled(remote?.pctStateCaptureEnabledV2) ?: local.isStateCaptureEnabled()
52+
thresholdCheck.isBehaviorEnabled(remote?.pctStateCaptureEnabledV2) ?: STATE_CAPTURE_ENABLED_DEFAULT
5153

5254
override fun isNetworkCallbackConnectivityServiceEnabled(): Boolean =
5355
thresholdCheck.isBehaviorEnabled(remote?.pctNetworkCallbackConnectivityServiceEnabled) ?: false
5456

5557
override fun isNavigationStateCaptureEnabled(): Boolean =
56-
thresholdCheck.isBehaviorEnabled(remote?.pctNavigationStateCaptureEnabled) ?: true
58+
thresholdCheck.isBehaviorEnabled(remote?.pctNavigationStateCaptureEnabled) ?: NAVIGATION_STATE_CAPTURE_ENABLED_DEFAULT
5759
}

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

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ internal class AutoDataCaptureBehaviorImplTest {
3838
assertTrue(isUiLoadTracingTraceAll())
3939
assertTrue(isThermalStatusCaptureEnabled())
4040
assertFalse(isEndStartupWithAppReadyEnabled())
41-
assertFalse(isStateCaptureEnabled())
41+
assertTrue(isStateCaptureEnabled())
4242
assertFalse(isNetworkCallbackConnectivityServiceEnabled())
4343
assertTrue(isNavigationStateCaptureEnabled())
4444
}
@@ -129,24 +129,11 @@ internal class AutoDataCaptureBehaviorImplTest {
129129
assertFalse(behavior.isUiLoadTracingTraceAll())
130130
}
131131

132-
@Test
133-
fun `enable state capture`() {
134-
val behavior = createBehavior(
135-
localUiLoadTracingEnabled = true,
136-
localUiLoadTracingTraceAllEnabled = true,
137-
stateCaptureEnabled = true,
138-
remote = remote
139-
)
140-
141-
assertTrue(behavior.isStateCaptureEnabled())
142-
}
143-
144132
@Test
145133
fun `enable state capture remotely`() {
146134
val behavior = createBehavior(
147135
localUiLoadTracingEnabled = true,
148136
localUiLoadTracingTraceAllEnabled = true,
149-
stateCaptureEnabled = false,
150137
remote = remote.copy(pctStateCaptureEnabledV2 = 100.0f)
151138
)
152139

@@ -158,7 +145,6 @@ internal class AutoDataCaptureBehaviorImplTest {
158145
val behavior = createBehavior(
159146
localUiLoadTracingEnabled = true,
160147
localUiLoadTracingTraceAllEnabled = true,
161-
stateCaptureEnabled = true,
162148
remote = remote.copy(pctStateCaptureEnabledV2 = 0.0f)
163149
)
164150

@@ -188,13 +174,6 @@ internal class AutoDataCaptureBehaviorImplTest {
188174
)
189175
}
190176

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-
198177
@Test
199178
fun `navigation state capture enabled when pct is 100`() {
200179
assertTrue(
@@ -216,15 +195,13 @@ internal class AutoDataCaptureBehaviorImplTest {
216195
private fun createBehavior(
217196
localUiLoadTracingEnabled: Boolean = true,
218197
localUiLoadTracingTraceAllEnabled: Boolean = true,
219-
stateCaptureEnabled: Boolean = false,
220198
remote: RemoteConfig,
221199
) = AutoDataCaptureBehaviorImpl(
222200
thresholdCheck = BehaviorThresholdCheck { FAKE_DEVICE_ID },
223201
local = FakeInstrumentedConfig(
224202
enabledFeatures = FakeEnabledFeatureConfig(
225203
uiLoadTracingTraceAll = localUiLoadTracingTraceAllEnabled,
226204
uiLoadTracingEnabled = localUiLoadTracingEnabled,
227-
stateCaptureEnabled = stateCaptureEnabled,
228205
)
229206
),
230207
remote = remote

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,4 @@ interface EnabledFeatureConfig {
168168
* sdk_config.otel.enable_otel_kotlin_sdk
169169
*/
170170
fun isOtelKotlinSdkEnabled(): Boolean = false
171-
172-
/**
173-
* Gates whether the state feature is enabled. This is never set to true in production.
174-
*/
175-
fun isStateCaptureEnabled(): Boolean = false
176171
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ data class RemoteConfig(
104104
@Json(name = "pct_network_callback_connectivity_service_enabled")
105105
val pctNetworkCallbackConnectivityServiceEnabled: Float? = null,
106106

107-
@Json(name = "pct_navigation_state_capture_enabled")
107+
@Json(name = "pct_screen_tracking_enabled")
108108
val pctNavigationStateCaptureEnabled: Float? = null,
109109

110110
@Json(name = "user_session")

embrace-android-sdk/src/integrationTest/kotlin/io/embrace/android/embracesdk/testcases/ExternalLoggerTest.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ import io.embrace.android.embracesdk.fakes.FakeLogRecordExporter
77
import io.embrace.android.embracesdk.fakes.config.FakeEnabledFeatureConfig
88
import io.embrace.android.embracesdk.fakes.config.FakeInstrumentedConfig
99
import io.embrace.android.embracesdk.fakes.config.FakeProjectConfig
10-
import io.embrace.android.embracesdk.semconv.EmbSessionAttributes
1110
import io.embrace.android.embracesdk.internal.arch.attrs.toEmbraceAttributeName
1211
import io.embrace.android.embracesdk.internal.arch.state.AppState
1312
import io.embrace.android.embracesdk.internal.clock.millisToNanos
1413
import io.embrace.android.embracesdk.internal.config.remote.OtelKotlinSdkConfig
1514
import io.embrace.android.embracesdk.internal.config.remote.RemoteConfig
1615
import io.embrace.android.embracesdk.internal.otel.payload.toEmbracePayload
1716
import io.embrace.android.embracesdk.internal.toStringMap
17+
import io.embrace.android.embracesdk.semconv.EmbSessionAttributes
1818
import io.embrace.android.embracesdk.testframework.SdkIntegrationTestRule
1919
import io.embrace.android.embracesdk.testframework.actions.EmbraceActionInterface
2020
import io.embrace.android.embracesdk.testframework.actions.EmbraceOtelExportAssertionInterface
@@ -48,7 +48,6 @@ internal class ExternalLoggerTest {
4848
private val instrumentedConfig = FakeInstrumentedConfig(
4949
enabledFeatures = FakeEnabledFeatureConfig(
5050
bgActivityCapture = true,
51-
stateCaptureEnabled = true
5251
),
5352
project = FakeProjectConfig(
5453
appId = "abcde",

embrace-android-sdk/src/integrationTest/kotlin/io/embrace/android/embracesdk/testcases/ExternalOtelJavaLoggerTest.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import io.embrace.android.embracesdk.fakes.FakeOtelJavaLogRecordExporter
77
import io.embrace.android.embracesdk.fakes.config.FakeEnabledFeatureConfig
88
import io.embrace.android.embracesdk.fakes.config.FakeInstrumentedConfig
99
import io.embrace.android.embracesdk.fakes.config.FakeProjectConfig
10-
import io.embrace.android.embracesdk.semconv.EmbSessionAttributes
1110
import io.embrace.android.embracesdk.internal.arch.attrs.toEmbraceAttributeName
1211
import io.embrace.android.embracesdk.internal.arch.state.AppState
1312
import io.embrace.android.embracesdk.internal.clock.millisToNanos
@@ -17,6 +16,7 @@ import io.embrace.android.embracesdk.internal.payload.Log
1716
import io.embrace.android.embracesdk.internal.toStringMap
1817
import io.embrace.android.embracesdk.otel.java.addJavaLogRecordExporter
1918
import io.embrace.android.embracesdk.otel.java.getJavaOpenTelemetry
19+
import io.embrace.android.embracesdk.semconv.EmbSessionAttributes
2020
import io.embrace.android.embracesdk.testframework.SdkIntegrationTestRule
2121
import io.embrace.android.embracesdk.testframework.actions.EmbraceActionInterface
2222
import io.embrace.android.embracesdk.testframework.actions.EmbracePreSdkStartInterface
@@ -49,7 +49,6 @@ internal class ExternalOtelJavaLoggerTest {
4949
private val instrumentedConfig = FakeInstrumentedConfig(
5050
enabledFeatures = FakeEnabledFeatureConfig(
5151
bgActivityCapture = true,
52-
stateCaptureEnabled = true
5352
),
5453
project = FakeProjectConfig(
5554
appId = "abcde",

embrace-android-sdk/src/integrationTest/kotlin/io/embrace/android/embracesdk/testcases/UserSessionApiTest.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
44
import io.embrace.android.embracesdk.assertions.toMap
55
import io.embrace.android.embracesdk.fakes.config.FakeEnabledFeatureConfig
66
import io.embrace.android.embracesdk.fakes.config.FakeInstrumentedConfig
7-
import io.embrace.android.embracesdk.semconv.EmbTelemetryAttributes
87
import io.embrace.android.embracesdk.internal.clock.nanosToMillis
98
import io.embrace.android.embracesdk.internal.otel.sdk.findAttributeValue
109
import io.embrace.android.embracesdk.semconv.EmbSessionAttributes
10+
import io.embrace.android.embracesdk.semconv.EmbTelemetryAttributes
1111
import io.embrace.android.embracesdk.testframework.SdkIntegrationTestRule
1212
import io.opentelemetry.kotlin.semconv.SessionAttributes
1313
import org.junit.Assert.assertEquals
@@ -32,7 +32,12 @@ internal class UserSessionApiTest {
3232
var startTime: Long = -1
3333

3434
testRule.runTest(
35-
instrumentedConfig = FakeInstrumentedConfig(enabledFeatures = FakeEnabledFeatureConfig(diskUsageCapture = false, bgActivityCapture = true)),
35+
instrumentedConfig = FakeInstrumentedConfig(
36+
enabledFeatures = FakeEnabledFeatureConfig(
37+
diskUsageCapture = false,
38+
bgActivityCapture = true
39+
)
40+
),
3641
testCaseAction = {
3742
startTime = recordSession {
3843
embrace.setUserIdentifier("some id")
@@ -80,7 +85,7 @@ internal class UserSessionApiTest {
8085
"emb.usage.set_username" to "1",
8186
"emb.usage.set_user_email" to "1",
8287
"emb.usage.set_user_identifier" to "1",
83-
EmbSessionAttributes.EMB_PRIVATE_SEQUENCE_ID to "5",
88+
EmbSessionAttributes.EMB_PRIVATE_SEQUENCE_ID to "9",
8489
EmbSessionAttributes.EMB_STARTUP_DURATION to "0"
8590
).toSortedMap()
8691

embrace-android-sdk/src/integrationTest/kotlin/io/embrace/android/embracesdk/testcases/features/LowPowerFeatureTest.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ internal class LowPowerFeatureTest {
9191
testRule.runTest(
9292
instrumentedConfig = FakeInstrumentedConfig(
9393
enabledFeatures = FakeEnabledFeatureConfig(
94-
stateCaptureEnabled = true,
9594
bgActivityCapture = false,
9695
powerSaveCapture = true
9796
)
@@ -139,7 +138,6 @@ internal class LowPowerFeatureTest {
139138
testRule.runTest(
140139
instrumentedConfig = FakeInstrumentedConfig(
141140
enabledFeatures = FakeEnabledFeatureConfig(
142-
stateCaptureEnabled = true,
143141
powerSaveCapture = false
144142
)
145143
),

0 commit comments

Comments
 (0)