diff options
author | yzshen <yzshen@chromium.org> | 2016-03-17 11:45:30 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-17 18:48:04 +0000 |
commit | e56136366dd27d1764c01203565447b53197733f (patch) | |
tree | 1ad5389b99bc25a471ceecbd603a88a52be85cf0 /mojo | |
parent | 45bfe025690492eeafe4f1a689cab5c2bcb91b2a (diff) | |
download | chromium_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.gyp | 1 | ||||
-rw-r--r-- | mojo/mojo_public.gyp | 11 | ||||
-rw-r--r-- | mojo/public/cpp/bindings/tests/BUILD.gn | 1 | ||||
-rw-r--r-- | mojo/public/interfaces/bindings/tests/BUILD.gn | 10 | ||||
-rw-r--r-- | mojo/public/interfaces/bindings/tests/test_variant.mojom | 10 | ||||
-rw-r--r-- | mojo/public/tools/bindings/generators/mojom_cpp_generator.py | 21 |
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))) |