Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java +21 −33 Original line number Diff line number Diff line Loading @@ -151,16 +151,6 @@ public class NotificationEntryManager implements @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("NotificationEntryManager state:"); pw.println(" mAllNotifications="); if (mAllNotifications.size() == 0) { pw.println("null"); } else { int i = 0; for (NotificationEntry entry : mAllNotifications) { dumpEntry(pw, " ", i, entry); i++; } } pw.print(" mPendingNotifications="); if (mPendingNotifications.size() == 0) { pw.println("null"); Loading Loading @@ -360,8 +350,8 @@ public class NotificationEntryManager implements private final NotificationHandler mNotifListener = new NotificationHandler() { @Override public void onNotificationPosted(StatusBarNotification sbn, RankingMap rankingMap) { final boolean isUpdateToInflatedNotif = mActiveNotifications.containsKey(sbn.getKey()); if (isUpdateToInflatedNotif) { final boolean isUpdate = mActiveNotifications.containsKey(sbn.getKey()); if (isUpdate) { updateNotification(sbn, rankingMap); } else { addNotification(sbn, rankingMap); Loading Loading @@ -452,12 +442,16 @@ public class NotificationEntryManager implements } if (!lifetimeExtended) { // At this point, we are guaranteed the notification will be removed abortExistingInflation(key, "removeNotification"); mAllNotifications.remove(pendingEntry); mLeakDetector.trackGarbage(pendingEntry); } } } else { } if (!lifetimeExtended) { abortExistingInflation(key, "removeNotification"); } if (entry != null) { // If a manager needs to keep the notification around for whatever reason, we // keep the notification boolean entryDismissed = entry.isRowDismissed(); Loading @@ -475,8 +469,6 @@ public class NotificationEntryManager implements if (!lifetimeExtended) { // At this point, we are guaranteed the notification will be removed abortExistingInflation(key, "removeNotification"); mAllNotifications.remove(entry); // Ensure any managers keeping the lifetime extended stop managing the entry cancelLifetimeExtension(entry); Loading @@ -485,10 +477,13 @@ public class NotificationEntryManager implements entry.removeRow(); } mAllNotifications.remove(entry); // Let's remove the children if this was a summary handleGroupSummaryRemoved(key); removeVisibleNotification(key); updateNotifications("removeNotificationInternal"); mLeakDetector.trackGarbage(entry); removedByUser |= entryDismissed; mLogger.logNotifRemoved(entry.getKey(), removedByUser); Loading @@ -502,7 +497,6 @@ public class NotificationEntryManager implements for (NotifCollectionListener listener : mNotifCollectionListeners) { listener.onEntryCleanUp(entry); } mLeakDetector.trackGarbage(entry); } } } Loading Loading @@ -562,24 +556,17 @@ public class NotificationEntryManager implements Ranking ranking = new Ranking(); rankingMap.getRanking(key, ranking); NotificationEntry entry = mPendingNotifications.get(key); if (entry != null) { entry.setSbn(notification); } else { entry = new NotificationEntry( NotificationEntry entry = new NotificationEntry( notification, ranking, mFgsFeatureController.isForegroundServiceDismissalEnabled(), SystemClock.uptimeMillis()); mAllNotifications.add(entry); mLeakDetector.trackInstance(entry); } abortExistingInflation(key, "addNotification"); for (NotifCollectionListener listener : mNotifCollectionListeners) { listener.onEntryBind(entry, notification); } mAllNotifications.add(entry); mLeakDetector.trackInstance(entry); for (NotifCollectionListener listener : mNotifCollectionListeners) { listener.onEntryInit(entry); Loading @@ -594,6 +581,7 @@ public class NotificationEntryManager implements mInflationCallback); } abortExistingInflation(key, "addNotification"); mPendingNotifications.put(key, entry); mLogger.logNotifAdded(entry.getKey()); for (NotificationEntryListener listener : mNotificationEntryListeners) { Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java +0 −22 Original line number Diff line number Diff line Loading @@ -209,28 +209,6 @@ public class NotificationEntryManagerTest extends SysuiTestCase { setUserSentiment(mSbn.getKey(), Ranking.USER_SENTIMENT_NEUTRAL); } @Test public void testAddNotification_noDuplicateEntriesCreated() { // GIVEN a notification has been added mEntryManager.addNotification(mSbn, mRankingMap); // WHEN the same notification is added multiple times before the previous entry (with // the same key) didn't finish inflating mEntryManager.addNotification(mSbn, mRankingMap); mEntryManager.addNotification(mSbn, mRankingMap); mEntryManager.addNotification(mSbn, mRankingMap); // THEN getAllNotifs() only contains exactly one notification with this key int count = 0; for (NotificationEntry entry : mEntryManager.getAllNotifs()) { if (entry.getKey().equals(mSbn.getKey())) { count++; } } assertEquals("Should only be one entry with key=" + mSbn.getKey() + " in mAllNotifs. " + "Instead there are " + count, 1, count); } @Test public void testAddNotification_setsUserSentiment() { mEntryManager.addNotification(mSbn, mRankingMap); Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java +21 −33 Original line number Diff line number Diff line Loading @@ -151,16 +151,6 @@ public class NotificationEntryManager implements @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("NotificationEntryManager state:"); pw.println(" mAllNotifications="); if (mAllNotifications.size() == 0) { pw.println("null"); } else { int i = 0; for (NotificationEntry entry : mAllNotifications) { dumpEntry(pw, " ", i, entry); i++; } } pw.print(" mPendingNotifications="); if (mPendingNotifications.size() == 0) { pw.println("null"); Loading Loading @@ -360,8 +350,8 @@ public class NotificationEntryManager implements private final NotificationHandler mNotifListener = new NotificationHandler() { @Override public void onNotificationPosted(StatusBarNotification sbn, RankingMap rankingMap) { final boolean isUpdateToInflatedNotif = mActiveNotifications.containsKey(sbn.getKey()); if (isUpdateToInflatedNotif) { final boolean isUpdate = mActiveNotifications.containsKey(sbn.getKey()); if (isUpdate) { updateNotification(sbn, rankingMap); } else { addNotification(sbn, rankingMap); Loading Loading @@ -452,12 +442,16 @@ public class NotificationEntryManager implements } if (!lifetimeExtended) { // At this point, we are guaranteed the notification will be removed abortExistingInflation(key, "removeNotification"); mAllNotifications.remove(pendingEntry); mLeakDetector.trackGarbage(pendingEntry); } } } else { } if (!lifetimeExtended) { abortExistingInflation(key, "removeNotification"); } if (entry != null) { // If a manager needs to keep the notification around for whatever reason, we // keep the notification boolean entryDismissed = entry.isRowDismissed(); Loading @@ -475,8 +469,6 @@ public class NotificationEntryManager implements if (!lifetimeExtended) { // At this point, we are guaranteed the notification will be removed abortExistingInflation(key, "removeNotification"); mAllNotifications.remove(entry); // Ensure any managers keeping the lifetime extended stop managing the entry cancelLifetimeExtension(entry); Loading @@ -485,10 +477,13 @@ public class NotificationEntryManager implements entry.removeRow(); } mAllNotifications.remove(entry); // Let's remove the children if this was a summary handleGroupSummaryRemoved(key); removeVisibleNotification(key); updateNotifications("removeNotificationInternal"); mLeakDetector.trackGarbage(entry); removedByUser |= entryDismissed; mLogger.logNotifRemoved(entry.getKey(), removedByUser); Loading @@ -502,7 +497,6 @@ public class NotificationEntryManager implements for (NotifCollectionListener listener : mNotifCollectionListeners) { listener.onEntryCleanUp(entry); } mLeakDetector.trackGarbage(entry); } } } Loading Loading @@ -562,24 +556,17 @@ public class NotificationEntryManager implements Ranking ranking = new Ranking(); rankingMap.getRanking(key, ranking); NotificationEntry entry = mPendingNotifications.get(key); if (entry != null) { entry.setSbn(notification); } else { entry = new NotificationEntry( NotificationEntry entry = new NotificationEntry( notification, ranking, mFgsFeatureController.isForegroundServiceDismissalEnabled(), SystemClock.uptimeMillis()); mAllNotifications.add(entry); mLeakDetector.trackInstance(entry); } abortExistingInflation(key, "addNotification"); for (NotifCollectionListener listener : mNotifCollectionListeners) { listener.onEntryBind(entry, notification); } mAllNotifications.add(entry); mLeakDetector.trackInstance(entry); for (NotifCollectionListener listener : mNotifCollectionListeners) { listener.onEntryInit(entry); Loading @@ -594,6 +581,7 @@ public class NotificationEntryManager implements mInflationCallback); } abortExistingInflation(key, "addNotification"); mPendingNotifications.put(key, entry); mLogger.logNotifAdded(entry.getKey()); for (NotificationEntryListener listener : mNotificationEntryListeners) { Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java +0 −22 Original line number Diff line number Diff line Loading @@ -209,28 +209,6 @@ public class NotificationEntryManagerTest extends SysuiTestCase { setUserSentiment(mSbn.getKey(), Ranking.USER_SENTIMENT_NEUTRAL); } @Test public void testAddNotification_noDuplicateEntriesCreated() { // GIVEN a notification has been added mEntryManager.addNotification(mSbn, mRankingMap); // WHEN the same notification is added multiple times before the previous entry (with // the same key) didn't finish inflating mEntryManager.addNotification(mSbn, mRankingMap); mEntryManager.addNotification(mSbn, mRankingMap); mEntryManager.addNotification(mSbn, mRankingMap); // THEN getAllNotifs() only contains exactly one notification with this key int count = 0; for (NotificationEntry entry : mEntryManager.getAllNotifs()) { if (entry.getKey().equals(mSbn.getKey())) { count++; } } assertEquals("Should only be one entry with key=" + mSbn.getKey() + " in mAllNotifs. " + "Instead there are " + count, 1, count); } @Test public void testAddNotification_setsUserSentiment() { mEntryManager.addNotification(mSbn, mRankingMap); Loading