// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module crosapi.mojom;
import "chromeos/crosapi/mojom/notification.mojom";
import "mojo/public/mojom/base/string16.mojom";
// Handles notifications created via the Notifications web platform API and the
// chrome.notifications() extension API. Shows the notifications in the
// message center. Implemented in ash-chrome.
[Stable, Uuid="0d9c1eb6-a383-45c0-ac11-2336e1227f74"]
interface MessageCenter {
// Displays a notification. If the notification's ID is the same as an
// existing notification, that notification is replaced. The delegate will be
// called with user actions.
DisplayNotification@0(Notification notification,
pending_remote<NotificationDelegate> delegate);
// Closes a notification by the ID provided in |notification| above.
CloseNotification@1(string id);
// Returns the IDs of the currently-displayed notifications. Order within the
// array is not guaranteed. Mojo does not support sets.
[MinVersion=1]
GetDisplayedNotifications@2() => (array<string> ids);
};
// Handles responses to user actions on notifications. Multiple actions may
// occur on a single notification. For example, clicking a notification button
// may not close the notification. Implemented in lacros-chrome.
[Stable, Uuid="1a850ac9-a813-4d0d-aa2d-b0d6cf10d548"]
interface NotificationDelegate {
// Called when a notification previously displayed by the client is closed.
OnNotificationClosed@0(bool by_user);
// Called when the body of a notification is clicked.
OnNotificationClicked@1();
// Called when a notification that has buttons (e.g., "Learn more") receives a
// click on one of the buttons.
OnNotificationButtonClicked@2(
uint32 button_index,
// This string contains input that is submitted for a notification button
// with input. It's value will be null if the clicked button has no
// associated input.
[MinVersion=2] mojo_base.mojom.String16? reply);
// Called when a notification's settings button has been pressed.
OnNotificationSettingsButtonClicked@3();
// Called when a notification has been disabled (via inline settings).
OnNotificationDisabled@4();
};