Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5b0e5143 authored by Cecilia Hong's avatar Cecilia Hong Committed by Android (Google) Code Review
Browse files

Merge "Skip showing the Smartspace recommendation card if it's an empty update." into sc-dev

parents 2ac53345 a2655ec2
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -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()
    }
}
+30 −2
Original line number Diff line number Diff line
@@ -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