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

Commit 236773e9 authored by Beth Thibodeau's avatar Beth Thibodeau
Browse files

Simplify media control view model

- Merge MediaCommonViewModel into MediaControlViewModel
- Remove unused field immediatelyUpdateUi

Bug: 382680767
Test: play media with and without scene container flag enabled
Test: atest MediaCarouselControllerTest
Test: atest MediaDiffUtilTest
Test: atest MediaFilterRepositoryTest
Flag: EXEMPT refactor
Change-Id: If8bc5706a64a357493536b7b466d4117c4a56512
parent 280cfec4
Loading
Loading
Loading
Loading
+3 −9
Original line number Diff line number Diff line
@@ -219,17 +219,13 @@ class MediaFilterRepositoryTest : SysuiTestCase() {
            underTest.addSelectedUserMediaEntry(playingData1)
            underTest.addMediaDataLoadingState(MediaDataLoadingModel.Loaded(playingInstanceId1))
            underTest.addSelectedUserMediaEntry(playingData2)
            underTest.addMediaDataLoadingState(
                MediaDataLoadingModel.Loaded(playingInstanceId2, false)
            )
            underTest.addMediaDataLoadingState(MediaDataLoadingModel.Loaded(playingInstanceId2))

            assertThat(currentMedia?.size).isEqualTo(2)
            assertThat(currentMedia)
                .containsExactly(
                    MediaCommonModel.MediaControl(MediaDataLoadingModel.Loaded(playingInstanceId1)),
                    MediaCommonModel.MediaControl(
                        MediaDataLoadingModel.Loaded(playingInstanceId2, false)
                    ),
                    MediaCommonModel.MediaControl(MediaDataLoadingModel.Loaded(playingInstanceId2)),
                )
                .inOrder()

@@ -238,9 +234,7 @@ class MediaFilterRepositoryTest : SysuiTestCase() {
            assertThat(currentMedia?.size).isEqualTo(2)
            assertThat(currentMedia)
                .containsExactly(
                    MediaCommonModel.MediaControl(
                        MediaDataLoadingModel.Loaded(playingInstanceId2, false)
                    ),
                    MediaCommonModel.MediaControl(MediaDataLoadingModel.Loaded(playingInstanceId2)),
                    MediaCommonModel.MediaControl(MediaDataLoadingModel.Loaded(playingInstanceId1)),
                )
                .inOrder()
+21 −31
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.internal.logging.InstanceId
import com.android.systemui.SysuiTestCase
import com.android.systemui.media.controls.ui.viewmodel.MediaCommonViewModel
import com.android.systemui.media.controls.ui.viewmodel.MediaControlViewModel
import com.android.systemui.media.controls.ui.viewmodel.mediaControlViewModel
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
@@ -37,8 +37,8 @@ class MediaDiffUtilTest : SysuiTestCase() {

    @Test
    fun newMediaControlAdded() {
        val mediaControl = createMediaControl(InstanceId.fakeInstanceId(123), true)
        val oldList = listOf<MediaCommonViewModel>()
        val mediaControl = createMediaControl(InstanceId.fakeInstanceId(123))
        val oldList = listOf<MediaControlViewModel>()
        val newList = listOf(mediaControl)
        val mediaLoadedCallback = MediaViewModelCallback(oldList, newList)
        val mediaLoadedListUpdateCallback =
@@ -56,18 +56,18 @@ class MediaDiffUtilTest : SysuiTestCase() {

    @Test
    fun updateMediaControl_contentChanged() {
        val mediaControl = createMediaControl(InstanceId.fakeInstanceId(123), true)
        val mediaControl = createMediaControl(InstanceId.fakeInstanceId(123))
        val oldList = listOf(mediaControl)
        val newList = listOf(mediaControl.copy(immediatelyUpdateUi = false))
        val newList = listOf(mediaControl.copy())
        val mediaLoadedCallback = MediaViewModelCallback(oldList, newList)
        val mediaLoadedListUpdateCallback =
            MediaViewModelListUpdateCallback(
                oldList,
                newList,
                { commonViewModel, _ -> fail("Unexpected to add $commonViewModel") },
                { commonViewModel, _ -> assertThat(commonViewModel).isNotEqualTo(mediaControl) },
                { controlViewModel, _ -> fail("Unexpected to add $controlViewModel") },
                { controlViewModel, _ -> assertThat(controlViewModel).isNotEqualTo(mediaControl) },
                { fail("Unexpected to remove $it") },
                { commonViewModel, _, _ -> fail("Unexpected to move $commonViewModel ") },
                { controlViewModel, _, _ -> fail("Unexpected to move $controlViewModel ") },
            )

        DiffUtil.calculateDiff(mediaLoadedCallback).dispatchUpdatesTo(mediaLoadedListUpdateCallback)
@@ -75,8 +75,8 @@ class MediaDiffUtilTest : SysuiTestCase() {

    @Test
    fun mediaControlMoved() {
        val mediaControl1 = createMediaControl(InstanceId.fakeInstanceId(123), true)
        val mediaControl2 = createMediaControl(InstanceId.fakeInstanceId(456), false)
        val mediaControl1 = createMediaControl(InstanceId.fakeInstanceId(123))
        val mediaControl2 = createMediaControl(InstanceId.fakeInstanceId(456))
        val oldList = listOf(mediaControl1, mediaControl2)
        val newList = listOf(mediaControl2, mediaControl1)
        val mediaLoadedCallback = MediaViewModelCallback(oldList, newList)
@@ -84,10 +84,10 @@ class MediaDiffUtilTest : SysuiTestCase() {
            MediaViewModelListUpdateCallback(
                oldList,
                newList,
                { commonViewModel, _ -> fail("Unexpected to add $commonViewModel") },
                { commonViewModel, _ -> fail("Unexpected to update $commonViewModel") },
                { controlViewModel, _ -> fail("Unexpected to add $controlViewModel") },
                { controlViewModel, _ -> fail("Unexpected to update $controlViewModel") },
                { fail("Unexpected to remove $it") },
                { commonViewModel, _, _ -> assertThat(commonViewModel).isEqualTo(mediaControl1) },
                { controlViewModel, _, _ -> assertThat(controlViewModel).isEqualTo(mediaControl1) },
            )

        DiffUtil.calculateDiff(mediaLoadedCallback).dispatchUpdatesTo(mediaLoadedListUpdateCallback)
@@ -95,34 +95,24 @@ class MediaDiffUtilTest : SysuiTestCase() {

    @Test
    fun mediaControlRemoved() {
        val mediaControl = createMediaControl(InstanceId.fakeInstanceId(123), true)
        val mediaControl = createMediaControl(InstanceId.fakeInstanceId(123))
        val oldList = listOf(mediaControl)
        val newList = listOf<MediaCommonViewModel>()
        val newList = listOf<MediaControlViewModel>()
        val mediaLoadedCallback = MediaViewModelCallback(oldList, newList)
        val mediaLoadedListUpdateCallback =
            MediaViewModelListUpdateCallback(
                oldList,
                newList,
                { commonViewModel, _ -> fail("Unexpected to add $commonViewModel") },
                { commonViewModel, _ -> fail("Unexpected to update $commonViewModel") },
                { commonViewModel -> assertThat(commonViewModel).isEqualTo(mediaControl) },
                { commonViewModel, _, _ -> fail("Unexpected to move $commonViewModel ") },
                { controlViewModel, _ -> fail("Unexpected to add $controlViewModel") },
                { controlViewModel, _ -> fail("Unexpected to update $controlViewModel") },
                { controlViewModel -> assertThat(controlViewModel).isEqualTo(mediaControl) },
                { controlViewModel, _, _ -> fail("Unexpected to move $controlViewModel ") },
            )

        DiffUtil.calculateDiff(mediaLoadedCallback).dispatchUpdatesTo(mediaLoadedListUpdateCallback)
    }

    private fun createMediaControl(
        instanceId: InstanceId,
        immediatelyUpdateUi: Boolean,
    ): MediaCommonViewModel.MediaControl {
        return MediaCommonViewModel.MediaControl(
            instanceId = instanceId,
            immediatelyUpdateUi = immediatelyUpdateUi,
            controlViewModel = kosmos.mediaControlViewModel,
            onAdded = {},
            onRemoved = {},
            onUpdated = {},
        )
    private fun createMediaControl(instanceId: InstanceId): MediaControlViewModel {
        return kosmos.mediaControlViewModel.copy(instanceId = instanceId)
    }
}
+7 −7
Original line number Diff line number Diff line
@@ -86,23 +86,23 @@ class MediaCarouselViewModelTest : SysuiTestCase() {
            loadMediaControl(KEY_2, instanceId2, isPlaying = true)
            loadMediaControl(KEY, instanceId1, isPlaying = false)

            var mediaControl2 = sortedMedia?.get(0) as MediaCommonViewModel.MediaControl
            var mediaControl1 = sortedMedia?.get(1) as MediaCommonViewModel.MediaControl
            var mediaControl2 = sortedMedia?.get(0) as MediaControlViewModel
            var mediaControl1 = sortedMedia?.get(1) as MediaControlViewModel
            assertThat(mediaControl2.instanceId).isEqualTo(instanceId2)
            assertThat(mediaControl1.instanceId).isEqualTo(instanceId1)

            loadMediaControl(KEY, instanceId1, isPlaying = true)
            loadMediaControl(KEY_2, instanceId2, isPlaying = false)

            mediaControl2 = sortedMedia?.get(0) as MediaCommonViewModel.MediaControl
            mediaControl1 = sortedMedia?.get(1) as MediaCommonViewModel.MediaControl
            mediaControl2 = sortedMedia?.get(0) as MediaControlViewModel
            mediaControl1 = sortedMedia?.get(1) as MediaControlViewModel
            assertThat(mediaControl2.instanceId).isEqualTo(instanceId2)
            assertThat(mediaControl1.instanceId).isEqualTo(instanceId1)

            underTest.onReorderingAllowed()

            mediaControl1 = sortedMedia?.get(0) as MediaCommonViewModel.MediaControl
            mediaControl2 = sortedMedia?.get(1) as MediaCommonViewModel.MediaControl
            mediaControl1 = sortedMedia?.get(0) as MediaControlViewModel
            mediaControl2 = sortedMedia?.get(1) as MediaControlViewModel
            assertThat(mediaControl1.instanceId).isEqualTo(instanceId1)
            assertThat(mediaControl2.instanceId).isEqualTo(instanceId2)
        }
@@ -115,7 +115,7 @@ class MediaCarouselViewModelTest : SysuiTestCase() {

            loadMediaControl(KEY, instanceId)

            val mediaControl = sortedMedia?.get(0) as MediaCommonViewModel.MediaControl
            val mediaControl = sortedMedia?.get(0) as MediaControlViewModel
            assertThat(mediaControl.instanceId).isEqualTo(instanceId)

            // when media control is added to carousel
+1 −1
Original line number Diff line number Diff line
@@ -248,7 +248,7 @@ constructor(
            // Update loading state with actual active value
            mediaFilterRepository.selectedUserEntries.value[lastActiveId]?.let {
                mediaFilterRepository.addMediaDataLoadingState(
                    MediaDataLoadingModel.Loaded(lastActiveId, immediately)
                    MediaDataLoadingModel.Loaded(lastActiveId)
                )
                mediaLogger.logMediaLoaded(lastActiveId, it.active, "expiring reactivated id")
                listeners.forEach { listener ->
+1 −4
Original line number Diff line number Diff line
@@ -26,13 +26,10 @@ sealed class MediaDataLoadingModel {
    /** Media data has been loaded. */
    data class Loaded(
        override val instanceId: InstanceId,
        val immediatelyUpdateUi: Boolean = true,
        val receivedSmartspaceCardLatency: Int = 0,
        val isSsReactivated: Boolean = false,
    ) : MediaDataLoadingModel()

    /** Media data has been removed. */
    data class Removed(
        override val instanceId: InstanceId,
    ) : MediaDataLoadingModel()
    data class Removed(override val instanceId: InstanceId) : MediaDataLoadingModel()
}
Loading