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

Commit cb782696 authored by Julia Reynolds's avatar Julia Reynolds
Browse files

Update channel DND setting

... to reflect DND changes elsewhere in the system. Update the summary
and make the setting always available.

Test: make -j RunSettingsRoboTests
Change-Id: Ia51c349d863e1470e8a043293fa60f22632fa2df
Fixes: 76137346
parent 5506097e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -7662,7 +7662,7 @@
    <string name="app_notification_override_dnd_title">Override Do Not Disturb</string>
    <!-- [CHAR LIMIT=NONE] App notification settings: Override DND option description-->
    <string name="app_notification_override_dnd_summary">Let these notifications continue to interrupt when Do Not Disturb is set to Priority Only</string>
    <string name="app_notification_override_dnd_summary">Let these notifications continue to interrupt when Do Not Disturb is on</string>
    <!-- [CHAR LIMIT=NONE] App notification settings: Visibility override option title -->
    <string name="app_notification_visibility_override_title">On lock screen</string>
+3 −13
Original line number Diff line number Diff line
@@ -29,10 +29,9 @@ import com.android.settingslib.core.lifecycle.events.OnResume;

public class DndPreferenceController extends NotificationPreferenceController
        implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener,
        LifecycleObserver, OnResume {
        LifecycleObserver {

    private static final String KEY_BYPASS_DND = "bypass_dnd";
    private boolean mVisualEffectsSuppressed;

    public DndPreferenceController(Context context, Lifecycle lifecycle,
            NotificationBackend backend) {
@@ -42,12 +41,6 @@ public class DndPreferenceController extends NotificationPreferenceController
        }
    }

    @Override
    public void onResume() {
        NotificationManager.Policy policy = mNm.getNotificationPolicy();
        mVisualEffectsSuppressed = policy != null && policy.suppressedVisualEffects != 0;
    }

    @Override
    public String getPreferenceKey() {
        return KEY_BYPASS_DND;
@@ -55,12 +48,10 @@ public class DndPreferenceController extends NotificationPreferenceController

    @Override
    public boolean isAvailable() {
        if (!super.isAvailable()) {
        if (!super.isAvailable() || mChannel == null) {
            return false;
        }
        return checkCanBeVisible(NotificationManager.IMPORTANCE_DEFAULT)
                || (checkCanBeVisible(NotificationManager.IMPORTANCE_LOW)
                && mVisualEffectsSuppressed);
        return true;
    }

    public void updateState(Preference preference) {
@@ -82,5 +73,4 @@ public class DndPreferenceController extends NotificationPreferenceController
        }
        return true;
    }

}
+5 −36
Original line number Diff line number Diff line
@@ -80,50 +80,19 @@ public class DndPreferenceControllerTest {
    }

    @Test
    public void testNoCrashIfNoOnResume() {
        mController.isAvailable();
        mController.updateState(mock(RestrictedSwitchPreference.class));
        mController.onPreferenceChange(mock(RestrictedSwitchPreference.class), true);
        mController.onResume();
    }

    @Test
    public void testIsAvailable_notIfNotImportant_noVisEffects() {
    public void testIsAvailable_app() {
        when(mNm.getNotificationPolicy()).thenReturn(new NotificationManager.Policy(0, 0, 0, 0));
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        NotificationChannel channel = new NotificationChannel("", "", IMPORTANCE_LOW);
        mController.onResume();
        mController.onResume(appRow, channel, null, null);
        mController.onResume(appRow, null, null, null);
        assertFalse(mController.isAvailable());
    }

    @Test
    public void testIsAvailable_notIfNotImportant_visEffects() {
    public void testIsAvailable_channel() {
        when(mNm.getNotificationPolicy()).thenReturn(new NotificationManager.Policy(0, 0, 0, 1));
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        NotificationChannel channel = new NotificationChannel("", "", IMPORTANCE_MIN);
        mController.onResume();
        mController.onResume(appRow, channel, null, null);
        assertFalse(mController.isAvailable());
    }

    @Test
    public void testIsAvailable_importance_noVisEffects() {
        when(mNm.getNotificationPolicy()).thenReturn(new NotificationManager.Policy(0, 0, 0, 0));
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        NotificationChannel channel = new NotificationChannel("", "", IMPORTANCE_DEFAULT);
        mController.onResume();
        mController.onResume(appRow, channel, null, null);
        assertTrue(mController.isAvailable());
    }

    @Test
    public void testIsAvailable_important_visEffects() {
        when(mNm.getNotificationPolicy()).thenReturn(new NotificationManager.Policy(0, 0, 0, 1));
        assertTrue(mNm.getNotificationPolicy().suppressedVisualEffects != 0);
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        NotificationChannel channel = new NotificationChannel("", "", IMPORTANCE_LOW);
        mController.onResume();
        NotificationChannel channel =
                new NotificationChannel(DEFAULT_CHANNEL_ID, "", IMPORTANCE_MIN);
        mController.onResume(appRow, channel, null, null);
        assertTrue(mController.isAvailable());
    }