Chromium Code Reviews| Index: base/metrics/field_trial_param_associator.cc |
| diff --git a/base/metrics/field_trial_param_associator.cc b/base/metrics/field_trial_param_associator.cc |
| index b96cc396df874689af034691d9479a780ae78417..61e24f8cbd1dc3b120d59ebb4a9a674cfafde4e3 100644 |
| --- a/base/metrics/field_trial_param_associator.cc |
| +++ b/base/metrics/field_trial_param_associator.cc |
| @@ -37,9 +37,27 @@ bool FieldTrialParamAssociator::AssociateFieldTrialParams( |
| bool FieldTrialParamAssociator::GetFieldTrialParams( |
| const std::string& trial_name, |
| FieldTrialParams* params) { |
| + // We first try looking for the params in field_trial_params_. |
|
bcwhite
2016/11/23 21:03:52
field_trial_params_ isn't accessed in the code so
lawrencewu
2016/11/23 21:49:20
Changed to say "via GetFieldTrialParamsWithoutFall
|
| + // If that is unsuccessful, then we try to look it up in shared memory. |
|
bcwhite
2016/11/23 21:03:52
Lines 43-44 say: if unsuccessful then return
lawrencewu
2016/11/23 21:49:20
I cleared it up a bit to say: "If it's not there,
|
| + FieldTrial* field_trial = FieldTrialList::Find(trial_name); |
| + if (!field_trial) |
| + return false; |
| + |
| + if (GetFieldTrialParamsWithoutFallback(trial_name, field_trial->group_name(), |
| + params)) { |
| + return true; |
| + } |
| + |
| + // TODO(lawrencewu): add the params to field_trial_params_ for next time. |
| + return FieldTrialList::GetParamsFromSharedMemory(field_trial, params); |
| +} |
| + |
| +bool FieldTrialParamAssociator::GetFieldTrialParamsWithoutFallback( |
| + const std::string& trial_name, |
| + const std::string& group_name, |
| + FieldTrialParams* params) { |
| AutoLock scoped_lock(lock_); |
| - const std::string group_name = FieldTrialList::FindFullName(trial_name); |
| const FieldTrialKey key(trial_name, group_name); |
| if (!ContainsKey(field_trial_params_, key)) |
| return false; |
| @@ -51,6 +69,12 @@ bool FieldTrialParamAssociator::GetFieldTrialParams( |
| void FieldTrialParamAssociator::ClearAllParamsForTesting() { |
| AutoLock scoped_lock(lock_); |
| field_trial_params_.clear(); |
| + FieldTrialList::ClearParamsFromSharedMemoryForTesting(); |
| +} |
| + |
| +void FieldTrialParamAssociator::ClearAllCachedParamsForTesting() { |
| + AutoLock scoped_lock(lock_); |
| + field_trial_params_.clear(); |
| } |
| } // namespace base |