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

Commit 2af497b7 authored by Dave Mankoff's avatar Dave Mankoff Committed by Automerger Merge Worker
Browse files

Merge "Fix Flaky MediaPlayerDataTest test." into sc-dev am: 0bec3aba

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

Change-Id: If57b886400bb68c9b9f47afbb2c39b82a76b9810
parents f8639868 0bec3aba
Loading
Loading
Loading
Loading
+10 −7
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import com.android.systemui.util.Utils
import com.android.systemui.util.animation.UniqueObjectHostView
import com.android.systemui.util.animation.requiresRemeasuring
import com.android.systemui.util.concurrency.DelayableExecutor
import com.android.systemui.util.time.SystemClock
import java.util.TreeMap
import javax.inject.Inject
import javax.inject.Provider
@@ -45,6 +46,7 @@ class MediaCarouselController @Inject constructor(
    private val visualStabilityManager: VisualStabilityManager,
    private val mediaHostStatesManager: MediaHostStatesManager,
    private val activityStarter: ActivityStarter,
    private val systemClock: SystemClock,
    @Main executor: DelayableExecutor,
    private val mediaManager: MediaDataManager,
    configurationController: ConfigurationController,
@@ -358,12 +360,12 @@ class MediaCarouselController @Inject constructor(
            newPlayer.playerViewHolder?.player?.setLayoutParams(lp)
            newPlayer.bindPlayer(dataCopy, key)
            newPlayer.setListening(currentlyExpanded)
            MediaPlayerData.addMediaPlayer(key, dataCopy, newPlayer)
            MediaPlayerData.addMediaPlayer(key, dataCopy, newPlayer, systemClock)
            updatePlayerToState(newPlayer, noAnimation = true)
            reorderAllPlayers(curVisibleMediaKey)
        } else {
            existingPlayer.bindPlayer(dataCopy, key)
            MediaPlayerData.addMediaPlayer(key, dataCopy, existingPlayer)
            MediaPlayerData.addMediaPlayer(key, dataCopy, existingPlayer, systemClock)
            if (visualStabilityManager.isReorderingAllowed || shouldScrollToActivePlayer) {
                reorderAllPlayers(curVisibleMediaKey)
            } else {
@@ -407,7 +409,7 @@ class MediaCarouselController @Inject constructor(
        newRecs.bindRecommendation(data.copy(backgroundColor = bgColor))
        val curVisibleMediaKey = MediaPlayerData.playerKeys()
            .elementAtOrNull(mediaCarouselScrollHandler.visibleMediaIndex)
        MediaPlayerData.addMediaRecommendation(key, data, newRecs, shouldPrioritize)
        MediaPlayerData.addMediaRecommendation(key, data, newRecs, shouldPrioritize, systemClock)
        updatePlayerToState(newRecs, noAnimation = true)
        reorderAllPlayers(curVisibleMediaKey)
        updatePageIndicator()
@@ -775,9 +777,9 @@ internal object MediaPlayerData {
    private val mediaPlayers = TreeMap<MediaSortKey, MediaControlPanel>(comparator)
    private val mediaData: MutableMap<String, MediaSortKey> = mutableMapOf()

    fun addMediaPlayer(key: String, data: MediaData, player: MediaControlPanel) {
    fun addMediaPlayer(key: String, data: MediaData, player: MediaControlPanel, clock: SystemClock) {
        removeMediaPlayer(key)
        val sortKey = MediaSortKey(isSsMediaRec = false, data, System.currentTimeMillis())
        val sortKey = MediaSortKey(isSsMediaRec = false, data, clock.currentTimeMillis())
        mediaData.put(key, sortKey)
        mediaPlayers.put(sortKey, player)
    }
@@ -786,11 +788,12 @@ internal object MediaPlayerData {
        key: String,
        data: SmartspaceMediaData,
        player: MediaControlPanel,
        shouldPrioritize: Boolean
        shouldPrioritize: Boolean,
        clock: SystemClock
    ) {
        shouldPrioritizeSs = shouldPrioritize
        removeMediaPlayer(key)
        val sortKey = MediaSortKey(isSsMediaRec = true, EMPTY, System.currentTimeMillis())
        val sortKey = MediaSortKey(isSsMediaRec = true, EMPTY, clock.currentTimeMillis())
        mediaData.put(key, sortKey)
        mediaPlayers.put(sortKey, player)
        smartspaceMediaData = data
+30 −16
Original line number Diff line number Diff line
@@ -19,9 +19,9 @@ package com.android.systemui.media
import android.testing.AndroidTestingRunner
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -35,6 +35,7 @@ public class MediaPlayerDataTest : SysuiTestCase() {

    @Mock
    private lateinit var playerIsPlaying: MediaControlPanel
    private var systemClock: FakeSystemClock = FakeSystemClock()

    @JvmField
    @Rule
@@ -59,8 +60,8 @@ public class MediaPlayerDataTest : SysuiTestCase() {
        val playerIsRemote = mock(MediaControlPanel::class.java)
        val dataIsRemote = createMediaData("app2", PLAYING, !LOCAL, !RESUMPTION)

        MediaPlayerData.addMediaPlayer("2", dataIsRemote, playerIsRemote)
        MediaPlayerData.addMediaPlayer("1", dataIsPlaying, playerIsPlaying)
        MediaPlayerData.addMediaPlayer("2", dataIsRemote, playerIsRemote, systemClock)
        MediaPlayerData.addMediaPlayer("1", dataIsPlaying, playerIsPlaying, systemClock)

        val players = MediaPlayerData.players()
        assertThat(players).hasSize(2)
@@ -68,7 +69,6 @@ public class MediaPlayerDataTest : SysuiTestCase() {
    }

    @Test
    @Ignore("Flaky")
    fun switchPlayersPlaying() {
        val playerIsPlaying1 = mock(MediaControlPanel::class.java)
        var dataIsPlaying1 = createMediaData("app1", PLAYING, LOCAL, !RESUMPTION)
@@ -76,14 +76,19 @@ public class MediaPlayerDataTest : SysuiTestCase() {
        val playerIsPlaying2 = mock(MediaControlPanel::class.java)
        var dataIsPlaying2 = createMediaData("app2", !PLAYING, LOCAL, !RESUMPTION)

        MediaPlayerData.addMediaPlayer("1", dataIsPlaying1, playerIsPlaying1)
        MediaPlayerData.addMediaPlayer("2", dataIsPlaying2, playerIsPlaying2)
        MediaPlayerData.addMediaPlayer("1", dataIsPlaying1, playerIsPlaying1, systemClock)
        systemClock.advanceTime(1)
        MediaPlayerData.addMediaPlayer("2", dataIsPlaying2, playerIsPlaying2, systemClock)
        systemClock.advanceTime(1)

        dataIsPlaying1 = createMediaData("app1", !PLAYING, LOCAL, !RESUMPTION)
        dataIsPlaying2 = createMediaData("app2", PLAYING, LOCAL, !RESUMPTION)

        MediaPlayerData.addMediaPlayer("1", dataIsPlaying1, playerIsPlaying1)
        MediaPlayerData.addMediaPlayer("2", dataIsPlaying2, playerIsPlaying2)
        MediaPlayerData.addMediaPlayer("1", dataIsPlaying1, playerIsPlaying1, systemClock)
        systemClock.advanceTime(1)

        MediaPlayerData.addMediaPlayer("2", dataIsPlaying2, playerIsPlaying2, systemClock)
        systemClock.advanceTime(1)

        val players = MediaPlayerData.players()
        assertThat(players).hasSize(2)
@@ -109,12 +114,15 @@ public class MediaPlayerDataTest : SysuiTestCase() {
        val playerUndetermined = mock(MediaControlPanel::class.java)
        val dataUndetermined = createMediaData("app6", UNDETERMINED, LOCAL, RESUMPTION)

        MediaPlayerData.addMediaPlayer("3", dataIsStoppedAndLocal, playerIsStoppedAndLocal)
        MediaPlayerData.addMediaPlayer("5", dataIsStoppedAndRemote, playerIsStoppedAndRemote)
        MediaPlayerData.addMediaPlayer("4", dataCanResume, playerCanResume)
        MediaPlayerData.addMediaPlayer("1", dataIsPlaying, playerIsPlaying)
        MediaPlayerData.addMediaPlayer("2", dataIsPlayingAndRemote, playerIsPlayingAndRemote)
        MediaPlayerData.addMediaPlayer("6", dataUndetermined, playerUndetermined)
        MediaPlayerData.addMediaPlayer(
                "3", dataIsStoppedAndLocal, playerIsStoppedAndLocal, systemClock)
        MediaPlayerData.addMediaPlayer(
                "5", dataIsStoppedAndRemote, playerIsStoppedAndRemote, systemClock)
        MediaPlayerData.addMediaPlayer("4", dataCanResume, playerCanResume, systemClock)
        MediaPlayerData.addMediaPlayer("1", dataIsPlaying, playerIsPlaying, systemClock)
        MediaPlayerData.addMediaPlayer(
                "2", dataIsPlayingAndRemote, playerIsPlayingAndRemote, systemClock)
        MediaPlayerData.addMediaPlayer("6", dataUndetermined, playerUndetermined, systemClock)

        val players = MediaPlayerData.players()
        assertThat(players).hasSize(6)
@@ -130,8 +138,14 @@ public class MediaPlayerDataTest : SysuiTestCase() {

        val data = createMediaData("app1", PLAYING, LOCAL, !RESUMPTION)

        MediaPlayerData.addMediaPlayer(keyA, data, playerIsPlaying)
        MediaPlayerData.addMediaPlayer(keyB, data, playerIsPlaying)
        assertThat(MediaPlayerData.players()).hasSize(0)

        MediaPlayerData.addMediaPlayer(keyA, data, playerIsPlaying, systemClock)
        systemClock.advanceTime(1)

        assertThat(MediaPlayerData.players()).hasSize(1)
        MediaPlayerData.addMediaPlayer(keyB, data, playerIsPlaying, systemClock)
        systemClock.advanceTime(1)

        assertThat(MediaPlayerData.players()).hasSize(2)