Index: ppapi/proxy/plugin_var_serialization_rules.cc |
=================================================================== |
--- ppapi/proxy/plugin_var_serialization_rules.cc (revision 96002) |
+++ ppapi/proxy/plugin_var_serialization_rules.cc (working copy) |
@@ -6,13 +6,17 @@ |
#include "base/logging.h" |
#include "ppapi/proxy/plugin_dispatcher.h" |
+#include "ppapi/proxy/plugin_resource_tracker.h" |
#include "ppapi/proxy/plugin_var_tracker.h" |
+#include "ppapi/shared_impl/var.h" |
+using ppapi::StringVar; |
+ |
namespace pp { |
namespace proxy { |
PluginVarSerializationRules::PluginVarSerializationRules() |
- : var_tracker_(PluginVarTracker::GetInstance()) { |
+ : var_tracker_(&PluginResourceTracker::GetInstance()->var_tracker()) { |
} |
PluginVarSerializationRules::~PluginVarSerializationRules() { |
@@ -26,9 +30,9 @@ |
// Retrieve the string to use for IPC. |
if (var.type == PP_VARTYPE_STRING) { |
- const std::string* var_string = var_tracker_->GetExistingString(var); |
- if (var_string) |
- *str_val = *var_string; |
+ scoped_refptr<StringVar> string_var(StringVar::FromPPVar(var)); |
+ if (string_var.get()) |
+ *str_val = string_var->value(); |
else |
NOTREACHED() << "Trying to send unknown string over IPC."; |
} |
@@ -39,13 +43,8 @@ |
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. |
- PP_Var ret; |
- ret.type = PP_VARTYPE_STRING; |
- ret.value.as_id = var_tracker_->MakeString(*str_val); |
- return ret; |
- } |
+ if (var.type == PP_VARTYPE_STRING) |
+ return StringVar::StringToPPVar(0, *str_val); |
if (var.type == PP_VARTYPE_OBJECT) { |
DCHECK(dispatcher->IsPlugin()); |
@@ -59,7 +58,7 @@ |
void PluginVarSerializationRules::EndReceiveCallerOwned(const PP_Var& var) { |
if (var.type == PP_VARTYPE_STRING) { |
// Destroy the string BeginReceiveCallerOwned created above. |
- var_tracker_->Release(var); |
+ var_tracker_->ReleaseVar(var); |
} else if (var.type == PP_VARTYPE_OBJECT) { |
var_tracker_->StopTrackingObjectWithNoReference(var); |
} |
@@ -68,13 +67,8 @@ |
PP_Var PluginVarSerializationRules::ReceivePassRef(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. |
- PP_Var ret; |
- ret.type = PP_VARTYPE_STRING; |
- ret.value.as_id = var_tracker_->MakeString(str_val); |
- return ret; |
- } |
+ if (var.type == PP_VARTYPE_STRING) |
+ return StringVar::StringToPPVar(0, str_val); |
// Overview of sending an object with "pass ref" from the browser to the |
// plugin: |
@@ -124,9 +118,9 @@ |
return var_tracker_->GetHostObject(var); |
if (var.type == PP_VARTYPE_STRING) { |
- const std::string* var_string = var_tracker_->GetExistingString(var); |
- if (var_string) |
- *str_val = *var_string; |
+ scoped_refptr<StringVar> string_var(StringVar::FromPPVar(var)); |
+ if (string_var.get()) |
+ *str_val = string_var->value(); |
else |
NOTREACHED() << "Trying to send unknown string over IPC."; |
} |
@@ -146,7 +140,7 @@ |
} |
void PluginVarSerializationRules::ReleaseObjectRef(const PP_Var& var) { |
- var_tracker_->Release(var); |
+ var_tracker_->ReleaseVar(var); |
} |
} // namespace proxy |