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

Commit 855a8539 authored by Lyn's avatar Lyn
Browse files

Fix entry lookup in getDurationMs

Bug: 332392653
Fixes: 335758850
Test: BaseHeadsUpManagerTest
Test: AvalancheControllerTest
Test: adb logcat
Flag: ACONFIG notification_throttle_hun STAGING
Change-Id: Id51a2788bd424efba16a224e8bd7771a8793a826
parent ef8871d5
Loading
Loading
Loading
Loading
+30 −1
Original line number Diff line number Diff line
@@ -247,6 +247,35 @@ class AvalancheControllerTest : SysuiTestCase() {
        Truth.assertThat(mAvalancheController.headsUpEntryShowing).isEqualTo(nextEntry)
    }

    @Test
    fun testGetDurationMs_untrackedEntryEmptyAvalanche_useAutoDismissTime() {
        val givenEntry = createHeadsUpEntry(id = 0)

        // Nothing is showing
        mAvalancheController.headsUpEntryShowing = null

        // Nothing is next
        mAvalancheController.clearNext()

        val durationMs = mAvalancheController.getDurationMs(givenEntry, autoDismissMs = 5000)
        Truth.assertThat(durationMs).isEqualTo(5000)
    }

    @Test
    fun testGetDurationMs_untrackedEntryNonEmptyAvalanche_useAutoDismissTime() {
        val givenEntry = createHeadsUpEntry(id = 0)

        // Given entry not tracked
        mAvalancheController.headsUpEntryShowing = createHeadsUpEntry(id = 1)

        mAvalancheController.clearNext()
        val nextEntry = createHeadsUpEntry(id = 2)
        mAvalancheController.addToNext(nextEntry, runnableMock!!)

        val durationMs = mAvalancheController.getDurationMs(givenEntry, autoDismissMs = 5000)
        Truth.assertThat(durationMs).isEqualTo(5000)
    }

    @Test
    fun testGetDurationMs_lastEntry_useAutoDismissTime() {
        // Entry is showing
@@ -261,7 +290,7 @@ class AvalancheControllerTest : SysuiTestCase() {
    }

    @Test
    fun testGetDurationMs_nextEntryLowerPriority_500() {
    fun testGetDurationMs_nextEntryLowerPriority_5000() {
        // Entry is showing
        val showingEntry = createFsiHeadsUpEntry(id = 1)
        mAvalancheController.headsUpEntryShowing = showingEntry
+22 −4
Original line number Diff line number Diff line
@@ -153,27 +153,45 @@ class AvalancheController @Inject constructor(
            // Use default duration, like we did before AvalancheController existed
            return autoDismissMs
        }

        val showingList: MutableList<HeadsUpEntry> = mutableListOf()
        headsUpEntryShowing?.let { showingList.add(it) }

        if (headsUpEntryShowing != null) {
            showingList.add(headsUpEntryShowing!!)
        }
        nextList.sort()
        val entryList = showingList + nextList
        val thisEntryIndex = entryList.indexOf(entry)
        if (entryList.isEmpty()) {
            log { "No avalanche HUNs, use default ms: $autoDismissMs" }
            return autoDismissMs
        }
        // entryList.indexOf(entry) returns -1 even when the entry is in entryList
        var thisEntryIndex = -1
        for ((i, e) in entryList.withIndex()) {
            if (e == entry) {
                thisEntryIndex = i
            }
        }
        if (thisEntryIndex == -1) {
            log { "Untracked entry, use default ms: $autoDismissMs" }
            return autoDismissMs
        }
        val nextEntryIndex = thisEntryIndex + 1

        // If last entry, use default duration
        if (nextEntryIndex >= entryList.size) {
            log { "Last entry, use default ms: $autoDismissMs" }
            return autoDismissMs
        }
        val nextEntry = entryList[nextEntryIndex]
        if (nextEntry.compareNonTimeFields(entry) == -1) {
            // Next entry is higher priority
            log { "Next entry is higher priority: 500ms" }
            return 500
        } else if (nextEntry.compareNonTimeFields(entry) == 0) {
            // Next entry is same priority
            log { "Next entry is same priority: 1000ms" }
            return 1000
        } else {
            log { "Next entry is lower priority, use default ms: $autoDismissMs" }
            return autoDismissMs
        }
    }