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

Commit 2a0b910e authored by Michael Mikhail's avatar Michael Mikhail Committed by Android (Google) Code Review
Browse files

Merge changes I924eb34d,I275633a0 into main

* changes:
  Add smartspace logs for media cards impression
  Add smartspace logs for click and dismiss events
parents 3c6a0bab 766674fa
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -183,7 +183,10 @@ class MediaFilterRepositoryTest : SysuiTestCase() {
                SmartspaceMediaLoadingModel.Loaded(KEY_MEDIA_SMARTSPACE, true)
            )
            underTest.addSelectedUserMediaEntry(playingData)
            underTest.addMediaDataLoadingState(MediaDataLoadingModel.Loaded(playingInstanceId))
            underTest.addMediaDataLoadingState(
                MediaDataLoadingModel.Loaded(playingInstanceId),
                false
            )

            verify(smartspaceLogger)
                .logSmartspaceCardReceived(
@@ -193,7 +196,10 @@ class MediaFilterRepositoryTest : SysuiTestCase() {
                )

            underTest.addSelectedUserMediaEntry(remoteData)
            underTest.addMediaDataLoadingState(MediaDataLoadingModel.Loaded(remoteInstanceId))
            underTest.addMediaDataLoadingState(
                MediaDataLoadingModel.Loaded(remoteInstanceId),
                false
            )

            verify(smartspaceLogger)
                .logSmartspaceCardReceived(
@@ -442,7 +448,7 @@ class MediaFilterRepositoryTest : SysuiTestCase() {
            reset(smartspaceLogger)

            underTest.addSelectedUserMediaEntry(data)
            underTest.addMediaDataLoadingState(MediaDataLoadingModel.Loaded(instanceId))
            underTest.addMediaDataLoadingState(MediaDataLoadingModel.Loaded(instanceId), false)

            verify(smartspaceLogger)
                .logSmartspaceCardReceived(data.smartspaceId, data.appUid, cardinality = 2)
@@ -451,7 +457,8 @@ class MediaFilterRepositoryTest : SysuiTestCase() {

            underTest.addSelectedUserMediaEntry(data)
            underTest.addMediaDataLoadingState(
                MediaDataLoadingModel.Loaded(instanceId, receivedSmartspaceCardLatency = 123)
                MediaDataLoadingModel.Loaded(instanceId, receivedSmartspaceCardLatency = 123),
                true
            )

            verify(smartspaceLogger)
+101 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.media.controls.domain.interactor

import android.R
import android.graphics.drawable.Icon
import android.os.Process
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.internal.logging.InstanceId
@@ -38,12 +39,19 @@ import com.android.systemui.media.controls.shared.model.MediaData
import com.android.systemui.media.controls.shared.model.MediaDataLoadingModel
import com.android.systemui.media.controls.shared.model.SmartspaceMediaData
import com.android.systemui.media.controls.shared.model.SmartspaceMediaLoadingModel
import com.android.systemui.media.controls.util.MediaSmartspaceLogger
import com.android.systemui.media.controls.util.SmallHash
import com.android.systemui.media.controls.util.mediaSmartspaceLogger
import com.android.systemui.media.controls.util.mockMediaSmartspaceLogger
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito.reset
import org.mockito.kotlin.never
import org.mockito.kotlin.verify

@SmallTest
@RunWith(AndroidJUnit4::class)
@@ -52,7 +60,11 @@ class MediaCarouselInteractorTest : SysuiTestCase() {
    private val kosmos = testKosmos()
    private val testScope = kosmos.testScope

    private val mediaFilterRepository: MediaFilterRepository = kosmos.mediaFilterRepository
    private val mediaFilterRepository: MediaFilterRepository =
        with(kosmos) {
            mediaSmartspaceLogger = mockMediaSmartspaceLogger
            mediaFilterRepository
        }
    private val mediaRecommendationsInteractor: MediaRecommendationsInteractor =
        kosmos.mediaRecommendationsInteractor
    val icon = Icon.createWithResource(context, R.drawable.ic_media_play)
@@ -63,6 +75,7 @@ class MediaCarouselInteractorTest : SysuiTestCase() {
            packageName = PACKAGE_NAME,
            recommendations = MediaTestHelper.getValidRecommendationList(icon),
        )
    private val smartspaceLogger = kosmos.mockMediaSmartspaceLogger

    private val underTest: MediaCarouselInteractor = kosmos.mediaCarouselInteractor

@@ -153,6 +166,18 @@ class MediaCarouselInteractorTest : SysuiTestCase() {
                    MediaCommonModel.MediaControl(mediaLoadingModel, true)
                )
                .inOrder()

            underTest.logSmartspaceSeenCard(0, 1, false)

            verify(smartspaceLogger)
                .logSmartspaceCardUIEvent(
                    MediaSmartspaceLogger.SMARTSPACE_CARD_SEEN_EVENT,
                    SmallHash.hash(mediaRecommendation.targetId),
                    Process.INVALID_UID,
                    surface = SURFACE,
                    2,
                    true
                )
        }

    @Test
@@ -239,7 +264,7 @@ class MediaCarouselInteractorTest : SysuiTestCase() {
                .inOrder()

            mediaFilterRepository.addSelectedUserMediaEntry(data.copy(isPlaying = true))
            mediaFilterRepository.addMediaDataLoadingState(MediaDataLoadingModel.Loaded(instanceId))
            mediaFilterRepository.addMediaDataLoadingState(mediaLoadingModel)

            assertThat(currentMedia)
                .containsExactly(
@@ -249,9 +274,83 @@ class MediaCarouselInteractorTest : SysuiTestCase() {
                .inOrder()
        }

    @Test
    fun loadMediaAndRecommendation_logSmartspaceSeenCard() {
        val instanceId = InstanceId.fakeInstanceId(123)
        val data =
            MediaData(
                active = true,
                instanceId = instanceId,
                packageName = PACKAGE_NAME,
                notificationKey = KEY
            )
        val smartspaceLoadingModel = SmartspaceMediaLoadingModel.Loaded(KEY_MEDIA_SMARTSPACE)
        val mediaLoadingModel = MediaDataLoadingModel.Loaded(instanceId)

        mediaFilterRepository.addSelectedUserMediaEntry(data)
        mediaFilterRepository.addMediaDataLoadingState(mediaLoadingModel)
        underTest.logSmartspaceSeenCard(0, 1, false)

        verify(smartspaceLogger)
            .logSmartspaceCardUIEvent(
                MediaSmartspaceLogger.SMARTSPACE_CARD_SEEN_EVENT,
                data.smartspaceId,
                data.appUid,
                surface = SURFACE,
                1
            )

        reset(smartspaceLogger)
        mediaFilterRepository.addSelectedUserMediaEntry(data)
        mediaFilterRepository.addMediaDataLoadingState(mediaLoadingModel)
        underTest.logSmartspaceSeenCard(0, 1, true)

        verify(smartspaceLogger, never())
            .logSmartspaceCardUIEvent(
                MediaSmartspaceLogger.SMARTSPACE_CARD_SEEN_EVENT,
                data.smartspaceId,
                data.appUid,
                surface = SURFACE,
                2
            )

        reset(smartspaceLogger)
        mediaFilterRepository.setRecommendation(mediaRecommendation)
        mediaFilterRepository.setRecommendationsLoadingState(smartspaceLoadingModel)
        underTest.logSmartspaceSeenCard(1, 1, true)

        verify(smartspaceLogger)
            .logSmartspaceCardUIEvent(
                MediaSmartspaceLogger.SMARTSPACE_CARD_SEEN_EVENT,
                SmallHash.hash(mediaRecommendation.targetId),
                Process.INVALID_UID,
                surface = SURFACE,
                2,
                true,
                rank = 1
            )

        reset(smartspaceLogger)
        mediaFilterRepository.addSelectedUserMediaEntry(data)
        mediaFilterRepository.addMediaDataLoadingState(
            mediaLoadingModel.copy(receivedSmartspaceCardLatency = 1)
        )
        underTest.logSmartspaceSeenCard(0, 1, true)

        verify(smartspaceLogger)
            .logSmartspaceCardUIEvent(
                MediaSmartspaceLogger.SMARTSPACE_CARD_SEEN_EVENT,
                data.smartspaceId,
                data.appUid,
                surface = SURFACE,
                2
            )
    }

    companion object {
        private const val KEY_MEDIA_SMARTSPACE = "MEDIA_SMARTSPACE_ID"
        private const val PACKAGE_NAME = "com.android.example"
        private const val KEY = "key"
        private const val SURFACE = 4
    }
}
+90 −7
Original line number Diff line number Diff line
@@ -16,7 +16,9 @@

package com.android.systemui.media.controls.domain.interactor

import android.R
import android.app.PendingIntent
import android.graphics.drawable.Icon
import android.os.Bundle
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
@@ -30,6 +32,7 @@ import com.android.systemui.bluetooth.mockBroadcastDialogController
import com.android.systemui.concurrency.fakeExecutor
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.testScope
import com.android.systemui.media.controls.MediaTestHelper
import com.android.systemui.media.controls.data.repository.mediaDataRepository
import com.android.systemui.media.controls.domain.pipeline.MediaDataFilterImpl
import com.android.systemui.media.controls.domain.pipeline.MediaDataProcessor
@@ -38,7 +41,12 @@ import com.android.systemui.media.controls.domain.pipeline.interactor.mediaContr
import com.android.systemui.media.controls.domain.pipeline.mediaDataFilter
import com.android.systemui.media.controls.domain.pipeline.mediaDataProcessor
import com.android.systemui.media.controls.shared.model.MediaData
import com.android.systemui.media.controls.shared.model.SmartspaceMediaData
import com.android.systemui.media.controls.util.MediaSmartspaceLogger.Companion.SMARTSPACE_CARD_CLICK_EVENT
import com.android.systemui.media.controls.util.MediaSmartspaceLogger.Companion.SMARTSPACE_CARD_DISMISS_EVENT
import com.android.systemui.media.controls.util.mediaInstanceId
import com.android.systemui.media.controls.util.mediaSmartspaceLogger
import com.android.systemui.media.controls.util.mockMediaSmartspaceLogger
import com.android.systemui.media.mediaOutputDialogManager
import com.android.systemui.mockActivityIntentHelper
import com.android.systemui.plugins.activityStarter
@@ -49,6 +57,8 @@ import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito.anyBoolean
import org.mockito.Mockito.anyInt
import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.kotlin.any
@@ -63,11 +73,23 @@ class MediaControlInteractorTest : SysuiTestCase() {
    private val kosmos = testKosmos()
    private val testScope = kosmos.testScope

    private val mediaDataFilter: MediaDataFilterImpl = kosmos.mediaDataFilter
    private val mediaDataFilter: MediaDataFilterImpl =
        with(kosmos) {
            mediaSmartspaceLogger = mockMediaSmartspaceLogger
            mediaDataFilter
        }
    private val activityStarter = kosmos.activityStarter
    private val keyguardStateController = kosmos.keyguardStateController
    private val instanceId: InstanceId = kosmos.mediaInstanceId
    private val notificationLockscreenUserManager = kosmos.notificationLockscreenUserManager
    private val smartspaceLogger = kosmos.mockMediaSmartspaceLogger
    private val icon = Icon.createWithResource(context, R.drawable.ic_media_play)
    private val mediaRecommendation =
        SmartspaceMediaData(
            targetId = KEY_MEDIA_SMARTSPACE,
            isActive = true,
            recommendations = MediaTestHelper.getValidRecommendationList(icon),
        )

    private val underTest: MediaControlInteractor =
        with(kosmos) {
@@ -124,13 +146,15 @@ class MediaControlInteractorTest : SysuiTestCase() {
        val clickIntent = mock<PendingIntent> { whenever(it.isActivity).thenReturn(true) }
        val expandable = mock<Expandable>()

        underTest.startClickIntent(expandable, clickIntent)
        underTest.startClickIntent(expandable, clickIntent, SMARTSPACE_CARD_CLICK_EVENT, 1)

        verify(clickIntent).send(any<Bundle>())
    }

    @Test
    fun startClickIntent_hideOverLockscreen() {
        whenever(notificationLockscreenUserManager.isCurrentProfile(USER_ID)).thenReturn(true)
        whenever(notificationLockscreenUserManager.isProfileAvailable(USER_ID)).thenReturn(true)
        whenever(keyguardStateController.isShowing).thenReturn(false)

        val clickIntent = mock<PendingIntent> { whenever(it.isActivity).thenReturn(true) }
@@ -138,8 +162,20 @@ class MediaControlInteractorTest : SysuiTestCase() {
        val activityController = mock<ActivityTransitionAnimator.Controller>()
        whenever(expandable.activityTransitionController(any())).thenReturn(activityController)

        underTest.startClickIntent(expandable, clickIntent)

        val mediaData = MediaData(userId = USER_ID, instanceId = instanceId, artist = ARTIST)
        mediaDataFilter.onSmartspaceMediaDataLoaded(KEY_MEDIA_SMARTSPACE, mediaRecommendation, true)
        mediaDataFilter.onMediaDataLoaded(KEY, null, mediaData)
        underTest.startClickIntent(expandable, clickIntent, SMARTSPACE_CARD_CLICK_EVENT, 1)

        verify(smartspaceLogger)
            .logSmartspaceCardUIEvent(
                SMARTSPACE_CARD_CLICK_EVENT,
                mediaData.smartspaceId,
                mediaData.appUid,
                surface = SURFACE,
                cardinality = 2,
                rank = 1
            )
        verify(activityStarter)
            .postStartActivityDismissingKeyguard(eq(clickIntent), eq(activityController))
    }
@@ -217,17 +253,62 @@ class MediaControlInteractorTest : SysuiTestCase() {
    }

    @Test
    fun removeMediaControl() {
    fun removeMediaControl_noRecommendation() {
        whenever(notificationLockscreenUserManager.isCurrentProfile(USER_ID)).thenReturn(true)
        whenever(notificationLockscreenUserManager.isProfileAvailable(USER_ID)).thenReturn(true)
        val listener = mock<MediaDataProcessor.Listener>()
        kosmos.mediaDataProcessor.addInternalListener(listener)

        var mediaData = MediaData(userId = USER_ID, instanceId = instanceId, artist = ARTIST)
        val mediaData = MediaData(userId = USER_ID, instanceId = instanceId, artist = ARTIST)
        kosmos.mediaDataRepository.addMediaEntry(KEY, mediaData)
        kosmos.mediaDataFilter.onMediaDataLoaded(KEY, null, mediaData)

        underTest.removeMediaControl(null, instanceId, 0L, SMARTSPACE_CARD_DISMISS_EVENT, 1)
        kosmos.fakeExecutor.advanceClockToNext()
        kosmos.fakeExecutor.runAllReady()

        verify(smartspaceLogger, never())
            .logSmartspaceCardUIEvent(
                anyInt(),
                anyInt(),
                anyInt(),
                anyInt(),
                anyInt(),
                anyBoolean(),
                anyBoolean(),
                anyInt(),
                anyInt(),
                anyInt(),
                anyBoolean()
            )
        verify(listener).onMediaDataRemoved(eq(KEY), eq(true))
    }

    @Test
    fun removeMediaControl_recommendationsExist() {
        whenever(notificationLockscreenUserManager.isCurrentProfile(USER_ID)).thenReturn(true)
        whenever(notificationLockscreenUserManager.isProfileAvailable(USER_ID)).thenReturn(true)
        val listener = mock<MediaDataProcessor.Listener>()
        kosmos.mediaDataProcessor.addInternalListener(listener)

        val mediaData = MediaData(userId = USER_ID, instanceId = instanceId, artist = ARTIST)
        kosmos.mediaDataRepository.addMediaEntry(KEY, mediaData)
        mediaDataFilter.onSmartspaceMediaDataLoaded(KEY_MEDIA_SMARTSPACE, mediaRecommendation, true)
        mediaDataFilter.onMediaDataLoaded(KEY, null, mediaData)

        underTest.removeMediaControl(null, instanceId, 0L)
        underTest.removeMediaControl(null, instanceId, 0L, SMARTSPACE_CARD_DISMISS_EVENT, 1)
        kosmos.fakeExecutor.advanceClockToNext()
        kosmos.fakeExecutor.runAllReady()

        verify(smartspaceLogger)
            .logSmartspaceCardUIEvent(
                SMARTSPACE_CARD_DISMISS_EVENT,
                mediaData.smartspaceId,
                mediaData.appUid,
                surface = SURFACE,
                cardinality = 2,
                rank = 1
            )
        verify(listener).onMediaDataRemoved(eq(KEY), eq(true))
    }

@@ -238,5 +319,7 @@ class MediaControlInteractorTest : SysuiTestCase() {
        private const val APP_NAME = "app"
        private const val ARTIST = "artist"
        private const val ARTIST_2 = "artist2"
        private const val KEY_MEDIA_SMARTSPACE = "MEDIA_SMARTSPACE_ID"
        private const val SURFACE = 4
    }
}
+52 −6
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.content.ComponentName
import android.content.Intent
import android.content.applicationContext
import android.graphics.drawable.Icon
import android.os.Process
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
@@ -40,10 +41,14 @@ import com.android.systemui.media.controls.domain.pipeline.mediaDataFilter
import com.android.systemui.media.controls.shared.model.MediaRecModel
import com.android.systemui.media.controls.shared.model.MediaRecommendationsModel
import com.android.systemui.media.controls.shared.model.SmartspaceMediaData
import com.android.systemui.media.controls.util.MediaSmartspaceLogger.Companion.SMARTSPACE_CARD_CLICK_EVENT
import com.android.systemui.media.controls.util.MediaSmartspaceLogger.Companion.SMARTSPACE_CARD_DISMISS_EVENT
import com.android.systemui.media.controls.util.SmallHash
import com.android.systemui.media.controls.util.mediaSmartspaceLogger
import com.android.systemui.media.controls.util.mockMediaSmartspaceLogger
import com.android.systemui.plugins.activityStarter
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
@@ -53,6 +58,7 @@ import org.junit.runner.RunWith
import org.mockito.Mockito.doNothing
import org.mockito.Mockito.spy
import org.mockito.Mockito.verify
import org.mockito.kotlin.eq

@SmallTest
@RunWith(AndroidJUnit4::class)
@@ -62,7 +68,11 @@ class MediaRecommendationsInteractorTest : SysuiTestCase() {
    private val kosmos = testKosmos().apply { applicationContext = spyContext }
    private val testScope = kosmos.testScope

    private val mediaDataFilter: MediaDataFilterImpl = kosmos.mediaDataFilter
    private val mediaDataFilter: MediaDataFilterImpl =
        with(kosmos) {
            mediaSmartspaceLogger = mockMediaSmartspaceLogger
            mediaDataFilter
        }
    private val activityStarter = kosmos.activityStarter
    private val icon: Icon = Icon.createWithResource(context, R.drawable.ic_media_play)
    private val smartspaceMediaData: SmartspaceMediaData =
@@ -72,6 +82,7 @@ class MediaRecommendationsInteractorTest : SysuiTestCase() {
            packageName = PACKAGE_NAME,
            recommendations = MediaTestHelper.getValidRecommendationList(icon),
        )
    private val smartspaceLogger = kosmos.mockMediaSmartspaceLogger

    private val underTest: MediaRecommendationsInteractor =
        with(kosmos) {
@@ -138,8 +149,24 @@ class MediaRecommendationsInteractorTest : SysuiTestCase() {

        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)

        underTest.removeMediaRecommendations(KEY_MEDIA_SMARTSPACE, intent, 0)
        mediaDataFilter.onSmartspaceMediaDataLoaded(KEY_MEDIA_SMARTSPACE, smartspaceMediaData)
        underTest.removeMediaRecommendations(
            KEY_MEDIA_SMARTSPACE,
            intent,
            0,
            SMARTSPACE_CARD_DISMISS_EVENT,
            1
        )

        verify(smartspaceLogger)
            .logSmartspaceCardUIEvent(
                SMARTSPACE_CARD_DISMISS_EVENT,
                SmallHash.hash(smartspaceMediaData.targetId),
                Process.INVALID_UID,
                surface = SURFACE,
                cardinality = 1,
                isRecommendationCard = true,
            )
        verify(kosmos.mockBroadcastSender).sendBroadcast(eq(intent))
    }

@@ -151,7 +178,13 @@ class MediaRecommendationsInteractorTest : SysuiTestCase() {
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        intent.component = ComponentName(PACKAGE_NAME, EXPORTED_SMARTSPACE_TRAMPOLINE_ACTIVITY_NAME)

        underTest.removeMediaRecommendations(KEY_MEDIA_SMARTSPACE, intent, 0)
        underTest.removeMediaRecommendations(
            KEY_MEDIA_SMARTSPACE,
            intent,
            0,
            SMARTSPACE_CARD_DISMISS_EVENT,
            1
        )

        verify(spyContext).startActivity(eq(intent))
    }
@@ -171,13 +204,26 @@ class MediaRecommendationsInteractorTest : SysuiTestCase() {

        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)

        underTest.startClickIntent(expandable, intent)

        mediaDataFilter.onSmartspaceMediaDataLoaded(KEY_MEDIA_SMARTSPACE, smartspaceMediaData)
        underTest.startClickIntent(expandable, intent, SMARTSPACE_CARD_CLICK_EVENT, 1, 2, 3)

        verify(smartspaceLogger)
            .logSmartspaceCardUIEvent(
                SMARTSPACE_CARD_CLICK_EVENT,
                SmallHash.hash(smartspaceMediaData.targetId),
                Process.INVALID_UID,
                surface = SURFACE,
                cardinality = 1,
                isRecommendationCard = true,
                interactedSubcardRank = 2,
                interactedSubcardCardinality = 3
            )
        verify(spyContext).startActivity(eq(intent))
    }

    companion object {
        private const val KEY_MEDIA_SMARTSPACE = "MEDIA_SMARTSPACE_ID"
        private const val PACKAGE_NAME = "com.example.app"
        private const val SURFACE = 4
    }
}
+8 −8
Original line number Diff line number Diff line
@@ -47,7 +47,7 @@ class MediaDiffUtilTest : SysuiTestCase() {
                oldList,
                newList,
                { commonViewModel, _ -> assertThat(commonViewModel).isEqualTo(mediaControl) },
                { fail("Unexpected to update $it") },
                { commonViewModel, _ -> fail("Unexpected to update $commonViewModel") },
                { fail("Unexpected to remove $it") },
                { commonViewModel, _, _ -> fail("Unexpected to move $commonViewModel ") },
            )
@@ -66,7 +66,7 @@ class MediaDiffUtilTest : SysuiTestCase() {
                oldList,
                newList,
                { commonViewModel, _ -> assertThat(commonViewModel).isEqualTo(mediaRecs) },
                { fail("Unexpected to update $it") },
                { commonViewModel, _ -> fail("Unexpected to update $commonViewModel") },
                { fail("Unexpected to remove $it") },
                { commonViewModel, _, _ -> fail("Unexpected to move $commonViewModel ") },
            )
@@ -85,7 +85,7 @@ class MediaDiffUtilTest : SysuiTestCase() {
                oldList,
                newList,
                { commonViewModel, _ -> fail("Unexpected to add $commonViewModel") },
                { commonViewModel -> assertThat(commonViewModel).isNotEqualTo(mediaControl) },
                { commonViewModel, _ -> assertThat(commonViewModel).isNotEqualTo(mediaControl) },
                { fail("Unexpected to remove $it") },
                { commonViewModel, _, _ -> fail("Unexpected to move $commonViewModel ") },
            )
@@ -104,7 +104,7 @@ class MediaDiffUtilTest : SysuiTestCase() {
                oldList,
                newList,
                { commonViewModel, _ -> fail("Unexpected to add $commonViewModel") },
                { commonViewModel -> assertThat(commonViewModel).isNotEqualTo(mediaRecs) },
                { commonViewModel, _ -> assertThat(commonViewModel).isNotEqualTo(mediaRecs) },
                { fail("Unexpected to remove $it") },
                { commonViewModel, _, _ -> fail("Unexpected to move $commonViewModel ") },
            )
@@ -124,7 +124,7 @@ class MediaDiffUtilTest : SysuiTestCase() {
                oldList,
                newList,
                { commonViewModel, _ -> fail("Unexpected to add $commonViewModel") },
                { fail("Unexpected to update $it") },
                { commonViewModel, _ -> fail("Unexpected to update $commonViewModel") },
                { fail("Unexpected to remove $it") },
                { commonViewModel, _, _ -> assertThat(commonViewModel).isEqualTo(mediaControl1) },
            )
@@ -145,7 +145,7 @@ class MediaDiffUtilTest : SysuiTestCase() {
                oldList,
                newList,
                { commonViewModel, _ -> fail("Unexpected to add $commonViewModel") },
                { fail("Unexpected to update $it") },
                { commonViewModel, _ -> fail("Unexpected to update $commonViewModel") },
                { fail("Unexpected to remove $it") },
                { commonViewModel, _, _ -> assertThat(commonViewModel).isEqualTo(mediaRecs) },
            )
@@ -164,7 +164,7 @@ class MediaDiffUtilTest : SysuiTestCase() {
                oldList,
                newList,
                { commonViewModel, _ -> fail("Unexpected to add $commonViewModel") },
                { fail("Unexpected to update $it") },
                { commonViewModel, _ -> fail("Unexpected to update $commonViewModel") },
                { commonViewModel -> assertThat(commonViewModel).isEqualTo(mediaControl) },
                { commonViewModel, _, _ -> fail("Unexpected to move $commonViewModel ") },
            )
@@ -183,7 +183,7 @@ class MediaDiffUtilTest : SysuiTestCase() {
                oldList,
                newList,
                { commonViewModel, _ -> fail("Unexpected to add $commonViewModel") },
                { fail("Unexpected to update $it") },
                { commonViewModel, _ -> fail("Unexpected to update $commonViewModel") },
                { commonViewModel -> assertThat(commonViewModel).isEqualTo(mediaRecs) },
                { commonViewModel, _, _ -> fail("Unexpected to move $commonViewModel ") },
            )
Loading