summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2018-01-26 22:07:21 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-01-26 22:07:21 +0000
commitc110e17bef09da1e03cc2e99eaa8d5b3269a8c20 (patch)
tree481f9390f264180d4130e759697f1e07785bd7f5
parent618e86023fced9085bd02a533d4a61fa34d0952d (diff)
parent99546338273fd2fdbcab2d5cd0dfbc2035b935e8 (diff)
Merge "incidentd: Adding privacy tag and expanding field."
-rw-r--r--core/java/android/service/notification/Condition.java18
-rw-r--r--core/java/android/service/notification/ZenModeConfig.java25
-rw-r--r--core/proto/android/app/notification.proto4
-rw-r--r--core/proto/android/app/notification_channel.proto13
-rw-r--r--core/proto/android/app/notification_channel_group.proto3
-rw-r--r--core/proto/android/app/notificationmanager.proto11
-rw-r--r--core/proto/android/service/notification.proto101
-rw-r--r--services/core/java/com/android/server/notification/NotificationManagerService.java2
-rw-r--r--services/core/java/com/android/server/notification/ZenModeHelper.java5
9 files changed, 155 insertions, 27 deletions
diff --git a/core/java/android/service/notification/Condition.java b/core/java/android/service/notification/Condition.java
index 2a352adcee18..b6c6bdc00bbe 100644
--- a/core/java/android/service/notification/Condition.java
+++ b/core/java/android/service/notification/Condition.java
@@ -18,11 +18,11 @@ package android.service.notification;
import android.annotation.IntDef;
import android.annotation.SystemApi;
-import android.app.AutomaticZenRule;
import android.content.Context;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
+import android.util.proto.ProtoOutputStream;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -161,6 +161,22 @@ public final class Condition implements Parcelable {
.append(']').toString();
}
+ /** @hide */
+ public void writeToProto(ProtoOutputStream proto, long fieldId) {
+ final long token = proto.start(fieldId);
+
+ // id is guarantreed not to be null.
+ proto.write(ConditionProto.ID, id.toString());
+ proto.write(ConditionProto.SUMMARY, summary);
+ proto.write(ConditionProto.LINE_1, line1);
+ proto.write(ConditionProto.LINE_2, line2);
+ proto.write(ConditionProto.ICON, icon);
+ proto.write(ConditionProto.STATE, state);
+ proto.write(ConditionProto.FLAGS, flags);
+
+ proto.end(token);
+ }
+
@SystemApi
public static String stateToString(int state) {
if (state == STATE_FALSE) return "STATE_FALSE";
diff --git a/core/java/android/service/notification/ZenModeConfig.java b/core/java/android/service/notification/ZenModeConfig.java
index f658ae03c927..bb88e1a20f73 100644
--- a/core/java/android/service/notification/ZenModeConfig.java
+++ b/core/java/android/service/notification/ZenModeConfig.java
@@ -33,6 +33,7 @@ import android.text.format.DateFormat;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Slog;
+import android.util.proto.ProtoOutputStream;
import com.android.internal.R;
@@ -1262,6 +1263,30 @@ public class ZenModeConfig implements Parcelable {
.append(']').toString();
}
+ /** @hide */
+ public void writeToProto(ProtoOutputStream proto, long fieldId) {
+ final long token = proto.start(fieldId);
+
+ proto.write(ZenRuleProto.ID, id);
+ proto.write(ZenRuleProto.NAME, name);
+ proto.write(ZenRuleProto.CREATION_TIME_MS, creationTime);
+ proto.write(ZenRuleProto.ENABLED, enabled);
+ proto.write(ZenRuleProto.ENABLER, enabler);
+ proto.write(ZenRuleProto.IS_SNOOZING, snoozing);
+ proto.write(ZenRuleProto.ZEN_MODE, zenMode);
+ if (conditionId != null) {
+ proto.write(ZenRuleProto.CONDITION_ID, conditionId.toString());
+ }
+ if (condition != null) {
+ condition.writeToProto(proto, ZenRuleProto.CONDITION);
+ }
+ if (component != null) {
+ component.writeToProto(proto, ZenRuleProto.COMPONENT);
+ }
+
+ proto.end(token);
+ }
+
private static void appendDiff(Diff d, String item, ZenRule from, ZenRule to) {
if (d == null) return;
if (from == null) {
diff --git a/core/proto/android/app/notification.proto b/core/proto/android/app/notification.proto
index 379a4ae8e2ac..c7e313aa5801 100644
--- a/core/proto/android/app/notification.proto
+++ b/core/proto/android/app/notification.proto
@@ -18,10 +18,10 @@ syntax = "proto2";
option java_package = "android.app";
option java_multiple_files = true;
-import "frameworks/base/libs/incident/proto/android/privacy.proto";
-
package android.app;
+import "frameworks/base/libs/incident/proto/android/privacy.proto";
+
/**
* An android.app.Notification object.
* Deprecated fields are not included in the proto.
diff --git a/core/proto/android/app/notification_channel.proto b/core/proto/android/app/notification_channel.proto
index 0388547e009f..337aa1c20c7a 100644
--- a/core/proto/android/app/notification_channel.proto
+++ b/core/proto/android/app/notification_channel.proto
@@ -21,19 +21,22 @@ option java_multiple_files = true;
package android.app;
import "frameworks/base/core/proto/android/media/audioattributes.proto";
+import "frameworks/base/libs/incident/proto/android/privacy.proto";
/**
* An android.app.NotificationChannel object.
*/
message NotificationChannelProto {
- optional string id = 1;
- optional string name = 2;
- optional string description = 3;
+ option (.android.msg_privacy).dest = DEST_AUTOMATIC;
+
+ optional string id = 1 [ (android.privacy).dest = DEST_EXPLICIT ];
+ optional string name = 2 [ (android.privacy).dest = DEST_EXPLICIT ];
+ optional string description = 3 [ (android.privacy).dest = DEST_EXPLICIT ];
optional int32 importance = 4;
optional bool can_bypass_dnd = 5;
// Default is VISIBILITY_NO_OVERRIDE (-1000).
optional int32 lockscreen_visibility = 6;
- optional string sound = 7;
+ optional string sound = 7 [ (android.privacy).dest = DEST_EXPLICIT ];
optional bool use_lights = 8;
// Default is 0.
optional int32 light_color = 9;
@@ -46,7 +49,7 @@ message NotificationChannelProto {
optional bool show_badge = 13;
// Default is false.
optional bool is_deleted = 14;
- optional string group = 15;
+ optional string group = 15 [ (android.privacy).dest = DEST_EXPLICIT ];
optional android.media.AudioAttributesProto audio_attributes = 16;
// If this is a blockable system notification channel.
optional bool is_blockable_system = 17;
diff --git a/core/proto/android/app/notification_channel_group.proto b/core/proto/android/app/notification_channel_group.proto
index 89a540f2012c..7b270d74f2de 100644
--- a/core/proto/android/app/notification_channel_group.proto
+++ b/core/proto/android/app/notification_channel_group.proto
@@ -21,11 +21,14 @@ option java_multiple_files = true;
package android.app;
import "frameworks/base/core/proto/android/app/notification_channel.proto";
+import "frameworks/base/libs/incident/proto/android/privacy.proto";
/**
* An android.app.NotificationChannelGroup object.
*/
message NotificationChannelGroupProto {
+ option (.android.msg_privacy).dest = DEST_EXPLICIT;
+
optional string id = 1;
optional string name = 2;
optional string description = 3;
diff --git a/core/proto/android/app/notificationmanager.proto b/core/proto/android/app/notificationmanager.proto
index 7d774aeab551..e991688c218c 100644
--- a/core/proto/android/app/notificationmanager.proto
+++ b/core/proto/android/app/notificationmanager.proto
@@ -20,10 +20,14 @@ option java_multiple_files = true;
package android.app;
+import "frameworks/base/libs/incident/proto/android/privacy.proto";
+
/**
- * An android.app.NotificationMananger.Policy object.
+ * An android.app.NotificationManager.Policy object.
*/
message PolicyProto {
+ option (.android.msg_privacy).dest = DEST_AUTOMATIC;
+
enum Category {
CATEGORY_UNKNOWN = 0;
// Reminder notifications are prioritized.
@@ -36,6 +40,11 @@ message PolicyProto {
CALLS = 4;
// Calls from repeat callers are prioritized.
REPEAT_CALLERS = 5;
+ // Alarms are prioritized.
+ ALARMS = 6;
+ // Media, system, game (catch-all for non-never suppressible sounds) are
+ // prioritized.
+ MEDIA_SYSTEM_OTHER = 7;
}
repeated Category priority_categories = 1;
diff --git a/core/proto/android/service/notification.proto b/core/proto/android/service/notification.proto
index 65df89a9a85e..9013a23664f6 100644
--- a/core/proto/android/service/notification.proto
+++ b/core/proto/android/service/notification.proto
@@ -25,8 +25,11 @@ import "frameworks/base/core/proto/android/app/notification_channel_group.proto"
import "frameworks/base/core/proto/android/app/notificationmanager.proto";
import "frameworks/base/core/proto/android/content/component_name.proto";
import "frameworks/base/core/proto/android/media/audioattributes.proto";
+import "frameworks/base/libs/incident/proto/android/privacy.proto";
message NotificationServiceDumpProto {
+ option (.android.msg_privacy).dest = DEST_AUTOMATIC;
+
repeated NotificationRecordProto records = 1;
optional ZenModeProto zen = 2;
@@ -45,7 +48,9 @@ message NotificationServiceDumpProto {
}
message NotificationRecordProto {
- optional string key = 1;
+ option (.android.msg_privacy).dest = DEST_AUTOMATIC;
+
+ optional string key = 1 [ (.android.privacy).dest = DEST_EXPLICIT ];
enum State {
ENQUEUED = 0;
@@ -54,21 +59,25 @@ message NotificationRecordProto {
}
optional State state = 2;
optional int32 flags = 3;
- optional string channelId = 4;
- optional string sound = 5;
+ optional string channelId = 4 [ (.android.privacy).dest = DEST_EXPLICIT ];
+ optional string sound = 5 [ (.android.privacy).dest = DEST_EXPLICIT ];
optional .android.media.AudioAttributesProto audio_attributes = 6;
optional bool can_vibrate = 7;
optional bool can_show_light = 8;
- optional string group_key = 9;
+ optional string group_key = 9 [ (.android.privacy).dest = DEST_EXPLICIT ];
optional int32 importance = 10;
}
message ListenersDisablingEffectsProto {
+ option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
optional int32 hint = 1;
repeated ManagedServiceInfoProto listeners = 2;
}
message ManagedServiceInfoProto {
+ option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
optional android.content.ComponentNameProto component = 1;
optional int32 user_id = 2;
optional string service = 3;
@@ -77,10 +86,14 @@ message ManagedServiceInfoProto {
}
message ManagedServicesProto {
- optional string caption = 1;
+ option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+ optional string caption = 1 [ (.android.privacy).dest = DEST_EXPLICIT ];
message ServiceProto {
- repeated string name = 1;
+ option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+ repeated string name = 1 [ (.android.privacy).dest = DEST_EXPLICIT ];
optional int32 user_id = 2;
optional bool is_primary = 3;
}
@@ -97,9 +110,13 @@ message ManagedServicesProto {
}
message RankingHelperProto {
+ option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
repeated string notification_signal_extractors = 1;
message RecordProto {
+ option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
optional string package = 1;
// Default value is UNKNOWN_UID = USER_NULL = -10000.
optional int32 uid = 2;
@@ -118,16 +135,72 @@ message RankingHelperProto {
repeated RecordProto records_restored_without_uid = 3;
}
-message ZenModeProto {
- enum ZenMode {
- ZEN_MODE_OFF = 0;
- ZEN_MODE_IMPORTANT_INTERRUPTIONS = 1;
- ZEN_MODE_NO_INTERRUPTIONS = 2;
- ZEN_MODE_ALARMS = 3;
+enum ZenMode {
+ ZEN_MODE_OFF = 0;
+ ZEN_MODE_IMPORTANT_INTERRUPTIONS = 1;
+ ZEN_MODE_NO_INTERRUPTIONS = 2;
+ ZEN_MODE_ALARMS = 3;
+}
+
+// An android.service.notification.Condition object.
+message ConditionProto {
+ option (android.msg_privacy).dest = DEST_EXPLICIT;
+
+ optional string id = 1;
+ optional string summary = 2;
+ optional string line_1 = 3;
+ optional string line_2 = 4;
+ optional int32 icon = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
+
+ enum State {
+ // Indicates that Do Not Disturb should be turned off.
+ STATE_FALSE = 0;
+ // Indicates that Do Not Disturb should be turned on.
+ STATE_TRUE = 1;
+ STATE_UNKNOWN = 2;
+ STATE_ERROR = 3;
}
+ optional State state = 6 [ (android.privacy).dest = DEST_AUTOMATIC ];
+
+ optional int32 flags = 7 [ (android.privacy).dest = DEST_AUTOMATIC ];
+}
+
+// An android.service.notification.ZenModeConfig.ZenRule object.
+message ZenRuleProto {
+ option (android.msg_privacy).dest = DEST_EXPLICIT;
+
+ // Required for automatic (unique).
+ optional string id = 1;
+ // Required for automatic.
+ optional string name = 2;
+ // Required for automatic.
+ optional int64 creation_time_ms = 3 [
+ (android.privacy).dest = DEST_AUTOMATIC
+ ];
+ optional bool enabled = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
+ // Package name, only used for manual rules.
+ optional string enabler = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
+ // User manually disabled this instance.
+ optional bool is_snoozing = 6 [
+ (android.privacy).dest = DEST_AUTOMATIC
+ ];
+ optional ZenMode zen_mode = 7 [
+ (android.privacy).dest = DEST_AUTOMATIC
+ ];
+
+ // Required for automatic.
+ optional string condition_id = 8;
+ optional ConditionProto condition = 9;
+ optional android.content.ComponentNameProto component = 10;
+}
+
+// A dump from com.android.server.notification.ZenModeHelper.
+message ZenModeProto {
+ option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
optional ZenMode zen_mode = 1;
- repeated string enabled_active_conditions = 2;
+ repeated ZenRuleProto enabled_active_conditions = 2;
optional int32 suppressed_effects = 3;
- repeated string suppressors = 4;
+ repeated android.content.ComponentNameProto suppressors = 4;
optional android.app.PolicyProto policy = 5;
}
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 4c9da8949cc9..5e3d77874e9b 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -3421,7 +3421,7 @@ public class NotificationManagerService extends SystemService {
long zenLog = proto.start(NotificationServiceDumpProto.ZEN);
mZenModeHelper.dump(proto);
for (ComponentName suppressor : mEffectsSuppressors) {
- proto.write(ZenModeProto.SUPPRESSORS, suppressor.toString());
+ suppressor.writeToProto(proto, ZenModeProto.SUPPRESSORS);
}
proto.end(zenLog);
diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java
index 932e4f948a82..2859613c0047 100644
--- a/services/core/java/com/android/server/notification/ZenModeHelper.java
+++ b/services/core/java/com/android/server/notification/ZenModeHelper.java
@@ -553,16 +553,15 @@ public class ZenModeHelper {
}
void dump(ProtoOutputStream proto) {
-
proto.write(ZenModeProto.ZEN_MODE, mZenMode);
synchronized (mConfig) {
if (mConfig.manualRule != null) {
- proto.write(ZenModeProto.ENABLED_ACTIVE_CONDITIONS, mConfig.manualRule.toString());
+ mConfig.manualRule.writeToProto(proto, ZenModeProto.ENABLED_ACTIVE_CONDITIONS);
}
for (ZenRule rule : mConfig.automaticRules.values()) {
if (rule.enabled && rule.condition.state == Condition.STATE_TRUE
&& !rule.snoozing) {
- proto.write(ZenModeProto.ENABLED_ACTIVE_CONDITIONS, rule.toString());
+ rule.writeToProto(proto, ZenModeProto.ENABLED_ACTIVE_CONDITIONS);
}
}
mConfig.toNotificationPolicy().writeToProto(proto, ZenModeProto.POLICY);