#include "content/browser/interest_group/trusted_signals_fetcher.h"
#include <stdint.h>
#include <algorithm>
#include <bit>
#include <map>
#include <set>
#include <string>
#include <vector>
#include "base/check.h"
#include "base/containers/span.h"
#include "base/containers/span_reader.h"
#include "base/containers/span_writer.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "base/notimplemented.h"
#include "base/strings/stringprintf.h"
#include "base/time/time.h"
#include "base/types/expected.h"
#include "bidding_and_auction_server_key_fetcher.h"
#include "components/cbor/values.h"
#include "components/cbor/writer.h"
#include "content/common/content_export.h"
#include "content/services/auction_worklet/public/mojom/trusted_signals_cache.mojom.h"
#include "net/http/http_request_headers.h"
#include "net/third_party/quiche/src/quiche/oblivious_http/buffers/oblivious_http_request.h"
#include "net/third_party/quiche/src/quiche/oblivious_http/buffers/oblivious_http_response.h"
#include "net/third_party/quiche/src/quiche/oblivious_http/common/oblivious_http_header_key_config.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "services/data_decoder/public/cpp/data_decoder.h"
#include "services/network/public/cpp/resource_request.h"
#include "services/network/public/cpp/simple_url_loader.h"
#include "services/network/public/mojom/fetch_api.mojom.h"
#include "services/network/public/mojom/url_response_head.mojom.h"
#include "third_party/boringssl/src/include/openssl/hpke.h"
#include "url/gurl.h"
#include "url/origin.h"
namespace content {
namespace {
constexpr net::NetworkTrafficAnnotationTag kTrafficAnnotation = …;
constexpr std::array<std::string_view, 2> kAcceptCompression = …;
constexpr size_t kCompressionFormatSize = …;
constexpr size_t kCborStringLengthSize = …;
constexpr size_t kOhttpHeaderSize = …;
cbor::Value MakeArgument(std::string_view tag,
const std::set<std::string>& data) { … }
cbor::Value::MapValue BuildMapForBiddingPartition(
int compression_group_id,
const TrustedSignalsFetcher::BiddingPartition& bidding_partition) { … }
std::string CreateRequestBodyFromCbor(cbor::Value cbor_value) { … }
std::string BuildBiddingSignalsRequestBody(
const std::map<int, std::vector<TrustedSignalsFetcher::BiddingPartition>>&
compression_groups) { … }
}
TrustedSignalsFetcher::BiddingPartition::BiddingPartition() = default;
TrustedSignalsFetcher::BiddingPartition::BiddingPartition(BiddingPartition&&) =
default;
TrustedSignalsFetcher::BiddingPartition::~BiddingPartition() = default;
TrustedSignalsFetcher::BiddingPartition&
TrustedSignalsFetcher::BiddingPartition::operator=(BiddingPartition&&) =
default;
TrustedSignalsFetcher::ScoringPartition::ScoringPartition() = default;
TrustedSignalsFetcher::ScoringPartition::ScoringPartition(ScoringPartition&&) =
default;
TrustedSignalsFetcher::ScoringPartition::~ScoringPartition() = default;
TrustedSignalsFetcher::ScoringPartition&
TrustedSignalsFetcher::ScoringPartition::operator=(ScoringPartition&&) =
default;
TrustedSignalsFetcher::CompressionGroupResult::CompressionGroupResult() =
default;
TrustedSignalsFetcher::CompressionGroupResult::CompressionGroupResult(
CompressionGroupResult&&) = default;
TrustedSignalsFetcher::CompressionGroupResult::~CompressionGroupResult() =
default;
TrustedSignalsFetcher::CompressionGroupResult&
TrustedSignalsFetcher::CompressionGroupResult::operator=(
CompressionGroupResult&&) = default;
TrustedSignalsFetcher::TrustedSignalsFetcher() = default;
TrustedSignalsFetcher::~TrustedSignalsFetcher() = default;
void TrustedSignalsFetcher::FetchBiddingSignals(
network::mojom::URLLoaderFactory* url_loader_factory,
const GURL& trusted_bidding_signals_url,
const BiddingAndAuctionServerKey& bidding_and_auction_key,
const std::map<int, std::vector<BiddingPartition>>& compression_groups,
Callback callback) { … }
void TrustedSignalsFetcher::FetchScoringSignals(
network::mojom::URLLoaderFactory* url_loader_factory,
const GURL& trusted_scoring_signals_url,
const BiddingAndAuctionServerKey& bidding_and_auction_key,
const std::map<int, std::vector<ScoringPartition>>& compression_groups,
Callback callback) { … }
void TrustedSignalsFetcher::EncryptRequestBodyAndStart(
network::mojom::URLLoaderFactory* url_loader_factory,
const GURL& trusted_signals_url,
const BiddingAndAuctionServerKey& bidding_and_auction_key,
std::string plaintext_request_body,
Callback callback) { … }
void TrustedSignalsFetcher::OnRequestComplete(
std::unique_ptr<std::string> response_body) { … }
void TrustedSignalsFetcher::OnCborParsed(
data_decoder::DataDecoder::ValueOrError value_or_error) { … }
TrustedSignalsFetcher::SignalsFetchResult
TrustedSignalsFetcher::ParseDataDecoderResult(
data_decoder::DataDecoder::ValueOrError value_or_error) { … }
base::expected<TrustedSignalsFetcher::CompressionGroupResult, std::string>
TrustedSignalsFetcher::ParseCompressionGroup(
const base::Value& compression_group_value,
int& compression_group_id) { … }
std::string TrustedSignalsFetcher::CreateError(
const std::string& error_message) { … }
}