Merge "Skip showing the Smartspace recommendation card if it's an empty update." into sc-dev
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.systemui.media
|
||||
|
||||
import android.app.smartspace.SmartspaceAction
|
||||
import android.app.smartspace.SmartspaceTarget
|
||||
import android.os.SystemProperties
|
||||
import android.util.Log
|
||||
@@ -121,6 +122,12 @@ class MediaDataFilter @Inject constructor(
|
||||
}
|
||||
|
||||
// If no recent media, continue with smartspace update
|
||||
if (isMediaRecommendationEmpty(data)) {
|
||||
Log.d(TAG, "Empty media recommendations. Skip showing the card")
|
||||
return
|
||||
}
|
||||
|
||||
// Proceed only if the Smartspace recommendation is not empty.
|
||||
listeners.forEach { it.onSmartspaceMediaDataLoaded(key, data) }
|
||||
}
|
||||
|
||||
@@ -214,4 +221,10 @@ class MediaDataFilter @Inject constructor(
|
||||
* Remove a listener that was registered with addListener
|
||||
*/
|
||||
fun removeListener(listener: MediaDataManager.Listener) = _listeners.remove(listener)
|
||||
|
||||
/** Check if the Smartspace sends an empty update. */
|
||||
private fun isMediaRecommendationEmpty(data: SmartspaceTarget): Boolean {
|
||||
val mediaRecommendationList: List<SmartspaceAction> = data.getIconGrid()
|
||||
return mediaRecommendationList == null || mediaRecommendationList.isEmpty()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.systemui.media
|
||||
|
||||
import android.app.smartspace.SmartspaceAction
|
||||
import android.app.smartspace.SmartspaceTarget
|
||||
import android.graphics.Color
|
||||
import androidx.test.filters.SmallTest
|
||||
@@ -72,6 +73,8 @@ class MediaDataFilterTest : SysuiTestCase() {
|
||||
private lateinit var executor: Executor
|
||||
@Mock
|
||||
private lateinit var smartspaceData: SmartspaceTarget
|
||||
@Mock
|
||||
private lateinit var smartspaceMediaRecommendationItem: SmartspaceAction
|
||||
|
||||
private lateinit var mediaDataFilter: MediaDataFilter
|
||||
private lateinit var dataMain: MediaData
|
||||
@@ -97,6 +100,7 @@ class MediaDataFilterTest : SysuiTestCase() {
|
||||
emptyList(), emptyList(), PACKAGE, null, null, device, true, null)
|
||||
|
||||
`when`(smartspaceData.smartspaceTargetId).thenReturn(SMARTSPACE_KEY)
|
||||
`when`(smartspaceData.iconGrid).thenReturn(listOf(smartspaceMediaRecommendationItem))
|
||||
}
|
||||
|
||||
private fun setUser(id: Int) {
|
||||
@@ -222,7 +226,7 @@ class MediaDataFilterTest : SysuiTestCase() {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testOnSmartspaceMediaDataLoaded_noMedia_usesSmartspace() {
|
||||
fun testOnSmartspaceMediaDataLoaded_noMedia_nonEmptyRecommendation_usesSmartspace() {
|
||||
mediaDataFilter.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, smartspaceData)
|
||||
|
||||
verify(listener).onSmartspaceMediaDataLoaded(eq(SMARTSPACE_KEY), eq(smartspaceData))
|
||||
@@ -230,7 +234,18 @@ class MediaDataFilterTest : SysuiTestCase() {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testOnSmartspaceMediaDataLoaded_noRecentMedia_usesSmartspace() {
|
||||
fun testOnSmartspaceMediaDataLoaded_noMedia_emptyRecommendation_showsNothing() {
|
||||
`when`(smartspaceData.iconGrid).thenReturn(listOf())
|
||||
|
||||
mediaDataFilter.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, smartspaceData)
|
||||
|
||||
verify(listener, never())
|
||||
.onSmartspaceMediaDataLoaded(eq(SMARTSPACE_KEY), eq(smartspaceData))
|
||||
assertThat(mediaDataFilter.hasActiveMedia()).isTrue()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testOnSmartspaceMediaDataLoaded_noRecentMedia_nonEmptyRecommendation_usesSmartspace() {
|
||||
val dataOld = dataMain.copy(active = false, lastActive = 0L)
|
||||
mediaDataFilter.onMediaDataLoaded(KEY, null, dataOld)
|
||||
mediaDataFilter.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, smartspaceData)
|
||||
@@ -239,6 +254,19 @@ class MediaDataFilterTest : SysuiTestCase() {
|
||||
assertThat(mediaDataFilter.hasActiveMedia()).isTrue()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testOnSmartspaceMediaDataLoaded_noRecentMedia_emptyRecommendation_showsNothing() {
|
||||
`when`(smartspaceData.iconGrid).thenReturn(listOf())
|
||||
|
||||
val dataOld = dataMain.copy(active = false, lastActive = 0L)
|
||||
mediaDataFilter.onMediaDataLoaded(KEY, null, dataOld)
|
||||
mediaDataFilter.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, smartspaceData)
|
||||
|
||||
verify(listener, never())
|
||||
.onSmartspaceMediaDataLoaded(eq(SMARTSPACE_KEY), eq(smartspaceData))
|
||||
assertThat(mediaDataFilter.hasActiveMedia()).isTrue()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testOnSmartspaceMediaDataLoaded_hasRecentMedia_usesMedia() {
|
||||
// WHEN we have media that was recently played, but not currently active
|
||||
|
||||
Reference in New Issue
Block a user