| /* |
| * Copyright (C) 2014 Ryuan Choi <ryuan.choi@gmail.com>. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * |
| * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY |
| * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR |
| * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
| * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
| * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| /** |
| * @file ewk_extension.h |
| * @brief Describes the Ewk_Extension API. |
| */ |
| |
| #ifndef ewk_extension_h |
| #define ewk_extension_h |
| |
| #include <Eina.h> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /** |
| * Declare Ewk_Page. |
| */ |
| #ifdef __cplusplus |
| typedef class EwkPage Ewk_Page; |
| #else |
| typedef struct EwkPage Ewk_Page; |
| #endif |
| |
| /** |
| * Declare Ewk_Extension. |
| */ |
| #ifdef __cplusplus |
| typedef class EwkExtension Ewk_Extension; |
| #else |
| typedef struct EwkExtension Ewk_Extension; |
| #endif |
| |
| /** |
| * Declare Ewk_Extension_Initialize_Function. |
| * |
| * @brief Type definition for the entry of the extension. |
| * |
| * @param extension the extension instance helps the communication between WebProcess and your extension library |
| * @param reserved extra parameter for the future. NULL is fine, now |
| * |
| */ |
| typedef void *(*Ewk_Extension_Initialize_Function)(Ewk_Extension *extension, void *reserved); |
| |
| struct EwkExtensionClient { |
| int version; |
| void *data; |
| |
| /** |
| * Callbacks to report page added. |
| * |
| * @param page page to be finished |
| * @param data data of a extension client |
| */ |
| void (*page_add)(Ewk_Page* page, void *data); |
| |
| /** |
| * Callbacks to report page will be removed. |
| * |
| * @param page page to be finished |
| * @param data data of a extension client |
| */ |
| void (*page_del)(Ewk_Page* page, void *data); |
| |
| /** |
| * Callbacks to receive message from ewk_context. |
| * |
| * @param name name of message from ewk_context |
| * @param body body of message from ewk_context |
| * @param data data of a extension client |
| */ |
| void (*message_received)(const char *name, const Eina_Value *body, void *data); |
| }; |
| typedef struct EwkExtensionClient Ewk_Extension_Client; |
| |
| /** |
| * Add a client which contains several callbacks to the extension. |
| * |
| * @param extension extension to attach client to |
| * @param client client to add to the extension |
| * |
| * This function adds a client, which contains several callbacks receiving events |
| * from WebProcess side, to a @p extension. |
| * |
| * @see ewk_extension_client_del |
| */ |
| EAPI Eina_Bool ewk_extension_client_add(Ewk_Extension *extension, Ewk_Extension_Client *client); |
| |
| /** |
| * Delete a client from the extension. |
| * |
| * @param extension extension to delete client |
| * @param client client which contains version, data and callbacks |
| */ |
| EAPI Eina_Bool ewk_extension_client_del(Ewk_Extension *extension, Ewk_Extension_Client *client); |
| |
| /** |
| * Posts message to ewk_context asynchronously. |
| * |
| * @note body only supports @c EINA_VALUE_TYPE_STRINGSHARE or @c EINA_VALUE_TYPE_STRING, |
| * now. |
| * |
| * @param extension extension to post message |
| * @param name message name |
| * @param body message body |
| * |
| * @return @c EINA_TRUE on success of @c EINA_FALSE on failure or when the type |
| * of @p body is not supported. |
| * |
| * @see ewk_context_message_post_to_extensions |
| * @see ewk_context_message_from_extensions_callback_set |
| */ |
| EAPI Eina_Bool ewk_extension_message_post(Ewk_Extension *extension, const char *name, const Eina_Value *body); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif // ewk_extension_h |