Check for block location change when configuration changes

In foldables, we switch from landscape to portrait when we fold the
device. This force media controls to update state. But we need to
make sure it is not canceling the need to block location changes.

Bug: 265312583
Test: atest MediaHierarchyManagerTest
Test: checked the device many times to see if the flashing goes away.
Change-Id: Icb93a114613901287bdcfd22584fd8c4844199f7
This commit is contained in:
Michael Mikhail
2023-03-10 17:03:26 +00:00
parent c2936af3cf
commit 331cde2570
2 changed files with 54 additions and 1 deletions

View File

@@ -639,7 +639,9 @@ constructor(
) =
traceSection("MediaHierarchyManager#updateDesiredLocation") {
val desiredLocation = calculateLocation()
if (desiredLocation != this.desiredLocation || forceStateUpdate) {
if (
desiredLocation != this.desiredLocation || forceStateUpdate && !blockLocationChanges
) {
if (this.desiredLocation >= 0 && desiredLocation != this.desiredLocation) {
// Only update previous location when it actually changes
previousLocation = this.desiredLocation

View File

@@ -179,6 +179,57 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
)
}
@Test
fun testBlockedWhenConfigurationChangesAndScreenOff() {
// Let's set it onto QS:
mediaHierarchyManager.qsExpansion = 1.0f
verify(mediaCarouselController)
.onDesiredLocationChanged(
ArgumentMatchers.anyInt(),
any(MediaHostState::class.java),
anyBoolean(),
anyLong(),
anyLong()
)
val observer = wakefullnessObserver.value
assertNotNull("lifecycle observer wasn't registered", observer)
observer.onStartedGoingToSleep()
clearInvocations(mediaCarouselController)
configurationController.notifyConfigurationChanged()
verify(mediaCarouselController, times(0))
.onDesiredLocationChanged(
ArgumentMatchers.anyInt(),
any(MediaHostState::class.java),
anyBoolean(),
anyLong(),
anyLong()
)
}
@Test
fun testAllowedWhenConfigurationChanges() {
// Let's set it onto QS:
mediaHierarchyManager.qsExpansion = 1.0f
verify(mediaCarouselController)
.onDesiredLocationChanged(
ArgumentMatchers.anyInt(),
any(MediaHostState::class.java),
anyBoolean(),
anyLong(),
anyLong()
)
clearInvocations(mediaCarouselController)
configurationController.notifyConfigurationChanged()
verify(mediaCarouselController)
.onDesiredLocationChanged(
ArgumentMatchers.anyInt(),
any(MediaHostState::class.java),
anyBoolean(),
anyLong(),
anyLong()
)
}
@Test
fun testAllowedWhenNotTurningOff() {
// Let's set it onto QS: