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

Commit c44caa9b authored by Christoph Studer's avatar Christoph Studer
Browse files

NoMan: Cancel children when update removes summary

When a notification update causes a group summary to be
removed (e.g. because the group summary is updated to be
a non-grouped notification), cancel group children.

Bug: 17143007
Change-Id: Ic295a5fc6ee5fe7efb8e71fe8bd1b2c0159461aa
parent 223ddaa7
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -1626,6 +1626,16 @@ public class NotificationManagerService extends SystemService {
                }

                synchronized (mNotificationList) {
                    // Clear out group children of the old notification if the update causes the
                    // group summary to go away. This happens when the old notification was a
                    // summary and the new one isn't, or when the old notification was a summary
                    // and its group key changed.
                    if (old != null && old.getNotification().isGroupSummary() &&
                            (!notification.isGroupSummary() ||
                                    !old.getGroupKey().equals(r.getGroupKey()))) {
                        cancelGroupChildrenLocked(old, callingUid, callingPid, null);
                    }

                    int index = indexOfNotificationLocked(n.getKey());
                    if (index < 0) {
                        mNotificationList.add(r);
@@ -2376,10 +2386,9 @@ public class NotificationManagerService extends SystemService {
        final int N = mNotificationList.size();
        for (int i = N - 1; i >= 0; i--) {
            NotificationRecord childR = mNotificationList.get(i);
            Notification childN = childR.getNotification();
            StatusBarNotification childSbn = childR.sbn;
            if (childR.getUserId() == userId && pkg.equals(childSbn.getPackageName()) &&
                    n.getGroup().equals(childN.getGroup())) {
            if (childR.getNotification().isGroupChild() &&
                    childR.getGroupKey().equals(r.getGroupKey())) {
                EventLogTags.writeNotificationCancel(callingUid, callingPid,
                        pkg, childSbn.getId(), childSbn.getTag(), userId, 0, 0,
                        REASON_GROUP_SUMMARY_CANCELED, listenerName);