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 |