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/metrics/field_trial.h" |
(...skipping 16 matching lines...) Expand all Loading... |
27 } // namespace | 27 } // namespace |
28 | 28 |
29 void SetChildProcessLoggingVariationList() { | 29 void SetChildProcessLoggingVariationList() { |
30 std::vector<std::string> experiment_strings; | 30 std::vector<std::string> experiment_strings; |
31 variations::GetFieldTrialActiveGroupIdsAsStrings(&experiment_strings); | 31 variations::GetFieldTrialActiveGroupIdsAsStrings(&experiment_strings); |
32 crash_keys::SetVariationsList(experiment_strings); | 32 crash_keys::SetVariationsList(experiment_strings); |
33 } | 33 } |
34 | 34 |
35 bool AssociateParamsFromString(const std::string& varations_string) { | 35 bool AssociateParamsFromString(const std::string& varations_string) { |
36 // Format: Trial1.Group1:k1/v1/k2/v2,Trial2.Group2:k1/v1/k2/v2 | 36 // Format: Trial1.Group1:k1/v1/k2/v2,Trial2.Group2:k1/v1/k2/v2 |
37 std::vector<std::string> experiment_groups; | 37 for (const base::StringPiece& experiment_group : base::SplitStringPiece( |
38 base::SplitString(varations_string, ',', &experiment_groups); | 38 varations_string, ",", |
39 for (const auto& experiment_group : experiment_groups) { | 39 base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) { |
40 std::vector<std::string> experiment; | 40 std::vector<base::StringPiece> experiment = base::SplitStringPiece( |
41 base::SplitString(experiment_group, ':', &experiment); | 41 experiment_group, ":", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); |
42 if (experiment.size() != 2) | 42 if (experiment.size() != 2) |
43 return false; | 43 return false; |
44 | 44 |
45 std::vector<std::string> group_parts; | 45 std::vector<std::string> group_parts = base::SplitString( |
46 base::SplitString(experiment[0], '.', &group_parts); | 46 experiment[0], ".", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); |
47 if (group_parts.size() != 2) | 47 if (group_parts.size() != 2) |
48 return false; | 48 return false; |
49 | 49 |
50 std::vector<std::string> key_values; | 50 std::vector<std::string> key_values = base::SplitString( |
51 base::SplitString(experiment[1], '/', &key_values); | 51 experiment[1], "/", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); |
52 if (key_values.size() % 2 != 0) | 52 if (key_values.size() % 2 != 0) |
53 return false; | 53 return false; |
54 | 54 |
55 std::map<std::string, std::string> params; | 55 std::map<std::string, std::string> params; |
56 for (size_t i = 0; i < key_values.size(); i += 2) { | 56 for (size_t i = 0; i < key_values.size(); i += 2) { |
57 std::string key = EscapeValue(key_values[i]); | 57 std::string key = EscapeValue(key_values[i]); |
58 std::string value = EscapeValue(key_values[i + 1]); | 58 std::string value = EscapeValue(key_values[i + 1]); |
59 params[key] = value; | 59 params[key] = value; |
60 } | 60 } |
61 std::string trial = EscapeValue(group_parts[0]); | 61 std::string trial = EscapeValue(group_parts[0]); |
(...skipping 18 matching lines...) Expand all Loading... |
80 } | 80 } |
81 base::FieldTrialList::CreateFieldTrial(group.study, group.group_name); | 81 base::FieldTrialList::CreateFieldTrial(group.study, group.group_name); |
82 } | 82 } |
83 } | 83 } |
84 | 84 |
85 void AssociateDefaultFieldTrialConfig() { | 85 void AssociateDefaultFieldTrialConfig() { |
86 AssociateParamsFromFieldTrialConfig(kFieldTrialConfig); | 86 AssociateParamsFromFieldTrialConfig(kFieldTrialConfig); |
87 } | 87 } |
88 | 88 |
89 } // namespace chrome_variations | 89 } // namespace chrome_variations |
OLD | NEW |