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 /* From private/ppb_flash_clipboard.idl modified Thu Mar 28 10:23:59 2013. */
      7 
      8 #ifndef PPAPI_C_PRIVATE_PPB_FLASH_CLIPBOARD_H_
      9 #define PPAPI_C_PRIVATE_PPB_FLASH_CLIPBOARD_H_
     10 
     11 #include "ppapi/c/pp_bool.h"
     12 #include "ppapi/c/pp_instance.h"
     13 #include "ppapi/c/pp_macros.h"
     14 #include "ppapi/c/pp_stdint.h"
     15 #include "ppapi/c/pp_var.h"
     16 
     17 #define PPB_FLASH_CLIPBOARD_INTERFACE_4_0 "PPB_Flash_Clipboard;4.0"
     18 #define PPB_FLASH_CLIPBOARD_INTERFACE_5_0 "PPB_Flash_Clipboard;5.0"
     19 #define PPB_FLASH_CLIPBOARD_INTERFACE PPB_FLASH_CLIPBOARD_INTERFACE_5_0
     20 
     21 /**
     22  * @file
     23  * This file defines the private <code>PPB_Flash_Clipboard</code> API used by
     24  * Pepper Flash for reading and writing to the clipboard.
     25  */
     26 
     27 
     28 /**
     29  * @addtogroup Enums
     30  * @{
     31  */
     32 /**
     33  * This enumeration contains the types of clipboards that can be accessed.
     34  * These types correspond to clipboard types in WebKit.
     35  */
     36 typedef enum {
     37   /** The standard clipboard. */
     38   PP_FLASH_CLIPBOARD_TYPE_STANDARD = 0,
     39   /** The selection clipboard (e.g., on Linux). */
     40   PP_FLASH_CLIPBOARD_TYPE_SELECTION = 1
     41 } PP_Flash_Clipboard_Type;
     42 PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_Flash_Clipboard_Type, 4);
     43 
     44 /**
     45  * This enumeration contains the predefined clipboard data formats.
     46  */
     47 typedef enum {
     48   /** Indicates an invalid or unsupported clipboard data format. */
     49   PP_FLASH_CLIPBOARD_FORMAT_INVALID = 0,
     50   /**
     51    * Indicates plaintext clipboard data. The format expected/returned is a
     52    * <code>PP_VARTYPE_STRING</code>.
     53    */
     54   PP_FLASH_CLIPBOARD_FORMAT_PLAINTEXT = 1,
     55   /**
     56    * Indicates HTML clipboard data. The format expected/returned is a
     57    * <code>PP_VARTYPE_STRING</code>.
     58    */
     59   PP_FLASH_CLIPBOARD_FORMAT_HTML = 2,
     60   /**
     61    * Indicates RTF clipboard data. The format expected/returned is a
     62    * <code>PP_VARTYPE_ARRAY_BUFFER</code>.
     63    */
     64   PP_FLASH_CLIPBOARD_FORMAT_RTF = 3
     65 } PP_Flash_Clipboard_Format;
     66 PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_Flash_Clipboard_Format, 4);
     67 /**
     68  * @}
     69  */
     70 
     71 /**
     72  * @addtogroup Interfaces
     73  * @{
     74  */
     75 /**
     76  * The <code>PPB_Flash_Clipboard</code> interface contains pointers to functions
     77  * used by Pepper Flash to access the clipboard.
     78  *
     79  */
     80 struct PPB_Flash_Clipboard_5_0 {
     81   /**
     82    * Registers a custom clipboard format. The format is identified by a
     83    * string. An id identifying the format will be returned if the format is
     84    * successfully registered, which can be used to read/write data of that
     85    * format. If the format has already been registered, the id associated with
     86    * that format will be returned. If the format fails to be registered
     87    * <code>PP_FLASH_CLIPBOARD_FORMAT_INVALID</code> will be returned.
     88    *
     89    * All custom data should be read/written as <code>PP_Var</code> array
     90    * buffers. The clipboard format is pepper-specific meaning that although the
     91    * data will be stored on the system clipboard, it can only be accessed in a
     92    * sensible way by using the pepper API. Data stored in custom formats can
     93    * be safely shared between different applications that use pepper.
     94    */
     95   uint32_t (*RegisterCustomFormat)(PP_Instance instance_id,
     96                                    const char* format_name);
     97   /**
     98    * Checks whether a given data format is available from the given clipboard.
     99    * Returns true if the given format is available from the given clipboard.
    100    */
    101   PP_Bool (*IsFormatAvailable)(PP_Instance instance_id,
    102                                PP_Flash_Clipboard_Type clipboard_type,
    103                                uint32_t format);
    104   /**
    105    * Reads data in the given <code>format</code> from the clipboard. An
    106    * undefined <code>PP_Var</code> is returned if there is an error in reading
    107    * the clipboard data and a null <code>PP_Var</code> is returned if there is
    108    * no data of the specified <code>format</code> to read.
    109    */
    110   struct PP_Var (*ReadData)(PP_Instance instance_id,
    111                             PP_Flash_Clipboard_Type clipboard_type,
    112                             uint32_t format);
    113   /**
    114    * Writes the given array of data items to the clipboard. All existing
    115    * clipboard data in any format is erased before writing this data. Thus,
    116    * passing an array of size 0 has the effect of clearing the clipboard without
    117    * writing any data. Each data item in the array should have a different
    118    * <code>PP_Flash_Clipboard_Format</code>. If multiple data items have the
    119    * same format, only the last item with that format will be written.
    120    * If there is an error writing any of the items in the array to the
    121    * clipboard, none will be written and an error code is returned.
    122    * The error code will be <code>PP_ERROR_NOSPACE</code> if the value is
    123    * too large to be written, <code>PP_ERROR_BADARGUMENT</code> if a PP_Var
    124    * cannot be converted into the format supplied or <code>PP_FAILED</code>
    125    * if the format is not supported.
    126    */
    127   int32_t (*WriteData)(PP_Instance instance_id,
    128                        PP_Flash_Clipboard_Type clipboard_type,
    129                        uint32_t data_item_count,
    130                        const uint32_t formats[],
    131                        const struct PP_Var data_items[]);
    132 };
    133 
    134 typedef struct PPB_Flash_Clipboard_5_0 PPB_Flash_Clipboard;
    135 
    136 struct PPB_Flash_Clipboard_4_0 {
    137   PP_Bool (*IsFormatAvailable)(PP_Instance instance_id,
    138                                PP_Flash_Clipboard_Type clipboard_type,
    139                                PP_Flash_Clipboard_Format format);
    140   struct PP_Var (*ReadData)(PP_Instance instance_id,
    141                             PP_Flash_Clipboard_Type clipboard_type,
    142                             PP_Flash_Clipboard_Format format);
    143   int32_t (*WriteData)(PP_Instance instance_id,
    144                        PP_Flash_Clipboard_Type clipboard_type,
    145                        uint32_t data_item_count,
    146                        const PP_Flash_Clipboard_Format formats[],
    147                        const struct PP_Var data_items[]);
    148 };
    149 /**
    150  * @}
    151  */
    152 
    153 #endif  /* PPAPI_C_PRIVATE_PPB_FLASH_CLIPBOARD_H_ */
    154 
    155