Index: ppapi/proxy/ppb_var_deprecated_proxy.cc |
=================================================================== |
--- ppapi/proxy/ppb_var_deprecated_proxy.cc (revision 0) |
+++ ppapi/proxy/ppb_var_deprecated_proxy.cc (revision 0) |
@@ -0,0 +1,385 @@ |
+// Copyright (c) 2010 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. |
+ |
+#include "ppapi/proxy/ppb_var_deprecated_proxy.h" |
+ |
+#include <stdlib.h> // For malloc |
+ |
+#include "base/logging.h" |
+#include "ppapi/c/dev/ppb_var_deprecated.h" |
+#include "ppapi/c/pp_var.h" |
+#include "ppapi/c/ppb_core.h" |
+#include "ppapi/proxy/plugin_dispatcher.h" |
+#include "ppapi/proxy/ppapi_message_helpers.h" |
+#include "ppapi/proxy/ppapi_messages.h" |
+#include "ppapi/proxy/ppp_class_proxy.h" |
+#include "ppapi/proxy/serialized_var.h" |
+ |
+namespace pp { |
+namespace proxy { |
+ |
+namespace { |
+ |
+// PPP_Var_Deprecated plugin --------------------------------------------------- |
+ |
+void AddRefVar(PP_Var var) { |
+ PluginDispatcher::Get()->plugin_var_tracker()->AddRef(var); |
+} |
+ |
+void ReleaseVar(PP_Var var) { |
+ PluginDispatcher::Get()->plugin_var_tracker()->Release(var); |
+} |
+ |
+PP_Var VarFromUtf8(PP_Module module_id, const char* data, uint32_t len) { |
+ PP_Var ret; |
+ ret.type = PP_VARTYPE_STRING; |
+ // TODO(brettw) avoid this extra copy. |
+ ret.value.as_id = PluginDispatcher::Get()->plugin_var_tracker()->MakeString( |
+ std::string(data, len)); |
+ return ret; |
+} |
+ |
+const char* VarToUtf8(PP_Var var, uint32_t* len) { |
+ const std::string* str = |
+ PluginDispatcher::Get()->plugin_var_tracker()->GetExistingString(var); |
+ if (str) { |
+ *len = static_cast<uint32_t>(str->size()); |
+ return str->c_str(); |
+ } else { |
+ *len = 0; |
+ return NULL; |
+ } |
+} |
+ |
+bool HasProperty(PP_Var var, |
+ PP_Var name, |
+ PP_Var* exception) { |
+ Dispatcher* dispatcher = PluginDispatcher::Get(); |
+ ReceiveSerializedException se(dispatcher, exception); |
+ bool result = false; |
+ if (!se.IsThrown()) { |
+ dispatcher->Send(new PpapiHostMsg_PPBVar_HasProperty( |
+ INTERFACE_ID_PPB_VAR_DEPRECATED, |
+ SerializedVarSendInput(dispatcher, var), |
+ SerializedVarSendInput(dispatcher, name), &se, &result)); |
+ } |
+ return result; |
+} |
+ |
+bool HasMethod(PP_Var var, |
+ PP_Var name, |
+ PP_Var* exception) { |
+ Dispatcher* dispatcher = PluginDispatcher::Get(); |
+ ReceiveSerializedException se(dispatcher, exception); |
+ bool result = false; |
+ if (!se.IsThrown()) { |
+ dispatcher->Send(new PpapiHostMsg_PPBVar_HasMethodDeprecated( |
+ INTERFACE_ID_PPB_VAR_DEPRECATED, |
+ SerializedVarSendInput(dispatcher, var), |
+ SerializedVarSendInput(dispatcher, name), &se, &result)); |
+ } |
+ return result; |
+} |
+ |
+PP_Var GetProperty(PP_Var var, |
+ PP_Var name, |
+ PP_Var* exception) { |
+ Dispatcher* dispatcher = PluginDispatcher::Get(); |
+ ReceiveSerializedException se(dispatcher, exception); |
+ ReceiveSerializedVarReturnValue result; |
+ if (!se.IsThrown()) { |
+ dispatcher->Send(new PpapiHostMsg_PPBVar_GetProperty( |
+ INTERFACE_ID_PPB_VAR_DEPRECATED, |
+ SerializedVarSendInput(dispatcher, var), |
+ SerializedVarSendInput(dispatcher, name), &se, &result)); |
+ } |
+ return result.Return(dispatcher); |
+} |
+ |
+void EnumerateProperties(PP_Var var, |
+ uint32_t* property_count, |
+ PP_Var** properties, |
+ PP_Var* exception) { |
+ Dispatcher* dispatcher = PluginDispatcher::Get(); |
+ |
+ ReceiveSerializedVarVectorOutParam out_vector(dispatcher, |
+ property_count, properties); |
+ ReceiveSerializedException se(dispatcher, exception); |
+ if (!se.IsThrown()) { |
+ dispatcher->Send(new PpapiHostMsg_PPBVar_EnumerateProperties( |
+ INTERFACE_ID_PPB_VAR_DEPRECATED, |
+ SerializedVarSendInput(dispatcher, var), |
+ out_vector.OutParam(), &se)); |
+ } |
+} |
+ |
+void SetProperty(PP_Var var, |
+ PP_Var name, |
+ PP_Var value, |
+ PP_Var* exception) { |
+ Dispatcher* dispatcher = PluginDispatcher::Get(); |
+ ReceiveSerializedException se(dispatcher, exception); |
+ if (!se.IsThrown()) { |
+ dispatcher->Send(new PpapiHostMsg_PPBVar_SetPropertyDeprecated( |
+ INTERFACE_ID_PPB_VAR_DEPRECATED, |
+ SerializedVarSendInput(dispatcher, var), |
+ SerializedVarSendInput(dispatcher, name), |
+ SerializedVarSendInput(dispatcher, value), &se)); |
+ } |
+} |
+ |
+void RemoveProperty(PP_Var var, |
+ PP_Var name, |
+ PP_Var* exception) { |
+ Dispatcher* dispatcher = PluginDispatcher::Get(); |
+ ReceiveSerializedException se(dispatcher, exception); |
+ bool result = false; |
+ if (!se.IsThrown()) { |
+ dispatcher->Send(new PpapiHostMsg_PPBVar_DeleteProperty( |
+ INTERFACE_ID_PPB_VAR_DEPRECATED, |
+ SerializedVarSendInput(dispatcher, var), |
+ SerializedVarSendInput(dispatcher, name), &se, &result)); |
+ } |
+} |
+ |
+PP_Var Call(PP_Var object, |
+ PP_Var method_name, |
+ uint32_t argc, |
+ PP_Var* argv, |
+ PP_Var* exception) { |
+ Dispatcher* dispatcher = PluginDispatcher::Get(); |
+ ReceiveSerializedVarReturnValue result; |
+ ReceiveSerializedException se(dispatcher, exception); |
+ if (!se.IsThrown()) { |
+ std::vector<SerializedVar> argv_vect; |
+ SerializedVarSendInput::ConvertVector(dispatcher, argv, argc, &argv_vect); |
+ |
+ dispatcher->Send(new PpapiHostMsg_PPBVar_CallDeprecated( |
+ INTERFACE_ID_PPB_VAR_DEPRECATED, |
+ SerializedVarSendInput(dispatcher, object), |
+ SerializedVarSendInput(dispatcher, method_name), argv_vect, |
+ &se, &result)); |
+ } |
+ return result.Return(dispatcher); |
+} |
+ |
+PP_Var Construct(PP_Var object, |
+ uint32_t argc, |
+ PP_Var* argv, |
+ PP_Var* exception) { |
+ Dispatcher* dispatcher = PluginDispatcher::Get(); |
+ ReceiveSerializedVarReturnValue result; |
+ ReceiveSerializedException se(dispatcher, exception); |
+ if (!se.IsThrown()) { |
+ std::vector<SerializedVar> argv_vect; |
+ SerializedVarSendInput::ConvertVector(dispatcher, argv, argc, &argv_vect); |
+ |
+ dispatcher->Send(new PpapiHostMsg_PPBVar_Construct( |
+ INTERFACE_ID_PPB_VAR_DEPRECATED, |
+ SerializedVarSendInput(dispatcher, object), |
+ argv_vect, &se, &result)); |
+ } |
+ return result.Return(dispatcher); |
+} |
+ |
+bool IsInstanceOf(PP_Var var, |
+ const PPP_Class_Deprecated* ppp_class, |
+ void** ppp_class_data) { |
+ bool result = false; |
+ Dispatcher* dispatcher = PluginDispatcher::Get(); |
+ int64 class_int = static_cast<int64>(reinterpret_cast<intptr_t>(ppp_class)); |
+ int64 class_data_int = 0; |
+ dispatcher->Send(new PpapiHostMsg_PPBVar_IsInstanceOfDeprecated( |
+ INTERFACE_ID_PPB_VAR_DEPRECATED, SerializedVarSendInput(dispatcher, var), |
+ class_int, &class_data_int, &result)); |
+ *ppp_class_data = |
+ reinterpret_cast<void*>(static_cast<intptr_t>(class_data_int)); |
+ return result; |
+} |
+ |
+PP_Var CreateObject(PP_Module module_id, |
+ const PPP_Class_Deprecated* ppp_class, |
+ void* ppp_class_data) { |
+ Dispatcher* dispatcher = PluginDispatcher::Get(); |
+ ReceiveSerializedVarReturnValue result; |
+ int64 class_int = static_cast<int64>(reinterpret_cast<intptr_t>(ppp_class)); |
+ int64 data_int = |
+ static_cast<int64>(reinterpret_cast<intptr_t>(ppp_class_data)); |
+ dispatcher->Send(new PpapiHostMsg_PPBVar_CreateObjectDeprecated( |
+ INTERFACE_ID_PPB_VAR_DEPRECATED, module_id, class_int, data_int, |
+ &result)); |
+ return result.Return(dispatcher); |
+} |
+ |
+const PPB_Var_Deprecated var_deprecated_interface = { |
+ &AddRefVar, |
+ &ReleaseVar, |
+ &VarFromUtf8, |
+ &VarToUtf8, |
+ &HasProperty, |
+ &HasMethod, |
+ &GetProperty, |
+ &EnumerateProperties, |
+ &SetProperty, |
+ &RemoveProperty, |
+ &Call, |
+ &Construct, |
+ &IsInstanceOf, |
+ &CreateObject |
+}; |
+ |
+} // namespace |
+ |
+PPB_Var_Deprecated_Proxy::PPB_Var_Deprecated_Proxy( |
+ Dispatcher* dispatcher, |
+ const void* target_interface) |
+ : InterfaceProxy(dispatcher, target_interface) { |
+} |
+ |
+PPB_Var_Deprecated_Proxy::~PPB_Var_Deprecated_Proxy() { |
+} |
+ |
+const void* PPB_Var_Deprecated_Proxy::GetSourceInterface() const { |
+ return &var_deprecated_interface; |
+} |
+ |
+InterfaceID PPB_Var_Deprecated_Proxy::GetInterfaceId() const { |
+ return INTERFACE_ID_PPB_VAR_DEPRECATED; |
+} |
+ |
+void PPB_Var_Deprecated_Proxy::OnMessageReceived(const IPC::Message& msg) { |
+ IPC_BEGIN_MESSAGE_MAP(PPB_Var_Deprecated_Proxy, msg) |
+ IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBVar_HasProperty, |
+ OnMsgHasProperty) |
+ IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBVar_HasMethodDeprecated, |
+ OnMsgHasMethodDeprecated) |
+ IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBVar_GetProperty, |
+ OnMsgGetProperty) |
+ IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBVar_DeleteProperty, |
+ OnMsgDeleteProperty) |
+ IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBVar_EnumerateProperties, |
+ OnMsgEnumerateProperties) |
+ IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBVar_SetPropertyDeprecated, |
+ OnMsgSetPropertyDeprecated) |
+ IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBVar_CallDeprecated, |
+ OnMsgCallDeprecated) |
+ IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBVar_Construct, |
+ OnMsgConstruct) |
+ IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBVar_IsInstanceOfDeprecated, |
+ OnMsgIsInstanceOfDeprecated) |
+ IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBVar_CreateObjectDeprecated, |
+ OnMsgCreateObjectDeprecated) |
+ IPC_END_MESSAGE_MAP() |
+ // FIXME(brettw) handle bad messages! |
jam
2010/11/03 17:21:22
nit: now that this is in chrome repo, shouldn't it
|
+} |
+ |
+void PPB_Var_Deprecated_Proxy::OnMsgHasProperty( |
+ SerializedVarReceiveInput var, |
+ SerializedVarReceiveInput name, |
+ SerializedVarOutParam exception, |
+ bool* result) { |
+ *result = ppb_var_target()->HasProperty(var.Get(dispatcher()), |
+ name.Get(dispatcher()), |
+ exception.OutParam(dispatcher())); |
+} |
+ |
+void PPB_Var_Deprecated_Proxy::OnMsgHasMethodDeprecated( |
+ SerializedVarReceiveInput var, |
+ SerializedVarReceiveInput name, |
+ SerializedVarOutParam exception, |
+ bool* result) { |
+ *result = ppb_var_target()->HasMethod(var.Get(dispatcher()), |
+ name.Get(dispatcher()), |
+ exception.OutParam(dispatcher())); |
+} |
+ |
+void PPB_Var_Deprecated_Proxy::OnMsgGetProperty( |
+ SerializedVarReceiveInput var, |
+ SerializedVarReceiveInput name, |
+ SerializedVarOutParam exception, |
+ SerializedVarReturnValue result) { |
+ result.Return(dispatcher(), ppb_var_target()->GetProperty( |
+ var.Get(dispatcher()), name.Get(dispatcher()), |
+ exception.OutParam(dispatcher()))); |
+} |
+ |
+void PPB_Var_Deprecated_Proxy::OnMsgEnumerateProperties( |
+ SerializedVarReceiveInput var, |
+ SerializedVarVectorOutParam props, |
+ SerializedVarOutParam exception) { |
+ ppb_var_target()->GetAllPropertyNames(var.Get(dispatcher()), |
+ props.CountOutParam(), props.ArrayOutParam(dispatcher()), |
+ exception.OutParam(dispatcher())); |
+} |
+ |
+void PPB_Var_Deprecated_Proxy::OnMsgSetPropertyDeprecated( |
+ SerializedVarReceiveInput var, |
+ SerializedVarReceiveInput name, |
+ SerializedVarReceiveInput value, |
+ SerializedVarOutParam exception) { |
+ ppb_var_target()->SetProperty(var.Get(dispatcher()), |
+ name.Get(dispatcher()), |
+ value.Get(dispatcher()), |
+ exception.OutParam(dispatcher())); |
+} |
+ |
+void PPB_Var_Deprecated_Proxy::OnMsgDeleteProperty( |
+ SerializedVarReceiveInput var, |
+ SerializedVarReceiveInput name, |
+ SerializedVarOutParam exception, |
+ bool* result) { |
+ ppb_var_target()->RemoveProperty(var.Get(dispatcher()), |
+ name.Get(dispatcher()), |
+ exception.OutParam(dispatcher())); |
+ // This deprecated function doesn't actually return a value, but we re-use |
+ // the message from the non-deprecated interface with the return value. |
+ *result = true; |
+} |
+ |
+void PPB_Var_Deprecated_Proxy::OnMsgCallDeprecated( |
+ SerializedVarReceiveInput object, |
+ SerializedVarReceiveInput method_name, |
+ SerializedVarVectorReceiveInput arg_vector, |
+ SerializedVarOutParam exception, |
+ SerializedVarReturnValue result) { |
+ uint32_t arg_count = 0; |
+ PP_Var* args = arg_vector.Get(dispatcher(), &arg_count); |
+ result.Return(dispatcher(), ppb_var_target()->Call( |
+ object.Get(dispatcher()), |
+ method_name.Get(dispatcher()), |
+ arg_count, args, |
+ exception.OutParam(dispatcher()))); |
+} |
+ |
+void PPB_Var_Deprecated_Proxy::OnMsgConstruct( |
+ SerializedVarReceiveInput var, |
+ SerializedVarVectorReceiveInput arg_vector, |
+ SerializedVarOutParam exception, |
+ SerializedVarReturnValue result) { |
+ uint32_t arg_count = 0; |
+ PP_Var* args = arg_vector.Get(dispatcher(), &arg_count); |
+ result.Return(dispatcher(), ppb_var_target()->Construct( |
+ var.Get(dispatcher()), arg_count, args, |
+ exception.OutParam(dispatcher()))); |
+} |
+ |
+void PPB_Var_Deprecated_Proxy::OnMsgIsInstanceOfDeprecated( |
+ pp::proxy::SerializedVarReceiveInput var, |
+ int64 ppp_class, |
+ int64* ppp_class_data, |
+ bool* result) { |
+ // TODO(brettw) write this. |
+} |
+ |
+void PPB_Var_Deprecated_Proxy::OnMsgCreateObjectDeprecated( |
+ PP_Module module_id, |
+ int64 ppp_class, |
+ int64 class_data, |
+ SerializedVarReturnValue result) { |
+ result.Return(dispatcher(), PPP_Class_Proxy::CreateProxiedObject( |
+ ppb_var_target(), dispatcher(), module_id, ppp_class, class_data)); |
+} |
+ |
+} // namespace proxy |
+} // namespace pp |
Property changes on: ppapi/proxy/ppb_var_deprecated_proxy.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |