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

Side by Side Diff: content/public/common/common_param_traits.cc

Issue 39463002: Introduce Pickle::{Read,Write}PODArray to serialize arrays of POD (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « content/common/cc_messages.cc ('k') | no next file » | 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) 2012 The Chromium Authors. All rights reserved. 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 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 #include "content/public/common/common_param_traits.h" 5 #include "content/public/common/common_param_traits.h"
6 6
7 #include "content/public/common/content_constants.h" 7 #include "content/public/common/content_constants.h"
8 #include "content/public/common/page_state.h" 8 #include "content/public/common/page_state.h"
9 #include "content/public/common/referrer.h" 9 #include "content/public/common/referrer.h"
10 #include "net/base/host_port_pair.h" 10 #include "net/base/host_port_pair.h"
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 } 186 }
187 187
188 void ParamTraits<gfx::PointF>::Log(const gfx::PointF& v, std::string* l) { 188 void ParamTraits<gfx::PointF>::Log(const gfx::PointF& v, std::string* l) {
189 l->append(base::StringPrintf("(%f, %f)", v.x(), v.y())); 189 l->append(base::StringPrintf("(%f, %f)", v.x(), v.y()));
190 } 190 }
191 191
192 void ParamTraits<gfx::Size>::Write(Message* m, const gfx::Size& p) { 192 void ParamTraits<gfx::Size>::Write(Message* m, const gfx::Size& p) {
193 DCHECK_GE(p.width(), 0); 193 DCHECK_GE(p.width(), 0);
194 DCHECK_GE(p.height(), 0); 194 DCHECK_GE(p.height(), 0);
195 int values[2] = { p.width(), p.height() }; 195 int values[2] = { p.width(), p.height() };
196 m->WriteBytes(&values, sizeof(int) * 2); 196 m->WritePODArray<2>(values);
197 } 197 }
198 198
199 bool ParamTraits<gfx::Size>::Read(const Message* m, 199 bool ParamTraits<gfx::Size>::Read(const Message* m,
200 PickleIterator* iter, 200 PickleIterator* iter,
201 gfx::Size* r) { 201 gfx::Size* r) {
202 const char* char_values; 202 const int* values;
203 if (!m->ReadBytes(iter, &char_values, sizeof(int) * 2)) 203 if (!m->ReadPODArray<2>(iter, &values))
204 return false; 204 return false;
205 const int* values = reinterpret_cast<const int*>(char_values);
206 if (values[0] < 0 || values[1] < 0) 205 if (values[0] < 0 || values[1] < 0)
207 return false; 206 return false;
208 r->set_width(values[0]); 207 r->set_width(values[0]);
209 r->set_height(values[1]); 208 r->set_height(values[1]);
210 return true; 209 return true;
211 } 210 }
212 211
213 void ParamTraits<gfx::Size>::Log(const gfx::Size& p, std::string* l) { 212 void ParamTraits<gfx::Size>::Log(const gfx::Size& p, std::string* l) {
214 l->append(base::StringPrintf("(%d, %d)", p.width(), p.height())); 213 l->append(base::StringPrintf("(%d, %d)", p.width(), p.height()));
215 } 214 }
216 215
217 void ParamTraits<gfx::SizeF>::Write(Message* m, const gfx::SizeF& p) { 216 void ParamTraits<gfx::SizeF>::Write(Message* m, const gfx::SizeF& p) {
218 float values[2] = { p.width(), p.height() }; 217 float values[2] = { p.width(), p.height() };
219 m->WriteBytes(&values, sizeof(float) * 2); 218 m->WritePODArray<2>(values);
220 } 219 }
221 220
222 bool ParamTraits<gfx::SizeF>::Read(const Message* m, 221 bool ParamTraits<gfx::SizeF>::Read(const Message* m,
223 PickleIterator* iter, 222 PickleIterator* iter,
224 gfx::SizeF* r) { 223 gfx::SizeF* r) {
225 const char* char_values; 224 const float* values;
226 if (!m->ReadBytes(iter, &char_values, sizeof(float) * 2)) 225 if (!m->ReadPODArray<2>(iter, &values))
227 return false; 226 return false;
228 const float* values = reinterpret_cast<const float*>(char_values);
229 r->set_width(values[0]); 227 r->set_width(values[0]);
230 r->set_height(values[1]); 228 r->set_height(values[1]);
231 return true; 229 return true;
232 } 230 }
233 231
234 void ParamTraits<gfx::SizeF>::Log(const gfx::SizeF& p, std::string* l) { 232 void ParamTraits<gfx::SizeF>::Log(const gfx::SizeF& p, std::string* l) {
235 l->append(base::StringPrintf("(%f, %f)", p.width(), p.height())); 233 l->append(base::StringPrintf("(%f, %f)", p.width(), p.height()));
236 } 234 }
237 235
238 void ParamTraits<gfx::Vector2d>::Write(Message* m, const gfx::Vector2d& p) { 236 void ParamTraits<gfx::Vector2d>::Write(Message* m, const gfx::Vector2d& p) {
239 int values[2] = { p.x(), p.y() }; 237 int values[2] = { p.x(), p.y() };
240 m->WriteBytes(&values, sizeof(int) * 2); 238 m->WritePODArray<2>(values);
241 } 239 }
242 240
243 bool ParamTraits<gfx::Vector2d>::Read(const Message* m, 241 bool ParamTraits<gfx::Vector2d>::Read(const Message* m,
244 PickleIterator* iter, 242 PickleIterator* iter,
245 gfx::Vector2d* r) { 243 gfx::Vector2d* r) {
246 const char* char_values; 244 const int* values;
247 if (!m->ReadBytes(iter, &char_values, sizeof(int) * 2)) 245 if (!m->ReadPODArray<2>(iter, &values))
248 return false; 246 return false;
249 const int* values = reinterpret_cast<const int*>(char_values);
250 r->set_x(values[0]); 247 r->set_x(values[0]);
251 r->set_y(values[1]); 248 r->set_y(values[1]);
252 return true; 249 return true;
253 } 250 }
254 251
255 void ParamTraits<gfx::Vector2d>::Log(const gfx::Vector2d& v, std::string* l) { 252 void ParamTraits<gfx::Vector2d>::Log(const gfx::Vector2d& v, std::string* l) {
256 l->append(base::StringPrintf("(%d, %d)", v.x(), v.y())); 253 l->append(base::StringPrintf("(%d, %d)", v.x(), v.y()));
257 } 254 }
258 255
259 void ParamTraits<gfx::Vector2dF>::Write(Message* m, const gfx::Vector2dF& p) { 256 void ParamTraits<gfx::Vector2dF>::Write(Message* m, const gfx::Vector2dF& p) {
260 float values[2] = { p.x(), p.y() }; 257 float values[2] = { p.x(), p.y() };
261 m->WriteBytes(&values, sizeof(float) * 2); 258 m->WritePODArray<2>(values);
262 } 259 }
263 260
264 bool ParamTraits<gfx::Vector2dF>::Read(const Message* m, 261 bool ParamTraits<gfx::Vector2dF>::Read(const Message* m,
265 PickleIterator* iter, 262 PickleIterator* iter,
266 gfx::Vector2dF* r) { 263 gfx::Vector2dF* r) {
267 const char* char_values; 264 const float* values;
268 if (!m->ReadBytes(iter, &char_values, sizeof(float) * 2)) 265 if (!m->ReadPODArray<2>(iter, &values))
269 return false; 266 return false;
270 const float* values = reinterpret_cast<const float*>(char_values);
271 r->set_x(values[0]); 267 r->set_x(values[0]);
272 r->set_y(values[1]); 268 r->set_y(values[1]);
273 return true; 269 return true;
274 } 270 }
275 271
276 void ParamTraits<gfx::Vector2dF>::Log(const gfx::Vector2dF& v, std::string* l) { 272 void ParamTraits<gfx::Vector2dF>::Log(const gfx::Vector2dF& v, std::string* l) {
277 l->append(base::StringPrintf("(%f, %f)", v.x(), v.y())); 273 l->append(base::StringPrintf("(%f, %f)", v.x(), v.y()));
278 } 274 }
279 275
280 void ParamTraits<gfx::Rect>::Write(Message* m, const gfx::Rect& p) { 276 void ParamTraits<gfx::Rect>::Write(Message* m, const gfx::Rect& p) {
281 int values[4] = { p.x(), p.y(), p.width(), p.height() }; 277 int values[4] = { p.x(), p.y(), p.width(), p.height() };
282 m->WriteBytes(&values, sizeof(int) * 4); 278 m->WritePODArray<4>(values);
283 } 279 }
284 280
285 bool ParamTraits<gfx::Rect>::Read(const Message* m, 281 bool ParamTraits<gfx::Rect>::Read(const Message* m,
286 PickleIterator* iter, 282 PickleIterator* iter,
287 gfx::Rect* r) { 283 gfx::Rect* r) {
288 const char* char_values; 284 const int* values;
289 if (!m->ReadBytes(iter, &char_values, sizeof(int) * 4)) 285 if (!m->ReadPODArray<4>(iter, &values))
290 return false; 286 return false;
291 const int* values = reinterpret_cast<const int*>(char_values);
292 if (values[2] < 0 || values[3] < 0) 287 if (values[2] < 0 || values[3] < 0)
293 return false; 288 return false;
294 r->SetRect(values[0], values[1], values[2], values[3]); 289 r->SetRect(values[0], values[1], values[2], values[3]);
295 return true; 290 return true;
296 } 291 }
297 292
298 void ParamTraits<gfx::Rect>::Log(const gfx::Rect& p, std::string* l) { 293 void ParamTraits<gfx::Rect>::Log(const gfx::Rect& p, std::string* l) {
299 l->append(base::StringPrintf("(%d, %d, %d, %d)", p.x(), p.y(), 294 l->append(base::StringPrintf("(%d, %d, %d, %d)", p.x(), p.y(),
300 p.width(), p.height())); 295 p.width(), p.height()));
301 } 296 }
302 297
303 void ParamTraits<gfx::RectF>::Write(Message* m, const gfx::RectF& p) { 298 void ParamTraits<gfx::RectF>::Write(Message* m, const gfx::RectF& p) {
304 float values[4] = { p.x(), p.y(), p.width(), p.height() }; 299 float values[4] = { p.x(), p.y(), p.width(), p.height() };
305 m->WriteBytes(&values, sizeof(float) * 4); 300 m->WritePODArray<4>(values);
306 } 301 }
307 302
308 bool ParamTraits<gfx::RectF>::Read(const Message* m, 303 bool ParamTraits<gfx::RectF>::Read(const Message* m,
309 PickleIterator* iter, 304 PickleIterator* iter,
310 gfx::RectF* r) { 305 gfx::RectF* r) {
311 const char* char_values; 306 const float* values;
312 if (!m->ReadBytes(iter, &char_values, sizeof(float) * 4)) 307 if (!m->ReadPODArray<4>(iter, &values))
313 return false; 308 return false;
314 const float* values = reinterpret_cast<const float*>(char_values);
315 r->SetRect(values[0], values[1], values[2], values[3]); 309 r->SetRect(values[0], values[1], values[2], values[3]);
316 return true; 310 return true;
317 } 311 }
318 312
319 void ParamTraits<gfx::RectF>::Log(const gfx::RectF& p, std::string* l) { 313 void ParamTraits<gfx::RectF>::Log(const gfx::RectF& p, std::string* l) {
320 l->append(base::StringPrintf("(%f, %f, %f, %f)", p.x(), p.y(), 314 l->append(base::StringPrintf("(%f, %f, %f, %f)", p.x(), p.y(),
321 p.width(), p.height())); 315 p.width(), p.height()));
322 } 316 }
323 317
324 void ParamTraits<SkBitmap>::Write(Message* m, const SkBitmap& p) { 318 void ParamTraits<SkBitmap>::Write(Message* m, const SkBitmap& p) {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 #undef CONTENT_PUBLIC_COMMON_COMMON_PARAM_TRAITS_MACROS_H_ 371 #undef CONTENT_PUBLIC_COMMON_COMMON_PARAM_TRAITS_MACROS_H_
378 #include "content/public/common/common_param_traits_macros.h" 372 #include "content/public/common/common_param_traits_macros.h"
379 } // namespace IPC 373 } // namespace IPC
380 374
381 // Generate param traits log methods. 375 // Generate param traits log methods.
382 #include "ipc/param_traits_log_macros.h" 376 #include "ipc/param_traits_log_macros.h"
383 namespace IPC { 377 namespace IPC {
384 #undef CONTENT_PUBLIC_COMMON_COMMON_PARAM_TRAITS_MACROS_H_ 378 #undef CONTENT_PUBLIC_COMMON_COMMON_PARAM_TRAITS_MACROS_H_
385 #include "content/public/common/common_param_traits_macros.h" 379 #include "content/public/common/common_param_traits_macros.h"
386 } // namespace IPC 380 } // namespace IPC
OLDNEW
« no previous file with comments | « content/common/cc_messages.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698