Merge "Add Notification Flag behavior test"
This commit is contained in:
@@ -830,6 +830,77 @@ public class NotificationManagerServiceTest extends NotificationTestCase {
|
|||||||
assertEquals(0, mNotificationManagerService.getNotificationRecordCount());
|
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
|
@Test
|
||||||
public void testFindGroupNotificationsLocked() throws Exception {
|
public void testFindGroupNotificationsLocked() throws Exception {
|
||||||
// make sure the same notification can be found in both lists and returned
|
// make sure the same notification can be found in both lists and returned
|
||||||
@@ -1692,4 +1763,157 @@ public class NotificationManagerServiceTest extends NotificationTestCase {
|
|||||||
preOPkg, NotificationChannel.DEFAULT_CHANNEL_ID);
|
preOPkg, NotificationChannel.DEFAULT_CHANNEL_ID);
|
||||||
assertEquals(IMPORTANCE_UNSPECIFIED, defaultChannel.getImportance());
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user