| /* Copyright (c) 2012 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 ppp.idl modified Mon Feb 11 15:48:41 2013. */ |
| |
| #ifndef PPAPI_C_PPP_H_ |
| #define PPAPI_C_PPP_H_ |
| |
| #include "ppapi/c/pp_macros.h" |
| #include "ppapi/c/pp_module.h" |
| #include "ppapi/c/pp_stdint.h" |
| #include "ppapi/c/ppb.h" |
| |
| /** |
| * @file |
| * This file defines three functions that your module must |
| * implement to interact with the browser. |
| */ |
| |
| |
| |
| #include "ppapi/c/pp_module.h" |
| #include "ppapi/c/pp_stdint.h" |
| #include "ppapi/c/ppb.h" |
| |
| #if __GNUC__ >= 4 |
| #define PP_EXPORT __attribute__ ((visibility("default"))) |
| #elif defined(_MSC_VER) |
| #define PP_EXPORT __declspec(dllexport) |
| #endif |
| |
| /* {PENDING: undefine PP_EXPORT?} */ |
| |
| /* We don't want name mangling for these external functions. We only need |
| * 'extern "C"' if we're compiling with a C++ compiler. |
| */ |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /** |
| * @addtogroup Functions |
| * @{ |
| */ |
| |
| /** |
| * PPP_InitializeModule() is the entry point for a module and is called by the |
| * browser when your module loads. Your code must implement this function. |
| * |
| * Failure indicates to the browser that this module can not be used. In this |
| * case, the module will be unloaded and ShutdownModule will NOT be called. |
| * |
| * @param[in] module A handle to your module. Generally you should store this |
| * value since it will be required for other API calls. |
| * @param[in] get_browser_interface A pointer to the function that you can |
| * use to query for browser interfaces. Generally you should store this value |
| * for future use. |
| * |
| * @return <code>PP_OK</code> on success. Any other value on failure. |
| */ |
| PP_EXPORT int32_t PPP_InitializeModule(PP_Module module, |
| PPB_GetInterface get_browser_interface); |
| /** |
| * @} |
| */ |
| |
| /** |
| * @addtogroup Functions |
| * @{ |
| */ |
| |
| /** |
| * PPP_ShutdownModule() is <strong>sometimes</strong> called before the module |
| * is unloaded. It is not recommended that you implement this function. |
| * |
| * There is no practical use of this function for third party modules. Its |
| * existence is because of some internal use cases inside Chrome. |
| * |
| * Since your module runs in a separate process, there's no need to free |
| * allocated memory. There is also no need to free any resources since all of |
| * resources associated with an instance will be force-freed when that instance |
| * is deleted. |
| * |
| * <strong>Note:</strong> This function will always be skipped on untrusted |
| * (Native Client) implementations. This function may be skipped on trusted |
| * implementations in certain circumstances when Chrome does "fast shutdown" |
| * of a web page. |
| */ |
| PP_EXPORT void PPP_ShutdownModule(void); |
| /** |
| * @} |
| */ |
| |
| /** |
| * @addtogroup Functions |
| * @{ |
| */ |
| |
| /** |
| * PPP_GetInterface() is called by the browser to query the module for |
| * interfaces it supports. |
| * |
| * Your module must implement the <code>PPP_Instance</code> interface or it |
| * will be unloaded. Other interfaces are optional. |
| * |
| * This function is called from within browser code whenever an interface is |
| * needed. This means your plugin could be reentered via this function if you |
| * make a browser call and it needs an interface. Furthermore, you should not |
| * make any other browser calls from within your implementation to avoid |
| * reentering the browser. |
| * |
| * As a result, your implementation of this should merely provide a lookup |
| * from the requested name to an interface pointer, via something like a big |
| * if/else block or a map, and not do any other work. |
| * |
| * @param[in] interface_name A pointer to a "PPP" (plugin) interface name. |
| * Interface names are null-terminated ASCII strings. |
| * |
| * @return A pointer for the interface or <code>NULL</code> if the interface is |
| * not supported. |
| */ |
| PP_EXPORT const void* PPP_GetInterface(const char* interface_name); |
| /** |
| * @} |
| */ |
| |
| #ifdef __cplusplus |
| } /* extern "C" */ |
| #endif |
| |
| |
| /** |
| * @addtogroup Typedefs |
| * @{ |
| */ |
| /** |
| * Defines the type of the <code>PPP_InitializeModule</code> function. |
| */ |
| typedef int32_t (*PP_InitializeModule_Func)( |
| PP_Module module, |
| PPB_GetInterface get_browser_interface); |
| |
| /** |
| * Defines the type of the <code>PPP_ShutdownModule</code> function. |
| */ |
| typedef void (*PP_ShutdownModule_Func)(void); |
| |
| /** |
| * Defines the type of the <code>PPP_ShutdownModule</code> function. |
| */ |
| typedef const void* (*PP_GetInterface_Func)(const char* interface_name); |
| /** |
| * @} |
| */ |
| |
| #endif /* PPAPI_C_PPP_H_ */ |
| |