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

Side by Side Diff: ppapi/native_client/src/shared/ppapi_proxy/object_serialize.cc

Issue 8826011: Remove PP_Module from parameters for PPB_Var.VarFromUtf8. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix indentation. Created 9 years 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 * Copyright (c) 2011 The Chromium Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be 3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file. 4 * found in the LICENSE file.
5 */ 5 */
6 6
7 #include "native_client/src/shared/ppapi_proxy/object_serialize.h" 7 #include "native_client/src/shared/ppapi_proxy/object_serialize.h"
8 8
9 #include <limits> 9 #include <limits>
10 #include <stdio.h> 10 #include <stdio.h>
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 } 317 }
318 return expected_element_size; 318 return expected_element_size;
319 } 319 }
320 320
321 321
322 // 322 //
323 // This should be invoked only if DeserializePpVarSize succeeds, i.e., 323 // This should be invoked only if DeserializePpVarSize succeeds, i.e.,
324 // there are enough bytes at p. 324 // there are enough bytes at p.
325 // 325 //
326 bool DeserializeString(char* p, 326 bool DeserializeString(char* p,
327 PP_Var* var, 327 PP_Var* var) {
328 NaClSrpcChannel* channel) {
329 SerializedString* ss = reinterpret_cast<SerializedString*>(p); 328 SerializedString* ss = reinterpret_cast<SerializedString*>(p);
330 uint32_t string_length = ss->fixed.u.string_length; 329 uint32_t string_length = ss->fixed.u.string_length;
331 // VarFromUtf8 creates a buffer of size string_length using the browser-side 330 // VarFromUtf8 creates a buffer of size string_length using the browser-side
332 // memory allocation function, and copies string_length bytes from 331 // memory allocation function, and copies string_length bytes from
333 // ss->string_bytes in to that buffer. The ref count of the returned var is 332 // ss->string_bytes in to that buffer. The ref count of the returned var is
334 // 1. 333 // 1.
335 *var = PPBVarInterface()->VarFromUtf8(LookupModuleIdForSrpcChannel(channel), 334 *var = PPBVarInterface()->VarFromUtf8(ss->string_bytes,
336 ss->string_bytes,
337 string_length); 335 string_length);
338 return true; 336 return true;
339 } 337 }
340 338
341 bool DeserializePpVar(NaClSrpcChannel* channel, 339 bool DeserializePpVar(char* bytes,
342 char* bytes,
343 uint32_t length, 340 uint32_t length,
344 PP_Var* vars, 341 PP_Var* vars,
345 uint32_t argc) { 342 uint32_t argc) {
346 char* p = bytes; 343 char* p = bytes;
347 344
348 for (uint32_t i = 0; i < argc; ++i) { 345 for (uint32_t i = 0; i < argc; ++i) {
349 PP_VarType element_type; 346 PP_VarType element_type;
350 uint32_t element_size = DeserializePpVarSize(p, length, &element_type); 347 uint32_t element_size = DeserializePpVarSize(p, length, &element_type);
351 if (std::numeric_limits<uint32_t>::max() == element_size) { 348 if (std::numeric_limits<uint32_t>::max() == element_size) {
352 return false; 349 return false;
(...skipping 10 matching lines...) Expand all
363 break; 360 break;
364 case PP_VARTYPE_INT32: 361 case PP_VARTYPE_INT32:
365 vars[i].value.as_int = s->u.int32_value; 362 vars[i].value.as_int = s->u.int32_value;
366 break; 363 break;
367 case PP_VARTYPE_DOUBLE: { 364 case PP_VARTYPE_DOUBLE: {
368 SerializedDouble* sd = reinterpret_cast<SerializedDouble*>(p); 365 SerializedDouble* sd = reinterpret_cast<SerializedDouble*>(p);
369 vars[i].value.as_double = sd->double_value; 366 vars[i].value.as_double = sd->double_value;
370 break; 367 break;
371 } 368 }
372 case PP_VARTYPE_STRING: 369 case PP_VARTYPE_STRING:
373 if (!DeserializeString(p, &vars[i], channel)) { 370 if (!DeserializeString(p, &vars[i])) {
374 return false; 371 return false;
375 } 372 }
376 break; 373 break;
377 case PP_VARTYPE_OBJECT: 374 case PP_VARTYPE_OBJECT:
378 case PP_VARTYPE_ARRAY: 375 case PP_VARTYPE_ARRAY:
379 case PP_VARTYPE_DICTIONARY: 376 case PP_VARTYPE_DICTIONARY:
380 NACL_NOTREACHED(); 377 NACL_NOTREACHED();
381 default: 378 default:
382 return false; 379 return false;
383 } 380 }
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 // Serialize the vars. 431 // Serialize the vars.
435 if (!SerializePpVar(vars, argc, bytes, tmp_length)) { 432 if (!SerializePpVar(vars, argc, bytes, tmp_length)) {
436 delete[] bytes; 433 delete[] bytes;
437 return NULL; 434 return NULL;
438 } 435 }
439 // Return success. 436 // Return success.
440 *length = tmp_length; 437 *length = tmp_length;
441 return bytes; 438 return bytes;
442 } 439 }
443 440
444 bool DeserializeTo(NaClSrpcChannel* channel, 441 bool DeserializeTo(char* bytes,
445 char* bytes,
446 uint32_t length, 442 uint32_t length,
447 uint32_t argc, 443 uint32_t argc,
448 PP_Var* vars) { 444 PP_Var* vars) {
449 // Deserializing a zero-length vector is trivially done. 445 // Deserializing a zero-length vector is trivially done.
450 if (0 == argc) { 446 if (0 == argc) {
451 return true; 447 return true;
452 } 448 }
453 // Otherwise, there must be some input bytes to get from. 449 // Otherwise, there must be some input bytes to get from.
454 if (NULL == bytes || 0 == length) { 450 if (NULL == bytes || 0 == length) {
455 return false; 451 return false;
456 } 452 }
457 // And there has to be a valid address to deserialize to. 453 // And there has to be a valid address to deserialize to.
458 if (NULL == vars) { 454 if (NULL == vars) {
459 return false; 455 return false;
460 } 456 }
461 // Read the serialized PP_Vars into the allocated memory. 457 // Read the serialized PP_Vars into the allocated memory.
462 if (!DeserializePpVar(channel, bytes, length, vars, argc)) { 458 if (!DeserializePpVar(bytes, length, vars, argc)) {
463 return false; 459 return false;
464 } 460 }
465 return true; 461 return true;
466 } 462 }
467 463
468 } // namespace ppapi_proxy 464 } // namespace ppapi_proxy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698