summaryrefslogtreecommitdiffstats
path: root/chrome/common/extensions/api/notifications.idl
blob: cba11d4d5d95e3fd8c414b7278dbd1e4b4f1a8c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
// 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.

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
  };

  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.
    TemplateType type;

    // Sender's avatar, app icon, or a thumbnail for image notifications.
    DOMString iconUrl;
    [nodoc] NotificationBitmap? iconBitmap;

    // Title of the notification (e.g. sender name for email).
    DOMString title;

    // Main notification content.
    DOMString message;

    // 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. <code>Date.now() + n</code>).
    double? eventTime;

    // Text and icons of 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;
  };

  callback CreateCallback = void (DOMString notificationId);

  callback UpdateCallback = void (boolean wasUpdated);

  callback ClearCallback = void (boolean wasCleared);

  callback GetAllCallback = void (object notifications);

  interface Functions {
    // Creates and displays a notification having the contents in |options|,
    // identified by the id |notificationId|. If |notificationId| is empty,
    // |create| generates an id. If |notificationId| matches an existing
    // notification, |create| first clears that notification before proceeding
    // with the create operation. |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 having the id |notificationId| and the
    // options |options|. |callback| indicates whether a matching notification
    // existed.
    static void update(DOMString notificationId,
                       NotificationOptions options,
                       UpdateCallback callback);

    // Given a |notificationId| returned by the |create| method, clears the
    // corresponding notification. |callback| indicates whether a matching
    // notification existed.
    static void clear(DOMString notificationId, ClearCallback callback);

    // |callback| is executed with the set of notification_ids currently in
    // the system.
    static void getAll(GetAllCallback 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);
  };

};