diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 2765578a7c3de..0641e29095404 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -2543,18 +2543,13 @@ public class NotificationManagerService extends SystemService { // Handle grouped notifications and bail out early if we // can to avoid extracting signals. handleGroupedNotificationLocked(r, old, callingUid, callingPid); - boolean ignoreNotification = - removeUnusedGroupedNotificationLocked(r, old, callingUid, callingPid); - if (DBG) Slog.d(TAG, "ignoreNotification is " + ignoreNotification); // This conditional is a dirty hack to limit the logging done on // behalf of the download manager without affecting other apps. if (!pkg.equals("com.android.providers.downloads") || Log.isLoggable("DownloadManager", Log.VERBOSE)) { int enqueueStatus = EVENTLOG_ENQUEUE_STATUS_NEW; - if (ignoreNotification) { - enqueueStatus = EVENTLOG_ENQUEUE_STATUS_IGNORED; - } else if (old != null) { + if (old != null) { enqueueStatus = EVENTLOG_ENQUEUE_STATUS_UPDATE; } EventLogTags.writeNotificationEnqueue(callingUid, callingPid, @@ -2562,10 +2557,6 @@ public class NotificationManagerService extends SystemService { enqueueStatus); } - if (ignoreNotification) { - return; - } - mRankingHelper.extractSignals(r); final boolean isPackageSuspended = isPackageSuspendedForUser(pkg, callingUid); @@ -2681,58 +2672,6 @@ public class NotificationManagerService extends SystemService { } } - /** - * Performs group notification optimizations if SysUI is the only active - * notification listener and returns whether the given notification should - * be ignored. - * - *

Returns true if the given notification is a child of a group with a - * summary, which means that SysUI will never show it, and hence the new - * notification can be safely ignored. Also cancels any previous instance - * of the ignored notification.

- * - *

For summaries, cancels all children of that group, as SysUI will - * never show them anymore.

- * - * @return true if the given notification can be ignored as an optimization - */ - private boolean removeUnusedGroupedNotificationLocked(NotificationRecord r, - NotificationRecord old, int callingUid, int callingPid) { - if (!ENABLE_CHILD_NOTIFICATIONS) { - // No optimizations are possible if listeners want groups. - if (mListeners.notificationGroupsDesired()) { - return false; - } - - StatusBarNotification sbn = r.sbn; - String group = sbn.getGroupKey(); - boolean isSummary = sbn.getNotification().isGroupSummary(); - boolean isChild = !isSummary && sbn.isGroup(); - - NotificationRecord summary = mSummaryByGroupKey.get(group); - if (isChild && summary != null) { - // Child with an active summary -> ignore - if (DBG) { - Slog.d(TAG, "Ignoring group child " + sbn.getKey() + " due to existing summary " - + summary.getKey()); - } - // Make sure we don't leave an old version of the notification around. - if (old != null) { - if (DBG) { - Slog.d(TAG, "Canceling old version of ignored group child " + sbn.getKey()); - } - cancelNotificationLocked(old, false, REASON_GROUP_OPTIMIZATION); - } - return true; - } else if (isSummary) { - // Summary -> cancel children - cancelGroupChildrenLocked(r, callingUid, callingPid, null, - REASON_GROUP_OPTIMIZATION); - } - } - return false; - } - @VisibleForTesting void buzzBeepBlinkLocked(NotificationRecord record) { boolean buzz = false; @@ -3869,7 +3808,6 @@ public class NotificationManagerService extends SystemService { public class NotificationListeners extends ManagedServices { private final ArraySet mLightTrimListeners = new ArraySet<>(); - private boolean mNotificationGroupsDesired; public NotificationListeners() { super(getContext(), mHandler, mNotificationList, mUserProfiles); @@ -3902,7 +3840,6 @@ public class NotificationManagerService extends SystemService { final INotificationListener listener = (INotificationListener) info.service; final NotificationRankingUpdate update; synchronized (mNotificationList) { - updateNotificationGroupsDesiredLocked(); update = makeRankingUpdateLocked(info); } try { @@ -3919,7 +3856,6 @@ public class NotificationManagerService extends SystemService { updateEffectsSuppressorLocked(); } mLightTrimListeners.remove(removed); - updateNotificationGroupsDesiredLocked(); } public void setOnNotificationPostedTrimLocked(ManagedServiceInfo info, int trim) { @@ -4112,31 +4048,6 @@ public class NotificationManagerService extends SystemService { } return false; } - - /** - * Returns whether any of the currently registered listeners wants to receive notification - * groups. - * - *

Currently we assume groups are desired by non-SystemUI listeners.

- */ - public boolean notificationGroupsDesired() { - return mNotificationGroupsDesired; - } - - private void updateNotificationGroupsDesiredLocked() { - mNotificationGroupsDesired = true; - // No listeners, no groups. - if (mServices.isEmpty()) { - mNotificationGroupsDesired = false; - return; - } - // One listener: Check whether it's SysUI. - if (mServices.size() == 1 && - mServices.get(0).component.getPackageName().equals("com.android.systemui")) { - mNotificationGroupsDesired = false; - return; - } - } } public static final class DumpFilter {