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

Commit 90d11a16 authored by Selim Cinek's avatar Selim Cinek
Browse files

Fixed an issue where the notification wouldn't go away

When autocancelling, the logic wasn't working anymore after
we kept a notification around for a while.
This is now properly working.

Change-Id: I73f5485577e6ae081411638a4e3bd4f08cffc23c
Fixes: 27851227
Bug: 63708826
Test: add notification with auto-cancel, reply from it, click on it again
parent 86bfcee0
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -272,6 +272,11 @@ public class NotificationData {
        public Throwable getDebugThrowable() {
            return mDebugThrowable;
        }

        public void onRemoteInputInserted() {
            lastRemoteInputSent = NOT_LAUNCHED_YET;
            remoteInputTextWhenReset = null;
        }
    }

    private final ArrayMap<String, Entry> mEntries = new ArrayMap<>();
+1 −0
Original line number Diff line number Diff line
@@ -498,6 +498,7 @@ public class NotificationEntryManager implements Dumpable, NotificationInflater.
                    sbn.getId(), sbn.getTag(), sbn.getUid(), sbn.getInitialPid(),
                    newNotification, sbn.getUser(), sbn.getOverrideGroupKey(), sbn.getPostTime());
            boolean updated = false;
            entry.onRemoteInputInserted();
            try {
                updateNotificationInternal(newSbn, null);
                updated = true;
+20 −12
Original line number Diff line number Diff line
@@ -4931,18 +4931,11 @@ public class StatusBar extends SystemUI implements DemoMode,
                    // system process is dead if we're here.
                }
                if (parentToCancelFinal != null) {
                    // We have to post it to the UI thread for synchronization
                    mHandler.post(() -> {
                        Runnable removeRunnable =
                                () -> mEntryManager.performRemoveNotification(parentToCancelFinal);
                        if (isCollapsing()) {
                            // To avoid lags we're only performing the remove
                            // after the shade was collapsed
                            addPostCollapseAction(removeRunnable);
                        } else {
                            removeRunnable.run();
                    removeNotification(parentToCancelFinal);
                }
                    });
                if (shouldAutoCancel(sbn)) {
                    // Automatically remove all notifications that we may have kept around longer
                    removeNotification(sbn);
                }
            };

@@ -4966,6 +4959,21 @@ public class StatusBar extends SystemUI implements DemoMode,
        }, afterKeyguardGone);
    }

    private void removeNotification(StatusBarNotification notification) {
        // We have to post it to the UI thread for synchronization
        mHandler.post(() -> {
            Runnable removeRunnable =
                    () -> mEntryManager.performRemoveNotification(notification);
            if (isCollapsing()) {
                // To avoid lags we're only performing the remove
                // after the shade was collapsed
                addPostCollapseAction(removeRunnable);
            } else {
                removeRunnable.run();
            }
        });
    }

    protected NotificationListener mNotificationListener;

    protected void notifyUserAboutHiddenNotifications() {