blob: 7d20f08e19711a937903d3e7a60158e6a9f61db6 [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 <string>
#include <utility>
#include <vector>
#include "base/check.h"
#include "base/observer_list.h"
#include "base/time/time.h"
#include "components/attribution_reporting/source_registration_error.mojom-forward.h"
#include "components/attribution_reporting/source_type.mojom-forward.h"
#include "content/browser/attribution_reporting/attribution_data_host_manager.h"
#include "content/browser/attribution_reporting/attribution_observer.h"
#include "content/browser/attribution_reporting/storable_source.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
#if BUILDFLAG(IS_ANDROID)
#include "content/browser/attribution_reporting/attribution_reporting.mojom-forward.h"
#include "content/browser/attribution_reporting/os_registration.h"
#endif
namespace content {
MockAttributionManager::MockAttributionManager() = default;
MockAttributionManager::~MockAttributionManager() = default;
void MockAttributionManager::AddObserver(AttributionObserver* observer) {
observers_.AddObserver(observer);
}
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,
absl::optional<uint64_t> cleared_debug_key) {
for (auto& observer : observers_) {
observer.OnSourceHandled(source, 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::NotifySourceRegistrationFailure(
const std::string& header_value,
const attribution_reporting::SuitableOrigin& source_origin,
const attribution_reporting::SuitableOrigin& reporting_origin,
attribution_reporting::mojom::SourceType source_type,
attribution_reporting::mojom::SourceRegistrationError error) {
base::Time source_time = base::Time::Now();
for (auto& observer : observers_) {
observer.OnFailedSourceRegistration(header_value, source_time,
source_origin, reporting_origin,
source_type, error);
}
}
void MockAttributionManager::NotifyTriggerHandled(
const AttributionTrigger& trigger,
const CreateReportResult& result,
absl::optional<uint64_t> cleared_debug_key) {
for (auto& observer : observers_) {
observer.OnTriggerHandled(trigger, 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);
}
}
#if BUILDFLAG(IS_ANDROID)
void MockAttributionManager::NotifyOsRegistration(
const OsRegistration& registration,
bool is_debug_key_allowed,
attribution_reporting::mojom::OsRegistrationResult result) {
base::Time now = base::Time::Now();
for (auto& observer : observers_) {
observer.OnOsRegistration(now, registration, is_debug_key_allowed, result);
}
}
#endif // BUILDFLAG(IS_ANDROID)
void MockAttributionManager::SetDataHostManager(
std::unique_ptr<AttributionDataHostManager> manager) {
DCHECK(manager);
data_host_manager_ = std::move(manager);
}
} // namespace content