#ifndef CONTENT_PUBLIC_TEST_PRELOADING_TEST_UTIL_H_
#define CONTENT_PUBLIC_TEST_PRELOADING_TEST_UTIL_H_
#include <vector>
#include "base/memory/raw_ptr.h"
#include "components/ukm/test_ukm_recorder.h"
#include "content/public/browser/preloading.h"
#include "content/public/browser/preloading_data.h"
#include "services/metrics/public/cpp/ukm_source_id.h"
namespace content::test {
extern const std::vector<std::string> kPreloadingAttemptUkmMetrics;
extern const std::vector<std::string> kPreloadingPredictionUkmMetrics;
class PreloadingAttemptUkmEntryBuilder {
public:
explicit PreloadingAttemptUkmEntryBuilder(PreloadingPredictor predictor);
ukm::TestUkmRecorder::HumanReadableUkmEntry BuildEntry(
ukm::SourceId source_id,
PreloadingType preloading_type,
PreloadingEligibility eligibility,
PreloadingHoldbackStatus holdback_status,
PreloadingTriggeringOutcome triggering_outcome,
PreloadingFailureReason failure_reason,
bool accurate,
absl::optional<base::TimeDelta> ready_time = absl::nullopt) const;
private:
PreloadingPredictor predictor_;
};
class PreloadingPredictionUkmEntryBuilder {
public:
explicit PreloadingPredictionUkmEntryBuilder(PreloadingPredictor predictor);
ukm::TestUkmRecorder::HumanReadableUkmEntry BuildEntry(
ukm::SourceId source_id,
int64_t confidence,
bool accurate_prediction) const;
private:
PreloadingPredictor predictor_;
};
std::string UkmEntryToString(
const ukm::TestUkmRecorder::HumanReadableUkmEntry& entry);
std::string ActualVsExpectedUkmEntryToString(
const ukm::TestUkmRecorder::HumanReadableUkmEntry& actual,
const ukm::TestUkmRecorder::HumanReadableUkmEntry& expected);
std::string ActualVsExpectedUkmEntriesToString(
const std::vector<ukm::TestUkmRecorder::HumanReadableUkmEntry>& actual,
const std::vector<ukm::TestUkmRecorder::HumanReadableUkmEntry>& expected);
class PreloadingAttemptAccessor {
public:
explicit PreloadingAttemptAccessor(PreloadingAttempt* preloading_attempt);
PreloadingTriggeringOutcome GetTriggeringOutcome();
PreloadingFailureReason GetFailureReason();
private:
raw_ptr<PreloadingAttempt> preloading_attempt_;
};
}
#endif