summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/service/notification/ZenModeConfig.java4
-rw-r--r--services/tests/uiservicestests/src/com/android/server/notification/ZenModeConfigTest.java96
2 files changed, 98 insertions, 2 deletions
diff --git a/core/java/android/service/notification/ZenModeConfig.java b/core/java/android/service/notification/ZenModeConfig.java
index 863a99adacca..e16a6a1197ae 100644
--- a/core/java/android/service/notification/ZenModeConfig.java
+++ b/core/java/android/service/notification/ZenModeConfig.java
@@ -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);
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeConfigTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeConfigTest.java
index f5ab95c1ab4c..f7340abcaeca 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeConfigTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeConfigTest.java
@@ -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();