diff options
2 files changed, 54 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaHierarchyManager.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaHierarchyManager.kt index 7fc7bdb872c9..e10d74db6333 100644 --- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaHierarchyManager.kt +++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaHierarchyManager.kt @@ -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 diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaHierarchyManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaHierarchyManagerTest.kt index a5795184b493..feb429d2f0d4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaHierarchyManagerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaHierarchyManagerTest.kt @@ -180,6 +180,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: mediaHierarchyManager.qsExpansion = 1.0f |