summaryrefslogtreecommitdiff
path: root/chromium/components/arc/common/notifications.mojom
blob: ae9a48cc9d8f8143e9096e92fe9bedd0cb902106 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Next MinVersion: 11

module arc.mojom;

import "bitmap.mojom";

// These values must be matched with the NOTIFICATION_EVENT_* constants in
// com.android.server.ArcNotificationListenerService.
[Extensible]
enum ArcNotificationEvent {
  BODY_CLICKED = 0,
  CLOSED = 1,
  // Five buttons at maximum (message_center::kNotificationMaximumItems = 5).
  BUTTON_1_CLICKED = 2,
  BUTTON_2_CLICKED = 3,
  BUTTON_3_CLICKED = 4,
  BUTTON_4_CLICKED = 5,
  BUTTON_5_CLICKED = 6,
  // expand/collapse the bundled notification
  [MinVersion=10] TOGGLE_EXPANSION = 7,
};

// These values must be matched with the NOTIFICATION_TYPE_* constants in
// com.android.server.ArcNotificationListenerService.
enum ArcNotificationType {
  BASIC = 0,
  IMAGE = 1,
  PROGRESS = 2,
  LIST = 3,
};

// These values are corresponding to the priorities of Android notification.
[Extensible]
enum ArcNotificationPriority {
  MIN = -2,  // same value as Notification.PRIORITY_MIN
  LOW = -1,  // same value as Notification.PRIORITY_LOW
  DEFAULT = 0,  // same value as Notification.PRIORITY_DEFAULT
  HIGH = 1,  // same value as Notification.PRIORITY_HIGH
  MAX = 2,  // same value as Notification.PRIORITY_MAX
};

struct ArcNotificationButton {
  // Title
  string label;
};

[Extensible, MinVersion=10]
enum ArcNotificationExpandState {
  FIXED_SIZE = 0,
  COLLAPSED = 1,
  EXPANDED = 2,
};

// These values represent what shows in an ARC custom notification.
[Extensible, MinVersion=11]
enum ArcNotificationShownContents {
  // The normal notification contents are shown.
  CONTENTS_SHOWN = 0,
  // The notification settings view is shown.
  SETTINGS_SHOWN = 1,
};

struct ArcNotificationData {
  // Identifier of notification
  string key;
  // Type of notification
  ArcNotificationType type;
  // Body message of notification
  string message;
  // Title of notification
  string title;
  // Mimetype of |icon_data|
  string icon_mimetype;
  // Binary data of the icon
  array<uint8> icon_data;
  // Priority of notification
  ArcNotificationPriority priority;
  // Timestamp related to the notification
  int64 time;
  // The current value of progress, must be [0, progress_max].
  int32 progress_current;
  // The maximum value of progress.
  int32 progress_max;
  // Action buttons
  array<ArcNotificationButton> buttons;
  // Flag if the notification has FLAG_NO_CLEAR.
  [MinVersion=1]
  bool no_clear;
  // Flag if the notification has FLAG_ONGOING_EVENT.
  [MinVersion=1]
  bool ongoing_event;
  // Subtexts for list notifications.
  [MinVersion=3]
  array<string>? texts;
  // Image for image notifications.
  [MinVersion=3]
  ArcBitmap? big_picture;
  // Flag if a notification is a custom notification backed by a notification
  // surface. Note the flag is only used on creation. Change of the flag
  // on notification update is ignored.
  [MinVersion=5]
  bool use_custom_notification;
  [MinVersion=6]
  ArcBitmap? small_icon;
  // A snapshot image to show before the notification window is created.
  [MinVersion=7]
  ArcBitmap? snapshot_image;
  [MinVersion=7]
  float snapshot_image_scale;
  // Accessibility text
  [MinVersion=8]
  string? accessible_name;
  // Flag if the notification is expandable
  [MinVersion=10]
  ArcNotificationExpandState expand_state;
  // Flag for what shows in a notification.
  [MinVersion=11]
  ArcNotificationShownContents shown_contents;
};

[MinVersion=2]
struct ArcToastData {
  // Unique identifier
  string id;
  // Toast text.
  string? text;
  // Toast duration in milliseconds. If -1, the toast will be displayed until
  // the dismiss button is clicked.
  int32 duration;
  // Toast dismiss button label, if set. Otherwise, default label is used for
  // the dismiss button.
  [MinVersion=4]
  string? dismiss_text;
};

interface NotificationsHost {
  // Tells the Chrome that a notification is posted (created or updated) on
  // Android.
  // |notification_data| is the data of notification (id, texts, icon and ...).
  OnNotificationPosted@0(ArcNotificationData notification_data);

  // Notifies that a notification is removed on Android.
  // |key| is the identifier of the notification.
  OnNotificationRemoved@1(string key);

  [MinVersion=2]
  // Shows a toast, or queues it if another toast is visible.
  OnToastPosted@2(ArcToastData data);

  [MinVersion=2]
  // Hides the visible toast immediately, or cancels the scheduled one.
  OnToastCancelled@3(ArcToastData data);
};

// TODO(lhchavez): Migrate all request/response messages to Mojo.
interface NotificationsInstance {
  // Establishes full-duplex communication with the host.
  Init@0(NotificationsHost host_ptr);

  // Sends an event from Chrome notification UI to Android.
  // |event| is a type of occured event.
  SendNotificationEventToAndroid@1(string key, ArcNotificationEvent event);

  // Requests to Android side to create the notification window.
  // |key| is the identifier of the notification which is generated by Android
  // side.
  [MinVersion=7]
  CreateNotificationWindow@2(string key);

  // Requests to Android side to close the notification window.
  // |key| is the identifier of the notification which is generated by Android
  // side.
  [MinVersion=7]
  CloseNotificationWindow@3(string key);

  // Requests to Android side to open notification settings.
  // |key| is the identifier of the notification which is generated by Android
  // side.
  [MinVersion=9]
  OpenNotificationSettings@4(string key);
};