diff options
author | yzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-11 01:52:41 +0000 |
---|---|---|
committer | yzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-11 01:52:41 +0000 |
commit | 517db2704c7d8f29ed75f3848cbf7eb1c1b6a0be (patch) | |
tree | 6428c20b7616fe5199b8ecd99274a15dc984973c /ppapi/api/extensions | |
parent | 64363442d6b37bb070b65b32e843fcc65981f505 (diff) | |
download | chromium_src-517db2704c7d8f29ed75f3848cbf7eb1c1b6a0be.zip chromium_src-517db2704c7d8f29ed75f3848cbf7eb1c1b6a0be.tar.gz chromium_src-517db2704c7d8f29ed75f3848cbf7eb1c1b6a0be.tar.bz2 |
Add C/C++ interfaces for PPB_Ext_Alarms_Dev and PPB_Ext_Events_Dev.
This CL also adds necessary C++ utilities to support these interfaces.
An example of using these APIs:
https://codereview.chromium.org/12387051/
BUG=None
TEST=None
Review URL: https://codereview.chromium.org/12295043
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@187227 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/api/extensions')
-rw-r--r-- | ppapi/api/extensions/dev/ppb_alarms_dev.idl | 178 | ||||
-rw-r--r-- | ppapi/api/extensions/dev/ppb_events_dev.idl | 87 |
2 files changed, 265 insertions, 0 deletions
diff --git a/ppapi/api/extensions/dev/ppb_alarms_dev.idl b/ppapi/api/extensions/dev/ppb_alarms_dev.idl new file mode 100644 index 0000000..b227993 --- /dev/null +++ b/ppapi/api/extensions/dev/ppb_alarms_dev.idl @@ -0,0 +1,178 @@ +/* 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. + */ + +/** + * This file defines the Pepper equivalent of the <code>chrome.alarms</code> + * extension API. + */ + +label Chrome { + M27 = 0.1 +}; + +#inline c +#include "ppapi/c/extensions/dev/ppb_events_dev.h" +#endinl + +/** + * A dictionary <code>PP_Var</code> which contains: + * - "name" : string <code>PP_Var</code> + * Name of this alarm. + * + * - "scheduledTime" : double <code>PP_Var</code> + * Time at which this alarm was scheduled to fire, in milliseconds past the + * epoch (e.g. <code>Date.now() + n</code>). For performance reasons, the + * alarm may have been delayed an arbitrary amount beyond this. + * + * - "periodInMinutes" : double or undefined <code>PP_Var</code> + * If not undefined, the alarm is a repeating alarm and will fire again in + * <var>periodInMinutes</var> minutes. + */ +typedef PP_Var PP_Ext_Alarms_Alarm_Dev; + +/** + * A dictionary <code>PP_Var</code> which contains + * - "when" : double or undefined <code>PP_Var</code> + * Time at which the alarm should fire, in milliseconds past the epoch + * (e.g. <code>Date.now() + n</code>). + * + * - "delayInMinutes" : double or undefined <code>PP_Var</code> + * Length of time in minutes after which the + * <code>PP_Ext_Alarms_OnAlarm_Dev</code> event should fire. + * + * - "periodInMinutes" : double or undefined <code>PP_Var</code> + * If set, the <code>PP_Ext_Alarms_OnAlarm_Dev</code> event should fire every + * <var>periodInMinutes</var> minutes after the initial event specified by + * <var>when</var> or <var>delayInMinutes</var>. If not set, the alarm will + * only fire once. + */ +typedef PP_Var PP_Ext_Alarms_AlarmCreateInfo_Dev; + +/** + * An array <code>PP_Var</code> which contains elements of + * <code>PP_Ext_Alarms_Alarm_Dev</code>. + */ +typedef PP_Var PP_Ext_Alarms_Alarm_Dev_Array; + +interface PPB_Ext_Alarms_Dev { + /** + * Creates an alarm. Near the time(s) specified by <var>alarm_info</var>, + * the <code>PP_Ext_Alarms_OnAlarm_Dev</code> event is fired. If there is + * another alarm with the same name (or no name if none is specified), it will + * be cancelled and replaced by this alarm. + * + * In order to reduce the load on the user's machine, Chrome limits alarms + * to at most once every 1 minute but may delay them an arbitrary amount + * more. That is, setting + * <code>$ref:[PP_Ext_Alarms_AlarmCreateInfo_Dev.delayInMinutes + * delayInMinutes]</code> or + * <code>$ref:[PP_Ext_Alarms_AlarmCreateInfo_Dev.periodInMinutes + * periodInMinutes]</code> to less than <code>1</code> will not be honored + * and will cause a warning. + * <code>$ref:[PP_Ext_Alarms_AlarmCreateInfo_Dev.when when]</code> can be set + * to less than 1 minute after "now" without warning but won't actually cause + * the alarm to fire for at least 1 minute. + * + * To help you debug your app or extension, when you've loaded it unpacked, + * there's no limit to how often the alarm can fire. + * + * @param[in] instance A <code>PP_Instance</code>. + * @param[in] name A string or undefined <code>PP_Var</code>. Optional name to + * identify this alarm. Defaults to the empty string. + * @param[in] alarm_info A <code>PP_Var</code> whose contents conform to the + * description of <code>PP_Ext_Alarms_AlarmCreateInfo_Dev</code>. Describes + * when the alarm should fire. The initial time must be specified by either + * <var>when</var> or <var>delayInMinutes</var> (but not both). If + * <var>periodInMinutes</var> is set, the alarm will repeat every + * <var>periodInMinutes</var> minutes after the initial event. If neither + * <var>when</var> or <var>delayInMinutes</var> is set for a repeating alarm, + * <var>periodInMinutes</var> is used as the default for + * <var>delayInMinutes</var>. + */ + void Create( + [in] PP_Instance instance, + [in] PP_Var name, + [in] PP_Ext_Alarms_AlarmCreateInfo_Dev alarm_info); + + /** + * Retrieves details about the specified alarm. + * + * @param[in] instance A <code>PP_Instance</code>. + * @param[in] name A string or undefined <code>PP_Var</code>. The name of the + * alarm to get. Defaults to the empty string. + * @param[out] alarm A <code>PP_Var</code> whose contents conform to the + * description of <code>PP_Ext_Alarms_Alarm_Dev</code>. + * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon + * completion. + * + * @return An error code from <code>pp_errors.h</code> + */ + int32_t Get( + [in] PP_Instance instance, + [in] PP_Var name, + [out] PP_Ext_Alarms_Alarm_Dev alarm, + [in] PP_CompletionCallback callback); + + /** + * Gets an array of all the alarms. + * + * @param[in] instance A <code>PP_Instance</code>. + * @param[out] alarms A <code>PP_Var</code> whose contents conform to the + * description of <code>PP_Ext_Alarms_Alarm_Dev_Array</code>. + * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon + * completion. + * + * @return An error code from <code>pp_errors.h</code> + */ + int32_t GetAll( + [in] PP_Instance instance, + [out] PP_Ext_Alarms_Alarm_Dev_Array alarms, + [in] PP_CompletionCallback callback); + + /** + * Clears the alarm with the given name. + * + * @param[in] instance A <code>PP_Instance</code>. + * @param[in] name A string or undefined <code>PP_Var</code>. The name of the + * alarm to clear. Defaults to the empty string. + */ + void Clear( + [in] PP_Instance instance, + [in] PP_Var name); + + /** + * Clears all alarms. + * + * @param[in] instance A <code>PP_Instance</code>. + */ + void ClearAll( + [in] PP_Instance instance); +}; + +/** + * Fired when an alarm has elapsed. Useful for event pages. + * + * @param[in] listener_id The listener ID. + * @param[inout] user_data The opaque pointer that was used when registering the + * listener. + * @param[in] alarm A <code>PP_Var</code> whose contents conform to the + * description of <code>PP_Ext_Alarms_Alarm_Dev</code>. The alarm that has + * elapsed. + */ +typedef void PP_Ext_Alarms_OnAlarm_Func_Dev_0_1( + [in] uint32_t listener_id, + [inout] mem_t user_data, + [in] PP_Ext_Alarms_Alarm_Dev alarm); + +#inline c +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) { + return PP_Ext_MakeEventListener("alarms.onAlarm;0.1", + (PP_Ext_GenericFuncType)(func), user_data); +} + +#define PP_Ext_Alarms_OnAlarm_Dev PP_Ext_Alarms_OnAlarm_Dev_0_1 +#endinl diff --git a/ppapi/api/extensions/dev/ppb_events_dev.idl b/ppapi/api/extensions/dev/ppb_events_dev.idl new file mode 100644 index 0000000..cfcc809 --- /dev/null +++ b/ppapi/api/extensions/dev/ppb_events_dev.idl @@ -0,0 +1,87 @@ +/* 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. + */ + +label Chrome { + M27 = 0.1 +}; + +/** + * Used to represent arbitrary C function pointers. Please note that usually + * the function that a <code>PP_Ext_GenericFuncType</code> pointer points to + * has a different signature than <code>void (*)()</code>. + */ +typedef void PP_Ext_GenericFuncType(); + +/** + * An event listener that can be registered with the browser and receive + * notifications via the callback function. + * + * A function is defined for each event type to return a properly-filled + * <code>PP_Ext_EventListener</code> struct, for example, + * <code>PP_Ext_Alarms_OnAlarm_Dev()</code>. + */ +[passByValue] +struct PP_Ext_EventListener { + /** + * The name of the event to register to. + */ + cstr_t event_name; + /** + * A callback function whose signature is determined by + * <code>event_name</code>. All calls will happen on the same thread as the + * one on which <code>AddListener()</code> is called. + */ + PP_Ext_GenericFuncType func; + /** + * An opaque pointer that will be passed to <code>func</code>. + */ + mem_t user_data; +}; + +interface PPB_Ext_Events_Dev { + /** + * Registers a listener to an event. + * + * @param[in] instance A <code>PP_Instance</code> identifying one instance of + * a module. + * @param[in] listener A <code>PP_Ext_EventListener</code> struct. + * + * @return An listener ID, or 0 if failed. + */ + uint32_t AddListener( + [in] PP_Instance instance, + [in] PP_Ext_EventListener listener); + + /** + * Deregisters a listener. + * + * @param[in] instance A <code>PP_Instance</code> identifying one instance of + * a module. + * @param[in] listener_id The ID returned by <code>AddListener()</code>. + */ + void RemoveListener( + [in] PP_Instance instance, + [in] uint32_t listener_id); +}; + +#inline c +/** + * Creates a <code>PP_Ext_EventListener</code> struct. + * + * Usually you should not call it directly. Instead you should call those + * functions that return a <code>PP_Ext_EventListener</code> struct for a + * specific event type, for example, <code>PP_Ext_Alarms_OnAlarm_Dev()</code>. + */ +PP_INLINE struct PP_Ext_EventListener PP_Ext_MakeEventListener( + const char* event_name, + PP_Ext_GenericFuncType func, + void* user_data) { + struct PP_Ext_EventListener listener; + listener.event_name = event_name; + listener.func = func; + listener.user_data = user_data; + return listener; +} +#endinl |