From c0c6edee7f46ac2d247f496f83e53f9adfd163e7 Mon Sep 17 00:00:00 2001 From: Dan Sandler Date: Wed, 30 Oct 2019 15:01:32 -0400 Subject: [PATCH] Don't retain the filtered list of notifications. Previously the entire set of notifications was "leaked" until the next call to getNotificationsForCurrentUser(), which currently only happens for certain configuration changes (UiMode, density, fontscale). Bug: 143461605 Test: atest SystemUITests Test: sanity check: boot and switch night mode Change-Id: I39f2c96f848ab92a050aa4bda3ae203fbf99d915 --- .../notification/collection/NotificationData.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationData.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationData.java index 9981c93431e72..a0229d16d6eb0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationData.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationData.java @@ -68,7 +68,6 @@ public class NotificationData { private final ArrayMap mEntries = new ArrayMap<>(); private final ArrayList mSortedAndFiltered = new ArrayList<>(); - private final ArrayList mFilteredForUser = new ArrayList<>(); private final NotificationGroupManager mGroupManager = Dependency.get(NotificationGroupManager.class); @@ -166,20 +165,20 @@ public class NotificationData { } public ArrayList getNotificationsForCurrentUser() { - mFilteredForUser.clear(); - synchronized (mEntries) { final int len = mEntries.size(); + ArrayList filteredForUser = new ArrayList<>(len); + for (int i = 0; i < len; i++) { NotificationEntry entry = mEntries.valueAt(i); final StatusBarNotification sbn = entry.getSbn(); if (!getEnvironment().isNotificationForCurrentProfiles(sbn)) { continue; } - mFilteredForUser.add(entry); + filteredForUser.add(entry); } + return filteredForUser; } - return mFilteredForUser; } public NotificationEntry get(String key) {