| // 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); |
| }; |