Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(321)

Side by Side Diff: ppapi/proxy/raw_var_data.h

Issue 1149113006: Move Pickle to base namespace. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ppapi/proxy/ppapi_param_traits.h ('k') | ppapi/proxy/resource_message_params.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef PPAPI_PROXY_RAW_VAR_DATA_H_ 5 #ifndef PPAPI_PROXY_RAW_VAR_DATA_H_
6 #define PPAPI_PROXY_RAW_VAR_DATA_H_ 6 #define PPAPI_PROXY_RAW_VAR_DATA_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/callback.h" 10 #include "base/callback.h"
11 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
12 #include "base/memory/scoped_vector.h" 12 #include "base/memory/scoped_vector.h"
13 #include "ppapi/c/pp_instance.h" 13 #include "ppapi/c/pp_instance.h"
14 #include "ppapi/c/pp_var.h" 14 #include "ppapi/c/pp_var.h"
15 #include "ppapi/proxy/ppapi_param_traits.h" 15 #include "ppapi/proxy/ppapi_param_traits.h"
16 #include "ppapi/proxy/ppapi_proxy_export.h" 16 #include "ppapi/proxy/ppapi_proxy_export.h"
17 #include "ppapi/proxy/serialized_handle.h" 17 #include "ppapi/proxy/serialized_handle.h"
18 18
19 namespace base {
20 class Pickle;
19 class PickleIterator; 21 class PickleIterator;
22 }
20 23
21 namespace IPC { 24 namespace IPC {
22 class Message; 25 class Message;
23 } 26 }
24 27
25 namespace ppapi { 28 namespace ppapi {
26 namespace proxy { 29 namespace proxy {
27 30
28 class RawVarData; 31 class RawVarData;
29 32
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 // the returned PP_Var are also constructed. Each PP_Var created has a 64 // the returned PP_Var are also constructed. Each PP_Var created has a
62 // ref-count equal to the number of references it has in the graph of vars. 65 // ref-count equal to the number of references it has in the graph of vars.
63 // The returned var (the "root") has one additional reference. 66 // The returned var (the "root") has one additional reference.
64 PP_Var CreatePPVar(PP_Instance instance); 67 PP_Var CreatePPVar(PP_Instance instance);
65 68
66 // Write the graph to a message using the given HandleWriter. 69 // Write the graph to a message using the given HandleWriter.
67 void Write(IPC::Message* m, const HandleWriter& handle_writer); 70 void Write(IPC::Message* m, const HandleWriter& handle_writer);
68 71
69 // Create a RawVarDataGraph from the given message. 72 // Create a RawVarDataGraph from the given message.
70 static scoped_ptr<RawVarDataGraph> Read(const IPC::Message* m, 73 static scoped_ptr<RawVarDataGraph> Read(const IPC::Message* m,
71 PickleIterator* iter); 74 base::PickleIterator* iter);
72 75
73 // Returns a vector of SerializedHandles associated with this RawVarDataGraph. 76 // Returns a vector of SerializedHandles associated with this RawVarDataGraph.
74 // Ownership of the pointers remains with the elements of the RawVarDataGraph. 77 // Ownership of the pointers remains with the elements of the RawVarDataGraph.
75 std::vector<SerializedHandle*> GetHandles(); 78 std::vector<SerializedHandle*> GetHandles();
76 79
77 // Sets the threshold size at which point we switch from transmitting 80 // Sets the threshold size at which point we switch from transmitting
78 // array buffers in IPC messages to using shared memory. This is only used 81 // array buffers in IPC messages to using shared memory. This is only used
79 // for testing purposes where we need to transmit small buffers using shmem 82 // for testing purposes where we need to transmit small buffers using shmem
80 // (in order to have fast tests). 83 // (in order to have fast tests).
81 static void SetMinimumArrayBufferSizeForShmemForTest(uint32 threshold); 84 static void SetMinimumArrayBufferSizeForShmemForTest(uint32 threshold);
(...skipping 24 matching lines...) Expand all
106 // along with the graph it is a part of to be initialized. 109 // along with the graph it is a part of to be initialized.
107 virtual void PopulatePPVar(const PP_Var& var, 110 virtual void PopulatePPVar(const PP_Var& var,
108 const std::vector<PP_Var>& graph) = 0; 111 const std::vector<PP_Var>& graph) = 0;
109 112
110 // Writes the RawVarData to a message. 113 // Writes the RawVarData to a message.
111 virtual void Write(IPC::Message* m, 114 virtual void Write(IPC::Message* m,
112 const HandleWriter& handle_writer) = 0; 115 const HandleWriter& handle_writer) = 0;
113 // Reads the RawVarData from a message. Returns true on success. 116 // Reads the RawVarData from a message. Returns true on success.
114 virtual bool Read(PP_VarType type, 117 virtual bool Read(PP_VarType type,
115 const IPC::Message* m, 118 const IPC::Message* m,
116 PickleIterator* iter) = 0; 119 base::PickleIterator* iter) = 0;
117 120
118 // Returns a SerializedHandle associated with this RawVarData or NULL if none 121 // Returns a SerializedHandle associated with this RawVarData or NULL if none
119 // exists. Ownership of the pointer remains with the RawVarData. 122 // exists. Ownership of the pointer remains with the RawVarData.
120 virtual SerializedHandle* GetHandle(); 123 virtual SerializedHandle* GetHandle();
121 124
122 bool initialized() { return initialized_; } 125 bool initialized() { return initialized_; }
123 126
124 protected: 127 protected:
125 bool initialized_; 128 bool initialized_;
126 }; 129 };
127 130
128 // A RawVarData class for PP_Vars which are value types. 131 // A RawVarData class for PP_Vars which are value types.
129 class BasicRawVarData : public RawVarData { 132 class BasicRawVarData : public RawVarData {
130 public: 133 public:
131 BasicRawVarData(); 134 BasicRawVarData();
132 ~BasicRawVarData() override; 135 ~BasicRawVarData() override;
133 136
134 // RawVarData implementation. 137 // RawVarData implementation.
135 PP_VarType Type() override; 138 PP_VarType Type() override;
136 bool Init(const PP_Var& var, PP_Instance instance) override; 139 bool Init(const PP_Var& var, PP_Instance instance) override;
137 PP_Var CreatePPVar(PP_Instance instance) override; 140 PP_Var CreatePPVar(PP_Instance instance) override;
138 void PopulatePPVar(const PP_Var& var, 141 void PopulatePPVar(const PP_Var& var,
139 const std::vector<PP_Var>& graph) override; 142 const std::vector<PP_Var>& graph) override;
140 void Write(IPC::Message* m, const HandleWriter& handle_writer) override; 143 void Write(IPC::Message* m, const HandleWriter& handle_writer) override;
141 bool Read(PP_VarType type, 144 bool Read(PP_VarType type,
142 const IPC::Message* m, 145 const IPC::Message* m,
143 PickleIterator* iter) override; 146 base::PickleIterator* iter) override;
144 147
145 private: 148 private:
146 PP_Var var_; 149 PP_Var var_;
147 }; 150 };
148 151
149 // A RawVarData class for string PP_Vars. 152 // A RawVarData class for string PP_Vars.
150 class StringRawVarData : public RawVarData { 153 class StringRawVarData : public RawVarData {
151 public: 154 public:
152 StringRawVarData(); 155 StringRawVarData();
153 ~StringRawVarData() override; 156 ~StringRawVarData() override;
154 157
155 // RawVarData implementation. 158 // RawVarData implementation.
156 PP_VarType Type() override; 159 PP_VarType Type() override;
157 bool Init(const PP_Var& var, PP_Instance instance) override; 160 bool Init(const PP_Var& var, PP_Instance instance) override;
158 PP_Var CreatePPVar(PP_Instance instance) override; 161 PP_Var CreatePPVar(PP_Instance instance) override;
159 void PopulatePPVar(const PP_Var& var, 162 void PopulatePPVar(const PP_Var& var,
160 const std::vector<PP_Var>& graph) override; 163 const std::vector<PP_Var>& graph) override;
161 void Write(IPC::Message* m, const HandleWriter& handle_writer) override; 164 void Write(IPC::Message* m, const HandleWriter& handle_writer) override;
162 bool Read(PP_VarType type, 165 bool Read(PP_VarType type,
163 const IPC::Message* m, 166 const IPC::Message* m,
164 PickleIterator* iter) override; 167 base::PickleIterator* iter) override;
165 168
166 private: 169 private:
167 // The data in the string. 170 // The data in the string.
168 std::string data_; 171 std::string data_;
169 }; 172 };
170 173
171 // A RawVarData class for array buffer PP_Vars. 174 // A RawVarData class for array buffer PP_Vars.
172 class ArrayBufferRawVarData : public RawVarData { 175 class ArrayBufferRawVarData : public RawVarData {
173 public: 176 public:
174 // Enum for array buffer message types. 177 // Enum for array buffer message types.
175 enum ShmemType { 178 enum ShmemType {
176 ARRAY_BUFFER_NO_SHMEM, 179 ARRAY_BUFFER_NO_SHMEM,
177 ARRAY_BUFFER_SHMEM_HOST, 180 ARRAY_BUFFER_SHMEM_HOST,
178 ARRAY_BUFFER_SHMEM_PLUGIN, 181 ARRAY_BUFFER_SHMEM_PLUGIN,
179 }; 182 };
180 183
181 ArrayBufferRawVarData(); 184 ArrayBufferRawVarData();
182 ~ArrayBufferRawVarData() override; 185 ~ArrayBufferRawVarData() override;
183 186
184 // RawVarData implementation. 187 // RawVarData implementation.
185 PP_VarType Type() override; 188 PP_VarType Type() override;
186 bool Init(const PP_Var& var, PP_Instance instance) override; 189 bool Init(const PP_Var& var, PP_Instance instance) override;
187 PP_Var CreatePPVar(PP_Instance instance) override; 190 PP_Var CreatePPVar(PP_Instance instance) override;
188 void PopulatePPVar(const PP_Var& var, 191 void PopulatePPVar(const PP_Var& var,
189 const std::vector<PP_Var>& graph) override; 192 const std::vector<PP_Var>& graph) override;
190 void Write(IPC::Message* m, const HandleWriter& handle_writer) override; 193 void Write(IPC::Message* m, const HandleWriter& handle_writer) override;
191 bool Read(PP_VarType type, 194 bool Read(PP_VarType type,
192 const IPC::Message* m, 195 const IPC::Message* m,
193 PickleIterator* iter) override; 196 base::PickleIterator* iter) override;
194 SerializedHandle* GetHandle() override; 197 SerializedHandle* GetHandle() override;
195 198
196 private: 199 private:
197 // The type of the storage underlying the array buffer. 200 // The type of the storage underlying the array buffer.
198 ShmemType type_; 201 ShmemType type_;
199 // The data in the buffer. Valid for |type_| == ARRAY_BUFFER_NO_SHMEM. 202 // The data in the buffer. Valid for |type_| == ARRAY_BUFFER_NO_SHMEM.
200 std::string data_; 203 std::string data_;
201 // Host shmem handle. Valid for |type_| == ARRAY_BUFFER_SHMEM_HOST. 204 // Host shmem handle. Valid for |type_| == ARRAY_BUFFER_SHMEM_HOST.
202 int host_shm_handle_id_; 205 int host_shm_handle_id_;
203 // Plugin shmem handle. Valid for |type_| == ARRAY_BUFFER_SHMEM_PLUGIN. 206 // Plugin shmem handle. Valid for |type_| == ARRAY_BUFFER_SHMEM_PLUGIN.
(...skipping 10 matching lines...) Expand all
214 217
215 // RawVarData implementation. 218 // RawVarData implementation.
216 PP_VarType Type() override; 219 PP_VarType Type() override;
217 bool Init(const PP_Var& var, PP_Instance instance) override; 220 bool Init(const PP_Var& var, PP_Instance instance) override;
218 PP_Var CreatePPVar(PP_Instance instance) override; 221 PP_Var CreatePPVar(PP_Instance instance) override;
219 void PopulatePPVar(const PP_Var& var, 222 void PopulatePPVar(const PP_Var& var,
220 const std::vector<PP_Var>& graph) override; 223 const std::vector<PP_Var>& graph) override;
221 void Write(IPC::Message* m, const HandleWriter& handle_writer) override; 224 void Write(IPC::Message* m, const HandleWriter& handle_writer) override;
222 bool Read(PP_VarType type, 225 bool Read(PP_VarType type,
223 const IPC::Message* m, 226 const IPC::Message* m,
224 PickleIterator* iter) override; 227 base::PickleIterator* iter) override;
225 228
226 private: 229 private:
227 std::vector<size_t> children_; 230 std::vector<size_t> children_;
228 }; 231 };
229 232
230 // A RawVarData class for dictionary PP_Vars. 233 // A RawVarData class for dictionary PP_Vars.
231 class DictionaryRawVarData : public RawVarData { 234 class DictionaryRawVarData : public RawVarData {
232 public: 235 public:
233 DictionaryRawVarData(); 236 DictionaryRawVarData();
234 ~DictionaryRawVarData() override; 237 ~DictionaryRawVarData() override;
235 238
236 void AddChild(const std::string& key, size_t value); 239 void AddChild(const std::string& key, size_t value);
237 240
238 // RawVarData implementation. 241 // RawVarData implementation.
239 PP_VarType Type() override; 242 PP_VarType Type() override;
240 bool Init(const PP_Var& var, PP_Instance instance) override; 243 bool Init(const PP_Var& var, PP_Instance instance) override;
241 PP_Var CreatePPVar(PP_Instance instance) override; 244 PP_Var CreatePPVar(PP_Instance instance) override;
242 void PopulatePPVar(const PP_Var& var, 245 void PopulatePPVar(const PP_Var& var,
243 const std::vector<PP_Var>& graph) override; 246 const std::vector<PP_Var>& graph) override;
244 void Write(IPC::Message* m, const HandleWriter& handle_writer) override; 247 void Write(IPC::Message* m, const HandleWriter& handle_writer) override;
245 bool Read(PP_VarType type, 248 bool Read(PP_VarType type,
246 const IPC::Message* m, 249 const IPC::Message* m,
247 PickleIterator* iter) override; 250 base::PickleIterator* iter) override;
248 251
249 private: 252 private:
250 std::vector<std::pair<std::string, size_t> > children_; 253 std::vector<std::pair<std::string, size_t> > children_;
251 }; 254 };
252 255
253 // A RawVarData class for resource PP_Vars. 256 // A RawVarData class for resource PP_Vars.
254 // This class does not hold a reference on the PP_Resource that is being 257 // This class does not hold a reference on the PP_Resource that is being
255 // serialized. If sending a resource from the plugin to the host, the plugin 258 // serialized. If sending a resource from the plugin to the host, the plugin
256 // should not release the ResourceVar before sending the serialized message to 259 // should not release the ResourceVar before sending the serialized message to
257 // the host, and the host should immediately consume the ResourceVar before 260 // the host, and the host should immediately consume the ResourceVar before
258 // processing further messages. 261 // processing further messages.
259 class ResourceRawVarData : public RawVarData { 262 class ResourceRawVarData : public RawVarData {
260 public: 263 public:
261 ResourceRawVarData(); 264 ResourceRawVarData();
262 ~ResourceRawVarData() override; 265 ~ResourceRawVarData() override;
263 266
264 // RawVarData implementation. 267 // RawVarData implementation.
265 PP_VarType Type() override; 268 PP_VarType Type() override;
266 bool Init(const PP_Var& var, PP_Instance instance) override; 269 bool Init(const PP_Var& var, PP_Instance instance) override;
267 PP_Var CreatePPVar(PP_Instance instance) override; 270 PP_Var CreatePPVar(PP_Instance instance) override;
268 void PopulatePPVar(const PP_Var& var, 271 void PopulatePPVar(const PP_Var& var,
269 const std::vector<PP_Var>& graph) override; 272 const std::vector<PP_Var>& graph) override;
270 void Write(IPC::Message* m, const HandleWriter& handle_writer) override; 273 void Write(IPC::Message* m, const HandleWriter& handle_writer) override;
271 bool Read(PP_VarType type, 274 bool Read(PP_VarType type,
272 const IPC::Message* m, 275 const IPC::Message* m,
273 PickleIterator* iter) override; 276 base::PickleIterator* iter) override;
274 277
275 private: 278 private:
276 // Resource ID in the plugin. If one has not yet been created, this is 0. 279 // Resource ID in the plugin. If one has not yet been created, this is 0.
277 // This is a borrowed reference; the resource's refcount is not incremented. 280 // This is a borrowed reference; the resource's refcount is not incremented.
278 PP_Resource pp_resource_; 281 PP_Resource pp_resource_;
279 282
280 // Pending resource host ID in the renderer. 283 // Pending resource host ID in the renderer.
281 int pending_renderer_host_id_; 284 int pending_renderer_host_id_;
282 285
283 // Pending resource host ID in the browser. 286 // Pending resource host ID in the browser.
284 int pending_browser_host_id_; 287 int pending_browser_host_id_;
285 288
286 // A message containing information about how to create a plugin-side 289 // A message containing information about how to create a plugin-side
287 // resource. The message type will vary based on the resource type, and will 290 // resource. The message type will vary based on the resource type, and will
288 // usually contain a pending resource host ID, and other required information. 291 // usually contain a pending resource host ID, and other required information.
289 // If the resource was created directly, this is NULL. 292 // If the resource was created directly, this is NULL.
290 scoped_ptr<IPC::Message> creation_message_; 293 scoped_ptr<IPC::Message> creation_message_;
291 }; 294 };
292 295
293 } // namespace proxy 296 } // namespace proxy
294 } // namespace ppapi 297 } // namespace ppapi
295 298
296 #endif // PPAPI_PROXY_RAW_VAR_DATA_H_ 299 #endif // PPAPI_PROXY_RAW_VAR_DATA_H_
OLDNEW
« no previous file with comments | « ppapi/proxy/ppapi_param_traits.h ('k') | ppapi/proxy/resource_message_params.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698