diff options
author | raymes@chromium.org <raymes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-01 23:39:34 +0000 |
---|---|---|
committer | raymes@chromium.org <raymes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-01 23:39:34 +0000 |
commit | a1686e279d7f6ec3cebc91cd759af80963e2c0ad (patch) | |
tree | 19f9986146e49985b8ddecee53a241c4efe7b083 /ppapi/thunk | |
parent | 259359a48b7f497a355bcd9fea7ae3bd361a7539 (diff) | |
download | chromium_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.h | 16 | ||||
-rw-r--r-- | ppapi/thunk/ppb_flash_api.h | 15 | ||||
-rw-r--r-- | ppapi/thunk/ppb_flash_clipboard_api.h | 40 | ||||
-rw-r--r-- | ppapi/thunk/ppb_flash_clipboard_thunk.cc | 76 | ||||
-rw-r--r-- | ppapi/thunk/ppb_instance_api.h | 5 |
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; |