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

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

Change-Id: I61b2d8bd4aec01860cac9e9942e363a245633f37
This commit is contained in:
Michał Brzeziński
2021-12-14 11:15:50 +00:00
committed by Automerger Merge Worker
2 changed files with 54 additions and 10 deletions

View File

@@ -46,10 +46,11 @@ class SplitShadeHeaderController @Inject constructor(
private val SPLIT_HEADER_TRANSITION_ID = R.id.split_header_transition private val SPLIT_HEADER_TRANSITION_ID = R.id.split_header_transition
} }
private val carrierIconSlots: List<String>
private val combinedHeaders = featureFlags.useCombinedQSHeaders() private val combinedHeaders = featureFlags.useCombinedQSHeaders()
// TODO(b/194178072) Handle RSSI hiding when multi carrier
private val iconManager: StatusBarIconController.IconManager private val iconManager: StatusBarIconController.IconManager
private val qsCarrierGroupController: QSCarrierGroupController private val qsCarrierGroupController: QSCarrierGroupController
private val iconContainer: StatusIconContainer
private var visible = false private var visible = false
set(value) { set(value) {
if (field == value) { if (field == value) {
@@ -115,7 +116,16 @@ class SplitShadeHeaderController @Inject constructor(
batteryMeterViewController.ignoreTunerUpdates() batteryMeterViewController.ignoreTunerUpdates()
batteryIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE) 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) iconManager = StatusBarIconController.IconManager(iconContainer, featureFlags)
qsCarrierGroupController = qsCarrierGroupControllerBuilder qsCarrierGroupController = qsCarrierGroupControllerBuilder
.setQSCarrierGroup(statusBar.findViewById(R.id.carrier_group)) .setQSCarrierGroup(statusBar.findViewById(R.id.carrier_group))
@@ -181,9 +191,20 @@ class SplitShadeHeaderController @Inject constructor(
private fun updateListeners() { private fun updateListeners() {
qsCarrierGroupController.setListening(visible) qsCarrierGroupController.setListening(visible)
if (visible) { if (visible) {
updateSingleCarrier(qsCarrierGroupController.isSingleCarrier)
qsCarrierGroupController.setOnSingleCarrierChangedListener { updateSingleCarrier(it) }
statusBarIconController.addIconGroup(iconManager) statusBarIconController.addIconGroup(iconManager)
} else { } else {
qsCarrierGroupController.setOnSingleCarrierChangedListener(null)
statusBarIconController.removeIconGroup(iconManager) statusBarIconController.removeIconGroup(iconManager)
} }
} }
private fun updateSingleCarrier(singleCarrier: Boolean) {
if (singleCarrier) {
iconContainer.removeIgnoredSlots(carrierIconSlots)
} else {
iconContainer.addIgnoredSlots(carrierIconSlots)
}
}
} }

View File

@@ -1,8 +1,8 @@
package com.android.systemui.statusbar.phone package com.android.systemui.statusbar.phone
import android.test.suitebuilder.annotation.SmallTest
import android.testing.AndroidTestingRunner import android.testing.AndroidTestingRunner
import android.view.View import android.view.View
import androidx.test.filters.SmallTest
import com.android.systemui.R import com.android.systemui.R
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.ShadeInterpolation import com.android.systemui.animation.ShadeInterpolation
@@ -41,6 +41,7 @@ class SplitShadeHeaderControllerTest : SysuiTestCase() {
var viewVisibility = View.GONE var viewVisibility = View.GONE
private lateinit var splitShadeHeaderController: SplitShadeHeaderController private lateinit var splitShadeHeaderController: SplitShadeHeaderController
private lateinit var carrierIconSlots: List<String>
@Before @Before
fun setup() { fun setup() {
@@ -66,12 +67,13 @@ class SplitShadeHeaderControllerTest : SysuiTestCase() {
featureFlags, featureFlags,
batteryMeterViewController batteryMeterViewController
) )
carrierIconSlots = listOf(
context.getString(com.android.internal.R.string.status_bar_mobile))
} }
@Test @Test
fun setVisible_onlyInSplitShade() { fun setVisible_onlyInSplitShade() {
splitShadeHeaderController.splitShadeMode = true makeShadeVisible()
splitShadeHeaderController.shadeExpanded = true
assertThat(viewVisibility).isEqualTo(View.VISIBLE) assertThat(viewVisibility).isEqualTo(View.VISIBLE)
splitShadeHeaderController.splitShadeMode = false splitShadeHeaderController.splitShadeMode = false
@@ -80,17 +82,38 @@ class SplitShadeHeaderControllerTest : SysuiTestCase() {
@Test @Test
fun updateListeners_registersWhenVisible() { fun updateListeners_registersWhenVisible() {
splitShadeHeaderController.splitShadeMode = true makeShadeVisible()
splitShadeHeaderController.shadeExpanded = true
verify(qsCarrierGroupController).setListening(true) verify(qsCarrierGroupController).setListening(true)
verify(statusBarIconController).addIconGroup(any()) verify(statusBarIconController).addIconGroup(any())
} }
@Test @Test
fun shadeExpandedFraction_updatesAlpha() { fun shadeExpandedFraction_updatesAlpha() {
splitShadeHeaderController.splitShadeMode = true makeShadeVisible()
splitShadeHeaderController.shadeExpanded = true
splitShadeHeaderController.shadeExpandedFraction = 0.5f splitShadeHeaderController.shadeExpandedFraction = 0.5f
verify(view).setAlpha(ShadeInterpolation.getContentAlpha(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
}
}