Chromium Code Reviews| Index: ppapi/proxy/host_var_serialization_rules.cc |
| diff --git a/ppapi/proxy/host_var_serialization_rules.cc b/ppapi/proxy/host_var_serialization_rules.cc |
| index ae6b7f7c4845bd9a2e7a0b1874da038873ffba50..14615263aa4da97ed813d63fbcb3e37a2ef4b890 100644 |
| --- a/ppapi/proxy/host_var_serialization_rules.cc |
| +++ b/ppapi/proxy/host_var_serialization_rules.cc |
| @@ -6,15 +6,19 @@ |
| #include "base/logging.h" |
| #include "ppapi/c/ppb_var.h" |
| +#include "ppapi/shared_impl/ppapi_globals.h" |
| +#include "ppapi/shared_impl/var.h" |
| +#include "ppapi/shared_impl/var_tracker.h" |
| + |
| +using ppapi::PpapiGlobals; |
| +using ppapi::StringVar; |
| +using ppapi::VarTracker; |
| namespace ppapi { |
| namespace proxy { |
| -HostVarSerializationRules::HostVarSerializationRules( |
| - const PPB_Var* var_interface, |
| - PP_Module pp_module) |
| - : var_interface_(var_interface), |
| - pp_module_(pp_module) { |
| +HostVarSerializationRules::HostVarSerializationRules(PP_Module pp_module) |
| + : pp_module_(pp_module) { |
| } |
| HostVarSerializationRules::~HostVarSerializationRules() { |
| @@ -32,9 +36,7 @@ PP_Var HostVarSerializationRules::BeginReceiveCallerOwned( |
| const std::string* str_val, |
| Dispatcher* /* dispatcher */) { |
| if (var.type == PP_VARTYPE_STRING) { |
|
brettw
2012/01/05 23:41:20
Can you remove the {} here for consistency?
dmichael (off chromium)
2012/01/06 18:18:45
Done.
|
| - // Convert the string to the context of the current process. |
| - return var_interface_->VarFromUtf8(str_val->c_str(), |
| - static_cast<uint32_t>(str_val->size())); |
| + return StringVar::StringToPPVar(*str_val); |
| } |
| return var; |
| } |
| @@ -42,7 +44,7 @@ PP_Var HostVarSerializationRules::BeginReceiveCallerOwned( |
| void HostVarSerializationRules::EndReceiveCallerOwned(const PP_Var& var) { |
| if (var.type == PP_VARTYPE_STRING) { |
| // Destroy the string BeginReceiveCallerOwned created above. |
| - var_interface_->Release(var); |
| + PpapiGlobals::Get()->GetVarTracker()->ReleaseVar(var); |
| } |
| } |
| @@ -51,13 +53,12 @@ PP_Var HostVarSerializationRules::ReceivePassRef(const PP_Var& var, |
| Dispatcher* /* dispatcher */) { |
| if (var.type == PP_VARTYPE_STRING) { |
| // Convert the string to the context of the current process. |
| - return var_interface_->VarFromUtf8(str_val.c_str(), |
| - static_cast<uint32_t>(str_val.size())); |
| + return StringVar::StringToPPVar(str_val); |
| } |
| // See PluginVarSerialization::BeginSendPassRef for an example. |
| if (var.type == PP_VARTYPE_OBJECT) |
| - var_interface_->AddRef(var); |
| + PpapiGlobals::Get()->GetVarTracker()->AddRefVar(var); |
| return var; |
| } |
| @@ -83,13 +84,13 @@ void HostVarSerializationRules::VarToString(const PP_Var& var, |
| // This could be optimized to avoid an extra string copy by going to a lower |
| // level of the browser's implementation of strings where we already have |
| // a std::string. |
| - uint32_t len = 0; |
| - const char* data = var_interface_->VarToUtf8(var, &len); |
| - str->assign(data, len); |
| + StringVar* string_var = StringVar::FromPPVar(var); |
| + if (string_var) |
| + *str = string_var->value(); |
| } |
| void HostVarSerializationRules::ReleaseObjectRef(const PP_Var& var) { |
| - var_interface_->Release(var); |
| + PpapiGlobals::Get()->GetVarTracker()->ReleaseVar(var); |
| } |
| } // namespace proxy |