Merge "Fixing displaying two carriers in split shade header"

This commit is contained in:
Michał Brzeziński
2021-12-13 23:29:16 +00:00
committed by Android (Google) Code Review
2 changed files with 54 additions and 10 deletions

View File

@@ -49,8 +49,9 @@ class SplitShadeHeaderController @Inject constructor(
}
private val combinedHeaders = featureFlags.isEnabled(Flags.COMBINED_QS_HEADERS)
// TODO(b/194178072) Handle RSSI hiding when multi carrier
private val iconManager: StatusBarIconController.TintedIconManager
private val iconContainer: StatusIconContainer
private val carrierIconSlots: List<String>
private val qsCarrierGroupController: QSCarrierGroupController
private var visible = false
set(value) {
@@ -117,10 +118,19 @@ class SplitShadeHeaderController @Inject constructor(
batteryMeterViewController.ignoreTunerUpdates()
batteryIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE)
val iconContainer: StatusIconContainer = statusBar.findViewById(R.id.statusIcons)
iconContainer = statusBar.findViewById(R.id.statusIcons)
iconManager = StatusBarIconController.TintedIconManager(iconContainer, featureFlags)
iconManager.setTint(Utils.getColorAttrDefaultColor(statusBar.context,
android.R.attr.textColorPrimary))
carrierIconSlots = if (featureFlags.isEnabled(Flags.COMBINED_STATUS_BAR_SIGNAL_ICONS)) {
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))
}
qsCarrierGroupController = qsCarrierGroupControllerBuilder
.setQSCarrierGroup(statusBar.findViewById(R.id.carrier_group))
.build()
@@ -185,9 +195,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)
}
}
}

View File

@@ -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
@@ -42,6 +42,7 @@ class SplitShadeHeaderControllerTest : SysuiTestCase() {
var viewVisibility = View.GONE
private lateinit var splitShadeHeaderController: SplitShadeHeaderController
private lateinit var carrierIconSlots: List<String>
@Before
fun setup() {
@@ -67,12 +68,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
@@ -81,17 +83,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
}
}