#include "components/feature_engagement/public/field_trial_utils.h"
#include <string_view>
#include "base/feature_list.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
#include "components/feature_engagement/public/configuration.h"
#include "components/feature_engagement/public/configuration_provider.h"
#include "components/feature_engagement/public/feature_list.h"
#include "components/feature_engagement/public/group_constants.h"
#include "components/feature_engagement/public/group_list.h"
#include "components/feature_engagement/public/stats.h"
namespace feature_engagement {
namespace {
constexpr char kComparatorTypeAny[] = …;
constexpr char kComparatorTypeLessThan[] = …;
constexpr char kComparatorTypeGreaterThan[] = …;
constexpr char kComparatorTypeLessThanOrEqual[] = …;
constexpr char kComparatorTypeGreaterThanOrEqual[] = …;
constexpr char kComparatorTypeEqual[] = …;
constexpr char kComparatorTypeNotEqual[] = …;
constexpr char kEventConfigUsedKey[] = …;
constexpr char kEventConfigTriggerKey[] = …;
constexpr char kEventConfigKeyPrefix[] = …;
constexpr char kSessionRateKey[] = …;
constexpr char kSessionRateImpactKey[] = …;
constexpr char kBlockingKey[] = …;
constexpr char kBlockedByKey[] = …;
constexpr char kAvailabilityKey[] = …;
constexpr char kTrackingOnlyKey[] = …;
constexpr char kGroupsKey[] = …;
constexpr char kIgnoredKeyPrefix[] = …;
constexpr char kEventConfigDataNameKey[] = …;
constexpr char kEventConfigDataComparatorKey[] = …;
constexpr char kEventConfigDataWindowKey[] = …;
constexpr char kEventConfigDataStorageKey[] = …;
constexpr char kImpactedFeaturesTypeAll[] = …;
constexpr char kImpactedFeaturesTypeNone[] = …;
constexpr char kSnoozeParams[] = …;
constexpr char kSnoozeParamsMaxLimit[] = …;
constexpr char kSnoozeParamsInterval[] = …;
constexpr char kTrackingOnlyTrue[] = …;
constexpr char kTrackingOnlyFalse[] = …;
bool ParseComparatorSubstring(std::string_view definition,
Comparator* comparator,
ComparatorType type,
uint32_t type_len) { … }
bool ParseComparator(std::string_view definition, Comparator* comparator) { … }
bool ParseEventConfig(std::string_view definition, EventConfig* event_config) { … }
bool ParseSessionRateImpact(std::string_view definition,
SessionRateImpact* session_rate_impact,
const base::Feature* this_feature,
const FeatureVector& known_features,
const GroupVector& known_groups) { … }
bool ParseBlockedBy(std::string_view definition,
BlockedBy* blocked_by,
const base::Feature* this_feature,
const FeatureVector& known_features,
const GroupVector& known_groups) { … }
bool ParseBlocking(std::string_view definition, Blocking* blocking) { … }
bool ParseSnoozeParams(std::string_view definition,
SnoozeParams* snooze_params) { … }
bool ParseTrackingOnly(std::string_view definition, bool* tracking_only) { … }
bool ParseGroups(std::string_view definition,
std::vector<std::string>* groups,
const base::Feature* this_feature,
const GroupVector& known_groups) { … }
}
ConfigParseOutput::ConfigParseOutput(uint32_t& parse_errors)
: … { … }
void ParseConfigFields(const base::Feature* feature,
std::map<std::string, std::string> params,
ConfigParseOutput& output,
const FeatureVector& known_features,
const GroupVector& known_groups) { … }
}