Pepper_31_C_interfaces
ppb_ext_alarms_dev.h
Go to the documentation of this file.
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 
6 /* From extensions/dev/ppb_ext_alarms_dev.idl,
7  * modified Wed Mar 20 13:50:11 2013.
8  */
9 
10 #ifndef PPAPI_C_EXTENSIONS_DEV_PPB_EXT_ALARMS_DEV_H_
11 #define PPAPI_C_EXTENSIONS_DEV_PPB_EXT_ALARMS_DEV_H_
12 
13 #include "ppapi/c/pp_bool.h"
14 #include "ppapi/c/pp_completion_callback.h"
15 #include "ppapi/c/pp_instance.h"
16 #include "ppapi/c/pp_macros.h"
17 #include "ppapi/c/pp_stdint.h"
18 #include "ppapi/c/pp_var.h"
19 
20 #define PPB_EXT_ALARMS_DEV_INTERFACE_0_1 "PPB_Ext_Alarms(Dev);0.1"
21 #define PPB_EXT_ALARMS_DEV_INTERFACE PPB_EXT_ALARMS_DEV_INTERFACE_0_1
22 
23 /**
24  * @file
25  * This file defines the Pepper equivalent of the <code>chrome.alarms</code>
26  * extension API.
27  */
28 
29 
30 #include "ppapi/c/extensions/dev/ppb_ext_events_dev.h"
31 
32 /**
33  * @addtogroup Typedefs
34  * @{
35  */
36 /**
37  * A dictionary <code>PP_Var</code> which contains:
38  * - "name" : string <code>PP_Var</code>
39  * Name of this alarm.
40  *
41  * - "scheduledTime" : double <code>PP_Var</code>
42  * Time at which this alarm was scheduled to fire, in milliseconds past the
43  * epoch (e.g. <code>Date.now() + n</code>). For performance reasons, the
44  * alarm may have been delayed an arbitrary amount beyond this.
45  *
46  * - "periodInMinutes" : double or undefined <code>PP_Var</code>
47  * If not undefined, the alarm is a repeating alarm and will fire again in
48  * <var>periodInMinutes</var> minutes.
49  */
51 
52 /**
53  * A dictionary <code>PP_Var</code> which contains
54  * - "when" : double or undefined <code>PP_Var</code>
55  * Time at which the alarm should fire, in milliseconds past the epoch
56  * (e.g. <code>Date.now() + n</code>).
57  *
58  * - "delayInMinutes" : double or undefined <code>PP_Var</code>
59  * Length of time in minutes after which the
60  * <code>PP_Ext_Alarms_OnAlarm_Dev</code> event should fire.
61  *
62  * - "periodInMinutes" : double or undefined <code>PP_Var</code>
63  * If set, the <code>PP_Ext_Alarms_OnAlarm_Dev</code> event should fire every
64  * <var>periodInMinutes</var> minutes after the initial event specified by
65  * <var>when</var> or <var>delayInMinutes</var>. If not set, the alarm will
66  * only fire once.
67  */
69 
70 /**
71  * An array <code>PP_Var</code> which contains elements of
72  * <code>PP_Ext_Alarms_Alarm_Dev</code>.
73  */
75 /**
76  * @}
77  */
78 
79 /**
80  * @addtogroup Interfaces
81  * @{
82  */
84  /**
85  * Creates an alarm. Near the time(s) specified by <var>alarm_info</var>,
86  * the <code>PP_Ext_Alarms_OnAlarm_Dev</code> event is fired. If there is
87  * another alarm with the same name (or no name if none is specified), it will
88  * be cancelled and replaced by this alarm.
89  *
90  * In order to reduce the load on the user's machine, Chrome limits alarms
91  * to at most once every 1 minute but may delay them an arbitrary amount
92  * more. That is, setting
93  * <code>$ref:[PP_Ext_Alarms_AlarmCreateInfo_Dev.delayInMinutes
94  * delayInMinutes]</code> or
95  * <code>$ref:[PP_Ext_Alarms_AlarmCreateInfo_Dev.periodInMinutes
96  * periodInMinutes]</code> to less than <code>1</code> will not be honored
97  * and will cause a warning.
98  * <code>$ref:[PP_Ext_Alarms_AlarmCreateInfo_Dev.when when]</code> can be set
99  * to less than 1 minute after "now" without warning but won't actually cause
100  * the alarm to fire for at least 1 minute.
101  *
102  * To help you debug your app or extension, when you've loaded it unpacked,
103  * there's no limit to how often the alarm can fire.
104  *
105  * @param[in] instance A <code>PP_Instance</code>.
106  * @param[in] name A string or undefined <code>PP_Var</code>. Optional name to
107  * identify this alarm. Defaults to the empty string.
108  * @param[in] alarm_info A <code>PP_Var</code> whose contents conform to the
109  * description of <code>PP_Ext_Alarms_AlarmCreateInfo_Dev</code>. Describes
110  * when the alarm should fire. The initial time must be specified by either
111  * <var>when</var> or <var>delayInMinutes</var> (but not both). If
112  * <var>periodInMinutes</var> is set, the alarm will repeat every
113  * <var>periodInMinutes</var> minutes after the initial event. If neither
114  * <var>when</var> or <var>delayInMinutes</var> is set for a repeating alarm,
115  * <var>periodInMinutes</var> is used as the default for
116  * <var>delayInMinutes</var>.
117  */
118  void (*Create)(PP_Instance instance,
119  struct PP_Var name,
121  /**
122  * Retrieves details about the specified alarm.
123  *
124  * @param[in] instance A <code>PP_Instance</code>.
125  * @param[in] name A string or undefined <code>PP_Var</code>. The name of the
126  * alarm to get. Defaults to the empty string.
127  * @param[out] alarm A <code>PP_Var</code> whose contents conform to the
128  * description of <code>PP_Ext_Alarms_Alarm_Dev</code>.
129  * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
130  * completion.
131  *
132  * @return An error code from <code>pp_errors.h</code>
133  */
134  int32_t (*Get)(PP_Instance instance,
135  struct PP_Var name,
137  struct PP_CompletionCallback callback);
138  /**
139  * Gets an array of all the alarms.
140  *
141  * @param[in] instance A <code>PP_Instance</code>.
142  * @param[out] alarms A <code>PP_Var</code> whose contents conform to the
143  * description of <code>PP_Ext_Alarms_Alarm_Dev_Array</code>.
144  * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
145  * completion.
146  *
147  * @return An error code from <code>pp_errors.h</code>
148  */
149  int32_t (*GetAll)(PP_Instance instance,
151  struct PP_CompletionCallback callback);
152  /**
153  * Clears the alarm with the given name.
154  *
155  * @param[in] instance A <code>PP_Instance</code>.
156  * @param[in] name A string or undefined <code>PP_Var</code>. The name of the
157  * alarm to clear. Defaults to the empty string.
158  */
159  void (*Clear)(PP_Instance instance, struct PP_Var name);
160  /**
161  * Clears all alarms.
162  *
163  * @param[in] instance A <code>PP_Instance</code>.
164  */
165  void (*ClearAll)(PP_Instance instance);
166 };
167 
169 /**
170  * @}
171  */
172 
173 /**
174  * @addtogroup Typedefs
175  * @{
176  */
177 /**
178  * Fired when an alarm has elapsed. Useful for event pages.
179  *
180  * @param[in] listener_id The listener ID.
181  * @param[inout] user_data The opaque pointer that was used when registering the
182  * listener.
183  * @param[in] alarm A <code>PP_Var</code> whose contents conform to the
184  * description of <code>PP_Ext_Alarms_Alarm_Dev</code>. The alarm that has
185  * elapsed.
186  */
188  uint32_t listener_id,
189  void* user_data,
191 /**
192  * @}
193  */
194 
197  void* user_data) {
198  return PP_Ext_MakeEventListener("alarms.onAlarm;0.1",
200 }
201 
202 #define PP_Ext_Alarms_OnAlarm_Dev PP_Ext_Alarms_OnAlarm_Dev_0_1
203 #endif /* PPAPI_C_EXTENSIONS_DEV_PPB_EXT_ALARMS_DEV_H_ */
204 
void(* PP_Ext_GenericFuncType)(void)
#define PP_INLINE
Definition: pp_macros.h:46
PP_Ext_GenericFuncType func
void(* PP_Ext_Alarms_OnAlarm_Func_Dev_0_1)(uint32_t listener_id, void *user_data, PP_Ext_Alarms_Alarm_Dev alarm)
int32_t(* Get)(PP_Instance instance, struct PP_Var name, PP_Ext_Alarms_Alarm_Dev *alarm, struct PP_CompletionCallback callback)
void(* Create)(PP_Instance instance, struct PP_Var name, PP_Ext_Alarms_AlarmCreateInfo_Dev alarm_info)
void(* Clear)(PP_Instance instance, struct PP_Var name)
PP_INLINE struct PP_Ext_EventListener PP_Ext_MakeEventListener(const char *event_name, PP_Ext_GenericFuncType func, void *user_data)
Definition: pp_var.h:155
void(* ClearAll)(PP_Instance instance)
int32_t PP_Instance
Definition: pp_instance.h:34
int32_t(* GetAll)(PP_Instance instance, PP_Ext_Alarms_Alarm_Dev_Array *alarms, struct PP_CompletionCallback callback)
PP_INLINE struct PP_Ext_EventListener PP_Ext_Alarms_OnAlarm_Dev_0_1(PP_Ext_Alarms_OnAlarm_Func_Dev_0_1 func, void *user_data)