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