summaryrefslogtreecommitdiffstats
path: root/mojo
diff options
context:
space:
mode:
authoryzshen <yzshen@chromium.org>2016-03-17 11:45:30 -0700
committerCommit bot <commit-bot@chromium.org>2016-03-17 18:48:04 +0000
commite56136366dd27d1764c01203565447b53197733f (patch)
tree1ad5389b99bc25a471ceecbd603a88a52be85cf0 /mojo
parent45bfe025690492eeafe4f1a689cab5c2bcb91b2a (diff)
downloadchromium_src-e56136366dd27d1764c01203565447b53197733f.zip
chromium_src-e56136366dd27d1764c01203565447b53197733f.tar.gz
chromium_src-e56136366dd27d1764c01203565447b53197733f.tar.bz2
Mojo C++ bindigns: fix generated namespace when variant is specified.
This fixed the issue that enum generated code didn't work when variant is specified. This is a quick fix, we need more fundermental improvement for variant handling code. BUG=595791 Review URL: https://codereview.chromium.org/1811853004 Cr-Commit-Position: refs/heads/master@{#381760}
Diffstat (limited to 'mojo')
-rw-r--r--mojo/mojo_edk_tests.gyp1
-rw-r--r--mojo/mojo_public.gyp11
-rw-r--r--mojo/public/cpp/bindings/tests/BUILD.gn1
-rw-r--r--mojo/public/interfaces/bindings/tests/BUILD.gn10
-rw-r--r--mojo/public/interfaces/bindings/tests/test_variant.mojom10
-rw-r--r--mojo/public/tools/bindings/generators/mojom_cpp_generator.py21
6 files changed, 48 insertions, 6 deletions
diff --git a/mojo/mojo_edk_tests.gyp b/mojo/mojo_edk_tests.gyp
index 01d01c4..e6c82c9 100644
--- a/mojo/mojo_edk_tests.gyp
+++ b/mojo/mojo_edk_tests.gyp
@@ -55,6 +55,7 @@
'mojo_public.gyp:mojo_public_test_interfaces_chromium',
'mojo_public.gyp:mojo_public_test_interfaces_struct_traits',
'mojo_public.gyp:mojo_public_test_utils',
+ 'mojo_public.gyp:mojo_public_test_variant',
],
'sources': [
'public/cpp/bindings/tests/array_common_test.h',
diff --git a/mojo/mojo_public.gyp b/mojo/mojo_public.gyp
index bb12a5b..8c5961d 100644
--- a/mojo/mojo_public.gyp
+++ b/mojo/mojo_public.gyp
@@ -508,6 +508,17 @@
],
'includes': [ 'mojom_bindings_generator.gypi' ],
},
+ {
+ 'target_name': 'mojo_public_test_variant',
+ 'type': 'static_library',
+ 'variables': {
+ 'mojom_variant': 'test_variant',
+ },
+ 'sources': [
+ 'public/interfaces/bindings/tests/test_variant.mojom',
+ ],
+ 'includes': [ 'mojom_bindings_generator.gypi' ],
+ },
],
'conditions': [
['OS == "android"', {
diff --git a/mojo/public/cpp/bindings/tests/BUILD.gn b/mojo/public/cpp/bindings/tests/BUILD.gn
index 043ed74..c002d76 100644
--- a/mojo/public/cpp/bindings/tests/BUILD.gn
+++ b/mojo/public/cpp/bindings/tests/BUILD.gn
@@ -67,6 +67,7 @@ source_set("tests") {
"//mojo/public/interfaces/bindings/tests:test_interfaces_chromium",
"//mojo/public/interfaces/bindings/tests:test_interfaces_experimental",
"//mojo/public/interfaces/bindings/tests:test_struct_traits_interfaces",
+ "//mojo/public/interfaces/bindings/tests:test_variant",
"//testing/gtest",
]
}
diff --git a/mojo/public/interfaces/bindings/tests/BUILD.gn b/mojo/public/interfaces/bindings/tests/BUILD.gn
index 18ea38b..57ab1ff 100644
--- a/mojo/public/interfaces/bindings/tests/BUILD.gn
+++ b/mojo/public/interfaces/bindings/tests/BUILD.gn
@@ -116,3 +116,13 @@ mojom("test_wtf_types_blink") {
for_blink = true
variant = "blink"
}
+
+mojom("test_variant") {
+ testonly = true
+
+ sources = [
+ "test_variant.mojom",
+ ]
+
+ variant = "variant_test"
+}
diff --git a/mojo/public/interfaces/bindings/tests/test_variant.mojom b/mojo/public/interfaces/bindings/tests/test_variant.mojom
new file mode 100644
index 0000000..318b6a7
--- /dev/null
+++ b/mojo/public/interfaces/bindings/tests/test_variant.mojom
@@ -0,0 +1,10 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+module mojo.test;
+
+enum TestEnum {
+ VALUE1,
+ VALUE2
+};
diff --git a/mojo/public/tools/bindings/generators/mojom_cpp_generator.py b/mojo/public/tools/bindings/generators/mojom_cpp_generator.py
index 40b5acc..184c8bb 100644
--- a/mojo/public/tools/bindings/generators/mojom_cpp_generator.py
+++ b/mojo/public/tools/bindings/generators/mojom_cpp_generator.py
@@ -46,6 +46,9 @@ _kind_to_cpp_literal_suffix = {
# generator library code so that filters can use the generator as context.
_current_typemap = {}
_for_blink = False
+# TODO(rockot, yzshen): The variant handling is kind of a hack currently. Make
+# it right.
+_variant = None
def ConstantValue(constant):
@@ -66,7 +69,8 @@ def DefaultValue(field):
def NamespaceToArray(namespace):
return namespace.split(".") if namespace else []
-def GetNamePartsForKind(kind, add_same_module_namespaces, internal):
+def GetNamePartsForKind(kind, add_same_module_namespaces, add_variant,
+ internal):
def MapKindName_(kind):
if not internal:
return kind.name
@@ -80,8 +84,11 @@ def GetNamePartsForKind(kind, add_same_module_namespaces, internal):
parts = []
if kind.imported_from:
parts.extend(NamespaceToArray(kind.imported_from["namespace"]))
- elif hasattr(kind, "module") and add_same_module_namespaces:
- parts.extend(NamespaceToArray(kind.module.namespace))
+ elif add_same_module_namespaces:
+ if hasattr(kind, "module"):
+ parts.extend(NamespaceToArray(kind.module.namespace))
+ if _variant and add_variant:
+ parts.append(_variant)
if internal:
parts.append("internal")
if kind.parent_kind:
@@ -90,17 +97,17 @@ def GetNamePartsForKind(kind, add_same_module_namespaces, internal):
return parts
def GetNameForKind(kind, internal=False):
- parts = GetNamePartsForKind(kind, False, internal)
+ parts = GetNamePartsForKind(kind, False, False, internal)
return "::".join(parts)
def GetQualifiedNameForKind(kind, internal=False):
# Always start with an empty part to force a leading "::" on output.
parts = [""]
- parts.extend(GetNamePartsForKind(kind, True, internal))
+ parts.extend(GetNamePartsForKind(kind, True, True, internal))
return "::".join(parts)
def GetFullMojomNameForKind(kind):
- parts = GetNamePartsForKind(kind, True, False)
+ parts = GetNamePartsForKind(kind, True, False, False)
return ".".join(parts)
def IsTypemappedKind(kind):
@@ -559,6 +566,8 @@ class Generator(generator.Generator):
_current_typemap = self.typemap
global _for_blink
_for_blink = self.for_blink
+ global _variant
+ _variant = self.variant
suffix = "-%s" % self.variant if self.variant else ""
self.Write(self.GenerateModuleHeader(),
self.MatchMojomFilePath("%s%s.h" % (self.module.name, suffix)))