/* 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 private/ppb_talk_private.idl modified Thu Jun 6 10:54:19 2013. */ #ifndef PPAPI_C_PRIVATE_PPB_TALK_PRIVATE_H_ #define PPAPI_C_PRIVATE_PPB_TALK_PRIVATE_H_ #include "ppapi/c/pp_completion_callback.h" #include "ppapi/c/pp_instance.h" #include "ppapi/c/pp_macros.h" #include "ppapi/c/pp_resource.h" #include "ppapi/c/pp_stdint.h" #define PPB_TALK_PRIVATE_INTERFACE_1_0 "PPB_Talk_Private;1.0" #define PPB_TALK_PRIVATE_INTERFACE_2_0 "PPB_Talk_Private;2.0" #define PPB_TALK_PRIVATE_INTERFACE PPB_TALK_PRIVATE_INTERFACE_2_0 /** * @file * This file contains the <code>PPB_Talk_Private</code> interface. */ /** * @addtogroup Enums * @{ */ /** * The type of permissions that can be requested from the user. */ typedef enum { /** * Request permission for screencast. */ PP_TALKPERMISSION_SCREENCAST, /** * Request permission for Remote Desktop. */ PP_TALKPERMISSION_REMOTING, /** * Request permission for continuing Remote Desktop. */ PP_TALKPERMISSION_REMOTING_CONTINUE, /** * Number of permissions. */ PP_TALKPERMISSION_NUM_PERMISSIONS } PP_TalkPermission; PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_TalkPermission, 4); /** * Talk event types reported by the browser. */ typedef enum { /** * Indicates that the user took action to terminate the remoting session. */ PP_TALKEVENT_TERMINATE, /** * Indicates that an error occurred (e.g. failed to show the UI). */ PP_TALKEVENT_ERROR, /** * Number of events */ PP_TALKEVENT_NUM_EVENTS } PP_TalkEvent; PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_TalkEvent, 4); /** * @} */ /** * @addtogroup Typedefs * @{ */ /** * Callback for Talk events. */ typedef void (*PP_TalkEventCallback)(void* user_data, PP_TalkEvent event); /** * @} */ /** * @addtogroup Interfaces * @{ */ /** * Extra interface for Talk. */ struct PPB_Talk_Private_2_0 { /** * Creates a Talk_Private resource. */ PP_Resource (*Create)(PP_Instance instance); /** * Requests permission from the user using a system modal dialog. * * <code>permission</code> specifies the type of permission to request from * the user. * * <code>callback</code> is the completion callback. It will be issued with 1 * as the result if the user gave permission, or 0 if the user denied. * * You can only have one call pending. It will return PP_OK_COMPLETIONPENDING * if the request is queued, or PP_ERROR_INPROGRESS if there is already a * request in progress. */ int32_t (*RequestPermission)(PP_Resource talk_resource, PP_TalkPermission permission, struct PP_CompletionCallback callback); /** * Shows the remoting-in-progress UI and registers a callback for events. * * <code>event_callback</code> is the callback for session releated events. * It will only start receiving events after the completion callback has been * issued. This callback will be called on the pepper main thread. * * <code>user_data</code> is an opaque value used when * <code>event_callback</code> is invoked. * * <code>callback</code> is the completion callback. * * You can only have one call pending. It will return PP_OK_COMPLETIONPENDING * if the request is queued, or PP_ERROR_INPROGRESS if there is already a * request in progress. PP_ERROR_INPROGRESS will also be returned if a * previous call to StartRemoting succeeded without a corresponding * StopRemoting call. */ int32_t (*StartRemoting)(PP_Resource talk_resource, PP_TalkEventCallback event_callback, void* user_data, struct PP_CompletionCallback callback); /** * Hides the remoting-in-progress UI and unregisters the event callback. * * <code>callback</code> is the completion callback. */ int32_t (*StopRemoting)(PP_Resource talk_resource, struct PP_CompletionCallback callback); }; typedef struct PPB_Talk_Private_2_0 PPB_Talk_Private; struct PPB_Talk_Private_1_0 { PP_Resource (*Create)(PP_Instance instance); int32_t (*GetPermission)(PP_Resource talk_resource, struct PP_CompletionCallback callback); }; /** * @} */ #endif /* PPAPI_C_PRIVATE_PPB_TALK_PRIVATE_H_ */