// 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: 15 module arc.mojom; import "bitmap.mojom"; import "gfx.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, }; [Extensible, MinVersion=12] enum ArcNotificationRemoteInputState { CLOSED = 0, OPENED = 1, }; // 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 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 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? 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=12] ArcNotificationRemoteInputState remote_input_state; // Indicates a rect for which Android wants to handle swipe events for by // itself. The coordinates in this Rect are in Android pixels and represent // a sub-rectangle of the notification, with the origin being the top left // of the notification. [MinVersion=14] Rect? swipe_input_rect; }; [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; }; // Next Method ID: 6 interface NotificationsHost { // Tells the Chrome that a notification is posted (created or updated) on // Android. If you know that the notification exists, please consider to use // OnNotificationUpdate instead. // |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); [MinVersion=13] // Notifies that an existing notiication is updated on Android. OnNotificationUpdated@5(ArcNotificationData notification_data); }; // Next Method ID: 6 // TODO(lhchavez): Migrate all request/response messages to Mojo. interface NotificationsInstance { // DEPRECATED: Please use Init@5 instead. InitDeprecated@0(NotificationsHost host_ptr); // Establishes full-duplex communication with the host. [MinVersion=14] Init@5(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); };