summaryrefslogtreecommitdiffstats
path: root/ppapi/c/extensions
diff options
context:
space:
mode:
authoryzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-11 01:52:41 +0000
committeryzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-11 01:52:41 +0000
commit517db2704c7d8f29ed75f3848cbf7eb1c1b6a0be (patch)
tree6428c20b7616fe5199b8ecd99274a15dc984973c /ppapi/c/extensions
parent64363442d6b37bb070b65b32e843fcc65981f505 (diff)
downloadchromium_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/c/extensions')
-rw-r--r--ppapi/c/extensions/dev/ppb_alarms_dev.h202
-rw-r--r--ppapi/c/extensions/dev/ppb_events_dev.h118
2 files changed, 320 insertions, 0 deletions
diff --git a/ppapi/c/extensions/dev/ppb_alarms_dev.h b/ppapi/c/extensions/dev/ppb_alarms_dev.h
new file mode 100644
index 0000000..a573527
--- /dev/null
+++ b/ppapi/c/extensions/dev/ppb_alarms_dev.h
@@ -0,0 +1,202 @@
+/* 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.
+ */
+
+/* From extensions/dev/ppb_alarms_dev.idl modified Tue Mar 05 14:02:41 2013. */
+
+#ifndef PPAPI_C_EXTENSIONS_DEV_PPB_ALARMS_DEV_H_
+#define PPAPI_C_EXTENSIONS_DEV_PPB_ALARMS_DEV_H_
+
+#include "ppapi/c/pp_bool.h"
+#include "ppapi/c/pp_completion_callback.h"
+#include "ppapi/c/pp_instance.h"
+#include "ppapi/c/pp_macros.h"
+#include "ppapi/c/pp_stdint.h"
+#include "ppapi/c/pp_var.h"
+
+#define PPB_EXT_ALARMS_DEV_INTERFACE_0_1 "PPB_Ext_Alarms(Dev);0.1"
+#define PPB_EXT_ALARMS_DEV_INTERFACE PPB_EXT_ALARMS_DEV_INTERFACE_0_1
+
+/**
+ * @file
+ * This file defines the Pepper equivalent of the <code>chrome.alarms</code>
+ * extension API.
+ */
+
+
+#include "ppapi/c/extensions/dev/ppb_events_dev.h"
+
+/**
+ * @addtogroup Typedefs
+ * @{
+ */
+/**
+ * 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 struct 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 struct 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 struct PP_Var PP_Ext_Alarms_Alarm_Dev_Array;
+/**
+ * @}
+ */
+
+/**
+ * @addtogroup Interfaces
+ * @{
+ */
+struct PPB_Ext_Alarms_Dev_0_1 {
+ /**
+ * 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)(PP_Instance instance,
+ struct PP_Var name,
+ 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)(PP_Instance instance,
+ struct PP_Var name,
+ PP_Ext_Alarms_Alarm_Dev* alarm,
+ struct 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)(PP_Instance instance,
+ PP_Ext_Alarms_Alarm_Dev_Array* alarms,
+ struct 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)(PP_Instance instance, struct PP_Var name);
+ /**
+ * Clears all alarms.
+ *
+ * @param[in] instance A <code>PP_Instance</code>.
+ */
+ void (*ClearAll)(PP_Instance instance);
+};
+
+typedef struct PPB_Ext_Alarms_Dev_0_1 PPB_Ext_Alarms_Dev;
+/**
+ * @}
+ */
+
+/**
+ * @addtogroup Typedefs
+ * @{
+ */
+/**
+ * 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)(
+ uint32_t listener_id,
+ void* user_data,
+ PP_Ext_Alarms_Alarm_Dev alarm);
+/**
+ * @}
+ */
+
+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
+#endif /* PPAPI_C_EXTENSIONS_DEV_PPB_ALARMS_DEV_H_ */
+
diff --git a/ppapi/c/extensions/dev/ppb_events_dev.h b/ppapi/c/extensions/dev/ppb_events_dev.h
new file mode 100644
index 0000000..5483dc9
--- /dev/null
+++ b/ppapi/c/extensions/dev/ppb_events_dev.h
@@ -0,0 +1,118 @@
+/* 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.
+ */
+
+/* From extensions/dev/ppb_events_dev.idl modified Sun Mar 10 10:37:48 2013. */
+
+#ifndef PPAPI_C_EXTENSIONS_DEV_PPB_EVENTS_DEV_H_
+#define PPAPI_C_EXTENSIONS_DEV_PPB_EVENTS_DEV_H_
+
+#include "ppapi/c/pp_instance.h"
+#include "ppapi/c/pp_macros.h"
+#include "ppapi/c/pp_stdint.h"
+
+#define PPB_EXT_EVENTS_DEV_INTERFACE_0_1 "PPB_Ext_Events(Dev);0.1"
+#define PPB_EXT_EVENTS_DEV_INTERFACE PPB_EXT_EVENTS_DEV_INTERFACE_0_1
+
+/**
+ * @file
+ */
+
+
+/**
+ * @addtogroup Typedefs
+ * @{
+ */
+/**
+ * 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)(void);
+/**
+ * @}
+ */
+
+/**
+ * @addtogroup Structs
+ * @{
+ */
+/**
+ * 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>.
+ */
+struct PP_Ext_EventListener {
+ /**
+ * The name of the event to register to.
+ */
+ const char* 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>.
+ */
+ void* user_data;
+};
+/**
+ * @}
+ */
+
+/**
+ * @addtogroup Interfaces
+ * @{
+ */
+struct PPB_Ext_Events_Dev_0_1 {
+ /**
+ * 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)(PP_Instance instance,
+ struct 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)(PP_Instance instance, uint32_t listener_id);
+};
+
+typedef struct PPB_Ext_Events_Dev_0_1 PPB_Ext_Events_Dev;
+/**
+ * @}
+ */
+
+/**
+ * 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;
+}
+#endif /* PPAPI_C_EXTENSIONS_DEV_PPB_EVENTS_DEV_H_ */
+