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:
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user