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

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

Merge "Update the summary for DND conditional"

parents b87dfdc1 09fedbf7
Loading
Loading
Loading
Loading
+8 −14
Original line number Diff line number Diff line
@@ -9169,8 +9169,11 @@
    <!-- Title of condition that do not disturb is on [CHAR LIMIT=36] -->
    <string name="condition_zen_title">Do Not Disturb is on</string>
    <!-- Summary of condition that do not disturb is on [CHAR LIMIT=36] -->
    <string name="condition_zen_summary">Impacts what you hear and see</string>
    <!-- Summary of condition that do not disturb is on and all exceptions set to off [CHAR LIMIT=36] -->
    <string name="condition_zen_summary_phone_muted">Phone muted</string>
    <!-- Summary of condition that do not disturb is on and some exceptions are allowed [CHAR LIMIT=36] -->
    <string name="condition_zen_summary_with_exceptions">With exceptions</string>
    <!-- Title of condition that battery saver is on [CHAR LIMIT=30] -->
    <string name="condition_battery_title">Battery Saver is on</string>
@@ -9200,25 +9203,16 @@
    <string name="condition_device_muted_action_turn_on_sound">Turn on sound</string>
    <!-- Title of condition that indicates device is muted [CHAR LIMIT=50] -->
    <string name="condition_device_muted_title" product="tablet">Device is muted</string>
    <!-- Title of condition that indicates device is muted [CHAR LIMIT=50] -->
    <string name="condition_device_muted_title" product="default">Phone muted</string>
    <string name="condition_device_muted_title">Ringer muted</string>
    <!-- Summary of condition that indicates device is muted -->
    <string name="condition_device_muted_summary">For calls &amp; notifications</string>
    <!-- Title of condition that indicates device is set to vibrate [CHAR LIMIT=50] -->
    <string name="condition_device_vibrate_title" product="tablet">Device is set to vibrate</string>
    <!-- Title of condition that indicates device is muted [CHAR LIMIT=50] -->
    <string name="condition_device_vibrate_title" product="default">Vibration only</string>
    <!-- Summary of condition that indicates device is set to vibrate -->
    <string name="condition_device_vibrate_summary" product="tablet">Calls and notifications will vibrate device</string>
    <string name="condition_device_vibrate_title">Vibration only</string>
    <!-- Summary of condition that indicates device is set to vibrate -->
    <string name="condition_device_vibrate_summary" product="default">For calls &amp; notifications</string>
    <string name="condition_device_vibrate_summary">For calls &amp; notifications</string>
    <!--  Night display: Title for the night display option Suggestion (renamed "Night Light" with title caps). [CHAR LIMIT=46] -->
    <string name="night_display_suggestion_title">Set Night Light schedule</string>
+9 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.provider.Settings;
import android.service.notification.ZenModeConfig;

import androidx.annotation.VisibleForTesting;

@@ -97,7 +98,7 @@ public class DndConditionCardController implements ConditionalCardController {
                .setName(mAppContext.getPackageName() + "/"
                        + mAppContext.getText(R.string.condition_zen_title))
                .setTitleText(mAppContext.getText(R.string.condition_zen_title).toString())
                .setSummaryText(mAppContext.getText(R.string.condition_zen_summary).toString())
                .setSummaryText(getSummary())
                .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_do_not_disturb_on_24dp))
                .setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH)
                .build();
@@ -112,4 +113,11 @@ public class DndConditionCardController implements ConditionalCardController {
            }
        }
    }

    private String getSummary() {
        if (ZenModeConfig.areAllZenBehaviorSoundsMuted(mNotificationManager.getZenModeConfig())) {
            return mAppContext.getText(R.string.condition_zen_summary_phone_muted).toString();
        }
        return mAppContext.getText(R.string.condition_zen_summary_with_exceptions).toString();
    }
}
+68 −0
Original line number Diff line number Diff line
@@ -16,13 +16,22 @@

