Merge "Fix Flaky MediaPlayerDataTest test." into sc-dev
This commit is contained in:
@@ -26,6 +26,7 @@ import com.android.systemui.util.Utils
|
|||||||
import com.android.systemui.util.animation.UniqueObjectHostView
|
import com.android.systemui.util.animation.UniqueObjectHostView
|
||||||
import com.android.systemui.util.animation.requiresRemeasuring
|
import com.android.systemui.util.animation.requiresRemeasuring
|
||||||
import com.android.systemui.util.concurrency.DelayableExecutor
|
import com.android.systemui.util.concurrency.DelayableExecutor
|
||||||
|
import com.android.systemui.util.time.SystemClock
|
||||||
import java.util.TreeMap
|
import java.util.TreeMap
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import javax.inject.Provider
|
import javax.inject.Provider
|
||||||
@@ -45,6 +46,7 @@ class MediaCarouselController @Inject constructor(
|
|||||||
private val visualStabilityManager: VisualStabilityManager,
|
private val visualStabilityManager: VisualStabilityManager,
|
||||||
private val mediaHostStatesManager: MediaHostStatesManager,
|
private val mediaHostStatesManager: MediaHostStatesManager,
|
||||||
private val activityStarter: ActivityStarter,
|
private val activityStarter: ActivityStarter,
|
||||||
|
private val systemClock: SystemClock,
|
||||||
@Main executor: DelayableExecutor,
|
@Main executor: DelayableExecutor,
|
||||||
private val mediaManager: MediaDataManager,
|
private val mediaManager: MediaDataManager,
|
||||||
configurationController: ConfigurationController,
|
configurationController: ConfigurationController,
|
||||||
@@ -358,12 +360,12 @@ class MediaCarouselController @Inject constructor(
|
|||||||
newPlayer.playerViewHolder?.player?.setLayoutParams(lp)
|
newPlayer.playerViewHolder?.player?.setLayoutParams(lp)
|
||||||
newPlayer.bindPlayer(dataCopy, key)
|
newPlayer.bindPlayer(dataCopy, key)
|
||||||
newPlayer.setListening(currentlyExpanded)
|
newPlayer.setListening(currentlyExpanded)
|
||||||
MediaPlayerData.addMediaPlayer(key, dataCopy, newPlayer)
|
MediaPlayerData.addMediaPlayer(key, dataCopy, newPlayer, systemClock)
|
||||||
updatePlayerToState(newPlayer, noAnimation = true)
|
updatePlayerToState(newPlayer, noAnimation = true)
|
||||||
reorderAllPlayers(curVisibleMediaKey)
|
reorderAllPlayers(curVisibleMediaKey)
|
||||||
} else {
|
} else {
|
||||||
existingPlayer.bindPlayer(dataCopy, key)
|
existingPlayer.bindPlayer(dataCopy, key)
|
||||||
MediaPlayerData.addMediaPlayer(key, dataCopy, existingPlayer)
|
MediaPlayerData.addMediaPlayer(key, dataCopy, existingPlayer, systemClock)
|
||||||
if (visualStabilityManager.isReorderingAllowed || shouldScrollToActivePlayer) {
|
if (visualStabilityManager.isReorderingAllowed || shouldScrollToActivePlayer) {
|
||||||
reorderAllPlayers(curVisibleMediaKey)
|
reorderAllPlayers(curVisibleMediaKey)
|
||||||
} else {
|
} else {
|
||||||
@@ -407,7 +409,7 @@ class MediaCarouselController @Inject constructor(
|
|||||||
newRecs.bindRecommendation(data.copy(backgroundColor = bgColor))
|
newRecs.bindRecommendation(data.copy(backgroundColor = bgColor))
|
||||||
val curVisibleMediaKey = MediaPlayerData.playerKeys()
|
val curVisibleMediaKey = MediaPlayerData.playerKeys()
|
||||||
.elementAtOrNull(mediaCarouselScrollHandler.visibleMediaIndex)
|
.elementAtOrNull(mediaCarouselScrollHandler.visibleMediaIndex)
|
||||||
MediaPlayerData.addMediaRecommendation(key, data, newRecs, shouldPrioritize)
|
MediaPlayerData.addMediaRecommendation(key, data, newRecs, shouldPrioritize, systemClock)
|
||||||
updatePlayerToState(newRecs, noAnimation = true)
|
updatePlayerToState(newRecs, noAnimation = true)
|
||||||
reorderAllPlayers(curVisibleMediaKey)
|
reorderAllPlayers(curVisibleMediaKey)
|
||||||
updatePageIndicator()
|
updatePageIndicator()
|
||||||
@@ -775,9 +777,9 @@ internal object MediaPlayerData {
|
|||||||
private val mediaPlayers = TreeMap<MediaSortKey, MediaControlPanel>(comparator)
|
private val mediaPlayers = TreeMap<MediaSortKey, MediaControlPanel>(comparator)
|
||||||
private val mediaData: MutableMap<String, MediaSortKey> = mutableMapOf()
|
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)
|
removeMediaPlayer(key)
|
||||||
val sortKey = MediaSortKey(isSsMediaRec = false, data, System.currentTimeMillis())
|
val sortKey = MediaSortKey(isSsMediaRec = false, data, clock.currentTimeMillis())
|
||||||
mediaData.put(key, sortKey)
|
mediaData.put(key, sortKey)
|
||||||
mediaPlayers.put(sortKey, player)
|
mediaPlayers.put(sortKey, player)
|
||||||
}
|
}
|
||||||
@@ -786,11 +788,12 @@ internal object MediaPlayerData {
|
|||||||
key: String,
|
key: String,
|
||||||
data: SmartspaceMediaData,
|
data: SmartspaceMediaData,
|
||||||
player: MediaControlPanel,
|
player: MediaControlPanel,
|
||||||
shouldPrioritize: Boolean
|
shouldPrioritize: Boolean,
|
||||||
|
clock: SystemClock
|
||||||
) {
|
) {
|
||||||
shouldPrioritizeSs = shouldPrioritize
|
shouldPrioritizeSs = shouldPrioritize
|
||||||
removeMediaPlayer(key)
|
removeMediaPlayer(key)
|
||||||
val sortKey = MediaSortKey(isSsMediaRec = true, EMPTY, System.currentTimeMillis())
|
val sortKey = MediaSortKey(isSsMediaRec = true, EMPTY, clock.currentTimeMillis())
|
||||||
mediaData.put(key, sortKey)
|
mediaData.put(key, sortKey)
|
||||||
mediaPlayers.put(sortKey, player)
|
mediaPlayers.put(sortKey, player)
|
||||||
smartspaceMediaData = data
|
smartspaceMediaData = data
|
||||||
|
|||||||
@@ -19,9 +19,9 @@ package com.android.systemui.media
|
|||||||
import android.testing.AndroidTestingRunner
|
import android.testing.AndroidTestingRunner
|
||||||
import androidx.test.filters.SmallTest
|
import androidx.test.filters.SmallTest
|
||||||
import com.android.systemui.SysuiTestCase
|
import com.android.systemui.SysuiTestCase
|
||||||
|
import com.android.systemui.util.time.FakeSystemClock
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Ignore
|
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
@@ -35,6 +35,7 @@ public class MediaPlayerDataTest : SysuiTestCase() {
|
|||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private lateinit var playerIsPlaying: MediaControlPanel
|
private lateinit var playerIsPlaying: MediaControlPanel
|
||||||
|
private var systemClock: FakeSystemClock = FakeSystemClock()
|
||||||
|
|
||||||
@JvmField
|
@JvmField
|
||||||
@Rule
|
@Rule
|
||||||
@@ -59,8 +60,8 @@ public class MediaPlayerDataTest : SysuiTestCase() {
|
|||||||
val playerIsRemote = mock(MediaControlPanel::class.java)
|
val playerIsRemote = mock(MediaControlPanel::class.java)
|
||||||
val dataIsRemote = createMediaData("app2", PLAYING, !LOCAL, !RESUMPTION)
|
val dataIsRemote = createMediaData("app2", PLAYING, !LOCAL, !RESUMPTION)
|
||||||
|
|
||||||
MediaPlayerData.addMediaPlayer("2", dataIsRemote, playerIsRemote)
|
MediaPlayerData.addMediaPlayer("2", dataIsRemote, playerIsRemote, systemClock)
|
||||||
MediaPlayerData.addMediaPlayer("1", dataIsPlaying, playerIsPlaying)
|
MediaPlayerData.addMediaPlayer("1", dataIsPlaying, playerIsPlaying, systemClock)
|
||||||
|
|
||||||
val players = MediaPlayerData.players()
|
val players = MediaPlayerData.players()
|
||||||
assertThat(players).hasSize(2)
|
assertThat(players).hasSize(2)
|
||||||
@@ -68,7 +69,6 @@ public class MediaPlayerDataTest : SysuiTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore("Flaky")
|
|
||||||
fun switchPlayersPlaying() {
|
fun switchPlayersPlaying() {
|
||||||
val playerIsPlaying1 = mock(MediaControlPanel::class.java)
|
val playerIsPlaying1 = mock(MediaControlPanel::class.java)
|
||||||
var dataIsPlaying1 = createMediaData("app1", PLAYING, LOCAL, !RESUMPTION)
|
var dataIsPlaying1 = createMediaData("app1", PLAYING, LOCAL, !RESUMPTION)
|
||||||
@@ -76,14 +76,19 @@ public class MediaPlayerDataTest : SysuiTestCase() {
|
|||||||
val playerIsPlaying2 = mock(MediaControlPanel::class.java)
|
val playerIsPlaying2 = mock(MediaControlPanel::class.java)
|
||||||
var dataIsPlaying2 = createMediaData("app2", !PLAYING, LOCAL, !RESUMPTION)
|
var dataIsPlaying2 = createMediaData("app2", !PLAYING, LOCAL, !RESUMPTION)
|
||||||
|
|
||||||
MediaPlayerData.addMediaPlayer("1", dataIsPlaying1, playerIsPlaying1)
|
MediaPlayerData.addMediaPlayer("1", dataIsPlaying1, playerIsPlaying1, systemClock)
|
||||||
MediaPlayerData.addMediaPlayer("2", dataIsPlaying2, playerIsPlaying2)
|
systemClock.advanceTime(1)
|
||||||
|
MediaPlayerData.addMediaPlayer("2", dataIsPlaying2, playerIsPlaying2, systemClock)
|
||||||
|
systemClock.advanceTime(1)
|
||||||
|
|
||||||
dataIsPlaying1 = createMediaData("app1", !PLAYING, LOCAL, !RESUMPTION)
|
dataIsPlaying1 = createMediaData("app1", !PLAYING, LOCAL, !RESUMPTION)
|
||||||
dataIsPlaying2 = createMediaData("app2", PLAYING, LOCAL, !RESUMPTION)
|
dataIsPlaying2 = createMediaData("app2", PLAYING, LOCAL, !RESUMPTION)
|
||||||
|
|
||||||
MediaPlayerData.addMediaPlayer("1", dataIsPlaying1, playerIsPlaying1)
|
MediaPlayerData.addMediaPlayer("1", dataIsPlaying1, playerIsPlaying1, systemClock)
|
||||||
MediaPlayerData.addMediaPlayer("2", dataIsPlaying2, playerIsPlaying2)
|
systemClock.advanceTime(1)
|
||||||
|
|
||||||
|
MediaPlayerData.addMediaPlayer("2", dataIsPlaying2, playerIsPlaying2, systemClock)
|
||||||
|
systemClock.advanceTime(1)
|
||||||
|
|
||||||
val players = MediaPlayerData.players()
|
val players = MediaPlayerData.players()
|
||||||
assertThat(players).hasSize(2)
|
assertThat(players).hasSize(2)
|
||||||
@@ -109,12 +114,15 @@ public class MediaPlayerDataTest : SysuiTestCase() {
|
|||||||
val playerUndetermined = mock(MediaControlPanel::class.java)
|
val playerUndetermined = mock(MediaControlPanel::class.java)
|
||||||
val dataUndetermined = createMediaData("app6", UNDETERMINED, LOCAL, RESUMPTION)
|
val dataUndetermined = createMediaData("app6", UNDETERMINED, LOCAL, RESUMPTION)
|
||||||
|
|
||||||
MediaPlayerData.addMediaPlayer("3", dataIsStoppedAndLocal, playerIsStoppedAndLocal)
|
MediaPlayerData.addMediaPlayer(
|
||||||
MediaPlayerData.addMediaPlayer("5", dataIsStoppedAndRemote, playerIsStoppedAndRemote)
|
"3", dataIsStoppedAndLocal, playerIsStoppedAndLocal, systemClock)
|
||||||
MediaPlayerData.addMediaPlayer("4", dataCanResume, playerCanResume)
|
MediaPlayerData.addMediaPlayer(
|
||||||
MediaPlayerData.addMediaPlayer("1", dataIsPlaying, playerIsPlaying)
|
"5", dataIsStoppedAndRemote, playerIsStoppedAndRemote, systemClock)
|
||||||
MediaPlayerData.addMediaPlayer("2", dataIsPlayingAndRemote, playerIsPlayingAndRemote)
|
MediaPlayerData.addMediaPlayer("4", dataCanResume, playerCanResume, systemClock)
|
||||||
MediaPlayerData.addMediaPlayer("6", dataUndetermined, playerUndetermined)
|
MediaPlayerData.addMediaPlayer("1", dataIsPlaying, playerIsPlaying, systemClock)
|
||||||
|
MediaPlayerData.addMediaPlayer(
|
||||||
|
"2", dataIsPlayingAndRemote, playerIsPlayingAndRemote, systemClock)
|
||||||
|
MediaPlayerData.addMediaPlayer("6", dataUndetermined, playerUndetermined, systemClock)
|
||||||
|
|
||||||
val players = MediaPlayerData.players()
|
val players = MediaPlayerData.players()
|
||||||
assertThat(players).hasSize(6)
|
assertThat(players).hasSize(6)
|
||||||
@@ -130,8 +138,14 @@ public class MediaPlayerDataTest : SysuiTestCase() {
|
|||||||
|
|
||||||
val data = createMediaData("app1", PLAYING, LOCAL, !RESUMPTION)
|
val data = createMediaData("app1", PLAYING, LOCAL, !RESUMPTION)
|
||||||
|
|
||||||
MediaPlayerData.addMediaPlayer(keyA, data, playerIsPlaying)
|
assertThat(MediaPlayerData.players()).hasSize(0)
|
||||||
MediaPlayerData.addMediaPlayer(keyB, data, playerIsPlaying)
|
|
||||||
|
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)
|
assertThat(MediaPlayerData.players()).hasSize(2)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user