#include "base/metrics/field_trial_params.h"
#include <optional>
#include <set>
#include <string_view>
#include <utility>
#include <vector>
#include "base/debug/crash_logging.h"
#include "base/debug/dump_without_crashing.h"
#include "base/feature_list.h"
#include "base/features.h"
#include "base/metrics/field_trial.h"
#include "base/metrics/field_trial_param_associator.h"
#include "base/metrics/histogram_functions.h"
#include "base/metrics/metrics_hashes.h"
#include "base/notreached.h"
#include "base/strings/escape.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
#include "base/strings/stringprintf.h"
#include "base/time/time_delta_from_string.h"
namespace base {
namespace {
bool IsCacheEnabled() { … }
}
namespace field_trial_params_internal {
bool IsFeatureParamWithCacheEnabled() { … }
}
void LogInvalidValue(const Feature& feature,
const char* type,
const std::string& param_name,
const std::string& value_as_string,
const std::string& default_value_as_string) { … }
std::string UnescapeValue(const std::string& value) { … }
bool AssociateFieldTrialParams(const std::string& trial_name,
const std::string& group_name,
const FieldTrialParams& params) { … }
bool AssociateFieldTrialParamsFromString(
const std::string& params_string,
FieldTrialParamsDecodeStringFunc decode_data_func) { … }
bool GetFieldTrialParams(const std::string& trial_name,
FieldTrialParams* params) { … }
bool GetFieldTrialParamsByFeature(const Feature& feature,
FieldTrialParams* params) { … }
std::string GetFieldTrialParamValue(const std::string& trial_name,
const std::string& param_name) { … }
std::string GetFieldTrialParamValueByFeature(const Feature& feature,
const std::string& param_name) { … }
std::string GetFieldTrialParamByFeatureAsString(
const Feature& feature,
const std::string& param_name,
const std::string& default_value) { … }
int GetFieldTrialParamByFeatureAsInt(const Feature& feature,
const std::string& param_name,
int default_value) { … }
double GetFieldTrialParamByFeatureAsDouble(const Feature& feature,
const std::string& param_name,
double default_value) { … }
bool GetFieldTrialParamByFeatureAsBool(const Feature& feature,
const std::string& param_name,
bool default_value) { … }
base::TimeDelta GetFieldTrialParamByFeatureAsTimeDelta(
const Feature& feature,
const std::string& param_name,
base::TimeDelta default_value) { … }
std::string FeatureParam<std::string>::Get() const { … }
std::string FeatureParam<std::string>::GetWithoutCache() const { … }
double FeatureParam<double>::Get() const { … }
double FeatureParam<double>::GetWithoutCache() const { … }
int FeatureParam<int>::Get() const { … }
int FeatureParam<int>::GetWithoutCache() const { … }
size_t FeatureParam<size_t>::Get() const { … }
size_t FeatureParam<size_t>::GetWithoutCache() const { … }
bool FeatureParam<bool>::Get() const { … }
bool FeatureParam<bool>::GetWithoutCache() const { … }
base::TimeDelta FeatureParam<base::TimeDelta>::Get() const { … }
base::TimeDelta FeatureParam<base::TimeDelta>::GetWithoutCache() const { … }
void LogInvalidEnumValue(const Feature& feature,
const std::string& param_name,
const std::string& value_as_string,
int default_value_as_int) { … }
}