summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/service/notification/ZenModeConfig.java4
-rw-r--r--core/java/android/service/notification/ZenPolicy.java29
-rw-r--r--core/proto/android/service/notification.proto45
3 files changed, 77 insertions, 1 deletions
diff --git a/core/java/android/service/notification/ZenModeConfig.java b/core/java/android/service/notification/ZenModeConfig.java
index f2fa45d59c1e..e819c963ae45 100644
--- a/core/java/android/service/notification/ZenModeConfig.java
+++ b/core/java/android/service/notification/ZenModeConfig.java
@@ -1551,7 +1551,9 @@ public class ZenModeConfig implements Parcelable {
if (component != null) {
component.writeToProto(proto, ZenRuleProto.COMPONENT);
}
- // TODO: write zenPolicy to proto (b/115370281)
+ if (zenPolicy != null) {
+ zenPolicy.writeToProto(proto, ZenRuleProto.ZEN_POLICY);
+ }
proto.end(token);
}
diff --git a/core/java/android/service/notification/ZenPolicy.java b/core/java/android/service/notification/ZenPolicy.java
index 88825f08967e..1ccf529d3009 100644
--- a/core/java/android/service/notification/ZenPolicy.java
+++ b/core/java/android/service/notification/ZenPolicy.java
@@ -21,6 +21,7 @@ import android.app.Notification;
import android.app.NotificationChannel;
import android.os.Parcel;
import android.os.Parcelable;
+import android.util.proto.ProtoOutputStream;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -852,6 +853,34 @@ public final class ZenPolicy implements Parcelable {
}
/**
+ * @hide
+ */
+ public void writeToProto(ProtoOutputStream proto, long fieldId) {
+ final long token = proto.start(fieldId);
+
+ proto.write(ZenPolicyProto.REMINDERS, getPriorityCategoryReminders());
+ proto.write(ZenPolicyProto.EVENTS, getPriorityCategoryEvents());
+ proto.write(ZenPolicyProto.MESSAGES, getPriorityCategoryMessages());
+ proto.write(ZenPolicyProto.CALLS, getPriorityCategoryCalls());
+ proto.write(ZenPolicyProto.REPEAT_CALLERS, getPriorityCategoryRepeatCallers());
+ proto.write(ZenPolicyProto.ALARMS, getPriorityCategoryAlarms());
+ proto.write(ZenPolicyProto.MEDIA, getPriorityCategoryMedia());
+ proto.write(ZenPolicyProto.SYSTEM, getPriorityCategorySystem());
+
+ proto.write(ZenPolicyProto.FULL_SCREEN_INTENT, getVisualEffectFullScreenIntent());
+ proto.write(ZenPolicyProto.LIGHTS, getVisualEffectLights());
+ proto.write(ZenPolicyProto.PEEK, getVisualEffectPeek());
+ proto.write(ZenPolicyProto.STATUS_BAR, getVisualEffectStatusBar());
+ proto.write(ZenPolicyProto.BADGE, getVisualEffectBadge());
+ proto.write(ZenPolicyProto.AMBIENT, getVisualEffectAmbient());
+ proto.write(ZenPolicyProto.NOTIFICATION_LIST, getVisualEffectNotificationList());
+
+ proto.write(ZenPolicyProto.PRIORITY_MESSAGES, getPriorityMessageSenders());
+ proto.write(ZenPolicyProto.PRIORITY_CALLS, getPriorityCallSenders());
+ proto.end(token);
+ }
+
+ /**
* Makes deep copy of this ZenPolicy.
* @hide
*/
diff --git a/core/proto/android/service/notification.proto b/core/proto/android/service/notification.proto
index ccbd02764d7e..8836c2e4241f 100644
--- a/core/proto/android/service/notification.proto
+++ b/core/proto/android/service/notification.proto
@@ -200,6 +200,7 @@ message ZenRuleProto {
optional string condition_id = 8;
optional ConditionProto condition = 9;
optional android.content.ComponentNameProto component = 10;
+ optional ZenPolicyProto zenPolicy = 11;
}
// A dump from com.android.server.notification.ZenModeHelper.
@@ -212,3 +213,47 @@ message ZenModeProto {
repeated android.content.ComponentNameProto suppressors = 4;
optional android.app.PolicyProto policy = 5;
}
+
+// An android.service.notification.ZenPolicy object
+message ZenPolicyProto {
+ option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+ enum State {
+ STATE_UNSET = 0;
+ STATE_ALLOW = 1;
+ STATE_DISALLOW = 2;
+ }
+
+ // Notifications and sounds allowed/disallowed when DND is active
+ optional State reminders = 1;
+ optional State events = 2;
+ optional State messages = 3;
+ optional State calls = 4;
+ optional State repeat_callers = 5;
+ optional State alarms = 6;
+ optional State media = 7;
+ optional State system = 8;
+
+ // Visual effects allowed/disallowed for intercepted notifications when DND is active
+ optional State full_screen_intent = 9;
+ optional State lights = 10;
+ optional State peek = 11;
+ optional State status_bar = 12;
+ optional State badge= 13;
+ optional State ambient = 14;
+ optional State notification_list = 15;
+
+ enum Sender {
+ SENDER_UNSET = 0;
+ // Any sender is prioritized.
+ SENDER_ANY = 1;
+ // Saved contacts are prioritized.
+ SENDER_CONTACTS = 2;
+ // Only starred contacts are prioritized.
+ SENDER_STARRED = 3;
+ // No calls/messages are prioritized.
+ SENDER_NONE = 4;
+ }
+ optional Sender priority_calls = 16;
+ optional Sender priority_messages = 17;
+}