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

Commit 4e775a33 authored by Mady Mellor's avatar Mady Mellor
Browse files

Remove BubbleEntity via IDs

The contents of the BubbleEntity could differ
so should compare via IDs

Fixes: 159041180
Test: atest BubbleVolatileRepositoryTest
Change-Id: I6470a484657710cff3b2cdc0787cd0afcfdbb6ad
parent c5c35fc3
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -60,7 +60,8 @@ class BubbleVolatileRepository @Inject constructor(
        // Verify the size of given bubbles is within capacity, otherwise trim down to capacity
        val bubblesInRange = bubbles.takeLast(capacity)
        // To ensure natural ordering of the bubbles, removes bubbles which already exist
        val uniqueBubbles = bubblesInRange.filterNot { entities.remove(it) }
        val uniqueBubbles = bubblesInRange.filterNot { b: BubbleEntity ->
            entities.removeIf { e: BubbleEntity -> b.key == e.key } }
        val overflowCount = entities.size + bubblesInRange.size - capacity
        if (overflowCount > 0) {
            // Uncache ShortcutInfo of bubbles that will be removed due to capacity
@@ -72,7 +73,9 @@ class BubbleVolatileRepository @Inject constructor(
    }

    @Synchronized
    fun removeBubbles(bubbles: List<BubbleEntity>) = uncache(bubbles.filter { entities.remove(it) })
    fun removeBubbles(bubbles: List<BubbleEntity>) =
            uncache(bubbles.filter { b: BubbleEntity ->
                entities.removeIf { e: BubbleEntity -> b.key == e.key } })

    private fun cache(bubbles: List<BubbleEntity>) {
        bubbles.groupBy { ShortcutKey(it.userId, it.packageName) }.forEach { (key, bubbles) ->
+13 −0
Original line number Diff line number Diff line
@@ -102,6 +102,19 @@ class BubbleVolatileRepositoryTest : SysuiTestCase() {
                eq(listOf("alice and bob")), eq(user10),
                eq(LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS))
    }

    @Test
    fun testAddBubbleMatchesByKey() {
        val bubble = BubbleEntity(0, "com.example.pkg", "shortcut-id", "key", 120, 0, "title")
        repository.addBubbles(listOf(bubble))
        assertEquals(bubble, repository.bubbles.get(0))

        // Same key as first bubble but different entry
        val bubbleModified = BubbleEntity(0, "com.example.pkg", "shortcut-id", "key", 120, 0,
                "different title")
        repository.addBubbles(listOf(bubbleModified))
        assertEquals(bubbleModified, repository.bubbles.get(0))
    }
}

private const val PKG_MESSENGER = "com.example.messenger"