Loading packages/SystemUI/multivalentTests/src/com/android/systemui/KairosCoreStartableTest.kt +7 −1 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import com.android.systemui.kairos.KairosNetwork import com.android.systemui.kairos.runKairosTest import com.android.systemui.kairos.toColdConflatedFlow import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.useUnconfinedTestDispatcher import com.google.common.truth.Truth.assertThat Loading @@ -41,7 +42,12 @@ class KairosCoreStartableTest : SysuiTestCase() { fun kairosNetwork_usedBeforeStarted() = testKosmos().useUnconfinedTestDispatcher().runKairosTest { lateinit var activatable: TestActivatable val underTest = KairosCoreStartable(applicationCoroutineScope) { setOf(activatable) } val underTest = KairosCoreStartable( appScope = applicationCoroutineScope, activatables = { setOf(activatable) }, bgDispatcher = testDispatcher, ) activatable = TestActivatable(underTest) // collect from the cold flow before starting the CoreStartable Loading packages/SystemUI/src/com/android/systemui/KairosActivatable.kt +13 −1 Original line number Diff line number Diff line Loading @@ -18,8 +18,10 @@ package com.android.systemui import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.kairos.BuildScope import com.android.systemui.kairos.BuildSpec import com.android.systemui.kairos.CoalescingPolicy import com.android.systemui.kairos.Events import com.android.systemui.kairos.EventsLoop import com.android.systemui.kairos.ExperimentalKairosApi Loading @@ -41,6 +43,7 @@ import dagger.multibindings.IntoMap import dagger.multibindings.Multibinds import javax.inject.Inject import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch Loading Loading @@ -189,7 +192,16 @@ private constructor( constructor( @Application appScope: CoroutineScope, activatables: dagger.Lazy<Set<@JvmSuppressWildcards KairosActivatable>>, ) : this(appScope, activatables, appScope.launchKairosNetwork()) @Background bgDispatcher: CoroutineDispatcher, ) : this( appScope = appScope, activatables = activatables, unwrappedNetwork = appScope.launchKairosNetwork( context = bgDispatcher, coalescingPolicy = CoalescingPolicy.Eager, ), ) private val started = CompletableDeferred<Unit>() Loading packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/MobileUiAdapterKairos.kt +7 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import com.android.systemui.Dumpable import com.android.systemui.Flags import com.android.systemui.KairosActivatable import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.dump.DumpManager import com.android.systemui.kairos.BuildScope import com.android.systemui.kairos.ExperimentalKairosApi Loading @@ -36,6 +37,7 @@ import dagger.multibindings.ElementsIntoSet import java.io.PrintWriter import javax.inject.Inject import javax.inject.Provider import kotlinx.coroutines.CoroutineDispatcher /** * This class is intended to provide a context to collect on the Loading @@ -54,6 +56,7 @@ constructor( val mobileIconsViewModel: MobileIconsViewModelKairos, private val logger: MobileViewLogger, dumpManager: DumpManager, @Main private val mainDispatcher: CoroutineDispatcher, ) : KairosActivatable, Dumpable { init { Loading @@ -74,8 +77,10 @@ constructor( combine(mobileIconsViewModel.subscriptionIds, mobileIconsViewModel.isStackable) { a, b -> Pair(a, b) } .observe(name = nameTag("MobileUiAdapterKairos.notifyIconController")) { (subIds, isStackable) -> .observe( coroutineContext = mainDispatcher, name = nameTag("MobileUiAdapterKairos.notifyIconController"), ) { (subIds, isStackable) -> logger.logUiAdapterSubIdsSentToIconController(subIds, isStackable) lastValue = subIds if (isStackable) { Loading packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/binder/MobileIconBinderKairos.kt +3 −1 Original line number Diff line number Diff line Loading @@ -67,6 +67,7 @@ object MobileIconBinderKairos { ): Pair<ModernStatusBarViewBinding, Job> { val binding = ModernStatusBarViewBindingKairosImpl(subId, kairosNetwork, initialVisibilityState) val mobileDrawable = SignalDrawable(view.context) return binding to scope.launch { kairosNetwork.activateSpec( Loading @@ -74,6 +75,7 @@ object MobileIconBinderKairos { ) { bind( view = view, mobileDrawable = mobileDrawable, viewModel = viewModel.applySpec(), logger = logger, binding = binding, Loading Loading @@ -135,6 +137,7 @@ object MobileIconBinderKairos { @ExperimentalKairosApi private fun BuildScope.bind( view: ViewGroup, mobileDrawable: SignalDrawable, viewModel: LocationBasedMobileViewModelKairos, logger: MobileViewLogger, binding: ModernStatusBarViewBindingKairosImpl, Loading @@ -152,7 +155,6 @@ object MobileIconBinderKairos { val networkTypeView = view.requireViewById<ImageView>(R.id.mobile_type) val networkTypeContainer = view.requireViewById<FrameLayout>(R.id.mobile_type_container) val iconView = view.requireViewById<ImageView>(R.id.mobile_signal) val mobileDrawable = SignalDrawable(view.context) val roamingView = view.requireViewById<ImageView>(R.id.mobile_roaming) val roamingSpace = view.requireViewById<Space>(R.id.mobile_roaming_space) val dotView = view.requireViewById<StatusBarIconView>(R.id.status_bar_dot) Loading packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/mobile/ui/MobileUiAdapterKairosKosmos.kt +2 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import com.android.systemui.dump.dumpManager import com.android.systemui.kairos.ActivatedKairosFixture import com.android.systemui.kairos.ExperimentalKairosApi import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testDispatcher import com.android.systemui.statusbar.phone.ui.statusBarIconController import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.mobileIconsViewModelKairos Loading @@ -30,5 +31,6 @@ val Kosmos.mobileUiAdapterKairos by ActivatedKairosFixture { mobileIconsViewModelKairos, mobileViewLogger, dumpManager, testDispatcher, ) } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/KairosCoreStartableTest.kt +7 −1 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import com.android.systemui.kairos.KairosNetwork import com.android.systemui.kairos.runKairosTest import com.android.systemui.kairos.toColdConflatedFlow import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.useUnconfinedTestDispatcher import com.google.common.truth.Truth.assertThat Loading @@ -41,7 +42,12 @@ class KairosCoreStartableTest : SysuiTestCase() { fun kairosNetwork_usedBeforeStarted() = testKosmos().useUnconfinedTestDispatcher().runKairosTest { lateinit var activatable: TestActivatable val underTest = KairosCoreStartable(applicationCoroutineScope) { setOf(activatable) } val underTest = KairosCoreStartable( appScope = applicationCoroutineScope, activatables = { setOf(activatable) }, bgDispatcher = testDispatcher, ) activatable = TestActivatable(underTest) // collect from the cold flow before starting the CoreStartable Loading
packages/SystemUI/src/com/android/systemui/KairosActivatable.kt +13 −1 Original line number Diff line number Diff line Loading @@ -18,8 +18,10 @@ package com.android.systemui import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.kairos.BuildScope import com.android.systemui.kairos.BuildSpec import com.android.systemui.kairos.CoalescingPolicy import com.android.systemui.kairos.Events import com.android.systemui.kairos.EventsLoop import com.android.systemui.kairos.ExperimentalKairosApi Loading @@ -41,6 +43,7 @@ import dagger.multibindings.IntoMap import dagger.multibindings.Multibinds import javax.inject.Inject import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch Loading Loading @@ -189,7 +192,16 @@ private constructor( constructor( @Application appScope: CoroutineScope, activatables: dagger.Lazy<Set<@JvmSuppressWildcards KairosActivatable>>, ) : this(appScope, activatables, appScope.launchKairosNetwork()) @Background bgDispatcher: CoroutineDispatcher, ) : this( appScope = appScope, activatables = activatables, unwrappedNetwork = appScope.launchKairosNetwork( context = bgDispatcher, coalescingPolicy = CoalescingPolicy.Eager, ), ) private val started = CompletableDeferred<Unit>() Loading
packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/MobileUiAdapterKairos.kt +7 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import com.android.systemui.Dumpable import com.android.systemui.Flags import com.android.systemui.KairosActivatable import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.dump.DumpManager import com.android.systemui.kairos.BuildScope import com.android.systemui.kairos.ExperimentalKairosApi Loading @@ -36,6 +37,7 @@ import dagger.multibindings.ElementsIntoSet import java.io.PrintWriter import javax.inject.Inject import javax.inject.Provider import kotlinx.coroutines.CoroutineDispatcher /** * This class is intended to provide a context to collect on the Loading @@ -54,6 +56,7 @@ constructor( val mobileIconsViewModel: MobileIconsViewModelKairos, private val logger: MobileViewLogger, dumpManager: DumpManager, @Main private val mainDispatcher: CoroutineDispatcher, ) : KairosActivatable, Dumpable { init { Loading @@ -74,8 +77,10 @@ constructor( combine(mobileIconsViewModel.subscriptionIds, mobileIconsViewModel.isStackable) { a, b -> Pair(a, b) } .observe(name = nameTag("MobileUiAdapterKairos.notifyIconController")) { (subIds, isStackable) -> .observe( coroutineContext = mainDispatcher, name = nameTag("MobileUiAdapterKairos.notifyIconController"), ) { (subIds, isStackable) -> logger.logUiAdapterSubIdsSentToIconController(subIds, isStackable) lastValue = subIds if (isStackable) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/binder/MobileIconBinderKairos.kt +3 −1 Original line number Diff line number Diff line Loading @@ -67,6 +67,7 @@ object MobileIconBinderKairos { ): Pair<ModernStatusBarViewBinding, Job> { val binding = ModernStatusBarViewBindingKairosImpl(subId, kairosNetwork, initialVisibilityState) val mobileDrawable = SignalDrawable(view.context) return binding to scope.launch { kairosNetwork.activateSpec( Loading @@ -74,6 +75,7 @@ object MobileIconBinderKairos { ) { bind( view = view, mobileDrawable = mobileDrawable, viewModel = viewModel.applySpec(), logger = logger, binding = binding, Loading Loading @@ -135,6 +137,7 @@ object MobileIconBinderKairos { @ExperimentalKairosApi private fun BuildScope.bind( view: ViewGroup, mobileDrawable: SignalDrawable, viewModel: LocationBasedMobileViewModelKairos, logger: MobileViewLogger, binding: ModernStatusBarViewBindingKairosImpl, Loading @@ -152,7 +155,6 @@ object MobileIconBinderKairos { val networkTypeView = view.requireViewById<ImageView>(R.id.mobile_type) val networkTypeContainer = view.requireViewById<FrameLayout>(R.id.mobile_type_container) val iconView = view.requireViewById<ImageView>(R.id.mobile_signal) val mobileDrawable = SignalDrawable(view.context) val roamingView = view.requireViewById<ImageView>(R.id.mobile_roaming) val roamingSpace = view.requireViewById<Space>(R.id.mobile_roaming_space) val dotView = view.requireViewById<StatusBarIconView>(R.id.status_bar_dot) Loading
packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/mobile/ui/MobileUiAdapterKairosKosmos.kt +2 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import com.android.systemui.dump.dumpManager import com.android.systemui.kairos.ActivatedKairosFixture import com.android.systemui.kairos.ExperimentalKairosApi import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testDispatcher import com.android.systemui.statusbar.phone.ui.statusBarIconController import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.mobileIconsViewModelKairos Loading @@ -30,5 +31,6 @@ val Kosmos.mobileUiAdapterKairos by ActivatedKairosFixture { mobileIconsViewModelKairos, mobileViewLogger, dumpManager, testDispatcher, ) }