diff options
Diffstat (limited to 'ppapi/api/extensions/dev/ppb_events_dev.idl')
-rw-r--r-- | ppapi/api/extensions/dev/ppb_events_dev.idl | 87 |
1 files changed, 87 insertions, 0 deletions
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 |