summaryrefslogtreecommitdiffstats
path: root/ppapi/thunk
diff options
context:
space:
mode:
authorraymes@chromium.org <raymes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-01 23:39:34 +0000
committerraymes@chromium.org <raymes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-01 23:39:34 +0000
commita1686e279d7f6ec3cebc91cd759af80963e2c0ad (patch)
tree19f9986146e49985b8ddecee53a241c4efe7b083 /ppapi/thunk
parent259359a48b7f497a355bcd9fea7ae3bd361a7539 (diff)
downloadchromium_src-a1686e279d7f6ec3cebc91cd759af80963e2c0ad.zip
chromium_src-a1686e279d7f6ec3cebc91cd759af80963e2c0ad.tar.gz
chromium_src-a1686e279d7f6ec3cebc91cd759af80963e2c0ad.tar.bz2
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
Diffstat (limited to 'ppapi/thunk')
-rw-r--r--ppapi/thunk/interfaces_ppb_private_flash.h16
-rw-r--r--ppapi/thunk/ppb_flash_api.h15
-rw-r--r--ppapi/thunk/ppb_flash_clipboard_api.h40
-rw-r--r--ppapi/thunk/ppb_flash_clipboard_thunk.cc76
-rw-r--r--ppapi/thunk/ppb_instance_api.h5
5 files changed, 101 insertions, 51 deletions
diff --git a/ppapi/thunk/interfaces_ppb_private_flash.h b/ppapi/thunk/interfaces_ppb_private_flash.h
index 7a3b423..89f9f2b8 100644
--- a/ppapi/thunk/interfaces_ppb_private_flash.h
+++ b/ppapi/thunk/interfaces_ppb_private_flash.h
@@ -31,15 +31,6 @@ PROXIED_IFACE(PPB_Flash,
PPB_Flash_12_6)
PROXIED_IFACE(PPB_Flash,
- PPB_FLASH_CLIPBOARD_INTERFACE_3_LEGACY,
- PPB_Flash_Clipboard_3_0)
-PROXIED_IFACE(PPB_Flash,
- PPB_FLASH_CLIPBOARD_INTERFACE_3_0,
- PPB_Flash_Clipboard_3_0)
-PROXIED_IFACE(PPB_Flash,
- PPB_FLASH_CLIPBOARD_INTERFACE_4_0,
- PPB_Flash_Clipboard_4_0)
-PROXIED_IFACE(PPB_Flash,
PPB_FLASH_FILE_MODULELOCAL_INTERFACE_2_0,
PPB_Flash_File_ModuleLocal_2_0)
PROXIED_IFACE(PPB_Flash,
@@ -48,6 +39,13 @@ PROXIED_IFACE(PPB_Flash,
PROXIED_IFACE(PPB_Flash,
PPB_FLASH_FILE_FILEREF_INTERFACE,
PPB_Flash_File_FileRef)
+PROXIED_IFACE(NoAPIName,
+ PPB_FLASH_CLIPBOARD_INTERFACE_4_0,
+ PPB_Flash_Clipboard_4_0)
+PROXIED_IFACE(NoAPIName,
+ PPB_FLASH_CLIPBOARD_INTERFACE_5_0,
+ PPB_Flash_Clipboard_5_0)
+
PROXIED_IFACE(NoAPIName,
PPB_FLASH_DEVICEID_INTERFACE_1_0,
diff --git a/ppapi/thunk/ppb_flash_api.h b/ppapi/thunk/ppb_flash_api.h
index 7a1a641..1a7ed5b 100644
--- a/ppapi/thunk/ppb_flash_api.h
+++ b/ppapi/thunk/ppb_flash_api.h
@@ -6,7 +6,6 @@
#define PPAPI_THUNK_PPB_FLASH_API_H_
#include "ppapi/c/private/ppb_flash.h"
-#include "ppapi/c/private/ppb_flash_clipboard.h"
#include "ppapi/c/private/ppb_flash_file.h"
#include "ppapi/thunk/ppapi_thunk_export.h"
@@ -68,20 +67,6 @@ class PPAPI_THUNK_EXPORT PPB_Flash_API {
PP_FlashCrashKey key,
PP_Var value) = 0;
- // FlashClipboard.
- virtual PP_Bool IsClipboardFormatAvailable(
- PP_Instance instance,
- PP_Flash_Clipboard_Type clipboard_type,
- PP_Flash_Clipboard_Format format) = 0;
- virtual PP_Var ReadClipboardData(PP_Instance instance,
- PP_Flash_Clipboard_Type clipboard_type,
- PP_Flash_Clipboard_Format format) = 0;
- virtual int32_t WriteClipboardData(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[]) = 0;
-
// FlashFile_ModuleLocal.
virtual bool CreateThreadAdapterForInstance(PP_Instance instance) = 0;
virtual void ClearThreadAdapterForInstance(PP_Instance instance) = 0;
diff --git a/ppapi/thunk/ppb_flash_clipboard_api.h b/ppapi/thunk/ppb_flash_clipboard_api.h
new file mode 100644
index 0000000..ef022c4a
--- /dev/null
+++ b/ppapi/thunk/ppb_flash_clipboard_api.h
@@ -0,0 +1,40 @@
+// 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.
+
+#ifndef PPAPI_THUNK_PPB_FLASH_CLIPBOARD_API_H_
+#define PPAPI_THUNK_PPB_FLASH_CLIPBOARD_API_H_
+
+#include "ppapi/c/private/ppb_flash_clipboard.h"
+
+namespace ppapi {
+namespace thunk {
+
+class PPB_Flash_Clipboard_API {
+ public:
+ virtual ~PPB_Flash_Clipboard_API() {}
+
+ // PPB_Flash_Clipboard.
+ virtual uint32_t RegisterCustomFormat(
+ PP_Instance instance,
+ const char* format_name) = 0;
+ virtual PP_Bool IsFormatAvailable(
+ PP_Instance instance,
+ PP_Flash_Clipboard_Type clipboard_type,
+ uint32_t format) = 0;
+ virtual PP_Var ReadData(
+ PP_Instance instance,
+ PP_Flash_Clipboard_Type clipboard_type,
+ uint32_t format) = 0;
+ virtual int32_t WriteData(
+ PP_Instance instance,
+ PP_Flash_Clipboard_Type clipboard_type,
+ uint32_t data_item_count,
+ const uint32_t formats[],
+ const PP_Var data_items[]) = 0;
+};
+
+} // namespace thunk
+} // namespace ppapi
+
+#endif // PPAPI_THUNK_PPB_FLASH_CLIPBOARD_API_H_
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 {
+uint32_t RegisterCustomFormat(PP_Instance instance,
+ const char* format_name) {
+ EnterInstance enter(instance);
+ if (enter.failed())
+ return PP_FALSE;
+ return enter.functions()->GetFlashClipboardAPI(
+ instance)->RegisterCustomFormat(instance, format_name);
+}
+
PP_Bool IsFormatAvailable(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_FALSE;
- return enter.functions()->GetFlashAPI()->IsClipboardFormatAvailable(
- instance, clipboard_type, format);
+ 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 @@ const PPB_Flash_Clipboard_4_0 g_ppb_flash_clipboard_thunk_4_0 = {
} // 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
diff --git a/ppapi/thunk/ppb_instance_api.h b/ppapi/thunk/ppb_instance_api.h
index f91febd..c5f26e6 100644
--- a/ppapi/thunk/ppb_instance_api.h
+++ b/ppapi/thunk/ppb_instance_api.h
@@ -38,6 +38,7 @@ struct ViewData;
namespace thunk {
class PPB_Flash_API;
+class PPB_Flash_Clipboard_API;
class PPB_Flash_Functions_API;
class PPB_Gamepad_API;
@@ -95,6 +96,10 @@ class PPB_Instance_API {
virtual PPB_Flash_Functions_API* GetFlashFunctionsAPI(
PP_Instance instance) = 0;
+ // Flash_Clipboard.
+ virtual PPB_Flash_Clipboard_API* GetFlashClipboardAPI(
+ PP_Instance instance) = 0;
+
// Gamepad.
virtual PPB_Gamepad_API* GetGamepadAPI(PP_Instance instance) = 0;