summaryrefslogtreecommitdiffstats
path: root/ppapi/api/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/api/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/api/extensions')
-rw-r--r--ppapi/api/extensions/dev/ppb_alarms_dev.idl178
-rw-r--r--ppapi/api/extensions/dev/ppb_events_dev.idl87
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