Index: mojo/public/tools/bindings/generators/mojom_js_generator.py |
diff --git a/mojo/public/tools/bindings/generators/mojom_js_generator.py b/mojo/public/tools/bindings/generators/mojom_js_generator.py |
index 7ff6759c5077983841118cd0c6b3d8b6847a47e2..59933a9dd2c2022ba92166737e56f82afe4e955a 100644 |
--- a/mojo/public/tools/bindings/generators/mojom_js_generator.py |
+++ b/mojo/public/tools/bindings/generators/mojom_js_generator.py |
@@ -110,16 +110,20 @@ def CodecType(kind): |
if mojom.IsArrayKind(kind): |
array_type = "NullableArrayOf" if mojom.IsNullableKind(kind) else "ArrayOf" |
array_length = "" if kind.length is None else ", %d" % kind.length |
- element_type = "codec.PackedBool" if mojom.IsBoolKind(kind.kind) \ |
- else CodecType(kind.kind) |
+ element_type = ElementCodecType(kind.kind) |
return "new codec.%s(%s%s)" % (array_type, element_type, array_length) |
if mojom.IsInterfaceKind(kind) or mojom.IsInterfaceRequestKind(kind): |
return CodecType(mojom.MSGPIPE) |
if mojom.IsEnumKind(kind): |
return _kind_to_codec_type[mojom.INT32] |
+ if mojom.IsMapKind(kind): |
+ map_type = "NullableMapOf" if mojom.IsNullableKind(kind) else "MapOf" |
+ key_type = ElementCodecType(kind.key_kind) |
+ value_type = ElementCodecType(kind.value_kind) |
+ return "new codec.%s(%s, %s)" % (map_type, key_type, value_type) |
return kind |
-def MapCodecType(kind): |
+def ElementCodecType(kind): |
return "codec.PackedBool" if mojom.IsBoolKind(kind) else CodecType(kind) |
def JavaScriptDecodeSnippet(kind): |
@@ -129,7 +133,7 @@ def JavaScriptDecodeSnippet(kind): |
return "decodeStructPointer(%s)" % JavaScriptType(kind) |
if mojom.IsMapKind(kind): |
return "decodeMapPointer(%s, %s)" % \ |
- (MapCodecType(kind.key_kind), MapCodecType(kind.value_kind)) |
+ (ElementCodecType(kind.key_kind), ElementCodecType(kind.value_kind)) |
if mojom.IsArrayKind(kind) and mojom.IsBoolKind(kind.kind): |
return "decodeArrayPointer(codec.PackedBool)" |
if mojom.IsArrayKind(kind): |
@@ -147,7 +151,7 @@ def JavaScriptEncodeSnippet(kind): |
return "encodeStructPointer(%s, " % JavaScriptType(kind) |
if mojom.IsMapKind(kind): |
return "encodeMapPointer(%s, %s, " % \ |
- (MapCodecType(kind.key_kind), MapCodecType(kind.value_kind)) |
+ (ElementCodecType(kind.key_kind), ElementCodecType(kind.value_kind)) |
if mojom.IsArrayKind(kind) and mojom.IsBoolKind(kind.kind): |
return "encodeArrayPointer(codec.PackedBool, "; |
if mojom.IsArrayKind(kind): |
@@ -184,8 +188,7 @@ def JavaScriptValidateArrayParams(packed_field): |
element_size = pack.PackedField.GetSizeForKind(element_kind) |
expected_dimension_sizes = GetArrayExpectedDimensionSizes( |
packed_field.field.kind) |
- element_type = "codec.PackedBool" if mojom.IsBoolKind(element_kind) \ |
- else CodecType(element_kind) |
+ element_type = ElementCodecType(element_kind) |
return "%s, %s, %s, %s, %s, 0" % \ |
(field_offset, element_size, element_type, nullable, |
expected_dimension_sizes) |
@@ -201,9 +204,9 @@ def JavaScriptValidateStructParams(packed_field): |
def JavaScriptValidateMapParams(packed_field): |
nullable = JavaScriptNullableParam(packed_field) |
field_offset = JavaScriptFieldOffset(packed_field) |
- keys_type = MapCodecType(packed_field.field.kind.key_kind) |
+ keys_type = ElementCodecType(packed_field.field.kind.key_kind) |
values_kind = packed_field.field.kind.value_kind; |
- values_type = MapCodecType(values_kind) |
+ values_type = ElementCodecType(values_kind) |
values_nullable = "true" if mojom.IsNullableKind(values_kind) else "false" |
return "%s, %s, %s, %s, %s" % \ |
(field_offset, nullable, keys_type, values_type, values_nullable) |