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