diff options
2 files changed, 54 insertions, 10 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SplitShadeHeaderController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SplitShadeHeaderController.kt index bceffb3de208..401c1b477b3a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SplitShadeHeaderController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SplitShadeHeaderController.kt @@ -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) + } + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/SplitShadeHeaderControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/SplitShadeHeaderControllerTest.kt index 2e7f8a2897f2..e45fa773ea85 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/SplitShadeHeaderControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/SplitShadeHeaderControllerTest.kt @@ -1,8 +1,8 @@ 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)) } -}
\ No newline at end of file + + @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 + } +} |