Chromium Code Reviews| 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 7787f7646f5ef0d4c6768690a148e4fca88a8967..d93bd5e052bad500f787e9670f5beeef617a8e44 100644 |
| --- a/mojo/public/tools/bindings/generators/mojom_js_generator.py |
| +++ b/mojo/public/tools/bindings/generators/mojom_js_generator.py |
| @@ -79,16 +79,16 @@ _kind_to_codec_type = { |
| mojom.DPPIPE: "codec.Handle", |
| mojom.MSGPIPE: "codec.Handle", |
| mojom.SHAREDBUFFER: "codec.Handle", |
| - mojom.NULLABLE_HANDLE: "codec.Handle", |
| - mojom.NULLABLE_DCPIPE: "codec.Handle", |
| - mojom.NULLABLE_DPPIPE: "codec.Handle", |
| - mojom.NULLABLE_MSGPIPE: "codec.Handle", |
| - mojom.NULLABLE_SHAREDBUFFER: "codec.Handle", |
| + mojom.NULLABLE_HANDLE: "codec.NullableHandle", |
| + mojom.NULLABLE_DCPIPE: "codec.NullableHandle", |
| + mojom.NULLABLE_DPPIPE: "codec.NullableHandle", |
| + mojom.NULLABLE_MSGPIPE: "codec.NullableHandle", |
| + mojom.NULLABLE_SHAREDBUFFER: "codec.NullableHandle", |
| mojom.INT64: "codec.Int64", |
| mojom.UINT64: "codec.Uint64", |
| mojom.DOUBLE: "codec.Double", |
| mojom.STRING: "codec.String", |
| - mojom.NULLABLE_STRING: "codec.String", |
| + mojom.NULLABLE_STRING: "codec.NullableString", |
| } |
| @@ -96,11 +96,14 @@ def CodecType(kind): |
| if kind in mojom.PRIMITIVES: |
| return _kind_to_codec_type[kind] |
| if mojom.IsStructKind(kind): |
| - return "new codec.PointerTo(%s)" % CodecType(kind.name) |
| + ptrType = "NullablePointerTo" if mojom.IsNullableKind(kind) else "PointerTo" |
|
yzshen1
2014/08/20 17:04:20
please use naming style ptr_type. (here and below)
hansmuller
2014/08/20 17:46:31
Done.
|
| + return "new codec.%s(%s)" % (ptrType, CodecType(kind.name)) |
| if mojom.IsAnyArrayKind(kind) and mojom.IsBoolKind(kind.kind): |
|
yzshen1
2014/08/20 17:04:21
nit: maybe we could merge this if-block into the n
hansmuller
2014/08/20 17:46:31
Done.
|
| - return "new codec.ArrayOf(codec.PackedBool)" |
| + arrayType = "NullableArrayOf" if mojom.IsNullableKind(kind) else "ArrayOf" |
| + return "new codec.%s(codec.PackedBool)" % arrayType |
| if mojom.IsAnyArrayKind(kind): |
| - return "new codec.ArrayOf(%s)" % CodecType(kind.kind) |
| + arrayType = "NullableArrayOf" if mojom.IsNullableKind(kind) else "ArrayOf" |
| + return "new codec.%s(%s)" % (arrayType, CodecType(kind.kind)) |
| if mojom.IsInterfaceKind(kind) or mojom.IsInterfaceRequestKind(kind): |
| return CodecType(mojom.MSGPIPE) |
| if mojom.IsEnumKind(kind): |
| @@ -141,17 +144,36 @@ def JavaScriptEncodeSnippet(kind): |
| def JavaScriptFieldOffset(packed_field): |
| return "offset + codec.kStructHeaderSize + %s" % packed_field.offset |
| + |
| +def JavaScriptNullableParam(pf): |
|
yzshen1
2014/08/20 17:04:20
packed_field may be a better name than pf. (like l
hansmuller
2014/08/20 17:46:31
Done.
|
| + return "true" if mojom.IsNullableKind(pf.field.kind) else "false" |
| + |
| + |
| def JavaScriptValidateArrayParams(pf): |
| - elementKind = pf.field.kind.kind |
| - elementSize = pack.PackedField.GetSizeForKind(elementKind) |
| - elementCount = generator.ExpectedArraySize(pf.field.kind) |
| - elementType = "codec.PackedBool" if mojom.IsBoolKind(elementKind) \ |
| - else CodecType(elementKind) |
| - return "%s, %s, %s, %s" % \ |
| - (JavaScriptFieldOffset(pf), elementSize, elementCount, elementType) |
| + nullable = JavaScriptNullableParam(pf) |
| + eltKind = pf.field.kind.kind |
|
yzshen1
2014/08/20 17:04:20
element_kind is actually better than elt_kind acco
hansmuller
2014/08/20 17:46:31
Done.
|
| + eltSize = pack.PackedField.GetSizeForKind(eltKind) |
| + eltCount = generator.ExpectedArraySize(pf.field.kind) |
| + eltType = "codec.PackedBool" if mojom.IsBoolKind(eltKind) \ |
| + else CodecType(eltKind) |
| + return "%s, %s, %s, %s, %s" % \ |
| + (JavaScriptFieldOffset(pf), eltSize, eltCount, eltType, nullable) |
|
yzshen1
2014/08/20 17:04:20
wrong indent.
hansmuller
2014/08/20 17:46:31
Done.
|
| + |
| def JavaScriptValidateStructParams(pf): |
| - return "%s, %s" % (JavaScriptFieldOffset(pf), pf.field.kind.name) |
| + nullable = JavaScriptNullableParam(pf) |
| + structType = pf.field.kind.name |
| + return "%s, %s, %s" % (JavaScriptFieldOffset(pf), structType, nullable) |
| + |
| + |
| +def JavaScriptValidateStringParams(pf): |
| + nullable = JavaScriptNullableParam(pf) |
| + return "%s, %s" % (JavaScriptFieldOffset(pf), nullable) |
| + |
| + |
| +def JavaScriptValidateHandleParams(pf): |
| + nullable = JavaScriptNullableParam(pf) |
| + return "%s, %s" % (JavaScriptFieldOffset(pf), nullable) |
| def TranslateConstants(token): |
| @@ -209,6 +231,8 @@ class Generator(generator.Generator): |
| "js_type": JavascriptType, |
| "stylize_method": generator.StudlyCapsToCamel, |
| "validate_array_params": JavaScriptValidateArrayParams, |
| + "validate_handle_params": JavaScriptValidateHandleParams, |
| + "validate_string_params": JavaScriptValidateStringParams, |
| "validate_struct_params": JavaScriptValidateStructParams, |
| } |