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_seed_processor.h" | 5 #include "components/variations/variations_seed_processor.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <map> | 9 #include <map> |
10 #include <vector> | 10 #include <vector> |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 ApplyUIStringOverrides(experiment, override_callback); | 94 ApplyUIStringOverrides(experiment, override_callback); |
95 } | 95 } |
96 } | 96 } |
97 | 97 |
98 // Registers feature overrides for the chosen experiment in the specified study. | 98 // Registers feature overrides for the chosen experiment in the specified study. |
99 void RegisterFeatureOverrides(const ProcessedStudy& processed_study, | 99 void RegisterFeatureOverrides(const ProcessedStudy& processed_study, |
100 base::FieldTrial* trial, | 100 base::FieldTrial* trial, |
101 base::FeatureList* feature_list) { | 101 base::FeatureList* feature_list) { |
102 const std::string& group_name = trial->GetGroupNameWithoutActivation(); | 102 const std::string& group_name = trial->GetGroupNameWithoutActivation(); |
103 int experiment_index = processed_study.GetExperimentIndexByName(group_name); | 103 int experiment_index = processed_study.GetExperimentIndexByName(group_name); |
104 // The field trial was defined from |study|, so the active experiment's name | 104 // If the chosen experiment was not found in the study, simply return. |
105 // must be in the |study|. | 105 // Although not normally expected, but could happen in exception cases, see |
106 DCHECK_NE(-1, experiment_index); | 106 // tests: ExpiredStudy_NoDefaultGroup, ExistingFieldTrial_ExpiredByConfig |
| 107 if (experiment_index == -1) |
| 108 return; |
107 | 109 |
108 const Study& study = *processed_study.study(); | 110 const Study& study = *processed_study.study(); |
109 const Study_Experiment& experiment = study.experiment(experiment_index); | 111 const Study_Experiment& experiment = study.experiment(experiment_index); |
110 | 112 |
111 // Process all the features to enable. | 113 // Process all the features to enable. |
112 int feature_count = experiment.feature_association().enable_feature_size(); | 114 int feature_count = experiment.feature_association().enable_feature_size(); |
113 for (int i = 0; i < feature_count; ++i) { | 115 for (int i = 0; i < feature_count; ++i) { |
114 feature_list->RegisterFieldTrialOverride( | 116 feature_list->RegisterFieldTrialOverride( |
115 experiment.feature_association().enable_feature(i), | 117 experiment.feature_association().enable_feature(i), |
116 base::FeatureList::OVERRIDE_ENABLE_FEATURE, trial); | 118 base::FeatureList::OVERRIDE_ENABLE_FEATURE, trial); |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
318 // params won't be registered under the correct key. | 320 // params won't be registered under the correct key. |
319 const std::string& group_name = trial->group_name(); | 321 const std::string& group_name = trial->group_name(); |
320 | 322 |
321 // Don't try to apply overrides if none of the experiments in this study had | 323 // Don't try to apply overrides if none of the experiments in this study had |
322 // any. | 324 // any. |
323 if (!has_overrides) | 325 if (!has_overrides) |
324 return; | 326 return; |
325 | 327 |
326 // UI Strings can only be overridden from ACTIVATION_AUTO experiments. | 328 // UI Strings can only be overridden from ACTIVATION_AUTO experiments. |
327 int experiment_index = processed_study.GetExperimentIndexByName(group_name); | 329 int experiment_index = processed_study.GetExperimentIndexByName(group_name); |
328 | 330 // If the chosen experiment was not found in the study, simply return. |
329 // The field trial was defined from |study|, so the active experiment's name | 331 // Although not normally expected, but could happen in exception cases, see |
330 // must be in the |study|. | 332 // tests: ExpiredStudy_NoDefaultGroup, ExistingFieldTrial_ExpiredByConfig |
331 DCHECK_NE(-1, experiment_index); | 333 if (experiment_index != -1) { |
332 | 334 ApplyUIStringOverrides(study.experiment(experiment_index), |
333 ApplyUIStringOverrides(study.experiment(experiment_index), | 335 override_callback); |
334 override_callback); | 336 } |
335 } | 337 } |
336 } | 338 } |
337 | 339 |
338 } // namespace variations | 340 } // namespace variations |
OLD | NEW |