summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/NotificationManager.java22
-rw-r--r--core/proto/android/app/notificationmanager.proto65
-rw-r--r--core/proto/android/service/notification.proto3
-rw-r--r--services/core/java/com/android/server/notification/ZenModeHelper.java2
4 files changed, 90 insertions, 2 deletions
diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java
index 8fa7d6c3b4f7..eb52cb7f9508 100644
--- a/core/java/android/app/NotificationManager.java
+++ b/core/java/android/app/NotificationManager.java
@@ -41,6 +41,7 @@ import android.provider.Settings.Global;
import android.service.notification.StatusBarNotification;
import android.service.notification.ZenModeConfig;
import android.util.Log;
+import android.util.proto.ProtoOutputStream;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -1061,6 +1062,27 @@ public class NotificationManager {
+ "]";
}
+ /** @hide */
+ public void toProto(ProtoOutputStream proto, long fieldId) {
+ final long pToken = proto.start(fieldId);
+
+ bitwiseToProtoEnum(proto, PolicyProto.PRIORITY_CATEGORIES, priorityCategories);
+ proto.write(PolicyProto.PRIORITY_CALL_SENDER, priorityCallSenders);
+ proto.write(PolicyProto.PRIORITY_MESSAGE_SENDER, priorityMessageSenders);
+ bitwiseToProtoEnum(
+ proto, PolicyProto.SUPPRESSED_VISUAL_EFFECTS, suppressedVisualEffects);
+
+ proto.end(pToken);
+ }
+
+ private static void bitwiseToProtoEnum(ProtoOutputStream proto, long fieldId, int data) {
+ for (int i = 1; data > 0; ++i, data >>>= 1) {
+ if ((data & 1) == 1) {
+ proto.write(fieldId, i);
+ }
+ }
+ }
+
public static String suppressedEffectsToString(int effects) {
if (effects <= 0) return "";
final StringBuilder sb = new StringBuilder();
diff --git a/core/proto/android/app/notificationmanager.proto b/core/proto/android/app/notificationmanager.proto
new file mode 100644
index 000000000000..4dfd0cf469a7
--- /dev/null
+++ b/core/proto/android/app/notificationmanager.proto
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto3";
+
+option java_package = "android.app";
+option java_multiple_files = true;
+
+package android.app;
+
+/**
+ * An android.app.NotificationMananger.Policy object.
+ */
+message PolicyProto {
+ enum Category {
+ CATEGORY_UNKNOWN = 0;
+ // Reminder notifications are prioritized.
+ REMINDERS = 1;
+ // Event notifications are prioritized.
+ EVENTS = 2;
+ // Message notifications are prioritized.
+ MESSAGES = 3;
+ // Calls are prioritized.
+ CALLS = 4;
+ // Calls from repeat callers are prioritized.
+ REPEAT_CALLERS = 5;
+ }
+ repeated Category priority_categories = 1;
+
+ enum Sender {
+ // Any sender is prioritized.
+ ANY = 0;
+ // Saved contacts are prioritized.
+ CONTACTS = 1;
+ // Only starred contacts are prioritized.
+ STARRED = 2;
+ }
+ Sender priority_call_sender = 2;
+ Sender priority_message_sender = 3;
+
+ enum SuppressedVisualEffect {
+ SVE_UNKNOWN = 0;
+ // Whether notifications suppressed by DND should not interrupt visually
+ // (e.g. with notification lights or by turning the screen on) when the
+ // screen is off.
+ SCREEN_OFF = 1;
+ // Whether notifications suppressed by DND should not interrupt visually
+ // when the screen is on (e.g. by peeking onto the screen).
+ SCREEN_ON = 2;
+ }
+ repeated SuppressedVisualEffect suppressed_visual_effects = 4;
+}
diff --git a/core/proto/android/service/notification.proto b/core/proto/android/service/notification.proto
index a8482a1d6be6..05afe525c1eb 100644
--- a/core/proto/android/service/notification.proto
+++ b/core/proto/android/service/notification.proto
@@ -21,6 +21,7 @@ package android.service.notification;
option java_multiple_files = true;
option java_outer_classname = "NotificationServiceProto";
+import "frameworks/base/core/proto/android/app/notificationmanager.proto";
import "frameworks/base/core/proto/android/content/component_name.proto";
message NotificationServiceDumpProto {
@@ -98,7 +99,7 @@ message ZenModeProto {
repeated string enabled_active_conditions = 2;
int32 suppressed_effects = 3;
repeated string suppressors = 4;
- string policy = 5;
+ android.app.PolicyProto policy = 5;
}
enum ZenMode {
diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java
index ffdafc562673..9fcc67df500a 100644
--- a/services/core/java/com/android/server/notification/ZenModeHelper.java
+++ b/services/core/java/com/android/server/notification/ZenModeHelper.java
@@ -567,7 +567,7 @@ public class ZenModeHelper {
proto.write(ZenModeProto.ENABLED_ACTIVE_CONDITIONS, rule.toString());
}
}
- proto.write(ZenModeProto.POLICY, mConfig.toNotificationPolicy().toString());
+ mConfig.toNotificationPolicy().toProto(proto, ZenModeProto.POLICY);
proto.write(ZenModeProto.SUPPRESSED_EFFECTS, mSuppressedEffects);
}
}