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.
6 /* From private/ppb_flash_clipboard.idl modified Thu Jan 23 10:16:39 2014. */
8 #ifndef PPAPI_C_PRIVATE_PPB_FLASH_CLIPBOARD_H_
9 #define PPAPI_C_PRIVATE_PPB_FLASH_CLIPBOARD_H_
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"
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
24 * This file defines the private <code>PPB_Flash_Clipboard</code> API used by
25 * Pepper Flash for reading and writing to the clipboard.
34 * This enumeration contains the types of clipboards that can be accessed.
35 * These types correspond to clipboard types in WebKit.
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);
46 * This enumeration contains the predefined clipboard data formats.
49 /** Indicates an invalid or unsupported clipboard data format. */
50 PP_FLASH_CLIPBOARD_FORMAT_INVALID
= 0,
52 * Indicates plaintext clipboard data. The format expected/returned is a
53 * <code>PP_VARTYPE_STRING</code>.
55 PP_FLASH_CLIPBOARD_FORMAT_PLAINTEXT
= 1,
57 * Indicates HTML clipboard data. The format expected/returned is a
58 * <code>PP_VARTYPE_STRING</code>.
60 PP_FLASH_CLIPBOARD_FORMAT_HTML
= 2,
62 * Indicates RTF clipboard data. The format expected/returned is a
63 * <code>PP_VARTYPE_ARRAY_BUFFER</code>.
65 PP_FLASH_CLIPBOARD_FORMAT_RTF
= 3
66 } PP_Flash_Clipboard_Format
;
67 PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_Flash_Clipboard_Format
, 4);
73 * @addtogroup Interfaces
77 * The <code>PPB_Flash_Clipboard</code> interface contains pointers to functions
78 * used by Pepper Flash to access the clipboard.
81 struct PPB_Flash_Clipboard_5_1
{
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.
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.
96 uint32_t (*RegisterCustomFormat
)(PP_Instance instance_id
,
97 const char* format_name
);
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.
102 PP_Bool (*IsFormatAvailable
)(PP_Instance instance_id
,
103 PP_Flash_Clipboard_Type clipboard_type
,
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.
111 struct PP_Var (*ReadData
)(PP_Instance instance_id
,
112 PP_Flash_Clipboard_Type clipboard_type
,
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.
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
[]);
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.
139 PP_Bool (*GetSequenceNumber
)(PP_Instance instance_id
,
140 PP_Flash_Clipboard_Type clipboard_type
,
141 uint64_t* sequence_number
);
144 typedef struct PPB_Flash_Clipboard_5_1 PPB_Flash_Clipboard
;
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
[]);
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
,
166 struct PP_Var (*ReadData
)(PP_Instance instance_id
,
167 PP_Flash_Clipboard_Type clipboard_type
,
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
[]);
179 #endif /* PPAPI_C_PRIVATE_PPB_FLASH_CLIPBOARD_H_ */