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

Commit 9bb258df authored by Yuri Lin's avatar Yuri Lin
Browse files

Refactor Archive-related bit of dumpImpl into Archive.

This allows for actually locking the buffer iteration with mBufferLock to avoid accidental concurrent access.

Test: atest NotificationManagerServiceTest; manually inspected dumpsys
Bug: 186860793
Change-Id: I6a97a74833f57ec45c118fcfc63f628703ec2557
parent fa506656
Loading
Loading
Loading
Loading
+18 −12
Original line number Diff line number Diff line
@@ -718,6 +718,22 @@ public class NotificationManagerService extends SystemService {
                }
            }
        }

        void dumpImpl(PrintWriter pw, @NonNull DumpFilter filter) {
            synchronized (mBufferLock) {
                Iterator<Pair<StatusBarNotification, Integer>> iter = descendingIterator();
                int i = 0;
                while (iter.hasNext()) {
                    final StatusBarNotification sbn = iter.next().first;
                    if (filter != null && !filter.matches(sbn)) continue;
                    pw.println("    " + sbn);
                    if (++i >= 5) {
                        if (iter.hasNext()) pw.println("    ...");
                        break;
                    }
                }
            }
        }
    }

    void loadDefaultApprovedServices(int userId) {
@@ -5928,17 +5944,7 @@ public class NotificationManagerService extends SystemService {
                            + mPreferencesHelper.shouldHideSilentStatusIcons());
                }
                pw.println("  mArchive=" + mArchive.toString());
                Iterator<Pair<StatusBarNotification, Integer>> iter = mArchive.descendingIterator();
                int j=0;
                while (iter.hasNext()) {
                    final StatusBarNotification sbn = iter.next().first;
                    if (filter != null && !filter.matches(sbn)) continue;
                    pw.println("    " + sbn);
                    if (++j >= 5) {
                        if (iter.hasNext()) pw.println("    ...");
                        break;
                    }
                }
                mArchive.dumpImpl(pw, filter);

                if (!zenOnly) {
                    N = mEnqueuedNotifications.size();