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/prerender/prerender_field_trial.h" | 5 #include "chrome/browser/prerender/prerender_field_trial.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/metrics/field_trial.h" | 9 #include "base/metrics/field_trial.h" |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 21 | 21 |
| 22 namespace prerender { | 22 namespace prerender { |
| 23 | 23 |
| 24 namespace { | 24 namespace { |
| 25 | 25 |
| 26 const char kOmniboxTrialName[] = "PrerenderFromOmnibox"; | 26 const char kOmniboxTrialName[] = "PrerenderFromOmnibox"; |
| 27 int g_omnibox_trial_default_group_number = kint32min; | 27 int g_omnibox_trial_default_group_number = kint32min; |
| 28 | 28 |
| 29 const char kLocalPredictorTrialName[] = "PrerenderLocalPredictor"; | 29 const char kLocalPredictorTrialName[] = "PrerenderLocalPredictor"; |
| 30 const char kLocalPredictorEnabledGroup[] = "Enabled"; | 30 const char kLocalPredictorEnabledGroup[] = "Enabled"; |
| 31 const char kLocalPredictorDisabledGroup[] = "Disabled"; | |
| 31 | 32 |
| 32 const char kLoggedInPredictorTrialName[] = "PrerenderLoggedInPredictor"; | 33 const char kLoggedInPredictorTrialName[] = "PrerenderLoggedInPredictor"; |
| 33 const char kLoggedInPredictorEnabledGroup[] = "Enabled"; | 34 const char kLoggedInPredictorEnabledGroup[] = "Enabled"; |
| 34 const char kLoggedInPredictorDisabledGroup[] = "Disabled"; | 35 const char kLoggedInPredictorDisabledGroup[] = "Disabled"; |
| 35 | 36 |
| 36 const char kSideEffectFreeWhitelistTrialName[] = "SideEffectFreeWhitelist"; | 37 const char kSideEffectFreeWhitelistTrialName[] = "SideEffectFreeWhitelist"; |
| 37 const char kSideEffectFreeWhitelistEnabledGroup[] = "Enabled"; | 38 const char kSideEffectFreeWhitelistEnabledGroup[] = "Enabled"; |
| 38 const char kSideEffectFreeWhitelistDisabledGroup[] = "Disabled"; | 39 const char kSideEffectFreeWhitelistDisabledGroup[] = "Disabled"; |
| 39 | 40 |
| 40 void SetupPrefetchFieldTrial() { | 41 void SetupPrefetchFieldTrial() { |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 142 PrerenderManager::SetMode( | 143 PrerenderManager::SetMode( |
| 143 PrerenderManager::PRERENDER_MODE_EXPERIMENT_NO_USE_GROUP); | 144 PrerenderManager::PRERENDER_MODE_EXPERIMENT_NO_USE_GROUP); |
| 144 } else { | 145 } else { |
| 145 NOTREACHED(); | 146 NOTREACHED(); |
| 146 } | 147 } |
| 147 } | 148 } |
| 148 | 149 |
| 149 } // end namespace | 150 } // end namespace |
| 150 | 151 |
| 151 void ConfigureOmniboxPrerender(); | 152 void ConfigureOmniboxPrerender(); |
| 153 void ConfigureLocalPredictor(); | |
| 152 void ConfigureLoggedInPredictor(); | 154 void ConfigureLoggedInPredictor(); |
| 153 void ConfigureSideEffectFreeWhitelist(); | 155 void ConfigureSideEffectFreeWhitelist(); |
| 154 | 156 |
| 155 void ConfigurePrefetchAndPrerender(const CommandLine& command_line) { | 157 void ConfigurePrefetchAndPrerender(const CommandLine& command_line) { |
| 156 enum PrerenderOption { | 158 enum PrerenderOption { |
| 157 PRERENDER_OPTION_AUTO, | 159 PRERENDER_OPTION_AUTO, |
| 158 PRERENDER_OPTION_DISABLED, | 160 PRERENDER_OPTION_DISABLED, |
| 159 PRERENDER_OPTION_ENABLED, | 161 PRERENDER_OPTION_ENABLED, |
| 160 PRERENDER_OPTION_PREFETCH_ONLY, | 162 PRERENDER_OPTION_PREFETCH_ONLY, |
| 161 }; | 163 }; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 200 break; | 202 break; |
| 201 case PRERENDER_OPTION_PREFETCH_ONLY: | 203 case PRERENDER_OPTION_PREFETCH_ONLY: |
| 202 PrerenderManager::SetIsPrefetchEnabled(true); | 204 PrerenderManager::SetIsPrefetchEnabled(true); |
| 203 PrerenderManager::SetMode(PrerenderManager::PRERENDER_MODE_DISABLED); | 205 PrerenderManager::SetMode(PrerenderManager::PRERENDER_MODE_DISABLED); |
| 204 break; | 206 break; |
| 205 default: | 207 default: |
| 206 NOTREACHED(); | 208 NOTREACHED(); |
| 207 } | 209 } |
| 208 | 210 |
| 209 ConfigureOmniboxPrerender(); | 211 ConfigureOmniboxPrerender(); |
| 212 ConfigureLocalPredictor(); | |
| 210 ConfigureLoggedInPredictor(); | 213 ConfigureLoggedInPredictor(); |
| 211 ConfigureSideEffectFreeWhitelist(); | 214 ConfigureSideEffectFreeWhitelist(); |
| 212 } | 215 } |
| 213 | 216 |
| 214 void ConfigureOmniboxPrerender() { | 217 void ConfigureOmniboxPrerender() { |
| 215 // Field trial to see if we're enabled. | 218 // Field trial to see if we're enabled. |
| 216 const FieldTrial::Probability kDivisor = 100; | 219 const FieldTrial::Probability kDivisor = 100; |
| 217 | 220 |
| 218 FieldTrial::Probability kDisabledProbability = 10; | 221 FieldTrial::Probability kDisabledProbability = 10; |
| 219 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); | 222 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); |
| 220 if (channel == chrome::VersionInfo::CHANNEL_STABLE || | 223 if (channel == chrome::VersionInfo::CHANNEL_STABLE || |
| 221 channel == chrome::VersionInfo::CHANNEL_BETA) { | 224 channel == chrome::VersionInfo::CHANNEL_BETA) { |
| 222 kDisabledProbability = 1; | 225 kDisabledProbability = 1; |
| 223 } | 226 } |
| 224 scoped_refptr<FieldTrial> omnibox_prerender_trial( | 227 scoped_refptr<FieldTrial> omnibox_prerender_trial( |
| 225 FieldTrialList::FactoryGetFieldTrial( | 228 FieldTrialList::FactoryGetFieldTrial( |
| 226 kOmniboxTrialName, kDivisor, "OmniboxPrerenderEnabled", | 229 kOmniboxTrialName, kDivisor, "OmniboxPrerenderEnabled", |
| 227 2013, 12, 31, &g_omnibox_trial_default_group_number)); | 230 2013, 12, 31, &g_omnibox_trial_default_group_number)); |
| 228 omnibox_prerender_trial->AppendGroup("OmniboxPrerenderDisabled", | 231 omnibox_prerender_trial->AppendGroup("OmniboxPrerenderDisabled", |
| 229 kDisabledProbability); | 232 kDisabledProbability); |
| 230 } | 233 } |
| 231 | 234 |
| 235 void ConfigureLocalPredictor() { | |
| 236 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); | |
|
Shishir
2013/05/07 22:57:30
Since this can have bad side effects there should
tburkard
2013/05/07 23:21:59
I will do this separately (before committing), but
| |
| 237 if (channel == chrome::VersionInfo::CHANNEL_STABLE || | |
| 238 channel == chrome::VersionInfo::CHANNEL_BETA) { | |
| 239 return; | |
| 240 } | |
| 241 scoped_refptr<FieldTrial> local_predictor_trial( | |
| 242 FieldTrialList::FactoryGetFieldTrial( | |
| 243 kLocalPredictorTrialName, 100, | |
| 244 kLocalPredictorDisabledGroup, 2013, 12, 31, NULL)); | |
| 245 local_predictor_trial->AppendGroup(kLocalPredictorEnabledGroup, 100); | |
| 246 } | |
| 247 | |
| 232 void ConfigureLoggedInPredictor() { | 248 void ConfigureLoggedInPredictor() { |
| 233 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); | 249 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); |
| 234 if (channel == chrome::VersionInfo::CHANNEL_STABLE || | 250 if (channel == chrome::VersionInfo::CHANNEL_STABLE || |
| 235 channel == chrome::VersionInfo::CHANNEL_BETA) { | 251 channel == chrome::VersionInfo::CHANNEL_BETA) { |
| 236 return; | 252 return; |
| 237 } | 253 } |
| 238 scoped_refptr<FieldTrial> logged_in_predictor_trial( | 254 scoped_refptr<FieldTrial> logged_in_predictor_trial( |
| 239 FieldTrialList::FactoryGetFieldTrial( | 255 FieldTrialList::FactoryGetFieldTrial( |
| 240 kLoggedInPredictorTrialName, 100, | 256 kLoggedInPredictorTrialName, 100, |
| 241 kLoggedInPredictorDisabledGroup, 2013, 12, 31, NULL)); | 257 kLoggedInPredictorDisabledGroup, 2013, 12, 31, NULL)); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 293 return base::FieldTrialList::FindFullName(kLoggedInPredictorTrialName) == | 309 return base::FieldTrialList::FindFullName(kLoggedInPredictorTrialName) == |
| 294 kLoggedInPredictorEnabledGroup; | 310 kLoggedInPredictorEnabledGroup; |
| 295 } | 311 } |
| 296 | 312 |
| 297 bool IsSideEffectFreeWhitelistEnabled() { | 313 bool IsSideEffectFreeWhitelistEnabled() { |
| 298 return base::FieldTrialList::FindFullName(kSideEffectFreeWhitelistTrialName) | 314 return base::FieldTrialList::FindFullName(kSideEffectFreeWhitelistTrialName) |
| 299 == kSideEffectFreeWhitelistEnabledGroup; | 315 == kSideEffectFreeWhitelistEnabledGroup; |
| 300 } | 316 } |
| 301 | 317 |
| 302 } // namespace prerender | 318 } // namespace prerender |
| OLD | NEW |