Skip to content

Commit 7df5c7c

Browse files
committed
sync non-crypto with Chromium OS am: 64062ae
Change-Id: I104744a1416060fc9b14d2c403088e6ee90936f5
2 parents 8e46b99 + 64062ae commit 7df5c7c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+10273
-178
lines changed

BUILD.gn

Lines changed: 758 additions & 0 deletions
Large diffs are not rendered by default.

base/metrics/field_trial_params.cc

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
// Copyright 2017 The Chromium Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
#include "base/metrics/field_trial_params.h"
6+
7+
#include "base/feature_list.h"
8+
#include "base/metrics/field_trial.h"
9+
#include "base/metrics/field_trial_param_associator.h"
10+
#include "base/strings/string_number_conversions.h"
11+
12+
namespace base {
13+
14+
bool AssociateFieldTrialParams(
15+
const std::string& trial_name,
16+
const std::string& group_name,
17+
const std::map<std::string, std::string>& params) {
18+
return base::FieldTrialParamAssociator::GetInstance()
19+
->AssociateFieldTrialParams(trial_name, group_name, params);
20+
}
21+
22+
bool GetFieldTrialParams(const std::string& trial_name,
23+
std::map<std::string, std::string>* params) {
24+
return base::FieldTrialParamAssociator::GetInstance()->GetFieldTrialParams(
25+
trial_name, params);
26+
}
27+
28+
bool GetFieldTrialParamsByFeature(const base::Feature& feature,
29+
std::map<std::string, std::string>* params) {
30+
if (!base::FeatureList::IsEnabled(feature))
31+
return false;
32+
33+
base::FieldTrial* trial = base::FeatureList::GetFieldTrial(feature);
34+
if (!trial)
35+
return false;
36+
37+
return GetFieldTrialParams(trial->trial_name(), params);
38+
}
39+
40+
std::string GetFieldTrialParamValue(const std::string& trial_name,
41+
const std::string& param_name) {
42+
std::map<std::string, std::string> params;
43+
if (GetFieldTrialParams(trial_name, &params)) {
44+
std::map<std::string, std::string>::iterator it = params.find(param_name);
45+
if (it != params.end())
46+
return it->second;
47+
}
48+
return std::string();
49+
}
50+
51+
std::string GetFieldTrialParamValueByFeature(const base::Feature& feature,
52+
const std::string& param_name) {
53+
if (!base::FeatureList::IsEnabled(feature))
54+
return std::string();
55+
56+
base::FieldTrial* trial = base::FeatureList::GetFieldTrial(feature);
57+
if (!trial)
58+
return std::string();
59+
60+
return GetFieldTrialParamValue(trial->trial_name(), param_name);
61+
}
62+
63+
int GetFieldTrialParamByFeatureAsInt(const base::Feature& feature,
64+
const std::string& param_name,
65+
int default_value) {
66+
std::string value_as_string =
67+
GetFieldTrialParamValueByFeature(feature, param_name);
68+
int value_as_int = 0;
69+
if (!base::StringToInt(value_as_string, &value_as_int)) {
70+
if (!value_as_string.empty()) {
71+
DLOG(WARNING) << "Failed to parse field trial param " << param_name
72+
<< " with string value " << value_as_string
73+
<< " under feature " << feature.name
74+
<< " into an int. Falling back to default value of "
75+
<< default_value;
76+
}
77+
value_as_int = default_value;
78+
}
79+
return value_as_int;
80+
}
81+
82+
double GetFieldTrialParamByFeatureAsDouble(const base::Feature& feature,
83+
const std::string& param_name,
84+
double default_value) {
85+
std::string value_as_string =
86+
GetFieldTrialParamValueByFeature(feature, param_name);
87+
double value_as_double = 0;
88+
if (!base::StringToDouble(value_as_string, &value_as_double)) {
89+
if (!value_as_string.empty()) {
90+
DLOG(WARNING) << "Failed to parse field trial param " << param_name
91+
<< " with string value " << value_as_string
92+
<< " under feature " << feature.name
93+
<< " into a double. Falling back to default value of "
94+
<< default_value;
95+
}
96+
value_as_double = default_value;
97+
}
98+
return value_as_double;
99+
}
100+
101+
bool GetFieldTrialParamByFeatureAsBool(const base::Feature& feature,
102+
const std::string& param_name,
103+
bool default_value) {
104+
std::string value_as_string =
105+
GetFieldTrialParamValueByFeature(feature, param_name);
106+
if (value_as_string == "true")
107+
return true;
108+
if (value_as_string == "false")
109+
return false;
110+
111+
if (!value_as_string.empty()) {
112+
DLOG(WARNING) << "Failed to parse field trial param " << param_name
113+
<< " with string value " << value_as_string
114+
<< " under feature " << feature.name
115+
<< " into a bool. Falling back to default value of "
116+
<< default_value;
117+
}
118+
return default_value;
119+
}
120+
121+
std::string FeatureParam<std::string>::Get() const {
122+
const std::string value = GetFieldTrialParamValueByFeature(*feature, name);
123+
return value.empty() ? default_value : value;
124+
}
125+
126+
double FeatureParam<double>::Get() const {
127+
return GetFieldTrialParamByFeatureAsDouble(*feature, name, default_value);
128+
}
129+
130+
int FeatureParam<int>::Get() const {
131+
return GetFieldTrialParamByFeatureAsInt(*feature, name, default_value);
132+
}
133+
134+
bool FeatureParam<bool>::Get() const {
135+
return GetFieldTrialParamByFeatureAsBool(*feature, name, default_value);
136+
}
137+
138+
void LogInvalidEnumValue(const base::Feature& feature,
139+
const std::string& param_name,
140+
const std::string& value_as_string,
141+
int default_value_as_int) {
142+
DLOG(WARNING) << "Failed to parse field trial param " << param_name
143+
<< " with string value " << value_as_string << " under feature "
144+
<< feature.name
145+
<< " into an enum. Falling back to default value of "
146+
<< default_value_as_int;
147+
}
148+
149+
} // namespace base

0 commit comments

Comments
 (0)