Move flash clipboard to the new proxy and add custom format support
This moves the flash clipboard interface to the new pepper proxy. It also adds support for copying/pasting data of custom data formats (which is needed for flash).
BUG=154497
TEST=Added new pepper tests
Review URL: https://chromiumcodereview.appspot.com/11225021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165548 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/ppapi/thunk/ppb_flash_clipboard_thunk.cc b/ppapi/thunk/ppb_flash_clipboard_thunk.cc
index 084b937..d982cd5 100644
--- a/ppapi/thunk/ppb_flash_clipboard_thunk.cc
+++ b/ppapi/thunk/ppb_flash_clipboard_thunk.cc
@@ -2,70 +2,92 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/memory/scoped_ptr.h"
#include "ppapi/c/pp_errors.h"
#include "ppapi/c/private/ppb_flash_clipboard.h"
#include "ppapi/thunk/enter.h"
+#include "ppapi/thunk/ppb_flash_clipboard_api.h"
#include "ppapi/thunk/thunk.h"
-#include "ppapi/thunk/ppb_flash_api.h"
namespace ppapi {
namespace thunk {
namespace {
-PP_Bool IsFormatAvailable(PP_Instance instance,
- PP_Flash_Clipboard_Type clipboard_type,
- PP_Flash_Clipboard_Format format) {
+uint32_t RegisterCustomFormat(PP_Instance instance,
+ const char* format_name) {
EnterInstance enter(instance);
if (enter.failed())
return PP_FALSE;
- return enter.functions()->GetFlashAPI()->IsClipboardFormatAvailable(
- instance, clipboard_type, format);
+ return enter.functions()->GetFlashClipboardAPI(
+ instance)->RegisterCustomFormat(instance, format_name);
+}
+
+PP_Bool IsFormatAvailable(PP_Instance instance,
+ PP_Flash_Clipboard_Type clipboard_type,
+ uint32_t format) {
+ EnterInstance enter(instance);
+ if (enter.failed())
+ return PP_FALSE;
+ return enter.functions()->GetFlashClipboardAPI(
+ instance)->IsFormatAvailable(instance, clipboard_type, format);
}
PP_Var ReadData(PP_Instance instance,
PP_Flash_Clipboard_Type clipboard_type,
- PP_Flash_Clipboard_Format format) {
+ uint32_t format) {
EnterInstance enter(instance);
if (enter.failed())
return PP_MakeUndefined();
- return enter.functions()->GetFlashAPI()->ReadClipboardData(
+ return enter.functions()->GetFlashClipboardAPI(instance)->ReadData(
instance, clipboard_type, format);
}
int32_t WriteData(PP_Instance instance,
PP_Flash_Clipboard_Type clipboard_type,
uint32_t data_item_count,
- const PP_Flash_Clipboard_Format formats[],
+ const uint32_t formats[],
const PP_Var data_items[]) {
EnterInstance enter(instance);
if (enter.failed())
return enter.retval();
- return enter.functions()->GetFlashAPI()->WriteClipboardData(
+ return enter.functions()->GetFlashClipboardAPI(instance)->WriteData(
instance, clipboard_type, data_item_count, formats, data_items);
}
-PP_Var ReadPlainText(PP_Instance instance,
- PP_Flash_Clipboard_Type clipboard_type) {
- return ReadData(instance,
- clipboard_type,
- PP_FLASH_CLIPBOARD_FORMAT_PLAINTEXT);
+PP_Bool IsFormatAvailable_4_0(PP_Instance instance,
+ PP_Flash_Clipboard_Type clipboard_type,
+ PP_Flash_Clipboard_Format format) {
+ return IsFormatAvailable(instance, clipboard_type,
+ static_cast<uint32_t>(format));
}
-int32_t WritePlainText(PP_Instance instance,
- PP_Flash_Clipboard_Type clipboard_type,
- PP_Var text) {
- PP_Flash_Clipboard_Format format = PP_FLASH_CLIPBOARD_FORMAT_PLAINTEXT;
- return WriteData(instance, clipboard_type, 1, &format, &text);
+PP_Var ReadData_4_0(PP_Instance instance,
+ PP_Flash_Clipboard_Type clipboard_type,
+ PP_Flash_Clipboard_Format format) {
+ return ReadData(instance, clipboard_type, static_cast<uint32_t>(format));
}
-const PPB_Flash_Clipboard_3_0 g_ppb_flash_clipboard_thunk_3_0 = {
- &IsFormatAvailable,
- &ReadPlainText,
- &WritePlainText
-};
+int32_t WriteData_4_0(PP_Instance instance,
+ PP_Flash_Clipboard_Type clipboard_type,
+ uint32_t data_item_count,
+ const PP_Flash_Clipboard_Format formats[],
+ const PP_Var data_items[]) {
+ scoped_array<uint32_t> new_formats(new uint32_t[data_item_count]);
+ for (uint32_t i = 0; i < data_item_count; ++i)
+ new_formats[i] = static_cast<uint32_t>(formats[i]);
+ return WriteData(instance, clipboard_type, data_item_count,
+ new_formats.get(), data_items);
+}
const PPB_Flash_Clipboard_4_0 g_ppb_flash_clipboard_thunk_4_0 = {
+ &IsFormatAvailable_4_0,
+ &ReadData_4_0,
+ &WriteData_4_0
+};
+
+const PPB_Flash_Clipboard_5_0 g_ppb_flash_clipboard_thunk_5_0 = {
+ &RegisterCustomFormat,
&IsFormatAvailable,
&ReadData,
&WriteData
@@ -73,13 +95,13 @@
} // namespace
-const PPB_Flash_Clipboard_3_0* GetPPB_Flash_Clipboard_3_0_Thunk() {
- return &g_ppb_flash_clipboard_thunk_3_0;
-}
-
const PPB_Flash_Clipboard_4_0* GetPPB_Flash_Clipboard_4_0_Thunk() {
return &g_ppb_flash_clipboard_thunk_4_0;
}
+const PPB_Flash_Clipboard_5_0* GetPPB_Flash_Clipboard_5_0_Thunk() {
+ return &g_ppb_flash_clipboard_thunk_5_0;
+}
+
} // namespace thunk
} // namespace ppapi