From 899cad855128b20d9cba8a2a2bcb8c9d5ce8d00b 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 (cherry picked from commit c0c6edee7f46ac2d247f496f83e53f9adfd163e7) --- .../statusbar/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 00092929fd49..299511c8f2da 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 @@ -57,7 +57,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.notification; if (!getEnvironment().isNotificationForCurrentProfiles(sbn)) { continue; } - mFilteredForUser.add(entry); + filteredForUser.add(entry); } + return filteredForUser; } - return mFilteredForUser; } public NotificationEntry get(String key) { -- 2.11.0