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

Commit fea36937 authored by Ned Burns's avatar Ned Burns
Browse files

Ignore nonsensical clears from NoMan

It appears that NoMan sometimes fails to send onNotificationPosted
events for some notifications (possibly due to the notification limit?).
It's possible to still receive onNotificationRemoved events for those
notifications, so we ignore those events for now (long-term we should
figure out if this is indeed a problem in NoMan).

Bug: 159652654
Test: atest
Change-Id: Ib15320f537e31a675d2766ba458b7bd019764c73
parent 350ffad6
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -382,9 +382,8 @@ public class NotifCollection implements Dumpable {

        final NotificationEntry entry = mNotificationSet.get(sbn.getKey());
        if (entry == null) {
            crashIfNotInitializing(
                    new IllegalStateException("No notification to remove with key "
                            + sbn.getKey()));
            // TODO (b/160008901): Throw an exception here
            mLogger.logNoNotificationToRemoveWithKey(sbn.getKey());
            return;
        }

+8 −0
Original line number Diff line number Diff line
@@ -121,6 +121,14 @@ class NotifCollectionLogger @Inject constructor(
        })
    }

    fun logNoNotificationToRemoveWithKey(key: String) {
        buffer.log(TAG, ERROR, {
            str1 = key
        }, {
            "No notification to remove with key $str1"
        })
    }

    fun logRankingMissing(key: String, rankingMap: RankingMap) {
        buffer.log(TAG, WARNING, { str1 = key }, { "Ranking update is missing ranking for $str1" })
        buffer.log(TAG, DEBUG, {}, { "Ranking map contents:" })
+4 −3
Original line number Diff line number Diff line
@@ -1273,8 +1273,8 @@ public class NotifCollectionTest extends SysuiTestCase {
        verify(mInterceptor3, never()).shouldInterceptDismissal(clearable);
    }

    @Test(expected = IllegalStateException.class)
    public void testClearNotificationThrowsIfMissing() {
    @Test
    public void testClearNotificationDoesntThrowIfMissing() {
        // GIVEN that enough time has passed that we're beyond the forgiveness window
        mClock.advanceTime(5001);

@@ -1287,7 +1287,8 @@ public class NotifCollectionTest extends SysuiTestCase {
                container.getSbn(),
                new RankingMap(new Ranking[]{ container.getRanking() }));

        // THEN an exception is thrown
        // THEN the event is ignored
        verify(mCollectionListener, never()).onEntryRemoved(any(NotificationEntry.class), anyInt());
    }

    @Test