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

Side by Side Diff: mojo/public/js/codec.js

Issue 795593004: Update mojo sdk to rev cc531b32182099a5a034a99daff35ed5d38a61c8 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More workarounds for MSVC Created 5 years, 11 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 define("mojo/public/js/codec", [ 5 define("mojo/public/js/codec", [
6 "mojo/public/js/unicode", 6 "mojo/public/js/unicode",
7 "mojo/public/js/buffer", 7 "mojo/public/js/buffer",
8 ], function(unicode, buffer) { 8 ], function(unicode, buffer) {
9 9
10 var kErrorUnsigned = "Passing negative value to unsigned"; 10 var kErrorUnsigned = "Passing negative value to unsigned";
11 var kErrorArray = "Passing non Array for array type";
12 var kErrorString = "Passing non String for string type";
13 var kErrorMap = "Passing non Map for map type";
11 14
12 // Memory ------------------------------------------------------------------- 15 // Memory -------------------------------------------------------------------
13 16
14 var kAlignment = 8; 17 var kAlignment = 8;
15 18
16 function align(size) { 19 function align(size) {
17 return size + (kAlignment - (size % kAlignment)) % kAlignment; 20 return size + (kAlignment - (size % kAlignment)) % kAlignment;
18 } 21 }
19 22
20 function isAligned(offset) { 23 function isAligned(offset) {
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 var encoder = this.createAndEncodeEncoder(cls.encodedSize); 348 var encoder = this.createAndEncodeEncoder(cls.encodedSize);
346 cls.encode(encoder, val); 349 cls.encode(encoder, val);
347 }; 350 };
348 351
349 Encoder.prototype.encodeArrayPointer = function(cls, val) { 352 Encoder.prototype.encodeArrayPointer = function(cls, val) {
350 if (val == null) { 353 if (val == null) {
351 // Also handles undefined, since undefined == null. 354 // Also handles undefined, since undefined == null.
352 this.encodePointer(val); 355 this.encodePointer(val);
353 return; 356 return;
354 } 357 }
358
355 var numberOfElements = val.length; 359 var numberOfElements = val.length;
360 if (!Number.isSafeInteger(numberOfElements) || numberOfElements < 0)
361 throw new Error(kErrorArray);
362
356 var encodedSize = kArrayHeaderSize + ((cls === PackedBool) ? 363 var encodedSize = kArrayHeaderSize + ((cls === PackedBool) ?
357 Math.ceil(numberOfElements / 8) : cls.encodedSize * numberOfElements); 364 Math.ceil(numberOfElements / 8) : cls.encodedSize * numberOfElements);
358 var encoder = this.createAndEncodeEncoder(encodedSize); 365 var encoder = this.createAndEncodeEncoder(encodedSize);
359 encoder.encodeArray(cls, val, numberOfElements, encodedSize); 366 encoder.encodeArray(cls, val, numberOfElements, encodedSize);
360 }; 367 };
361 368
362 Encoder.prototype.encodeStringPointer = function(val) { 369 Encoder.prototype.encodeStringPointer = function(val) {
363 if (val == null) { 370 if (val == null) {
364 // Also handles undefined, since undefined == null. 371 // Also handles undefined, since undefined == null.
365 this.encodePointer(val); 372 this.encodePointer(val);
366 return; 373 return;
367 } 374 }
375 // Only accepts string primivites, not String Objects like new String("foo")
376 if (typeof(val) !== "string") {
377 throw new Error(kErrorString);
378 }
368 var encodedSize = kArrayHeaderSize + unicode.utf8Length(val); 379 var encodedSize = kArrayHeaderSize + unicode.utf8Length(val);
369 var encoder = this.createAndEncodeEncoder(encodedSize); 380 var encoder = this.createAndEncodeEncoder(encodedSize);
370 encoder.encodeString(val); 381 encoder.encodeString(val);
371 }; 382 };
372 383
373 Encoder.prototype.encodeMap = function(keyClass, valueClass, val) { 384 Encoder.prototype.encodeMap = function(keyClass, valueClass, val) {
374 var keys = new Array(val.size); 385 var keys = new Array(val.size);
375 var values = new Array(val.size); 386 var values = new Array(val.size);
376 var i = 0; 387 var i = 0;
377 val.forEach(function(value, key) { 388 val.forEach(function(value, key) {
378 values[i] = value; 389 values[i] = value;
379 keys[i++] = key; 390 keys[i++] = key;
380 }); 391 });
381 this.writeUint32(kStructHeaderSize + kMapStructPayloadSize); 392 this.writeUint32(kStructHeaderSize + kMapStructPayloadSize);
382 this.writeUint32(2); // two fields: keys, values 393 this.writeUint32(2); // two fields: keys, values
383 this.encodeArrayPointer(keyClass, keys); 394 this.encodeArrayPointer(keyClass, keys);
384 this.encodeArrayPointer(valueClass, values); 395 this.encodeArrayPointer(valueClass, values);
385 } 396 }
386 397
387 Encoder.prototype.encodeMapPointer = function(keyClass, valueClass, val) { 398 Encoder.prototype.encodeMapPointer = function(keyClass, valueClass, val) {
388 if (val == null) { 399 if (val == null) {
389 // Also handles undefined, since undefined == null. 400 // Also handles undefined, since undefined == null.
390 this.encodePointer(val); 401 this.encodePointer(val);
391 return; 402 return;
392 } 403 }
404 if (!(val instanceof Map)) {
405 throw new Error(kErrorMap);
406 }
393 var encodedSize = kStructHeaderSize + kMapStructPayloadSize; 407 var encodedSize = kStructHeaderSize + kMapStructPayloadSize;
394 var encoder = this.createAndEncodeEncoder(encodedSize); 408 var encoder = this.createAndEncodeEncoder(encodedSize);
395 encoder.encodeMap(keyClass, valueClass, val); 409 encoder.encodeMap(keyClass, valueClass, val);
396 }; 410 };
397 411
398 // Message ------------------------------------------------------------------ 412 // Message ------------------------------------------------------------------
399 413
400 var kMessageNameOffset = kStructHeaderSize; 414 var kMessageNameOffset = kStructHeaderSize;
401 var kMessageFlagsOffset = kMessageNameOffset + 4; 415 var kMessageFlagsOffset = kMessageNameOffset + 4;
402 var kMessageRequestIDOffset = kMessageFlagsOffset + 4; 416 var kMessageRequestIDOffset = kMessageFlagsOffset + 4;
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after
806 exports.NullablePointerTo = NullablePointerTo; 820 exports.NullablePointerTo = NullablePointerTo;
807 exports.ArrayOf = ArrayOf; 821 exports.ArrayOf = ArrayOf;
808 exports.NullableArrayOf = NullableArrayOf; 822 exports.NullableArrayOf = NullableArrayOf;
809 exports.PackedBool = PackedBool; 823 exports.PackedBool = PackedBool;
810 exports.Handle = Handle; 824 exports.Handle = Handle;
811 exports.NullableHandle = NullableHandle; 825 exports.NullableHandle = NullableHandle;
812 exports.MapOf = MapOf; 826 exports.MapOf = MapOf;
813 exports.NullableMapOf = NullableMapOf; 827 exports.NullableMapOf = NullableMapOf;
814 return exports; 828 return exports;
815 }); 829 });
OLDNEW
« no previous file with comments | « mojo/public/java/system/src/org/chromium/mojo/system/InvalidHandle.java ('k') | mojo/public/js/codec_unittests.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698