Chromium Code Reviews| Index: chrome/browser/prerender/prerender_field_trial.cc |
| diff --git a/chrome/browser/prerender/prerender_field_trial.cc b/chrome/browser/prerender/prerender_field_trial.cc |
| index d8fd77e19cb85139a41dc7cd27e1642846032892..d2bcfecf871d15cae0becef4ed8ad89858a6686a 100644 |
| --- a/chrome/browser/prerender/prerender_field_trial.cc |
| +++ b/chrome/browser/prerender/prerender_field_trial.cc |
| @@ -23,6 +23,10 @@ namespace { |
| const char kOmniboxTrialName[] = "PrerenderFromOmnibox"; |
| int g_omnibox_trial_default_group_number = -1; |
| +const char kSpeculativePrefetchingLearningTrialName[] = |
| + "SpeculativePrefetchingLearning"; |
| +int g_speculative_prfetching_learning_default_group_number = -1; |
|
dominich
2012/07/09 20:57:23
typo: prefetching
Shishir
2012/07/09 21:02:01
Done.
|
| + |
| void SetupPrefetchFieldTrial() { |
| chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); |
| if (channel == chrome::VersionInfo::CHANNEL_STABLE || |
| @@ -123,6 +127,8 @@ void SetupPrerenderFieldTrial() { |
| void ConfigureOmniboxPrerender(); |
|
dominich
2012/07/09 20:57:23
nit: remove blank line
Shishir
2012/07/09 21:02:01
Done.
|
| +void ConfigureSpeculativePrefetching(); |
| + |
| void ConfigurePrefetchAndPrerender(const CommandLine& command_line) { |
| enum PrerenderOption { |
| PRERENDER_OPTION_AUTO, |
| @@ -182,6 +188,7 @@ void ConfigurePrefetchAndPrerender(const CommandLine& command_line) { |
| PrerenderManager::PRERENDER_MODE_MAX); |
| ConfigureOmniboxPrerender(); |
| + ConfigureSpeculativePrefetching(); |
| } |
| void ConfigureOmniboxPrerender() { |
| @@ -230,4 +237,46 @@ bool IsOmniboxEnabled(Profile* profile) { |
| group == g_omnibox_trial_default_group_number; |
| } |
| +void ConfigureSpeculativePrefetching() { |
| + // Field trial to see if we're enabled. |
| + const base::FieldTrial::Probability kDivisor = 100; |
| + |
| + base::FieldTrial::Probability kDisabledProbability = 99; |
| + chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); |
| + if (channel == chrome::VersionInfo::CHANNEL_STABLE || |
| + channel == chrome::VersionInfo::CHANNEL_BETA) { |
| + kDisabledProbability = 100; |
| + } |
| + scoped_refptr<base::FieldTrial> speculative_prefetching_learning_trial( |
| + base::FieldTrialList::FactoryGetFieldTrial( |
| + kSpeculativePrefetchingLearningTrialName, |
| + kDivisor, |
| + "SpeculativePrefetchingLearningEnabled", |
| + 2012, 12, 30, |
| + &g_speculative_prfetching_learning_default_group_number)); |
| + speculative_prefetching_learning_trial->AppendGroup( |
| + "SpeculativePrefetchingDisabled", |
| + kDisabledProbability); |
| +} |
| + |
| +bool IsSpeculativeResourcePrefetchingLearningEnabled(Profile* profile) { |
| + if (!profile) |
| + return false; |
| + |
| + // Override any field trial groups if the user has set a command line flag. |
| + if (CommandLine::ForCurrentProcess()->HasSwitch( |
| + switches::kSpeculativeResourcePrefetching)) { |
| + const std::string switch_value = |
| + CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
| + switches::kSpeculativeResourcePrefetching); |
| + |
| + if (switch_value == switches::kSpeculativeResourcePrefetchingLearning) |
| + return true; |
| + } |
| + |
| + const int group = base::FieldTrialList::FindValue( |
| + kSpeculativePrefetchingLearningTrialName); |
| + return group == g_speculative_prfetching_learning_default_group_number; |
| +} |
| + |
| } // namespace prerender |