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

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 surfaces fixes + one fix for HTMLDocument 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 if (!(val instanceof Array)) {
359 throw new Error(kErrorArray);
360 }
355 var numberOfElements = val.length; 361 var numberOfElements = val.length;
356 var encodedSize = kArrayHeaderSize + ((cls === PackedBool) ? 362 var encodedSize = kArrayHeaderSize + ((cls === PackedBool) ?
357 Math.ceil(numberOfElements / 8) : cls.encodedSize * numberOfElements); 363 Math.ceil(numberOfElements / 8) : cls.encodedSize * numberOfElements);
358 var encoder = this.createAndEncodeEncoder(encodedSize); 364 var encoder = this.createAndEncodeEncoder(encodedSize);
359 encoder.encodeArray(cls, val, numberOfElements, encodedSize); 365 encoder.encodeArray(cls, val, numberOfElements, encodedSize);
360 }; 366 };
361 367
362 Encoder.prototype.encodeStringPointer = function(val) { 368 Encoder.prototype.encodeStringPointer = function(val) {
363 if (val == null) { 369 if (val == null) {
364 // Also handles undefined, since undefined == null. 370 // Also handles undefined, since undefined == null.
365 this.encodePointer(val); 371 this.encodePointer(val);
366 return; 372 return;
367 } 373 }
374 // Only accepts string primivites, not String Objects like new String("foo")
375 if (typeof(val) !== "string") {
376 throw new Error(kErrorString);
377 }
368 var encodedSize = kArrayHeaderSize + unicode.utf8Length(val); 378 var encodedSize = kArrayHeaderSize + unicode.utf8Length(val);
369 var encoder = this.createAndEncodeEncoder(encodedSize); 379 var encoder = this.createAndEncodeEncoder(encodedSize);
370 encoder.encodeString(val); 380 encoder.encodeString(val);
371 }; 381 };
372 382
373 Encoder.prototype.encodeMap = function(keyClass, valueClass, val) { 383 Encoder.prototype.encodeMap = function(keyClass, valueClass, val) {
374 var keys = new Array(val.size); 384 var keys = new Array(val.size);
375 var values = new Array(val.size); 385 var values = new Array(val.size);
376 var i = 0; 386 var i = 0;
377 val.forEach(function(value, key) { 387 val.forEach(function(value, key) {
378 values[i] = value; 388 values[i] = value;
379 keys[i++] = key; 389 keys[i++] = key;
380 }); 390 });
381 this.writeUint32(kStructHeaderSize + kMapStructPayloadSize); 391 this.writeUint32(kStructHeaderSize + kMapStructPayloadSize);
382 this.writeUint32(2); // two fields: keys, values 392 this.writeUint32(2); // two fields: keys, values
383 this.encodeArrayPointer(keyClass, keys); 393 this.encodeArrayPointer(keyClass, keys);
384 this.encodeArrayPointer(valueClass, values); 394 this.encodeArrayPointer(valueClass, values);
385 } 395 }
386 396
387 Encoder.prototype.encodeMapPointer = function(keyClass, valueClass, val) { 397 Encoder.prototype.encodeMapPointer = function(keyClass, valueClass, val) {
388 if (val == null) { 398 if (val == null) {
389 // Also handles undefined, since undefined == null. 399 // Also handles undefined, since undefined == null.
390 this.encodePointer(val); 400 this.encodePointer(val);
391 return; 401 return;
392 } 402 }
403 if (!(val instanceof Map)) {
404 throw new Error(kErrorMap);
405 }
393 var encodedSize = kStructHeaderSize + kMapStructPayloadSize; 406 var encodedSize = kStructHeaderSize + kMapStructPayloadSize;
394 var encoder = this.createAndEncodeEncoder(encodedSize); 407 var encoder = this.createAndEncodeEncoder(encodedSize);
395 encoder.encodeMap(keyClass, valueClass, val); 408 encoder.encodeMap(keyClass, valueClass, val);
396 }; 409 };
397 410
398 // Message ------------------------------------------------------------------ 411 // Message ------------------------------------------------------------------
399 412
400 var kMessageNameOffset = kStructHeaderSize; 413 var kMessageNameOffset = kStructHeaderSize;
401 var kMessageFlagsOffset = kMessageNameOffset + 4; 414 var kMessageFlagsOffset = kMessageNameOffset + 4;
402 var kMessageRequestIDOffset = kMessageFlagsOffset + 4; 415 var kMessageRequestIDOffset = kMessageFlagsOffset + 4;
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after
806 exports.NullablePointerTo = NullablePointerTo; 819 exports.NullablePointerTo = NullablePointerTo;
807 exports.ArrayOf = ArrayOf; 820 exports.ArrayOf = ArrayOf;
808 exports.NullableArrayOf = NullableArrayOf; 821 exports.NullableArrayOf = NullableArrayOf;
809 exports.PackedBool = PackedBool; 822 exports.PackedBool = PackedBool;
810 exports.Handle = Handle; 823 exports.Handle = Handle;
811 exports.NullableHandle = NullableHandle; 824 exports.NullableHandle = NullableHandle;
812 exports.MapOf = MapOf; 825 exports.MapOf = MapOf;
813 exports.NullableMapOf = NullableMapOf; 826 exports.NullableMapOf = NullableMapOf;
814 return exports; 827 return exports;
815 }); 828 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698