Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 331cde25 authored by Michael Mikhail's avatar Michael Mikhail
Browse files

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
parent c2936af3
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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
+51 −0
Original line number Diff line number Diff line
@@ -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: