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

Unified Diff: third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_python_generator.py

Issue 1311043003: Update mojo sdk to rev c02a28868825edfa57ab77947b8cb15e741c5598 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 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: third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_python_generator.py
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_python_generator.py b/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_python_generator.py
index 1f726b6699a9bb31ba226dc39885df38006be90b..a12f5e1a19a27289ded2ce07c653d984a3419f7d 100644
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_python_generator.py
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_python_generator.py
@@ -146,7 +146,13 @@ def GetFieldType(kind, field=None):
arguments.append('nullable=True')
return '_descriptor.MapType(%s)' % ', '.join(arguments)
- if mojom.IsStructKind(kind) or mojom.IsUnionKind(kind):
+ if mojom.IsUnionKind(kind):
+ arguments = [ 'lambda: %s' % GetFullyQualifiedName(kind) ]
+ if mojom.IsNullableKind(kind):
+ arguments.append('nullable=True')
+ return '_descriptor.UnionType(%s)' % ', '.join(arguments)
+
+ if mojom.IsStructKind(kind):
arguments = [ 'lambda: %s' % GetFullyQualifiedName(kind) ]
if mojom.IsNullableKind(kind):
arguments.append('nullable=True')
@@ -169,15 +175,14 @@ def GetFieldType(kind, field=None):
return _kind_to_type[kind]
-def GetFieldDescriptor(packed_field):
- field = packed_field.field
+def GetFieldDescriptor(field, index, min_version):
class_name = 'SingleFieldGroup'
if field.kind == mojom.BOOL:
class_name = 'FieldDescriptor'
arguments = [ '%r' % GetNameForElement(field) ]
arguments.append(GetFieldType(field.kind, field))
- arguments.append(str(packed_field.index))
- arguments.append(str(packed_field.min_version))
+ arguments.append(str(index))
+ arguments.append(str(min_version))
if field.default:
if mojom.IsStructKind(field.kind):
arguments.append('default_value=True')
@@ -185,12 +190,19 @@ def GetFieldDescriptor(packed_field):
arguments.append('default_value=%s' % ExpressionToText(field.default))
return '_descriptor.%s(%s)' % (class_name, ', '.join(arguments))
+def GetStructFieldDescriptor(packed_field):
+ return GetFieldDescriptor(
+ packed_field.field, packed_field.index, packed_field.min_version)
+
+def GetUnionFieldDescriptor(field):
+ return GetFieldDescriptor(field, field.ordinal, 0)
+
def GetFieldGroup(byte):
if byte.packed_fields[0].field.kind == mojom.BOOL:
- descriptors = map(GetFieldDescriptor, byte.packed_fields)
+ descriptors = map(GetStructFieldDescriptor, byte.packed_fields)
return '_descriptor.BooleanGroup([%s])' % ', '.join(descriptors)
assert len(byte.packed_fields) == 1
- return GetFieldDescriptor(byte.packed_fields[0])
+ return GetStructFieldDescriptor(byte.packed_fields[0])
def MojomToPythonImport(mojom):
return mojom.replace('.mojom', '_mojom')
@@ -200,6 +212,7 @@ class Generator(generator.Generator):
python_filters = {
'expression_to_text': ExpressionToText,
'field_group': GetFieldGroup,
+ 'union_field_descriptor': GetUnionFieldDescriptor,
'fully_qualified_name': GetFullyQualifiedName,
'name': GetNameForElement,
}
@@ -213,6 +226,7 @@ class Generator(generator.Generator):
'module': resolver.ResolveConstants(self.module, ExpressionToText),
'namespace': self.module.namespace,
'structs': self.GetStructs(),
+ 'unions': self.GetUnions(),
}
def GenerateFiles(self, args):

Powered by Google App Engine
This is Rietveld 408576698