• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Use the <code>chrome.notifications</code> API to create rich notifications
6// using templates and show these notifications to users in the system tray.
7namespace notifications {
8  [noinline_doc] enum TemplateType {
9    // icon, title, message, expandedMessage, up to two buttons
10    basic,
11
12    // icon, title, message, expandedMessage, image, up to two buttons
13    image,
14
15    // icon, title, message, items, up to two buttons
16    list,
17
18    // icon, title, message, progress, up to two buttons
19    progress
20  };
21
22  enum PermissionLevel {
23    // User has elected to show notifications from the app or extension.
24    // This is the default at install time.
25    granted,
26
27    // User has elected not to show notifications from the app or extension.
28    denied
29  };
30
31  dictionary NotificationItem {
32    // Title of one item of a list notification.
33    DOMString title;
34
35    // Additional details about this item.
36    DOMString message;
37  };
38
39  [nodoc] dictionary NotificationBitmap {
40    long width;
41    long height;
42    ArrayBuffer? data;
43  };
44
45  dictionary NotificationButton {
46    DOMString title;
47    DOMString? iconUrl;
48    [nodoc] NotificationBitmap? iconBitmap;
49  };
50
51  dictionary NotificationOptions {
52    // Which type of notification to display.
53    // <em>Required for $ref:notifications.create</em> method.
54    TemplateType? type;
55
56    // Sender's avatar, app icon, or a thumbnail for image notifications.
57    // <em>Required for $ref:notifications.create</em> method.
58    DOMString? iconUrl;
59    [nodoc] NotificationBitmap? iconBitmap;
60
61    // Title of the notification (e.g. sender name for email).
62    // <em>Required for $ref:notifications.create</em> method.
63    DOMString? title;
64
65    // Main notification content.
66    // <em>Required for $ref:notifications.create</em> method.
67    DOMString? message;
68
69    // Alternate notification content with a lower-weight font.
70    DOMString? contextMessage;
71
72    // Priority ranges from -2 to 2. -2 is lowest priority. 2 is highest. Zero
73    // is default.
74    long? priority;
75
76    // A timestamp associated with the notification, in milliseconds past the
77    // epoch (e.g. <code>Date.now() + n</code>).
78    double? eventTime;
79
80    // Text and icons for up to two notification action buttons.
81    NotificationButton[]? buttons;
82
83    // Secondary notification content.
84    [nodoc] DOMString? expandedMessage;
85
86    // Image thumbnail for image-type notifications.
87    DOMString? imageUrl;
88    [nodoc] NotificationBitmap? imageBitmap;
89
90    // Items for multi-item notifications.
91    NotificationItem[]? items;
92
93    // Current progress ranges from 0 to 100.
94    long? progress;
95
96    // Whether to show UI indicating that the app will visibly respond to
97    // clicks on the body of a notification.
98    boolean? isClickable;
99  };
100
101  callback CreateCallback = void (DOMString notificationId);
102
103  callback UpdateCallback = void (boolean wasUpdated);
104
105  callback ClearCallback = void (boolean wasCleared);
106
107  callback GetAllCallback = void (object notifications);
108
109  callback PermissionLevelCallback = void (PermissionLevel level);
110
111  interface Functions {
112    // Creates and displays a notification.
113    // |notificationId|: Identifier of the notification. If it is empty, this
114    // method generates an id. If it matches an existing notification, this
115    // method first clears that notification before proceeding with the create
116    // operation.
117    // |options|: Contents of the notification.
118    // |callback|: Returns the notification id (either supplied or generated)
119    // that represents the created notification.
120    static void create(DOMString notificationId,
121                       NotificationOptions options,
122                       CreateCallback callback);
123
124    // Updates an existing notification.
125    // |notificationId|: The id of the notification to be updated. This is
126    // returned by $ref:notifications.create method.
127    // |options|: Contents of the notification to update to.
128    // |callback|: Called to indicate whether a matching notification existed.
129    static void update(DOMString notificationId,
130                       NotificationOptions options,
131                       UpdateCallback callback);
132
133    // Clears the specified notification.
134    // |notificationId|: The id of the notification to be cleared. This is
135    // returned by $ref:notifications.create method.
136    // |callback|: Called to indicate whether a matching notification existed.
137    static void clear(DOMString notificationId, ClearCallback callback);
138
139    // Retrieves all the notifications.
140    // |callback|: Returns the set of notification_ids currently in the system.
141    static void getAll(GetAllCallback callback);
142
143    // Retrieves whether the user has enabled notifications from this app
144    // or extension.
145    // |callback|: Returns the current permission level.
146    static void getPermissionLevel(PermissionLevelCallback callback);
147  };
148
149  interface Events {
150    // The notification closed, either by the system or by user action.
151    static void onClosed(DOMString notificationId, boolean byUser);
152
153    // The user clicked in a non-button area of the notification.
154    static void onClicked(DOMString notificationId);
155
156    // The user pressed a button in the notification.
157    static void onButtonClicked(DOMString notificationId, long buttonIndex);
158
159    // The user changes the permission level.
160    static void onPermissionLevelChanged(PermissionLevel level);
161
162    // The user clicked on a link for the app's notification settings.
163    static void onShowSettings();
164  };
165
166};
167