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 28b709aae245811a7a5e23b972884b0698bd0d6f..63fbfba3d55fb87b23e08fd60fce606fc9aef228 100644 |
--- a/mojo/public/tools/bindings/generators/mojom_js_generator.py |
+++ b/mojo/public/tools/bindings/generators/mojom_js_generator.py |
@@ -42,8 +42,10 @@ def JavaScriptType(kind): |
if kind.imported_from: |
name.append(kind.imported_from["unique_name"]) |
if kind.parent_kind: |
- name.append(kind.parent_kind.name) |
- name.append(kind.name) |
+ name.append(kind.parent_kind.stylized_name) |
+ if not hasattr(kind, 'stylized_name'): |
+ print kind |
+ name.append(kind.stylized_name) |
return ".".join(name) |
@@ -271,9 +273,9 @@ def TranslateConstants(token): |
if token.imported_from: |
name.append(token.imported_from["unique_name"]) |
if token.parent_kind: |
- name.append(token.parent_kind.name) |
+ name.append(token.parent_kind.stylized_name) |
if isinstance(token, mojom.EnumValue): |
- name.append(token.enum.name) |
+ name.append(token.enum.stylized_name) |
name.append(token.name) |
return ".".join(name) |
@@ -341,6 +343,30 @@ def GetRelativePath(module, base_module): |
return os.path.relpath(module.path, os.path.dirname(base_module.path)) |
+class JsStylizer(generator.Stylizer): |
+ def __init__(self, use_new_js_bindings): |
+ self.use_new_js_bindings = use_new_js_bindings |
+ |
+ def StylizeField(self, name): |
+ if not self.use_new_js_bindings: |
+ return name |
+ return generator.ToCamel(name, lower_initial=True) |
+ |
+ def StylizeParameter(self, name): |
+ if not self.use_new_js_bindings: |
+ return name |
+ return generator.ToCamel(name, lower_initial=True) |
+ |
+ def StylizeMethod(self, name): |
+ return generator.ToCamel(name, lower_initial=True) |
+ |
+ def StylizeModule(self, name): |
+ if not self.use_new_js_bindings: |
+ return name |
+ return '.'.join( |
+ generator.ToCamel(word, lower_initial=True) for word in name.split('.')) |
+ |
+ |
class Generator(generator.Generator): |
js_filters = { |
@@ -349,6 +375,7 @@ class Generator(generator.Generator): |
"encode_snippet": JavaScriptEncodeSnippet, |
"expression_to_text": ExpressionToText, |
"field_offset": JavaScriptFieldOffset, |
+ "get_relative_path": GetRelativePath, |
"has_callbacks": mojom.HasCallbacks, |
"is_any_handle_or_interface_field": IsAnyHandleOrInterfaceField, |
"is_array_pointer_field": IsArrayPointerField, |
@@ -367,8 +394,7 @@ class Generator(generator.Generator): |
"js_type": JavaScriptType, |
"method_passes_associated_kinds": mojom.MethodPassesAssociatedKinds, |
"payload_size": JavaScriptPayloadSize, |
- "get_relative_path": GetRelativePath, |
- "stylize_method": generator.StudlyCapsToCamel, |
+ "to_camel": generator.ToCamel, |
"union_decode_snippet": JavaScriptUnionDecodeSnippet, |
"union_encode_snippet": JavaScriptUnionEncodeSnippet, |
"validate_array_params": JavaScriptValidateArrayParams, |
@@ -381,16 +407,14 @@ class Generator(generator.Generator): |
def GetParameters(self): |
return { |
- "namespace": self.module.namespace, |
- "imports": self.GetImports(), |
- "kinds": self.module.kinds, |
"enums": self.module.enums, |
+ "imports": self.module.imports, |
+ "interfaces": self.module.interfaces, |
+ "kinds": self.module.kinds, |
"module": self.module, |
- "structs": self.GetStructs() + self.GetStructsFromMethods(), |
- "unions": self.GetUnions(), |
+ "structs": self.module.structs + self.GetStructsFromMethods(), |
+ "unions": self.module.unions, |
"use_new_js_bindings": self.use_new_js_bindings, |
- "interfaces": self.GetInterfaces(), |
- "imported_interfaces": self.GetImportedInterfaces(), |
} |
@staticmethod |
@@ -409,10 +433,14 @@ class Generator(generator.Generator): |
if self.variant: |
raise Exception("Variants not supported in JavaScript bindings.") |
+ self.FinalizeModule(JsStylizer(self.use_new_js_bindings)) |
+ |
self.Write(self.GenerateAMDModule(), |
self.MatchMojomFilePath("%s.js" % self.module.name)) |
- def GetImports(self): |
+ def FinalizeModule(self, stylizer=None): |
+ super(Generator, self).FinalizeModule(stylizer) |
+ |
used_names = set() |
for each_import in self.module.imports: |
simple_name = each_import["module_name"].split(".")[0] |
@@ -428,13 +456,3 @@ class Generator(generator.Generator): |
used_names.add(unique_name) |
each_import["unique_name"] = unique_name + "$" |
counter += 1 |
- return self.module.imports |
- |
- def GetImportedInterfaces(self): |
- interface_to_import = {}; |
- for each_import in self.module.imports: |
- for each_interface in each_import["module"].interfaces: |
- name = each_interface.name |
- interface_to_import[name] = each_import["unique_name"] + "." + name |
- return interface_to_import; |
- |