Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: chrome/browser/prerender/prerender_field_trial.cc

Issue 15021007: Do conservative prerendering based on the LocalPredictor in Dev/Canary. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_histograms.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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();
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));
242 logged_in_predictor_trial->AppendGroup(kLoggedInPredictorEnabledGroup, 100); 258 logged_in_predictor_trial->AppendGroup(kLoggedInPredictorEnabledGroup, 100);
243 } 259 }
244 260
245 void ConfigureSideEffectFreeWhitelist() { 261 void ConfigureSideEffectFreeWhitelist() {
246 scoped_refptr<FieldTrial> side_effect_free_whitelist_trial( 262 scoped_refptr<FieldTrial> side_effect_free_whitelist_trial(
247 FieldTrialList::FactoryGetFieldTrial( 263 FieldTrialList::FactoryGetFieldTrial(
248 kSideEffectFreeWhitelistTrialName, 100, 264 kSideEffectFreeWhitelistTrialName, 100,
249 kSideEffectFreeWhitelistDisabledGroup, 2013, 12, 31, NULL)); 265 kSideEffectFreeWhitelistDisabledGroup, 2013, 12, 31, NULL));
250 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); 266 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel();
251 if (channel == chrome::VersionInfo::CHANNEL_STABLE || 267 if (channel == chrome::VersionInfo::CHANNEL_STABLE ||
252 channel == chrome::VersionInfo::CHANNEL_BETA) { 268 channel == chrome::VersionInfo::CHANNEL_BETA) {
253 return; 269 return;
254 } 270 }
255 side_effect_free_whitelist_trial->AppendGroup( 271 side_effect_free_whitelist_trial->AppendGroup(
256 kSideEffectFreeWhitelistEnabledGroup, 100); 272 kSideEffectFreeWhitelistEnabledGroup, 0);
257 } 273 }
258 274
259 bool IsOmniboxEnabled(Profile* profile) { 275 bool IsOmniboxEnabled(Profile* profile) {
260 if (!profile) 276 if (!profile)
261 return false; 277 return false;
262 278
263 if (!PrerenderManager::IsPrerenderingPossible()) 279 if (!PrerenderManager::IsPrerenderingPossible())
264 return false; 280 return false;
265 281
266 // Override any field trial groups if the user has set a command line flag. 282 // Override any field trial groups if the user has set a command line flag.
(...skipping 11 matching lines...) Expand all
278 294
279 DCHECK(switch_value == switches::kPrerenderFromOmniboxSwitchValueAuto); 295 DCHECK(switch_value == switches::kPrerenderFromOmniboxSwitchValueAuto);
280 } 296 }
281 297
282 const int group = FieldTrialList::FindValue(kOmniboxTrialName); 298 const int group = FieldTrialList::FindValue(kOmniboxTrialName);
283 return group == FieldTrial::kNotFinalized || 299 return group == FieldTrial::kNotFinalized ||
284 group == g_omnibox_trial_default_group_number; 300 group == g_omnibox_trial_default_group_number;
285 } 301 }
286 302
287 bool IsLocalPredictorEnabled() { 303 bool IsLocalPredictorEnabled() {
304 #if defined(OS_ANDROID) || defined(OS_IOS)
305 return false;
306 #endif
307 if (CommandLine::ForCurrentProcess()->HasSwitch(
308 switches::kDisablePrerenderLocalPredictor)) {
309 return false;
310 }
288 return base::FieldTrialList::FindFullName(kLocalPredictorTrialName) == 311 return base::FieldTrialList::FindFullName(kLocalPredictorTrialName) ==
289 kLocalPredictorEnabledGroup; 312 kLocalPredictorEnabledGroup;
290 } 313 }
291 314
292 bool IsLoggedInPredictorEnabled() { 315 bool IsLoggedInPredictorEnabled() {
293 return base::FieldTrialList::FindFullName(kLoggedInPredictorTrialName) == 316 return base::FieldTrialList::FindFullName(kLoggedInPredictorTrialName) ==
294 kLoggedInPredictorEnabledGroup; 317 kLoggedInPredictorEnabledGroup;
295 } 318 }
296 319
297 bool IsSideEffectFreeWhitelistEnabled() { 320 bool IsSideEffectFreeWhitelistEnabled() {
298 return base::FieldTrialList::FindFullName(kSideEffectFreeWhitelistTrialName) 321 return base::FieldTrialList::FindFullName(kSideEffectFreeWhitelistTrialName)
299 == kSideEffectFreeWhitelistEnabledGroup; 322 == kSideEffectFreeWhitelistEnabledGroup;
300 } 323 }
301 324
302 } // namespace prerender 325 } // namespace prerender
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_histograms.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698