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