OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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_char_set_proxy.h" | 5 #include "ppapi/proxy/ppb_char_set_proxy.h" |
6 | 6 |
7 #include "ppapi/c/dev/ppb_char_set_dev.h" | 7 #include "ppapi/c/dev/ppb_char_set_dev.h" |
8 #include "ppapi/c/ppb_core.h" | 8 #include "ppapi/c/ppb_core.h" |
9 #include "ppapi/proxy/plugin_dispatcher.h" | 9 #include "ppapi/proxy/plugin_dispatcher.h" |
10 #include "ppapi/proxy/ppapi_messages.h" | 10 #include "ppapi/proxy/ppapi_messages.h" |
11 #include "ppapi/proxy/serialized_var.h" | 11 #include "ppapi/proxy/serialized_var.h" |
12 | 12 |
13 namespace pp { | 13 namespace pp { |
14 namespace proxy { | 14 namespace proxy { |
15 | 15 |
16 namespace { | 16 namespace { |
17 | 17 |
18 char* UTF16ToCharSet(PP_Instance instance, | 18 char* UTF16ToCharSet(PP_Instance instance, |
19 const uint16_t* utf16, uint32_t utf16_len, | 19 const uint16_t* utf16, uint32_t utf16_len, |
20 const char* output_char_set, | 20 const char* output_char_set, |
21 PP_CharSet_ConversionError on_error, | 21 PP_CharSet_ConversionError on_error, |
22 uint32_t* output_length) { | 22 uint32_t* output_length) { |
| 23 *output_length = 0; |
| 24 PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); |
| 25 if (!dispatcher) |
| 26 return NULL; |
| 27 |
23 bool output_is_success = false; | 28 bool output_is_success = false; |
24 std::string result; | 29 std::string result; |
25 PluginDispatcher::Get()->Send(new PpapiHostMsg_PPBCharSet_UTF16ToCharSet( | 30 dispatcher->Send(new PpapiHostMsg_PPBCharSet_UTF16ToCharSet( |
26 INTERFACE_ID_PPB_CHAR_SET, instance, | 31 INTERFACE_ID_PPB_CHAR_SET, instance, |
27 string16(reinterpret_cast<const char16*>(utf16), utf16_len), | 32 string16(reinterpret_cast<const char16*>(utf16), utf16_len), |
28 std::string(output_char_set), static_cast<int32_t>(on_error), | 33 std::string(output_char_set), static_cast<int32_t>(on_error), |
29 &result, &output_is_success)); | 34 &result, &output_is_success)); |
30 if (!output_is_success) | 35 if (!output_is_success) |
31 return NULL; | 36 return NULL; |
32 | 37 |
33 *output_length = static_cast<uint32_t>(result.size()); | 38 *output_length = static_cast<uint32_t>(result.size()); |
34 char* ret_val = static_cast<char*>(malloc(result.size() + 1)); | 39 char* ret_val = static_cast<char*>(malloc(result.size() + 1)); |
35 memcpy(ret_val, result.c_str(), result.size() + 1); | 40 memcpy(ret_val, result.c_str(), result.size() + 1); |
36 return ret_val; | 41 return ret_val; |
37 } | 42 } |
38 | 43 |
39 uint16_t* CharSetToUTF16(PP_Instance instance, | 44 uint16_t* CharSetToUTF16(PP_Instance instance, |
40 const char* input, uint32_t input_len, | 45 const char* input, uint32_t input_len, |
41 const char* input_char_set, | 46 const char* input_char_set, |
42 PP_CharSet_ConversionError on_error, | 47 PP_CharSet_ConversionError on_error, |
43 uint32_t* output_length) { | 48 uint32_t* output_length) { |
| 49 *output_length = 0; |
| 50 PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); |
| 51 if (!dispatcher) |
| 52 return NULL; |
| 53 |
44 bool output_is_success = false; | 54 bool output_is_success = false; |
45 string16 result; | 55 string16 result; |
46 PluginDispatcher::Get()->Send(new PpapiHostMsg_PPBCharSet_CharSetToUTF16( | 56 dispatcher->Send(new PpapiHostMsg_PPBCharSet_CharSetToUTF16( |
47 INTERFACE_ID_PPB_CHAR_SET, instance, | 57 INTERFACE_ID_PPB_CHAR_SET, instance, |
48 std::string(input, input_len), | 58 std::string(input, input_len), |
49 std::string(input_char_set), static_cast<int32_t>(on_error), | 59 std::string(input_char_set), static_cast<int32_t>(on_error), |
50 &result, &output_is_success)); | 60 &result, &output_is_success)); |
51 if (!output_is_success) | 61 if (!output_is_success) |
52 return NULL; | 62 return NULL; |
53 | 63 |
54 *output_length = static_cast<uint32_t>(result.size()); | 64 *output_length = static_cast<uint32_t>(result.size()); |
55 uint16_t* ret_val = static_cast<uint16_t*>( | 65 uint16_t* ret_val = static_cast<uint16_t*>( |
56 malloc((result.size() + 1) * sizeof(uint16_t))); | 66 malloc((result.size() + 1) * sizeof(uint16_t))); |
57 memcpy(ret_val, result.c_str(), (result.size() + 1) * sizeof(uint16_t)); | 67 memcpy(ret_val, result.c_str(), (result.size() + 1) * sizeof(uint16_t)); |
58 return ret_val; | 68 return ret_val; |
59 } | 69 } |
60 | 70 |
61 PP_Var GetDefaultCharSet(PP_Instance instance) { | 71 PP_Var GetDefaultCharSet(PP_Instance instance) { |
| 72 PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); |
| 73 if (!dispatcher) |
| 74 return PP_MakeUndefined(); |
| 75 |
62 ReceiveSerializedVarReturnValue result; | 76 ReceiveSerializedVarReturnValue result; |
63 PluginDispatcher::Get()->Send(new PpapiHostMsg_PPBCharSet_GetDefaultCharSet( | 77 dispatcher->Send(new PpapiHostMsg_PPBCharSet_GetDefaultCharSet( |
64 INTERFACE_ID_PPB_CHAR_SET, instance, &result)); | 78 INTERFACE_ID_PPB_CHAR_SET, instance, &result)); |
65 return result.Return(PluginDispatcher::Get()); | 79 return result.Return(dispatcher); |
66 } | 80 } |
67 | 81 |
68 const PPB_CharSet_Dev ppb_charset_interface = { | 82 const PPB_CharSet_Dev ppb_charset_interface = { |
69 &UTF16ToCharSet, | 83 &UTF16ToCharSet, |
70 &CharSetToUTF16, | 84 &CharSetToUTF16, |
71 &GetDefaultCharSet | 85 &GetDefaultCharSet |
72 }; | 86 }; |
73 | 87 |
74 } // namespace | 88 } // namespace |
75 | 89 |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 const PPB_Core* PPB_CharSet_Proxy::GetCoreInterface() { | 169 const PPB_Core* PPB_CharSet_Proxy::GetCoreInterface() { |
156 if (!core_interface_) { | 170 if (!core_interface_) { |
157 core_interface_ = static_cast<const PPB_Core*>( | 171 core_interface_ = static_cast<const PPB_Core*>( |
158 dispatcher()->GetLocalInterface(PPB_CORE_INTERFACE)); | 172 dispatcher()->GetLocalInterface(PPB_CORE_INTERFACE)); |
159 } | 173 } |
160 return core_interface_; | 174 return core_interface_; |
161 } | 175 } |
162 | 176 |
163 } // namespace proxy | 177 } // namespace proxy |
164 } // namespace pp | 178 } // namespace pp |
OLD | NEW |