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

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

Change-Id: I35a5a6f686a843bafd1968ae788e81079ef31f6c
This commit is contained in:
Dave Mankoff
2021-07-01 17:50:18 +00:00
committed by Automerger Merge Worker
2 changed files with 40 additions and 23 deletions

View File

@@ -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

View File

@@ -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)