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 3// found in the LICENSE file. 4 5#include "base/memory/scoped_ptr.h" 6#include "ppapi/c/pp_errors.h" 7#include "ppapi/c/private/ppb_flash_clipboard.h" 8#include "ppapi/thunk/enter.h" 9#include "ppapi/thunk/ppb_flash_clipboard_api.h" 10#include "ppapi/thunk/thunk.h" 11 12namespace ppapi { 13namespace thunk { 14 15namespace { 16 17uint32_t RegisterCustomFormat(PP_Instance instance, 18 const char* format_name) { 19 EnterInstanceAPI<PPB_Flash_Clipboard_API> enter(instance); 20 if (enter.failed()) 21 return PP_FALSE; 22 return enter.functions()->RegisterCustomFormat(instance, format_name); 23} 24 25PP_Bool IsFormatAvailable(PP_Instance instance, 26 PP_Flash_Clipboard_Type clipboard_type, 27 uint32_t format) { 28 EnterInstanceAPI<PPB_Flash_Clipboard_API> enter(instance); 29 if (enter.failed()) 30 return PP_FALSE; 31 return enter.functions()->IsFormatAvailable(instance, clipboard_type, format); 32} 33 34PP_Var ReadData(PP_Instance instance, 35 PP_Flash_Clipboard_Type clipboard_type, 36 uint32_t format) { 37 EnterInstanceAPI<PPB_Flash_Clipboard_API> enter(instance); 38 if (enter.failed()) 39 return PP_MakeUndefined(); 40 return enter.functions()->ReadData(instance, clipboard_type, format); 41} 42 43int32_t WriteData(PP_Instance instance, 44 PP_Flash_Clipboard_Type clipboard_type, 45 uint32_t data_item_count, 46 const uint32_t formats[], 47 const PP_Var data_items[]) { 48 EnterInstanceAPI<PPB_Flash_Clipboard_API> enter(instance); 49 if (enter.failed()) 50 return enter.retval(); 51 return enter.functions()->WriteData( 52 instance, clipboard_type, data_item_count, formats, data_items); 53} 54 55PP_Bool IsFormatAvailable_4_0(PP_Instance instance, 56 PP_Flash_Clipboard_Type clipboard_type, 57 PP_Flash_Clipboard_Format format) { 58 return IsFormatAvailable(instance, clipboard_type, 59 static_cast<uint32_t>(format)); 60} 61 62PP_Var ReadData_4_0(PP_Instance instance, 63 PP_Flash_Clipboard_Type clipboard_type, 64 PP_Flash_Clipboard_Format format) { 65 return ReadData(instance, clipboard_type, static_cast<uint32_t>(format)); 66} 67 68int32_t WriteData_4_0(PP_Instance instance, 69 PP_Flash_Clipboard_Type clipboard_type, 70 uint32_t data_item_count, 71 const PP_Flash_Clipboard_Format formats[], 72 const PP_Var data_items[]) { 73 scoped_ptr<uint32_t[]> new_formats(new uint32_t[data_item_count]); 74 for (uint32_t i = 0; i < data_item_count; ++i) 75 new_formats[i] = static_cast<uint32_t>(formats[i]); 76 return WriteData(instance, clipboard_type, data_item_count, 77 new_formats.get(), data_items); 78} 79 80PP_Bool GetSequenceNumber(PP_Instance instance, 81 PP_Flash_Clipboard_Type clipboard_type, 82 uint64_t* sequence_number) { 83 EnterInstanceAPI<PPB_Flash_Clipboard_API> enter(instance); 84 if (enter.failed()) 85 return PP_FALSE; 86 return enter.functions()->GetSequenceNumber(instance, clipboard_type, 87 sequence_number); 88} 89 90const PPB_Flash_Clipboard_4_0 g_ppb_flash_clipboard_thunk_4_0 = { 91 &IsFormatAvailable_4_0, 92 &ReadData_4_0, 93 &WriteData_4_0 94}; 95 96const PPB_Flash_Clipboard_5_0 g_ppb_flash_clipboard_thunk_5_0 = { 97 &RegisterCustomFormat, 98 &IsFormatAvailable, 99 &ReadData, 100 &WriteData 101}; 102 103const PPB_Flash_Clipboard_5_1 g_ppb_flash_clipboard_thunk_5_1 = { 104 &RegisterCustomFormat, 105 &IsFormatAvailable, 106 &ReadData, 107 &WriteData, 108 &GetSequenceNumber 109}; 110 111} // namespace 112 113const PPB_Flash_Clipboard_4_0* GetPPB_Flash_Clipboard_4_0_Thunk() { 114 return &g_ppb_flash_clipboard_thunk_4_0; 115} 116 117const PPB_Flash_Clipboard_5_0* GetPPB_Flash_Clipboard_5_0_Thunk() { 118 return &g_ppb_flash_clipboard_thunk_5_0; 119} 120 121const PPB_Flash_Clipboard_5_1* GetPPB_Flash_Clipboard_5_1_Thunk() { 122 return &g_ppb_flash_clipboard_thunk_5_1; 123} 124 125} // namespace thunk 126} // namespace ppapi 127