Merge "Fix persistence of long tag notifications." into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
7edfc22585
@@ -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;
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
@@ -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(
|
||||
@@ -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");
|
||||
@@ -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);
|
||||
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user