#include "components/feature_engagement/internal/feature_config_condition_validator.h"
#include <algorithm>
#include <optional>
#include <string>
#include <vector>
#include "base/check.h"
#include "base/containers/contains.h"
#include "base/feature_list.h"
#include "base/notreached.h"
#include "components/feature_engagement/internal/availability_model.h"
#include "components/feature_engagement/internal/display_lock_controller.h"
#include "components/feature_engagement/internal/event_model.h"
#include "components/feature_engagement/internal/proto/feature_event.pb.h"
#include "components/feature_engagement/internal/time_provider.h"
#include "components/feature_engagement/public/configuration.h"
#include "components/feature_engagement/public/feature_list.h"
namespace feature_engagement {
FeatureConfigConditionValidator::FeatureConfigConditionValidator() = default;
FeatureConfigConditionValidator::~FeatureConfigConditionValidator() = default;
ConditionValidator::Result FeatureConfigConditionValidator::MeetsConditions(
const base::Feature& feature,
const FeatureConfig& config,
const std::vector<GroupConfig>& group_configs,
const EventModel& event_model,
const AvailabilityModel& availability_model,
const DisplayLockController& display_lock_controller,
const Configuration* configuration,
const TimeProvider& time_provider) const { … }
void FeatureConfigConditionValidator::NotifyIsShowing(
const base::Feature& feature,
const FeatureConfig& config,
const std::vector<std::string>& all_feature_names) { … }
void FeatureConfigConditionValidator::NotifyDismissed(
const base::Feature& feature) { … }
bool FeatureConfigConditionValidator::EventConfigMeetsConditions(
const EventConfig& event_config,
const EventModel& event_model,
uint32_t current_day) const { … }
void FeatureConfigConditionValidator::SetPriorityNotification(
const std::optional<std::string>& feature) { … }
std::optional<std::string>
FeatureConfigConditionValidator::GetPendingPriorityNotification() { … }
void FeatureConfigConditionValidator::ResetSession() { … }
bool FeatureConfigConditionValidator::AvailabilityMeetsConditions(
const base::Feature& feature,
Comparator comparator,
const AvailabilityModel& availability_model,
uint32_t current_day) const { … }
bool FeatureConfigConditionValidator::SessionRateMeetsConditions(
const Comparator session_rate,
const base::Feature& feature) const { … }
bool FeatureConfigConditionValidator::IsBlocked(
const base::Feature& feature,
const FeatureConfig& config,
const Configuration* configuration) const { … }
}