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

Commit 34448158 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Only stack icons if they share the same number of levels" into main

parents eecb809c 65e1b6b6
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import com.android.systemui.statusbar.core.StatusBarRootModernization
import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel
import com.android.systemui.statusbar.pipeline.mobile.data.repository.FakeMobileConnectionRepository
import com.android.systemui.statusbar.pipeline.mobile.data.repository.fake
import com.android.systemui.statusbar.pipeline.mobile.data.repository.fakeMobileConnectionsRepository
import com.android.systemui.statusbar.pipeline.mobile.data.repository.mobileConnectionsRepository
import com.android.systemui.statusbar.pipeline.mobile.data.repository.mobileConnectionsRepositoryLogbufferName
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlot
@@ -937,6 +938,34 @@ class MobileIconsInteractorTest : SysuiTestCase() {
            assertThat(latest).isFalse()
        }

    @Test
    @EnableFlags(NewStatusBarIcons.FLAG_NAME, StatusBarRootModernization.FLAG_NAME)
    fun isStackable_checksForNumberOfBars() =
        kosmos.runTest {
            val latest by collectLastValue(underTest.isStackable)

            // Number of levels is the same for both
            connectionsRepository.setSubscriptions(listOf(SUB_1, SUB_2))
            setNumberOfLevelsForSubId(SUB_1_ID, 5)
            setNumberOfLevelsForSubId(SUB_2_ID, 5)

            assertThat(latest).isTrue()

            // Change the number of levels to be different than SUB_2
            setNumberOfLevelsForSubId(SUB_1_ID, 6)

            assertThat(latest).isFalse()
        }

    private fun setNumberOfLevelsForSubId(subId: Int, numberOfLevels: Int) {
        with(kosmos) {
            (fakeMobileConnectionsRepository.getRepoForSubId(subId)
                    as FakeMobileConnectionRepository)
                .numberOfLevels
                .value = numberOfLevels
        }
    }

    /**
     * Convenience method for creating a pair of subscriptions to test the filteredSubscriptions
     * flow.
+9 −2
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import com.android.systemui.statusbar.pipeline.dagger.MobileSummaryLog
import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionsRepository
import com.android.systemui.statusbar.pipeline.mobile.domain.model.SignalIconModel
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlot
import com.android.systemui.statusbar.pipeline.shared.data.repository.ConnectivityRepository
import com.android.systemui.statusbar.policy.data.repository.UserSetupRepository
@@ -309,8 +310,14 @@ constructor(
    override val isStackable =
        if (NewStatusBarIcons.isEnabled && StatusBarRootModernization.isEnabled) {
                icons.flatMapLatest { icons ->
                    combine(icons.map { it.isNonTerrestrial }) {
                        it.size == 2 && it.none { isNonTerrestrial -> isNonTerrestrial }
                    combine(icons.map { it.signalLevelIcon }) { signalLevelIcons ->
                        // These are only stackable if:
                        // - They are cellular
                        // - There's exactly two
                        // - They have the same number of levels
                        signalLevelIcons.filterIsInstance<SignalIconModel.Cellular>().let {
                            it.size == 2 && it[0].numberOfLevels == it[1].numberOfLevels
                        }
                    }
                }
            } else {