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

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

Issue 159983003: Fix a bug with mojom imports where 2 imports with the same namespace would (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 10 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
Index: mojo/public/bindings/generators/mojom_js_generator.py
diff --git a/mojo/public/bindings/generators/mojom_js_generator.py b/mojo/public/bindings/generators/mojom_js_generator.py
index 0743183899d9ccd27a11872533c44f9de09cda36..bfa443a9b778151127b88451aad333aed17fe36d 100644
--- a/mojo/public/bindings/generators/mojom_js_generator.py
+++ b/mojo/public/bindings/generators/mojom_js_generator.py
@@ -148,6 +148,19 @@ def JavaScriptEncodeSnippet(kind):
return JavaScriptEncodeSnippet(mojom.MSGPIPE)
+def SubstituteNamespace(value, imports):
+ for import_item in imports:
+ value = value.replace(import_item["namespace"] + ".",
+ import_item["unique_name"] + ".")
+ return value
+
+
+def JavascriptType(kind):
+ if kind.imported_from:
+ return kind.imported_from["unique_name"] + "." + kind.name
+ return kind.name
+
+
class Generator(mojom_generator.Generator):
js_filters = {
@@ -159,15 +172,16 @@ class Generator(mojom_generator.Generator):
"is_object_kind": mojom_generator.IsObjectKind,
"is_string_kind": mojom_generator.IsStringKind,
"is_array_kind": lambda kind: isinstance(kind, mojom.Array),
- "js_type": lambda kind: kind.GetFullName("."),
+ "js_type": JavascriptType,
"stylize_method": mojom_generator.StudlyCapsToCamel,
+ "substitute_namespace": SubstituteNamespace,
"verify_token_type": mojom_generator.VerifyTokenType,
}
@UseJinja("js_templates/module.js.tmpl", filters=js_filters)
def GenerateJsModule(self):
return {
- "imports": self.module.imports,
+ "imports": self.GetImports(),
"kinds": self.module.kinds,
"enums": self.module.enums,
"structs": self.GetStructs() + self.GetStructsFromMethods(),
@@ -176,3 +190,12 @@ class Generator(mojom_generator.Generator):
def GenerateFiles(self):
self.Write(self.GenerateJsModule(), "%s.js" % self.module.name)
+
+ def GetImports(self):
+ # Since each import is assigned a variable in JS, they need to have unique
+ # names.
+ counter = 1
+ for each in self.module.imports:
+ each["unique_name"] = "import" + str(counter)
+ counter += 1
+ return self.module.imports
« no previous file with comments | « mojo/public/bindings/generators/mojom_cpp_generator.py ('k') | mojo/public/bindings/mojom_bindings_generator.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698