/* Copyright (c) 2012 The Chromium Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ /** * This file defines the private PPB_Flash_Clipboard API used by * Pepper Flash for reading and writing to the clipboard. */ label Chrome { M19 = 4.0, M24 = 5.0, M34 = 5.1 }; /** * This enumeration contains the types of clipboards that can be accessed. * These types correspond to clipboard types in WebKit. */ [assert_size(4)] enum PP_Flash_Clipboard_Type { /** The standard clipboard. */ PP_FLASH_CLIPBOARD_TYPE_STANDARD = 0, /** The selection clipboard (e.g., on Linux). */ PP_FLASH_CLIPBOARD_TYPE_SELECTION = 1 }; /** * This enumeration contains the predefined clipboard data formats. */ [assert_size(4)] enum PP_Flash_Clipboard_Format { /** Indicates an invalid or unsupported clipboard data format. */ PP_FLASH_CLIPBOARD_FORMAT_INVALID = 0, /** * Indicates plaintext clipboard data. The format expected/returned is a * PP_VARTYPE_STRING. */ PP_FLASH_CLIPBOARD_FORMAT_PLAINTEXT = 1, /** * Indicates HTML clipboard data. The format expected/returned is a * PP_VARTYPE_STRING. */ PP_FLASH_CLIPBOARD_FORMAT_HTML = 2, /** * Indicates RTF clipboard data. The format expected/returned is a * PP_VARTYPE_ARRAY_BUFFER. */ PP_FLASH_CLIPBOARD_FORMAT_RTF = 3 }; /** * The PPB_Flash_Clipboard interface contains pointers to functions * used by Pepper Flash to access the clipboard. * */ interface PPB_Flash_Clipboard { /** * Deprecated in 5.0. */ [version=4.0, deprecate=5.0] PP_Bool IsFormatAvailable( [in] PP_Instance instance_id, [in] PP_Flash_Clipboard_Type clipboard_type, [in] PP_Flash_Clipboard_Format format); /** * Deprecated in 5.0. */ [version=4.0, deprecate=5.0] PP_Var ReadData([in] PP_Instance instance_id, [in] PP_Flash_Clipboard_Type clipboard_type, [in] PP_Flash_Clipboard_Format format); /** * Deprecated in 5.0. */ [version=4.0, deprecate=5.0] int32_t WriteData([in] PP_Instance instance_id, [in] PP_Flash_Clipboard_Type clipboard_type, [in] uint32_t data_item_count, [in, size_is(data_item_count)] PP_Flash_Clipboard_Format[] formats, [in, size_is(data_item_count)] PP_Var[] data_items); /** * Registers a custom clipboard format. The format is identified by a * string. An id identifying the format will be returned if the format is * successfully registered, which can be used to read/write data of that * format. If the format has already been registered, the id associated with * that format will be returned. If the format fails to be registered * PP_FLASH_CLIPBOARD_FORMAT_INVALID will be returned. * * All custom data should be read/written as PP_Var array * buffers. The clipboard format is pepper-specific meaning that although the * data will be stored on the system clipboard, it can only be accessed in a * sensible way by using the pepper API. Data stored in custom formats can * be safely shared between different applications that use pepper. */ [version=5.0] uint32_t RegisterCustomFormat( [in] PP_Instance instance_id, [in] str_t format_name); /** * Checks whether a given data format is available from the given clipboard. * Returns true if the given format is available from the given clipboard. */ [version=5.0] PP_Bool IsFormatAvailable( [in] PP_Instance instance_id, [in] PP_Flash_Clipboard_Type clipboard_type, [in] uint32_t format); /** * Reads data in the given format from the clipboard. An * undefined PP_Var is returned if there is an error in reading * the clipboard data and a null PP_Var is returned if there is * no data of the specified format to read. */ [version=5.0] PP_Var ReadData([in] PP_Instance instance_id, [in] PP_Flash_Clipboard_Type clipboard_type, [in] uint32_t format); /** * Writes the given array of data items to the clipboard. All existing * clipboard data in any format is erased before writing this data. Thus, * passing an array of size 0 has the effect of clearing the clipboard without * writing any data. Each data item in the array should have a different * PP_Flash_Clipboard_Format. If multiple data items have the * same format, only the last item with that format will be written. * If there is an error writing any of the items in the array to the * clipboard, none will be written and an error code is returned. * The error code will be PP_ERROR_NOSPACE if the value is * too large to be written, PP_ERROR_BADARGUMENT if a PP_Var * cannot be converted into the format supplied or PP_FAILED * if the format is not supported. */ [version=5.0] int32_t WriteData([in] PP_Instance instance_id, [in] PP_Flash_Clipboard_Type clipboard_type, [in] uint32_t data_item_count, [in, size_is(data_item_count)] uint32_t[] formats, [in, size_is(data_item_count)] PP_Var[] data_items); /** * Gets a sequence number which uniquely identifies clipboard state. This can * be used to version the data on the clipboard and determine whether it has * changed. The sequence number will be placed in |sequence_number| and * PP_TRUE returned if the sequence number was retrieved successfully. */ [version=5.1] PP_Bool GetSequenceNumber([in] PP_Instance instance_id, [in] PP_Flash_Clipboard_Type clipboard_type, [out] uint64_t sequence_number); };