Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(73)

Side by Side Diff: ppapi/proxy/ppb_flash_proxy.cc

Issue 11225021: Move flash clipboard to the new proxy and add custom format support (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ppapi/proxy/ppb_flash_proxy.h ('k') | ppapi/proxy/ppb_instance_proxy.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ppapi/proxy/ppb_flash_proxy.h" 5 #include "ppapi/proxy/ppb_flash_proxy.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 8
9 #include <limits> 9 #include <limits>
10 10
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_QuitMessageLoop, 115 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_QuitMessageLoop,
116 OnHostMsgQuitMessageLoop) 116 OnHostMsgQuitMessageLoop)
117 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_GetLocalTimeZoneOffset, 117 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_GetLocalTimeZoneOffset,
118 OnHostMsgGetLocalTimeZoneOffset) 118 OnHostMsgGetLocalTimeZoneOffset)
119 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_IsRectTopmost, 119 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_IsRectTopmost,
120 OnHostMsgIsRectTopmost) 120 OnHostMsgIsRectTopmost)
121 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_FlashSetFullscreen, 121 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_FlashSetFullscreen,
122 OnHostMsgFlashSetFullscreen) 122 OnHostMsgFlashSetFullscreen)
123 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_FlashGetScreenSize, 123 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_FlashGetScreenSize,
124 OnHostMsgFlashGetScreenSize) 124 OnHostMsgFlashGetScreenSize)
125 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_IsClipboardFormatAvailable,
126 OnHostMsgIsClipboardFormatAvailable)
127 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_ReadClipboardData,
128 OnHostMsgReadClipboardData)
129 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_WriteClipboardData,
130 OnHostMsgWriteClipboardData)
131 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_OpenFileRef, 125 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_OpenFileRef,
132 OnHostMsgOpenFileRef) 126 OnHostMsgOpenFileRef)
133 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_QueryFileRef, 127 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_QueryFileRef,
134 OnHostMsgQueryFileRef) 128 OnHostMsgQueryFileRef)
135 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_GetDeviceID, 129 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_GetDeviceID,
136 OnHostMsgGetDeviceID) 130 OnHostMsgGetDeviceID)
137 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_InvokePrinting, 131 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_InvokePrinting,
138 OnHostMsgInvokePrinting) 132 OnHostMsgInvokePrinting)
139 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_GetSetting, 133 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_GetSetting,
140 OnHostMsgGetSetting) 134 OnHostMsgGetSetting)
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 StringVar *url_string_var(StringVar::FromPPVar(value)); 350 StringVar *url_string_var(StringVar::FromPPVar(value));
357 if (!url_string_var) 351 if (!url_string_var)
358 return PP_FALSE; 352 return PP_FALSE;
359 std::string url_string(url_string_var->value()); 353 std::string url_string(url_string_var->value());
360 PluginGlobals::Get()->plugin_proxy_delegate()->SetActiveURL(url_string); 354 PluginGlobals::Get()->plugin_proxy_delegate()->SetActiveURL(url_string);
361 return PP_TRUE; 355 return PP_TRUE;
362 } 356 }
363 return PP_FALSE; 357 return PP_FALSE;
364 } 358 }
365 359
366 PP_Bool PPB_Flash_Proxy::IsClipboardFormatAvailable(
367 PP_Instance instance,
368 PP_Flash_Clipboard_Type clipboard_type,
369 PP_Flash_Clipboard_Format format) {
370 if (!IsValidClipboardType(clipboard_type) || !IsValidClipboardFormat(format))
371 return PP_FALSE;
372
373 bool result = false;
374 dispatcher()->Send(new PpapiHostMsg_PPBFlash_IsClipboardFormatAvailable(
375 API_ID_PPB_FLASH,
376 instance,
377 static_cast<int>(clipboard_type),
378 static_cast<int>(format),
379 &result));
380 return PP_FromBool(result);
381 }
382
383 PP_Var PPB_Flash_Proxy::ReadClipboardData(
384 PP_Instance instance,
385 PP_Flash_Clipboard_Type clipboard_type,
386 PP_Flash_Clipboard_Format format) {
387 if (!IsValidClipboardType(clipboard_type) || !IsValidClipboardFormat(format))
388 return PP_MakeUndefined();
389
390 ReceiveSerializedVarReturnValue result;
391 dispatcher()->Send(new PpapiHostMsg_PPBFlash_ReadClipboardData(
392 API_ID_PPB_FLASH, instance,
393 static_cast<int>(clipboard_type), static_cast<int>(format), &result));
394 return result.Return(dispatcher());
395 }
396
397 int32_t PPB_Flash_Proxy::WriteClipboardData(
398 PP_Instance instance,
399 PP_Flash_Clipboard_Type clipboard_type,
400 uint32_t data_item_count,
401 const PP_Flash_Clipboard_Format formats[],
402 const PP_Var data_items[]) {
403 if (!IsValidClipboardType(clipboard_type))
404 return PP_ERROR_BADARGUMENT;
405
406 std::vector<SerializedVar> data_items_vector;
407 SerializedVarSendInput::ConvertVector(
408 dispatcher(),
409 data_items,
410 data_item_count,
411 &data_items_vector);
412 for (size_t i = 0; i < data_item_count; ++i) {
413 if (!IsValidClipboardFormat(formats[i]))
414 return PP_ERROR_BADARGUMENT;
415 }
416
417 std::vector<int> formats_vector(formats, formats + data_item_count);
418 dispatcher()->Send(new PpapiHostMsg_PPBFlash_WriteClipboardData(
419 API_ID_PPB_FLASH,
420 instance,
421 static_cast<int>(clipboard_type),
422 formats_vector,
423 data_items_vector));
424 // Assume success, since it allows us to avoid a sync IPC.
425 return PP_OK;
426 }
427
428 bool PPB_Flash_Proxy::CreateThreadAdapterForInstance(PP_Instance instance) { 360 bool PPB_Flash_Proxy::CreateThreadAdapterForInstance(PP_Instance instance) {
429 return true; 361 return true;
430 } 362 }
431 363
432 void PPB_Flash_Proxy::ClearThreadAdapterForInstance(PP_Instance instance) { 364 void PPB_Flash_Proxy::ClearThreadAdapterForInstance(PP_Instance instance) {
433 } 365 }
434 366
435 int32_t PPB_Flash_Proxy::OpenFile(PP_Instance, 367 int32_t PPB_Flash_Proxy::OpenFile(PP_Instance,
436 const char* path, 368 const char* path,
437 int32_t mode, 369 int32_t mode,
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
763 EnterInstanceNoLock enter(instance); 695 EnterInstanceNoLock enter(instance);
764 if (enter.succeeded()) { 696 if (enter.succeeded()) {
765 *result = enter.functions()->GetFlashAPI()->FlashGetScreenSize( 697 *result = enter.functions()->GetFlashAPI()->FlashGetScreenSize(
766 instance, size); 698 instance, size);
767 } else { 699 } else {
768 size->width = 0; 700 size->width = 0;
769 size->height = 0; 701 size->height = 0;
770 } 702 }
771 } 703 }
772 704
773 void PPB_Flash_Proxy::OnHostMsgIsClipboardFormatAvailable(
774 PP_Instance instance,
775 int clipboard_type,
776 int format,
777 bool* result) {
778 EnterInstanceNoLock enter(instance);
779 if (enter.succeeded()) {
780 *result = PP_ToBool(
781 enter.functions()->GetFlashAPI()->IsClipboardFormatAvailable(
782 instance,
783 static_cast<PP_Flash_Clipboard_Type>(clipboard_type),
784 static_cast<PP_Flash_Clipboard_Format>(format)));
785 } else {
786 *result = false;
787 }
788 }
789
790 void PPB_Flash_Proxy::OnHostMsgReadClipboardData(
791 PP_Instance instance,
792 int clipboard_type,
793 int format,
794 SerializedVarReturnValue result) {
795 EnterInstanceNoLock enter(instance);
796 if (enter.succeeded()) {
797 result.Return(dispatcher(),
798 enter.functions()->GetFlashAPI()->ReadClipboardData(
799 instance,
800 static_cast<PP_Flash_Clipboard_Type>(clipboard_type),
801 static_cast<PP_Flash_Clipboard_Format>(format)));
802 }
803 }
804
805 void PPB_Flash_Proxy::OnHostMsgWriteClipboardData(
806 PP_Instance instance,
807 int clipboard_type,
808 const std::vector<int>& formats,
809 SerializedVarVectorReceiveInput data_items) {
810 EnterInstanceNoLock enter(instance);
811 if (enter.succeeded()) {
812 uint32_t data_item_count;
813 PP_Var* data_items_array = data_items.Get(dispatcher(), &data_item_count);
814 CHECK(data_item_count == formats.size());
815
816 scoped_array<PP_Flash_Clipboard_Format> formats_array(
817 new PP_Flash_Clipboard_Format[formats.size()]);
818 for (uint32_t i = 0; i < formats.size(); ++i)
819 formats_array[i] = static_cast<PP_Flash_Clipboard_Format>(formats[i]);
820
821 int32_t result = enter.functions()->GetFlashAPI()->WriteClipboardData(
822 instance,
823 static_cast<PP_Flash_Clipboard_Type>(clipboard_type),
824 data_item_count,
825 formats_array.get(),
826 data_items_array);
827 DLOG_IF(WARNING, result != PP_OK)
828 << "Write to clipboard failed unexpectedly.";
829 (void)result; // Prevent warning in release mode.
830 }
831 }
832
833 void PPB_Flash_Proxy::OnHostMsgOpenFileRef( 705 void PPB_Flash_Proxy::OnHostMsgOpenFileRef(
834 PP_Instance instance, 706 PP_Instance instance,
835 const HostResource& host_resource, 707 const HostResource& host_resource,
836 int32_t mode, 708 int32_t mode,
837 IPC::PlatformFileForTransit* file_handle, 709 IPC::PlatformFileForTransit* file_handle,
838 int32_t* result) { 710 int32_t* result) {
839 EnterInstanceNoLock enter(instance); 711 EnterInstanceNoLock enter(instance);
840 if (enter.failed()) { 712 if (enter.failed()) {
841 *result = PP_ERROR_BADARGUMENT; 713 *result = PP_ERROR_BADARGUMENT;
842 return; 714 return;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
893 // It's rarely used enough that we just request this interface when needed. 765 // It's rarely used enough that we just request this interface when needed.
894 const PPB_Flash_Print_1_0* print_interface = 766 const PPB_Flash_Print_1_0* print_interface =
895 static_cast<const PPB_Flash_Print_1_0*>( 767 static_cast<const PPB_Flash_Print_1_0*>(
896 dispatcher()->local_get_interface()(PPB_FLASH_PRINT_INTERFACE_1_0)); 768 dispatcher()->local_get_interface()(PPB_FLASH_PRINT_INTERFACE_1_0));
897 if (print_interface) 769 if (print_interface)
898 print_interface->InvokePrinting(instance); 770 print_interface->InvokePrinting(instance);
899 } 771 }
900 772
901 } // namespace proxy 773 } // namespace proxy
902 } // namespace ppapi 774 } // namespace ppapi
OLDNEW
« no previous file with comments | « ppapi/proxy/ppb_flash_proxy.h ('k') | ppapi/proxy/ppb_instance_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698