Loading packages/SystemUI/src/com/android/systemui/bubbles/storage/BubbleVolatileRepository.kt +5 −2 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) -> Loading packages/SystemUI/tests/src/com/android/systemui/bubbles/storage/BubbleVolatileRepositoryTest.kt +13 −0 Original line number Diff line number Diff line Loading @@ -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" Loading Loading
packages/SystemUI/src/com/android/systemui/bubbles/storage/BubbleVolatileRepository.kt +5 −2 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) -> Loading
packages/SystemUI/tests/src/com/android/systemui/bubbles/storage/BubbleVolatileRepositoryTest.kt +13 −0 Original line number Diff line number Diff line Loading @@ -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" Loading