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
This commit is contained in:
Christoph Studer
2014-08-22 19:16:00 +02:00
parent 223ddaa74d
commit c44caa9b84

View File

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