Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/SplitShadeHeaderController.kt +23 −2 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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)) Loading Loading @@ -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) } } } packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/SplitShadeHeaderControllerTest.kt +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 Loading Loading @@ -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() { Loading @@ -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 Loading @@ -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 } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/SplitShadeHeaderController.kt +23 −2 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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)) Loading Loading @@ -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) } } }
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/SplitShadeHeaderControllerTest.kt +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 Loading Loading @@ -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() { Loading @@ -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 Loading @@ -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 } }