blob: cdb3d2c66318fa030a31fd3210c180eb24e1b13e [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/browser/attribution_reporting/test/mock_attribution_manager.h"
#include <stdint.h>
#include <memory>
#include <optional>
#include <utility>
#include <vector>
#include "base/check.h"
#include "base/observer_list.h"
#include "base/time/time.h"
#include "base/values.h"
#include "components/attribution_reporting/os_registration.h"
#include "content/browser/attribution_reporting/attribution_data_host_manager.h"
#include "content/browser/attribution_reporting/attribution_observer.h"
#include "content/browser/attribution_reporting/attribution_reporting.mojom-forward.h"
#include "content/browser/attribution_reporting/os_registration.h"
#include "content/browser/attribution_reporting/storable_source.h"
namespace content {
MockAttributionManager::MockAttributionManager() = default;
MockAttributionManager::~MockAttributionManager() = default;
void MockAttributionManager::AddObserver(AttributionObserver* observer) {
observers_.AddObserver(observer);
if (on_observer_registered_) {
std::move(on_observer_registered_).Run();
}
observer->OnDebugModeChanged(/*debug_mode=*/false);
}
void MockAttributionManager::RemoveObserver(AttributionObserver* observer) {
observers_.RemoveObserver(observer);
}
AttributionDataHostManager* MockAttributionManager::GetDataHostManager() {
DCHECK(data_host_manager_);
return data_host_manager_.get();
}
void MockAttributionManager::NotifySourcesChanged() {
for (auto& observer : observers_) {
observer.OnSourcesChanged();
}
}
void MockAttributionManager::NotifyReportsChanged() {
for (auto& observer : observers_) {
observer.OnReportsChanged();
}
}
void MockAttributionManager::NotifySourceHandled(
const StorableSource& source,
StorableSource::Result result,
std::optional<uint64_t> cleared_debug_key) {
base::Time now = base::Time::Now();
for (auto& observer : observers_) {
observer.OnSourceHandled(source, now, cleared_debug_key, result);
}
}
void MockAttributionManager::NotifyReportSent(const AttributionReport& report,
bool is_debug_report,
const SendResult& info) {
for (auto& observer : observers_) {
observer.OnReportSent(report, is_debug_report, info);
}
}
void MockAttributionManager::NotifyTriggerHandled(
const CreateReportResult& result,
std::optional<uint64_t> cleared_debug_key) {
for (auto& observer : observers_) {
observer.OnTriggerHandled(cleared_debug_key, result);
}
}
void MockAttributionManager::NotifyDebugReportSent(
const AttributionDebugReport& report,
const int status,
const base::Time time) {
for (auto& observer : observers_) {
observer.OnDebugReportSent(report, status, time);
}
}
void MockAttributionManager::NotifyAggregatableDebugReportSent(
const AggregatableDebugReport& report,
base::ValueView report_body,
attribution_reporting::mojom::ProcessAggregatableDebugReportResult
process_result,
const SendAggregatableDebugReportResult& send_result) {
for (auto& observer : observers_) {
observer.OnAggregatableDebugReportSent(report, report_body, process_result,
send_result);
}
}
void MockAttributionManager::NotifyOsRegistration(
const OsRegistration& registration,
bool is_debug_key_allowed,
attribution_reporting::mojom::OsRegistrationResult result) {
base::Time now = base::Time::Now();
for (const attribution_reporting::OsRegistrationItem& item :
registration.registration_items) {
for (auto& observer : observers_) {
observer.OnOsRegistration(now, item, registration.top_level_origin,
registration.GetType(), is_debug_key_allowed,
result);
}
}
}
void MockAttributionManager::NotifyDebugModeChanged(bool debug_mode) {
for (auto& observer : observers_) {
observer.OnDebugModeChanged(debug_mode);
}
}
void MockAttributionManager::SetDataHostManager(
std::unique_ptr<AttributionDataHostManager> manager) {
DCHECK(manager);
data_host_manager_ = std::move(manager);
}
void MockAttributionManager::SetOnObserverRegistered(base::OnceClosure done) {
CHECK(!on_observer_registered_);
if (!observers_.empty()) {
std::move(done).Run();
return;
}
on_observer_registered_ = std::move(done);
}
} // namespace content