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