• 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/compositor_layer_data.h"
18 #include "ppapi/shared_impl/file_path.h"
19 #include "ppapi/shared_impl/file_ref_create_info.h"
20 #include "ppapi/shared_impl/media_stream_video_track_shared.h"
21 #include "ppapi/shared_impl/ppapi_permissions.h"
22 #include "ppapi/shared_impl/socket_option_data.h"
23 
24 struct PP_NetAddress_Private;
25 
26 namespace ppapi {
27 
28 class HostResource;
29 class PPB_X509Certificate_Fields;
30 
31 namespace proxy {
32 
33 struct PPBFlash_DrawGlyphs_Params;
34 struct PPBURLLoader_UpdateProgress_Params;
35 struct SerializedDirEntry;
36 struct SerializedFontDescription;
37 struct SerializedTrueTypeFontDesc;
38 class SerializedFlashMenu;
39 class SerializedHandle;
40 class SerializedVar;
41 
42 }  // namespace proxy
43 }  // namespace ppapi
44 
45 namespace IPC {
46 
47 template<>
48 struct PPAPI_PROXY_EXPORT ParamTraits<PP_Bool> {
49   typedef PP_Bool param_type;
50   static void Write(Message* m, const param_type& p);
51   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
52   static void Log(const param_type& p, std::string* l);
53 };
54 
55 template <>
56 struct PPAPI_PROXY_EXPORT ParamTraits<PP_NetAddress_Private> {
57   typedef PP_NetAddress_Private param_type;
58   static void Write(Message* m, const param_type& p);
59   static bool Read(const Message* m, PickleIterator* iter, param_type* p);
60   static void Log(const param_type& p, std::string* l);
61 };
62 
63 template<>
64 struct PPAPI_PROXY_EXPORT ParamTraits<
65     ppapi::proxy::PPBFlash_DrawGlyphs_Params> {
66   typedef ppapi::proxy::PPBFlash_DrawGlyphs_Params param_type;
67   static void Write(Message* m, const param_type& p);
68   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
69   static void Log(const param_type& p, std::string* l);
70 };
71 
72 template<>
73 struct PPAPI_PROXY_EXPORT ParamTraits<
74     ppapi::proxy::PPBURLLoader_UpdateProgress_Params> {
75   typedef ppapi::proxy::PPBURLLoader_UpdateProgress_Params param_type;
76   static void Write(Message* m, const param_type& p);
77   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
78   static void Log(const param_type& p, std::string* l);
79 };
80 
81 template<>
82 struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::proxy::SerializedDirEntry> {
83   typedef ppapi::proxy::SerializedDirEntry param_type;
84   static void Write(Message* m, const param_type& p);
85   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
86   static void Log(const param_type& p, std::string* l);
87 };
88 
89 template<>
90 struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::proxy::SerializedFontDescription> {
91   typedef ppapi::proxy::SerializedFontDescription param_type;
92   static void Write(Message* m, const param_type& p);
93   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
94   static void Log(const param_type& p, std::string* l);
95 };
96 
97 template<>
98 struct PPAPI_PROXY_EXPORT
99     ParamTraits<ppapi::proxy::SerializedTrueTypeFontDesc> {
100   typedef ppapi::proxy::SerializedTrueTypeFontDesc param_type;
101   static void Write(Message* m, const param_type& p);
102   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
103   static void Log(const param_type& p, std::string* l);
104 };
105 
106 template<>
107 struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::proxy::SerializedHandle> {
108   typedef ppapi::proxy::SerializedHandle param_type;
109   static void Write(Message* m, const param_type& p);
110   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
111   static void Log(const param_type& p, std::string* l);
112 };
113 
114 template<>
115 struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::HostResource> {
116   typedef ppapi::HostResource param_type;
117   static void Write(Message* m, const param_type& p);
118   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
119   static void Log(const param_type& p, std::string* l);
120 };
121 
122 template<>
123 struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::proxy::SerializedVar> {
124   typedef ppapi::proxy::SerializedVar param_type;
125   static void Write(Message* m, const param_type& p);
126   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
127   static void Log(const param_type& p, std::string* l);
128 };
129 
130 template<>
131 struct PPAPI_PROXY_EXPORT ParamTraits<
132     std::vector<ppapi::proxy::SerializedVar> > {
133   typedef std::vector<ppapi::proxy::SerializedVar> param_type;
134   static void Write(Message* m, const param_type& p);
135   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
136   static void Log(const param_type& p, std::string* l);
137 };
138 
139 template<>
140 struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::PpapiPermissions> {
141   typedef ppapi::PpapiPermissions param_type;
142   static void Write(Message* m, const param_type& p);
143   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
144   static void Log(const param_type& p, std::string* l);
145 };
146 
147 #if !defined(OS_NACL) && !defined(NACL_WIN64)
148 template <>
149 struct ParamTraits<ppapi::PepperFilePath> {
150   typedef ppapi::PepperFilePath param_type;
151   static void Write(Message* m, const param_type& p);
152   static bool Read(const Message* m, PickleIterator* iter, param_type* p);
153   static void Log(const param_type& p, std::string* l);
154 };
155 
156 template<>
157 struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::proxy::SerializedFlashMenu> {
158   typedef ppapi::proxy::SerializedFlashMenu param_type;
159   static void Write(Message* m, const param_type& p);
160   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
161   static void Log(const param_type& p, std::string* l);
162 };
163 #endif  // !defined(OS_NACL) && !defined(NACL_WIN64)
164 
165 template<>
166 struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::PPB_X509Certificate_Fields> {
167   typedef ppapi::PPB_X509Certificate_Fields param_type;
168   static void Write(Message* m, const param_type& p);
169   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
170   static void Log(const param_type& p, std::string* l);
171 };
172 
173 template<>
174 struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::SocketOptionData> {
175   typedef ppapi::SocketOptionData param_type;
176   static void Write(Message* m, const param_type& p);
177   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
178   static void Log(const param_type& p, std::string* l);
179 };
180 
181 template<>
182 struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::CompositorLayerData::Transform> {
183   typedef ppapi::CompositorLayerData::Transform param_type;
184   static void Write(Message* m, const param_type& p);
185   static bool Read(const Message* m, PickleIterator* iter, param_type* r);
186   static void Log(const param_type& p, std::string* l);
187 };
188 
189 }  // namespace IPC
190 
191 #endif  // PPAPI_PROXY_PPAPI_PARAM_TRAITS_H_
192