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

This commit is contained in:
Michał Brzeziński
2021-12-14 11:09:50 +00:00
committed by Android (Google) Code Review
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 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)
}
}
}

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
@@ -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
}
}