package com.android.settings.homepage.contextualcards.conditional;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;

import android.app.NotificationManager;
import android.content.Context;
import android.service.notification.ZenModeConfig;

import com.android.settings.R;
import com.android.settings.homepage.contextualcards.ContextualCard;
import com.android.settings.testutils.shadow.ShadowNotificationManager;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -30,7 +39,10 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow;

@Config(shadows = ShadowNotificationManager.class)
@RunWith(RobolectricTestRunner.class)
public class DndConditionalCardControllerTest {

@@ -38,12 +50,14 @@ public class DndConditionalCardControllerTest {
    private ConditionManager mConditionManager;
    private Context mContext;
    private DndConditionCardController mController;
    private ShadowNotificationManager mNotificationManager;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mContext = spy(RuntimeEnvironment.application);
        mController = new DndConditionCardController(mContext, mConditionManager);
        mNotificationManager = Shadow.extract(mContext.getSystemService(NotificationManager.class));
    }

    @Test
@@ -55,4 +69,58 @@ public class DndConditionalCardControllerTest {
                eq(DndConditionCardController.DND_FILTER));
        verify(mContext).unregisterReceiver(any(DndConditionCardController.Receiver.class));
    }

    @Test
    public void buildContextualCard_allSoundsMuted_shouldHavePhoneMutedSummary() {
        mNotificationManager.setZenModeConfig(getMutedAllConfig());

        final ContextualCard card = mController.buildContextualCard();

        assertThat(card.getSummaryText()).isEqualTo(
                mContext.getString(R.string.condition_zen_summary_phone_muted));
    }

    @Test
    public void buildContextualCard_allowSomeSounds_shouldHaveWittExceptionsSummary() {
        mNotificationManager.setZenModeConfig(getCustomConfig());

        final ContextualCard card = mController.buildContextualCard();

        assertThat(card.getSummaryText()).isEqualTo(
                mContext.getString(R.string.condition_zen_summary_with_exceptions));
    }

    private ZenModeConfig getCustomConfig() {
        final ZenModeConfig config = new ZenModeConfig();
        // Some sounds allowed
        config.allowAlarms = true;
        config.allowMedia = false;
        config.allowSystem = false;
        config.allowCalls = true;
        config.allowRepeatCallers = true;
        config.allowMessages = false;
        config.allowReminders = false;
        config.allowEvents = false;
        config.areChannelsBypassingDnd = false;
        config.allowCallsFrom = ZenModeConfig.SOURCE_ANYONE;
        config.allowMessagesFrom = ZenModeConfig.SOURCE_ANYONE;
        config.suppressedVisualEffects = 0;
        return config;
    }

    private ZenModeConfig getMutedAllConfig() {
        final ZenModeConfig config = new ZenModeConfig();
        // No sounds allowed
        config.allowAlarms = false;
        config.allowMedia = false;
        config.allowSystem = false;
        config.allowCalls = false;
        config.allowRepeatCallers = false;
        config.allowMessages = false;
        config.allowReminders = false;
        config.allowEvents = false;
        config.areChannelsBypassingDnd = false;
        config.suppressedVisualEffects = 0;
        return config;
    }
}
+11 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settings.testutils.shadow;

import android.app.NotificationManager;
import android.net.Uri;
import android.service.notification.ZenModeConfig;

import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
@@ -26,6 +27,7 @@ import org.robolectric.annotation.Implements;
public class ShadowNotificationManager {

    private int mZenMode;
    private ZenModeConfig mZenModeConfig;

    @Implementation
    protected void setZenMode(int mode, Uri conditionId, String reason) {
@@ -36,4 +38,13 @@ public class ShadowNotificationManager {
    protected int getZenMode() {
        return mZenMode;
    }

    @Implementation
    public ZenModeConfig getZenModeConfig() {
        return mZenModeConfig;
    }

    public void setZenModeConfig(ZenModeConfig config) {
        mZenModeConfig = config;
    }
}