chromium/third_party/blink/renderer/core/html/fenced_frame/fenced_frame_config.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_RENDERER_CORE_HTML_FENCED_FRAME_FENCED_FRAME_CONFIG_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_HTML_FENCED_FRAME_FENCED_FRAME_CONFIG_H_

#include "base/notreached.h"
#include "base/types/pass_key.h"
#include "third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config.h"
#include "third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_html_fenced_frame_element.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_union_opaqueproperty_unsignedlong.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_union_opaqueproperty_usvstring.h"
#include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
#include "third_party/blink/renderer/platform/weborigin/kurl.h"

namespace blink {

// For base::PassKey<NavigationAuction>.
// TODO(crbug.com/1347953): Remove when the accessor is removed.
class NavigatorAuction;

// FencedFrameConfig class implements the FencedFrameConfig IDL. It specifies
// the fenced frame's inner properties. It can be returned by shared storage's
// selectURL() and FLEDGE's runAdAuction(), or directly constructed for
// navigation to non-opaque URLs. Please see the link for examples of installing
// FencedFrameConfig in fenced frames.
// https://github.com/WICG/fenced-frame/issues/48#issuecomment-1245809738.
class CORE_EXPORT FencedFrameConfig final : public ScriptWrappable {};

template <>
struct FencedFrameConfig::AttributeUnion<AtomicString> {};
template <>
struct FencedFrameConfig::AttributeUnion<uint32_t> {};

}  // namespace blink

#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_HTML_FENCED_FRAME_FENCED_FRAME_CONFIG_H_