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

Commit ce87a8af authored by Selim Cinek's avatar Selim Cinek
Browse files

Fixed an issue where the deleteintent of children wasn't sent

Especially in context of autobundling this could lead to bad bugs

Change-Id: Idf722f9675f6f6e49d49c08798e38e09b1c5c01e
Fixes: 29515621
parent 88086e71
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -67,7 +67,6 @@ import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.IIntentSender;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ApplicationInfo;
@@ -2802,7 +2801,7 @@ public class NotificationManagerService extends SystemService {
        // notification was a summary and its group key changed.
        if (oldIsSummary && (!isSummary || !oldGroup.equals(group))) {
            cancelGroupChildrenLocked(old, callingUid, callingPid, null,
                    REASON_GROUP_SUMMARY_CANCELED);
                    REASON_GROUP_SUMMARY_CANCELED, false /* sendDelete */);
        }
    }

@@ -3435,7 +3434,7 @@ public class NotificationManagerService extends SystemService {

                        cancelNotificationLocked(r, sendDelete, reason);
                        cancelGroupChildrenLocked(r, callingUid, callingPid, listenerName,
                                REASON_GROUP_SUMMARY_CANCELED);
                                REASON_GROUP_SUMMARY_CANCELED, sendDelete);
                        updateLightsLocked();
                    }
                }
@@ -3514,7 +3513,7 @@ public class NotificationManagerService extends SystemService {
                final int M = canceledNotifications.size();
                for (int i = 0; i < M; i++) {
                    cancelGroupChildrenLocked(canceledNotifications.get(i), callingUid, callingPid,
                            listenerName, REASON_GROUP_SUMMARY_CANCELED);
                            listenerName, REASON_GROUP_SUMMARY_CANCELED, false /* sendDelete */);
                }
            }
            if (canceledNotifications != null) {
@@ -3558,14 +3557,14 @@ public class NotificationManagerService extends SystemService {
        int M = canceledNotifications != null ? canceledNotifications.size() : 0;
        for (int i = 0; i < M; i++) {
            cancelGroupChildrenLocked(canceledNotifications.get(i), callingUid, callingPid,
                    listenerName, REASON_GROUP_SUMMARY_CANCELED);
                    listenerName, REASON_GROUP_SUMMARY_CANCELED, false /* sendDelete */);
        }
        updateLightsLocked();
    }

    // Warning: The caller is responsible for invoking updateLightsLocked().
    private void cancelGroupChildrenLocked(NotificationRecord r, int callingUid, int callingPid,
            String listenerName, int reason) {
            String listenerName, int reason, boolean sendDelete) {
        Notification n = r.getNotification();
        if (!n.isGroupSummary()) {
            return;
@@ -3588,7 +3587,7 @@ public class NotificationManagerService extends SystemService {
                EventLogTags.writeNotificationCancel(callingUid, callingPid, pkg, childSbn.getId(),
                        childSbn.getTag(), userId, 0, 0, reason, listenerName);
                mNotificationList.remove(i);
                cancelNotificationLocked(childR, false, reason);
                cancelNotificationLocked(childR, sendDelete, reason);
            }
        }
    }