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

Commit 68087fd6 authored by Ioana Alexandru's avatar Ioana Alexandru Committed by Automerger Merge Worker
Browse files

Merge "Fix persistence of long tag notifications." into tm-qpr-dev am: 7edfc225 am: f75449a2

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