Home | History | Annotate | Download | only in api
      1 // Copyright 2014 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.notificationProvider</code> API to intercept
      6 // notifications that would otherwise go into the Chrome Notification Center,
      7 // get notifiers' information, and inform notifiers about users' actions on the
      8 // notifications.
      9 namespace notificationProvider {
     10 
     11   // TODO(liyanhou): Use notifications.PermissionLevel everywhere and delete
     12   // this type. See http://crbug.com/398266.
     13 
     14   // whether notifications from this notifier is permitted or blocked.
     15   enum NotifierPermissionLevel {
     16     // User has elected to show notifications from the notifier.
     17     // This is the default at install time.
     18     granted,
     19 
     20     // User has elected not to show notifications from the notifier.
     21     denied
     22   };
     23 
     24   enum NotifierType {
     25     // Notifiers that are extensions or applications.
     26     application,
     27 
     28     // Notifiers that are webistes.
     29     web
     30   };
     31 
     32   dictionary Notifier {
     33     // Id of the notifier.
     34     DOMString notifierId;
     35 
     36     // Type of the notifier.
     37     NotifierType type;
     38 
     39     // Name of the notifier.
     40     DOMString name;
     41 
     42     // Icon of the notifier.
     43     notifications.NotificationBitmap notifierIcon;
     44 
     45     // Permission level of the notifier.
     46     NotifierPermissionLevel permissionLevel;
     47 
     48     // If a notifier has advanced settings.
     49     boolean hasSettings;
     50   };
     51 
     52   callback NotifyOnClearedCallback = void (boolean wasCleared);
     53 
     54   callback NotifyOnClickedCallback = void (boolean matchExists);
     55 
     56   callback NotifyOnButtonClickedCallback = void (boolean matchExists);
     57 
     58   callback NotifyOnPermissionLevelChangedCallback = void (boolean wasChanged);
     59 
     60   callback NotifyOnShowSettingsCallback = void (boolean hasSettings);
     61 
     62   callback GetNotifierCallback = void (Notifier notifier);
     63 
     64   callback GetAllNotifiersCallback = void (Notifier[] notifiers);
     65 
     66   interface Functions {
     67     // Inform the notifier that the user cleared a notification sent from that
     68     // notifier.
     69     // |notifierId|: The id of the notifier that sent the notification.
     70     // |notificationId|: The id of the notification that was closed.
     71     // |callback|: Called to indicate whether a matching notification existed.
     72     static void notifyOnCleared(DOMString notifierId,
     73                                 DOMString notificationId,
     74                                 NotifyOnClearedCallback callback);
     75 
     76     // Inform the notifier that the user clicked in a non-button area of a
     77     // notification sent from that notifier.
     78     // |notifierId|: The id of the notifier that sent the notification.
     79     // |notificationId|: The id of the notification that was clicked on.
     80     // |callback|: Called to indicate whether a matching notification existed.
     81     static void notifyOnClicked(DOMString notifierId,
     82                                 DOMString notificationId,
     83                                 NotifyOnClickedCallback callback);
     84 
     85     // Inform the notifier that the user pressed a button in the notification
     86     // sent from that notifier.
     87     // |notifierId|: The id of the notifier that sent the notification.
     88     // |notificationId|: The id of the notification that was clicked on its
     89     // button.
     90     // |buttonIndex|: The index of the button that was clicked.
     91     // |callback|: Called to indicate whether a matching notification existed.
     92     static void notifyOnButtonClicked(DOMString notifierId,
     93                                       DOMString notificationId,
     94                                       long buttonIndex,
     95                                       NotifyOnButtonClickedCallback callback);
     96 
     97     // Inform the notifier that the user changed the permission level of that
     98     // notifier.
     99     // |notifierId|: The id of the notifier that sent the notification.
    100     // |notifierType|: The type of the notifier that sent the notification.
    101     // |level|: The perission level of the notifier
    102     // |callback|: Called to indicate whether the permission level was changed.
    103     static void notifyOnPermissionLevelChanged(
    104                               DOMString notifierId,
    105                               NotifierType notifierType,
    106                               NotifierPermissionLevel level,
    107                               NotifyOnPermissionLevelChangedCallback callback);
    108 
    109     // Inform the notifier that the user chose to see advanced settings of that
    110     // notifier.
    111     // |notifierId|: The id of the notifier that sent the notification.
    112     // |notifierType|: The type of the notifier that sent the notification.
    113     // |callback|: Called to indicate whether the notifier has extra settings.
    114     static void notifyOnShowSettings(DOMString notifierId,
    115                                      NotifierType notifierType,
    116                                      NotifyOnShowSettingsCallback callback);
    117 
    118     // To get a notifier from it's notifier ID.
    119     // |callback|: Returns the notifier object of the given ID.
    120     static void getNotifier(GetNotifierCallback callback);
    121 
    122     // To get all the notifiers that could send notifications.
    123     // |callback|: Returns the set of notifiers currently in the system.
    124     static void getAllNotifiers(GetAllNotifiersCallback callback);
    125   };
    126 
    127   interface Events {
    128     // A new notification is created.
    129     // |notifierId|: The id of the notifier that sent the new notification.
    130     // |notificationId|: The id of the newly created notification.
    131     // |options|: The content of the notification: type, title, message etc.
    132     static void onCreated(DOMString notifierId, 
    133                           DOMString notificationId, 
    134                           notifications.NotificationOptions options);
    135 
    136     // A notification is updated by the notifier.
    137     // |notifierId|: The id of the notifier that sent the updated notification.
    138     // |notificationId|: The id of the updated notification.
    139     // |options|: The content of the notification: type, title, message etc.
    140     static void onUpdated(DOMString notifierId,
    141                           DOMString notificationId,
    142                           notifications.NotificationOptions options);
    143 
    144     // A notification is cleared by the notifier.
    145     // |notifierId|: The id of the notifier that cleared the notification.
    146     // |notificationId|: The id of the cleared notification.
    147     static void onCleared(DOMString notifierId, DOMString notificationId);
    148   };
    149 };
    150