#include "content/browser/fenced_frame/fenced_frame_url_mapping.h"
#include <cstring>
#include <map>
#include <optional>
#include <string>
#include "base/containers/contains.h"
#include "base/feature_list.h"
#include "base/functional/callback.h"
#include "base/memory/ref_counted.h"
#include "base/metrics/histogram_functions.h"
#include "base/not_fatal_until.h"
#include "base/strings/strcat.h"
#include "base/strings/string_number_conversions.h"
#include "content/browser/fenced_frame/fenced_frame_reporter.h"
#include "third_party/blink/public/common/features.h"
#include "third_party/blink/public/common/fenced_frame/fenced_frame_utils.h"
#include "third_party/blink/public/common/frame/fenced_frame_permissions_policies.h"
#include "third_party/blink/public/common/interest_group/ad_display_size.h"
#include "third_party/blink/public/common/interest_group/ad_display_size_utils.h"
#include "ui/display/screen.h"
#include "url/gurl.h"
namespace content {
namespace {
int AdSizeToPixels(double size, blink::AdSize::LengthUnit unit) { … }
gfx::Size AdSizeToGfxSize(const blink::AdSize& ad_size) { … }
GURL SubstituteSizeIntoURL(const blink::AdDescriptor& ad_descriptor) { … }
}
FencedFrameURLMapping::FencedFrameURLMapping() = default;
FencedFrameURLMapping::~FencedFrameURLMapping() = default;
FencedFrameURLMapping::SharedStorageURNMappingResult::
SharedStorageURNMappingResult() = default;
FencedFrameURLMapping::SharedStorageURNMappingResult::
SharedStorageURNMappingResult(
GURL mapped_url,
SharedStorageBudgetMetadata budget_metadata,
scoped_refptr<FencedFrameReporter> fenced_frame_reporter)
: … { … }
FencedFrameURLMapping::SharedStorageURNMappingResult::
~SharedStorageURNMappingResult() = default;
void FencedFrameURLMapping::ImportPendingAdComponents(
const std::vector<std::pair<GURL, FencedFrameConfig>>& components) { … }
std::optional<GURL> FencedFrameURLMapping::AddFencedFrameURLForTesting(
const GURL& url,
scoped_refptr<FencedFrameReporter> fenced_frame_reporter) { … }
void FencedFrameURLMapping::ClearMapForTesting() { … }
std::optional<FencedFrameURLMapping::UrnUuidToUrlMap::iterator>
FencedFrameURLMapping::AddMappingForUrl(const GURL& url) { … }
blink::FencedFrame::RedactedFencedFrameConfig
FencedFrameURLMapping::AssignFencedFrameURLAndInterestGroupInfo(
const GURL& urn_uuid,
std::optional<blink::AdSize> container_size,
const blink::AdDescriptor& ad_descriptor,
AdAuctionData ad_auction_data,
base::RepeatingClosure on_navigate_callback,
std::vector<blink::AdDescriptor> ad_component_descriptors,
scoped_refptr<FencedFrameReporter> fenced_frame_reporter) { … }
std::optional<GURL> FencedFrameURLMapping::GeneratePendingMappedURN() { … }
void FencedFrameURLMapping::ConvertFencedFrameURNToURL(
const GURL& urn_uuid,
MappingResultObserver* observer) { … }
void FencedFrameURLMapping::RemoveObserverForURN(
const GURL& urn_uuid,
MappingResultObserver* observer) { … }
std::optional<FencedFrameConfig>
FencedFrameURLMapping::OnSharedStorageURNMappingResultDetermined(
const GURL& urn_uuid,
const SharedStorageURNMappingResult& mapping_result) { … }
SharedStorageBudgetMetadata*
FencedFrameURLMapping::GetSharedStorageBudgetMetadataForTesting(
const GURL& urn_uuid) { … }
void FencedFrameURLMapping::SubstituteMappedURL(
const GURL& urn_uuid,
const std::vector<std::pair<std::string, std::string>>& substitutions) { … }
bool FencedFrameURLMapping::IsMapped(const GURL& urn_uuid) const { … }
bool FencedFrameURLMapping::IsPendingMapped(const GURL& urn_uuid) const { … }
bool FencedFrameURLMapping::IsFull() const { … }
}