Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 13c796ce authored by Evan Laird's avatar Evan Laird Committed by Android (Google) Code Review
Browse files

Merge "[sb] Display-dependent HomeStatusBarViewModelImpl" into main

parents c22722e2 6c2a9d2e
Loading
Loading
Loading
Loading
+2 −4
Original line number Original line Diff line number Diff line
@@ -31,7 +31,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
class FakeHomeStatusBarViewModel(
class FakeHomeStatusBarViewModel(
    override val operatorNameViewModel: StatusBarOperatorNameViewModel
    override val operatorNameViewModel: StatusBarOperatorNameViewModel
) : HomeStatusBarViewModel {
) : HomeStatusBarViewModel {
    private val areNotificationLightsOut = MutableStateFlow(false)
    override val areNotificationsLightsOut = MutableStateFlow(false)


    override val isTransitioningFromLockscreenToOccluded = MutableStateFlow(false)
    override val isTransitioningFromLockscreenToOccluded = MutableStateFlow(false)


@@ -77,14 +77,12 @@ class FakeHomeStatusBarViewModel(


    override val iconBlockList: MutableStateFlow<List<String>> = MutableStateFlow(listOf())
    override val iconBlockList: MutableStateFlow<List<String>> = MutableStateFlow(listOf())


    override fun areNotificationsLightsOut(displayId: Int): Flow<Boolean> = areNotificationLightsOut

    val darkRegions = mutableListOf<Rect>()
    val darkRegions = mutableListOf<Rect>()


    var darkIconTint = Color.BLACK
    var darkIconTint = Color.BLACK
    var lightIconTint = Color.WHITE
    var lightIconTint = Color.WHITE


    override fun areaTint(displayId: Int): Flow<StatusBarTintColor> =
    override val areaTint: Flow<StatusBarTintColor> =
        MutableStateFlow(
        MutableStateFlow(
            StatusBarTintColor { viewBounds ->
            StatusBarTintColor { viewBounds ->
                if (DarkIconDispatcher.isInAreas(darkRegions, viewBounds)) {
                if (DarkIconDispatcher.isInAreas(darkRegions, viewBounds)) {
+12 −12
Original line number Original line Diff line number Diff line
@@ -22,6 +22,7 @@ import android.app.StatusBarManager.DISABLE_CLOCK
import android.app.StatusBarManager.DISABLE_NONE
import android.app.StatusBarManager.DISABLE_NONE
import android.app.StatusBarManager.DISABLE_NOTIFICATION_ICONS
import android.app.StatusBarManager.DISABLE_NOTIFICATION_ICONS
import android.app.StatusBarManager.DISABLE_SYSTEM_INFO
import android.app.StatusBarManager.DISABLE_SYSTEM_INFO
import android.content.testableContext
import android.graphics.Rect
import android.graphics.Rect
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import android.platform.test.annotations.EnableFlags
@@ -59,7 +60,6 @@ import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.assertIsScreenRecordChip
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.assertIsScreenRecordChip
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.assertIsShareToAppChip
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.assertIsShareToAppChip
import com.android.systemui.statusbar.data.model.StatusBarMode
import com.android.systemui.statusbar.data.model.StatusBarMode
import com.android.systemui.statusbar.data.repository.FakeStatusBarModeRepository.Companion.DISPLAY_ID
import com.android.systemui.statusbar.data.repository.fakeStatusBarModeRepository
import com.android.systemui.statusbar.data.repository.fakeStatusBarModeRepository
import com.android.systemui.statusbar.disableflags.data.repository.fakeDisableFlagsRepository
import com.android.systemui.statusbar.disableflags.data.repository.fakeDisableFlagsRepository
import com.android.systemui.statusbar.disableflags.shared.model.DisableFlagsModel
import com.android.systemui.statusbar.disableflags.shared.model.DisableFlagsModel
@@ -363,7 +363,7 @@ class HomeStatusBarViewModelImplTest : SysuiTestCase() {
            activeNotificationListRepository.activeNotifications.value =
            activeNotificationListRepository.activeNotifications.value =
                activeNotificationsStore(testNotifications)
                activeNotificationsStore(testNotifications)


            val actual by collectLastValue(underTest.areNotificationsLightsOut(DISPLAY_ID))
            val actual by collectLastValue(underTest.areNotificationsLightsOut)


            assertThat(actual).isTrue()
            assertThat(actual).isTrue()
        }
        }
@@ -377,7 +377,7 @@ class HomeStatusBarViewModelImplTest : SysuiTestCase() {
            activeNotificationListRepository.activeNotifications.value =
            activeNotificationListRepository.activeNotifications.value =
                activeNotificationsStore(emptyList())
                activeNotificationsStore(emptyList())


            val actual by collectLastValue(underTest.areNotificationsLightsOut(DISPLAY_ID))
            val actual by collectLastValue(underTest.areNotificationsLightsOut)


            assertThat(actual).isFalse()
            assertThat(actual).isFalse()
        }
        }
@@ -391,7 +391,7 @@ class HomeStatusBarViewModelImplTest : SysuiTestCase() {
            activeNotificationListRepository.activeNotifications.value =
            activeNotificationListRepository.activeNotifications.value =
                activeNotificationsStore(emptyList())
                activeNotificationsStore(emptyList())


            val actual by collectLastValue(underTest.areNotificationsLightsOut(DISPLAY_ID))
            val actual by collectLastValue(underTest.areNotificationsLightsOut)


            assertThat(actual).isFalse()
            assertThat(actual).isFalse()
        }
        }
@@ -405,7 +405,7 @@ class HomeStatusBarViewModelImplTest : SysuiTestCase() {
            activeNotificationListRepository.activeNotifications.value =
            activeNotificationListRepository.activeNotifications.value =
                activeNotificationsStore(testNotifications)
                activeNotificationsStore(testNotifications)


            val actual by collectLastValue(underTest.areNotificationsLightsOut(DISPLAY_ID))
            val actual by collectLastValue(underTest.areNotificationsLightsOut)


            assertThat(actual).isFalse()
            assertThat(actual).isFalse()
        }
        }
@@ -415,7 +415,7 @@ class HomeStatusBarViewModelImplTest : SysuiTestCase() {
    fun areNotificationsLightsOut_requiresFlagEnabled() =
    fun areNotificationsLightsOut_requiresFlagEnabled() =
        kosmos.runTest {
        kosmos.runTest {
            assertLogsWtf {
            assertLogsWtf {
                val flow = underTest.areNotificationsLightsOut(DISPLAY_ID)
                val flow = underTest.areNotificationsLightsOut
                assertThat(flow).isEqualTo(emptyFlow<Boolean>())
                assertThat(flow).isEqualTo(emptyFlow<Boolean>())
            }
            }
        }
        }
@@ -1005,11 +1005,11 @@ class HomeStatusBarViewModelImplTest : SysuiTestCase() {
    @Test
    @Test
    fun areaTint_viewIsInDarkBounds_getsDarkTint() =
    fun areaTint_viewIsInDarkBounds_getsDarkTint() =
        kosmos.runTest {
        kosmos.runTest {
            val displayId = 321
            val displayId = testableContext.displayId
            fakeDarkIconRepository.darkState(displayId).value =
            fakeDarkIconRepository.darkState(displayId).value =
                SysuiDarkIconDispatcher.DarkChange(listOf(Rect(0, 0, 5, 5)), 0f, 0xAABBCC)
                SysuiDarkIconDispatcher.DarkChange(listOf(Rect(0, 0, 5, 5)), 0f, 0xAABBCC)


            val areaTint by collectLastValue(underTest.areaTint(displayId))
            val areaTint by collectLastValue(underTest.areaTint)


            val tint = areaTint?.tint(Rect(1, 1, 3, 3))
            val tint = areaTint?.tint(Rect(1, 1, 3, 3))


@@ -1019,11 +1019,11 @@ class HomeStatusBarViewModelImplTest : SysuiTestCase() {
    @Test
    @Test
    fun areaTint_viewIsNotInDarkBounds_getsDefaultTint() =
    fun areaTint_viewIsNotInDarkBounds_getsDefaultTint() =
        kosmos.runTest {
        kosmos.runTest {
            val displayId = 321
            val displayId = testableContext.displayId
            fakeDarkIconRepository.darkState(displayId).value =
            fakeDarkIconRepository.darkState(displayId).value =
                SysuiDarkIconDispatcher.DarkChange(listOf(Rect(0, 0, 5, 5)), 0f, 0xAABBCC)
                SysuiDarkIconDispatcher.DarkChange(listOf(Rect(0, 0, 5, 5)), 0f, 0xAABBCC)


            val areaTint by collectLastValue(underTest.areaTint(displayId))
            val areaTint by collectLastValue(underTest.areaTint)


            val tint = areaTint?.tint(Rect(6, 6, 7, 7))
            val tint = areaTint?.tint(Rect(6, 6, 7, 7))


@@ -1033,11 +1033,11 @@ class HomeStatusBarViewModelImplTest : SysuiTestCase() {
    @Test
    @Test
    fun areaTint_viewIsInDarkBounds_darkBoundsChange_viewUpdates() =
    fun areaTint_viewIsInDarkBounds_darkBoundsChange_viewUpdates() =
        kosmos.runTest {
        kosmos.runTest {
            val displayId = 321
            val displayId = testableContext.displayId
            fakeDarkIconRepository.darkState(displayId).value =
            fakeDarkIconRepository.darkState(displayId).value =
                SysuiDarkIconDispatcher.DarkChange(listOf(Rect(0, 0, 5, 5)), 0f, 0xAABBCC)
                SysuiDarkIconDispatcher.DarkChange(listOf(Rect(0, 0, 5, 5)), 0f, 0xAABBCC)


            val areaTint by collectLastValue(underTest.areaTint(displayId))
            val areaTint by collectLastValue(underTest.areaTint)


            var tint = areaTint?.tint(Rect(1, 1, 3, 3))
            var tint = areaTint?.tint(Rect(1, 1, 3, 3))


+7 −3
Original line number Original line Diff line number Diff line
@@ -81,6 +81,7 @@ import com.android.systemui.statusbar.phone.ui.StatusBarIconController;
import com.android.systemui.statusbar.pipeline.shared.ui.binder.HomeStatusBarViewBinder;
import com.android.systemui.statusbar.pipeline.shared.ui.binder.HomeStatusBarViewBinder;
import com.android.systemui.statusbar.pipeline.shared.ui.binder.StatusBarVisibilityChangeListener;
import com.android.systemui.statusbar.pipeline.shared.ui.binder.StatusBarVisibilityChangeListener;
import com.android.systemui.statusbar.pipeline.shared.ui.viewmodel.HomeStatusBarViewModel;
import com.android.systemui.statusbar.pipeline.shared.ui.viewmodel.HomeStatusBarViewModel;
import com.android.systemui.statusbar.pipeline.shared.ui.viewmodel.HomeStatusBarViewModel.HomeStatusBarViewModelFactory;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.window.StatusBarWindowController;
import com.android.systemui.statusbar.window.StatusBarWindowController;
import com.android.systemui.statusbar.window.StatusBarWindowControllerStore;
import com.android.systemui.statusbar.window.StatusBarWindowControllerStore;
@@ -142,6 +143,8 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
    private StatusBarVisibilityModel mLastModifiedVisibility =
    private StatusBarVisibilityModel mLastModifiedVisibility =
            StatusBarVisibilityModel.createDefaultModel();
            StatusBarVisibilityModel.createDefaultModel();
    private DarkIconManager mDarkIconManager;
    private DarkIconManager mDarkIconManager;
    private HomeStatusBarViewModel mHomeStatusBarViewModel;

    private final HomeStatusBarComponent.Factory mHomeStatusBarComponentFactory;
    private final HomeStatusBarComponent.Factory mHomeStatusBarComponentFactory;
    private final CommandQueue mCommandQueue;
    private final CommandQueue mCommandQueue;
    private final CollapsedStatusBarFragmentLogger mCollapsedStatusBarFragmentLogger;
    private final CollapsedStatusBarFragmentLogger mCollapsedStatusBarFragmentLogger;
@@ -151,8 +154,8 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
    private final ShadeExpansionStateManager mShadeExpansionStateManager;
    private final ShadeExpansionStateManager mShadeExpansionStateManager;
    private final StatusBarIconController mStatusBarIconController;
    private final StatusBarIconController mStatusBarIconController;
    private final CarrierConfigTracker mCarrierConfigTracker;
    private final CarrierConfigTracker mCarrierConfigTracker;
    private final HomeStatusBarViewModel mHomeStatusBarViewModel;
    private final HomeStatusBarViewBinder mHomeStatusBarViewBinder;
    private final HomeStatusBarViewBinder mHomeStatusBarViewBinder;
    private final HomeStatusBarViewModelFactory mHomeStatusBarViewModelFactory;
    private final StatusBarHideIconsForBouncerManager mStatusBarHideIconsForBouncerManager;
    private final StatusBarHideIconsForBouncerManager mStatusBarHideIconsForBouncerManager;
    private final DarkIconManager.Factory mDarkIconManagerFactory;
    private final DarkIconManager.Factory mDarkIconManagerFactory;
    private final SecureSettings mSecureSettings;
    private final SecureSettings mSecureSettings;
@@ -256,7 +259,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
            ShadeExpansionStateManager shadeExpansionStateManager,
            ShadeExpansionStateManager shadeExpansionStateManager,
            StatusBarIconController statusBarIconController,
            StatusBarIconController statusBarIconController,
            DarkIconManager.Factory darkIconManagerFactory,
            DarkIconManager.Factory darkIconManagerFactory,
            HomeStatusBarViewModel homeStatusBarViewModel,
            HomeStatusBarViewModelFactory homeStatusBarViewModelFactory,
            HomeStatusBarViewBinder homeStatusBarViewBinder,
            HomeStatusBarViewBinder homeStatusBarViewBinder,
            StatusBarHideIconsForBouncerManager statusBarHideIconsForBouncerManager,
            StatusBarHideIconsForBouncerManager statusBarHideIconsForBouncerManager,
            KeyguardStateController keyguardStateController,
            KeyguardStateController keyguardStateController,
@@ -281,7 +284,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
        mAnimationScheduler = animationScheduler;
        mAnimationScheduler = animationScheduler;
        mShadeExpansionStateManager = shadeExpansionStateManager;
        mShadeExpansionStateManager = shadeExpansionStateManager;
        mStatusBarIconController = statusBarIconController;
        mStatusBarIconController = statusBarIconController;
        mHomeStatusBarViewModel = homeStatusBarViewModel;
        mHomeStatusBarViewModelFactory = homeStatusBarViewModelFactory;
        mHomeStatusBarViewBinder = homeStatusBarViewBinder;
        mHomeStatusBarViewBinder = homeStatusBarViewBinder;
        mStatusBarHideIconsForBouncerManager = statusBarHideIconsForBouncerManager;
        mStatusBarHideIconsForBouncerManager = statusBarHideIconsForBouncerManager;
        mDarkIconManagerFactory = darkIconManagerFactory;
        mDarkIconManagerFactory = darkIconManagerFactory;
@@ -410,6 +413,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
        mCarrierConfigTracker.addCallback(mCarrierConfigCallback);
        mCarrierConfigTracker.addCallback(mCarrierConfigCallback);
        mCarrierConfigTracker.addDefaultDataSubscriptionChangedListener(mDefaultDataListener);
        mCarrierConfigTracker.addDefaultDataSubscriptionChangedListener(mDefaultDataListener);


        mHomeStatusBarViewModel = mHomeStatusBarViewModelFactory.create(displayId);
        mHomeStatusBarViewBinder.bind(
        mHomeStatusBarViewBinder.bind(
                view.getContext().getDisplayId(),
                view.getContext().getDisplayId(),
                mStatusBar,
                mStatusBar,
+5 −3
Original line number Original line Diff line number Diff line
@@ -56,8 +56,8 @@ import com.android.systemui.statusbar.pipeline.shared.data.repository.Connectivi
import com.android.systemui.statusbar.pipeline.shared.data.repository.ConnectivityRepositoryImpl
import com.android.systemui.statusbar.pipeline.shared.data.repository.ConnectivityRepositoryImpl
import com.android.systemui.statusbar.pipeline.shared.ui.binder.HomeStatusBarViewBinder
import com.android.systemui.statusbar.pipeline.shared.ui.binder.HomeStatusBarViewBinder
import com.android.systemui.statusbar.pipeline.shared.ui.binder.HomeStatusBarViewBinderImpl
import com.android.systemui.statusbar.pipeline.shared.ui.binder.HomeStatusBarViewBinderImpl
import com.android.systemui.statusbar.pipeline.shared.ui.viewmodel.HomeStatusBarViewModel
import com.android.systemui.statusbar.pipeline.shared.ui.viewmodel.HomeStatusBarViewModel.HomeStatusBarViewModelFactory
import com.android.systemui.statusbar.pipeline.shared.ui.viewmodel.HomeStatusBarViewModelImpl
import com.android.systemui.statusbar.pipeline.shared.ui.viewmodel.HomeStatusBarViewModelImpl.HomeStatusBarViewModelFactoryImpl
import com.android.systemui.statusbar.pipeline.wifi.data.repository.RealWifiRepository
import com.android.systemui.statusbar.pipeline.wifi.data.repository.RealWifiRepository
import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepository
import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepository
import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepositorySwitcher
import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepositorySwitcher
@@ -148,7 +148,9 @@ abstract class StatusBarPipelineModule {
    abstract fun bindCarrierConfigStartable(impl: CarrierConfigCoreStartable): CoreStartable
    abstract fun bindCarrierConfigStartable(impl: CarrierConfigCoreStartable): CoreStartable


    @Binds
    @Binds
    abstract fun homeStatusBarViewModel(impl: HomeStatusBarViewModelImpl): HomeStatusBarViewModel
    abstract fun homeStatusBarViewModelFactory(
        impl: HomeStatusBarViewModelFactoryImpl
    ): HomeStatusBarViewModelFactory


    @Binds
    @Binds
    abstract fun homeStatusBarViewBinder(impl: HomeStatusBarViewBinderImpl): HomeStatusBarViewBinder
    abstract fun homeStatusBarViewBinder(impl: HomeStatusBarViewBinderImpl): HomeStatusBarViewBinder
+2 −3
Original line number Original line Diff line number Diff line
@@ -107,10 +107,9 @@ constructor(
                }
                }


                if (NotificationsLiveDataStoreRefactor.isEnabled) {
                if (NotificationsLiveDataStoreRefactor.isEnabled) {
                    val displayId = view.display.displayId
                    val lightsOutView: View = view.requireViewById(R.id.notification_lights_out)
                    val lightsOutView: View = view.requireViewById(R.id.notification_lights_out)
                    launch {
                    launch {
                        viewModel.areNotificationsLightsOut(displayId).collect { show ->
                        viewModel.areNotificationsLightsOut.collect { show ->
                            animateLightsOutView(lightsOutView, show)
                            animateLightsOutView(lightsOutView, show)
                        }
                        }
                    }
                    }
@@ -218,7 +217,7 @@ constructor(
                    StatusBarOperatorNameViewBinder.bind(
                    StatusBarOperatorNameViewBinder.bind(
                        operatorNameView,
                        operatorNameView,
                        viewModel.operatorNameViewModel,
                        viewModel.operatorNameViewModel,
                        viewModel::areaTint,
                        viewModel.areaTint,
                    )
                    )
                    launch {
                    launch {
                        viewModel.shouldShowOperatorNameView.collect {
                        viewModel.shouldShowOperatorNameView.collect {
Loading