Chromium Code Reviews| Index: components/variations/variations_params_manager.cc |
| diff --git a/components/variations/variations_params_manager.cc b/components/variations/variations_params_manager.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..6bebb56a9312e0a25eab566e68870bf5786a60d3 |
| --- /dev/null |
| +++ b/components/variations/variations_params_manager.cc |
| @@ -0,0 +1,73 @@ |
| +// Copyright 2016 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "components/variations/variations_params_manager.h" |
| + |
| +#include <utility> |
| + |
| +#include "base/feature_list.h" |
| +#include "base/metrics/field_trial.h" |
| +#include "base/test/scoped_feature_list.h" |
| +#include "components/variations/variations_associated_data.h" |
| + |
| +namespace variations { |
| + |
|
Alexei Svitkine (slow)
2016/09/12 16:54:13
Nit: Remove empty line
jkrcal
2016/09/23 13:40:09
Done.
|
| +namespace testing { |
| + |
| +namespace { |
| + |
| +const char kGroupTesting[] = "Testing"; |
| + |
| +} // namespace |
| + |
| +VariationParamsManager::VariationParamsManager() |
| + : field_trial_list_(new base::FieldTrialList(nullptr)), |
| + scoped_feature_list_(new base::test::ScopedFeatureList()) {} |
| + |
| +VariationParamsManager::VariationParamsManager( |
| + const std::string& trial_name, |
| + const std::map<std::string, std::string>& param_values, |
| + const std::map<std::string, std::string>& param_features) |
| + : VariationParamsManager() { |
| + SetVariationParams(trial_name, param_values, param_features); |
| +} |
| + |
| +VariationParamsManager::~VariationParamsManager() { |
| + ClearAllVariationIDs(); |
| + ClearAllVariationParams(); |
| +} |
| + |
| +void VariationParamsManager::SetVariationParams( |
| + const std::string& trial_name, |
| + const std::map<std::string, std::string>& param_values, |
| + const std::map<std::string, std::string>& param_features) { |
| + variations::AssociateVariationParams(trial_name, kGroupTesting, param_values); |
| + base::FieldTrial* field_trial = |
| + base::FieldTrialList::CreateFieldTrial(trial_name, kGroupTesting); |
| + |
| + std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList); |
| + for (auto& pair : param_features) { |
| + feature_list->RegisterFieldTrialOverride( |
| + pair.second /* name of the feature */, |
| + base::FeatureList::OverrideState::OVERRIDE_ENABLE_FEATURE, |
| + field_trial); |
| + } |
| + |
| + scoped_feature_list_->InitWithFeatureList(std::move(feature_list)); |
| +} |
| + |
| +void VariationParamsManager::ClearAllVariationIDs() { |
| + variations::testing::ClearAllVariationIDs(); |
| +} |
| + |
| +void VariationParamsManager::ClearAllVariationParams() { |
| + variations::testing::ClearAllVariationParams(); |
| + // When the scoped feature list is destroyed, it puts back the original |
| + // feature list that was there when InitWithFeatureList() was called. |
| + scoped_feature_list_.reset(new base::test::ScopedFeatureList()); |
| +} |
| + |
| +} // namespace testing |
| + |
|
Alexei Svitkine (slow)
2016/09/12 16:54:13
Nit: Remove empty line
jkrcal
2016/09/23 13:40:09
Done.
|
| +} // namespace variations |