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

Commit 1377984d authored by Michał Brzeziński's avatar Michał Brzeziński Committed by Automerger Merge Worker
Browse files

Merge "Fixing displaying two carriers in split shade header" into sc-v2-dev am: b868b036

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16433356

Change-Id: I61b2d8bd4aec01860cac9e9942e363a245633f37
parents 73466f15 b868b036
Loading
Loading
Loading
Loading
+23 −2
Original line number Diff line number Diff line
@@ -46,10 +46,11 @@ class SplitShadeHeaderController @Inject constructor(
        private val SPLIT_HEADER_TRANSITION_ID = R.id.split_header_transition
    }

    private val carrierIconSlots: List<String>
    private val combinedHeaders = featureFlags.useCombinedQSHeaders()
    // TODO(b/194178072) Handle RSSI hiding when multi carrier
    private val iconManager: StatusBarIconController.IconManager
    private val qsCarrierGroupController: QSCarrierGroupController
    private val iconContainer: StatusIconContainer
    private var visible = false
        set(value) {
            if (field == value) {
@@ -115,7 +116,16 @@ class SplitShadeHeaderController @Inject constructor(
        batteryMeterViewController.ignoreTunerUpdates()
        batteryIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE)

        val iconContainer: StatusIconContainer = statusBar.findViewById(R.id.statusIcons)
        carrierIconSlots = if (featureFlags.isCombinedStatusBarSignalIconsEnabled) {
            listOf(
                statusBar.context.getString(com.android.internal.R.string.status_bar_no_calling),
                statusBar.context.getString(com.android.internal.R.string.status_bar_call_strength)
            )
        } else {
            listOf(statusBar.context.getString(com.android.internal.R.string.status_bar_mobile))
        }

        iconContainer = statusBar.findViewById(R.id.statusIcons)
        iconManager = StatusBarIconController.IconManager(iconContainer, featureFlags)
        qsCarrierGroupController = qsCarrierGroupControllerBuilder
                .setQSCarrierGroup(statusBar.findViewById(R.id.carrier_group))
@@ -181,9 +191,20 @@ class SplitShadeHeaderController @Inject constructor(
    private fun updateListeners() {
        qsCarrierGroupController.setListening(visible)
        if (visible) {
            updateSingleCarrier(qsCarrierGroupController.isSingleCarrier)
            qsCarrierGroupController.setOnSingleCarrierChangedListener { updateSingleCarrier(it) }
            statusBarIconController.addIconGroup(iconManager)
        } else {
            qsCarrierGroupController.setOnSingleCarrierChangedListener(null)
            statusBarIconController.removeIconGroup(iconManager)
        }
    }

    private fun updateSingleCarrier(singleCarrier: Boolean) {
        if (singleCarrier) {
            iconContainer.removeIgnoredSlots(carrierIconSlots)
        } else {
            iconContainer.addIgnoredSlots(carrierIconSlots)
        }
    }
}
+31 −8
Original line number Diff line number Diff line
package com.android.systemui.statusbar.phone

import android.test.suitebuilder.annotation.SmallTest
import android.testing.AndroidTestingRunner
import android.view.View
import androidx.test.filters.SmallTest
import com.android.systemui.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.ShadeInterpolation
@@ -41,6 +41,7 @@ class SplitShadeHeaderControllerTest : SysuiTestCase() {
    var viewVisibility = View.GONE

    private lateinit var splitShadeHeaderController: SplitShadeHeaderController
    private lateinit var carrierIconSlots: List<String>

    @Before
    fun setup() {
@@ -66,12 +67,13 @@ class SplitShadeHeaderControllerTest : SysuiTestCase() {
                featureFlags,
                batteryMeterViewController
        )
        carrierIconSlots = listOf(
                context.getString(com.android.internal.R.string.status_bar_mobile))
    }

    @Test
    fun setVisible_onlyInSplitShade() {
        splitShadeHeaderController.splitShadeMode = true
        splitShadeHeaderController.shadeExpanded = true
        makeShadeVisible()
        assertThat(viewVisibility).isEqualTo(View.VISIBLE)

        splitShadeHeaderController.splitShadeMode = false
@@ -80,17 +82,38 @@ class SplitShadeHeaderControllerTest : SysuiTestCase() {

    @Test
    fun updateListeners_registersWhenVisible() {
        splitShadeHeaderController.splitShadeMode = true
        splitShadeHeaderController.shadeExpanded = true
        makeShadeVisible()
        verify(qsCarrierGroupController).setListening(true)
        verify(statusBarIconController).addIconGroup(any())
    }

    @Test
    fun shadeExpandedFraction_updatesAlpha() {
        splitShadeHeaderController.splitShadeMode = true
        splitShadeHeaderController.shadeExpanded = true
        makeShadeVisible()
        splitShadeHeaderController.shadeExpandedFraction = 0.5f
        verify(view).setAlpha(ShadeInterpolation.getContentAlpha(0.5f))
    }

    @Test
    fun singleCarrier_enablesCarrierIconsInStatusIcons() {
        whenever(qsCarrierGroupController.isSingleCarrier).thenReturn(true)

        makeShadeVisible()

        verify(statusIcons).removeIgnoredSlots(carrierIconSlots)
    }

    @Test
    fun dualCarrier_disablesCarrierIconsInStatusIcons() {
        whenever(qsCarrierGroupController.isSingleCarrier).thenReturn(false)

        makeShadeVisible()

        verify(statusIcons).addIgnoredSlots(carrierIconSlots)
    }

    private fun makeShadeVisible() {
        splitShadeHeaderController.splitShadeMode = true
        splitShadeHeaderController.shadeExpanded = true
    }
}