Loading services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java +224 −0 Original line number Diff line number Diff line Loading @@ -830,6 +830,77 @@ public class NotificationManagerServiceTest extends NotificationTestCase { assertEquals(0, mNotificationManagerService.getNotificationRecordCount()); } @Test public void testCancelAllCancelNotificationsFromListener_ForegroundServiceFlag() throws Exception { final NotificationRecord parent = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); final NotificationRecord child = generateNotificationRecord( mTestNotificationChannel, 2, "group", false); final NotificationRecord child2 = generateNotificationRecord( mTestNotificationChannel, 3, "group", false); child2.getNotification().flags |= Notification.FLAG_FOREGROUND_SERVICE; final NotificationRecord newGroup = generateNotificationRecord( mTestNotificationChannel, 4, "group2", false); mNotificationManagerService.addNotification(parent); mNotificationManagerService.addNotification(child); mNotificationManagerService.addNotification(child2); mNotificationManagerService.addNotification(newGroup); mNotificationManagerService.getBinderService().cancelNotificationsFromListener(null, null); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(parent.sbn.getPackageName()); assertEquals(0, notifs.length); } @Test public void testCancelAllCancelNotificationsFromListener_ForegroundServiceFlagWithParameter() throws Exception { final NotificationRecord parent = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); final NotificationRecord child = generateNotificationRecord( mTestNotificationChannel, 2, "group", false); final NotificationRecord child2 = generateNotificationRecord( mTestNotificationChannel, 3, "group", false); child2.getNotification().flags |= Notification.FLAG_FOREGROUND_SERVICE; final NotificationRecord newGroup = generateNotificationRecord( mTestNotificationChannel, 4, "group2", false); mNotificationManagerService.addNotification(parent); mNotificationManagerService.addNotification(child); mNotificationManagerService.addNotification(child2); mNotificationManagerService.addNotification(newGroup); String[] keys = {parent.sbn.getKey(), child.sbn.getKey(), child2.sbn.getKey(), newGroup.sbn.getKey()}; mNotificationManagerService.getBinderService().cancelNotificationsFromListener(null, keys); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(parent.sbn.getPackageName()); assertEquals(1, notifs.length); } @Test public void testUserInitiatedCancelAllWithGroup_ForegroundServiceFlag() throws Exception { final NotificationRecord parent = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); final NotificationRecord child = generateNotificationRecord( mTestNotificationChannel, 2, "group", false); final NotificationRecord child2 = generateNotificationRecord( mTestNotificationChannel, 3, "group", false); child2.getNotification().flags |= Notification.FLAG_FOREGROUND_SERVICE; final NotificationRecord newGroup = generateNotificationRecord( mTestNotificationChannel, 4, "group2", false); mNotificationManagerService.addNotification(parent); mNotificationManagerService.addNotification(child); mNotificationManagerService.addNotification(child2); mNotificationManagerService.addNotification(newGroup); mNotificationManagerService.mNotificationDelegate.onClearAll(mUid, Binder.getCallingPid(), parent.getUserId()); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(parent.sbn.getPackageName()); assertEquals(0, notifs.length); } @Test public void testFindGroupNotificationsLocked() throws Exception { // make sure the same notification can be found in both lists and returned Loading Loading @@ -1692,4 +1763,157 @@ public class NotificationManagerServiceTest extends NotificationTestCase { preOPkg, NotificationChannel.DEFAULT_CHANNEL_ID); assertEquals(IMPORTANCE_UNSPECIFIED, defaultChannel.getImportance()); } @Test public void testCancelAllNotifications_CancelsNoClearFlagOnGoing() throws Exception { final NotificationRecord notif = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); notif.getNotification().flags |= Notification.FLAG_NO_CLEAR; mNotificationManagerService.addNotification(notif); mNotificationManagerService.cancelAllNotificationsInt(mUid, 0, PKG, null, 0, Notification.FLAG_ONGOING_EVENT, true, notif.getUserId(), 0, null); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(notif.sbn.getPackageName()); assertEquals(0, notifs.length); } @Test public void testCancelAllCancelNotificationsFromListener_NoClearFlagWithParameter() throws Exception { final NotificationRecord parent = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); final NotificationRecord child = generateNotificationRecord( mTestNotificationChannel, 2, "group", false); final NotificationRecord child2 = generateNotificationRecord( mTestNotificationChannel, 3, "group", false); child2.getNotification().flags |= Notification.FLAG_NO_CLEAR; final NotificationRecord newGroup = generateNotificationRecord( mTestNotificationChannel, 4, "group2", false); mNotificationManagerService.addNotification(parent); mNotificationManagerService.addNotification(child); mNotificationManagerService.addNotification(child2); mNotificationManagerService.addNotification(newGroup); String[] keys = {parent.sbn.getKey(), child.sbn.getKey(), child2.sbn.getKey(), newGroup.sbn.getKey()}; mNotificationManagerService.getBinderService().cancelNotificationsFromListener(null, keys); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(parent.sbn.getPackageName()); assertEquals(0, notifs.length); } @Test public void testAppInitiatedCancelAllNotifications_CancelsOnGoingFlag() throws Exception { final StatusBarNotification sbn = generateNotificationRecord(null).sbn; sbn.getNotification().flags |= Notification.FLAG_ONGOING_EVENT; mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag", sbn.getId(), sbn.getNotification(), sbn.getUserId()); mBinderService.cancelAllNotifications(PKG, sbn.getUserId()); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(sbn.getPackageName()); assertEquals(0, notifs.length); } @Test public void testCancelAllNotifications_CancelsOnGoingFlag() throws Exception { final NotificationRecord notif = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); notif.getNotification().flags |= Notification.FLAG_ONGOING_EVENT; mNotificationManagerService.addNotification(notif); mNotificationManagerService.cancelAllNotificationsInt(mUid, 0, PKG, null, 0, 0, true, notif.getUserId(), 0, null); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(notif.sbn.getPackageName()); assertEquals(0, notifs.length); } @Test public void testUserInitiatedCancelAllOnClearAll_OnGoingFlag() throws Exception { final NotificationRecord notif = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); notif.getNotification().flags |= Notification.FLAG_ONGOING_EVENT; mNotificationManagerService.addNotification(notif); mNotificationManagerService.mNotificationDelegate.onClearAll(mUid, Binder.getCallingPid(), notif.getUserId()); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(notif.sbn.getPackageName()); assertEquals(1, notifs.length); } @Test public void testCancelAllCancelNotificationsFromListener_OnGoingFlag() throws Exception { final NotificationRecord parent = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); final NotificationRecord child = generateNotificationRecord( mTestNotificationChannel, 2, "group", false); final NotificationRecord child2 = generateNotificationRecord( mTestNotificationChannel, 3, "group", false); child2.getNotification().flags |= Notification.FLAG_ONGOING_EVENT; final NotificationRecord newGroup = generateNotificationRecord( mTestNotificationChannel, 4, "group2", false); mNotificationManagerService.addNotification(parent); mNotificationManagerService.addNotification(child); mNotificationManagerService.addNotification(child2); mNotificationManagerService.addNotification(newGroup); mNotificationManagerService.getBinderService().cancelNotificationsFromListener(null, null); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(parent.sbn.getPackageName()); assertEquals(1, notifs.length); } @Test public void testCancelAllCancelNotificationsFromListener_OnGoingFlagWithParameter() throws Exception { final NotificationRecord parent = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); final NotificationRecord child = generateNotificationRecord( mTestNotificationChannel, 2, "group", false); final NotificationRecord child2 = generateNotificationRecord( mTestNotificationChannel, 3, "group", false); child2.getNotification().flags |= Notification.FLAG_ONGOING_EVENT; final NotificationRecord newGroup = generateNotificationRecord( mTestNotificationChannel, 4, "group2", false); mNotificationManagerService.addNotification(parent); mNotificationManagerService.addNotification(child); mNotificationManagerService.addNotification(child2); mNotificationManagerService.addNotification(newGroup); String[] keys = {parent.sbn.getKey(), child.sbn.getKey(), child2.sbn.getKey(), newGroup.sbn.getKey()}; mNotificationManagerService.getBinderService().cancelNotificationsFromListener(null, keys); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(parent.sbn.getPackageName()); // Flags aren't checked in the cancel children call, // so all of the notifications are canceled (expected value is 0) assertEquals(0, notifs.length); } @Test public void testUserInitiatedCancelAllWithGroup_OnGoingFlag() throws Exception { final NotificationRecord parent = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); final NotificationRecord child = generateNotificationRecord( mTestNotificationChannel, 2, "group", false); final NotificationRecord child2 = generateNotificationRecord( mTestNotificationChannel, 3, "group", false); child2.getNotification().flags |= Notification.FLAG_ONGOING_EVENT; final NotificationRecord newGroup = generateNotificationRecord( mTestNotificationChannel, 4, "group2", false); mNotificationManagerService.addNotification(parent); mNotificationManagerService.addNotification(child); mNotificationManagerService.addNotification(child2); mNotificationManagerService.addNotification(newGroup); mNotificationManagerService.mNotificationDelegate.onClearAll(mUid, Binder.getCallingPid(), parent.getUserId()); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(parent.sbn.getPackageName()); assertEquals(1, notifs.length); } } Loading
services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java +224 −0 Original line number Diff line number Diff line Loading @@ -830,6 +830,77 @@ public class NotificationManagerServiceTest extends NotificationTestCase { assertEquals(0, mNotificationManagerService.getNotificationRecordCount()); } @Test public void testCancelAllCancelNotificationsFromListener_ForegroundServiceFlag() throws Exception { final NotificationRecord parent = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); final NotificationRecord child = generateNotificationRecord( mTestNotificationChannel, 2, "group", false); final NotificationRecord child2 = generateNotificationRecord( mTestNotificationChannel, 3, "group", false); child2.getNotification().flags |= Notification.FLAG_FOREGROUND_SERVICE; final NotificationRecord newGroup = generateNotificationRecord( mTestNotificationChannel, 4, "group2", false); mNotificationManagerService.addNotification(parent); mNotificationManagerService.addNotification(child); mNotificationManagerService.addNotification(child2); mNotificationManagerService.addNotification(newGroup); mNotificationManagerService.getBinderService().cancelNotificationsFromListener(null, null); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(parent.sbn.getPackageName()); assertEquals(0, notifs.length); } @Test public void testCancelAllCancelNotificationsFromListener_ForegroundServiceFlagWithParameter() throws Exception { final NotificationRecord parent = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); final NotificationRecord child = generateNotificationRecord( mTestNotificationChannel, 2, "group", false); final NotificationRecord child2 = generateNotificationRecord( mTestNotificationChannel, 3, "group", false); child2.getNotification().flags |= Notification.FLAG_FOREGROUND_SERVICE; final NotificationRecord newGroup = generateNotificationRecord( mTestNotificationChannel, 4, "group2", false); mNotificationManagerService.addNotification(parent); mNotificationManagerService.addNotification(child); mNotificationManagerService.addNotification(child2); mNotificationManagerService.addNotification(newGroup); String[] keys = {parent.sbn.getKey(), child.sbn.getKey(), child2.sbn.getKey(), newGroup.sbn.getKey()}; mNotificationManagerService.getBinderService().cancelNotificationsFromListener(null, keys); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(parent.sbn.getPackageName()); assertEquals(1, notifs.length); } @Test public void testUserInitiatedCancelAllWithGroup_ForegroundServiceFlag() throws Exception { final NotificationRecord parent = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); final NotificationRecord child = generateNotificationRecord( mTestNotificationChannel, 2, "group", false); final NotificationRecord child2 = generateNotificationRecord( mTestNotificationChannel, 3, "group", false); child2.getNotification().flags |= Notification.FLAG_FOREGROUND_SERVICE; final NotificationRecord newGroup = generateNotificationRecord( mTestNotificationChannel, 4, "group2", false); mNotificationManagerService.addNotification(parent); mNotificationManagerService.addNotification(child); mNotificationManagerService.addNotification(child2); mNotificationManagerService.addNotification(newGroup); mNotificationManagerService.mNotificationDelegate.onClearAll(mUid, Binder.getCallingPid(), parent.getUserId()); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(parent.sbn.getPackageName()); assertEquals(0, notifs.length); } @Test public void testFindGroupNotificationsLocked() throws Exception { // make sure the same notification can be found in both lists and returned Loading Loading @@ -1692,4 +1763,157 @@ public class NotificationManagerServiceTest extends NotificationTestCase { preOPkg, NotificationChannel.DEFAULT_CHANNEL_ID); assertEquals(IMPORTANCE_UNSPECIFIED, defaultChannel.getImportance()); } @Test public void testCancelAllNotifications_CancelsNoClearFlagOnGoing() throws Exception { final NotificationRecord notif = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); notif.getNotification().flags |= Notification.FLAG_NO_CLEAR; mNotificationManagerService.addNotification(notif); mNotificationManagerService.cancelAllNotificationsInt(mUid, 0, PKG, null, 0, Notification.FLAG_ONGOING_EVENT, true, notif.getUserId(), 0, null); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(notif.sbn.getPackageName()); assertEquals(0, notifs.length); } @Test public void testCancelAllCancelNotificationsFromListener_NoClearFlagWithParameter() throws Exception { final NotificationRecord parent = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); final NotificationRecord child = generateNotificationRecord( mTestNotificationChannel, 2, "group", false); final NotificationRecord child2 = generateNotificationRecord( mTestNotificationChannel, 3, "group", false); child2.getNotification().flags |= Notification.FLAG_NO_CLEAR; final NotificationRecord newGroup = generateNotificationRecord( mTestNotificationChannel, 4, "group2", false); mNotificationManagerService.addNotification(parent); mNotificationManagerService.addNotification(child); mNotificationManagerService.addNotification(child2); mNotificationManagerService.addNotification(newGroup); String[] keys = {parent.sbn.getKey(), child.sbn.getKey(), child2.sbn.getKey(), newGroup.sbn.getKey()}; mNotificationManagerService.getBinderService().cancelNotificationsFromListener(null, keys); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(parent.sbn.getPackageName()); assertEquals(0, notifs.length); } @Test public void testAppInitiatedCancelAllNotifications_CancelsOnGoingFlag() throws Exception { final StatusBarNotification sbn = generateNotificationRecord(null).sbn; sbn.getNotification().flags |= Notification.FLAG_ONGOING_EVENT; mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag", sbn.getId(), sbn.getNotification(), sbn.getUserId()); mBinderService.cancelAllNotifications(PKG, sbn.getUserId()); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(sbn.getPackageName()); assertEquals(0, notifs.length); } @Test public void testCancelAllNotifications_CancelsOnGoingFlag() throws Exception { final NotificationRecord notif = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); notif.getNotification().flags |= Notification.FLAG_ONGOING_EVENT; mNotificationManagerService.addNotification(notif); mNotificationManagerService.cancelAllNotificationsInt(mUid, 0, PKG, null, 0, 0, true, notif.getUserId(), 0, null); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(notif.sbn.getPackageName()); assertEquals(0, notifs.length); } @Test public void testUserInitiatedCancelAllOnClearAll_OnGoingFlag() throws Exception { final NotificationRecord notif = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); notif.getNotification().flags |= Notification.FLAG_ONGOING_EVENT; mNotificationManagerService.addNotification(notif); mNotificationManagerService.mNotificationDelegate.onClearAll(mUid, Binder.getCallingPid(), notif.getUserId()); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(notif.sbn.getPackageName()); assertEquals(1, notifs.length); } @Test public void testCancelAllCancelNotificationsFromListener_OnGoingFlag() throws Exception { final NotificationRecord parent = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); final NotificationRecord child = generateNotificationRecord( mTestNotificationChannel, 2, "group", false); final NotificationRecord child2 = generateNotificationRecord( mTestNotificationChannel, 3, "group", false); child2.getNotification().flags |= Notification.FLAG_ONGOING_EVENT; final NotificationRecord newGroup = generateNotificationRecord( mTestNotificationChannel, 4, "group2", false); mNotificationManagerService.addNotification(parent); mNotificationManagerService.addNotification(child); mNotificationManagerService.addNotification(child2); mNotificationManagerService.addNotification(newGroup); mNotificationManagerService.getBinderService().cancelNotificationsFromListener(null, null); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(parent.sbn.getPackageName()); assertEquals(1, notifs.length); } @Test public void testCancelAllCancelNotificationsFromListener_OnGoingFlagWithParameter() throws Exception { final NotificationRecord parent = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); final NotificationRecord child = generateNotificationRecord( mTestNotificationChannel, 2, "group", false); final NotificationRecord child2 = generateNotificationRecord( mTestNotificationChannel, 3, "group", false); child2.getNotification().flags |= Notification.FLAG_ONGOING_EVENT; final NotificationRecord newGroup = generateNotificationRecord( mTestNotificationChannel, 4, "group2", false); mNotificationManagerService.addNotification(parent); mNotificationManagerService.addNotification(child); mNotificationManagerService.addNotification(child2); mNotificationManagerService.addNotification(newGroup); String[] keys = {parent.sbn.getKey(), child.sbn.getKey(), child2.sbn.getKey(), newGroup.sbn.getKey()}; mNotificationManagerService.getBinderService().cancelNotificationsFromListener(null, keys); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(parent.sbn.getPackageName()); // Flags aren't checked in the cancel children call, // so all of the notifications are canceled (expected value is 0) assertEquals(0, notifs.length); } @Test public void testUserInitiatedCancelAllWithGroup_OnGoingFlag() throws Exception { final NotificationRecord parent = generateNotificationRecord( mTestNotificationChannel, 1, "group", true); final NotificationRecord child = generateNotificationRecord( mTestNotificationChannel, 2, "group", false); final NotificationRecord child2 = generateNotificationRecord( mTestNotificationChannel, 3, "group", false); child2.getNotification().flags |= Notification.FLAG_ONGOING_EVENT; final NotificationRecord newGroup = generateNotificationRecord( mTestNotificationChannel, 4, "group2", false); mNotificationManagerService.addNotification(parent); mNotificationManagerService.addNotification(child); mNotificationManagerService.addNotification(child2); mNotificationManagerService.addNotification(newGroup); mNotificationManagerService.mNotificationDelegate.onClearAll(mUid, Binder.getCallingPid(), parent.getUserId()); waitForIdle(); StatusBarNotification[] notifs = mBinderService.getActiveNotifications(parent.sbn.getPackageName()); assertEquals(1, notifs.length); } }