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 a8e8991df723ba631ba9a38eafab797e3f0d6f3a..59d3b87c3a83e45ac7a5ed0122929c21512ae4be 100644 |
--- a/chrome/browser/prerender/prerender_field_trial.cc |
+++ b/chrome/browser/prerender/prerender_field_trial.cc |
@@ -16,6 +16,9 @@ |
#include "chrome/common/chrome_switches.h" |
#include "chrome/common/chrome_version_info.h" |
+using base::FieldTrial; |
+using base::FieldTrialList; |
+ |
namespace prerender { |
namespace { |
@@ -34,10 +37,10 @@ void SetupPrefetchFieldTrial() { |
return; |
} |
- const base::FieldTrial::Probability divisor = 1000; |
- const base::FieldTrial::Probability prefetch_probability = 500; |
- scoped_refptr<base::FieldTrial> trial( |
- base::FieldTrialList::FactoryGetFieldTrial( |
+ const FieldTrial::Probability divisor = 1000; |
+ const FieldTrial::Probability prefetch_probability = 500; |
+ scoped_refptr<FieldTrial> trial( |
+ FieldTrialList::FactoryGetFieldTrial( |
"Prefetch", divisor, "ContentPrefetchPrefetchOff", |
2013, 6, 30, NULL)); |
const int kPrefetchOnGroup = trial->AppendGroup("ContentPrefetchPrefetchOn", |
@@ -46,76 +49,75 @@ void SetupPrefetchFieldTrial() { |
} |
void SetupPrerenderFieldTrial() { |
- base::FieldTrial::Probability divisor = 1000; |
- |
- base::FieldTrial::Probability exp1_probability = 166; |
- base::FieldTrial::Probability exp1_5min_ttl_probability = 83; |
- base::FieldTrial::Probability control1_probability = 166; |
- base::FieldTrial::Probability no_use1_probability = 83; |
+ const FieldTrial::Probability divisor = 1000; |
- base::FieldTrial::Probability exp2_probability = 167; |
- base::FieldTrial::Probability exp2_5min_ttl_probability = 84; |
- base::FieldTrial::Probability control2_probability = 167; |
- base::FieldTrial::Probability no_use2_probability = 84; |
+ FieldTrial::Probability prerender_on_probability; |
+ FieldTrial::Probability control_probability; |
+ FieldTrial::Probability experiment_5min_ttl_probability; |
+ FieldTrial::Probability experiment_no_use_probability; |
chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); |
if (channel == chrome::VersionInfo::CHANNEL_STABLE || |
channel == chrome::VersionInfo::CHANNEL_BETA) { |
- exp1_probability = 490; |
- exp1_5min_ttl_probability = 5; |
- control1_probability = 5; |
- no_use1_probability = 0; |
- exp2_probability = 490; |
- exp2_5min_ttl_probability = 5; |
- control2_probability = 5; |
- no_use2_probability = 0; |
+ // Use very conservatives and stable settings in beta and stable. |
+ const FieldTrial::Probability release_prerender_on_probability = 980; |
+ const FieldTrial::Probability release_control_probability = 10; |
+ const FieldTrial::Probability release_experiment_5min_ttl_probability = 10; |
+ const FieldTrial::Probability release_experiment_no_use_probability = 0; |
+ COMPILE_ASSERT( |
+ release_prerender_on_probability + release_control_probability + |
+ release_experiment_5min_ttl_probability + |
+ release_experiment_no_use_probability == divisor, |
+ release_experiment_probabilities_must_equal_divisor); |
+ |
+ prerender_on_probability = release_prerender_on_probability; |
+ control_probability = release_experiment_5min_ttl_probability; |
+ experiment_5min_ttl_probability = release_control_probability; |
+ experiment_no_use_probability = release_experiment_no_use_probability; |
+ } else { |
+ // In testing channels, use more experiments and a larger control group to |
+ // improve quality of data. |
+ const FieldTrial::Probability dev_prerender_on_probability = 333; |
+ const FieldTrial::Probability dev_control_probability = 333; |
+ const FieldTrial::Probability dev_experiment_5min_ttl_probability = 167; |
+ const FieldTrial::Probability dev_experiment_no_use_probability = 167; |
+ COMPILE_ASSERT(dev_prerender_on_probability + dev_control_probability + |
+ dev_experiment_5min_ttl_probability + |
+ dev_experiment_no_use_probability == divisor, |
+ dev_experiment_probabilities_must_equal_divisor); |
+ |
+ prerender_on_probability = dev_prerender_on_probability; |
+ control_probability = dev_experiment_5min_ttl_probability; |
+ experiment_5min_ttl_probability = dev_control_probability; |
+ experiment_no_use_probability = dev_experiment_no_use_probability; |
} |
- CHECK_EQ(divisor, exp1_probability + exp1_5min_ttl_probability + |
- control1_probability + no_use1_probability + exp2_probability + |
- exp2_5min_ttl_probability + control2_probability + |
- no_use2_probability); |
- int experiment_1_group = -1; |
- scoped_refptr<base::FieldTrial> trial( |
- base::FieldTrialList::FactoryGetFieldTrial( |
- "Prerender", divisor, "ContentPrefetchPrerender1", |
- 2013, 6, 30, &experiment_1_group)); |
- |
- const int experiment_15_min_TTL_group = |
- trial->AppendGroup("ContentPrefetchPrerenderExp5minTTL1", |
- exp1_5min_ttl_probability); |
- const int control_1_group = |
- trial->AppendGroup("ContentPrefetchPrerenderControl1", |
- control1_probability); |
- const int no_use_1_group = |
- trial->AppendGroup("ContentPrefetchPrerenderNoUse1", |
- no_use1_probability); |
- const int experiment_2_group = |
- trial->AppendGroup("ContentPrefetchPrerender2", |
- exp2_probability); |
- const int experiment_25_min_TTL_group = |
- trial->AppendGroup("ContentPrefetchPrerenderExp5minTTL2", |
- exp2_5min_ttl_probability); |
- const int control_2_group = |
- trial->AppendGroup("ContentPrefetchPrerenderControl2", |
- control2_probability); |
- const int no_use_2_group = |
- trial->AppendGroup("ContentPrefetchPrerenderNoUse2", |
- no_use2_probability); |
+ |
+ int prerender_on_group = -1; |
+ scoped_refptr<FieldTrial> trial( |
+ FieldTrialList::FactoryGetFieldTrial( |
+ "Prerender", divisor, "PrerenderEnabled", |
+ 2013, 6, 30, &prerender_on_group)); |
dominich
2012/07/23 17:10:05
nit: prerender_enabled_group.
gavinp
2012/07/26 21:55:21
Done.
|
+ const int control_group = |
+ trial->AppendGroup("PrerenderControl", |
+ control_probability); |
+ const int experiment_5_min_TTL_group = |
+ trial->AppendGroup("Prerender5minTTL", |
+ experiment_5min_ttl_probability); |
+ const int experiment_no_use_group = |
+ trial->AppendGroup("PrerenderNoUse", |
+ experiment_no_use_probability); |
+ |
const int trial_group = trial->group(); |
- if (trial_group == experiment_1_group || |
- trial_group == experiment_2_group) { |
+ if (trial_group == prerender_on_group) { |
PrerenderManager::SetMode( |
PrerenderManager::PRERENDER_MODE_EXPERIMENT_PRERENDER_GROUP); |
- } else if (trial_group == experiment_15_min_TTL_group || |
- trial_group == experiment_25_min_TTL_group) { |
- PrerenderManager::SetMode( |
- PrerenderManager::PRERENDER_MODE_EXPERIMENT_5MIN_TTL_GROUP); |
- } else if (trial_group == control_1_group || |
- trial_group == control_2_group) { |
+ } else if (trial_group == control_group) { |
PrerenderManager::SetMode( |
PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); |
- } else if (trial_group == no_use_1_group || |
- trial_group == no_use_2_group) { |
+ } else if (trial_group == experiment_5_min_TTL_group) { |
+ PrerenderManager::SetMode( |
+ PrerenderManager::PRERENDER_MODE_EXPERIMENT_5MIN_TTL_GROUP); |
+ } else if (trial_group == experiment_no_use_group) { |
PrerenderManager::SetMode( |
PrerenderManager::PRERENDER_MODE_EXPERIMENT_NO_USE_GROUP); |
} else { |
@@ -192,16 +194,16 @@ void ConfigurePrefetchAndPrerender(const CommandLine& command_line) { |
void ConfigureOmniboxPrerender() { |
// Field trial to see if we're enabled. |
- const base::FieldTrial::Probability kDivisor = 100; |
+ const FieldTrial::Probability kDivisor = 100; |
- base::FieldTrial::Probability kDisabledProbability = 10; |
+ FieldTrial::Probability kDisabledProbability = 10; |
chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); |
if (channel == chrome::VersionInfo::CHANNEL_STABLE || |
channel == chrome::VersionInfo::CHANNEL_BETA) { |
kDisabledProbability = 1; |
} |
- scoped_refptr<base::FieldTrial> omnibox_prerender_trial( |
- base::FieldTrialList::FactoryGetFieldTrial( |
+ scoped_refptr<FieldTrial> omnibox_prerender_trial( |
+ FieldTrialList::FactoryGetFieldTrial( |
kOmniboxTrialName, kDivisor, "OmniboxPrerenderEnabled", |
2012, 12, 30, &g_omnibox_trial_default_group_number)); |
omnibox_prerender_trial->AppendGroup("OmniboxPrerenderDisabled", |
@@ -231,23 +233,23 @@ bool IsOmniboxEnabled(Profile* profile) { |
DCHECK(switch_value == switches::kPrerenderFromOmniboxSwitchValueAuto); |
} |
- const int group = base::FieldTrialList::FindValue(kOmniboxTrialName); |
- return group == base::FieldTrial::kNotFinalized || |
+ const int group = FieldTrialList::FindValue(kOmniboxTrialName); |
+ return group == FieldTrial::kNotFinalized || |
group == g_omnibox_trial_default_group_number; |
} |
void ConfigureSpeculativePrefetching() { |
// Field trial to see if we're enabled. |
- const base::FieldTrial::Probability kDivisor = 100; |
+ const FieldTrial::Probability kDivisor = 100; |
- base::FieldTrial::Probability kDisabledProbability = 99; |
+ 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( |
+ scoped_refptr<FieldTrial> speculative_prefetching_learning_trial( |
+ FieldTrialList::FactoryGetFieldTrial( |
kSpeculativePrefetchingLearningTrialName, |
kDivisor, |
"SpeculativePrefetchingLearningEnabled", |
@@ -273,7 +275,7 @@ bool IsSpeculativeResourcePrefetchingLearningEnabled(Profile* profile) { |
return true; |
} |
- const int group = base::FieldTrialList::FindValue( |
+ const int group = FieldTrialList::FindValue( |
kSpeculativePrefetchingLearningTrialName); |
return group == g_speculative_prefetching_learning_default_group_number; |
} |