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

Commit e06a4abb authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Update channel DND setting" into pi-dev

parents 2cb0425d cb782696
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());
    }