// 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. module arc; // These values must be matched with the NOTIFICATION_EVENT_* constants in // com.android.server.ArcNotificationListenerService. 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, MAX = BUTTON_5_CLICKED }; // These values must be matched with the NOTIFICATION_TYPE_* constants in // com.android.server.ArcNotificationListenerService. enum ArcNotificationType { BASIC = 0, IMAGE = 1, PROGRESS = 2, MAX = PROGRESS }; struct ArcNotificationButton { // Title string label; }; 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, must be [2,-2] int32 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; }; 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(ArcNotificationData notification_data); // Notifies that a notification is removed on Android. // |key| is the identifier of the notification. OnNotificationRemoved(string key); }; // TODO(lhchavez): Migrate all request/response messages to Mojo. interface NotificationsInstance { // Establishes full-duplex communication with the host. Init(NotificationsHost host_ptr); // Sends an event from Chrome notification UI to Android. // |event| is a type of occured event. SendNotificationEventToAndroid(string key, ArcNotificationEvent event); };