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

Commit 0d3b37cd authored by Yuri Lin's avatar Yuri Lin
Browse files

On notification update, take the newest value of shouldHeadsUp

When addressing only notification updates, this is a very small edge case that will only occur if multiple notification posts/updates occur in the same build cycle, *and* the value of shouldHeadsUp changes.

This change is also being made in preparation for updates to handle onRankingApplied, which may add additional cases where an update occurs to the value of shouldHeadsUp.

Bug: 248325248
Test: HeadsUpCoordinatorTest
Change-Id: I274c5f65d92fc151bacaacb21726445f1bf7fecb
parent f5170368
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -393,7 +393,7 @@ class HeadsUpCoordinator @Inject constructor(
            val posted = mPostedEntries.compute(entry.key) { _, value ->
                value?.also { update ->
                    update.wasUpdated = true
                    update.shouldHeadsUpEver = update.shouldHeadsUpEver || shouldHeadsUpEver
                    update.shouldHeadsUpEver = shouldHeadsUpEver
                    update.shouldHeadsUpAgain = update.shouldHeadsUpAgain || shouldHeadsUpAgain
                    update.isAlerting = isAlerting
                    update.isBinding = isBinding
+34 −0
Original line number Diff line number Diff line
@@ -336,6 +336,40 @@ class HeadsUpCoordinatorTest : SysuiTestCase() {
        verify(mHeadsUpManager, never()).showNotification(mEntry)
    }

    @Test
    fun testOnEntryUpdated_toAlert() {
        // GIVEN that an entry is posted that should not heads up
        setShouldHeadsUp(mEntry, false)
        mCollectionListener.onEntryAdded(mEntry)

        // WHEN it's updated to heads up
        setShouldHeadsUp(mEntry)
        mCollectionListener.onEntryUpdated(mEntry)
        mBeforeTransformGroupsListener.onBeforeTransformGroups(listOf(mEntry))
        mBeforeFinalizeFilterListener.onBeforeFinalizeFilter(listOf(mEntry))

        // THEN the notification alerts
        finishBind(mEntry)
        verify(mHeadsUpManager).showNotification(mEntry)
    }

    @Test
    fun testOnEntryUpdated_toNotAlert() {
        // GIVEN that an entry is posted that should heads up
        setShouldHeadsUp(mEntry)
        mCollectionListener.onEntryAdded(mEntry)

        // WHEN it's updated to not heads up
        setShouldHeadsUp(mEntry, false)
        mCollectionListener.onEntryUpdated(mEntry)
        mBeforeTransformGroupsListener.onBeforeTransformGroups(listOf(mEntry))
        mBeforeFinalizeFilterListener.onBeforeFinalizeFilter(listOf(mEntry))

        // THEN the notification is never bound or shown
        verify(mHeadsUpViewBinder, never()).bindHeadsUpView(any(), any())
        verify(mHeadsUpManager, never()).showNotification(any())
    }

    @Test
    fun testOnEntryRemovedRemovesHeadsUpNotification() {
        // GIVEN the current HUN is mEntry