OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chrome/common/variations/variations_util.h" | 5 #include "chrome/common/variations/variations_util.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/metrics/field_trial.h" | |
10 #include "base/strings/string_split.h" | 11 #include "base/strings/string_split.h" |
11 #include "chrome/common/child_process_logging.h" | 12 #include "chrome/common/child_process_logging.h" |
12 #include "chrome/common/crash_keys.h" | 13 #include "chrome/common/crash_keys.h" |
14 #include "chrome/common/variations/fieldtrial_testing_config.h" | |
13 #include "components/variations/active_field_trials.h" | 15 #include "components/variations/active_field_trials.h" |
14 #include "components/variations/variations_associated_data.h" | 16 #include "components/variations/variations_associated_data.h" |
15 #include "net/base/escape.h" | 17 #include "net/base/escape.h" |
16 | 18 |
17 namespace chrome_variations { | 19 namespace chrome_variations { |
18 | 20 |
19 namespace { | 21 namespace { |
20 | 22 |
21 std::string EscapeValue(const std::string& value) { | 23 std::string EscapeValue(const std::string& value) { |
22 return net::UnescapeURLComponent(value, net::UnescapeRule::URL_SPECIAL_CHARS); | 24 return net::UnescapeURLComponent(value, net::UnescapeRule::URL_SPECIAL_CHARS); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
56 std::string value = EscapeValue(key_values[i + 1]); | 58 std::string value = EscapeValue(key_values[i + 1]); |
57 params[key] = value; | 59 params[key] = value; |
58 } | 60 } |
59 std::string trial = EscapeValue(group_parts[0]); | 61 std::string trial = EscapeValue(group_parts[0]); |
60 std::string group = EscapeValue(group_parts[1]); | 62 std::string group = EscapeValue(group_parts[1]); |
61 variations::AssociateVariationParams(trial, group, params); | 63 variations::AssociateVariationParams(trial, group, params); |
62 } | 64 } |
63 return true; | 65 return true; |
64 } | 66 } |
65 | 67 |
68 bool AssociateParamsFromFieldTrialConfig( | |
69 const FieldTrialTestingConfig& config) { | |
70 for (size_t i = 0; i < config.groups_size; ++i) { | |
71 const FieldTrialTestingGroup& group = config.groups[i]; | |
72 if (group.params_size != 0) { | |
73 std::map<std::string, std::string> params; | |
74 for (size_t j = 0; j < group.params_size; ++j) { | |
75 const FieldTrialGroupParams& param = group.params[j]; | |
76 params[param.key] = param.value; | |
77 } | |
78 variations::AssociateVariationParams(group.study, group.group_name, | |
79 params); | |
80 } | |
81 base::FieldTrialList::CreateFieldTrial(group.study, group.group_name); | |
82 } | |
83 return true; | |
brettw
2015/07/15 17:56:51
This function never fails, but the code carefully
| |
84 } | |
85 | |
86 bool AssociateDefaultFieldTrialConfig() { | |
87 return AssociateParamsFromFieldTrialConfig(kFieldTrialConfig); | |
88 } | |
89 | |
66 } // namespace chrome_variations | 90 } // namespace chrome_variations |
OLD | NEW |