Merge "Enable testOnSmartspaceMediaDataLoaded" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
5d2b14cf8d
@@ -82,7 +82,6 @@ import com.android.systemui.util.traceSection
|
||||
import java.io.IOException
|
||||
import java.io.PrintWriter
|
||||
import java.util.concurrent.Executor
|
||||
import java.util.concurrent.Executors
|
||||
import javax.inject.Inject
|
||||
|
||||
// URI fields to try loading album art from
|
||||
@@ -154,6 +153,7 @@ private fun allowMediaRecommendations(context: Context): Boolean {
|
||||
class MediaDataManager(
|
||||
private val context: Context,
|
||||
@Background private val backgroundExecutor: Executor,
|
||||
@Main private val uiExecutor: Executor,
|
||||
@Main private val foregroundExecutor: DelayableExecutor,
|
||||
private val mediaControllerFactory: MediaControllerFactory,
|
||||
private val broadcastDispatcher: BroadcastDispatcher,
|
||||
@@ -171,7 +171,8 @@ class MediaDataManager(
|
||||
private val systemClock: SystemClock,
|
||||
private val tunerService: TunerService,
|
||||
private val mediaFlags: MediaFlags,
|
||||
private val logger: MediaUiEventLogger
|
||||
private val logger: MediaUiEventLogger,
|
||||
private val smartspaceManager: SmartspaceManager,
|
||||
) : Dumpable, BcSmartspaceDataPlugin.SmartspaceTargetListener {
|
||||
|
||||
companion object {
|
||||
@@ -218,6 +219,7 @@ class MediaDataManager(
|
||||
constructor(
|
||||
context: Context,
|
||||
@Background backgroundExecutor: Executor,
|
||||
@Main uiExecutor: Executor,
|
||||
@Main foregroundExecutor: DelayableExecutor,
|
||||
mediaControllerFactory: MediaControllerFactory,
|
||||
dumpManager: DumpManager,
|
||||
@@ -233,10 +235,12 @@ class MediaDataManager(
|
||||
clock: SystemClock,
|
||||
tunerService: TunerService,
|
||||
mediaFlags: MediaFlags,
|
||||
logger: MediaUiEventLogger
|
||||
logger: MediaUiEventLogger,
|
||||
smartspaceManager: SmartspaceManager,
|
||||
) : this(
|
||||
context,
|
||||
backgroundExecutor,
|
||||
uiExecutor,
|
||||
foregroundExecutor,
|
||||
mediaControllerFactory,
|
||||
broadcastDispatcher,
|
||||
@@ -254,7 +258,8 @@ class MediaDataManager(
|
||||
clock,
|
||||
tunerService,
|
||||
mediaFlags,
|
||||
logger
|
||||
logger,
|
||||
smartspaceManager,
|
||||
)
|
||||
|
||||
private val appChangeReceiver =
|
||||
@@ -314,21 +319,18 @@ class MediaDataManager(
|
||||
|
||||
// Register for Smartspace data updates.
|
||||
smartspaceMediaDataProvider.registerListener(this)
|
||||
val smartspaceManager: SmartspaceManager =
|
||||
context.getSystemService(SmartspaceManager::class.java)
|
||||
smartspaceSession =
|
||||
smartspaceManager.createSmartspaceSession(
|
||||
SmartspaceConfig.Builder(context, SMARTSPACE_UI_SURFACE_LABEL).build()
|
||||
)
|
||||
smartspaceSession?.let {
|
||||
it.addOnTargetsAvailableListener(
|
||||
// Use a new thread listening to Smartspace updates instead of using the existing
|
||||
// backgroundExecutor. SmartspaceSession has scheduled routine updates which can be
|
||||
// unpredictable on test simulators, using the backgroundExecutor makes it's hard to
|
||||
// test the threads numbers.
|
||||
// Switch to use backgroundExecutor when SmartspaceSession has a good way to be
|
||||
// mocked.
|
||||
Executors.newCachedThreadPool(),
|
||||
// Use a main uiExecutor thread listening to Smartspace updates instead of using
|
||||
// the existing background executor.
|
||||
// SmartspaceSession has scheduled routine updates which can be unpredictable on
|
||||
// test simulators, using the backgroundExecutor makes it's hard to test the threads
|
||||
// numbers.
|
||||
uiExecutor,
|
||||
SmartspaceSession.OnTargetsAvailableListener { targets ->
|
||||
smartspaceMediaDataProvider.onTargetsAvailable(targets)
|
||||
}
|
||||
|
||||
@@ -20,6 +20,8 @@ import android.app.Notification
|
||||
import android.app.Notification.MediaStyle
|
||||
import android.app.PendingIntent
|
||||
import android.app.smartspace.SmartspaceAction
|
||||
import android.app.smartspace.SmartspaceConfig
|
||||
import android.app.smartspace.SmartspaceManager
|
||||
import android.app.smartspace.SmartspaceTarget
|
||||
import android.content.Intent
|
||||
import android.graphics.Bitmap
|
||||
@@ -106,6 +108,7 @@ class MediaDataManagerTest : SysuiTestCase() {
|
||||
lateinit var metadataBuilder: MediaMetadata.Builder
|
||||
lateinit var backgroundExecutor: FakeExecutor
|
||||
lateinit var foregroundExecutor: FakeExecutor
|
||||
lateinit var uiExecutor: FakeExecutor
|
||||
@Mock lateinit var dumpManager: DumpManager
|
||||
@Mock lateinit var broadcastDispatcher: BroadcastDispatcher
|
||||
@Mock lateinit var mediaTimeoutListener: MediaTimeoutListener
|
||||
@@ -117,6 +120,7 @@ class MediaDataManagerTest : SysuiTestCase() {
|
||||
@Mock lateinit var listener: MediaDataManager.Listener
|
||||
@Mock lateinit var pendingIntent: PendingIntent
|
||||
@Mock lateinit var activityStarter: ActivityStarter
|
||||
@Mock lateinit var smartspaceManager: SmartspaceManager
|
||||
lateinit var smartspaceMediaDataProvider: SmartspaceMediaDataProvider
|
||||
@Mock lateinit var mediaSmartspaceTarget: SmartspaceTarget
|
||||
@Mock private lateinit var mediaRecommendationItem: SmartspaceAction
|
||||
@@ -131,6 +135,7 @@ class MediaDataManagerTest : SysuiTestCase() {
|
||||
@Mock private lateinit var tunerService: TunerService
|
||||
@Captor lateinit var tunableCaptor: ArgumentCaptor<TunerService.Tunable>
|
||||
@Captor lateinit var callbackCaptor: ArgumentCaptor<(String, PlaybackState) -> Unit>
|
||||
@Captor lateinit var smartSpaceConfigBuilderCaptor: ArgumentCaptor<SmartspaceConfig>
|
||||
|
||||
private val instanceIdSequence = InstanceIdSequenceFake(1 shl 20)
|
||||
|
||||
@@ -145,6 +150,7 @@ class MediaDataManagerTest : SysuiTestCase() {
|
||||
fun setup() {
|
||||
foregroundExecutor = FakeExecutor(clock)
|
||||
backgroundExecutor = FakeExecutor(clock)
|
||||
uiExecutor = FakeExecutor(clock)
|
||||
smartspaceMediaDataProvider = SmartspaceMediaDataProvider()
|
||||
Settings.Secure.putInt(
|
||||
context.contentResolver,
|
||||
@@ -155,6 +161,7 @@ class MediaDataManagerTest : SysuiTestCase() {
|
||||
MediaDataManager(
|
||||
context = context,
|
||||
backgroundExecutor = backgroundExecutor,
|
||||
uiExecutor = uiExecutor,
|
||||
foregroundExecutor = foregroundExecutor,
|
||||
mediaControllerFactory = mediaControllerFactory,
|
||||
broadcastDispatcher = broadcastDispatcher,
|
||||
@@ -172,7 +179,8 @@ class MediaDataManagerTest : SysuiTestCase() {
|
||||
systemClock = clock,
|
||||
tunerService = tunerService,
|
||||
mediaFlags = mediaFlags,
|
||||
logger = logger
|
||||
logger = logger,
|
||||
smartspaceManager = smartspaceManager,
|
||||
)
|
||||
verify(tunerService)
|
||||
.addTunable(capture(tunableCaptor), eq(Settings.Secure.MEDIA_CONTROLS_RECOMMENDATION))
|
||||
@@ -191,6 +199,7 @@ class MediaDataManagerTest : SysuiTestCase() {
|
||||
putString(MediaMetadata.METADATA_KEY_ARTIST, SESSION_ARTIST)
|
||||
putString(MediaMetadata.METADATA_KEY_TITLE, SESSION_TITLE)
|
||||
}
|
||||
verify(smartspaceManager).createSmartspaceSession(capture(smartSpaceConfigBuilderCaptor))
|
||||
whenever(mediaControllerFactory.create(eq(session.sessionToken))).thenReturn(controller)
|
||||
whenever(controller.transportControls).thenReturn(transportControls)
|
||||
whenever(controller.playbackInfo).thenReturn(playbackInfo)
|
||||
@@ -767,15 +776,14 @@ class MediaDataManagerTest : SysuiTestCase() {
|
||||
.onSmartspaceMediaDataLoaded(anyObject(), anyObject(), anyBoolean())
|
||||
}
|
||||
|
||||
@Ignore("b/233283726")
|
||||
@Test
|
||||
fun testOnSmartspaceMediaDataLoaded_hasNoneMediaTarget_callsRemoveListener() {
|
||||
smartspaceMediaDataProvider.onTargetsAvailable(listOf(mediaSmartspaceTarget))
|
||||
verify(logger).getNewInstanceId()
|
||||
|
||||
smartspaceMediaDataProvider.onTargetsAvailable(listOf())
|
||||
foregroundExecutor.advanceClockToLast()
|
||||
foregroundExecutor.runAllReady()
|
||||
uiExecutor.advanceClockToLast()
|
||||
uiExecutor.runAllReady()
|
||||
|
||||
verify(listener).onSmartspaceMediaDataRemoved(eq(KEY_MEDIA_SMARTSPACE), eq(false))
|
||||
verifyNoMoreInteractions(logger)
|
||||
|
||||
Reference in New Issue
Block a user