Merge "Run inflations of UMO in a background thread" into tm-qpr-dev am: 69ce10984c
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21448725 Change-Id: I141819553a9b5b94bb169d1901e3e1343660e035 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -39,6 +39,7 @@ import com.android.systemui.Dumpable
|
|||||||
import com.android.systemui.R
|
import com.android.systemui.R
|
||||||
import com.android.systemui.classifier.FalsingCollector
|
import com.android.systemui.classifier.FalsingCollector
|
||||||
import com.android.systemui.dagger.SysUISingleton
|
import com.android.systemui.dagger.SysUISingleton
|
||||||
|
import com.android.systemui.dagger.qualifiers.Background
|
||||||
import com.android.systemui.dagger.qualifiers.Main
|
import com.android.systemui.dagger.qualifiers.Main
|
||||||
import com.android.systemui.dump.DumpManager
|
import com.android.systemui.dump.DumpManager
|
||||||
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
|
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
|
||||||
@@ -68,6 +69,7 @@ import com.android.systemui.util.time.SystemClock
|
|||||||
import com.android.systemui.util.traceSection
|
import com.android.systemui.util.traceSection
|
||||||
import java.io.PrintWriter
|
import java.io.PrintWriter
|
||||||
import java.util.TreeMap
|
import java.util.TreeMap
|
||||||
|
import java.util.concurrent.Executor
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import javax.inject.Provider
|
import javax.inject.Provider
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
@@ -93,7 +95,8 @@ constructor(
|
|||||||
private val mediaHostStatesManager: MediaHostStatesManager,
|
private val mediaHostStatesManager: MediaHostStatesManager,
|
||||||
private val activityStarter: ActivityStarter,
|
private val activityStarter: ActivityStarter,
|
||||||
private val systemClock: SystemClock,
|
private val systemClock: SystemClock,
|
||||||
@Main executor: DelayableExecutor,
|
@Main private val mainExecutor: DelayableExecutor,
|
||||||
|
@Background private val backgroundExecutor: Executor,
|
||||||
private val mediaManager: MediaDataManager,
|
private val mediaManager: MediaDataManager,
|
||||||
configurationController: ConfigurationController,
|
configurationController: ConfigurationController,
|
||||||
falsingCollector: FalsingCollector,
|
falsingCollector: FalsingCollector,
|
||||||
@@ -256,7 +259,7 @@ constructor(
|
|||||||
MediaCarouselScrollHandler(
|
MediaCarouselScrollHandler(
|
||||||
mediaCarousel,
|
mediaCarousel,
|
||||||
pageIndicator,
|
pageIndicator,
|
||||||
executor,
|
mainExecutor,
|
||||||
this::onSwipeToDismiss,
|
this::onSwipeToDismiss,
|
||||||
this::updatePageIndicatorLocation,
|
this::updatePageIndicatorLocation,
|
||||||
this::updateSeekbarListening,
|
this::updateSeekbarListening,
|
||||||
@@ -618,10 +621,50 @@ constructor(
|
|||||||
MediaPlayerData.visiblePlayerKeys()
|
MediaPlayerData.visiblePlayerKeys()
|
||||||
.elementAtOrNull(mediaCarouselScrollHandler.visibleMediaIndex)
|
.elementAtOrNull(mediaCarouselScrollHandler.visibleMediaIndex)
|
||||||
if (existingPlayer == null) {
|
if (existingPlayer == null) {
|
||||||
val newPlayer = mediaControlPanelFactory.get()
|
setupNewPlayer(key, data, isSsReactivated, curVisibleMediaKey)
|
||||||
newPlayer.attachPlayer(
|
} else {
|
||||||
MediaViewHolder.create(LayoutInflater.from(context), mediaContent)
|
existingPlayer.bindPlayer(data, key)
|
||||||
|
MediaPlayerData.addMediaPlayer(
|
||||||
|
key,
|
||||||
|
data,
|
||||||
|
existingPlayer,
|
||||||
|
systemClock,
|
||||||
|
isSsReactivated,
|
||||||
|
debugLogger
|
||||||
)
|
)
|
||||||
|
val packageName = MediaPlayerData.smartspaceMediaData?.packageName ?: String()
|
||||||
|
// In case of recommendations hits.
|
||||||
|
// Check the playing status of media player and the package name.
|
||||||
|
// To make sure we scroll to the right app's media player.
|
||||||
|
if (
|
||||||
|
isReorderingAllowed ||
|
||||||
|
shouldScrollToKey &&
|
||||||
|
data.isPlaying == true &&
|
||||||
|
packageName == data.packageName
|
||||||
|
) {
|
||||||
|
reorderAllPlayers(curVisibleMediaKey, key)
|
||||||
|
} else {
|
||||||
|
needsReordering = true
|
||||||
|
}
|
||||||
|
updatePageIndicator()
|
||||||
|
mediaCarouselScrollHandler.onPlayersChanged()
|
||||||
|
mediaFrame.requiresRemeasuring = true
|
||||||
|
}
|
||||||
|
return existingPlayer == null
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setupNewPlayer(
|
||||||
|
key: String,
|
||||||
|
data: MediaData,
|
||||||
|
isSsReactivated: Boolean,
|
||||||
|
curVisibleMediaKey: MediaPlayerData.MediaSortKey?,
|
||||||
|
) {
|
||||||
|
backgroundExecutor.execute {
|
||||||
|
val mediaViewHolder = createMediaViewHolderInBg()
|
||||||
|
// Add the new player in the main thread.
|
||||||
|
mainExecutor.execute {
|
||||||
|
val newPlayer = mediaControlPanelFactory.get()
|
||||||
|
newPlayer.attachPlayer(mediaViewHolder)
|
||||||
newPlayer.mediaViewController.sizeChangedListener = this::updateCarouselDimensions
|
newPlayer.mediaViewController.sizeChangedListener = this::updateCarouselDimensions
|
||||||
val lp =
|
val lp =
|
||||||
LinearLayout.LayoutParams(
|
LinearLayout.LayoutParams(
|
||||||
@@ -651,36 +694,16 @@ constructor(
|
|||||||
} else {
|
} else {
|
||||||
needsReordering = true
|
needsReordering = true
|
||||||
}
|
}
|
||||||
} else {
|
updatePageIndicator()
|
||||||
existingPlayer.bindPlayer(data, key)
|
mediaCarouselScrollHandler.onPlayersChanged()
|
||||||
MediaPlayerData.addMediaPlayer(
|
mediaFrame.requiresRemeasuring = true
|
||||||
key,
|
|
||||||
data,
|
|
||||||
existingPlayer,
|
|
||||||
systemClock,
|
|
||||||
isSsReactivated,
|
|
||||||
debugLogger
|
|
||||||
)
|
|
||||||
val packageName = MediaPlayerData.smartspaceMediaData?.packageName ?: String()
|
|
||||||
// In case of recommendations hits.
|
|
||||||
// Check the playing status of media player and the package name.
|
|
||||||
// To make sure we scroll to the right app's media player.
|
|
||||||
if (
|
|
||||||
isReorderingAllowed ||
|
|
||||||
shouldScrollToKey &&
|
|
||||||
data.isPlaying == true &&
|
|
||||||
packageName == data.packageName
|
|
||||||
) {
|
|
||||||
reorderAllPlayers(curVisibleMediaKey, key)
|
|
||||||
} else {
|
|
||||||
needsReordering = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
updatePageIndicator()
|
|
||||||
mediaCarouselScrollHandler.onPlayersChanged()
|
|
||||||
mediaFrame.requiresRemeasuring = true
|
|
||||||
return existingPlayer == null
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun createMediaViewHolderInBg(): MediaViewHolder {
|
||||||
|
return MediaViewHolder.create(LayoutInflater.from(context), mediaContent)
|
||||||
|
}
|
||||||
|
|
||||||
private fun addSmartspaceMediaRecommendations(
|
private fun addSmartspaceMediaRecommendations(
|
||||||
key: String,
|
key: String,
|
||||||
@@ -714,15 +737,14 @@ constructor(
|
|||||||
debugLogger.logPotentialMemoryLeak(existingSmartspaceMediaKey)
|
debugLogger.logPotentialMemoryLeak(existingSmartspaceMediaKey)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val newRecs = mediaControlPanelFactory.get()
|
val newRecs = mediaControlPanelFactory.get()
|
||||||
newRecs.attachRecommendation(
|
val recommendationViewHolder =
|
||||||
RecommendationViewHolder.create(
|
RecommendationViewHolder.create(
|
||||||
LayoutInflater.from(context),
|
LayoutInflater.from(context),
|
||||||
mediaContent,
|
mediaContent,
|
||||||
mediaFlags.isRecommendationCardUpdateEnabled()
|
mediaFlags.isRecommendationCardUpdateEnabled()
|
||||||
)
|
)
|
||||||
)
|
newRecs.attachRecommendation(recommendationViewHolder)
|
||||||
newRecs.mediaViewController.sizeChangedListener = this::updateCarouselDimensions
|
newRecs.mediaViewController.sizeChangedListener = this::updateCarouselDimensions
|
||||||
val lp =
|
val lp =
|
||||||
LinearLayout.LayoutParams(
|
LinearLayout.LayoutParams(
|
||||||
@@ -746,17 +768,6 @@ constructor(
|
|||||||
reorderAllPlayers(curVisibleMediaKey)
|
reorderAllPlayers(curVisibleMediaKey)
|
||||||
updatePageIndicator()
|
updatePageIndicator()
|
||||||
mediaFrame.requiresRemeasuring = true
|
mediaFrame.requiresRemeasuring = true
|
||||||
// Check postcondition: mediaContent should have the same number of children as there
|
|
||||||
// are
|
|
||||||
// elements in mediaPlayers.
|
|
||||||
if (MediaPlayerData.players().size != mediaContent.childCount) {
|
|
||||||
Log.e(
|
|
||||||
TAG,
|
|
||||||
"Size of players list and number of views in carousel are out of sync. " +
|
|
||||||
"Players size is ${MediaPlayerData.players().size}. " +
|
|
||||||
"View count is ${mediaContent.childCount}."
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun removePlayer(
|
fun removePlayer(
|
||||||
|
|||||||
@@ -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.ColorStateList
|
||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
import android.testing.AndroidTestingRunner
|
import android.testing.AndroidTestingRunner
|
||||||
import android.testing.TestableLooper
|
import android.testing.TestableLooper
|
||||||
@@ -26,9 +27,9 @@ import androidx.test.filters.SmallTest
|
|||||||
import com.android.internal.logging.InstanceId
|
import com.android.internal.logging.InstanceId
|
||||||
import com.android.keyguard.KeyguardUpdateMonitor
|
import com.android.keyguard.KeyguardUpdateMonitor
|
||||||
import com.android.keyguard.KeyguardUpdateMonitorCallback
|
import com.android.keyguard.KeyguardUpdateMonitorCallback
|
||||||
|
import com.android.systemui.R
|
||||||
import com.android.systemui.SysuiTestCase
|
import com.android.systemui.SysuiTestCase
|
||||||
import com.android.systemui.classifier.FalsingCollector
|
import com.android.systemui.classifier.FalsingCollector
|
||||||
import com.android.systemui.dagger.qualifiers.Main
|
|
||||||
import com.android.systemui.dump.DumpManager
|
import com.android.systemui.dump.DumpManager
|
||||||
import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
|
import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
|
||||||
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
|
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
|
||||||
@@ -49,7 +50,7 @@ import com.android.systemui.qs.PageIndicator
|
|||||||
import com.android.systemui.statusbar.notification.collection.provider.OnReorderingAllowedListener
|
import com.android.systemui.statusbar.notification.collection.provider.OnReorderingAllowedListener
|
||||||
import com.android.systemui.statusbar.notification.collection.provider.VisualStabilityProvider
|
import com.android.systemui.statusbar.notification.collection.provider.VisualStabilityProvider
|
||||||
import com.android.systemui.statusbar.policy.ConfigurationController
|
import com.android.systemui.statusbar.policy.ConfigurationController
|
||||||
import com.android.systemui.util.concurrency.DelayableExecutor
|
import com.android.systemui.util.concurrency.FakeExecutor
|
||||||
import com.android.systemui.util.mockito.capture
|
import com.android.systemui.util.mockito.capture
|
||||||
import com.android.systemui.util.mockito.eq
|
import com.android.systemui.util.mockito.eq
|
||||||
import com.android.systemui.util.time.FakeSystemClock
|
import com.android.systemui.util.time.FakeSystemClock
|
||||||
@@ -89,7 +90,6 @@ class MediaCarouselControllerTest : SysuiTestCase() {
|
|||||||
@Mock lateinit var mediaHostStatesManager: MediaHostStatesManager
|
@Mock lateinit var mediaHostStatesManager: MediaHostStatesManager
|
||||||
@Mock lateinit var mediaHostState: MediaHostState
|
@Mock lateinit var mediaHostState: MediaHostState
|
||||||
@Mock lateinit var activityStarter: ActivityStarter
|
@Mock lateinit var activityStarter: ActivityStarter
|
||||||
@Mock @Main private lateinit var executor: DelayableExecutor
|
|
||||||
@Mock lateinit var mediaDataManager: MediaDataManager
|
@Mock lateinit var mediaDataManager: MediaDataManager
|
||||||
@Mock lateinit var configurationController: ConfigurationController
|
@Mock lateinit var configurationController: ConfigurationController
|
||||||
@Mock lateinit var falsingCollector: FalsingCollector
|
@Mock lateinit var falsingCollector: FalsingCollector
|
||||||
@@ -113,11 +113,15 @@ class MediaCarouselControllerTest : SysuiTestCase() {
|
|||||||
|
|
||||||
private val clock = FakeSystemClock()
|
private val clock = FakeSystemClock()
|
||||||
private lateinit var mediaCarouselController: MediaCarouselController
|
private lateinit var mediaCarouselController: MediaCarouselController
|
||||||
|
private lateinit var mainExecutor: FakeExecutor
|
||||||
|
private lateinit var backgroundExecutor: FakeExecutor
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setup() {
|
fun setup() {
|
||||||
MockitoAnnotations.initMocks(this)
|
MockitoAnnotations.initMocks(this)
|
||||||
transitionRepository = FakeKeyguardTransitionRepository()
|
transitionRepository = FakeKeyguardTransitionRepository()
|
||||||
|
mainExecutor = FakeExecutor(clock)
|
||||||
|
backgroundExecutor = FakeExecutor(clock)
|
||||||
mediaCarouselController =
|
mediaCarouselController =
|
||||||
MediaCarouselController(
|
MediaCarouselController(
|
||||||
context,
|
context,
|
||||||
@@ -126,7 +130,8 @@ class MediaCarouselControllerTest : SysuiTestCase() {
|
|||||||
mediaHostStatesManager,
|
mediaHostStatesManager,
|
||||||
activityStarter,
|
activityStarter,
|
||||||
clock,
|
clock,
|
||||||
executor,
|
mainExecutor,
|
||||||
|
backgroundExecutor,
|
||||||
mediaDataManager,
|
mediaDataManager,
|
||||||
configurationController,
|
configurationController,
|
||||||
falsingCollector,
|
falsingCollector,
|
||||||
@@ -401,6 +406,7 @@ class MediaCarouselControllerTest : SysuiTestCase() {
|
|||||||
resumption = true
|
resumption = true
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
runAllReady()
|
||||||
|
|
||||||
assertEquals(
|
assertEquals(
|
||||||
MediaPlayerData.getMediaPlayerIndex("paused local"),
|
MediaPlayerData.getMediaPlayerIndex("paused local"),
|
||||||
@@ -510,6 +516,8 @@ class MediaCarouselControllerTest : SysuiTestCase() {
|
|||||||
false
|
false
|
||||||
)
|
)
|
||||||
mediaCarouselController.shouldScrollToKey = true
|
mediaCarouselController.shouldScrollToKey = true
|
||||||
|
runAllReady()
|
||||||
|
|
||||||
// switching between media players.
|
// switching between media players.
|
||||||
listener.value.onMediaDataLoaded(
|
listener.value.onMediaDataLoaded(
|
||||||
"playing local",
|
"playing local",
|
||||||
@@ -531,6 +539,7 @@ class MediaCarouselControllerTest : SysuiTestCase() {
|
|||||||
resumption = false
|
resumption = false
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
runAllReady()
|
||||||
|
|
||||||
assertEquals(
|
assertEquals(
|
||||||
MediaPlayerData.getMediaPlayerIndex("paused local"),
|
MediaPlayerData.getMediaPlayerIndex("paused local"),
|
||||||
@@ -555,6 +564,7 @@ class MediaCarouselControllerTest : SysuiTestCase() {
|
|||||||
resumption = false
|
resumption = false
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
runAllReady()
|
||||||
|
|
||||||
var playerIndex = MediaPlayerData.getMediaPlayerIndex("playing local")
|
var playerIndex = MediaPlayerData.getMediaPlayerIndex("playing local")
|
||||||
assertEquals(
|
assertEquals(
|
||||||
@@ -577,6 +587,8 @@ class MediaCarouselControllerTest : SysuiTestCase() {
|
|||||||
packageName = "PACKAGE_NAME"
|
packageName = "PACKAGE_NAME"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
runAllReady()
|
||||||
|
|
||||||
playerIndex = MediaPlayerData.getMediaPlayerIndex("playing local")
|
playerIndex = MediaPlayerData.getMediaPlayerIndex("playing local")
|
||||||
assertEquals(playerIndex, 0)
|
assertEquals(playerIndex, 0)
|
||||||
}
|
}
|
||||||
@@ -674,6 +686,8 @@ class MediaCarouselControllerTest : SysuiTestCase() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testOnConfigChanged_playersAreAddedBack() {
|
fun testOnConfigChanged_playersAreAddedBack() {
|
||||||
|
mediaCarouselController.pageIndicator = pageIndicator
|
||||||
|
|
||||||
listener.value.onMediaDataLoaded(
|
listener.value.onMediaDataLoaded(
|
||||||
"playing local",
|
"playing local",
|
||||||
null,
|
null,
|
||||||
@@ -694,11 +708,15 @@ class MediaCarouselControllerTest : SysuiTestCase() {
|
|||||||
resumption = false
|
resumption = false
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
runAllReady()
|
||||||
|
|
||||||
val playersSize = MediaPlayerData.players().size
|
val playersSize = MediaPlayerData.players().size
|
||||||
|
|
||||||
configListener.value.onConfigChanged(Configuration())
|
configListener.value.onConfigChanged(Configuration())
|
||||||
|
runAllReady()
|
||||||
|
|
||||||
|
verify(pageIndicator).tintList =
|
||||||
|
ColorStateList.valueOf(context.getColor(R.color.media_paging_indicator))
|
||||||
assertEquals(playersSize, MediaPlayerData.players().size)
|
assertEquals(playersSize, MediaPlayerData.players().size)
|
||||||
assertEquals(
|
assertEquals(
|
||||||
MediaPlayerData.getMediaPlayerIndex("playing local"),
|
MediaPlayerData.getMediaPlayerIndex("playing local"),
|
||||||
@@ -706,6 +724,93 @@ class MediaCarouselControllerTest : SysuiTestCase() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testOnUiModeChanged_playersAreAddedBack() {
|
||||||
|
mediaCarouselController.pageIndicator = pageIndicator
|
||||||
|
|
||||||
|
listener.value.onMediaDataLoaded(
|
||||||
|
"paused local",
|
||||||
|
null,
|
||||||
|
DATA.copy(
|
||||||
|
active = true,
|
||||||
|
isPlaying = false,
|
||||||
|
playbackLocation = MediaData.PLAYBACK_LOCAL,
|
||||||
|
resumption = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
runAllReady()
|
||||||
|
|
||||||
|
val playersSize = MediaPlayerData.players().size
|
||||||
|
configListener.value.onUiModeChanged()
|
||||||
|
runAllReady()
|
||||||
|
|
||||||
|
verify(pageIndicator).tintList =
|
||||||
|
ColorStateList.valueOf(context.getColor(R.color.media_paging_indicator))
|
||||||
|
assertEquals(playersSize, MediaPlayerData.players().size)
|
||||||
|
assertEquals(
|
||||||
|
MediaPlayerData.getMediaPlayerIndex("paused local"),
|
||||||
|
mediaCarouselController.mediaCarouselScrollHandler.visibleMediaIndex
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testOnDensityOrFontScaleChanged_playersAreAddedBack() {
|
||||||
|
mediaCarouselController.pageIndicator = pageIndicator
|
||||||
|
|
||||||
|
listener.value.onMediaDataLoaded(
|
||||||
|
"paused local",
|
||||||
|
null,
|
||||||
|
DATA.copy(
|
||||||
|
active = true,
|
||||||
|
isPlaying = false,
|
||||||
|
playbackLocation = MediaData.PLAYBACK_LOCAL,
|
||||||
|
resumption = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
runAllReady()
|
||||||
|
|
||||||
|
val playersSize = MediaPlayerData.players().size
|
||||||
|
configListener.value.onDensityOrFontScaleChanged()
|
||||||
|
runAllReady()
|
||||||
|
|
||||||
|
verify(pageIndicator).tintList =
|
||||||
|
ColorStateList.valueOf(context.getColor(R.color.media_paging_indicator))
|
||||||
|
assertEquals(playersSize, MediaPlayerData.players().size)
|
||||||
|
assertEquals(
|
||||||
|
MediaPlayerData.getMediaPlayerIndex("paused local"),
|
||||||
|
mediaCarouselController.mediaCarouselScrollHandler.visibleMediaIndex
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testOnThemeChanged_playersAreAddedBack() {
|
||||||
|
mediaCarouselController.pageIndicator = pageIndicator
|
||||||
|
|
||||||
|
listener.value.onMediaDataLoaded(
|
||||||
|
"paused local",
|
||||||
|
null,
|
||||||
|
DATA.copy(
|
||||||
|
active = true,
|
||||||
|
isPlaying = false,
|
||||||
|
playbackLocation = MediaData.PLAYBACK_LOCAL,
|
||||||
|
resumption = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
runAllReady()
|
||||||
|
|
||||||
|
val playersSize = MediaPlayerData.players().size
|
||||||
|
configListener.value.onThemeChanged()
|
||||||
|
runAllReady()
|
||||||
|
|
||||||
|
verify(pageIndicator).tintList =
|
||||||
|
ColorStateList.valueOf(context.getColor(R.color.media_paging_indicator))
|
||||||
|
assertEquals(playersSize, MediaPlayerData.players().size)
|
||||||
|
assertEquals(
|
||||||
|
MediaPlayerData.getMediaPlayerIndex("paused local"),
|
||||||
|
mediaCarouselController.mediaCarouselScrollHandler.visibleMediaIndex
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testRecommendation_persistentEnabled_newSmartspaceLoaded_updatesSort() {
|
fun testRecommendation_persistentEnabled_newSmartspaceLoaded_updatesSort() {
|
||||||
testRecommendation_persistentEnabled_inactiveSmartspaceDataLoaded_isAdded()
|
testRecommendation_persistentEnabled_inactiveSmartspaceDataLoaded_isAdded()
|
||||||
@@ -832,4 +937,9 @@ class MediaCarouselControllerTest : SysuiTestCase() {
|
|||||||
// Verify that seekbar listening attribute in media control panel is set to false.
|
// Verify that seekbar listening attribute in media control panel is set to false.
|
||||||
verify(panel, times(MediaPlayerData.players().size)).listening = false
|
verify(panel, times(MediaPlayerData.players().size)).listening = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun runAllReady() {
|
||||||
|
backgroundExecutor.runAllReady()
|
||||||
|
mainExecutor.runAllReady()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user