Merge "Only cancel the group notification if launcher canceled last child" into ub-launcher3-master

This commit is contained in:
Tony Wickham 2018-03-13 16:57:59 +00:00 committed by Android (Google) Code Review
commit f985557937
2 changed files with 18 additions and 3 deletions

View File

@ -74,6 +74,9 @@ public class NotificationListener extends NotificationListenerService {
/** Maps keys to their corresponding current group key */
private final Map<String, String> mNotificationGroupKeyMap = new HashMap<>();
/** The last notification key that was dismissed from launcher UI */
private String mLastKeyDismissedByLauncher;
private SettingsObserver mNotificationBadgingObserver;
private final Handler.Callback mWorkerCallback = new Handler.Callback() {
@ -251,13 +254,25 @@ public class NotificationListener extends NotificationListenerService {
}
NotificationGroup notificationGroup = mNotificationGroupMap.get(sbn.getGroupKey());
String key = sbn.getKey();
if (notificationGroup != null) {
notificationGroup.removeChildKey(sbn.getKey());
notificationGroup.removeChildKey(key);
if (notificationGroup.isEmpty()) {
cancelNotification(notificationGroup.getGroupSummaryKey());
if (key.equals(mLastKeyDismissedByLauncher)) {
// Only cancel the group notification if launcher dismissed the last child.
cancelNotification(notificationGroup.getGroupSummaryKey());
}
mNotificationGroupMap.remove(sbn.getGroupKey());
}
}
if (key.equals(mLastKeyDismissedByLauncher)) {
mLastKeyDismissedByLauncher = null;
}
}
public void cancelNotificationFromLauncher(String key) {
mLastKeyDismissedByLauncher = key;
cancelNotification(key);
}
@Override

View File

@ -206,7 +206,7 @@ public class PopupDataProvider implements NotificationListener.NotificationsChan
if (notificationListener == null) {
return;
}
notificationListener.cancelNotification(notificationKey);
notificationListener.cancelNotificationFromLauncher(notificationKey);
}
public void setAllWidgets(ArrayList<WidgetListRowEntry> allWidgets) {