1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
// 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.
#include "chrome/browser/first_party_sets/scoped_mock_first_party_sets_handler.h"
#include <optional>
#include <string>
#include "base/functional/callback.h"
#include "base/task/sequenced_task_runner.h"
#include "base/types/optional_ref.h"
#include "content/public/browser/first_party_sets_handler.h"
#include "net/first_party_sets/first_party_set_metadata.h"
#include "net/first_party_sets/first_party_sets_cache_filter.h"
#include "net/first_party_sets/first_party_sets_context_config.h"
#include "net/first_party_sets/global_first_party_sets.h"
namespace first_party_sets {
ScopedMockFirstPartySetsHandler::ScopedMockFirstPartySetsHandler()
: previous_(content::FirstPartySetsHandler::GetInstance()) {
content::FirstPartySetsHandler::SetInstanceForTesting(this);
}
ScopedMockFirstPartySetsHandler::~ScopedMockFirstPartySetsHandler() {
content::FirstPartySetsHandler::SetInstanceForTesting(previous_);
}
bool ScopedMockFirstPartySetsHandler::IsEnabled() const {
return true;
}
void ScopedMockFirstPartySetsHandler::SetPublicFirstPartySets(
const base::Version& version,
base::File sets_file) {}
std::optional<net::FirstPartySetEntry>
ScopedMockFirstPartySetsHandler::FindEntry(
const net::SchemefulSite& site,
const net::FirstPartySetsContextConfig& config) const {
return global_sets_.FindEntry(site, config);
}
void ScopedMockFirstPartySetsHandler::GetContextConfigForPolicy(
base::optional_ref<const base::Value::Dict> policy,
base::OnceCallback<void(net::FirstPartySetsContextConfig)> callback) {
if (invoke_callbacks_asynchronously_) {
base::SequencedTaskRunner::GetCurrentDefault()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), config_.Clone()));
return;
}
std::move(callback).Run(config_.Clone());
}
void ScopedMockFirstPartySetsHandler::ClearSiteDataOnChangedSetsForContext(
base::RepeatingCallback<content::BrowserContext*()> browser_context_getter,
const std::string& browser_context_id,
net::FirstPartySetsContextConfig context_config,
base::OnceCallback<void(net::FirstPartySetsContextConfig,
net::FirstPartySetsCacheFilter)> callback) {
if (invoke_callbacks_asynchronously_) {
base::SequencedTaskRunner::GetCurrentDefault()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), config_.Clone(),
cache_filter_.Clone()));
return;
}
std::move(callback).Run(config_.Clone(), cache_filter_.Clone());
}
void ScopedMockFirstPartySetsHandler::ComputeFirstPartySetMetadata(
const net::SchemefulSite& site,
base::optional_ref<const net::SchemefulSite> top_frame_site,
const net::FirstPartySetsContextConfig& config,
base::OnceCallback<void(net::FirstPartySetMetadata)> callback) {
net::FirstPartySetMetadata metadata =
global_sets_.ComputeMetadata(site, top_frame_site, config);
if (invoke_callbacks_asynchronously_) {
base::SequencedTaskRunner::GetCurrentDefault()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), std::move(metadata)));
return;
}
return std::move(callback).Run(std::move(metadata));
}
bool ScopedMockFirstPartySetsHandler::ForEachEffectiveSetEntry(
const net::FirstPartySetsContextConfig& config,
base::FunctionRef<bool(const net::SchemefulSite&,
const net::FirstPartySetEntry&)> f) const {
if (invoke_callbacks_asynchronously_) {
return false;
}
return global_sets_.ForEachEffectiveSetEntry(config, f);
}
void ScopedMockFirstPartySetsHandler::SetContextConfig(
net::FirstPartySetsContextConfig config) {
config_ = std::move(config);
}
void ScopedMockFirstPartySetsHandler::SetCacheFilter(
net::FirstPartySetsCacheFilter cache_filter) {
cache_filter_ = std::move(cache_filter);
}
void ScopedMockFirstPartySetsHandler::SetGlobalSets(
net::GlobalFirstPartySets global_sets) {
global_sets_ = std::move(global_sets);
}
} // namespace first_party_sets
|