diff options
-rw-r--r-- | services/people/java/com/android/server/people/data/DataManager.java | 2 | ||||
-rw-r--r-- | services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java | 53 |
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 |