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

Commit 13ca7927 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix media crash when removing UMO" into main

parents c01b9fc1 ac34f7a4
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -106,6 +106,28 @@ class MediaRepositoryTest : SysuiTestCase() {
            assertThat(underTest.removeCurrentUserMediaEntry(instanceId)).isEqualTo(userMedia)
        }

    @Test
    fun addMultipleCurrentUserMediaEntries_thenRemove_returnsValues() =
        testScope.runTest {
            val currentUserEntries by collectLastValue(underTest.currentUserEntries)

            val firstInstanceId = InstanceId.fakeInstanceId(123)
            val secondInstanceId = InstanceId.fakeInstanceId(321)
            val firstUserMedia = createMediaData("app1", false, LOCAL, false, firstInstanceId)
            val secondUserMedia = createMediaData("app2", true, LOCAL, false, secondInstanceId)

            addCurrentUserMediaEntry(firstUserMedia)
            addCurrentUserMediaEntry(secondUserMedia)

            assertThat(currentUserEntries?.get(firstInstanceId)).isEqualTo(firstUserMedia)
            assertThat(currentUserEntries?.get(secondInstanceId)).isEqualTo(secondUserMedia)

            assertThat(underTest.removeCurrentUserMediaEntry(firstInstanceId))
                .isEqualTo(firstUserMedia)
            assertThat(underTest.removeCurrentUserMediaEntry(secondInstanceId))
                .isEqualTo(secondUserMedia)
        }

    @Test
    fun addMediaEntry_activeThenInactivate() =
        testScope.runTest {
+5 −7
Original line number Diff line number Diff line
@@ -127,9 +127,7 @@ constructor(
        val sortedMap = TreeMap<MediaSortKeyModel, MediaDataModel>(comparator)
        val currentModel = sortedMedia.values.find { it.instanceId == data.instanceId }

        sortedMap.putAll(
            sortedMedia.filter { (keyModel, _) -> keyModel.instanceId != data.instanceId }
        )
        sortedMap.putAll(sortedMedia.filter { (_, model) -> model.instanceId != data.instanceId })

        mutableUserEntries.value[data.instanceId]?.let { mediaData ->
            with(mediaData) {
@@ -186,7 +184,9 @@ constructor(
    private fun removeFromSortedMedia(data: MediaData) {
        currentMedia.removeIf { model -> data.instanceId == model.instanceId }
        sortedMedia =
            TreeMap(sortedMedia.filter { (keyModel, _) -> keyModel.instanceId != data.instanceId })
            TreeMap<MediaSortKeyModel, MediaDataModel>(comparator).apply {
                putAll(sortedMedia.filter { (_, model) -> model.instanceId != data.instanceId })
            }
        clearControllerState(data.instanceId)
    }

@@ -437,9 +437,7 @@ constructor(
                ?.let {
                    val sortedMap = TreeMap<MediaSortKeyModel, MediaDataModel>(comparator)
                    sortedMap.putAll(
                        sortedMedia.filter { (keyModel, _) ->
                            keyModel.instanceId != newModel.instanceId
                        }
                        sortedMedia.filter { (_, model) -> model.instanceId != newModel.instanceId }
                    )
                    sortedMap[it] = newModel
                    sortedMedia = sortedMap