Merge "Remove uninflated notifs from allNotifs list" into rvc-dev

This commit is contained in:
Beverly Tai
2020-05-08 13:17:43 +00:00
committed by Android (Google) Code Review
2 changed files with 28 additions and 0 deletions

View File

@@ -440,6 +440,10 @@ public class NotificationEntryManager implements
mLogger.logLifetimeExtended(key, extender.getClass().getName(), "pending");
}
}
if (!lifetimeExtended) {
// At this point, we are guaranteed the notification will be removed
mAllNotifications.remove(pendingEntry);
}
}
}

View File

@@ -26,6 +26,7 @@ import static junit.framework.Assert.assertNull;
import static junit.framework.Assert.assertTrue;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -93,6 +94,7 @@ import org.mockito.MockitoAnnotations;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Set;
@@ -260,6 +262,19 @@ public class NotificationEntryManagerTest extends SysuiTestCase {
assertNull(mEntryManager.getActiveNotificationUnfiltered(mSbn.getKey()));
}
@Test
public void testRemoveUninflatedNotification_removesNotificationFromAllNotifsList() {
// GIVEN an uninflated entry is added
mEntryManager.addNotification(mSbn, mRankingMap);
assertTrue(entriesContainKey(mEntryManager.getAllNotifs(), mSbn.getKey()));
// WHEN the uninflated entry is removed
mEntryManager.performRemoveNotification(mSbn, UNDEFINED_DISMISS_REASON);
// THEN the entry is still removed from the allNotifications list
assertFalse(entriesContainKey(mEntryManager.getAllNotifs(), mSbn.getKey()));
}
@Test
public void testRemoveNotification_onEntryRemoveNotFiredIfEntryDoesntExist() {
@@ -545,6 +560,15 @@ public class NotificationEntryManagerTest extends SysuiTestCase {
/* End annex */
private boolean entriesContainKey(Collection<NotificationEntry> entries, String key) {
for (NotificationEntry entry : entries) {
if (entry.getSbn().getKey().equals(key)) {
return true;
}
}
return false;
}
private Notification.Action createAction() {
return new Notification.Action.Builder(
Icon.createWithResource(getContext(), android.R.drawable.sym_def_app_icon),