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 |