#include "components/attribution_reporting/trigger_config.h"
#include <stdint.h>
#include <optional>
#include <string>
#include <utility>
#include <vector>
#include "base/check.h"
#include "base/containers/flat_map.h"
#include "base/containers/flat_tree.h"
#include "base/ranges/algorithm.h"
#include "base/time/time.h"
#include "base/types/expected.h"
#include "base/types/expected_macros.h"
#include "base/values.h"
#include "components/attribution_reporting/constants.h"
#include "components/attribution_reporting/max_event_level_reports.h"
#include "components/attribution_reporting/parsing_utils.h"
#include "components/attribution_reporting/source_registration_error.mojom.h"
#include "components/attribution_reporting/source_type.mojom.h"
#include "components/attribution_reporting/trigger_data_matching.mojom.h"
namespace attribution_reporting {
namespace {
SourceRegistrationError;
SourceType;
TriggerDataMatching;
constexpr uint32_t DefaultTriggerDataCardinality(SourceType source_type) { … }
base::expected<void, SourceRegistrationError> ParseTriggerData(
const base::Value& value,
TriggerSpecs::TriggerDataIndices& trigger_data_indices,
const uint8_t spec_index,
const bool allow_empty,
SourceRegistrationError list_error,
SourceRegistrationError duplicate_error,
SourceRegistrationError excessive_error) { … }
bool AreSpecsValid(const TriggerSpecs::TriggerDataIndices& trigger_data_indices,
const std::vector<TriggerSpec>& specs) { … }
base::expected<void, SourceRegistrationError>
ValidateSpecsForTriggerDataMatching(
const TriggerSpecs::TriggerDataIndices& trigger_data_indices,
TriggerDataMatching trigger_data_matching) { … }
}
base::expected<TriggerDataMatching, SourceRegistrationError>
ParseTriggerDataMatching(const base::Value::Dict& dict) { … }
void Serialize(base::Value::Dict& dict,
TriggerDataMatching trigger_data_matching) { … }
TriggerSpec::TriggerSpec() = default;
TriggerSpec::TriggerSpec(EventReportWindows event_report_windows)
: … { … }
TriggerSpec::~TriggerSpec() = default;
TriggerSpec::TriggerSpec(const TriggerSpec&) = default;
TriggerSpec& TriggerSpec::operator=(const TriggerSpec&) = default;
TriggerSpec::TriggerSpec(TriggerSpec&&) = default;
TriggerSpec& TriggerSpec::operator=(TriggerSpec&&) = default;
TriggerSpecs::const_iterator TriggerSpecs::find(
uint64_t trigger_data,
TriggerDataMatching trigger_data_matching) const { … }
base::Value::Dict TriggerSpec::ToJson() const { … }
base::expected<TriggerSpecs, SourceRegistrationError>
TriggerSpecs::ParseFullFlexForTesting(
const base::Value::Dict& registration,
SourceType source_type,
base::TimeDelta expiry,
EventReportWindows default_report_windows,
TriggerDataMatching trigger_data_matching) { … }
base::expected<TriggerSpecs, SourceRegistrationError>
TriggerSpecs::ParseTopLevelTriggerData(
const base::Value::Dict& registration,
SourceType source_type,
EventReportWindows default_report_windows,
TriggerDataMatching trigger_data_matching) { … }
TriggerSpecs::TriggerSpecs(SourceType source_type,
EventReportWindows event_report_windows,
MaxEventLevelReports max_event_level_reports)
: … { … }
std::optional<TriggerSpecs> TriggerSpecs::Create(
TriggerDataIndices trigger_data_indices,
std::vector<TriggerSpec> specs,
MaxEventLevelReports max_event_level_reports) { … }
TriggerSpecs::TriggerSpecs(TriggerDataIndices trigger_data_indices,
std::vector<TriggerSpec> specs,
MaxEventLevelReports max_event_level_reports)
: … { … }
TriggerSpecs::TriggerSpecs() = default;
TriggerSpecs::~TriggerSpecs() = default;
TriggerSpecs::TriggerSpecs(const TriggerSpecs&) = default;
TriggerSpecs& TriggerSpecs::operator=(const TriggerSpecs&) = default;
TriggerSpecs::TriggerSpecs(TriggerSpecs&&) = default;
TriggerSpecs& TriggerSpecs::operator=(TriggerSpecs&&) = default;
const TriggerSpec* TriggerSpecs::SingleSharedSpec() const { … }
base::Value::List TriggerSpecs::ToJson() const { … }
void TriggerSpecs::Serialize(base::Value::Dict& dict) const { … }
TriggerSpecs::Iterator::Iterator(const TriggerSpecs& specs,
TriggerDataIndices::const_iterator it)
: … { … }
}