| Index: mojo/public/js/codec.js
|
| diff --git a/mojo/public/js/codec.js b/mojo/public/js/codec.js
|
| index ea4273a32ffd67e1398a1970a67ed1848f402e3f..d987026ebf94facdbd5e68ffb850bb59f04a4c17 100644
|
| --- a/mojo/public/js/codec.js
|
| +++ b/mojo/public/js/codec.js
|
| @@ -8,6 +8,9 @@ define("mojo/public/js/codec", [
|
| ], function(unicode, buffer) {
|
|
|
| var kErrorUnsigned = "Passing negative value to unsigned";
|
| + var kErrorArray = "Passing non Array for array type";
|
| + var kErrorString = "Passing non String for string type";
|
| + var kErrorMap = "Passing non Map for map type";
|
|
|
| // Memory -------------------------------------------------------------------
|
|
|
| @@ -352,6 +355,9 @@ define("mojo/public/js/codec", [
|
| this.encodePointer(val);
|
| return;
|
| }
|
| + if (!(val instanceof Array)) {
|
| + throw new Error(kErrorArray);
|
| + }
|
| var numberOfElements = val.length;
|
| var encodedSize = kArrayHeaderSize + ((cls === PackedBool) ?
|
| Math.ceil(numberOfElements / 8) : cls.encodedSize * numberOfElements);
|
| @@ -365,6 +371,10 @@ define("mojo/public/js/codec", [
|
| this.encodePointer(val);
|
| return;
|
| }
|
| + // Only accepts string primivites, not String Objects like new String("foo")
|
| + if (typeof(val) !== "string") {
|
| + throw new Error(kErrorString);
|
| + }
|
| var encodedSize = kArrayHeaderSize + unicode.utf8Length(val);
|
| var encoder = this.createAndEncodeEncoder(encodedSize);
|
| encoder.encodeString(val);
|
| @@ -390,6 +400,9 @@ define("mojo/public/js/codec", [
|
| this.encodePointer(val);
|
| return;
|
| }
|
| + if (!(val instanceof Map)) {
|
| + throw new Error(kErrorMap);
|
| + }
|
| var encodedSize = kStructHeaderSize + kMapStructPayloadSize;
|
| var encoder = this.createAndEncodeEncoder(encodedSize);
|
| encoder.encodeMap(keyClass, valueClass, val);
|
|
|