blob: e6765fabd1437251235f16a31fca1394a1fe7e77 [file] [log] [blame]
// 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
*/