Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7edfc225 authored by Ioana Alexandru's avatar Ioana Alexandru Committed by Android (Google) Code Review
Browse files

Merge "Fix persistence of long tag notifications." into tm-qpr-dev

parents ef78f4d0 5c4acdcc
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -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());
+29 −12
Original line number Diff line number Diff line
@@ -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));