summaryrefslogtreecommitdiff
path: root/mojo/public/tools
diff options
context:
space:
mode:
authorpastarmovj@google.com <pastarmovj@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-25 21:36:59 +0900
committerQijiang Fan <fqj@google.com>2020-06-04 17:00:05 +0900
commitd928217aec2280a968851151f9df1179461c87a7 (patch)
tree43206566cdb07d3dd852b760535091cf971d2c76 /mojo/public/tools
parentb35f8abad9bb7efde57ea7446f0a81d0235a081a (diff)
downloadlibchrome-d928217aec2280a968851151f9df1179461c87a7.tar.gz
Revert 279677 "Generate java bindings for structs."
Broke the Linux x64 build http://build.chromium.org/p/chromium/builders/Linux%20x64/builds/66839/steps/compile/logs/stdio > Generate java bindings for structs. > > This CL introduces bindings for struct. It only generates fields and not > serialization/deserialization methods. > > R=rmcilroy@chromium.org, viettrungluu@chromium.org > > Review URL: https://codereview.chromium.org/306893010 TBR=qsr@chromium.org Review URL: https://codereview.chromium.org/354833003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@279688 0039d316-1c4b-4281-b951-d872f2087c98 CrOS-Libchrome-Original-Commit: 8723cf789893fba470c4edc5bf75bbcafad6f92e
Diffstat (limited to 'mojo/public/tools')
-rw-r--r--mojo/public/tools/bindings/generators/java_templates/constant_definition.tmpl4
-rw-r--r--mojo/public/tools/bindings/generators/java_templates/java_macros.tmpl3
-rw-r--r--mojo/public/tools/bindings/generators/java_templates/struct.java.tmpl4
-rw-r--r--mojo/public/tools/bindings/generators/java_templates/struct_definition.tmpl32
-rw-r--r--mojo/public/tools/bindings/generators/mojom_java_generator.py88
-rw-r--r--mojo/public/tools/bindings/mojom_bindings_generator.gypi3
-rw-r--r--mojo/public/tools/bindings/pylib/mojom/generate/generator.py8
-rw-r--r--mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py11
8 files changed, 31 insertions, 122 deletions
diff --git a/mojo/public/tools/bindings/generators/java_templates/constant_definition.tmpl b/mojo/public/tools/bindings/generators/java_templates/constant_definition.tmpl
index fcab2c6fde..f69f657d31 100644
--- a/mojo/public/tools/bindings/generators/java_templates/constant_definition.tmpl
+++ b/mojo/public/tools/bindings/generators/java_templates/constant_definition.tmpl
@@ -1,3 +1,5 @@
+{% from "java_macros.tmpl" import build_default %}
+
{% macro constant_def(constant) %}
-public static final {{constant.kind|java_type}} {{constant|name}} = ({{constant.kind|java_type}}) {{constant.value|expression_to_text}};
+public static final {{constant.kind|java_type}} {{constant|name}} = {{build_default(module, constant.kind, constant.value)|indent(4)}};
{% endmacro %}
diff --git a/mojo/public/tools/bindings/generators/java_templates/java_macros.tmpl b/mojo/public/tools/bindings/generators/java_templates/java_macros.tmpl
new file mode 100644
index 0000000000..d7339f5a42
--- /dev/null
+++ b/mojo/public/tools/bindings/generators/java_templates/java_macros.tmpl
@@ -0,0 +1,3 @@
+{% macro build_default(module, kind, value) %}
+({{kind|java_type}}) {{value|expression_to_text}}
+{% endmacro %}
diff --git a/mojo/public/tools/bindings/generators/java_templates/struct.java.tmpl b/mojo/public/tools/bindings/generators/java_templates/struct.java.tmpl
deleted file mode 100644
index 232ec26f5f..0000000000
--- a/mojo/public/tools/bindings/generators/java_templates/struct.java.tmpl
+++ /dev/null
@@ -1,4 +0,0 @@
-{% from "struct_definition.tmpl" import struct_def %}
-{% include "header.java.tmpl" %}
-
-{{ struct_def(struct) }}
diff --git a/mojo/public/tools/bindings/generators/java_templates/struct_definition.tmpl b/mojo/public/tools/bindings/generators/java_templates/struct_definition.tmpl
deleted file mode 100644
index a044e9cc4b..0000000000
--- a/mojo/public/tools/bindings/generators/java_templates/struct_definition.tmpl
+++ /dev/null
@@ -1,32 +0,0 @@
-{% from "constant_definition.tmpl" import constant_def %}
-{% from "enum_definition.tmpl" import enum_def %}
-
-{% macro struct_def(struct, inner_class=False) %}
-{{'static' if inner_class else 'public'}} final class {{struct|name}} extends org.chromium.mojo.bindings.Struct {
-{% for constant in struct.constants %}
-
- {{constant_def(constant)|indent(4)}}
-{% endfor %}
-{% for enum in struct.enums %}
-
- {{enum_def(enum, false)|indent(4)}}
-{% endfor %}
-{% if struct.fields %}
-
-{% for field in struct.fields %}
- public {{field.kind|java_type}} {{field|name}};
-{% endfor %}
-{% endif %}
-
- public {{struct|name}}() {
-{% for field in struct.fields %}
-{% if field.default %}
- {{field|name}} = {{field|default_value}};
-{% elif field.kind|is_handle %}
- {{field|name}} = org.chromium.mojo.system.InvalidHandle.INSTANCE;
-{% endif %}
-{% endfor %}
- }
-
-}
-{% endmacro %}
diff --git a/mojo/public/tools/bindings/generators/mojom_java_generator.py b/mojo/public/tools/bindings/generators/mojom_java_generator.py
index 4755b0db6f..ca43b84563 100644
--- a/mojo/public/tools/bindings/generators/mojom_java_generator.py
+++ b/mojo/public/tools/bindings/generators/mojom_java_generator.py
@@ -8,8 +8,6 @@ import argparse
import os
import re
-from jinja2 import contextfilter
-
import mojom.generate.generator as generator
import mojom.generate.module as mojom
from mojom.generate.template_expander import UseJinja
@@ -64,21 +62,19 @@ def ConstantStyle(name):
return '_'.join([x.upper() for x in components])
def GetNameForElement(element):
- if isinstance(element, (mojom.Enum,
- mojom.Interface,
- mojom.Struct)):
+ if (isinstance(element, mojom.Enum) or
+ isinstance(element, mojom.Interface) or
+ isinstance(element, mojom.Struct)):
return UpperCamelCase(element.name)
- if isinstance(element, mojom.InterfaceRequest):
- return GetNameForElement(element.kind)
- if isinstance(element, (mojom.Method,
- mojom.Parameter,
- mojom.Field)):
+ if (isinstance(element, mojom.Method) or
+ isinstance(element, mojom.Parameter) or
+ isinstance(element, mojom.Field)):
return CamelCase(element.name)
if isinstance(element, mojom.EnumValue):
return (UpperCamelCase(element.enum_name) + '.' +
ConstantStyle(element.name))
- if isinstance(element, (mojom.NamedValue,
- mojom.Constant)):
+ if (isinstance(element, mojom.NamedValue) or
+ isinstance(element, mojom.Constant)):
return ConstantStyle(element.name)
raise Exception("Unexpected element: " % element)
@@ -92,57 +88,36 @@ def GetPackage(module):
# Default package.
return "org.chromium.mojom." + module.namespace
-def GetNameForKind(context, kind):
+def GetNameForKind(kind):
def _GetNameHierachy(kind):
hierachy = []
if kind.parent_kind:
hierachy = _GetNameHierachy(kind.parent_kind)
- hierachy.append(GetNameForElement(kind))
+ hierachy.append(kind.name)
return hierachy
- module = context.resolve('module')
- elements = []
- if GetPackage(module) != GetPackage(kind.module):
- elements += [GetPackage(kind.module)]
+ elements = [GetPackage(kind.module)]
elements += _GetNameHierachy(kind)
return '.'.join(elements)
-@contextfilter
-def GetJavaType(context, kind):
+def GetJavaType(kind):
if isinstance(kind, (mojom.Struct, mojom.Interface)):
- return GetNameForKind(context, kind)
- if isinstance(kind, mojom.InterfaceRequest):
- return GetNameForKind(context, kind.kind)
- if isinstance(kind, (mojom.Array, mojom.FixedArray)):
- return "%s[]" % GetJavaType(context, kind.kind)
+ return GetNameForKind(kind)
+ if isinstance(kind, mojom.Array):
+ return "%s[]" % GetJavaType(kind.kind)
if isinstance(kind, mojom.Enum):
return "int"
return _spec_to_java_type[kind.spec]
-def IsHandle(kind):
- return kind.spec[0] == 'h'
-
-@contextfilter
-def DefaultValue(context, field):
- assert field.default
- if isinstance(field.kind, mojom.Struct):
- assert field.default == "default"
- return "new %s()" % GetJavaType(context, field.kind)
- return "(%s) %s" % (GetJavaType(context, field.kind),
- ExpressionToText(context, field.default))
-
-@contextfilter
-def ExpressionToText(context, token):
+def ExpressionToText(token):
def _TranslateNamedValue(named_value):
entity_name = GetNameForElement(named_value)
if named_value.parent_kind:
- return GetJavaType(context, named_value.parent_kind) + '.' + entity_name
+ return GetJavaType(named_value.parent_kind) + '.' + entity_name
# Handle the case where named_value is a module level constant:
if not isinstance(named_value, mojom.EnumValue):
entity_name = (GetConstantsMainEntityName(named_value.module) + '.' +
entity_name)
- if GetPackage(named_value.module) == GetPackage(context.resolve('module')):
- return entity_name
return GetPackage(named_value.module) + '.' + entity_name
if isinstance(token, mojom.NamedValue):
@@ -163,9 +138,7 @@ def GetConstantsMainEntityName(module):
class Generator(generator.Generator):
java_filters = {
- "default_value": DefaultValue,
"expression_to_text": ExpressionToText,
- "is_handle": IsHandle,
"java_type": GetJavaType,
"name": GetNameForElement,
}
@@ -176,19 +149,15 @@ class Generator(generator.Generator):
"package": GetPackage(self.module),
}
- @UseJinja("java_templates/enum.java.tmpl", filters=java_filters)
+ @UseJinja("java_templates/enum.java.tmpl", filters=java_filters,
+ lstrip_blocks=True, trim_blocks=True)
def GenerateEnumSource(self, enum):
exports = self.GetJinjaExports()
exports.update({"enum": enum})
return exports
- @UseJinja("java_templates/struct.java.tmpl", filters=java_filters)
- def GenerateStructSource(self, struct):
- exports = self.GetJinjaExports()
- exports.update({"struct": struct})
- return exports
-
- @UseJinja("java_templates/constants.java.tmpl", filters=java_filters)
+ @UseJinja("java_templates/constants.java.tmpl", filters=java_filters,
+ lstrip_blocks=True, trim_blocks=True)
def GenerateConstantsSource(self, module):
exports = self.GetJinjaExports()
exports.update({"main_entity": GetConstantsMainEntityName(module),
@@ -213,21 +182,6 @@ class Generator(generator.Generator):
self.Write(self.GenerateEnumSource(enum),
"%s.java" % GetNameForElement(enum))
- for struct in self.module.structs:
- self.Write(self.GenerateStructSource(struct),
- "%s.java" % GetNameForElement(struct))
-
if self.module.constants:
self.Write(self.GenerateConstantsSource(self.module),
"%s.java" % GetConstantsMainEntityName(self.module))
-
- def GetJinjaParameters(self):
- return {
- 'lstrip_blocks': True,
- 'trim_blocks': True,
- }
-
- def GetGlobals(self):
- return {
- 'module': self.module,
- }
diff --git a/mojo/public/tools/bindings/mojom_bindings_generator.gypi b/mojo/public/tools/bindings/mojom_bindings_generator.gypi
index 5ba097894b..cbc77d8822 100644
--- a/mojo/public/tools/bindings/mojom_bindings_generator.gypi
+++ b/mojo/public/tools/bindings/mojom_bindings_generator.gypi
@@ -43,8 +43,7 @@
'<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/enum_definition.tmpl',
'<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/enum.java.tmpl',
'<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/header.java.tmpl',
- '<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/struct_definition.tmpl',
- '<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/struct.java.tmpl',
+ '<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/java_macros.tmpl',
'<(DEPTH)/mojo/public/tools/bindings/generators/js_templates/enum_definition.tmpl',
'<(DEPTH)/mojo/public/tools/bindings/generators/js_templates/interface_definition.tmpl',
'<(DEPTH)/mojo/public/tools/bindings/generators/js_templates/module.js.tmpl',
diff --git a/mojo/public/tools/bindings/pylib/mojom/generate/generator.py b/mojo/public/tools/bindings/pylib/mojom/generate/generator.py
index 9eb90a9b74..aea5de8e5c 100644
--- a/mojo/public/tools/bindings/pylib/mojom/generate/generator.py
+++ b/mojo/public/tools/bindings/pylib/mojom/generate/generator.py
@@ -97,11 +97,3 @@ class Generator(object):
def GenerateFiles(self, args):
raise NotImplementedError("Subclasses must override/implement this method")
-
- def GetJinjaParameters(self):
- """Returns default constructor parameters for the jinja environment."""
- return {}
-
- def GetGlobals(self):
- """Returns global mappings for the template generation."""
- return {}
diff --git a/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py b/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py
index adf9cf78a6..86ea0eac0b 100644
--- a/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py
+++ b/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py
@@ -30,16 +30,12 @@ except ImportError:
import jinja2
-def ApplyTemplate(mojo_generator, base_dir, path_to_template, params,
- filters=None, **kwargs):
+def ApplyTemplate(base_dir, path_to_template, params, filters=None, **kwargs):
template_directory, template_name = os.path.split(path_to_template)
path_to_templates = os.path.join(base_dir, template_directory)
loader = jinja2.FileSystemLoader([path_to_templates])
- final_kwargs = dict(mojo_generator.GetJinjaParameters())
- final_kwargs.update(kwargs)
jinja_env = jinja2.Environment(loader=loader, keep_trailing_newline=True,
- **final_kwargs)
- jinja_env.globals.update(mojo_generator.GetGlobals());
+ **kwargs)
if filters:
jinja_env.filters.update(filters)
template = jinja_env.get_template(template_name)
@@ -52,8 +48,7 @@ def UseJinja(path_to_template, **kwargs):
def RealDecorator(generator):
def GeneratorInternal(*args, **kwargs2):
parameters = generator(*args, **kwargs2)
- return ApplyTemplate(args[0], base_dir, path_to_template, parameters,
- **kwargs)
+ return ApplyTemplate(base_dir, path_to_template, parameters, **kwargs)
GeneratorInternal.func_name = generator.func_name
return GeneratorInternal
return RealDecorator