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..f3a557188968f93aeb76e529a226b5704c4f55e4 100644 |
| --- a/base/metrics/field_trial_param_associator.cc |
| +++ b/base/metrics/field_trial_param_associator.cc |
| @@ -37,9 +37,26 @@ bool FieldTrialParamAssociator::AssociateFieldTrialParams( |
| bool FieldTrialParamAssociator::GetFieldTrialParams( |
| const std::string& trial_name, |
| FieldTrialParams* params) { |
| + // We first try looking for the params in field_trial_params_. |
| + // If that is unsuccessful, then we try to look it up in shared memory. |
| + FieldTrial* field_trial = FieldTrialList::Find(trial_name); |
| + if (!field_trial) |
| + return false; |
| + |
| + if (GetFieldTrialParamsWithoutFallback(trial_name, field_trial->group_name(), |
| + params)) |
|
Alexei Svitkine (slow)
2016/11/23 17:23:39
{}
lawrencewu
2016/11/23 19:07:33
Done.
|
| + 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 +68,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 |