blob: 8e4006aa6861498ce70a069b31e1b19ad9133b2e [file] [log] [blame]
/*
* 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 = "proto2";
package android.service.notification;
option java_multiple_files = true;
option java_outer_classname = "NotificationServiceProto";
import "frameworks/base/core/proto/android/app/notification_channel.proto";
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/core/proto/android/privacy.proto";
message NotificationServiceDumpProto {
option (.android.msg_privacy).dest = DEST_AUTOMATIC;
repeated NotificationRecordProto records = 1;
optional ZenModeProto zen = 2;
optional ManagedServicesProto notification_listeners = 3;
optional int32 listener_hints = 4;
repeated ListenersDisablingEffectsProto listeners_disabling_effects = 5;
optional ManagedServicesProto notification_assistants = 6;
optional ManagedServicesProto condition_providers = 7;
optional RankingHelperProto ranking_config = 8;
}
message NotificationRecordProto {
option (.android.msg_privacy).dest = DEST_AUTOMATIC;
optional string key = 1;
enum State {
ENQUEUED = 0;
POSTED = 1;
SNOOZED = 2;
}
optional State state = 2;
optional int32 flags = 3;
optional string channel_id = 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 [ (.android.privacy).dest = DEST_EXPLICIT ];
optional sint32 importance = 10;
// The package the notification was posted for.
optional string package = 11;
// The package that posted the notification. It might not be the same as package.
optional string delegate_package = 12;
}
message ListenersDisablingEffectsProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
optional int32 hint = 1;
reserved 2; // ManagedServiceInfoProto listeners
repeated android.content.ComponentNameProto listener_components = 3;
}
message ManagedServiceInfoProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
optional android.content.ComponentNameProto component = 1;
optional int32 user_id = 2;
optional string service = 3;
optional bool is_system = 4;
optional bool is_guest = 5;
}
message ManagedServicesProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
// Hard-coded string identifying what the service config is for
// (eg: "notification assistant" or "notification listener").
optional string caption = 1;
message ServiceProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
// Package or component name.
repeated string name = 1;
optional int32 user_id = 2;
optional bool is_primary = 3;
}
repeated ServiceProto approved = 2;
// All of this type/caption enabled for current profiles.
repeated android.content.ComponentNameProto enabled = 3;
repeated ManagedServiceInfoProto live_services = 4;
// Snoozed for current profiles.
repeated android.content.ComponentNameProto snoozed = 5;
}
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;
// Default is IMPORTANCE_UNSPECIFIED (-1000).
optional sint32 importance = 3;
// Default is PRIORITY_DEFAULT (0).
optional int32 priority = 4;
// Default is VISIBILITY_NO_OVERRIDE (-1000).
optional sint32 visibility = 5;
// Default is true.
optional bool show_badge = 6;
repeated android.app.NotificationChannelProto channels = 7;
repeated android.app.NotificationChannelGroupProto channel_groups = 8;
}
repeated RecordProto records = 2;
repeated RecordProto records_restored_without_uid = 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;
// The URI representing the rule being updated.
optional string id = 1;
// A user visible description of the rule state.
optional string summary = 2;
// Android generated strings that detail when ZenMode will end.
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 ZenRules (unique).
optional string id = 1;
// Required for automatic ZenRules.
optional string name = 2;
// Required for automatic ZenRules.
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 ZenRules.
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 ZenRules. The condition's ID, which is the URI
// representing the rule being updated.
optional string condition_id = 8;
optional ConditionProto condition = 9;
optional android.content.ComponentNameProto component = 10;
optional ZenPolicyProto zenPolicy = 11;
// Indicates whether this ZenRule has been modified after its initial creation
optional bool modified = 12 [ (android.privacy).dest = DEST_AUTOMATIC ];
}
// A dump from com.android.server.notification.ZenModeHelper.
message ZenModeProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
optional ZenMode zen_mode = 1;
repeated ZenRuleProto enabled_active_conditions = 2;
optional int32 suppressed_effects = 3;
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;
}
// Next Tag: 2
message PackageRemoteViewInfoProto {
optional string package_name = 1;
// add per-package additional info here (like channels)
}
// Next Tag: 2
message NotificationRemoteViewsProto {
repeated PackageRemoteViewInfoProto package_remote_view_info = 1;
}
/**
* Atom that represents an item in the list of Do Not Disturb rules, pulled from
* NotificationManagerService.java.
*/
message DNDModeProto {
enum Mode {
ROOT_CONFIG = -1; // Used to distinguish the config (one per user) from the rules.
ZEN_MODE_OFF = 0;
ZEN_MODE_IMPORTANT_INTERRUPTIONS = 1;
ZEN_MODE_NO_INTERRUPTIONS = 2;
ZEN_MODE_ALARMS = 3;
}
optional int32 user = 1; // Android user ID (0, 1, 10, ...)
optional bool enabled = 2; // true for ROOT_CONFIG if a manualRule is enabled
optional bool channels_bypassing = 3; // only valid for ROOT_CONFIG
optional Mode zen_mode = 4;
// id is one of the system default rule IDs, or empty
// May also be "MANUAL_RULE" to indicate app-activation of the manual rule.
optional string id = 5;
optional int32 uid = 6; // currently only SYSTEM_UID or 0 for other
optional DNDPolicyProto policy = 7;
}
/**
* Atom that represents a Do Not Disturb policy, an optional detail proto for DNDModeProto.
*/
message DNDPolicyProto {
enum State {
STATE_UNSET = 0;
STATE_ALLOW = 1;
STATE_DISALLOW = 2;
}
optional State calls = 1;
optional State repeat_callers = 2;
optional State messages = 3;
optional State conversations = 4;
optional State reminders = 5;
optional State events = 6;
optional State alarms = 7;
optional State media = 8;
optional State system = 9;
optional State fullscreen = 10;
optional State lights = 11;
optional State peek = 12;
optional State status_bar = 13;
optional State badge = 14;
optional State ambient = 15;
optional State notification_list = 16;
enum PeopleType {
PEOPLE_UNSET = 0;
PEOPLE_ANYONE = 1;
PEOPLE_CONTACTS = 2;
PEOPLE_STARRED = 3;
PEOPLE_NONE = 4;
}
optional PeopleType allow_calls_from = 17;
optional PeopleType allow_messages_from = 18;
enum ConversationType {
CONV_UNSET = 0;
CONV_ANYONE = 1;
CONV_IMPORTANT = 2;
CONV_NONE = 3;
}
optional ConversationType allow_conversations_from = 19;
}