Home | History | Annotate | Download | only in dev
      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_events_dev.idl,
      7  *   modified Mon Mar 18 17:18:20 2013.
      8  */
      9 
     10 #ifndef PPAPI_C_EXTENSIONS_DEV_PPB_EXT_EVENTS_DEV_H_
     11 #define PPAPI_C_EXTENSIONS_DEV_PPB_EXT_EVENTS_DEV_H_
     12 
     13 #include "ppapi/c/pp_instance.h"
     14 #include "ppapi/c/pp_macros.h"
     15 #include "ppapi/c/pp_stdint.h"
     16 
     17 #define PPB_EXT_EVENTS_DEV_INTERFACE_0_1 "PPB_Ext_Events(Dev);0.1"
     18 #define PPB_EXT_EVENTS_DEV_INTERFACE PPB_EXT_EVENTS_DEV_INTERFACE_0_1
     19 
     20 /**
     21  * @file
     22  */
     23 
     24 
     25 /**
     26  * @addtogroup Typedefs
     27  * @{
     28  */
     29 /**
     30  * Used to represent arbitrary C function pointers. Please note that usually
     31  * the function that a <code>PP_Ext_GenericFuncType</code> pointer points to
     32  * has a different signature than <code>void (*)()</code>.
     33  */
     34 typedef void (*PP_Ext_GenericFuncType)(void);
     35 /**
     36  * @}
     37  */
     38 
     39 /**
     40  * @addtogroup Structs
     41  * @{
     42  */
     43 /**
     44  * An event listener that can be registered with the browser and receive
     45  * notifications via the callback function.
     46  *
     47  * A function is defined for each event type to return a properly-filled
     48  * <code>PP_Ext_EventListener</code> struct, for example,
     49  * <code>PP_Ext_Alarms_OnAlarm_Dev()</code>.
     50  */
     51 struct PP_Ext_EventListener {
     52   /**
     53    * The name of the event to register to.
     54    */
     55   const char* event_name;
     56   /**
     57    * A callback function whose signature is determined by
     58    * <code>event_name</code>. All calls will happen on the same thread as the
     59    * one on which <code>AddListener()</code> is called.
     60    */
     61   PP_Ext_GenericFuncType func;
     62   /**
     63    * An opaque pointer that will be passed to <code>func</code>.
     64    */
     65   void* user_data;
     66 };
     67 /**
     68  * @}
     69  */
     70 
     71 /**
     72  * @addtogroup Interfaces
     73  * @{
     74  */
     75 struct PPB_Ext_Events_Dev_0_1 {
     76   /**
     77    * Registers a listener to an event.
     78    *
     79    * @param[in] instance A <code>PP_Instance</code> identifying one instance of
     80    * a module.
     81    * @param[in] listener A <code>PP_Ext_EventListener</code> struct.
     82    *
     83    * @return An listener ID, or 0 if failed.
     84    */
     85   uint32_t (*AddListener)(PP_Instance instance,
     86                           struct PP_Ext_EventListener listener);
     87   /**
     88    * Deregisters a listener.
     89    *
     90    * @param[in] instance A <code>PP_Instance</code> identifying one instance of
     91    * a module.
     92    * @param[in] listener_id The ID returned by <code>AddListener()</code>.
     93    */
     94   void (*RemoveListener)(PP_Instance instance, uint32_t listener_id);
     95 };
     96 
     97 typedef struct PPB_Ext_Events_Dev_0_1 PPB_Ext_Events_Dev;
     98 /**
     99  * @}
    100  */
    101 
    102 /**
    103  * Creates a <code>PP_Ext_EventListener</code> struct.
    104  *
    105  * Usually you should not call it directly. Instead you should call those
    106  * functions that return a <code>PP_Ext_EventListener</code> struct for a
    107  * specific event type, for example, <code>PP_Ext_Alarms_OnAlarm_Dev()</code>.
    108  */
    109 PP_INLINE struct PP_Ext_EventListener PP_Ext_MakeEventListener(
    110     const char* event_name,
    111     PP_Ext_GenericFuncType func,
    112     void* user_data) {
    113   struct PP_Ext_EventListener listener;
    114   listener.event_name = event_name;
    115   listener.func = func;
    116   listener.user_data = user_data;
    117   return listener;
    118 }
    119 #endif  /* PPAPI_C_EXTENSIONS_DEV_PPB_EXT_EVENTS_DEV_H_ */
    120 
    121