Index: ppapi/proxy/ppb_char_set_proxy.cc |
diff --git a/ppapi/proxy/ppb_char_set_proxy.cc b/ppapi/proxy/ppb_char_set_proxy.cc |
index 35b6473646bc41e115f6a445f832229d79862aab..5c9c7d026a1771195b321251745e0abbb649cba1 100644 |
--- a/ppapi/proxy/ppb_char_set_proxy.cc |
+++ b/ppapi/proxy/ppb_char_set_proxy.cc |
@@ -4,68 +4,42 @@ |
#include "ppapi/proxy/ppb_char_set_proxy.h" |
+#include "base/basictypes.h" |
#include "ppapi/c/dev/ppb_char_set_dev.h" |
#include "ppapi/c/ppb_core.h" |
#include "ppapi/proxy/plugin_dispatcher.h" |
#include "ppapi/proxy/ppapi_messages.h" |
#include "ppapi/proxy/serialized_var.h" |
+#include "ppapi/shared_impl/char_set_impl.h" |
namespace pp { |
namespace proxy { |
namespace { |
-char* UTF16ToCharSet(PP_Instance instance, |
+const PPB_Core* GetCoreInterface() { |
+ return static_cast<const PPB_Core*>( |
+ PluginDispatcher::GetInterfaceFromDispatcher(PPB_CORE_INTERFACE)); |
+} |
+ |
+char* UTF16ToCharSet(PP_Instance /* instance */, |
const uint16_t* utf16, uint32_t utf16_len, |
const char* output_char_set, |
PP_CharSet_ConversionError on_error, |
uint32_t* output_length) { |
- *output_length = 0; |
- PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); |
- if (!dispatcher) |
- return NULL; |
- |
- bool output_is_success = false; |
- std::string result; |
- dispatcher->Send(new PpapiHostMsg_PPBCharSet_UTF16ToCharSet( |
- INTERFACE_ID_PPB_CHAR_SET, instance, |
- string16(reinterpret_cast<const char16*>(utf16), utf16_len), |
- std::string(output_char_set), static_cast<int32_t>(on_error), |
- &result, &output_is_success)); |
- if (!output_is_success) |
- return NULL; |
- |
- *output_length = static_cast<uint32_t>(result.size()); |
- char* ret_val = static_cast<char*>(malloc(result.size() + 1)); |
- memcpy(ret_val, result.c_str(), result.size() + 1); |
- return ret_val; |
+ return pp::shared_impl::CharSetImpl::UTF16ToCharSet( |
+ GetCoreInterface(), utf16, utf16_len, output_char_set, on_error, |
+ output_length); |
} |
-uint16_t* CharSetToUTF16(PP_Instance instance, |
+uint16_t* CharSetToUTF16(PP_Instance /* instance */, |
const char* input, uint32_t input_len, |
const char* input_char_set, |
PP_CharSet_ConversionError on_error, |
uint32_t* output_length) { |
- *output_length = 0; |
- PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); |
- if (!dispatcher) |
- return NULL; |
- |
- bool output_is_success = false; |
- string16 result; |
- dispatcher->Send(new PpapiHostMsg_PPBCharSet_CharSetToUTF16( |
- INTERFACE_ID_PPB_CHAR_SET, instance, |
- std::string(input, input_len), |
- std::string(input_char_set), static_cast<int32_t>(on_error), |
- &result, &output_is_success)); |
- if (!output_is_success) |
- return NULL; |
- |
- *output_length = static_cast<uint32_t>(result.size()); |
- uint16_t* ret_val = static_cast<uint16_t*>( |
- malloc((result.size() + 1) * sizeof(uint16_t))); |
- memcpy(ret_val, result.c_str(), (result.size() + 1) * sizeof(uint16_t)); |
- return ret_val; |
+ return pp::shared_impl::CharSetImpl::CharSetToUTF16( |
+ GetCoreInterface(), input, input_len, input_char_set, on_error, |
+ output_length); |
} |
PP_Var GetDefaultCharSet(PP_Instance instance) { |
@@ -94,8 +68,7 @@ InterfaceProxy* CreateCharSetProxy(Dispatcher* dispatcher, |
PPB_CharSet_Proxy::PPB_CharSet_Proxy(Dispatcher* dispatcher, |
const void* target_interface) |
- : InterfaceProxy(dispatcher, target_interface), |
- core_interface_(NULL) { |
+ : InterfaceProxy(dispatcher, target_interface) { |
} |
PPB_CharSet_Proxy::~PPB_CharSet_Proxy() { |
@@ -116,10 +89,6 @@ const InterfaceProxy::Info* PPB_CharSet_Proxy::GetInfo() { |
bool PPB_CharSet_Proxy::OnMessageReceived(const IPC::Message& msg) { |
bool handled = true; |
IPC_BEGIN_MESSAGE_MAP(PPB_CharSet_Proxy, msg) |
- IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBCharSet_UTF16ToCharSet, |
- OnMsgUTF16ToCharSet) |
- IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBCharSet_CharSetToUTF16, |
- OnMsgCharSetToUTF16) |
IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBCharSet_GetDefaultCharSet, |
OnMsgGetDefaultCharSet) |
IPC_MESSAGE_UNHANDLED(handled = false) |
@@ -127,47 +96,6 @@ bool PPB_CharSet_Proxy::OnMessageReceived(const IPC::Message& msg) { |
return handled; |
} |
-void PPB_CharSet_Proxy::OnMsgUTF16ToCharSet(PP_Instance instance, |
- const string16& utf16, |
- const std::string& char_set, |
- int32_t on_error, |
- std::string* output, |
- bool* output_is_success) { |
- uint32_t output_len = 0; |
- char* result = ppb_char_set_target()->UTF16ToCharSet( |
- instance, reinterpret_cast<const uint16_t*>(utf16.c_str()), |
- static_cast<uint32_t>(utf16.size()), |
- char_set.c_str(), static_cast<PP_CharSet_ConversionError>(on_error), |
- &output_len); |
- if (result) { |
- output->assign(result, output_len); |
- GetCoreInterface()->MemFree(result); |
- *output_is_success = true; |
- } else { |
- *output_is_success = false; |
- } |
-} |
- |
-void PPB_CharSet_Proxy::OnMsgCharSetToUTF16(PP_Instance instance, |
- const std::string& input, |
- const std::string& char_set, |
- int32_t on_error, |
- string16* output, |
- bool* output_is_success) { |
- uint32_t output_len = 0; |
- uint16_t* result = ppb_char_set_target()->CharSetToUTF16( |
- instance, input.c_str(), static_cast<uint32_t>(input.size()), |
- char_set.c_str(), static_cast<PP_CharSet_ConversionError>(on_error), |
- &output_len); |
- if (result) { |
- output->assign(reinterpret_cast<const char16*>(result), output_len); |
- GetCoreInterface()->MemFree(result); |
- *output_is_success = true; |
- } else { |
- *output_is_success = false; |
- } |
-} |
- |
void PPB_CharSet_Proxy::OnMsgGetDefaultCharSet( |
PP_Instance instance, |
SerializedVarReturnValue result) { |
@@ -175,13 +103,5 @@ void PPB_CharSet_Proxy::OnMsgGetDefaultCharSet( |
ppb_char_set_target()->GetDefaultCharSet(instance)); |
} |
-const PPB_Core* PPB_CharSet_Proxy::GetCoreInterface() { |
- if (!core_interface_) { |
- core_interface_ = static_cast<const PPB_Core*>( |
- dispatcher()->GetLocalInterface(PPB_CORE_INTERFACE)); |
- } |
- return core_interface_; |
-} |
- |
} // namespace proxy |
} // namespace pp |