Home | History | Annotate | Download | only in private
      1 /* Copyright (c) 2012 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 /**
      7  * This file contains the <code>PPB_Talk_Private</code> interface.
      8  */
      9 label Chrome {
     10   M19 = 1.0,
     11   M29 = 2.0
     12 };
     13 
     14 /**
     15  * The type of permissions that can be requested from the user.
     16  */
     17 [assert_size(4)]
     18 enum PP_TalkPermission {
     19   /**
     20    * Request permission for screencast.
     21    */
     22   PP_TALKPERMISSION_SCREENCAST,
     23   /**
     24    * Request permission for Remote Desktop.
     25    */
     26   PP_TALKPERMISSION_REMOTING,
     27   /**
     28    * Request permission for continuing Remote Desktop.
     29    */
     30   PP_TALKPERMISSION_REMOTING_CONTINUE,
     31   /**
     32    * Number of permissions.
     33    */
     34   PP_TALKPERMISSION_NUM_PERMISSIONS
     35 };
     36 
     37 /**
     38  * Talk event types reported by the browser.
     39  */
     40 [assert_size(4)]
     41 enum PP_TalkEvent {
     42   /**
     43    * Indicates that the user took action to terminate the remoting session.
     44    */
     45   PP_TALKEVENT_TERMINATE,
     46   /**
     47    * Indicates that an error occurred (e.g. failed to show the UI).
     48    */
     49   PP_TALKEVENT_ERROR,
     50   /**
     51    * Number of events
     52    */
     53   PP_TALKEVENT_NUM_EVENTS
     54 };
     55 
     56 /**
     57  * Callback for Talk events.
     58  */
     59 typedef void PP_TalkEventCallback([inout] mem_t user_data,
     60                                   [in] PP_TalkEvent event);
     61 
     62 /**
     63  * Extra interface for Talk.
     64  */
     65 interface PPB_Talk_Private {
     66   /**
     67    * Creates a Talk_Private resource.
     68    */
     69   [version=1.0]
     70   PP_Resource Create(PP_Instance instance);
     71 
     72   /**
     73    * Displays confirmation dialog for screencasting.
     74    *
     75    * The callback will be issued with 1 as the result if the user gave
     76    * permission, or 0 if the user denied.
     77    *
     78    * You can only have one call pending. It will return PP_OK_COMPLETIONPENDING
     79    * if the request is queued, or PP_ERROR_INPROGRESS if there is already a
     80    * request in progress.
     81    *
     82    * (Deprecated in 2.0. Please us RequestPermission instead.)
     83    */
     84   [version=1.0, deprecate=2.0]
     85   int32_t GetPermission(
     86       [in] PP_Resource talk_resource,
     87       [in] PP_CompletionCallback callback);
     88 
     89   /**
     90    * Requests permission from the user using a system modal dialog.
     91    *
     92    * <code>permission</code> specifies the type of permission to request from
     93    * the user.
     94    *
     95    * <code>callback</code> is the completion callback. It will be issued with 1
     96    * as the result if the user gave permission, or 0 if the user denied.
     97    *
     98    * You can only have one call pending. It will return PP_OK_COMPLETIONPENDING
     99    * if the request is queued, or PP_ERROR_INPROGRESS if there is already a
    100    * request in progress.
    101    */
    102   [version=2.0]
    103   int32_t RequestPermission(
    104       [in] PP_Resource talk_resource,
    105       [in] PP_TalkPermission permission,
    106       [in] PP_CompletionCallback callback);
    107 
    108   /**
    109    * Shows the remoting-in-progress UI and registers a callback for events.
    110    *
    111    * <code>event_callback</code> is the callback for session releated events.
    112    * It will only start receiving events after the completion callback has been
    113    * issued. This callback will be called on the pepper main thread.
    114    *
    115    * <code>user_data</code> is an opaque value used when
    116    * <code>event_callback</code> is invoked.
    117    *
    118    * <code>callback</code> is the completion callback.
    119    *
    120    * You can only have one call pending. It will return PP_OK_COMPLETIONPENDING
    121    * if the request is queued, or PP_ERROR_INPROGRESS if there is already a
    122    * request in progress. PP_ERROR_INPROGRESS will also be returned if a
    123    * previous call to StartRemoting succeeded without a corresponding
    124    * StopRemoting call.
    125    */
    126   [version=2.0]
    127   int32_t StartRemoting(
    128       [in] PP_Resource talk_resource,
    129       [in] PP_TalkEventCallback event_callback,
    130       [inout] mem_t user_data,
    131       [in] PP_CompletionCallback callback);
    132 
    133   /**
    134    * Hides the remoting-in-progress UI and unregisters the event callback.
    135    *
    136    * <code>callback</code> is the completion callback.
    137    */
    138   [version=2.0]
    139   int32_t StopRemoting(
    140       [in] PP_Resource talk_resource,
    141       [in] PP_CompletionCallback callback);
    142 };
    143