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

Commit ad3e4229 authored by Beverly's avatar Beverly
Browse files

Dnd 'blink light' option only if phone has LED

Change-Id: Ifbc75128a9434f83839cd6b60405a03f88f4b3d3
Fixes: 77271775
Test: make ROBOTEST_FILTER=ZenModeVisEffectPreferenceControllerTest RunSettingsRoboTests -j40
parent bf4f4bf4
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.settings.notification;

import android.app.NotificationManager;
import android.content.Context;
import android.support.v7.preference.CheckBoxPreference;
import android.support.v7.preference.Preference;
@@ -51,6 +52,10 @@ public class ZenModeVisEffectPreferenceController

    @Override
    public boolean isAvailable() {
        if (mEffect == NotificationManager.Policy.SUPPRESSED_EFFECT_LIGHTS) {
            return mContext.getResources()
                    .getBoolean(com.android.internal.R.bool.config_intrusiveNotificationLed);
        }
        return true;
    }

+27 −0
Original line number Diff line number Diff line
@@ -17,9 +17,14 @@
package com.android.settings.notification;

import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_BADGE;
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_LIGHTS;
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_NOTIFICATION_LIST;
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_PEEK;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Mockito.mock;
@@ -30,6 +35,7 @@ import static org.mockito.Mockito.when;

import android.app.NotificationManager;
import android.content.Context;
import android.content.res.Resources;
import android.support.v7.preference.CheckBoxPreference;
import android.support.v7.preference.PreferenceScreen;

@@ -81,6 +87,27 @@ public class ZenModeVisEffectPreferenceControllerTest {
        mController.displayPreference(mScreen);
    }

    @Test
    public void isAvailable() {
        // SUPPRESSED_EFFECT_PEEK is always available:
        assertTrue(mController.isAvailable());

        // SUPPRESSED_EFFECT_LIGHTS is only available if the device has an LED:
        Context mockContext = mock(Context.class);
        mController = new ZenModeVisEffectPreferenceController(mockContext, mock(Lifecycle.class),
                PREF_KEY, SUPPRESSED_EFFECT_LIGHTS, PREF_METRICS, null);
        Resources mockResources = mock(Resources.class);
        when(mockContext.getResources()).thenReturn(mockResources);

        when(mockResources.getBoolean(com.android.internal.R.bool.config_intrusiveNotificationLed))
                .thenReturn(false); // no light
        assertFalse(mController.isAvailable());

        when(mockResources.getBoolean(com.android.internal.R.bool.config_intrusiveNotificationLed))
                .thenReturn(true); // has light
        assertTrue(mController.isAvailable());
    }

    @Test
    public void updateState_notChecked() {
        when(mBackend.isVisualEffectSuppressed(SUPPRESSED_EFFECT_PEEK)).thenReturn(false);