diff options
Diffstat (limited to 'ppapi/proxy/host_var_serialization_rules.cc')
-rw-r--r-- | ppapi/proxy/host_var_serialization_rules.cc | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/ppapi/proxy/host_var_serialization_rules.cc b/ppapi/proxy/host_var_serialization_rules.cc index ae6b7f7..3f11090 100644 --- a/ppapi/proxy/host_var_serialization_rules.cc +++ b/ppapi/proxy/host_var_serialization_rules.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -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() { @@ -31,18 +35,15 @@ PP_Var HostVarSerializationRules::BeginReceiveCallerOwned( const PP_Var& var, const std::string* str_val, 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())); - } + if (var.type == PP_VARTYPE_STRING) + return StringVar::StringToPPVar(*str_val); return var; } 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 +52,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 +83,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 |