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 |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b9781018fc8bc29c8bfa621f1cacb2b714e65f93 |
| --- /dev/null |
| +++ b/base/metrics/field_trial_param_associator.cc |
| @@ -0,0 +1,51 @@ |
| +// Copyright (c) 2016 The Chromium Authors. All rights reserved. |
|
Alexei Svitkine (slow)
2016/10/28 15:39:16
No (c)
lawrencewu
2016/10/28 16:54:29
Done.
|
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "base/metrics/field_trial_param_associator.h" |
| + |
| +namespace base { |
| + |
| +// static |
| +FieldTrialParamAssociator* FieldTrialParamAssociator::GetInstance() { |
| + return Singleton<FieldTrialParamAssociator, |
| + LeakySingletonTraits<FieldTrialParamAssociator>>::get(); |
| +} |
| + |
| +bool FieldTrialParamAssociator::AssociateFieldTrialParams( |
| + const std::string& trial_name, |
| + const std::string& group_name, |
| + const FieldTrialParams& params) { |
| + AutoLock scoped_lock(lock_); |
| + |
| + if (FieldTrialList::IsTrialActive(trial_name)) |
| + return false; |
| + |
| + const FieldTrialKey key(trial_name, group_name); |
| + if (ContainsKey(field_trial_params_, key)) |
| + return false; |
| + |
| + field_trial_params_[key] = params; |
| + return true; |
| +} |
| + |
| +bool FieldTrialParamAssociator::GetFieldTrialParams( |
| + const std::string& trial_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; |
| + |
| + *params = field_trial_params_[key]; |
| + return true; |
| +} |
| + |
| +void FieldTrialParamAssociator::ClearAllParamsForTesting() { |
| + AutoLock scoped_lock(lock_); |
| + field_trial_params_.clear(); |
| +} |
| + |
| +} // namespace base |