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 a8e8991df723ba631ba9a38eafab797e3f0d6f3a..c271dd28fe52f0bdbb158d1736bde20abf87cf24 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, "PrerenderOn", |
|
dominich
2012/07/23 16:56:41
PrerenderEnabled?
gavinp
2012/07/23 17:01:05
Done.
|
| + 2013, 6, 30, &prerender_on_group)); |
| + const int control_group = |
| + trial->AppendGroup("PrerenderControlGroup", |
|
dominich
2012/07/23 16:56:41
drop the Group. Just PrerenderControl. It's cleane
gavinp
2012/07/23 17:01:05
Done.
|
| + 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) { |
|
dominich
2012/07/23 16:56:41
switch statement
gavinp
2012/07/23 17:01:05
No can do without some ungainly plumbing, since ca
|
| 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; |
| } |