• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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