chromium/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.h

// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_FENCED_FRAME_REDACTED_FENCED_FRAME_CONFIG_MOJOM_TRAITS_H_
#define THIRD_PARTY_BLINK_PUBLIC_COMMON_FENCED_FRAME_REDACTED_FENCED_FRAME_CONFIG_MOJOM_TRAITS_H_

#include "mojo/public/cpp/bindings/enum_traits.h"
#include "mojo/public/cpp/bindings/union_traits.h"
#include "third_party/blink/public/common/common_export.h"
#include "third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config.h"
#include "third_party/blink/public/mojom/fenced_frame/fenced_frame_config.mojom.h"

namespace mojo {

Prop;

template <>
struct BLINK_COMMON_EXPORT
    EnumTraits<blink::mojom::Opaque, blink::FencedFrame::Opaque> {};

template <>
struct BLINK_COMMON_EXPORT
    EnumTraits<blink::mojom::ReportingDestination,
               blink::FencedFrame::ReportingDestination> {};

template <>
struct BLINK_COMMON_EXPORT
    EnumTraits<blink::mojom::DeprecatedFencedFrameMode,
               blink::FencedFrame::DeprecatedFencedFrameMode> {};

template <>
struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::AdAuctionDataDataView,
                                        blink::FencedFrame::AdAuctionData> {};

template <>
struct BLINK_COMMON_EXPORT
    StructTraits<blink::mojom::SharedStorageBudgetMetadataDataView,
                 blink::FencedFrame::SharedStorageBudgetMetadata> {};

template <>
struct BLINK_COMMON_EXPORT
    StructTraits<blink::mojom::ParentPermissionsInfoDataView,
                 blink::FencedFrame::ParentPermissionsInfo> {};

template <>
class BLINK_COMMON_EXPORT
    UnionTraits<blink::mojom::PotentiallyOpaqueURLDataView, Prop<GURL>> {};

template <>
class BLINK_COMMON_EXPORT
    UnionTraits<blink::mojom::PotentiallyOpaqueSizeDataView, Prop<gfx::Size>> {};

template <>
class BLINK_COMMON_EXPORT
    UnionTraits<blink::mojom::PotentiallyOpaqueBoolDataView, Prop<bool>> {};

template <>
class BLINK_COMMON_EXPORT
    UnionTraits<blink::mojom::PotentiallyOpaqueAdAuctionDataDataView,
                Prop<blink::FencedFrame::AdAuctionData>> {};

template <>
class BLINK_COMMON_EXPORT UnionTraits<
    blink::mojom::PotentiallyOpaqueConfigVectorDataView,
    Prop<std::vector<blink::FencedFrame::RedactedFencedFrameConfig>>> {};

template <>
class BLINK_COMMON_EXPORT UnionTraits<
    blink::mojom::PotentiallyOpaqueSharedStorageBudgetMetadataDataView,
    Prop<blink::FencedFrame::SharedStorageBudgetMetadata>> {};

template <>
struct BLINK_COMMON_EXPORT
    StructTraits<blink::mojom::FencedFrameConfigDataView,
                 blink::FencedFrame::RedactedFencedFrameConfig> {};

template <>
struct BLINK_COMMON_EXPORT
    StructTraits<blink::mojom::FencedFramePropertiesDataView,
                 blink::FencedFrame::RedactedFencedFrameProperties> {};

}  // namespace mojo

#endif  // THIRD_PARTY_BLINK_PUBLIC_COMMON_FENCED_FRAME_REDACTED_FENCED_FRAME_CONFIG_MOJOM_TRAITS_H_