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

Commit dfdb9d18 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Don't filter demoted conversation from app subtext" into rvc-dev am:...

Merge "Don't filter demoted conversation from app subtext" into rvc-dev am: 6f837d10 am: f61da397

Change-Id: Ib59231d29edd5747afdf73053c837d796c2e0922
parents 5c44faa9 f61da397
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
                }
+70 −1
Original line number Diff line number Diff line
@@ -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