From 4d26557be59b67d8f77ed996b0be5d7308eb95f0 Mon Sep 17 00:00:00 2001 From: AR Abdul Azeez Date: Tue, 20 Oct 2026 12:44:20 -0500 Subject: [PATCH] feat: [SDK-5581] add sdk_dispatcher_bootstrap to the feature catalog Android gates dispatcher construction on this APP_STARTUP flag. Absent means the lazy pools stay in use. Co-authored-by: Cursor --- .../kotlin/com/onesignal/features/FeatureFlag.kt | 9 +++++++++ .../com/onesignal/features/FeatureManagerTest.kt | 12 ++++++++++++ 2 files changed, 21 insertions(+) diff --git a/kmp/src/commonMain/kotlin/com/onesignal/features/FeatureFlag.kt b/kmp/src/commonMain/kotlin/com/onesignal/features/FeatureFlag.kt index 4b36df6..4bd51df 100644 --- a/kmp/src/commonMain/kotlin/com/onesignal/features/FeatureFlag.kt +++ b/kmp/src/commonMain/kotlin/com/onesignal/features/FeatureFlag.kt @@ -59,6 +59,15 @@ enum class FeatureFlag( "sdk_device_gesture_disabled", FeatureActivationMode.IMMEDIATE, ), + + /** + * Builds SDK dispatchers on a bootstrap thread instead of the first caller. + * APP_STARTUP because the pools live for the process. Absent means off. + */ + SDK_DISPATCHER_BOOTSTRAP( + "sdk_dispatcher_bootstrap", + FeatureActivationMode.APP_STARTUP, + ), ; fun isEnabledIn(enabledKeys: Set): Boolean = enabledKeys.contains(key) diff --git a/kmp/src/commonTest/kotlin/com/onesignal/features/FeatureManagerTest.kt b/kmp/src/commonTest/kotlin/com/onesignal/features/FeatureManagerTest.kt index b114788..03d65b9 100644 --- a/kmp/src/commonTest/kotlin/com/onesignal/features/FeatureManagerTest.kt +++ b/kmp/src/commonTest/kotlin/com/onesignal/features/FeatureManagerTest.kt @@ -49,6 +49,18 @@ class FeatureFlagTest { FeatureFlag.SDK_DEVICE_GESTURE_DISABLED.activationMode, ) } + + @Test + fun dispatcherBootstrapIsAppStartupAndOffWhenAbsent() { + assertEquals("sdk_dispatcher_bootstrap", FeatureFlag.SDK_DISPATCHER_BOOTSTRAP.key) + assertEquals( + FeatureActivationMode.APP_STARTUP, + FeatureFlag.SDK_DISPATCHER_BOOTSTRAP.activationMode, + ) + val manager = FeatureManager() + manager.refresh(emptyList(), applyAppStartupFlags = true) + assertFalse(manager.isEnabled(FeatureFlag.SDK_DISPATCHER_BOOTSTRAP)) + } } class FeatureManagerTest {