OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/browser/chrome_browser_field_trials.h" | 5 #include "chrome/browser/chrome_browser_field_trials.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/metrics/field_trial.h" | 10 #include "base/metrics/field_trial.h" |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 const CommandLine& parsed_command_line) : | 52 const CommandLine& parsed_command_line) : |
53 parsed_command_line_(parsed_command_line) { | 53 parsed_command_line_(parsed_command_line) { |
54 } | 54 } |
55 | 55 |
56 ChromeBrowserFieldTrials::~ChromeBrowserFieldTrials() { | 56 ChromeBrowserFieldTrials::~ChromeBrowserFieldTrials() { |
57 } | 57 } |
58 | 58 |
59 void ChromeBrowserFieldTrials::SetupFieldTrials( | 59 void ChromeBrowserFieldTrials::SetupFieldTrials( |
60 const base::Time& install_time) { | 60 const base::Time& install_time) { |
61 chrome_variations::SetupUniformityFieldTrials(install_time); | 61 chrome_variations::SetupUniformityFieldTrials(install_time); |
| 62 SetUpSimpleCacheFieldTrial(); |
62 #if !defined(OS_ANDROID) | 63 #if !defined(OS_ANDROID) |
63 SetupDesktopFieldTrials(); | 64 SetupDesktopFieldTrials(); |
64 #endif // defined(OS_ANDROID) | 65 #endif // defined(OS_ANDROID) |
65 } | 66 } |
66 | 67 |
67 void ChromeBrowserFieldTrials::SetupDesktopFieldTrials() { | 68 void ChromeBrowserFieldTrials::SetupDesktopFieldTrials() { |
68 prerender::ConfigurePrefetchAndPrerender(parsed_command_line_); | 69 prerender::ConfigurePrefetchAndPrerender(parsed_command_line_); |
69 SpdyFieldTrial(); | 70 SpdyFieldTrial(); |
70 WarmConnectionFieldTrial(); | 71 WarmConnectionFieldTrial(); |
71 AutoLaunchChromeFieldTrial(); | 72 AutoLaunchChromeFieldTrial(); |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 #if defined(OS_CHROMEOS) | 185 #if defined(OS_CHROMEOS) |
185 avatar_menu_always_hidden = true; | 186 avatar_menu_always_hidden = true; |
186 #endif | 187 #endif |
187 base::FieldTrial* trial = base::FieldTrialList::Find("ShowProfileSwitcher"); | 188 base::FieldTrial* trial = base::FieldTrialList::Find("ShowProfileSwitcher"); |
188 if (trial && (!ProfileManager::IsMultipleProfilesEnabled() || | 189 if (trial && (!ProfileManager::IsMultipleProfilesEnabled() || |
189 avatar_menu_always_hidden)) { | 190 avatar_menu_always_hidden)) { |
190 trial->Disable(); | 191 trial->Disable(); |
191 } | 192 } |
192 } | 193 } |
193 | 194 |
| 195 // Sets up the experiment. The actual cache backend choice is made in the net/ |
| 196 // internals by looking at the experiment state. |
| 197 void ChromeBrowserFieldTrials::SetUpSimpleCacheFieldTrial() { |
| 198 if (parsed_command_line_.HasSwitch(switches::kUseSimpleCacheBackend)) { |
| 199 const std::string opt_value = parsed_command_line_.GetSwitchValueASCII( |
| 200 switches::kUseSimpleCacheBackend); |
| 201 if (LowerCaseEqualsASCII(opt_value, "off")) { |
| 202 // This is the default. |
| 203 return; |
| 204 } |
| 205 const base::FieldTrial::Probability kDivisor = 100; |
| 206 scoped_refptr<base::FieldTrial> trial( |
| 207 base::FieldTrialList::FactoryGetFieldTrial("SimpleCacheTrial", kDivisor, |
| 208 "No", 2013, 12, 31, NULL)); |
| 209 trial->UseOneTimeRandomization(); |
| 210 if (LowerCaseEqualsASCII(opt_value, "on")) { |
| 211 trial->AppendGroup("Yes", 100); |
| 212 return; |
| 213 } |
| 214 #if defined(OS_ANDROID) |
| 215 if (LowerCaseEqualsASCII(opt_value, "experiment")) { |
| 216 // TODO(pasko): Make this the default on Android when the simple cache |
| 217 // adds a few more necessary features. Also adjust the probability. |
| 218 const base::FieldTrial::Probability kSimpleCacheProbability = 1; |
| 219 trial->AppendGroup("Yes", kSimpleCacheProbability); |
| 220 trial->AppendGroup("Control", kSimpleCacheProbability); |
| 221 trial->group(); |
| 222 } |
| 223 #endif |
| 224 } |
| 225 } |
| 226 |
194 void ChromeBrowserFieldTrials::SetUpCacheSensitivityAnalysisFieldTrial() { | 227 void ChromeBrowserFieldTrials::SetUpCacheSensitivityAnalysisFieldTrial() { |
195 const base::FieldTrial::Probability kDivisor = 100; | 228 const base::FieldTrial::Probability kDivisor = 100; |
196 | 229 |
197 base::FieldTrial::Probability sensitivity_analysis_probability = 0; | 230 base::FieldTrial::Probability sensitivity_analysis_probability = 0; |
198 | 231 |
199 scoped_refptr<base::FieldTrial> trial( | 232 scoped_refptr<base::FieldTrial> trial( |
200 base::FieldTrialList::FactoryGetFieldTrial("CacheSensitivityAnalysis", | 233 base::FieldTrialList::FactoryGetFieldTrial("CacheSensitivityAnalysis", |
201 kDivisor, "No", | 234 kDivisor, "No", |
202 2012, 12, 31, NULL)); | 235 2012, 12, 31, NULL)); |
203 trial->AppendGroup("ControlA", sensitivity_analysis_probability); | 236 trial->AppendGroup("ControlA", sensitivity_analysis_probability); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 // Call |FindValue()| on the trials below, which may come from the server, to | 270 // Call |FindValue()| on the trials below, which may come from the server, to |
238 // ensure they get marked as "used" for the purposes of data reporting. | 271 // ensure they get marked as "used" for the purposes of data reporting. |
239 base::FieldTrialList::FindValue("UMA-Dynamic-Binary-Uniformity-Trial"); | 272 base::FieldTrialList::FindValue("UMA-Dynamic-Binary-Uniformity-Trial"); |
240 base::FieldTrialList::FindValue("UMA-Dynamic-Uniformity-Trial"); | 273 base::FieldTrialList::FindValue("UMA-Dynamic-Uniformity-Trial"); |
241 base::FieldTrialList::FindValue("InstantDummy"); | 274 base::FieldTrialList::FindValue("InstantDummy"); |
242 base::FieldTrialList::FindValue("InstantChannel"); | 275 base::FieldTrialList::FindValue("InstantChannel"); |
243 base::FieldTrialList::FindValue("Test0PercentDefault"); | 276 base::FieldTrialList::FindValue("Test0PercentDefault"); |
244 // Activate the autocomplete dynamic field trials. | 277 // Activate the autocomplete dynamic field trials. |
245 OmniboxFieldTrial::ActivateDynamicTrials(); | 278 OmniboxFieldTrial::ActivateDynamicTrials(); |
246 } | 279 } |
OLD | NEW |