Index: mojo/public/tools/bindings/generators/mojom_java_generator.py |
diff --git a/mojo/public/tools/bindings/generators/mojom_java_generator.py b/mojo/public/tools/bindings/generators/mojom_java_generator.py |
index 043d9e3acf4940029cf21459f6dddef3ac28a8bf..bf0c80a62270e4b0ad09a17a6f3d5bd1a35ee528 100644 |
--- a/mojo/public/tools/bindings/generators/mojom_java_generator.py |
+++ b/mojo/public/tools/bindings/generators/mojom_java_generator.py |
@@ -181,11 +181,7 @@ def AppendEncodeDecodeParams(initial_params, context, kind, bit): |
else: |
params.append(GetJavaTrueFalse(mojom.IsNullableKind(kind))) |
if mojom.IsAnyArrayKind(kind): |
- if mojom.IsFixedArrayKind(kind): |
- params.append(str(kind.length)) |
- else: |
- params.append( |
- 'org.chromium.mojo.bindings.BindingsHelper.UNSPECIFIED_ARRAY_LENGTH'); |
+ params.append(GetArrayExpectedLength(kind)) |
if mojom.IsInterfaceKind(kind): |
params.append('%s.MANAGER' % GetJavaType(context, kind)) |
if mojom.IsAnyArrayKind(kind) and mojom.IsInterfaceKind(kind.kind): |
@@ -253,6 +249,10 @@ def GetJavaType(context, kind, boxed=False): |
if mojom.IsInterfaceRequestKind(kind): |
return ('org.chromium.mojo.bindings.InterfaceRequest<%s>' % |
GetNameForKind(context, kind.kind)) |
+ if mojom.IsMapKind(kind): |
+ return 'java.util.Map<%s, %s>' % ( |
+ GetBoxedJavaType(context, kind.key_kind), |
+ GetBoxedJavaType(context, kind.value_kind)) |
if mojom.IsAnyArrayKind(kind): |
return '%s[]' % GetJavaType(context, kind.kind) |
if mojom.IsEnumKind(kind): |
@@ -323,6 +323,20 @@ def ExpressionToText(context, token, kind_spec=''): |
return 'java.lang.Float.NaN' |
return token |
+def GetArrayKind(kind, size = None): |
+ if size is None: |
+ return mojom.Array(kind) |
+ else: |
+ array = mojom.FixedArray(0, kind) |
+ array.java_map_size = size |
+ return array |
+ |
+def GetArrayExpectedLength(kind): |
+ if mojom.IsFixedArrayKind(kind): |
+ return getattr(kind, 'java_map_size', str(kind.length)) |
+ else: |
+ return 'org.chromium.mojo.bindings.BindingsHelper.UNSPECIFIED_ARRAY_LENGTH' |
+ |
def IsPointerArrayKind(kind): |
if not mojom.IsAnyArrayKind(kind): |
return False |
@@ -379,6 +393,8 @@ def ZipContentInto(root, zip_filename): |
class Generator(generator.Generator): |
java_filters = { |
+ 'array': GetArrayKind, |
+ 'array_expected_length': GetArrayExpectedLength, |
'interface_response_name': GetInterfaceResponseName, |
'constant_value': ConstantValue, |
'default_value': DefaultValue, |
@@ -389,6 +405,7 @@ class Generator(generator.Generator): |
'has_method_without_response': HasMethodWithoutResponse, |
'is_fixed_array_kind': mojom.IsFixedArrayKind, |
'is_handle': mojom.IsNonInterfaceHandleKind, |
+ 'is_map_kind': mojom.IsMapKind, |
'is_nullable_kind': mojom.IsNullableKind, |
'is_pointer_array_kind': IsPointerArrayKind, |
'is_struct_kind': mojom.IsStructKind, |