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

Commit 09f301bb authored by Michael Mikhail's avatar Michael Mikhail Committed by Automerger Merge Worker
Browse files

Merge "Reorder media players when orientation changes" into tm-qpr-dev am:...

Merge "Reorder media players when orientation changes" into tm-qpr-dev am: b4abaa6b am: 5068cb17

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20788406



Change-Id: Ic499067687ed818a4e12c0a684c84fdb9dfa9a23
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents f512145d 5068cb17
Loading
Loading
Loading
Loading
+14 −1
Original line number Original line Diff line number Diff line
@@ -184,6 +184,7 @@ constructor(


    private val configListener =
    private val configListener =
        object : ConfigurationController.ConfigurationListener {
        object : ConfigurationController.ConfigurationListener {
            var lastOrientation = -1


            override fun onDensityOrFontScaleChanged() {
            override fun onDensityOrFontScaleChanged() {
                // System font changes should only happen when UMO is offscreen or a flicker may
                // System font changes should only happen when UMO is offscreen or a flicker may
@@ -200,8 +201,14 @@ constructor(
            override fun onConfigChanged(newConfig: Configuration?) {
            override fun onConfigChanged(newConfig: Configuration?) {
                if (newConfig == null) return
                if (newConfig == null) return
                isRtl = newConfig.layoutDirection == View.LAYOUT_DIRECTION_RTL
                isRtl = newConfig.layoutDirection == View.LAYOUT_DIRECTION_RTL
                val newOrientation = newConfig.orientation
                if (lastOrientation != newOrientation) {
                    // The players actually depend on the orientation possibly, so we have to
                    // recreate them (at least on large screen devices)
                    lastOrientation = newOrientation
                    updatePlayers(recreateMedia = true)
                    updatePlayers(recreateMedia = true)
                }
                }
            }


            override fun onUiModeChanged() {
            override fun onUiModeChanged() {
                updatePlayers(recreateMedia = false)
                updatePlayers(recreateMedia = false)
@@ -717,6 +724,9 @@ constructor(
    private fun updatePlayers(recreateMedia: Boolean) {
    private fun updatePlayers(recreateMedia: Boolean) {
        pageIndicator.tintList =
        pageIndicator.tintList =
            ColorStateList.valueOf(context.getColor(R.color.media_paging_indicator))
            ColorStateList.valueOf(context.getColor(R.color.media_paging_indicator))
        val previousVisibleKey =
            MediaPlayerData.visiblePlayerKeys()
                .elementAtOrNull(mediaCarouselScrollHandler.visibleMediaIndex)


        MediaPlayerData.mediaData().forEach { (key, data, isSsMediaRec) ->
        MediaPlayerData.mediaData().forEach { (key, data, isSsMediaRec) ->
            if (isSsMediaRec) {
            if (isSsMediaRec) {
@@ -741,6 +751,9 @@ constructor(
                    isSsReactivated = isSsReactivated
                    isSsReactivated = isSsReactivated
                )
                )
            }
            }
            if (recreateMedia) {
                reorderAllPlayers(previousVisibleKey)
            }
        }
        }
    }
    }


+40 −0
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.media.controls.ui
package com.android.systemui.media.controls.ui


import android.app.PendingIntent
import android.app.PendingIntent
import android.content.res.Configuration
import android.testing.AndroidTestingRunner
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper
import android.testing.TestableLooper
import androidx.test.filters.SmallTest
import androidx.test.filters.SmallTest
@@ -86,6 +87,9 @@ class MediaCarouselControllerTest : SysuiTestCase() {
    @Mock lateinit var mediaViewController: MediaViewController
    @Mock lateinit var mediaViewController: MediaViewController
    @Mock lateinit var smartspaceMediaData: SmartspaceMediaData
    @Mock lateinit var smartspaceMediaData: SmartspaceMediaData
    @Captor lateinit var listener: ArgumentCaptor<MediaDataManager.Listener>
    @Captor lateinit var listener: ArgumentCaptor<MediaDataManager.Listener>
    @Captor
    lateinit var configListener: ArgumentCaptor<ConfigurationController.ConfigurationListener>
    @Captor lateinit var newConfig: ArgumentCaptor<Configuration>
    @Captor lateinit var visualStabilityCallback: ArgumentCaptor<OnReorderingAllowedListener>
    @Captor lateinit var visualStabilityCallback: ArgumentCaptor<OnReorderingAllowedListener>


    private val clock = FakeSystemClock()
    private val clock = FakeSystemClock()
@@ -111,6 +115,7 @@ class MediaCarouselControllerTest : SysuiTestCase() {
                logger,
                logger,
                debugLogger
                debugLogger
            )
            )
        verify(configurationController).addCallback(capture(configListener))
        verify(mediaDataManager).addListener(capture(listener))
        verify(mediaDataManager).addListener(capture(listener))
        verify(visualStabilityProvider)
        verify(visualStabilityProvider)
            .addPersistentReorderingAllowedListener(capture(visualStabilityCallback))
            .addPersistentReorderingAllowedListener(capture(visualStabilityCallback))
@@ -662,4 +667,39 @@ class MediaCarouselControllerTest : SysuiTestCase() {
        mediaCarouselController.updatePageIndicatorAlpha()
        mediaCarouselController.updatePageIndicatorAlpha()
        assertEquals(mediaCarouselController.pageIndicator.alpha, 1.0F, delta)
        assertEquals(mediaCarouselController.pageIndicator.alpha, 1.0F, delta)
    }
    }

    @Ignore("b/253229241")
    @Test
    fun testOnConfigChanged_playersAreAddedBack() {
        listener.value.onMediaDataLoaded(
            "playing local",
            null,
            DATA.copy(
                active = true,
                isPlaying = true,
                playbackLocation = MediaData.PLAYBACK_LOCAL,
                resumption = false
            )
        )
        listener.value.onMediaDataLoaded(
            "paused local",
            null,
            DATA.copy(
                active = true,
                isPlaying = false,
                playbackLocation = MediaData.PLAYBACK_LOCAL,
                resumption = false
            )
        )

        val playersSize = MediaPlayerData.players().size

        configListener.value.onConfigChanged(capture(newConfig))

        assertEquals(playersSize, MediaPlayerData.players().size)
        assertEquals(
            MediaPlayerData.getMediaPlayerIndex("playing local"),
            mediaCarouselController.mediaCarouselScrollHandler.visibleMediaIndex
        )
    }
}
}