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

Commit 44b5a6b5 authored by Anna Zappone's avatar Anna Zappone Committed by Automerger Merge Worker
Browse files

Merge "Update last interaction storage notification clear" into sc-dev am:...

Merge "Update last interaction storage notification clear" into sc-dev am: 285e5f1b am: 2a4569bb

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14442101

Change-Id: I97f694060c59adc68e241f85e4b4e63b1f4b00d0
parents 81a56ccc 2a4569bb
Loading
Loading
Loading
Loading
+16 −8
Original line number Diff line number Diff line
@@ -203,7 +203,7 @@ public class PeopleSpaceUtils {
        if (DEBUG) {
            Log.i(TAG, "Removing any notification stored for tile Id: " + tile.getId());
        }
        return tile
        PeopleSpaceTile.Builder updatedTile = tile
                .toBuilder()
                // Reset notification content.
                .setNotificationKey(null)
@@ -212,8 +212,15 @@ public class PeopleSpaceUtils {
                .setNotificationDataUri(null)
                .setMessagesCount(0)
                // Reset missed calls category.
                .setNotificationCategory(null)
                .build();
                .setNotificationCategory(null);

        // Only set last interaction to now if we are clearing a notification.
        if (!TextUtils.isEmpty(tile.getNotificationKey())) {
            long currentTimeMillis = System.currentTimeMillis();
            if (DEBUG) Log.d(TAG, "Set last interaction on clear: " + currentTimeMillis);
            updatedTile.setLastInteractionTimestamp(currentTimeMillis);
        }
        return updatedTile.build();
    }

    /**
@@ -227,10 +234,11 @@ public class PeopleSpaceUtils {
            if (DEBUG) Log.d(TAG, "Tile key: " + key.toString() + ". Notification is null");
            return removeNotificationFields(tile);
        }
        Notification notification = notificationEntry.getSbn().getNotification();
        StatusBarNotification sbn = notificationEntry.getSbn();
        Notification notification = sbn.getNotification();

        PeopleSpaceTile.Builder updatedTile = tile.toBuilder();
        String uriFromNotification = getContactUri(notificationEntry.getSbn());
        String uriFromNotification = getContactUri(sbn);
        if (appWidgetId.isPresent() && tile.getContactUri() == null && !TextUtils.isEmpty(
                uriFromNotification)) {
            if (DEBUG) Log.d(TAG, "Add uri from notification to tile: " + uriFromNotification);
@@ -241,7 +249,6 @@ public class PeopleSpaceUtils {
            // Update cached tile in-memory.
            updatedTile.setContactUri(contactUri);
        }

        boolean isMissedCall = isMissedCall(notification);
        List<Notification.MessagingStyle.Message> messages =
                getMessagingStyleMessages(notification);
@@ -261,12 +268,13 @@ public class PeopleSpaceUtils {
        Uri dataUri = message != null ? message.getDataUri() : null;
        if (DEBUG) {
            Log.d(TAG, "Tile key: " + key.toString() + ". Notification message has text: "
                    + hasMessageText);
                    + hasMessageText + " Has last interaction: " + sbn.getPostTime());
        }
        CharSequence sender = getSenderIfGroupConversation(notification, message);

        return updatedTile
                .setNotificationKey(notificationEntry.getSbn().getKey())
                .setLastInteractionTimestamp(sbn.getPostTime())
                .setNotificationKey(sbn.getKey())
                .setNotificationCategory(notification.category)
                .setNotificationContent(content)
                .setNotificationSender(sender)
+1 −1
Original line number Diff line number Diff line
@@ -835,7 +835,7 @@ public class PeopleTileViewHelper {
            return null;
        } else if (durationSinceLastInteraction.toDays() < DAYS_IN_A_WEEK) {
            return context.getString(R.string.timestamp, formatter.formatMeasures(
                    new Measure(durationSinceLastInteraction.toHours(),
                    new Measure(durationSinceLastInteraction.toDays(),
                            MeasureUnit.DAY)));
        } else if (durationSinceLastInteraction.toDays() <= DAYS_IN_A_WEEK * 2) {
            return context.getString(durationSinceLastInteraction.toDays() == DAYS_IN_A_WEEK
+6 −1
Original line number Diff line number Diff line
@@ -191,6 +191,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase {
            | SUPPRESSED_EFFECT_LIGHTS
            | SUPPRESSED_EFFECT_PEEK
            | SUPPRESSED_EFFECT_NOTIFICATION_LIST;
    private static final long SBN_POST_TIME = 567L;

    private ShortcutInfo mShortcutInfo;
    private NotificationEntry mNotificationEntry;
@@ -607,6 +608,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase {

        PeopleSpaceTile tile = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT);
        assertThat(tile.getNotificationKey()).isEqualTo(NOTIFICATION_KEY);
        assertThat(tile.getLastInteractionTimestamp()).isEqualTo(SBN_POST_TIME);
        assertThat(tile.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT_1);
        verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT),
                any());
@@ -917,18 +919,20 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase {
                .setSbn(sbn)
                .setId(1));
        mClock.advanceTime(MIN_LINGER_DURATION);
        long timestampBeforeNotificationClear = System.currentTimeMillis();
        NotifEvent notif1b = mNoMan.retractNotif(notif1.sbn, 0);
        mClock.advanceTime(MIN_LINGER_DURATION);

        PeopleSpaceTile tile = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT);
        assertThat(tile.getNotificationKey()).isEqualTo(null);
        assertThat(tile.getLastInteractionTimestamp()).isLessThan(
                timestampBeforeNotificationClear);
        assertThat(tile.getNotificationContent()).isEqualTo(null);
        assertThat(tile.getNotificationDataUri()).isEqualTo(null);
        verify(mAppWidgetManager, times(2)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT),
                any());
    }


    @Test
    public void testAddThenReconfigureWidgetsUpdatesStorageCacheAndListeners()
            throws Exception {
@@ -1446,6 +1450,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase {
                .setNotification(notification)
                .setPkg(TEST_PACKAGE_A)
                .setUid(0)
                .setPostTime(SBN_POST_TIME)
                .setUser(new UserHandle(0))
                .build();
    }
+13 −2
Original line number Diff line number Diff line
@@ -1149,11 +1149,11 @@ public class DataManager {
                if (conversationInfo == null) {
                    return;
                }
                if (DEBUG) Log.d(TAG, "Last event from notification: " + sbn.getPostTime());
                ConversationInfo updated = new ConversationInfo.Builder(conversationInfo)
                        .setLastEventTimestamp(sbn.getPostTime())
                        .setParentNotificationChannelId(sbn.getNotification().getChannelId())
                        .build();
                // Don't update listeners on notifications posted.
                packageData.getConversationStore().addOrUpdate(updated);

                EventHistoryImpl eventHistory = packageData.getEventStore().getOrCreateEventHistory(
@@ -1186,9 +1186,19 @@ public class DataManager {
            if (reason != REASON_CLICK || packageData == null) {
                return;
            }
            long currentTime = System.currentTimeMillis();
            ConversationInfo conversationInfo = packageData.getConversationInfo(shortcutId);
            if (conversationInfo == null) {
                return;
            }
            if (DEBUG) Log.d(TAG, "Last event from notification removed: " + currentTime);
            ConversationInfo updated = new ConversationInfo.Builder(conversationInfo)
                    .setLastEventTimestamp(currentTime)
                    .build();
            packageData.getConversationStore().addOrUpdate(updated);

            EventHistoryImpl eventHistory = packageData.getEventStore().getOrCreateEventHistory(
                    EventStore.CATEGORY_SHORTCUT_BASED, shortcutId);
            long currentTime = System.currentTimeMillis();
            eventHistory.addEvent(new Event(currentTime, Event.TYPE_NOTIFICATION_OPENED));
        }

@@ -1265,6 +1275,7 @@ public class DataManager {
        public void onEvent(PackageData packageData, ConversationInfo conversationInfo,
                Event event) {
            if (event.getType() == Event.TYPE_IN_APP_CONVERSATION) {
                if (DEBUG) Log.d(TAG, "Last event from in-app: " + event.getTimestamp());
                ConversationInfo updated = new ConversationInfo.Builder(conversationInfo)
                        .setLastEventTimestamp(event.getTimestamp())
                        .build();
+21 −1
Original line number Diff line number Diff line
@@ -693,7 +693,6 @@ public final class DataManagerTest {
        NotificationListenerService listenerService =
                mDataManager.getNotificationListenerServiceForTesting(USER_ID_PRIMARY);
        listenerService.onNotificationPosted(mStatusBarNotification);

        ConversationChannel result = mDataManager.getConversation(TEST_PKG_NAME, USER_ID_PRIMARY,
                TEST_SHORTCUT_ID);

@@ -1360,6 +1359,27 @@ public final class DataManagerTest {
        assertTrue(result.isEmpty());
    }

    @Test
    public void testNotificationRemoved() {
        mDataManager.onUserUnlocked(USER_ID_PRIMARY);

        ShortcutInfo shortcut = buildShortcutInfo(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID,
                buildPerson());
        shortcut.setCached(ShortcutInfo.FLAG_CACHED_NOTIFICATIONS);
        mDataManager.addOrUpdateConversationInfo(shortcut);

        NotificationListenerService listenerService =
                mDataManager.getNotificationListenerServiceForTesting(USER_ID_PRIMARY);
        listenerService.onNotificationPosted(mStatusBarNotification);
        listenerService.onNotificationRemoved(mStatusBarNotification, null,
                NotificationListenerService.REASON_CANCEL);

        ConversationInfo conversationInfo = mDataManager.getPackage(TEST_PKG_NAME, USER_ID_PRIMARY)
                .getConversationStore()
                .getConversation(TEST_SHORTCUT_ID);
        assertEquals(conversationInfo.getLastEventTimestamp(), System.currentTimeMillis());
    }

    @Test
    public void testRemoveRecentConversation() {
        mDataManager.onUserUnlocked(USER_ID_PRIMARY);