/* 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_ */