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

Commit 68b0cef5 authored by Julia Reynolds's avatar Julia Reynolds Committed by Android (Google) Code Review
Browse files

Merge "Fix modes summary" into main

parents 4a749136 4068bc22
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2941,7 +2941,7 @@ public class ZenModeConfig implements Parcelable {
        long latestEndTime = -1;

        // DND turned on by manual rule
        if (config.manualRule != null) {
        if (config.isManualActive()) {
            final Uri id = config.manualRule.conditionId;
            if (config.manualRule.enabler != null) {
                // app triggered manual rule
@@ -2950,7 +2950,7 @@ public class ZenModeConfig implements Parcelable {
                    secondaryText = appName;
                }
            } else {
                if (id == null) {
                if (id == null || Uri.EMPTY.equals(id)) {
                    // Do not disturb manually triggered to remain on forever until turned off
                    if (describeForeverCondition) {
                        return context.getString(R.string.zen_mode_forever);
+96 −0
Original line number Diff line number Diff line
@@ -18,8 +18,10 @@ package com.android.server.notification;

import static android.app.AutomaticZenRule.TYPE_BEDTIME;
import static android.app.Flags.FLAG_MODES_UI;
import static android.app.Flags.modesUi;
import static android.provider.Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS;
import static android.provider.Settings.Global.ZEN_MODE_OFF;
import static android.service.notification.Condition.SOURCE_UNKNOWN;
import static android.service.notification.Condition.SOURCE_USER_ACTION;
import static android.service.notification.Condition.STATE_FALSE;
import static android.service.notification.Condition.STATE_TRUE;
@@ -36,10 +38,18 @@ import static junit.framework.TestCase.assertNotNull;
import static junit.framework.TestCase.assertNull;
import static junit.framework.TestCase.assertTrue;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import android.app.AutomaticZenRule;
import android.app.Flags;
import android.app.NotificationManager.Policy;
import android.content.ComponentName;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Parcel;
import android.platform.test.annotations.DisableFlags;
@@ -66,6 +76,8 @@ import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.xmlpull.v1.XmlPullParserException;

import java.io.BufferedInputStream;
@@ -102,6 +114,9 @@ public class ZenModeConfigTest extends UiServiceTestCase {
    private final boolean ENABLED = true;
    private final int CREATION_TIME = 123;

    @Mock
    PackageManager mPm;

    @Rule
    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(
            SetFlagsRule.DefaultInitValueType.DEVICE_DEFAULT);
@@ -119,6 +134,8 @@ public class ZenModeConfigTest extends UiServiceTestCase {
    @Before
    public final void setUp() {
        mSetFlagsRule.enableFlags(Flags.FLAG_MODES_API);
        MockitoAnnotations.initMocks(this);
        mContext.setMockPackageManager(mPm);
    }

    @Test
@@ -967,6 +984,85 @@ public class ZenModeConfigTest extends UiServiceTestCase {
        assertThat(fromXml.zenPolicy).isEqualTo(config.getZenPolicy());
    }

    @Test
    public void testGetDescription_off() {
        ZenModeConfig config = new ZenModeConfig();
        if (!modesUi()) {
            config.manualRule = new ZenModeConfig.ZenRule();
        }
        config.manualRule.pkg = "android";
        assertThat(ZenModeConfig.getDescription(mContext, true, config, false)).isNull();
    }

    @Test
    public void testGetDescription_on_manual_endTime() {
        ZenModeConfig config = new ZenModeConfig();
        if (!modesUi()) {
            config.manualRule = new ZenModeConfig.ZenRule();
        }
        config.manualRule.conditionId = ZenModeConfig.toCountdownConditionId(
                System.currentTimeMillis() + 10000, false);
        config.manualRule.pkg = "android";
        config.manualRule.zenMode = ZEN_MODE_IMPORTANT_INTERRUPTIONS;
        config.manualRule.condition = new Condition(Uri.EMPTY, "", STATE_TRUE, SOURCE_UNKNOWN);
        assertThat(ZenModeConfig.getDescription(mContext, true, config, false))
                .startsWith("Until");
    }

    @Test
    public void getSoundSummary_on_manual_noEnd() {
        ZenModeConfig config = new ZenModeConfig();
        if (!modesUi()) {
            config.manualRule = new ZenModeConfig.ZenRule();
        }
        config.manualRule.conditionId = Uri.EMPTY;
        config.manualRule.pkg = "android";
        config.manualRule.zenMode = ZEN_MODE_IMPORTANT_INTERRUPTIONS;
        config.manualRule.condition = new Condition(Uri.EMPTY, "", STATE_TRUE, SOURCE_UNKNOWN);
        assertThat(ZenModeConfig.getDescription(mContext, true, config, false)).isNull();
    }

    @Test
    public void getSoundSummary_on_manual_enabler() throws Exception {
        ApplicationInfo ai = mock(ApplicationInfo.class);
        when(ai.loadLabel(any())).thenReturn("app name");
        when(mPm.getApplicationInfo(anyString(), anyInt())).thenReturn(ai);

        ZenModeConfig config = new ZenModeConfig();
        if (!modesUi()) {
            config.manualRule = new ZenModeConfig.ZenRule();
        }
        config.manualRule.conditionId = Uri.EMPTY;
        config.manualRule.pkg = "android";
        config.manualRule.zenMode = ZEN_MODE_IMPORTANT_INTERRUPTIONS;
        config.manualRule.enabler = "app";
        config.manualRule.condition = new Condition(Uri.EMPTY, "", STATE_TRUE, SOURCE_UNKNOWN);
        assertThat(ZenModeConfig.getDescription(mContext, true, config, false))
                .isEqualTo("app name");
    }

    @Test
    public void testGetDescription_on_automatic() {
        ZenModeConfig config = new ZenModeConfig();
        ZenModeConfig.ZenRule rule = new ZenModeConfig.ZenRule();
        rule.configurationActivity = new ComponentName("a", "a");
        rule.component = new ComponentName("b", "b");
        rule.conditionId = new Uri.Builder().scheme("hello").build();
        rule.condition = new Condition(rule.conditionId, "", Condition.STATE_TRUE);
        rule.enabled = true;
        rule.creationTime = 123;
        rule.id = "id";
        rule.zenMode = ZEN_MODE_IMPORTANT_INTERRUPTIONS;
        rule.modified = true;
        rule.name = "name";
        rule.snoozing = false;
        rule.pkg = "b";
        config.automaticRules.put("key", rule);

        assertThat(ZenModeConfig.getDescription(mContext, true, config, false))
                .isEqualTo("name");
    }

    private ZenModeConfig getMutedRingerConfig() {
        ZenModeConfig config = new ZenModeConfig();