summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlavio Fiszman <flaviocf@google.com>2021-06-04 15:48:26 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-06-04 15:48:26 +0000
commitfa2a032dd8fd48b521cc376b4fe187fe248f566a (patch)
tree1a60660723217a7f3a80fe359aa75503b83cec33
parent327f915971a8139593cbb79d6ee24a730ad821c2 (diff)
parentd9d1e8e6d604c2de09d3e26df546d62fa0760481 (diff)
Merge "Hide demoted conversations from People service" into sc-dev
-rw-r--r--services/people/java/com/android/server/people/data/DataManager.java2
-rw-r--r--services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java53
2 files changed, 53 insertions, 2 deletions
diff --git a/services/people/java/com/android/server/people/data/DataManager.java b/services/people/java/com/android/server/people/data/DataManager.java
index 7189fb42f263..d55d0600b7c9 100644
--- a/services/people/java/com/android/server/people/data/DataManager.java
+++ b/services/people/java/com/android/server/people/data/DataManager.java
@@ -264,7 +264,7 @@ public class DataManager {
@Nullable
private ConversationChannel getConversationChannel(ShortcutInfo shortcutInfo,
ConversationInfo conversationInfo) {
- if (conversationInfo == null) {
+ if (conversationInfo == null || conversationInfo.isDemoted()) {
return null;
}
if (shortcutInfo == null) {
diff --git a/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java b/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java
index b112f3fc0014..c50648573d52 100644
--- a/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java
@@ -682,6 +682,29 @@ public final class DataManagerTest {
}
@Test
+ public void testGetConversation_demoted() {
+ mDataManager.onUserUnlocked(USER_ID_PRIMARY);
+ assertThat(mDataManager.getConversation(TEST_PKG_NAME, USER_ID_PRIMARY,
+ TEST_SHORTCUT_ID)).isNull();
+
+ ShortcutInfo shortcut = buildShortcutInfo(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID,
+ buildPerson());
+ shortcut.setCached(ShortcutInfo.FLAG_PINNED);
+ mDataManager.addOrUpdateConversationInfo(shortcut);
+ assertThat(mDataManager.getConversation(TEST_PKG_NAME, USER_ID_PRIMARY,
+ TEST_SHORTCUT_ID)).isNotNull();
+
+ mNotificationChannel.setDemoted(true);
+ NotificationListenerService listenerService =
+ mDataManager.getNotificationListenerServiceForTesting(USER_ID_PRIMARY);
+ listenerService.onNotificationChannelModified(TEST_PKG_NAME, UserHandle.of(USER_ID_PRIMARY),
+ mNotificationChannel, NOTIFICATION_CHANNEL_OR_GROUP_UPDATED);
+
+ assertThat(mDataManager.getConversation(TEST_PKG_NAME, USER_ID_PRIMARY,
+ TEST_SHORTCUT_ID)).isNull();
+ }
+
+ @Test
public void testGetConversationGetsPersonsData() {
mDataManager.onUserUnlocked(USER_ID_PRIMARY);
@@ -720,6 +743,27 @@ public final class DataManagerTest {
}
@Test
+ public void testIsConversation_demoted() {
+ mDataManager.onUserUnlocked(USER_ID_PRIMARY);
+ assertThat(mDataManager.isConversation(TEST_PKG_NAME, USER_ID_PRIMARY,
+ TEST_SHORTCUT_ID)).isFalse();
+
+ ShortcutInfo shortcut = buildShortcutInfo(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID,
+ buildPerson());
+ shortcut.setCached(ShortcutInfo.FLAG_PINNED);
+ mDataManager.addOrUpdateConversationInfo(shortcut);
+
+ mNotificationChannel.setDemoted(true);
+ NotificationListenerService listenerService =
+ mDataManager.getNotificationListenerServiceForTesting(USER_ID_PRIMARY);
+ listenerService.onNotificationChannelModified(TEST_PKG_NAME, UserHandle.of(USER_ID_PRIMARY),
+ mNotificationChannel, NOTIFICATION_CHANNEL_OR_GROUP_UPDATED);
+
+ assertThat(mDataManager.isConversation(TEST_PKG_NAME, USER_ID_PRIMARY,
+ TEST_SHORTCUT_ID)).isFalse();
+ }
+
+ @Test
public void testNotificationChannelCreated() {
mDataManager.onUserUnlocked(USER_ID_PRIMARY);
mDataManager.onUserUnlocked(USER_ID_SECONDARY);
@@ -1371,13 +1415,20 @@ public final class DataManagerTest {
NotificationListenerService listenerService =
mDataManager.getNotificationListenerServiceForTesting(USER_ID_PRIMARY);
listenerService.onNotificationPosted(mStatusBarNotification);
+ // posting updates the last interaction time, so delay before deletion
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ long approxDeletionTime = System.currentTimeMillis();
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());
+ assertTrue(conversationInfo.getLastEventTimestamp() - approxDeletionTime < 100);
}
@Test