Chromium Code Reviews| 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)) { | |
|
rvargas (doing something else)
2013/03/15 18:20:16
It is much simpler to remove the command line argu
SteveT
2013/03/15 18:30:41
This is true, but there are a couple small catches
| |
| 199 std::string opt_value = parsed_command_line_.GetSwitchValueASCII( | |
|
SteveT
2013/03/15 17:32:49
nit: const std::string
pasko-google - do not use
2013/03/15 18:27:52
Done.
| |
| 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 | |
|
rvargas (doing something else)
2013/03/15 18:20:16
That would also mean that there's no need to speci
pasko-google - do not use
2013/03/15 19:05:30
I just wanted to be clear about the intentions. I
| |
| 217 // adds a few more necessary features. Also adjust the probability. | |
| 218 base::FieldTrial::Probability simple_cache_probability = 1; | |
|
SteveT
2013/03/15 17:32:49
nit: const base::FieldTrial::Probability
pasko-google - do not use
2013/03/15 18:27:52
Done.
pasko-google - do not use
2013/03/15 18:27:52
Done.
| |
| 219 trial->AppendGroup("Yes", simple_cache_probability); | |
| 220 trial->AppendGroup("Control", simple_cache_probability); | |
|
SteveT
2013/03/15 17:32:49
For now, you're going to want to call
trial->grou
pasko-google - do not use
2013/03/15 18:27:52
Done.
| |
| 221 return; | |
| 222 } | |
| 223 CHECK(0) << "Only values (on|off|experiment) are supported for option " | |
|
rvargas (doing something else)
2013/03/15 18:20:16
Please don't crash release builds based on a comma
pasko-google - do not use
2013/03/15 19:05:30
My argument: there is value in failing early on in
rvargas (doing something else)
2013/03/15 19:16:25
Not convinced. The most common mistake is not to f
pasko-google - do not use
2013/03/15 21:30:57
I still have the opinion that the message overhead
| |
| 224 << switches::kUseSimpleCacheBackend << "."; | |
|
SteveT
2013/03/15 17:32:49
Question: There is no NOTREACHED() equivalent for
pasko-google - do not use
2013/03/15 18:27:52
I did not find one :(
| |
| 225 #endif | |
| 226 CHECK(0) << "Only values (on|off) are supported for option " | |
| 227 << switches::kUseSimpleCacheBackend << "."; | |
| 228 } | |
| 229 } | |
| 230 | |
| 194 void ChromeBrowserFieldTrials::SetUpCacheSensitivityAnalysisFieldTrial() { | 231 void ChromeBrowserFieldTrials::SetUpCacheSensitivityAnalysisFieldTrial() { |
| 195 const base::FieldTrial::Probability kDivisor = 100; | 232 const base::FieldTrial::Probability kDivisor = 100; |
| 196 | 233 |
| 197 base::FieldTrial::Probability sensitivity_analysis_probability = 0; | 234 base::FieldTrial::Probability sensitivity_analysis_probability = 0; |
| 198 | 235 |
| 199 scoped_refptr<base::FieldTrial> trial( | 236 scoped_refptr<base::FieldTrial> trial( |
| 200 base::FieldTrialList::FactoryGetFieldTrial("CacheSensitivityAnalysis", | 237 base::FieldTrialList::FactoryGetFieldTrial("CacheSensitivityAnalysis", |
| 201 kDivisor, "No", | 238 kDivisor, "No", |
| 202 2012, 12, 31, NULL)); | 239 2012, 12, 31, NULL)); |
| 203 trial->AppendGroup("ControlA", sensitivity_analysis_probability); | 240 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 | 274 // 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. | 275 // ensure they get marked as "used" for the purposes of data reporting. |
| 239 base::FieldTrialList::FindValue("UMA-Dynamic-Binary-Uniformity-Trial"); | 276 base::FieldTrialList::FindValue("UMA-Dynamic-Binary-Uniformity-Trial"); |
| 240 base::FieldTrialList::FindValue("UMA-Dynamic-Uniformity-Trial"); | 277 base::FieldTrialList::FindValue("UMA-Dynamic-Uniformity-Trial"); |
| 241 base::FieldTrialList::FindValue("InstantDummy"); | 278 base::FieldTrialList::FindValue("InstantDummy"); |
| 242 base::FieldTrialList::FindValue("InstantChannel"); | 279 base::FieldTrialList::FindValue("InstantChannel"); |
| 243 base::FieldTrialList::FindValue("Test0PercentDefault"); | 280 base::FieldTrialList::FindValue("Test0PercentDefault"); |
| 244 // Activate the autocomplete dynamic field trials. | 281 // Activate the autocomplete dynamic field trials. |
| 245 OmniboxFieldTrial::ActivateDynamicTrials(); | 282 OmniboxFieldTrial::ActivateDynamicTrials(); |
| 246 } | 283 } |
| OLD | NEW |