Fix ZenPolicy -> NotificationManager.Policy for conversations setting.

Unlike the priority senders (for messages and calls), the conversations setting uses the same enum in both ZenPolicy and NotificationManager.Policy, so the extraneous call to getNotificationPolicySenders resulted in an incorrect value in conversion.

Bug: 197223270
Test: atest ZenModeConfigTest

Change-Id: Ifa135ba9869ae1a2d3bffe5ec40f411eee197d7e
This commit is contained in:
Yuri Lin
2021-08-18 15:49:57 -04:00
parent 4433d796b4
commit 44e1baba39
2 changed files with 22 additions and 9 deletions

View File

@@ -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

View File

@@ -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;