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) {
|
protected Long getSnoozeTimeForUnpostedNotification(int userId, String pkg, String key) {
|
||||||
Long time = null;
|
Long time = null;
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
time = mPersistedSnoozedNotifications.get(key);
|
time = mPersistedSnoozedNotifications.get(getTrimmedString(key));
|
||||||
}
|
}
|
||||||
if (time == null) {
|
if (time == null) {
|
||||||
time = 0L;
|
time = 0L;
|
||||||
@@ -139,7 +139,7 @@ public final class SnoozeHelper {
|
|||||||
|
|
||||||
protected String getSnoozeContextForUnpostedNotification(int userId, String pkg, String key) {
|
protected String getSnoozeContextForUnpostedNotification(int userId, String pkg, String key) {
|
||||||
synchronized (mLock) {
|
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);
|
final NotificationRecord record = mSnoozedNotifications.valueAt(i);
|
||||||
if (record.getUserId() == userId && record.getSbn().getPackageName().equals(pkg)) {
|
if (record.getUserId() == userId && record.getSbn().getPackageName().equals(pkg)) {
|
||||||
mSnoozedNotifications.removeAt(i);
|
mSnoozedNotifications.removeAt(i);
|
||||||
mPersistedSnoozedNotificationsWithContext.remove(record.getKey());
|
String trimmedKey = getTrimmedString(record.getKey());
|
||||||
mPersistedSnoozedNotifications.remove(record.getKey());
|
mPersistedSnoozedNotificationsWithContext.remove(trimmedKey);
|
||||||
|
mPersistedSnoozedNotifications.remove(trimmedKey);
|
||||||
Runnable runnable = () -> {
|
Runnable runnable = () -> {
|
||||||
final PendingIntent pi = createPendingIntent(record.getKey());
|
final PendingIntent pi = createPendingIntent(record.getKey());
|
||||||
mAm.cancel(pi);
|
mAm.cancel(pi);
|
||||||
@@ -386,8 +387,9 @@ public final class SnoozeHelper {
|
|||||||
final NotificationRecord record = mSnoozedNotifications.valueAt(i);
|
final NotificationRecord record = mSnoozedNotifications.valueAt(i);
|
||||||
if (record.getUserId() == userId) {
|
if (record.getUserId() == userId) {
|
||||||
mSnoozedNotifications.removeAt(i);
|
mSnoozedNotifications.removeAt(i);
|
||||||
mPersistedSnoozedNotificationsWithContext.remove(record.getKey());
|
String trimmedKey = getTrimmedString(record.getKey());
|
||||||
mPersistedSnoozedNotifications.remove(record.getKey());
|
mPersistedSnoozedNotificationsWithContext.remove(trimmedKey);
|
||||||
|
mPersistedSnoozedNotifications.remove(trimmedKey);
|
||||||
|
|
||||||
Runnable runnable = () -> {
|
Runnable runnable = () -> {
|
||||||
final PendingIntent pi = createPendingIntent(record.getKey());
|
final PendingIntent pi = createPendingIntent(record.getKey());
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ public class SnoozeHelperTest extends UiServiceTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testScheduleRepostsForLongTagPersistedNotification() throws Exception {
|
public void testLongTagPersistedNotification() throws Exception {
|
||||||
String longTag = "A".repeat(66000);
|
String longTag = "A".repeat(66000);
|
||||||
NotificationRecord r = getNotificationRecord("pkg", 1, longTag, UserHandle.SYSTEM);
|
NotificationRecord r = getNotificationRecord("pkg", 1, longTag, UserHandle.SYSTEM);
|
||||||
mSnoozeHelper.snooze(r, 0);
|
mSnoozeHelper.snooze(r, 0);
|
||||||
@@ -612,7 +612,8 @@ public class SnoozeHelperTest extends UiServiceTestCase {
|
|||||||
public void testClearData_userPackage() {
|
public void testClearData_userPackage() {
|
||||||
// snooze 2 from same package
|
// snooze 2 from same package
|
||||||
NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
|
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(r, 1000);
|
||||||
mSnoozeHelper.snooze(r2, 1000);
|
mSnoozeHelper.snooze(r2, 1000);
|
||||||
assertTrue(mSnoozeHelper.isSnoozed(
|
assertTrue(mSnoozeHelper.isSnoozed(
|
||||||
@@ -634,11 +635,14 @@ public class SnoozeHelperTest extends UiServiceTestCase {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testClearData_user() {
|
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 r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
|
||||||
NotificationRecord r2 = getNotificationRecord("pkg2", 2, "two", UserHandle.SYSTEM);
|
NotificationRecord r2 = getNotificationRecord("pkg2", 2, "two" + "2".repeat(66000),
|
||||||
NotificationRecord r3 = getNotificationRecord("pkg2", 3, "three", UserHandle.SYSTEM);
|
UserHandle.SYSTEM);
|
||||||
NotificationRecord r4 = getNotificationRecord("pkg", 2, "two", UserHandle.ALL);
|
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(r, 1000);
|
||||||
mSnoozeHelper.snooze(r2, 1000);
|
mSnoozeHelper.snooze(r2, 1000);
|
||||||
mSnoozeHelper.snooze(r3, "until");
|
mSnoozeHelper.snooze(r3, "until");
|
||||||
@@ -653,6 +657,19 @@ public class SnoozeHelperTest extends UiServiceTestCase {
|
|||||||
assertTrue(mSnoozeHelper.isSnoozed(
|
assertTrue(mSnoozeHelper.isSnoozed(
|
||||||
UserHandle.USER_ALL, r4.getSbn().getPackageName(), r4.getKey()));
|
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
|
// clear data
|
||||||
mSnoozeHelper.clearData(UserHandle.USER_SYSTEM);
|
mSnoozeHelper.clearData(UserHandle.USER_SYSTEM);
|
||||||
|
|
||||||
@@ -666,18 +683,18 @@ public class SnoozeHelperTest extends UiServiceTestCase {
|
|||||||
assertTrue(mSnoozeHelper.isSnoozed(
|
assertTrue(mSnoozeHelper.isSnoozed(
|
||||||
UserHandle.USER_SYSTEM, r4.getSbn().getPackageName(), r4.getKey()));
|
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(
|
assertEquals(0L, mSnoozeHelper.getSnoozeTimeForUnpostedNotification(
|
||||||
r.getUser().getIdentifier(), r.getSbn().getPackageName(),
|
r.getUser().getIdentifier(), r.getSbn().getPackageName(),
|
||||||
r.getSbn().getKey()).longValue());
|
r.getSbn().getKey()).longValue());
|
||||||
assertEquals(0L, mSnoozeHelper.getSnoozeTimeForUnpostedNotification(
|
assertEquals(0L, mSnoozeHelper.getSnoozeTimeForUnpostedNotification(
|
||||||
r2.getUser().getIdentifier(), r2.getSbn().getPackageName(),
|
r2.getUser().getIdentifier(), r2.getSbn().getPackageName(),
|
||||||
r2.getSbn().getKey()).longValue());
|
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
|
// 2 for initial timed-snoozes, once each for canceling the USER_SYSTEM snoozes
|
||||||
verify(mAm, times(5)).cancel(any(PendingIntent.class));
|
verify(mAm, times(5)).cancel(any(PendingIntent.class));
|
||||||
|
|||||||
Reference in New Issue
Block a user