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 759b269c282aa34c30a1e51e7b37da6ad55e575c..9a750be2c66ec5eed3546b152b7f3617d93f1b15 100644 |
--- a/chrome/browser/prerender/prerender_field_trial.cc |
+++ b/chrome/browser/prerender/prerender_field_trial.cc |
@@ -44,6 +44,7 @@ const char kLocalPredictorUnencryptedSyncOnlyKeyName[] = |
const char kSideEffectFreeWhitelistKeyName[] = "SideEffectFreeWhitelist"; |
const char kPrerenderLaunchKeyName[] = "PrerenderLaunch"; |
const char kPrerenderAlwaysControlKeyName[] = "PrerenderAlwaysControl"; |
+const char kPrerenderPrefetchKeyName[] = "PrerenderPrefetch"; |
const char kPrerenderQueryPrerenderServiceKeyName[] = |
"PrerenderQueryPrerenderService"; |
const char kPrerenderQueryPrerenderServiceCurrentURLKeyName[] = |
@@ -57,6 +58,7 @@ const char kPrerenderTTLKeyName[] = "PrerenderTTLSeconds"; |
const char kPrerenderPriorityHalfLifeTimeKeyName[] = |
"PrerenderPriorityHalfLifeTimeSeconds"; |
const char kMaxConcurrentPrerenderKeyName[] = "MaxConcurrentPrerenders"; |
+const char kMaxLaunchPrerenderKeyName[] = "MaxLaunchPrerenders"; |
const char kSkipFragment[] = "SkipFragment"; |
const char kSkipHTTPS[] = "SkipHTTPS"; |
const char kSkipWhitelist[] = "SkipWhitelist"; |
@@ -328,7 +330,14 @@ bool IsLocalPredictorPrerenderLaunchEnabled() { |
} |
bool IsLocalPredictorPrerenderAlwaysControlEnabled() { |
- return GetLocalPredictorSpecValue(kPrerenderAlwaysControlKeyName) == |
+ // If we prefetch rather than prerender, we automatically also prerender |
+ // as a control group only. |
+ return (GetLocalPredictorSpecValue(kPrerenderAlwaysControlKeyName) == |
+ kEnabledGroup) || IsLocalPredictorPrerenderPrefetchEnabled(); |
+} |
+ |
+bool IsLocalPredictorPrerenderPrefetchEnabled() { |
+ return GetLocalPredictorSpecValue(kPrerenderPrefetchKeyName) == |
kEnabledGroup; |
} |
@@ -396,6 +405,14 @@ int GetLocalPredictorMaxConcurrentPrerenders() { |
return std::min(std::max(num_prerenders, 1), 10); |
} |
+int GetLocalPredictorMaxLaunchPrerenders() { |
+ int num_prerenders; |
+ StringToInt(GetLocalPredictorSpecValue(kMaxLaunchPrerenderKeyName), |
+ &num_prerenders); |
+ // Sanity check: Ensure the number of prerenders is between 1 and 10. |
+ return std::min(std::max(num_prerenders, 1), 10); |
+} |
+ |
bool SkipLocalPredictorFragment() { |
return GetLocalPredictorSpecValue(kSkipFragment) == kEnabledGroup; |
} |