// Copyright (c) 2013 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.
// Use the chrome.notifications
API to create rich notifications
// using templates and show these notifications to users in the system tray.
namespace notifications {
[noinline_doc] enum TemplateType {
// icon, title, message, expandedMessage, up to two buttons
basic,
// icon, title, message, expandedMessage, image, up to two buttons
image,
// icon, title, message, items, up to two buttons
list,
// icon, title, message, progress, up to two buttons
progress
};
enum PermissionLevel {
// User has elected to show notifications from the app or extension.
// This is the default at install time.
granted,
// User has elected not to show notifications from the app or extension.
denied
};
dictionary NotificationItem {
// Title of one item of a list notification.
DOMString title;
// Additional details about this item.
DOMString message;
};
[nodoc] dictionary NotificationBitmap {
long width;
long height;
ArrayBuffer? data;
};
dictionary NotificationButton {
DOMString title;
DOMString? iconUrl;
[nodoc] NotificationBitmap? iconBitmap;
};
dictionary NotificationOptions {
// Which type of notification to display.
// Required for $(ref:notifications.create) method.
TemplateType? type;
// Sender's avatar, app icon, or a thumbnail for image notifications.
// Required for $(ref:notifications.create) method.
DOMString? iconUrl;
[nodoc] NotificationBitmap? iconBitmap;
// Title of the notification (e.g. sender name for email).
// Required for $(ref:notifications.create) method.
DOMString? title;
// Main notification content.
// Required for $(ref:notifications.create) method.
DOMString? message;
// Alternate notification content with a lower-weight font.
DOMString? contextMessage;
// Priority ranges from -2 to 2. -2 is lowest priority. 2 is highest. Zero
// is default.
long? priority;
// A timestamp associated with the notification, in milliseconds past the
// epoch (e.g. Date.now() + n
).
double? eventTime;
// Text and icons for up to two notification action buttons.
NotificationButton[]? buttons;
// Secondary notification content.
[nodoc] DOMString? expandedMessage;
// Image thumbnail for image-type notifications.
DOMString? imageUrl;
[nodoc] NotificationBitmap? imageBitmap;
// Items for multi-item notifications.
NotificationItem[]? items;
// Current progress ranges from 0 to 100.
long? progress;
// Whether to show UI indicating that the app will visibly respond to
// clicks on the body of a notification.
boolean? isClickable;
};
callback CreateCallback = void (DOMString notificationId);
callback UpdateCallback = void (boolean wasUpdated);
callback ClearCallback = void (boolean wasCleared);
callback GetAllCallback = void (object notifications);
callback PermissionLevelCallback = void (PermissionLevel level);
interface Functions {
// Creates and displays a notification.
// |notificationId|: Identifier of the notification. If it is empty, this
// method generates an id. If it matches an existing notification, this
// method first clears that notification before proceeding with the create
// operation.
// |options|: Contents of the notification.
// |callback|: Returns the notification id (either supplied or generated)
// that represents the created notification.
static void create(DOMString notificationId,
NotificationOptions options,
CreateCallback callback);
// Updates an existing notification.
// |notificationId|: The id of the notification to be updated. This is
// returned by $(ref:notifications.create) method.
// |options|: Contents of the notification to update to.
// |callback|: Called to indicate whether a matching notification existed.
static void update(DOMString notificationId,
NotificationOptions options,
UpdateCallback callback);
// Clears the specified notification.
// |notificationId|: The id of the notification to be cleared. This is
// returned by $(ref:notifications.create) method.
// |callback|: Called to indicate whether a matching notification existed.
static void clear(DOMString notificationId, ClearCallback callback);
// Retrieves all the notifications.
// |callback|: Returns the set of notification_ids currently in the system.
static void getAll(GetAllCallback callback);
// Retrieves whether the user has enabled notifications from this app
// or extension.
// |callback|: Returns the current permission level.
static void getPermissionLevel(PermissionLevelCallback callback);
};
interface Events {
// The notification closed, either by the system or by user action.
static void onClosed(DOMString notificationId, boolean byUser);
// The user clicked in a non-button area of the notification.
static void onClicked(DOMString notificationId);
// The user pressed a button in the notification.
static void onButtonClicked(DOMString notificationId, long buttonIndex);
// The user changes the permission level.
static void onPermissionLevelChanged(PermissionLevel level);
// The user clicked on a link for the app's notification settings.
static void onShowSettings();
};
};