Merge "Revert "Don't readd pending notifs to NEM's allNotifs list"" into rvc-dev am: a1ad29da2d
Change-Id: Id4b3e6fc2b1ae99dbc68256aafd4749a1a9d9ffe
This commit is contained in:
@@ -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");
|
||||
@@ -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);
|
||||
@@ -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();
|
||||
@@ -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);
|
||||
@@ -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);
|
||||
@@ -502,7 +497,6 @@ public class NotificationEntryManager implements
|
||||
for (NotifCollectionListener listener : mNotifCollectionListeners) {
|
||||
listener.onEntryCleanUp(entry);
|
||||
}
|
||||
mLeakDetector.trackGarbage(entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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(
|
||||
notification,
|
||||
ranking,
|
||||
mFgsFeatureController.isForegroundServiceDismissalEnabled(),
|
||||
SystemClock.uptimeMillis());
|
||||
mAllNotifications.add(entry);
|
||||
mLeakDetector.trackInstance(entry);
|
||||
}
|
||||
|
||||
abortExistingInflation(key, "addNotification");
|
||||
|
||||
NotificationEntry entry = new NotificationEntry(
|
||||
notification,
|
||||
ranking,
|
||||
mFgsFeatureController.isForegroundServiceDismissalEnabled(),
|
||||
SystemClock.uptimeMillis());
|
||||
for (NotifCollectionListener listener : mNotifCollectionListeners) {
|
||||
listener.onEntryBind(entry, notification);
|
||||
}
|
||||
mAllNotifications.add(entry);
|
||||
|
||||
mLeakDetector.trackInstance(entry);
|
||||
|
||||
for (NotifCollectionListener listener : mNotifCollectionListeners) {
|
||||
listener.onEntryInit(entry);
|
||||
@@ -594,6 +581,7 @@ public class NotificationEntryManager implements
|
||||
mInflationCallback);
|
||||
}
|
||||
|
||||
abortExistingInflation(key, "addNotification");
|
||||
mPendingNotifications.put(key, entry);
|
||||
mLogger.logNotifAdded(entry.getKey());
|
||||
for (NotificationEntryListener listener : mNotificationEntryListeners) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user