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
This commit is contained in:
Selim Cinek
2018-01-17 16:24:36 -08:00
parent 86bfcee04b
commit 90d11a1690
3 changed files with 26 additions and 12 deletions

View File

@@ -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<>();

View File

@@ -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;

View File

@@ -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() {