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

Commit 36248d75 authored by Steve Elliott's avatar Steve Elliott Committed by Automerger Merge Worker
Browse files

Merge "Increase defensiveness of Incoming Header placement" into rvc-dev am: 7e7b180d

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11688827

Change-Id: Ice07dca9dc4079b66f60f2a4bd9225976c068eeb
parents 9bc46bca 7e7b180d
Loading
Loading
Loading
Loading
+31 −14
Original line number Diff line number Diff line
@@ -287,21 +287,17 @@ class NotificationSectionsManager @Inject internal constructor(
                    // Is there a section discontinuity? This usually occurs due to HUNs
                    if (prev?.entry?.bucket?.let { it > child.entry.bucket } == true) {
                        // Remove existing headers, and move the Incoming header if necessary
                        if (alertingHeaderTarget != -1) {
                            if (showHeaders && incomingHeaderTarget != -1) {
                                incomingHeaderTarget = alertingHeaderTarget
                            }
                            alertingHeaderTarget = -1
                        }
                        if (peopleHeaderTarget != -1) {
                            if (showHeaders && incomingHeaderTarget != -1) {
                                incomingHeaderTarget = peopleHeaderTarget
                        incomingHeaderTarget = when {
                            !showHeaders -> -1
                            incomingHeaderTarget != -1 -> incomingHeaderTarget
                            peopleHeaderTarget != -1 -> peopleHeaderTarget
                            alertingHeaderTarget != -1 -> alertingHeaderTarget
                            gentleHeaderTarget != -1 -> gentleHeaderTarget
                            else -> 0
                        }
                        peopleHeaderTarget = -1
                        }
                        if (showHeaders && incomingHeaderTarget == -1) {
                            incomingHeaderTarget = 0
                        }
                        alertingHeaderTarget = -1
                        gentleHeaderTarget = -1
                        // Walk backwards changing all previous notifications to the Incoming
                        // section
                        for (j in i - 1 downTo lastIncomingIndex + 1) {
@@ -323,6 +319,9 @@ class NotificationSectionsManager @Inject internal constructor(
                                peopleHeaderTarget = i
                                // Offset the target if there are other headers before this that
                                // will be moved.
                                if (currentIncomingHeaderIdx != -1 && incomingHeaderTarget == -1) {
                                    peopleHeaderTarget--
                                }
                                if (currentPeopleHeaderIdx != -1) {
                                    peopleHeaderTarget--
                                }
@@ -340,6 +339,13 @@ class NotificationSectionsManager @Inject internal constructor(
                                alertingHeaderTarget = i
                                // Offset the target if there are other headers before this that
                                // will be moved.
                                if (currentIncomingHeaderIdx != -1 && incomingHeaderTarget == -1) {
                                    alertingHeaderTarget--
                                }
                                if (currentPeopleHeaderIdx != -1 && peopleHeaderTarget == -1) {
                                    // People header will be removed
                                    alertingHeaderTarget--
                                }
                                if (currentAlertingHeaderIdx != -1) {
                                    alertingHeaderTarget--
                                }
@@ -354,6 +360,17 @@ class NotificationSectionsManager @Inject internal constructor(
                                gentleHeaderTarget = i
                                // Offset the target if there are other headers before this that
                                // will be moved.
                                if (currentIncomingHeaderIdx != -1 && incomingHeaderTarget == -1) {
                                    gentleHeaderTarget--
                                }
                                if (currentPeopleHeaderIdx != -1 && peopleHeaderTarget == -1) {
                                    // People header will be removed
                                    gentleHeaderTarget--
                                }
                                if (currentAlertingHeaderIdx != -1 && alertingHeaderTarget == -1) {
                                    // Alerting header will be removed
                                    gentleHeaderTarget--
                                }
                                if (currentGentleHeaderIdx != -1) {
                                    gentleHeaderTarget--
                                }
+5 −5
Original line number Diff line number Diff line
@@ -403,11 +403,11 @@ public class NotificationSectionsManagerTest extends SysuiTestCase {
        enablePeopleFiltering();

        setupMockStack(
                PERSON.headsUp(),
                INCOMING_HEADER,
                ALERTING.headsUp(),
                PEOPLE_HEADER,
                PERSON
                PERSON.headsUp(),   // personHeaderTarget = 0
                INCOMING_HEADER,    // currentIncomingHeaderIdx = 1
                ALERTING.headsUp(), // alertingHeaderTarget = 1
                PEOPLE_HEADER,      // currentPeopleHeaderIdx = 3
                PERSON              //
        );
        mSectionsManager.updateSectionBoundaries();