Loading services/core/java/com/android/server/notification/SnoozeHelper.java +8 −6 Original line number Diff line number Diff line Loading @@ -129,7 +129,7 @@ public final class SnoozeHelper { protected Long getSnoozeTimeForUnpostedNotification(int userId, String pkg, String key) { Long time = null; synchronized (mLock) { time = mPersistedSnoozedNotifications.get(key); time = mPersistedSnoozedNotifications.get(getTrimmedString(key)); } if (time == null) { time = 0L; Loading @@ -139,7 +139,7 @@ public final class SnoozeHelper { protected String getSnoozeContextForUnpostedNotification(int userId, String pkg, String key) { synchronized (mLock) { return mPersistedSnoozedNotificationsWithContext.get(key); return mPersistedSnoozedNotificationsWithContext.get(getTrimmedString(key)); } } Loading Loading @@ -364,8 +364,9 @@ public final class SnoozeHelper { final NotificationRecord record = mSnoozedNotifications.valueAt(i); if (record.getUserId() == userId && record.getSbn().getPackageName().equals(pkg)) { mSnoozedNotifications.removeAt(i); mPersistedSnoozedNotificationsWithContext.remove(record.getKey()); mPersistedSnoozedNotifications.remove(record.getKey()); String trimmedKey = getTrimmedString(record.getKey()); mPersistedSnoozedNotificationsWithContext.remove(trimmedKey); mPersistedSnoozedNotifications.remove(trimmedKey); Runnable runnable = () -> { final PendingIntent pi = createPendingIntent(record.getKey()); mAm.cancel(pi); Loading @@ -386,8 +387,9 @@ public final class SnoozeHelper { final NotificationRecord record = mSnoozedNotifications.valueAt(i); if (record.getUserId() == userId) { mSnoozedNotifications.removeAt(i); mPersistedSnoozedNotificationsWithContext.remove(record.getKey()); mPersistedSnoozedNotifications.remove(record.getKey()); String trimmedKey = getTrimmedString(record.getKey()); mPersistedSnoozedNotificationsWithContext.remove(trimmedKey); mPersistedSnoozedNotifications.remove(trimmedKey); Runnable runnable = () -> { final PendingIntent pi = createPendingIntent(record.getKey()); Loading services/tests/uiservicestests/src/com/android/server/notification/SnoozeHelperTest.java +29 −12 Original line number Diff line number Diff line Loading @@ -234,7 +234,7 @@ public class SnoozeHelperTest extends UiServiceTestCase { } @Test public void testScheduleRepostsForLongTagPersistedNotification() throws Exception { public void testLongTagPersistedNotification() throws Exception { String longTag = "A".repeat(66000); NotificationRecord r = getNotificationRecord("pkg", 1, longTag, UserHandle.SYSTEM); mSnoozeHelper.snooze(r, 0); Loading Loading @@ -612,7 +612,8 @@ public class SnoozeHelperTest extends UiServiceTestCase { public void testClearData_userPackage() { // snooze 2 from same package NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM); NotificationRecord r2 = getNotificationRecord("pkg", 2, "two", UserHandle.SYSTEM); NotificationRecord r2 = getNotificationRecord("pkg", 2, "two" + "2".repeat(66000), UserHandle.SYSTEM); // include notif with very long tag mSnoozeHelper.snooze(r, 1000); mSnoozeHelper.snooze(r2, 1000); assertTrue(mSnoozeHelper.isSnoozed( Loading @@ -634,11 +635,14 @@ public class SnoozeHelperTest extends UiServiceTestCase { @Test public void testClearData_user() { // snooze 2 from same package // snooze 2 from same package, including notifs with long tag NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM); NotificationRecord r2 = getNotificationRecord("pkg2", 2, "two", UserHandle.SYSTEM); NotificationRecord r3 = getNotificationRecord("pkg2", 3, "three", UserHandle.SYSTEM); NotificationRecord r4 = getNotificationRecord("pkg", 2, "two", UserHandle.ALL); NotificationRecord r2 = getNotificationRecord("pkg2", 2, "two" + "2".repeat(66000), UserHandle.SYSTEM); NotificationRecord r3 = getNotificationRecord("pkg2", 3, "three", UserHandle.SYSTEM); NotificationRecord r4 = getNotificationRecord("pkg", 2, "two" + "2".repeat(66000), UserHandle.ALL); mSnoozeHelper.snooze(r, 1000); mSnoozeHelper.snooze(r2, 1000); mSnoozeHelper.snooze(r3, "until"); Loading @@ -653,6 +657,19 @@ public class SnoozeHelperTest extends UiServiceTestCase { assertTrue(mSnoozeHelper.isSnoozed( UserHandle.USER_ALL, r4.getSbn().getPackageName(), r4.getKey())); assertFalse(0L == mSnoozeHelper.getSnoozeTimeForUnpostedNotification( r.getUser().getIdentifier(), r.getSbn().getPackageName(), r.getSbn().getKey())); assertFalse(0L == mSnoozeHelper.getSnoozeTimeForUnpostedNotification( r2.getUser().getIdentifier(), r2.getSbn().getPackageName(), r2.getSbn().getKey())); assertNotNull(mSnoozeHelper.getSnoozeContextForUnpostedNotification( r3.getUser().getIdentifier(), r3.getSbn().getPackageName(), r3.getSbn().getKey())); assertNotNull(mSnoozeHelper.getSnoozeContextForUnpostedNotification( r4.getUser().getIdentifier(), r4.getSbn().getPackageName(), r4.getSbn().getKey())); // clear data mSnoozeHelper.clearData(UserHandle.USER_SYSTEM); Loading @@ -666,18 +683,18 @@ public class SnoozeHelperTest extends UiServiceTestCase { assertTrue(mSnoozeHelper.isSnoozed( UserHandle.USER_SYSTEM, r4.getSbn().getPackageName(), r4.getKey())); assertNull(mSnoozeHelper.getSnoozeContextForUnpostedNotification( r3.getUser().getIdentifier(), r3.getSbn().getPackageName(), r3.getSbn().getKey())); assertNotNull(mSnoozeHelper.getSnoozeContextForUnpostedNotification( r4.getUser().getIdentifier(), r4.getSbn().getPackageName(), r4.getSbn().getKey())); assertEquals(0L, mSnoozeHelper.getSnoozeTimeForUnpostedNotification( r.getUser().getIdentifier(), r.getSbn().getPackageName(), r.getSbn().getKey()).longValue()); assertEquals(0L, mSnoozeHelper.getSnoozeTimeForUnpostedNotification( r2.getUser().getIdentifier(), r2.getSbn().getPackageName(), r2.getSbn().getKey()).longValue()); assertNull(mSnoozeHelper.getSnoozeContextForUnpostedNotification( r3.getUser().getIdentifier(), r3.getSbn().getPackageName(), r3.getSbn().getKey())); assertNotNull(mSnoozeHelper.getSnoozeContextForUnpostedNotification( r4.getUser().getIdentifier(), r4.getSbn().getPackageName(), r4.getSbn().getKey())); // 2 for initial timed-snoozes, once each for canceling the USER_SYSTEM snoozes verify(mAm, times(5)).cancel(any(PendingIntent.class)); Loading Loading
services/core/java/com/android/server/notification/SnoozeHelper.java +8 −6 Original line number Diff line number Diff line Loading @@ -129,7 +129,7 @@ public final class SnoozeHelper { protected Long getSnoozeTimeForUnpostedNotification(int userId, String pkg, String key) { Long time = null; synchronized (mLock) { time = mPersistedSnoozedNotifications.get(key); time = mPersistedSnoozedNotifications.get(getTrimmedString(key)); } if (time == null) { time = 0L; Loading @@ -139,7 +139,7 @@ public final class SnoozeHelper { protected String getSnoozeContextForUnpostedNotification(int userId, String pkg, String key) { synchronized (mLock) { return mPersistedSnoozedNotificationsWithContext.get(key); return mPersistedSnoozedNotificationsWithContext.get(getTrimmedString(key)); } } Loading Loading @@ -364,8 +364,9 @@ public final class SnoozeHelper { final NotificationRecord record = mSnoozedNotifications.valueAt(i); if (record.getUserId() == userId && record.getSbn().getPackageName().equals(pkg)) { mSnoozedNotifications.removeAt(i); mPersistedSnoozedNotificationsWithContext.remove(record.getKey()); mPersistedSnoozedNotifications.remove(record.getKey()); String trimmedKey = getTrimmedString(record.getKey()); mPersistedSnoozedNotificationsWithContext.remove(trimmedKey); mPersistedSnoozedNotifications.remove(trimmedKey); Runnable runnable = () -> { final PendingIntent pi = createPendingIntent(record.getKey()); mAm.cancel(pi); Loading @@ -386,8 +387,9 @@ public final class SnoozeHelper { final NotificationRecord record = mSnoozedNotifications.valueAt(i); if (record.getUserId() == userId) { mSnoozedNotifications.removeAt(i); mPersistedSnoozedNotificationsWithContext.remove(record.getKey()); mPersistedSnoozedNotifications.remove(record.getKey()); String trimmedKey = getTrimmedString(record.getKey()); mPersistedSnoozedNotificationsWithContext.remove(trimmedKey); mPersistedSnoozedNotifications.remove(trimmedKey); Runnable runnable = () -> { final PendingIntent pi = createPendingIntent(record.getKey()); Loading
services/tests/uiservicestests/src/com/android/server/notification/SnoozeHelperTest.java +29 −12 Original line number Diff line number Diff line Loading @@ -234,7 +234,7 @@ public class SnoozeHelperTest extends UiServiceTestCase { } @Test public void testScheduleRepostsForLongTagPersistedNotification() throws Exception { public void testLongTagPersistedNotification() throws Exception { String longTag = "A".repeat(66000); NotificationRecord r = getNotificationRecord("pkg", 1, longTag, UserHandle.SYSTEM); mSnoozeHelper.snooze(r, 0); Loading Loading @@ -612,7 +612,8 @@ public class SnoozeHelperTest extends UiServiceTestCase { public void testClearData_userPackage() { // snooze 2 from same package NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM); NotificationRecord r2 = getNotificationRecord("pkg", 2, "two", UserHandle.SYSTEM); NotificationRecord r2 = getNotificationRecord("pkg", 2, "two" + "2".repeat(66000), UserHandle.SYSTEM); // include notif with very long tag mSnoozeHelper.snooze(r, 1000); mSnoozeHelper.snooze(r2, 1000); assertTrue(mSnoozeHelper.isSnoozed( Loading @@ -634,11 +635,14 @@ public class SnoozeHelperTest extends UiServiceTestCase { @Test public void testClearData_user() { // snooze 2 from same package // snooze 2 from same package, including notifs with long tag NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM); NotificationRecord r2 = getNotificationRecord("pkg2", 2, "two", UserHandle.SYSTEM); NotificationRecord r3 = getNotificationRecord("pkg2", 3, "three", UserHandle.SYSTEM); NotificationRecord r4 = getNotificationRecord("pkg", 2, "two", UserHandle.ALL); NotificationRecord r2 = getNotificationRecord("pkg2", 2, "two" + "2".repeat(66000), UserHandle.SYSTEM); NotificationRecord r3 = getNotificationRecord("pkg2", 3, "three", UserHandle.SYSTEM); NotificationRecord r4 = getNotificationRecord("pkg", 2, "two" + "2".repeat(66000), UserHandle.ALL); mSnoozeHelper.snooze(r, 1000); mSnoozeHelper.snooze(r2, 1000); mSnoozeHelper.snooze(r3, "until"); Loading @@ -653,6 +657,19 @@ public class SnoozeHelperTest extends UiServiceTestCase { assertTrue(mSnoozeHelper.isSnoozed( UserHandle.USER_ALL, r4.getSbn().getPackageName(), r4.getKey())); assertFalse(0L == mSnoozeHelper.getSnoozeTimeForUnpostedNotification( r.getUser().getIdentifier(), r.getSbn().getPackageName(), r.getSbn().getKey())); assertFalse(0L == mSnoozeHelper.getSnoozeTimeForUnpostedNotification( r2.getUser().getIdentifier(), r2.getSbn().getPackageName(), r2.getSbn().getKey())); assertNotNull(mSnoozeHelper.getSnoozeContextForUnpostedNotification( r3.getUser().getIdentifier(), r3.getSbn().getPackageName(), r3.getSbn().getKey())); assertNotNull(mSnoozeHelper.getSnoozeContextForUnpostedNotification( r4.getUser().getIdentifier(), r4.getSbn().getPackageName(), r4.getSbn().getKey())); // clear data mSnoozeHelper.clearData(UserHandle.USER_SYSTEM); Loading @@ -666,18 +683,18 @@ public class SnoozeHelperTest extends UiServiceTestCase { assertTrue(mSnoozeHelper.isSnoozed( UserHandle.USER_SYSTEM, r4.getSbn().getPackageName(), r4.getKey())); assertNull(mSnoozeHelper.getSnoozeContextForUnpostedNotification( r3.getUser().getIdentifier(), r3.getSbn().getPackageName(), r3.getSbn().getKey())); assertNotNull(mSnoozeHelper.getSnoozeContextForUnpostedNotification( r4.getUser().getIdentifier(), r4.getSbn().getPackageName(), r4.getSbn().getKey())); assertEquals(0L, mSnoozeHelper.getSnoozeTimeForUnpostedNotification( r.getUser().getIdentifier(), r.getSbn().getPackageName(), r.getSbn().getKey()).longValue()); assertEquals(0L, mSnoozeHelper.getSnoozeTimeForUnpostedNotification( r2.getUser().getIdentifier(), r2.getSbn().getPackageName(), r2.getSbn().getKey()).longValue()); assertNull(mSnoozeHelper.getSnoozeContextForUnpostedNotification( r3.getUser().getIdentifier(), r3.getSbn().getPackageName(), r3.getSbn().getKey())); assertNotNull(mSnoozeHelper.getSnoozeContextForUnpostedNotification( r4.getUser().getIdentifier(), r4.getSbn().getPackageName(), r4.getSbn().getKey())); // 2 for initial timed-snoozes, once each for canceling the USER_SYSTEM snoozes verify(mAm, times(5)).cancel(any(PendingIntent.class)); Loading