Merge "Don't filter demoted conversation from app subtext" into rvc-dev am: 6f837d10bf am: f61da397fd am: dfdb9d18f8

Change-Id: I72d53cad79daaaa17e3e66e576574c20edcf6b57
This commit is contained in:
TreeHugger Robot
2020-03-30 20:51:16 +00:00
committed by Automerger Merge Worker
2 changed files with 71 additions and 2 deletions

View File

@@ -109,7 +109,7 @@ public class ZenModeBypassingAppsPreferenceController extends AbstractZenModePre
String pkg = entry.info.packageName;
for (NotificationChannel channel : mNotificationBackend
.getNotificationChannelsBypassingDnd(pkg, entry.info.uid).getList()) {
if (!TextUtils.isEmpty(channel.getConversationId())) {
if (!TextUtils.isEmpty(channel.getConversationId()) && !channel.isDemoted()) {
// conversation channels that bypass dnd will be shown on the People page
continue;
}

View File

@@ -135,7 +135,9 @@ public class ZenModeBypassingAppsPreferenceControllerTest {
appEntries.add(entry2);
List<NotificationChannel> channelsBypassing = new ArrayList<>();
channelsBypassing.add(mock(NotificationChannel.class));
NotificationChannel mockChannel = mock(NotificationChannel.class);
when(mockChannel.getConversationId()).thenReturn(null); // not a conversation
channelsBypassing.add(mockChannel);
when(mBackend.getNotificationChannelsBypassingDnd(entry1.info.packageName,
entry1.info.uid)).thenReturn(new ParceledListSlice<>(channelsBypassing));
@@ -151,6 +153,73 @@ public class ZenModeBypassingAppsPreferenceControllerTest {
assertThat(mController.getSummary().contains(entry2.label)).isTrue();
}
@Test
public void testUpdateBypassingApps_conversation() {
// GIVEN DND is off
Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.ZEN_MODE,
Settings.Global.ZEN_MODE_OFF);
// mock app list
ApplicationsState.AppEntry entry = mock(ApplicationsState.AppEntry.class);
entry.info = new ApplicationInfo();
entry.info.packageName = "test";
entry.label = "test";
entry.info.uid = 0;
List<ApplicationsState.AppEntry> appEntries = new ArrayList<>();
appEntries.add(entry);
List<NotificationChannel> channelsBypassing = new ArrayList<>();
NotificationChannel conversation = mock(NotificationChannel.class);
when(conversation.getConversationId()).thenReturn("conversation!");
channelsBypassing.add(conversation);
when(mBackend.getNotificationChannelsBypassingDnd(entry.info.packageName,
entry.info.uid)).thenReturn(new ParceledListSlice<>(channelsBypassing));
// WHEN a single app is passed to the controller with a conversation notif channel
mController.updateAppsBypassingDndSummaryText(appEntries);
// THEN the preference is enabled and the summary doesn't contain any apps because the
// only channel bypassing DND is a conversation (which will be showed on the
// conversations page instead of the apps page)
assertThat(mController.mPreference.isEnabled()).isTrue();
assertThat(mController.getSummary().contains("No apps")).isTrue();
}
@Test
public void testUpdateBypassingApps_demotedConversation() {
// GIVEN DND is off
Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.ZEN_MODE,
Settings.Global.ZEN_MODE_OFF);
// mock app list
ApplicationsState.AppEntry entry = mock(ApplicationsState.AppEntry.class);
entry.info = new ApplicationInfo();
entry.info.packageName = "test";
entry.label = "test";
entry.info.uid = 0;
List<ApplicationsState.AppEntry> appEntries = new ArrayList<>();
appEntries.add(entry);
List<NotificationChannel> channelsBypassing = new ArrayList<>();
NotificationChannel demotedConversation = mock(NotificationChannel.class);
when(demotedConversation.getConversationId()).thenReturn("conversationId");
when(demotedConversation.isDemoted()).thenReturn(true);
channelsBypassing.add(demotedConversation);
when(mBackend.getNotificationChannelsBypassingDnd(entry.info.packageName,
entry.info.uid)).thenReturn(new ParceledListSlice<>(channelsBypassing));
// WHEN a single app is passed to the controller with a demoted conversation notif channel
mController.updateAppsBypassingDndSummaryText(appEntries);
// THEN the preference is enabled and the summary contains the app name from the list
assertThat(mController.mPreference.isEnabled()).isTrue();
assertThat(mController.getSummary().contains(entry.label)).isTrue();
}
@Test
public void testUpdateAppsBypassingDnd_nullAppsList() {
// GIVEN DND is off