Index: mojo/public/tools/bindings/generators/mojom_cpp_generator.py |
diff --git a/mojo/public/tools/bindings/generators/mojom_cpp_generator.py b/mojo/public/tools/bindings/generators/mojom_cpp_generator.py |
index f4daef8f2321a8831ee2a4260efde15fa755067d..c6b0ade9e1df98aae20f963114dcc6b71f74a9bc 100644 |
--- a/mojo/public/tools/bindings/generators/mojom_cpp_generator.py |
+++ b/mojo/public/tools/bindings/generators/mojom_cpp_generator.py |
@@ -153,8 +153,17 @@ def GetCppPodType(kind): |
return _kind_to_cpp_type[kind] |
def GetCppWrapperType(kind): |
+ def _AddOptional(type_name): |
+ pattern = "WTF::Optional<%s>" if _for_blink else "base::Optional<%s>" |
+ return pattern % type_name |
+ |
if IsTypemappedKind(kind): |
- return GetNativeTypeName(kind) |
+ type_name = GetNativeTypeName(kind) |
+ if (mojom.IsNullableKind(kind) and |
+ not _current_typemap[GetFullMojomNameForKind(kind)][ |
+ "nullable_is_same_type"]): |
+ type_name = _AddOptional(type_name) |
+ return type_name |
if mojom.IsEnumKind(kind): |
return GetNameForKind(kind) |
if mojom.IsStructKind(kind) or mojom.IsUnionKind(kind): |
@@ -162,23 +171,19 @@ def GetCppWrapperType(kind): |
if mojom.IsArrayKind(kind): |
pattern = None |
if _use_new_wrapper_types: |
+ pattern = "WTF::Vector<%s>" if _for_blink else "std::vector<%s>" |
if mojom.IsNullableKind(kind): |
- pattern = ("WTF::Optional<WTF::Vector<%s>>" if _for_blink else |
- "base::Optional<std::vector<%s>>") |
- else: |
- pattern = "WTF::Vector<%s>" if _for_blink else "std::vector<%s>" |
+ pattern = _AddOptional(pattern) |
else: |
pattern = "mojo::WTFArray<%s>" if _for_blink else "mojo::Array<%s>" |
return pattern % GetCppWrapperType(kind.kind) |
if mojom.IsMapKind(kind): |
pattern = None |
if _use_new_wrapper_types: |
+ pattern = ("WTF::HashMap<%s, %s>" if _for_blink else |
+ "std::unordered_map<%s, %s>") |
if mojom.IsNullableKind(kind): |
- pattern = ("WTF::Optional<WTF::HashMap<%s, %s>>" if _for_blink else |
- "base::Optional<std::unordered_map<%s, %s>>") |
- else: |
- pattern = ("WTF::HashMap<%s, %s>" if _for_blink else |
- "std::unordered_map<%s, %s>") |
+ pattern = _AddOptional(pattern) |
else: |
pattern = "mojo::WTFMap<%s, %s>" if _for_blink else "mojo::Map<%s, %s>" |
return pattern % (GetCppWrapperType(kind.key_kind), |
@@ -196,8 +201,8 @@ def GetCppWrapperType(kind): |
return "WTF::String" |
if not _use_new_wrapper_types: |
return "mojo::String" |
- return ("base::Optional<std::string>" if mojom.IsNullableKind(kind) else |
- "std::string") |
+ type_name = "std::string" |
+ return _AddOptional(type_name) if mojom.IsNullableKind(kind) else type_name |
if mojom.IsGenericHandleKind(kind): |
return "mojo::ScopedHandle" |
if mojom.IsDataPipeConsumerKind(kind): |