chromium/chromeos/crosapi/mojom/message_center.mojom

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