Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(880)

Unified Diff: mojo/public/tools/bindings/generators/mojom_js_generator.py

Issue 2380303003: [Mojo] Make javascript enums extensible. (Closed)
Patch Set: rebase Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/public/tools/bindings/generators/js_templates/validation_macros.tmpl ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 e2df5176e25eef78beded602e2d12c988fcf0408..7924e8a3b1815dc336ac53a7e928d64f59cae218 100644
--- a/mojo/public/tools/bindings/generators/mojom_js_generator.py
+++ b/mojo/public/tools/bindings/generators/mojom_js_generator.py
@@ -37,9 +37,13 @@ _kind_to_javascript_default_value = {
def JavaScriptType(kind):
+ name = []
if kind.imported_from:
- return kind.imported_from["unique_name"] + "." + kind.name
- return kind.name
+ name.append(kind.imported_from["unique_name"])
+ if kind.parent_kind:
+ name.append(kind.parent_kind.name)
+ name.append(kind.name)
+ return ".".join(name)
def JavaScriptDefaultValue(field):
@@ -129,7 +133,8 @@ def CodecType(kind):
if mojom.IsAssociatedInterfaceRequestKind(kind):
return "codec.AssociatedInterfaceRequestNotSupported"
if mojom.IsEnumKind(kind):
- return _kind_to_codec_type[mojom.INT32]
+ element_type = kind.name
+ return "new codec.Enum(%s)" % (element_type)
if mojom.IsMapKind(kind):
map_type = "NullableMapOf" if mojom.IsNullableKind(kind) else "MapOf"
key_type = ElementCodecType(kind.key_kind)
@@ -141,6 +146,7 @@ def CodecType(kind):
def ElementCodecType(kind):
return "codec.PackedBool" if mojom.IsBoolKind(kind) else CodecType(kind)
+
def JavaScriptDecodeSnippet(kind):
if (kind in mojom.PRIMITIVES or mojom.IsUnionKind(kind) or
mojom.IsInterfaceKind(kind) or mojom.IsAssociatedKind(kind)):
@@ -228,6 +234,11 @@ def JavaScriptValidateArrayParams(field):
expected_dimension_sizes)
+def JavaScriptValidateEnumParams(field):
+ nullable = JavaScriptNullableParam(field)
+ enum_type = JavaScriptType(field.kind)
+ return "%s, %s" % (enum_type, nullable)
+
def JavaScriptValidateStructParams(field):
nullable = JavaScriptNullableParam(field)
struct_type = JavaScriptType(field.kind)
@@ -316,6 +327,9 @@ def ExpressionToText(value):
def IsArrayPointerField(field):
return mojom.IsArrayKind(field.kind)
+def IsEnumField(field):
+ return mojom.IsEnumKind(field.kind)
+
def IsStringPointerField(field):
return mojom.IsStringKind(field.kind)
@@ -355,6 +369,7 @@ class Generator(generator.Generator):
"has_callbacks": mojom.HasCallbacks,
"is_array_pointer_field": IsArrayPointerField,
"is_bool_field": IsBoolField,
+ "is_enum_field": IsEnumField,
"is_map_pointer_field": IsMapPointerField,
"is_struct_pointer_field": IsStructPointerField,
"is_string_pointer_field": IsStringPointerField,
@@ -367,6 +382,7 @@ class Generator(generator.Generator):
"js_stub_method_parameter_value": JavaScriptStubMethodParameterValue,
"stylize_method": generator.StudlyCapsToCamel,
"validate_array_params": JavaScriptValidateArrayParams,
+ "validate_enum_params": JavaScriptValidateEnumParams,
"validate_handle_params": JavaScriptValidateHandleParams,
"validate_interface_params": JavaScriptValidateInterfaceParams,
"validate_map_params": JavaScriptValidateMapParams,
« no previous file with comments | « mojo/public/tools/bindings/generators/js_templates/validation_macros.tmpl ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698