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

Commit 8ab776cd authored by Chris Wren's avatar Chris Wren
Browse files

remove special case code for groups.

Once all the platforms as special, none of them will be.

Bug: 26919636
Change-Id: I70eb05126184feb2af310e71f0ffd82ab9dcebc6
parent 68b19f27
Loading
Loading
Loading
Loading
+1 −90
Original line number Diff line number Diff line
@@ -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.
     *
     * <p>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.</p>
     *
     * <p>For summaries, cancels all children of that group, as SysUI will
     * never show them anymore.</p>
     *
     * @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<ManagedServiceInfo> 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.
         *
         * <p>Currently we assume groups are desired by non-SystemUI listeners.</p>
         */
        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 {