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, |
} |