15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* From private/ppb_flash_clipboard.idl modified Thu Jan 23 10:16:39 2014. */ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_C_PRIVATE_PPB_FLASH_CLIPBOARD_H_ 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_C_PRIVATE_PPB_FLASH_CLIPBOARD_H_ 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_bool.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_instance.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_macros.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_stdint.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_var.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_FLASH_CLIPBOARD_INTERFACE_4_0 "PPB_Flash_Clipboard;4.0" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_FLASH_CLIPBOARD_INTERFACE_5_0 "PPB_Flash_Clipboard;5.0" 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define PPB_FLASH_CLIPBOARD_INTERFACE_5_1 "PPB_Flash_Clipboard;5.1" 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define PPB_FLASH_CLIPBOARD_INTERFACE PPB_FLASH_CLIPBOARD_INTERFACE_5_1 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @file 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This file defines the private <code>PPB_Flash_Clipboard</code> API used by 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Pepper Flash for reading and writing to the clipboard. 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Enums 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{ 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This enumeration contains the types of clipboards that can be accessed. 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * These types correspond to clipboard types in WebKit. 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** The standard clipboard. */ 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_FLASH_CLIPBOARD_TYPE_STANDARD = 0, 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** The selection clipboard (e.g., on Linux). */ 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_FLASH_CLIPBOARD_TYPE_SELECTION = 1 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} PP_Flash_Clipboard_Type; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_Flash_Clipboard_Type, 4); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * This enumeration contains the predefined clipboard data formats. 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum { 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** Indicates an invalid or unsupported clipboard data format. */ 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_FLASH_CLIPBOARD_FORMAT_INVALID = 0, 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Indicates plaintext clipboard data. The format expected/returned is a 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_VARTYPE_STRING</code>. 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_FLASH_CLIPBOARD_FORMAT_PLAINTEXT = 1, 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Indicates HTML clipboard data. The format expected/returned is a 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_VARTYPE_STRING</code>. 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_FLASH_CLIPBOARD_FORMAT_HTML = 2, 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Indicates RTF clipboard data. The format expected/returned is a 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_VARTYPE_ARRAY_BUFFER</code>. 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_FLASH_CLIPBOARD_FORMAT_RTF = 3 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} PP_Flash_Clipboard_Format; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_Flash_Clipboard_Format, 4); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @} 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Interfaces 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{ 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The <code>PPB_Flash_Clipboard</code> interface contains pointers to functions 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * used by Pepper Flash to access the clipboard. 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct PPB_Flash_Clipboard_5_1 { 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Registers a custom clipboard format. The format is identified by a 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * string. An id identifying the format will be returned if the format is 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * successfully registered, which can be used to read/write data of that 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * format. If the format has already been registered, the id associated with 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * that format will be returned. If the format fails to be registered 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_FLASH_CLIPBOARD_FORMAT_INVALID</code> will be returned. 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * All custom data should be read/written as <code>PP_Var</code> array 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * buffers. The clipboard format is pepper-specific meaning that although the 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * data will be stored on the system clipboard, it can only be accessed in a 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * sensible way by using the pepper API. Data stored in custom formats can 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * be safely shared between different applications that use pepper. 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t (*RegisterCustomFormat)(PP_Instance instance_id, 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* format_name); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Checks whether a given data format is available from the given clipboard. 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns true if the given format is available from the given clipboard. 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Bool (*IsFormatAvailable)(PP_Instance instance_id, 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Flash_Clipboard_Type clipboard_type, 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t format); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Reads data in the given <code>format</code> from the clipboard. An 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * undefined <code>PP_Var</code> is returned if there is an error in reading 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the clipboard data and a null <code>PP_Var</code> is returned if there is 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * no data of the specified <code>format</code> to read. 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct PP_Var (*ReadData)(PP_Instance instance_id, 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Flash_Clipboard_Type clipboard_type, 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t format); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Writes the given array of data items to the clipboard. All existing 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * clipboard data in any format is erased before writing this data. Thus, 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * passing an array of size 0 has the effect of clearing the clipboard without 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * writing any data. Each data item in the array should have a different 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_Flash_Clipboard_Format</code>. If multiple data items have the 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * same format, only the last item with that format will be written. 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * If there is an error writing any of the items in the array to the 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * clipboard, none will be written and an error code is returned. 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The error code will be <code>PP_ERROR_NOSPACE</code> if the value is 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * too large to be written, <code>PP_ERROR_BADARGUMENT</code> if a PP_Var 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * cannot be converted into the format supplied or <code>PP_FAILED</code> 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * if the format is not supported. 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t (*WriteData)(PP_Instance instance_id, 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Flash_Clipboard_Type clipboard_type, 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t data_item_count, 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const uint32_t formats[], 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const struct PP_Var data_items[]); 1335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 1345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Gets a sequence number which uniquely identifies clipboard state. This can 1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * be used to version the data on the clipboard and determine whether it has 1365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * changed. The sequence number will be placed in |sequence_number| and 1375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * PP_TRUE returned if the sequence number was retrieved successfully. 1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 1395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_Bool (*GetSequenceNumber)(PP_Instance instance_id, 1405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_Flash_Clipboard_Type clipboard_type, 1415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) uint64_t* sequence_number); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)typedef struct PPB_Flash_Clipboard_5_1 PPB_Flash_Clipboard; 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PPB_Flash_Clipboard_4_0 { 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Bool (*IsFormatAvailable)(PP_Instance instance_id, 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Flash_Clipboard_Type clipboard_type, 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Flash_Clipboard_Format format); 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct PP_Var (*ReadData)(PP_Instance instance_id, 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Flash_Clipboard_Type clipboard_type, 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Flash_Clipboard_Format format); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t (*WriteData)(PP_Instance instance_id, 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Flash_Clipboard_Type clipboard_type, 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t data_item_count, 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PP_Flash_Clipboard_Format formats[], 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const struct PP_Var data_items[]); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct PPB_Flash_Clipboard_5_0 { 1615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) uint32_t (*RegisterCustomFormat)(PP_Instance instance_id, 1625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const char* format_name); 1635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_Bool (*IsFormatAvailable)(PP_Instance instance_id, 1645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_Flash_Clipboard_Type clipboard_type, 1655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) uint32_t format); 1665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) struct PP_Var (*ReadData)(PP_Instance instance_id, 1675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_Flash_Clipboard_Type clipboard_type, 1685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) uint32_t format); 1695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int32_t (*WriteData)(PP_Instance instance_id, 1705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_Flash_Clipboard_Type clipboard_type, 1715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) uint32_t data_item_count, 1725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const uint32_t formats[], 1735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const struct PP_Var data_items[]); 1745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @} 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* PPAPI_C_PRIVATE_PPB_FLASH_CLIPBOARD_H_ */ 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 181