• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef PPAPI_PROXY_PPAPI_PARAM_TRAITS_H_
6 #define PPAPI_PROXY_PPAPI_PARAM_TRAITS_H_
7 
8 #include <string>
9 #include <vector>
10 
11 #include "ipc/ipc_message_utils.h"
12 #include "ipc/ipc_platform_file.h"
13 #include "ppapi/c/pp_completion_callback.h"
14 #include "ppapi/c/pp_rect.h"
15 #include "ppapi/c/pp_var.h"
16 #include "ppapi/proxy/ppapi_proxy_export.h"
17 #include "ppapi/shared_impl/file_path.h"
18 #include "ppapi/shared_impl/file_ref_create_info.h"
19 #include "ppapi/shared_impl/ppapi_permissions.h"
20 #include "ppapi/shared_impl/socket_option_data.h"
21 
22 struct PP_NetAddress_Private;
23 
24 namespace ppapi {
25 
26 class HostResource;
27 class PPB_X509Certificate_Fields;
28 
29 namespace proxy {
30 
31 struct PPBFlash_DrawGlyphs_Params;
32 struct PPBURLLoader_UpdateProgress_Params;
33 struct SerializedDirEntry;
34 struct SerializedFontDescription;
35 struct SerializedTrueTypeFontDesc;
36 class SerializedFlashMenu;
37 class SerializedHandle;
38 class SerializedVar;
39 
40 }  // namespace proxy
41 }  // namespace ppapi
42 
43 namespace IPC {
44 
45 template<>
46 struct PPAPI_PROXY_EXPORT ParamTraits<PP_Bool> {
47   typedef PP_Bool param_type;
48   static void Write(Message* m, const param_type& p);
49   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
50   static void Log(const param_type& p, std::string* l);
51 };
52 
53 template <>
54 struct PPAPI_PROXY_EXPORT ParamTraits<PP_NetAddress_Private> {
55   typedef PP_NetAddress_Private param_type;
56   static void Write(Message* m, const param_type& p);
57   static bool Read(const Message* m, PickleIterator* iter, param_type* p);
58   static void Log(const param_type& p, std::string* l);
59 };
60 
61 template<>
62 struct PPAPI_PROXY_EXPORT ParamTraits<
63     ppapi::proxy::PPBFlash_DrawGlyphs_Params> {
64   typedef ppapi::proxy::PPBFlash_DrawGlyphs_Params param_type;
65   static void Write(Message* m, const param_type& p);
66   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
67   static void Log(const param_type& p, std::string* l);
68 };
69 
70 template<>
71 struct PPAPI_PROXY_EXPORT ParamTraits<
72     ppapi::proxy::PPBURLLoader_UpdateProgress_Params> {
73   typedef ppapi::proxy::PPBURLLoader_UpdateProgress_Params param_type;
74   static void Write(Message* m, const param_type& p);
75   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
76   static void Log(const param_type& p, std::string* l);
77 };
78 
79 template<>
80 struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::proxy::SerializedDirEntry> {
81   typedef ppapi::proxy::SerializedDirEntry param_type;
82   static void Write(Message* m, const param_type& p);
83   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
84   static void Log(const param_type& p, std::string* l);
85 };
86 
87 template<>
88 struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::proxy::SerializedFontDescription> {
89   typedef ppapi::proxy::SerializedFontDescription param_type;
90   static void Write(Message* m, const param_type& p);
91   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
92   static void Log(const param_type& p, std::string* l);
93 };
94 
95 template<>
96 struct PPAPI_PROXY_EXPORT
97     ParamTraits<ppapi::proxy::SerializedTrueTypeFontDesc> {
98   typedef ppapi::proxy::SerializedTrueTypeFontDesc param_type;
99   static void Write(Message* m, const param_type& p);
100   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
101   static void Log(const param_type& p, std::string* l);
102 };
103 
104 template<>
105 struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::proxy::SerializedHandle> {
106   typedef ppapi::proxy::SerializedHandle param_type;
107   static void Write(Message* m, const param_type& p);
108   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
109   static void Log(const param_type& p, std::string* l);
110 };
111 
112 template<>
113 struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::HostResource> {
114   typedef ppapi::HostResource param_type;
115   static void Write(Message* m, const param_type& p);
116   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
117   static void Log(const param_type& p, std::string* l);
118 };
119 
120 template<>
121 struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::proxy::SerializedVar> {
122   typedef ppapi::proxy::SerializedVar param_type;
123   static void Write(Message* m, const param_type& p);
124   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
125   static void Log(const param_type& p, std::string* l);
126 };
127 
128 template<>
129 struct PPAPI_PROXY_EXPORT ParamTraits<
130     std::vector<ppapi::proxy::SerializedVar> > {
131   typedef std::vector<ppapi::proxy::SerializedVar> param_type;
132   static void Write(Message* m, const param_type& p);
133   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
134   static void Log(const param_type& p, std::string* l);
135 };
136 
137 template<>
138 struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::PpapiPermissions> {
139   typedef ppapi::PpapiPermissions param_type;
140   static void Write(Message* m, const param_type& p);
141   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
142   static void Log(const param_type& p, std::string* l);
143 };
144 
145 #if !defined(OS_NACL) && !defined(NACL_WIN64)
146 template <>
147 struct ParamTraits<ppapi::PepperFilePath> {
148   typedef ppapi::PepperFilePath param_type;
149   static void Write(Message* m, const param_type& p);
150   static bool Read(const Message* m, PickleIterator* iter, param_type* p);
151   static void Log(const param_type& p, std::string* l);
152 };
153 
154 template<>
155 struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::proxy::SerializedFlashMenu> {
156   typedef ppapi::proxy::SerializedFlashMenu param_type;
157   static void Write(Message* m, const param_type& p);
158   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
159   static void Log(const param_type& p, std::string* l);
160 };
161 #endif  // !defined(OS_NACL) && !defined(NACL_WIN64)
162 
163 template<>
164 struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::PPB_X509Certificate_Fields> {
165   typedef ppapi::PPB_X509Certificate_Fields param_type;
166   static void Write(Message* m, const param_type& p);
167   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
168   static void Log(const param_type& p, std::string* l);
169 };
170 
171 template<>
172 struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::SocketOptionData> {
173   typedef ppapi::SocketOptionData param_type;
174   static void Write(Message* m, const param_type& p);
175   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
176   static void Log(const param_type& p, std::string* l);
177 };
178 
179 }  // namespace IPC
180 
181 #endif  // PPAPI_PROXY_PPAPI_PARAM_TRAITS_H_
182