diff --git a/core/java/android/service/notification/ZenModeConfig.java b/core/java/android/service/notification/ZenModeConfig.java index 45bdb110634ce..c1d5a28aa349b 100644 --- a/core/java/android/service/notification/ZenModeConfig.java +++ b/core/java/android/service/notification/ZenModeConfig.java @@ -1051,9 +1051,8 @@ public class ZenModeConfig implements Parcelable { if (zenPolicy.isCategoryAllowed(ZenPolicy.PRIORITY_CATEGORY_CONVERSATIONS, isPriorityCategoryEnabled(Policy.PRIORITY_CATEGORY_CONVERSATIONS, defaultPolicy))) { priorityCategories |= Policy.PRIORITY_CATEGORY_CONVERSATIONS; - conversationSenders = getNotificationPolicySenders( - zenPolicy.getPriorityConversationSenders(), - conversationSenders); + conversationSenders = getConversationSendersWithDefault( + zenPolicy.getPriorityConversationSenders(), conversationSenders); } if (zenPolicy.isCategoryAllowed(ZenPolicy.PRIORITY_CATEGORY_CALLS, @@ -1166,6 +1165,17 @@ public class ZenModeConfig implements Parcelable { } } + private int getConversationSendersWithDefault(@ZenPolicy.ConversationSenders int senders, + int defaultPolicySender) { + switch (senders) { + case ZenPolicy.CONVERSATION_SENDERS_ANYONE: + case ZenPolicy.CONVERSATION_SENDERS_IMPORTANT: + case ZenPolicy.CONVERSATION_SENDERS_NONE: + return senders; + default: + return defaultPolicySender; + } + } /** * Maps NotificationManager.Policy senders type to ZenPolicy.PeopleType @@ -1216,7 +1226,8 @@ public class ZenModeConfig implements Parcelable { } priorityCallSenders = sourceToPrioritySenders(allowCallsFrom, priorityCallSenders); priorityMessageSenders = sourceToPrioritySenders(allowMessagesFrom, priorityMessageSenders); - priorityConversationSenders = allowConversationsFrom; + priorityConversationSenders = getConversationSendersWithDefault( + allowConversationsFrom, priorityConversationSenders); return new Policy(priorityCategories, priorityCallSenders, priorityMessageSenders, suppressedVisualEffects, areChannelsBypassingDnd 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 733d3f0f66efb..9dca23566b98e 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeConfigTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeConfigTest.java @@ -16,6 +16,8 @@ package com.android.server.notification; +import static android.service.notification.ZenPolicy.CONVERSATION_SENDERS_IMPORTANT; + import static junit.framework.TestCase.assertEquals; import static junit.framework.TestCase.assertFalse; import static junit.framework.TestCase.assertNull; @@ -36,13 +38,10 @@ import android.util.Xml; import androidx.test.runner.AndroidJUnit4; -import com.android.internal.util.FastXmlSerializer; import com.android.server.UiServiceTestCase; import org.junit.Test; import org.junit.runner.RunWith; -import org.xmlpull.v1.XmlPullParser; -import org.xmlpull.v1.XmlSerializer; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; @@ -81,10 +80,12 @@ public class ZenModeConfigTest extends UiServiceTestCase { ZenModeConfig config = getMutedAllConfig(); config.suppressedVisualEffects |= Policy.SUPPRESSED_EFFECT_BADGE; + // Explicitly allow conversations from priority senders to make sure that goes through ZenPolicy zenPolicy = new ZenPolicy.Builder() .allowAlarms(true) .allowReminders(true) .allowEvents(true) + .allowConversations(CONVERSATION_SENDERS_IMPORTANT) .showLights(false) .showInAmbientDisplay(false) .build(); @@ -93,11 +94,12 @@ public class ZenModeConfigTest extends UiServiceTestCase { int priorityCategories = originalPolicy.priorityCategories; int priorityCallSenders = originalPolicy.priorityCallSenders; int priorityMessageSenders = originalPolicy.priorityMessageSenders; - int priorityConversationsSenders = originalPolicy.priorityConversationSenders; + int priorityConversationsSenders = CONVERSATION_SENDERS_IMPORTANT; int suppressedVisualEffects = originalPolicy.suppressedVisualEffects; priorityCategories |= Policy.PRIORITY_CATEGORY_ALARMS; priorityCategories |= Policy.PRIORITY_CATEGORY_REMINDERS; priorityCategories |= Policy.PRIORITY_CATEGORY_EVENTS; + priorityCategories |= Policy.PRIORITY_CATEGORY_CONVERSATIONS; suppressedVisualEffects |= Policy.SUPPRESSED_EFFECT_LIGHTS; suppressedVisualEffects |= Policy.SUPPRESSED_EFFECT_AMBIENT; @@ -344,7 +346,7 @@ public class ZenModeConfigTest extends UiServiceTestCase { config.allowCallsFrom = ZenModeConfig.SOURCE_ANYONE; config.allowMessagesFrom = ZenModeConfig.SOURCE_ANYONE; config.allowConversations = true; - config.allowConversationsFrom = ZenPolicy.CONVERSATION_SENDERS_IMPORTANT; + config.allowConversationsFrom = CONVERSATION_SENDERS_IMPORTANT; config.suppressedVisualEffects = 0; return config;