summaryrefslogtreecommitdiffstats
path: root/ppapi/proxy/host_var_serialization_rules.h
diff options
context:
space:
mode:
Diffstat (limited to 'ppapi/proxy/host_var_serialization_rules.h')
-rw-r--r--ppapi/proxy/host_var_serialization_rules.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/ppapi/proxy/host_var_serialization_rules.h b/ppapi/proxy/host_var_serialization_rules.h
new file mode 100644
index 0000000..92e294f
--- /dev/null
+++ b/ppapi/proxy/host_var_serialization_rules.h
@@ -0,0 +1,51 @@
+// 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.
+
+#ifndef PPAPI_PROXY_HOST_VAR_SERIALIZATION_RULES_H_
+#define PPAPI_PROXY_HOST_VAR_SERIALIZATION_RULES_H_
+
+#include "base/basictypes.h"
+#include "ppapi/c/pp_module.h"
+#include "ppapi/proxy/var_serialization_rules.h"
+
+struct PPB_Var_Deprecated;
+
+namespace pp {
+namespace proxy {
+
+class VarTracker;
+
+// Implementation of the VarSerializationRules interface for the host side.
+class HostVarSerializationRules : public VarSerializationRules {
+ public:
+ HostVarSerializationRules(const PPB_Var_Deprecated* var_interface,
+ PP_Module pp_module);
+ ~HostVarSerializationRules();
+
+ // VarSerialization implementation.
+ virtual void SendCallerOwned(const PP_Var& var, std::string* str_val);
+ virtual PP_Var BeginReceiveCallerOwned(const PP_Var& var,
+ const std::string* str_val);
+ virtual void EndReceiveCallerOwned(const PP_Var& var);
+ virtual PP_Var ReceivePassRef(const PP_Var& var,
+ const std::string& str_val);
+ virtual void BeginSendPassRef(const PP_Var& var, std::string* str_val);
+ virtual void EndSendPassRef(const PP_Var& var);
+ virtual void ReleaseObjectRef(const PP_Var& var);
+
+ private:
+ // Converts the given var (which must be a VARTYPE_STRING) to the given
+ // string object.
+ void VarToString(const PP_Var& var, std::string* str);
+
+ const PPB_Var_Deprecated* var_interface_;
+ PP_Module pp_module_;
+
+ DISALLOW_COPY_AND_ASSIGN(HostVarSerializationRules);
+};
+
+} // namespace proxy
+} // namespace pp
+
+#endif // PPAPI_PROXY_HOST_VAR_SERIALIZATION_RULES_H_