OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/variations/variations_associated_data.h" | 5 #include "components/variations/variations_associated_data.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/feature_list.h" | 11 #include "base/feature_list.h" |
12 #include "base/macros.h" | 12 #include "base/macros.h" |
13 #include "base/memory/singleton.h" | 13 #include "base/memory/singleton.h" |
| 14 #include "base/metrics/field_trial.h" |
14 #include "base/metrics/field_trial_param_associator.h" | 15 #include "base/metrics/field_trial_param_associator.h" |
15 #include "base/strings/string_split.h" | 16 #include "base/strings/string_split.h" |
16 #include "components/variations/variations_http_header_provider.h" | 17 #include "components/variations/variations_http_header_provider.h" |
17 | 18 |
18 namespace variations { | 19 namespace variations { |
19 | 20 |
20 namespace { | 21 namespace { |
21 | 22 |
22 const char kGroupTesting[] = "Testing"; | |
23 | |
24 // The internal singleton accessor for the map, used to keep it thread-safe. | 23 // The internal singleton accessor for the map, used to keep it thread-safe. |
25 class GroupMapAccessor { | 24 class GroupMapAccessor { |
26 public: | 25 public: |
27 typedef std::map<ActiveGroupId, VariationID, ActiveGroupIdCompare> | 26 typedef std::map<ActiveGroupId, VariationID, ActiveGroupIdCompare> |
28 GroupToIDMap; | 27 GroupToIDMap; |
29 | 28 |
30 // Retrieve the singleton. | 29 // Retrieve the singleton. |
31 static GroupMapAccessor* GetInstance() { | 30 static GroupMapAccessor* GetInstance() { |
32 return base::Singleton<GroupMapAccessor>::get(); | 31 return base::Singleton<GroupMapAccessor>::get(); |
33 } | 32 } |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 if (!trial) | 187 if (!trial) |
189 return std::string(); | 188 return std::string(); |
190 | 189 |
191 return GetVariationParamValue(trial->trial_name(), param_name); | 190 return GetVariationParamValue(trial->trial_name(), param_name); |
192 } | 191 } |
193 | 192 |
194 // Functions below are exposed for testing explicitly behind this namespace. | 193 // Functions below are exposed for testing explicitly behind this namespace. |
195 // They simply wrap existing functions in this file. | 194 // They simply wrap existing functions in this file. |
196 namespace testing { | 195 namespace testing { |
197 | 196 |
198 VariationParamsManager::VariationParamsManager( | |
199 const std::string& trial_name, | |
200 const std::map<std::string, std::string>& params) { | |
201 SetVariationParams(trial_name, params); | |
202 } | |
203 | |
204 VariationParamsManager::~VariationParamsManager() { | |
205 ClearAllVariationIDs(); | |
206 ClearAllVariationParams(); | |
207 field_trial_list_.reset(); | |
208 } | |
209 | |
210 void VariationParamsManager::SetVariationParams( | |
211 const std::string& trial_name, | |
212 const std::map<std::string, std::string>& params) { | |
213 field_trial_list_.reset(new base::FieldTrialList(nullptr)); | |
214 variations::AssociateVariationParams(trial_name, kGroupTesting, params); | |
215 base::FieldTrialList::CreateFieldTrial(trial_name, kGroupTesting); | |
216 } | |
217 | |
218 void ClearAllVariationIDs() { | 197 void ClearAllVariationIDs() { |
219 GroupMapAccessor::GetInstance()->ClearAllMapsForTesting(); | 198 GroupMapAccessor::GetInstance()->ClearAllMapsForTesting(); |
220 } | 199 } |
221 | 200 |
222 void ClearAllVariationParams() { | 201 void ClearAllVariationParams() { |
223 base::FieldTrialParamAssociator::GetInstance()->ClearAllParamsForTesting(); | 202 base::FieldTrialParamAssociator::GetInstance()->ClearAllParamsForTesting(); |
224 } | 203 } |
225 | 204 |
226 } // namespace testing | 205 } // namespace testing |
227 | 206 |
228 } // namespace variations | 207 } // namespace variations |
OLD | NEW |