| // mojo/public/tools/fuzzers/fuzz.mojom-shared.h is auto generated by mojom_bindings_generator.py, do not edit |
| |
| // Copyright 2016 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef MOJO_PUBLIC_TOOLS_FUZZERS_FUZZ_MOJOM_SHARED_H_ |
| #define MOJO_PUBLIC_TOOLS_FUZZERS_FUZZ_MOJOM_SHARED_H_ |
| |
| #include <stdint.h> |
| |
| #include <functional> |
| #include <iosfwd> |
| #include <type_traits> |
| #include <utility> |
| #include "mojo/public/cpp/bindings/array_data_view.h" |
| #include "mojo/public/cpp/bindings/enum_traits.h" |
| #include "mojo/public/cpp/bindings/interface_data_view.h" |
| #include "mojo/public/cpp/bindings/lib/bindings_internal.h" |
| #include "mojo/public/cpp/bindings/lib/serialization.h" |
| #include "mojo/public/cpp/bindings/map_data_view.h" |
| #include "mojo/public/cpp/bindings/string_data_view.h" |
| |
| #include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h" |
| |
| #include "mojo/public/tools/fuzzers/fuzz.mojom-shared-internal.h" |
| #include "mojo/public/cpp/bindings/lib/interface_serialization.h" |
| #include "mojo/public/cpp/system/data_pipe.h" |
| |
| |
| |
| #ifdef KYTHE_IS_RUNNING |
| #pragma kythe_inline_metadata "Metadata comment" |
| #endif |
| |
| |
| namespace fuzz::mojom { |
| class FuzzDummyStructDataView; |
| |
| class FuzzStructDataView; |
| |
| class FuzzUnionDataView; |
| |
| |
| } // fuzz::mojom |
| |
| namespace mojo { |
| namespace internal { |
| |
| template <> |
| struct MojomTypeTraits<::fuzz::mojom::FuzzDummyStructDataView> { |
| using Data = ::fuzz::mojom::internal::FuzzDummyStruct_Data; |
| using DataAsArrayElement = Pointer<Data>; |
| static constexpr MojomTypeCategory category = MojomTypeCategory::kStruct; |
| }; |
| |
| template <> |
| struct MojomTypeTraits<::fuzz::mojom::FuzzStructDataView> { |
| using Data = ::fuzz::mojom::internal::FuzzStruct_Data; |
| using DataAsArrayElement = Pointer<Data>; |
| static constexpr MojomTypeCategory category = MojomTypeCategory::kStruct; |
| }; |
| |
| template <> |
| struct MojomTypeTraits<::fuzz::mojom::FuzzUnionDataView> { |
| using Data = ::fuzz::mojom::internal::FuzzUnion_Data; |
| using DataAsArrayElement = Data; |
| static constexpr MojomTypeCategory category = MojomTypeCategory::kUnion; |
| }; |
| |
| } // namespace internal |
| } // namespace mojo |
| |
| |
| namespace fuzz::mojom { |
| |
| |
| // @generated_from: fuzz.mojom.FuzzEnum |
| enum class FuzzEnum : int32_t { |
| |
| // @generated_from: fuzz.mojom.FuzzEnum.FUZZ_VALUE0 |
| FUZZ_VALUE0 = 0, |
| |
| // @generated_from: fuzz.mojom.FuzzEnum.FUZZ_VALUE1 |
| FUZZ_VALUE1 = 1, |
| |
| // @generated_from: fuzz.mojom.FuzzEnum.FUZZ_VALUE2 |
| FUZZ_VALUE2 = 2, |
| kMinValue = 0, |
| kMaxValue = 2, |
| }; |
| |
| std::ostream& operator<<(std::ostream& os, FuzzEnum value); |
| inline bool IsKnownEnumValue(FuzzEnum value) { |
| return internal::FuzzEnum_Data::IsKnownValue( |
| static_cast<int32_t>(value)); |
| } |
| // Interface base classes. They are used for type safety check. |
| class FuzzDummyInterfaceInterfaceBase {}; |
| |
| using FuzzDummyInterfacePtrDataView = |
| mojo::InterfacePtrDataView<FuzzDummyInterfaceInterfaceBase>; |
| using FuzzDummyInterfaceRequestDataView = |
| mojo::InterfaceRequestDataView<FuzzDummyInterfaceInterfaceBase>; |
| using FuzzDummyInterfaceAssociatedPtrInfoDataView = |
| mojo::AssociatedInterfacePtrInfoDataView<FuzzDummyInterfaceInterfaceBase>; |
| using FuzzDummyInterfaceAssociatedRequestDataView = |
| mojo::AssociatedInterfaceRequestDataView<FuzzDummyInterfaceInterfaceBase>; |
| class FuzzInterfaceInterfaceBase {}; |
| |
| using FuzzInterfacePtrDataView = |
| mojo::InterfacePtrDataView<FuzzInterfaceInterfaceBase>; |
| using FuzzInterfaceRequestDataView = |
| mojo::InterfaceRequestDataView<FuzzInterfaceInterfaceBase>; |
| using FuzzInterfaceAssociatedPtrInfoDataView = |
| mojo::AssociatedInterfacePtrInfoDataView<FuzzInterfaceInterfaceBase>; |
| using FuzzInterfaceAssociatedRequestDataView = |
| mojo::AssociatedInterfaceRequestDataView<FuzzInterfaceInterfaceBase>; |
| |
| |
| class FuzzDummyStructDataView { |
| public: |
| FuzzDummyStructDataView() = default; |
| |
| FuzzDummyStructDataView( |
| internal::FuzzDummyStruct_Data* data, |
| mojo::Message* message) |
| : data_(data) {} |
| |
| bool is_null() const { return !data_; } |
| int8_t dummy() const { |
| return data_->dummy; |
| } |
| private: |
| internal::FuzzDummyStruct_Data* data_ = nullptr; |
| }; |
| |
| |
| class FuzzStructDataView { |
| public: |
| FuzzStructDataView() = default; |
| |
| FuzzStructDataView( |
| internal::FuzzStruct_Data* data, |
| mojo::Message* message) |
| : data_(data), message_(message) {} |
| |
| bool is_null() const { return !data_; } |
| bool fuzz_bool() const { |
| return data_->fuzz_bool; |
| } |
| int8_t fuzz_int8() const { |
| return data_->fuzz_int8; |
| } |
| uint8_t fuzz_uint8() const { |
| return data_->fuzz_uint8; |
| } |
| int16_t fuzz_int16() const { |
| return data_->fuzz_int16; |
| } |
| uint16_t fuzz_uint16() const { |
| return data_->fuzz_uint16; |
| } |
| int32_t fuzz_int32() const { |
| return data_->fuzz_int32; |
| } |
| uint32_t fuzz_uint32() const { |
| return data_->fuzz_uint32; |
| } |
| int64_t fuzz_int64() const { |
| return data_->fuzz_int64; |
| } |
| uint64_t fuzz_uint64() const { |
| return data_->fuzz_uint64; |
| } |
| float fuzz_float() const { |
| return data_->fuzz_float; |
| } |
| double fuzz_double() const { |
| return data_->fuzz_double; |
| } |
| inline void GetFuzzStringDataView( |
| mojo::StringDataView* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadFuzzString(UserType* output) { |
| |
| auto* pointer = data_->fuzz_string.Get(); |
| return mojo::internal::Deserialize<mojo::StringDataView>( |
| pointer, output, message_); |
| } |
| inline void GetFuzzBoolArrayDataView( |
| mojo::ArrayDataView<bool>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadFuzzBoolArray(UserType* output) { |
| |
| auto* pointer = data_->fuzz_bool_array.Get(); |
| return mojo::internal::Deserialize<mojo::ArrayDataView<bool>>( |
| pointer, output, message_); |
| } |
| inline void GetFuzzPrimitiveArrayDataView( |
| mojo::ArrayDataView<int8_t>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadFuzzPrimitiveArray(UserType* output) { |
| |
| auto* pointer = data_->fuzz_primitive_array.Get(); |
| return mojo::internal::Deserialize<mojo::ArrayDataView<int8_t>>( |
| pointer, output, message_); |
| } |
| inline void GetFuzzPrimitiveMapDataView( |
| mojo::MapDataView<mojo::StringDataView, int8_t>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadFuzzPrimitiveMap(UserType* output) { |
| |
| auto* pointer = data_->fuzz_primitive_map.Get(); |
| return mojo::internal::Deserialize<mojo::MapDataView<mojo::StringDataView, int8_t>>( |
| pointer, output, message_); |
| } |
| inline void GetFuzzArrayMapDataView( |
| mojo::MapDataView<mojo::StringDataView, mojo::ArrayDataView<mojo::StringDataView>>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadFuzzArrayMap(UserType* output) { |
| |
| auto* pointer = data_->fuzz_array_map.Get(); |
| return mojo::internal::Deserialize<mojo::MapDataView<mojo::StringDataView, mojo::ArrayDataView<mojo::StringDataView>>>( |
| pointer, output, message_); |
| } |
| inline void GetFuzzUnionMapDataView( |
| mojo::MapDataView<FuzzEnum, FuzzUnionDataView>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadFuzzUnionMap(UserType* output) { |
| |
| auto* pointer = data_->fuzz_union_map.Get(); |
| return mojo::internal::Deserialize<mojo::MapDataView<::fuzz::mojom::FuzzEnum, ::fuzz::mojom::FuzzUnionDataView>>( |
| pointer, output, message_); |
| } |
| inline void GetFuzzUnionArrayDataView( |
| mojo::ArrayDataView<FuzzUnionDataView>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadFuzzUnionArray(UserType* output) { |
| |
| auto* pointer = data_->fuzz_union_array.Get(); |
| return mojo::internal::Deserialize<mojo::ArrayDataView<::fuzz::mojom::FuzzUnionDataView>>( |
| pointer, output, message_); |
| } |
| inline void GetFuzzStructArrayDataView( |
| mojo::ArrayDataView<FuzzStructDataView>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadFuzzStructArray(UserType* output) { |
| |
| auto* pointer = data_->fuzz_struct_array.Get(); |
| return mojo::internal::Deserialize<mojo::ArrayDataView<::fuzz::mojom::FuzzStructDataView>>( |
| pointer, output, message_); |
| } |
| inline void GetFuzzNullableArrayDataView( |
| mojo::ArrayDataView<int8_t>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadFuzzNullableArray(UserType* output) { |
| |
| static_assert( |
| mojo::internal::IsValidUserTypeForOptionalValue< |
| mojo::ArrayDataView<int8_t>, UserType>(), |
| "Attempting to read the optional `fuzz_nullable_array` field into a type which " |
| "cannot represent a null value. Either wrap the destination object " |
| "with std::optional, ensure that any corresponding " |
| "{Struct/Union/Array/String}Traits define the necessary IsNull and " |
| "SetToNull methods, or use `MaybeReadFuzzNullableArray` instead " |
| "of `ReadFuzzNullableArray if you're fine with null values being " |
| "silently ignored in this case."); |
| auto* pointer = data_->fuzz_nullable_array.Get(); |
| return mojo::internal::Deserialize<mojo::ArrayDataView<int8_t>>( |
| pointer, output, message_); |
| } |
| inline void GetFuzzComplexDataView( |
| mojo::ArrayDataView<mojo::MapDataView<FuzzEnum, mojo::MapDataView<int8_t, mojo::ArrayDataView<FuzzStructDataView>>>>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadFuzzComplex(UserType* output) { |
| |
| static_assert( |
| mojo::internal::IsValidUserTypeForOptionalValue< |
| mojo::ArrayDataView<mojo::MapDataView<::fuzz::mojom::FuzzEnum, mojo::MapDataView<int8_t, mojo::ArrayDataView<::fuzz::mojom::FuzzStructDataView>>>>, UserType>(), |
| "Attempting to read the optional `fuzz_complex` field into a type which " |
| "cannot represent a null value. Either wrap the destination object " |
| "with std::optional, ensure that any corresponding " |
| "{Struct/Union/Array/String}Traits define the necessary IsNull and " |
| "SetToNull methods, or use `MaybeReadFuzzComplex` instead " |
| "of `ReadFuzzComplex if you're fine with null values being " |
| "silently ignored in this case."); |
| auto* pointer = data_->fuzz_complex.Get(); |
| return mojo::internal::Deserialize<mojo::ArrayDataView<mojo::MapDataView<::fuzz::mojom::FuzzEnum, mojo::MapDataView<int8_t, mojo::ArrayDataView<::fuzz::mojom::FuzzStructDataView>>>>>( |
| pointer, output, message_); |
| } |
| private: |
| internal::FuzzStruct_Data* data_ = nullptr; |
| mojo::Message* message_ = nullptr; |
| }; |
| |
| |
| class FuzzUnionDataView { |
| public: |
| using Tag = internal::FuzzUnion_Data::FuzzUnion_Tag; |
| |
| FuzzUnionDataView() = default; |
| |
| FuzzUnionDataView( |
| internal::FuzzUnion_Data* data, |
| mojo::Message* message) |
| : data_(data), message_(message) {} |
| |
| bool is_null() const { |
| // For inlined unions, |data_| is always non-null. In that case we need to |
| // check |data_->is_null()|. |
| return !data_ || data_->is_null(); |
| } |
| |
| Tag tag() const { return data_->tag; } |
| bool is_fuzz_bool() const { return data_->tag == Tag::kFuzzBool; } |
| bool fuzz_bool() const { |
| CHECK(is_fuzz_bool()); |
| return data_->data.f_fuzz_bool; |
| } |
| bool is_fuzz_int8() const { return data_->tag == Tag::kFuzzInt8; } |
| int8_t fuzz_int8() const { |
| CHECK(is_fuzz_int8()); |
| return data_->data.f_fuzz_int8; |
| } |
| bool is_fuzz_uint8() const { return data_->tag == Tag::kFuzzUint8; } |
| uint8_t fuzz_uint8() const { |
| CHECK(is_fuzz_uint8()); |
| return data_->data.f_fuzz_uint8; |
| } |
| bool is_fuzz_int16() const { return data_->tag == Tag::kFuzzInt16; } |
| int16_t fuzz_int16() const { |
| CHECK(is_fuzz_int16()); |
| return data_->data.f_fuzz_int16; |
| } |
| bool is_fuzz_uint16() const { return data_->tag == Tag::kFuzzUint16; } |
| uint16_t fuzz_uint16() const { |
| CHECK(is_fuzz_uint16()); |
| return data_->data.f_fuzz_uint16; |
| } |
| bool is_fuzz_int32() const { return data_->tag == Tag::kFuzzInt32; } |
| int32_t fuzz_int32() const { |
| CHECK(is_fuzz_int32()); |
| return data_->data.f_fuzz_int32; |
| } |
| bool is_fuzz_uint32() const { return data_->tag == Tag::kFuzzUint32; } |
| uint32_t fuzz_uint32() const { |
| CHECK(is_fuzz_uint32()); |
| return data_->data.f_fuzz_uint32; |
| } |
| bool is_fuzz_int64() const { return data_->tag == Tag::kFuzzInt64; } |
| int64_t fuzz_int64() const { |
| CHECK(is_fuzz_int64()); |
| return data_->data.f_fuzz_int64; |
| } |
| bool is_fuzz_uint64() const { return data_->tag == Tag::kFuzzUint64; } |
| uint64_t fuzz_uint64() const { |
| CHECK(is_fuzz_uint64()); |
| return data_->data.f_fuzz_uint64; |
| } |
| bool is_fuzz_float() const { return data_->tag == Tag::kFuzzFloat; } |
| float fuzz_float() const { |
| CHECK(is_fuzz_float()); |
| return data_->data.f_fuzz_float; |
| } |
| bool is_fuzz_double() const { return data_->tag == Tag::kFuzzDouble; } |
| double fuzz_double() const { |
| CHECK(is_fuzz_double()); |
| return data_->data.f_fuzz_double; |
| } |
| bool is_fuzz_string() const { return data_->tag == Tag::kFuzzString; } |
| inline void GetFuzzStringDataView( |
| mojo::StringDataView* output) const; |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadFuzzString(UserType* output) const { |
| |
| CHECK(is_fuzz_string()); |
| return mojo::internal::Deserialize<mojo::StringDataView>( |
| data_->data.f_fuzz_string.Get(), output, message_); |
| } |
| bool is_fuzz_bool_array() const { return data_->tag == Tag::kFuzzBoolArray; } |
| inline void GetFuzzBoolArrayDataView( |
| mojo::ArrayDataView<bool>* output) const; |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadFuzzBoolArray(UserType* output) const { |
| |
| CHECK(is_fuzz_bool_array()); |
| return mojo::internal::Deserialize<mojo::ArrayDataView<bool>>( |
| data_->data.f_fuzz_bool_array.Get(), output, message_); |
| } |
| bool is_fuzz_primitive_array() const { return data_->tag == Tag::kFuzzPrimitiveArray; } |
| inline void GetFuzzPrimitiveArrayDataView( |
| mojo::ArrayDataView<int8_t>* output) const; |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadFuzzPrimitiveArray(UserType* output) const { |
| |
| CHECK(is_fuzz_primitive_array()); |
| return mojo::internal::Deserialize<mojo::ArrayDataView<int8_t>>( |
| data_->data.f_fuzz_primitive_array.Get(), output, message_); |
| } |
| bool is_fuzz_struct_array() const { return data_->tag == Tag::kFuzzStructArray; } |
| inline void GetFuzzStructArrayDataView( |
| mojo::ArrayDataView<FuzzDummyStructDataView>* output) const; |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadFuzzStructArray(UserType* output) const { |
| |
| CHECK(is_fuzz_struct_array()); |
| return mojo::internal::Deserialize<mojo::ArrayDataView<::fuzz::mojom::FuzzDummyStructDataView>>( |
| data_->data.f_fuzz_struct_array.Get(), output, message_); |
| } |
| bool is_fuzz_primitive_map() const { return data_->tag == Tag::kFuzzPrimitiveMap; } |
| inline void GetFuzzPrimitiveMapDataView( |
| mojo::MapDataView<mojo::StringDataView, int8_t>* output) const; |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadFuzzPrimitiveMap(UserType* output) const { |
| |
| CHECK(is_fuzz_primitive_map()); |
| return mojo::internal::Deserialize<mojo::MapDataView<mojo::StringDataView, int8_t>>( |
| data_->data.f_fuzz_primitive_map.Get(), output, message_); |
| } |
| bool is_fuzz_array_map() const { return data_->tag == Tag::kFuzzArrayMap; } |
| inline void GetFuzzArrayMapDataView( |
| mojo::MapDataView<mojo::StringDataView, mojo::ArrayDataView<mojo::StringDataView>>* output) const; |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadFuzzArrayMap(UserType* output) const { |
| |
| CHECK(is_fuzz_array_map()); |
| return mojo::internal::Deserialize<mojo::MapDataView<mojo::StringDataView, mojo::ArrayDataView<mojo::StringDataView>>>( |
| data_->data.f_fuzz_array_map.Get(), output, message_); |
| } |
| bool is_fuzz_struct_map() const { return data_->tag == Tag::kFuzzStructMap; } |
| inline void GetFuzzStructMapDataView( |
| mojo::MapDataView<mojo::StringDataView, FuzzDummyStructDataView>* output) const; |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadFuzzStructMap(UserType* output) const { |
| |
| CHECK(is_fuzz_struct_map()); |
| return mojo::internal::Deserialize<mojo::MapDataView<mojo::StringDataView, ::fuzz::mojom::FuzzDummyStructDataView>>( |
| data_->data.f_fuzz_struct_map.Get(), output, message_); |
| } |
| bool is_fuzz_union_map() const { return data_->tag == Tag::kFuzzUnionMap; } |
| inline void GetFuzzUnionMapDataView( |
| mojo::MapDataView<FuzzEnum, FuzzUnionDataView>* output) const; |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadFuzzUnionMap(UserType* output) const { |
| |
| CHECK(is_fuzz_union_map()); |
| return mojo::internal::Deserialize<mojo::MapDataView<::fuzz::mojom::FuzzEnum, ::fuzz::mojom::FuzzUnionDataView>>( |
| data_->data.f_fuzz_union_map.Get(), output, message_); |
| } |
| bool is_fuzz_complex() const { return data_->tag == Tag::kFuzzComplex; } |
| inline void GetFuzzComplexDataView( |
| mojo::ArrayDataView<mojo::MapDataView<FuzzEnum, mojo::MapDataView<int8_t, mojo::ArrayDataView<FuzzUnionDataView>>>>* output) const; |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadFuzzComplex(UserType* output) const { |
| |
| static_assert( |
| mojo::internal::IsValidUserTypeForOptionalValue< |
| mojo::ArrayDataView<mojo::MapDataView<::fuzz::mojom::FuzzEnum, mojo::MapDataView<int8_t, mojo::ArrayDataView<::fuzz::mojom::FuzzUnionDataView>>>>, UserType>(), |
| "Attempting to read the optional `fuzz_complex` field into a type which " |
| "cannot represent a null value. Either wrap the destination object " |
| "with std::optional, ensure that any corresponding " |
| "{Struct/Union/Array/String}Traits define the necessary IsNull and " |
| "SetToNull methods, or use `MaybeReadFuzzComplex` instead " |
| "of `ReadFuzzComplex if you're fine with null values being " |
| "silently ignored in this case."); |
| CHECK(is_fuzz_complex()); |
| return mojo::internal::Deserialize<mojo::ArrayDataView<mojo::MapDataView<::fuzz::mojom::FuzzEnum, mojo::MapDataView<int8_t, mojo::ArrayDataView<::fuzz::mojom::FuzzUnionDataView>>>>>( |
| data_->data.f_fuzz_complex.Get(), output, message_); |
| } |
| |
| private: |
| internal::FuzzUnion_Data* data_ = nullptr; |
| mojo::Message* message_ = nullptr; |
| }; |
| |
| |
| |
| } // fuzz::mojom |
| |
| namespace std { |
| |
| template <> |
| struct hash<::fuzz::mojom::FuzzEnum> |
| : public mojo::internal::EnumHashImpl<::fuzz::mojom::FuzzEnum> {}; |
| |
| } // namespace std |
| |
| namespace mojo { |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::fuzz::mojom::FuzzEnum, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = EnumTraits<::fuzz::mojom::FuzzEnum, UserType>; |
| |
| static void Serialize(UserType input, int32_t* output) { |
| *output = static_cast<int32_t>(Traits::ToMojom(input)); |
| } |
| |
| static bool Deserialize(int32_t input, UserType* output) { |
| return Traits::FromMojom(::mojo::internal::ToKnownEnumValueHelper( |
| static_cast<::fuzz::mojom::FuzzEnum>(input)), output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::fuzz::mojom::FuzzDummyStructDataView, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = StructTraits<::fuzz::mojom::FuzzDummyStructDataView, UserType>; |
| |
| static void Serialize( |
| MaybeConstUserType& input, |
| mojo::internal::MessageFragment<::fuzz::mojom::internal::FuzzDummyStruct_Data>& fragment) { |
| if (CallIsNullIfExists<Traits>(input)) |
| return; |
| fragment.Allocate(); |
| fragment->dummy = Traits::dummy(input); |
| } |
| |
| static bool Deserialize(::fuzz::mojom::internal::FuzzDummyStruct_Data* input, |
| UserType* output, |
| Message* message) { |
| if (!input) |
| return CallSetToNullIfExists<Traits>(output); |
| |
| ::fuzz::mojom::FuzzDummyStructDataView data_view(input, message); |
| return Traits::Read(data_view, output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::fuzz::mojom::FuzzStructDataView, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = StructTraits<::fuzz::mojom::FuzzStructDataView, UserType>; |
| |
| static void Serialize( |
| MaybeConstUserType& input, |
| mojo::internal::MessageFragment<::fuzz::mojom::internal::FuzzStruct_Data>& fragment) { |
| if (CallIsNullIfExists<Traits>(input)) |
| return; |
| fragment.Allocate(); |
| fragment->fuzz_bool = Traits::fuzz_bool(input); |
| fragment->fuzz_int8 = Traits::fuzz_int8(input); |
| fragment->fuzz_uint8 = Traits::fuzz_uint8(input); |
| fragment->fuzz_int16 = Traits::fuzz_int16(input); |
| fragment->fuzz_uint16 = Traits::fuzz_uint16(input); |
| fragment->fuzz_int32 = Traits::fuzz_int32(input); |
| fragment->fuzz_uint32 = Traits::fuzz_uint32(input); |
| fragment->fuzz_int64 = Traits::fuzz_int64(input); |
| fragment->fuzz_uint64 = Traits::fuzz_uint64(input); |
| fragment->fuzz_float = Traits::fuzz_float(input); |
| fragment->fuzz_double = Traits::fuzz_double(input); |
| decltype(Traits::fuzz_string(input)) in_fuzz_string = Traits::fuzz_string(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->fuzz_string)::BaseType> fuzz_string_fragment( |
| fragment.message()); |
| mojo::internal::Serialize<mojo::StringDataView>( |
| in_fuzz_string, fuzz_string_fragment); |
| fragment->fuzz_string.Set( |
| fuzz_string_fragment.is_null() ? nullptr : fuzz_string_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->fuzz_string.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null fuzz_string in FuzzStruct struct"); |
| decltype(Traits::fuzz_bool_array(input)) in_fuzz_bool_array = Traits::fuzz_bool_array(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->fuzz_bool_array)::BaseType> |
| fuzz_bool_array_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& fuzz_bool_array_validate_params = |
| mojo::internal::GetArrayValidator<0, false, nullptr>(); |
| mojo::internal::Serialize<mojo::ArrayDataView<bool>>( |
| in_fuzz_bool_array, fuzz_bool_array_fragment, &fuzz_bool_array_validate_params); |
| fragment->fuzz_bool_array.Set( |
| fuzz_bool_array_fragment.is_null() ? nullptr : fuzz_bool_array_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->fuzz_bool_array.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null fuzz_bool_array in FuzzStruct struct"); |
| decltype(Traits::fuzz_primitive_array(input)) in_fuzz_primitive_array = Traits::fuzz_primitive_array(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->fuzz_primitive_array)::BaseType> |
| fuzz_primitive_array_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& fuzz_primitive_array_validate_params = |
| mojo::internal::GetArrayValidator<0, false, nullptr>(); |
| mojo::internal::Serialize<mojo::ArrayDataView<int8_t>>( |
| in_fuzz_primitive_array, fuzz_primitive_array_fragment, &fuzz_primitive_array_validate_params); |
| fragment->fuzz_primitive_array.Set( |
| fuzz_primitive_array_fragment.is_null() ? nullptr : fuzz_primitive_array_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->fuzz_primitive_array.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null fuzz_primitive_array in FuzzStruct struct"); |
| decltype(Traits::fuzz_primitive_map(input)) in_fuzz_primitive_map = Traits::fuzz_primitive_map(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->fuzz_primitive_map)::BaseType> |
| fuzz_primitive_map_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& fuzz_primitive_map_validate_params = |
| mojo::internal::GetMapValidator<*&mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>(), *&mojo::internal::GetArrayValidator<0, false, nullptr>()>(); |
| mojo::internal::Serialize<mojo::MapDataView<mojo::StringDataView, int8_t>>( |
| in_fuzz_primitive_map, fuzz_primitive_map_fragment, &fuzz_primitive_map_validate_params); |
| fragment->fuzz_primitive_map.Set( |
| fuzz_primitive_map_fragment.is_null() ? nullptr : fuzz_primitive_map_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->fuzz_primitive_map.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null fuzz_primitive_map in FuzzStruct struct"); |
| decltype(Traits::fuzz_array_map(input)) in_fuzz_array_map = Traits::fuzz_array_map(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->fuzz_array_map)::BaseType> |
| fuzz_array_map_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& fuzz_array_map_validate_params = |
| mojo::internal::GetMapValidator<*&mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>(), *&mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>()>()>(); |
| mojo::internal::Serialize<mojo::MapDataView<mojo::StringDataView, mojo::ArrayDataView<mojo::StringDataView>>>( |
| in_fuzz_array_map, fuzz_array_map_fragment, &fuzz_array_map_validate_params); |
| fragment->fuzz_array_map.Set( |
| fuzz_array_map_fragment.is_null() ? nullptr : fuzz_array_map_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->fuzz_array_map.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null fuzz_array_map in FuzzStruct struct"); |
| decltype(Traits::fuzz_union_map(input)) in_fuzz_union_map = Traits::fuzz_union_map(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->fuzz_union_map)::BaseType> |
| fuzz_union_map_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& fuzz_union_map_validate_params = |
| mojo::internal::GetMapValidator<*&mojo::internal::GetArrayOfEnumsValidator<0, false, ::fuzz::mojom::internal::FuzzEnum_Data::Validate>(), *&mojo::internal::GetArrayValidator<0, false, nullptr>()>(); |
| mojo::internal::Serialize<mojo::MapDataView<::fuzz::mojom::FuzzEnum, ::fuzz::mojom::FuzzUnionDataView>>( |
| in_fuzz_union_map, fuzz_union_map_fragment, &fuzz_union_map_validate_params); |
| fragment->fuzz_union_map.Set( |
| fuzz_union_map_fragment.is_null() ? nullptr : fuzz_union_map_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->fuzz_union_map.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null fuzz_union_map in FuzzStruct struct"); |
| decltype(Traits::fuzz_union_array(input)) in_fuzz_union_array = Traits::fuzz_union_array(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->fuzz_union_array)::BaseType> |
| fuzz_union_array_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& fuzz_union_array_validate_params = |
| mojo::internal::GetArrayValidator<0, false, nullptr>(); |
| mojo::internal::Serialize<mojo::ArrayDataView<::fuzz::mojom::FuzzUnionDataView>>( |
| in_fuzz_union_array, fuzz_union_array_fragment, &fuzz_union_array_validate_params); |
| fragment->fuzz_union_array.Set( |
| fuzz_union_array_fragment.is_null() ? nullptr : fuzz_union_array_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->fuzz_union_array.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null fuzz_union_array in FuzzStruct struct"); |
| decltype(Traits::fuzz_struct_array(input)) in_fuzz_struct_array = Traits::fuzz_struct_array(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->fuzz_struct_array)::BaseType> |
| fuzz_struct_array_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& fuzz_struct_array_validate_params = |
| mojo::internal::GetArrayValidator<0, false, nullptr>(); |
| mojo::internal::Serialize<mojo::ArrayDataView<::fuzz::mojom::FuzzStructDataView>>( |
| in_fuzz_struct_array, fuzz_struct_array_fragment, &fuzz_struct_array_validate_params); |
| fragment->fuzz_struct_array.Set( |
| fuzz_struct_array_fragment.is_null() ? nullptr : fuzz_struct_array_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->fuzz_struct_array.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null fuzz_struct_array in FuzzStruct struct"); |
| decltype(Traits::fuzz_nullable_array(input)) in_fuzz_nullable_array = Traits::fuzz_nullable_array(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->fuzz_nullable_array)::BaseType> |
| fuzz_nullable_array_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& fuzz_nullable_array_validate_params = |
| mojo::internal::GetArrayValidator<0, false, nullptr>(); |
| mojo::internal::Serialize<mojo::ArrayDataView<int8_t>>( |
| in_fuzz_nullable_array, fuzz_nullable_array_fragment, &fuzz_nullable_array_validate_params); |
| fragment->fuzz_nullable_array.Set( |
| fuzz_nullable_array_fragment.is_null() ? nullptr : fuzz_nullable_array_fragment.data()); |
| decltype(Traits::fuzz_complex(input)) in_fuzz_complex = Traits::fuzz_complex(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->fuzz_complex)::BaseType> |
| fuzz_complex_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& fuzz_complex_validate_params = |
| mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetMapValidator<*&mojo::internal::GetArrayOfEnumsValidator<0, false, ::fuzz::mojom::internal::FuzzEnum_Data::Validate>(), *&mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetMapValidator<*&mojo::internal::GetArrayValidator<0, false, nullptr>(), *&mojo::internal::GetArrayValidator<0, true, &mojo::internal::GetArrayValidator<0, true, nullptr>()>()>()>()>()>(); |
| mojo::internal::Serialize<mojo::ArrayDataView<mojo::MapDataView<::fuzz::mojom::FuzzEnum, mojo::MapDataView<int8_t, mojo::ArrayDataView<::fuzz::mojom::FuzzStructDataView>>>>>( |
| in_fuzz_complex, fuzz_complex_fragment, &fuzz_complex_validate_params); |
| fragment->fuzz_complex.Set( |
| fuzz_complex_fragment.is_null() ? nullptr : fuzz_complex_fragment.data()); |
| } |
| |
| static bool Deserialize(::fuzz::mojom::internal::FuzzStruct_Data* input, |
| UserType* output, |
| Message* message) { |
| if (!input) |
| return CallSetToNullIfExists<Traits>(output); |
| |
| ::fuzz::mojom::FuzzStructDataView data_view(input, message); |
| return Traits::Read(data_view, output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::fuzz::mojom::FuzzUnionDataView, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = UnionTraits<::fuzz::mojom::FuzzUnionDataView, UserType>; |
| |
| static void Serialize(MaybeConstUserType& input, |
| MessageFragment<::fuzz::mojom::internal::FuzzUnion_Data>& fragment, |
| bool inlined) { |
| if (CallIsNullIfExists<Traits>(input)) { |
| if (inlined) |
| fragment->set_null(); |
| return; |
| } |
| |
| if (!inlined) |
| fragment.Allocate(); |
| |
| // TODO(azani): Handle unknown and objects. |
| // Set the not-null flag. |
| fragment->size = kUnionDataSize; |
| fragment->tag = Traits::GetTag(input); |
| switch (fragment->tag) { |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzBool: { |
| decltype(Traits::fuzz_bool(input)) |
| in_fuzz_bool = Traits::fuzz_bool(input); |
| fragment->data.f_fuzz_bool = in_fuzz_bool; |
| break; |
| } |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzInt8: { |
| decltype(Traits::fuzz_int8(input)) |
| in_fuzz_int8 = Traits::fuzz_int8(input); |
| fragment->data.f_fuzz_int8 = in_fuzz_int8; |
| break; |
| } |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzUint8: { |
| decltype(Traits::fuzz_uint8(input)) |
| in_fuzz_uint8 = Traits::fuzz_uint8(input); |
| fragment->data.f_fuzz_uint8 = in_fuzz_uint8; |
| break; |
| } |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzInt16: { |
| decltype(Traits::fuzz_int16(input)) |
| in_fuzz_int16 = Traits::fuzz_int16(input); |
| fragment->data.f_fuzz_int16 = in_fuzz_int16; |
| break; |
| } |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzUint16: { |
| decltype(Traits::fuzz_uint16(input)) |
| in_fuzz_uint16 = Traits::fuzz_uint16(input); |
| fragment->data.f_fuzz_uint16 = in_fuzz_uint16; |
| break; |
| } |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzInt32: { |
| decltype(Traits::fuzz_int32(input)) |
| in_fuzz_int32 = Traits::fuzz_int32(input); |
| fragment->data.f_fuzz_int32 = in_fuzz_int32; |
| break; |
| } |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzUint32: { |
| decltype(Traits::fuzz_uint32(input)) |
| in_fuzz_uint32 = Traits::fuzz_uint32(input); |
| fragment->data.f_fuzz_uint32 = in_fuzz_uint32; |
| break; |
| } |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzInt64: { |
| decltype(Traits::fuzz_int64(input)) |
| in_fuzz_int64 = Traits::fuzz_int64(input); |
| fragment->data.f_fuzz_int64 = in_fuzz_int64; |
| break; |
| } |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzUint64: { |
| decltype(Traits::fuzz_uint64(input)) |
| in_fuzz_uint64 = Traits::fuzz_uint64(input); |
| fragment->data.f_fuzz_uint64 = in_fuzz_uint64; |
| break; |
| } |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzFloat: { |
| decltype(Traits::fuzz_float(input)) |
| in_fuzz_float = Traits::fuzz_float(input); |
| fragment->data.f_fuzz_float = in_fuzz_float; |
| break; |
| } |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzDouble: { |
| decltype(Traits::fuzz_double(input)) |
| in_fuzz_double = Traits::fuzz_double(input); |
| fragment->data.f_fuzz_double = in_fuzz_double; |
| break; |
| } |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzString: { |
| decltype(Traits::fuzz_string(input)) |
| in_fuzz_string = Traits::fuzz_string(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->data.f_fuzz_string)::BaseType> |
| value_fragment(fragment.message()); |
| mojo::internal::Serialize<mojo::StringDataView>( |
| in_fuzz_string, value_fragment); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| value_fragment.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null fuzz_string in FuzzUnion union"); |
| fragment->data.f_fuzz_string.Set( |
| value_fragment.is_null() ? nullptr : value_fragment.data()); |
| break; |
| } |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzBoolArray: { |
| decltype(Traits::fuzz_bool_array(input)) |
| in_fuzz_bool_array = Traits::fuzz_bool_array(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->data.f_fuzz_bool_array)::BaseType> |
| value_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& fuzz_bool_array_validate_params = |
| mojo::internal::GetArrayValidator<0, false, nullptr>(); |
| mojo::internal::Serialize<mojo::ArrayDataView<bool>>( |
| in_fuzz_bool_array, value_fragment, &fuzz_bool_array_validate_params); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| value_fragment.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null fuzz_bool_array in FuzzUnion union"); |
| fragment->data.f_fuzz_bool_array.Set( |
| value_fragment.is_null() ? nullptr : value_fragment.data()); |
| break; |
| } |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzPrimitiveArray: { |
| decltype(Traits::fuzz_primitive_array(input)) |
| in_fuzz_primitive_array = Traits::fuzz_primitive_array(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->data.f_fuzz_primitive_array)::BaseType> |
| value_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& fuzz_primitive_array_validate_params = |
| mojo::internal::GetArrayValidator<0, false, nullptr>(); |
| mojo::internal::Serialize<mojo::ArrayDataView<int8_t>>( |
| in_fuzz_primitive_array, value_fragment, &fuzz_primitive_array_validate_params); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| value_fragment.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null fuzz_primitive_array in FuzzUnion union"); |
| fragment->data.f_fuzz_primitive_array.Set( |
| value_fragment.is_null() ? nullptr : value_fragment.data()); |
| break; |
| } |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzStructArray: { |
| decltype(Traits::fuzz_struct_array(input)) |
| in_fuzz_struct_array = Traits::fuzz_struct_array(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->data.f_fuzz_struct_array)::BaseType> |
| value_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& fuzz_struct_array_validate_params = |
| mojo::internal::GetArrayValidator<0, false, nullptr>(); |
| mojo::internal::Serialize<mojo::ArrayDataView<::fuzz::mojom::FuzzDummyStructDataView>>( |
| in_fuzz_struct_array, value_fragment, &fuzz_struct_array_validate_params); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| value_fragment.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null fuzz_struct_array in FuzzUnion union"); |
| fragment->data.f_fuzz_struct_array.Set( |
| value_fragment.is_null() ? nullptr : value_fragment.data()); |
| break; |
| } |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzPrimitiveMap: { |
| decltype(Traits::fuzz_primitive_map(input)) |
| in_fuzz_primitive_map = Traits::fuzz_primitive_map(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->data.f_fuzz_primitive_map)::BaseType> |
| value_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& fuzz_primitive_map_validate_params = |
| mojo::internal::GetMapValidator<*&mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>(), *&mojo::internal::GetArrayValidator<0, false, nullptr>()>(); |
| mojo::internal::Serialize<mojo::MapDataView<mojo::StringDataView, int8_t>>( |
| in_fuzz_primitive_map, value_fragment, &fuzz_primitive_map_validate_params); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| value_fragment.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null fuzz_primitive_map in FuzzUnion union"); |
| fragment->data.f_fuzz_primitive_map.Set( |
| value_fragment.is_null() ? nullptr : value_fragment.data()); |
| break; |
| } |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzArrayMap: { |
| decltype(Traits::fuzz_array_map(input)) |
| in_fuzz_array_map = Traits::fuzz_array_map(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->data.f_fuzz_array_map)::BaseType> |
| value_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& fuzz_array_map_validate_params = |
| mojo::internal::GetMapValidator<*&mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>(), *&mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>()>()>(); |
| mojo::internal::Serialize<mojo::MapDataView<mojo::StringDataView, mojo::ArrayDataView<mojo::StringDataView>>>( |
| in_fuzz_array_map, value_fragment, &fuzz_array_map_validate_params); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| value_fragment.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null fuzz_array_map in FuzzUnion union"); |
| fragment->data.f_fuzz_array_map.Set( |
| value_fragment.is_null() ? nullptr : value_fragment.data()); |
| break; |
| } |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzStructMap: { |
| decltype(Traits::fuzz_struct_map(input)) |
| in_fuzz_struct_map = Traits::fuzz_struct_map(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->data.f_fuzz_struct_map)::BaseType> |
| value_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& fuzz_struct_map_validate_params = |
| mojo::internal::GetMapValidator<*&mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>(), *&mojo::internal::GetArrayValidator<0, false, nullptr>()>(); |
| mojo::internal::Serialize<mojo::MapDataView<mojo::StringDataView, ::fuzz::mojom::FuzzDummyStructDataView>>( |
| in_fuzz_struct_map, value_fragment, &fuzz_struct_map_validate_params); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| value_fragment.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null fuzz_struct_map in FuzzUnion union"); |
| fragment->data.f_fuzz_struct_map.Set( |
| value_fragment.is_null() ? nullptr : value_fragment.data()); |
| break; |
| } |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzUnionMap: { |
| decltype(Traits::fuzz_union_map(input)) |
| in_fuzz_union_map = Traits::fuzz_union_map(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->data.f_fuzz_union_map)::BaseType> |
| value_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& fuzz_union_map_validate_params = |
| mojo::internal::GetMapValidator<*&mojo::internal::GetArrayOfEnumsValidator<0, false, ::fuzz::mojom::internal::FuzzEnum_Data::Validate>(), *&mojo::internal::GetArrayValidator<0, false, nullptr>()>(); |
| mojo::internal::Serialize<mojo::MapDataView<::fuzz::mojom::FuzzEnum, ::fuzz::mojom::FuzzUnionDataView>>( |
| in_fuzz_union_map, value_fragment, &fuzz_union_map_validate_params); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| value_fragment.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null fuzz_union_map in FuzzUnion union"); |
| fragment->data.f_fuzz_union_map.Set( |
| value_fragment.is_null() ? nullptr : value_fragment.data()); |
| break; |
| } |
| case ::fuzz::mojom::FuzzUnionDataView::Tag::kFuzzComplex: { |
| decltype(Traits::fuzz_complex(input)) |
| in_fuzz_complex = Traits::fuzz_complex(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->data.f_fuzz_complex)::BaseType> |
| value_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& fuzz_complex_validate_params = |
| mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetMapValidator<*&mojo::internal::GetArrayOfEnumsValidator<0, false, ::fuzz::mojom::internal::FuzzEnum_Data::Validate>(), *&mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetMapValidator<*&mojo::internal::GetArrayValidator<0, false, nullptr>(), *&mojo::internal::GetArrayValidator<0, true, &mojo::internal::GetArrayValidator<0, true, nullptr>()>()>()>()>()>(); |
| mojo::internal::Serialize<mojo::ArrayDataView<mojo::MapDataView<::fuzz::mojom::FuzzEnum, mojo::MapDataView<int8_t, mojo::ArrayDataView<::fuzz::mojom::FuzzUnionDataView>>>>>( |
| in_fuzz_complex, value_fragment, &fuzz_complex_validate_params); |
| fragment->data.f_fuzz_complex.Set( |
| value_fragment.is_null() ? nullptr : value_fragment.data()); |
| break; |
| } |
| } |
| } |
| |
| static bool Deserialize(::fuzz::mojom::internal::FuzzUnion_Data* input, |
| UserType* output, |
| Message* message) { |
| if (!input || input->is_null()) |
| return CallSetToNullIfExists<Traits>(output); |
| |
| ::fuzz::mojom::FuzzUnionDataView data_view(input, message); |
| return Traits::Read(data_view, output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| } // namespace mojo |
| |
| |
| namespace fuzz::mojom { |
| |
| |
| |
| inline void FuzzStructDataView::GetFuzzStringDataView( |
| mojo::StringDataView* output) { |
| auto pointer = data_->fuzz_string.Get(); |
| *output = mojo::StringDataView(pointer, message_); |
| } |
| inline void FuzzStructDataView::GetFuzzBoolArrayDataView( |
| mojo::ArrayDataView<bool>* output) { |
| auto pointer = data_->fuzz_bool_array.Get(); |
| *output = mojo::ArrayDataView<bool>(pointer, message_); |
| } |
| inline void FuzzStructDataView::GetFuzzPrimitiveArrayDataView( |
| mojo::ArrayDataView<int8_t>* output) { |
| auto pointer = data_->fuzz_primitive_array.Get(); |
| *output = mojo::ArrayDataView<int8_t>(pointer, message_); |
| } |
| inline void FuzzStructDataView::GetFuzzPrimitiveMapDataView( |
| mojo::MapDataView<mojo::StringDataView, int8_t>* output) { |
| auto pointer = data_->fuzz_primitive_map.Get(); |
| *output = mojo::MapDataView<mojo::StringDataView, int8_t>(pointer, message_); |
| } |
| inline void FuzzStructDataView::GetFuzzArrayMapDataView( |
| mojo::MapDataView<mojo::StringDataView, mojo::ArrayDataView<mojo::StringDataView>>* output) { |
| auto pointer = data_->fuzz_array_map.Get(); |
| *output = mojo::MapDataView<mojo::StringDataView, mojo::ArrayDataView<mojo::StringDataView>>(pointer, message_); |
| } |
| inline void FuzzStructDataView::GetFuzzUnionMapDataView( |
| mojo::MapDataView<FuzzEnum, FuzzUnionDataView>* output) { |
| auto pointer = data_->fuzz_union_map.Get(); |
| *output = mojo::MapDataView<FuzzEnum, FuzzUnionDataView>(pointer, message_); |
| } |
| inline void FuzzStructDataView::GetFuzzUnionArrayDataView( |
| mojo::ArrayDataView<FuzzUnionDataView>* output) { |
| auto pointer = data_->fuzz_union_array.Get(); |
| *output = mojo::ArrayDataView<FuzzUnionDataView>(pointer, message_); |
| } |
| inline void FuzzStructDataView::GetFuzzStructArrayDataView( |
| mojo::ArrayDataView<FuzzStructDataView>* output) { |
| auto pointer = data_->fuzz_struct_array.Get(); |
| *output = mojo::ArrayDataView<FuzzStructDataView>(pointer, message_); |
| } |
| inline void FuzzStructDataView::GetFuzzNullableArrayDataView( |
| mojo::ArrayDataView<int8_t>* output) { |
| auto pointer = data_->fuzz_nullable_array.Get(); |
| *output = mojo::ArrayDataView<int8_t>(pointer, message_); |
| } |
| inline void FuzzStructDataView::GetFuzzComplexDataView( |
| mojo::ArrayDataView<mojo::MapDataView<FuzzEnum, mojo::MapDataView<int8_t, mojo::ArrayDataView<FuzzStructDataView>>>>* output) { |
| auto pointer = data_->fuzz_complex.Get(); |
| *output = mojo::ArrayDataView<mojo::MapDataView<FuzzEnum, mojo::MapDataView<int8_t, mojo::ArrayDataView<FuzzStructDataView>>>>(pointer, message_); |
| } |
| |
| |
| inline void FuzzUnionDataView::GetFuzzStringDataView( |
| mojo::StringDataView* output) const { |
| CHECK(is_fuzz_string()); |
| *output = mojo::StringDataView(data_->data.f_fuzz_string.Get(), message_); |
| } |
| inline void FuzzUnionDataView::GetFuzzBoolArrayDataView( |
| mojo::ArrayDataView<bool>* output) const { |
| CHECK(is_fuzz_bool_array()); |
| *output = mojo::ArrayDataView<bool>(data_->data.f_fuzz_bool_array.Get(), message_); |
| } |
| inline void FuzzUnionDataView::GetFuzzPrimitiveArrayDataView( |
| mojo::ArrayDataView<int8_t>* output) const { |
| CHECK(is_fuzz_primitive_array()); |
| *output = mojo::ArrayDataView<int8_t>(data_->data.f_fuzz_primitive_array.Get(), message_); |
| } |
| inline void FuzzUnionDataView::GetFuzzStructArrayDataView( |
| mojo::ArrayDataView<FuzzDummyStructDataView>* output) const { |
| CHECK(is_fuzz_struct_array()); |
| *output = mojo::ArrayDataView<FuzzDummyStructDataView>(data_->data.f_fuzz_struct_array.Get(), message_); |
| } |
| inline void FuzzUnionDataView::GetFuzzPrimitiveMapDataView( |
| mojo::MapDataView<mojo::StringDataView, int8_t>* output) const { |
| CHECK(is_fuzz_primitive_map()); |
| *output = mojo::MapDataView<mojo::StringDataView, int8_t>(data_->data.f_fuzz_primitive_map.Get(), message_); |
| } |
| inline void FuzzUnionDataView::GetFuzzArrayMapDataView( |
| mojo::MapDataView<mojo::StringDataView, mojo::ArrayDataView<mojo::StringDataView>>* output) const { |
| CHECK(is_fuzz_array_map()); |
| *output = mojo::MapDataView<mojo::StringDataView, mojo::ArrayDataView<mojo::StringDataView>>(data_->data.f_fuzz_array_map.Get(), message_); |
| } |
| inline void FuzzUnionDataView::GetFuzzStructMapDataView( |
| mojo::MapDataView<mojo::StringDataView, FuzzDummyStructDataView>* output) const { |
| CHECK(is_fuzz_struct_map()); |
| *output = mojo::MapDataView<mojo::StringDataView, FuzzDummyStructDataView>(data_->data.f_fuzz_struct_map.Get(), message_); |
| } |
| inline void FuzzUnionDataView::GetFuzzUnionMapDataView( |
| mojo::MapDataView<FuzzEnum, FuzzUnionDataView>* output) const { |
| CHECK(is_fuzz_union_map()); |
| *output = mojo::MapDataView<FuzzEnum, FuzzUnionDataView>(data_->data.f_fuzz_union_map.Get(), message_); |
| } |
| inline void FuzzUnionDataView::GetFuzzComplexDataView( |
| mojo::ArrayDataView<mojo::MapDataView<FuzzEnum, mojo::MapDataView<int8_t, mojo::ArrayDataView<FuzzUnionDataView>>>>* output) const { |
| CHECK(is_fuzz_complex()); |
| *output = mojo::ArrayDataView<mojo::MapDataView<FuzzEnum, mojo::MapDataView<int8_t, mojo::ArrayDataView<FuzzUnionDataView>>>>(data_->data.f_fuzz_complex.Get(), message_); |
| } |
| |
| |
| } // fuzz::mojom |
| |
| // Declare TraceFormatTraits for enums, which should be defined in ::perfetto |
| // namespace. |
| |
| namespace perfetto { |
| |
| template <> |
| struct TraceFormatTraits<::fuzz::mojom::FuzzEnum> { |
| static void WriteIntoTrace(perfetto::TracedValue context, ::fuzz::mojom::FuzzEnum value); |
| }; |
| |
| } // namespace perfetto |
| |
| #endif // MOJO_PUBLIC_TOOLS_FUZZERS_FUZZ_MOJOM_SHARED_H_
|
|
|
| /* Metadata comment
|
| eyJ0eXBlIjogImt5dGhlMCIsICJtZXRhIjogW3sidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
|
| ZWdpbiI6IDIyNTAsICJlbmQiOiAyMjU4LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
|
| ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
|
| c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpFbnVtIn0sICJlZGdlIjog
|
| IiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJl
|
| Z2luIjogMjMyOCwgImVuZCI6IDIzMzksICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAi
|
| Y29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9z
|
| cmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6ekVudW0uRlVaWl9WQUxVRTAi
|
| fSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2Rl
|
| ZmluZXMiLCAiYmVnaW4iOiAyNDAyLCAiZW5kIjogMjQxMywgInZuYW1lIjogeyJsYW5ndWFnZSI6
|
| ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNo
|
| L2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6RW51bS5G
|
| VVpaX1ZBTFVFMSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6
|
| ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI0NzYsICJlbmQiOiAyNDg3LCAidm5hbWUiOiB7
|
| Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t
|
| L2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9t
|
| LkZ1enpFbnVtLkZVWlpfVkFMVUUyIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMi
|
| fV19
|
| */ |