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

Commit b4abaa6b authored by Michael Mikhail's avatar Michael Mikhail Committed by Android (Google) Code Review
Browse files

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

parents f2b5978c d16af9ee
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -184,6 +184,7 @@ constructor(

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

            override fun onDensityOrFontScaleChanged() {
                // System font changes should only happen when UMO is offscreen or a flicker may
@@ -200,8 +201,14 @@ constructor(
            override fun onConfigChanged(newConfig: Configuration?) {
                if (newConfig == null) return
                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)
                }
            }

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

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

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

import android.app.PendingIntent
import android.content.res.Configuration
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper
import androidx.test.filters.SmallTest
@@ -86,6 +87,9 @@ class MediaCarouselControllerTest : SysuiTestCase() {
    @Mock lateinit var mediaViewController: MediaViewController
    @Mock lateinit var smartspaceMediaData: SmartspaceMediaData
    @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>

    private val clock = FakeSystemClock()
@@ -111,6 +115,7 @@ class MediaCarouselControllerTest : SysuiTestCase() {
                logger,
                debugLogger
            )
        verify(configurationController).addCallback(capture(configListener))
        verify(mediaDataManager).addListener(capture(listener))
        verify(visualStabilityProvider)
            .addPersistentReorderingAllowedListener(capture(visualStabilityCallback))
@@ -662,4 +667,39 @@ class MediaCarouselControllerTest : SysuiTestCase() {
        mediaCarouselController.updatePageIndicatorAlpha()
        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
        )
    }
}