diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt index 81a068d10a145..a47f95d69c65b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt @@ -233,6 +233,7 @@ constructor( override val defaultDataSubRatConfig: StateFlow = merge(defaultDataSubIdChangeEvent, carrierConfigChangedEvent) + .onStart { emit(Unit) } .mapLatest { Config.readConfig(context) } .distinctUntilChanged() .onEach { logger.logDefaultDataSubRatConfig(it) } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt index 38c7432eb288a..fd156d86c19eb 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt @@ -1111,6 +1111,33 @@ class MobileConnectionsRepositoryTest : SysuiTestCase() { assertThat(latest!!.showAtLeast3G).isTrue() } + @Test + fun carrierConfig_initialValueIsFetched() = + testScope.runTest { + + // Value starts out false + assertThat(underTest.defaultDataSubRatConfig.value.showAtLeast3G).isFalse() + + overrideResource(R.bool.config_showMin3G, true) + val configFromContext = MobileMappings.Config.readConfig(context) + assertThat(configFromContext.showAtLeast3G).isTrue() + + // WHEN the change event is fired + fakeBroadcastDispatcher.registeredReceivers.forEach { receiver -> + receiver.onReceive( + context, + Intent(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED) + ) + } + + // WHEN collection starts AFTER the broadcast is sent out + val latest by collectLastValue(underTest.defaultDataSubRatConfig) + + // THEN the config has the updated value + assertThat(latest!!.areEqual(configFromContext)).isTrue() + assertThat(latest!!.showAtLeast3G).isTrue() + } + @Test fun activeDataChange_inSameGroup_emitsUnit() = testScope.runTest {