Merge "Write ZenPolicy conversation settings out to XML" into tm-dev

This commit is contained in:
Yuri Lin
2022-03-28 19:41:22 +00:00
committed by Android (Google) Code Review
3 changed files with 101 additions and 3 deletions

View File

@@ -777,6 +777,8 @@ public class ZenModeConfig implements Parcelable {
final int calls = safeInt(parser, ALLOW_ATT_CALLS_FROM, ZenPolicy.PEOPLE_TYPE_UNSET); final int calls = safeInt(parser, ALLOW_ATT_CALLS_FROM, ZenPolicy.PEOPLE_TYPE_UNSET);
final int messages = safeInt(parser, ALLOW_ATT_MESSAGES_FROM, ZenPolicy.PEOPLE_TYPE_UNSET); final int messages = safeInt(parser, ALLOW_ATT_MESSAGES_FROM, ZenPolicy.PEOPLE_TYPE_UNSET);
final int repeatCallers = safeInt(parser, ALLOW_ATT_REPEAT_CALLERS, ZenPolicy.STATE_UNSET); final int repeatCallers = safeInt(parser, ALLOW_ATT_REPEAT_CALLERS, ZenPolicy.STATE_UNSET);
final int conversations = safeInt(parser, ALLOW_ATT_CONV_FROM,
ZenPolicy.CONVERSATION_SENDERS_UNSET);
final int alarms = safeInt(parser, ALLOW_ATT_ALARMS, ZenPolicy.STATE_UNSET); final int alarms = safeInt(parser, ALLOW_ATT_ALARMS, ZenPolicy.STATE_UNSET);
final int media = safeInt(parser, ALLOW_ATT_MEDIA, ZenPolicy.STATE_UNSET); final int media = safeInt(parser, ALLOW_ATT_MEDIA, ZenPolicy.STATE_UNSET);
final int system = safeInt(parser, ALLOW_ATT_SYSTEM, ZenPolicy.STATE_UNSET); final int system = safeInt(parser, ALLOW_ATT_SYSTEM, ZenPolicy.STATE_UNSET);
@@ -795,6 +797,10 @@ public class ZenModeConfig implements Parcelable {
builder.allowRepeatCallers(repeatCallers == ZenPolicy.STATE_ALLOW); builder.allowRepeatCallers(repeatCallers == ZenPolicy.STATE_ALLOW);
policySet = true; policySet = true;
} }
if (conversations != ZenPolicy.CONVERSATION_SENDERS_UNSET) {
builder.allowConversations(conversations);
policySet = true;
}
if (alarms != ZenPolicy.STATE_UNSET) { if (alarms != ZenPolicy.STATE_UNSET) {
builder.allowAlarms(alarms == ZenPolicy.STATE_ALLOW); builder.allowAlarms(alarms == ZenPolicy.STATE_ALLOW);
policySet = true; policySet = true;
@@ -870,6 +876,7 @@ public class ZenModeConfig implements Parcelable {
writeZenPolicyState(ALLOW_ATT_MESSAGES_FROM, policy.getPriorityMessageSenders(), out); writeZenPolicyState(ALLOW_ATT_MESSAGES_FROM, policy.getPriorityMessageSenders(), out);
writeZenPolicyState(ALLOW_ATT_REPEAT_CALLERS, policy.getPriorityCategoryRepeatCallers(), writeZenPolicyState(ALLOW_ATT_REPEAT_CALLERS, policy.getPriorityCategoryRepeatCallers(),
out); out);
writeZenPolicyState(ALLOW_ATT_CONV_FROM, policy.getPriorityConversationSenders(), out);
writeZenPolicyState(ALLOW_ATT_ALARMS, policy.getPriorityCategoryAlarms(), out); writeZenPolicyState(ALLOW_ATT_ALARMS, policy.getPriorityCategoryAlarms(), out);
writeZenPolicyState(ALLOW_ATT_MEDIA, policy.getPriorityCategoryMedia(), out); writeZenPolicyState(ALLOW_ATT_MEDIA, policy.getPriorityCategoryMedia(), out);
writeZenPolicyState(ALLOW_ATT_SYSTEM, policy.getPriorityCategorySystem(), out); writeZenPolicyState(ALLOW_ATT_SYSTEM, policy.getPriorityCategorySystem(), out);
@@ -894,6 +901,10 @@ public class ZenModeConfig implements Parcelable {
if (val != ZenPolicy.PEOPLE_TYPE_UNSET) { if (val != ZenPolicy.PEOPLE_TYPE_UNSET) {
out.attributeInt(null, attr, val); out.attributeInt(null, attr, val);
} }
} else if (Objects.equals(attr, ALLOW_ATT_CONV_FROM)) {
if (val != ZenPolicy.CONVERSATION_SENDERS_UNSET) {
out.attributeInt(null, attr, val);
}
} else { } else {
if (val != ZenPolicy.STATE_UNSET) { if (val != ZenPolicy.STATE_UNSET) {
out.attributeInt(null, attr, val); out.attributeInt(null, attr, val);

View File

@@ -498,11 +498,11 @@ public final class ZenPolicy implements Parcelable {
mZenPolicy.mPriorityCategories.set(category, STATE_UNSET); mZenPolicy.mPriorityCategories.set(category, STATE_UNSET);
if (category == PRIORITY_CATEGORY_MESSAGES) { if (category == PRIORITY_CATEGORY_MESSAGES) {
mZenPolicy.mPriorityMessages = STATE_UNSET; mZenPolicy.mPriorityMessages = PEOPLE_TYPE_UNSET;
} else if (category == PRIORITY_CATEGORY_CALLS) { } else if (category == PRIORITY_CATEGORY_CALLS) {
mZenPolicy.mPriorityCalls = STATE_UNSET; mZenPolicy.mPriorityCalls = PEOPLE_TYPE_UNSET;
} else if (category == PRIORITY_CATEGORY_CONVERSATIONS) { } else if (category == PRIORITY_CATEGORY_CONVERSATIONS) {
mZenPolicy.mConversationSenders = STATE_UNSET; mZenPolicy.mConversationSenders = CONVERSATION_SENDERS_UNSET;
} }
return this; return this;

View File

@@ -20,6 +20,7 @@ import static android.service.notification.ZenPolicy.CONVERSATION_SENDERS_IMPORT
import static junit.framework.TestCase.assertEquals; import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.assertFalse; import static junit.framework.TestCase.assertFalse;
import static junit.framework.TestCase.assertNotNull;
import static junit.framework.TestCase.assertNull; import static junit.framework.TestCase.assertNull;
import static junit.framework.TestCase.assertTrue; import static junit.framework.TestCase.assertTrue;
@@ -311,6 +312,92 @@ public class ZenModeConfigTest extends UiServiceTestCase {
assertTrue(fromXml.isAutomaticActive()); assertTrue(fromXml.isAutomaticActive());
} }
@Test
public void testZenPolicyXml_allUnset() throws Exception {
String tag = "tag";
ZenPolicy policy = new ZenPolicy.Builder().build();
TypedXmlSerializer out = Xml.newFastSerializer();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
out.setOutput(new BufferedOutputStream(baos), "utf-8");
out.startDocument(null, true);
out.startTag(null, tag);
ZenModeConfig.writeZenPolicyXml(policy, out);
out.endTag(null, tag);
out.endDocument();
TypedXmlPullParser parser = Xml.newFastPullParser();
parser.setInput(new BufferedInputStream(
new ByteArrayInputStream(baos.toByteArray())), null);
parser.nextTag();
ZenPolicy fromXml = ZenModeConfig.readZenPolicyXml(parser);
// nothing was set, so we should have nothing from the parser
assertNull(fromXml);
}
@Test
public void testZenPolicyXml() throws Exception {
String tag = "tag";
ZenPolicy policy = new ZenPolicy.Builder()
.allowCalls(ZenPolicy.PEOPLE_TYPE_CONTACTS)
.allowMessages(ZenPolicy.PEOPLE_TYPE_NONE)
.allowConversations(ZenPolicy.CONVERSATION_SENDERS_IMPORTANT)
.allowRepeatCallers(true)
.allowAlarms(true)
.allowMedia(false)
.allowSystem(true)
.allowReminders(false)
.allowEvents(true)
.hideAllVisualEffects()
.showVisualEffect(ZenPolicy.VISUAL_EFFECT_AMBIENT, true)
.build();
TypedXmlSerializer out = Xml.newFastSerializer();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
out.setOutput(new BufferedOutputStream(baos), "utf-8");
out.startDocument(null, true);
out.startTag(null, tag);
ZenModeConfig.writeZenPolicyXml(policy, out);
out.endTag(null, tag);
out.endDocument();
TypedXmlPullParser parser = Xml.newFastPullParser();
parser.setInput(new BufferedInputStream(
new ByteArrayInputStream(baos.toByteArray())), null);
parser.nextTag();
ZenPolicy fromXml = ZenModeConfig.readZenPolicyXml(parser);
assertNotNull(fromXml);
assertEquals(policy.getPriorityCategoryCalls(), fromXml.getPriorityCategoryCalls());
assertEquals(policy.getPriorityCallSenders(), fromXml.getPriorityCallSenders());
assertEquals(policy.getPriorityCategoryMessages(), fromXml.getPriorityCategoryMessages());
assertEquals(policy.getPriorityMessageSenders(), fromXml.getPriorityMessageSenders());
assertEquals(policy.getPriorityCategoryConversations(),
fromXml.getPriorityCategoryConversations());
assertEquals(policy.getPriorityConversationSenders(),
fromXml.getPriorityConversationSenders());
assertEquals(policy.getPriorityCategoryRepeatCallers(),
fromXml.getPriorityCategoryRepeatCallers());
assertEquals(policy.getPriorityCategoryAlarms(), fromXml.getPriorityCategoryAlarms());
assertEquals(policy.getPriorityCategoryMedia(), fromXml.getPriorityCategoryMedia());
assertEquals(policy.getPriorityCategorySystem(), fromXml.getPriorityCategorySystem());
assertEquals(policy.getPriorityCategoryReminders(), fromXml.getPriorityCategoryReminders());
assertEquals(policy.getPriorityCategoryEvents(), fromXml.getPriorityCategoryEvents());
assertEquals(policy.getVisualEffectFullScreenIntent(),
fromXml.getVisualEffectFullScreenIntent());
assertEquals(policy.getVisualEffectLights(), fromXml.getVisualEffectLights());
assertEquals(policy.getVisualEffectPeek(), fromXml.getVisualEffectPeek());
assertEquals(policy.getVisualEffectStatusBar(), fromXml.getVisualEffectStatusBar());
assertEquals(policy.getVisualEffectBadge(), fromXml.getVisualEffectBadge());
assertEquals(policy.getVisualEffectAmbient(), fromXml.getVisualEffectAmbient());
assertEquals(policy.getVisualEffectNotificationList(),
fromXml.getVisualEffectNotificationList());
}
private ZenModeConfig getMutedRingerConfig() { private ZenModeConfig getMutedRingerConfig() {
ZenModeConfig config = new ZenModeConfig(); ZenModeConfig config = new ZenModeConfig();
// Allow alarms, media // Allow alarms, media