| 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..87b8a43742e3f769bd7fe3d69a9d04107da503c5 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,92 @@ 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_multi_prerender_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_multi_prerender_probability = 0;
|
| + 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_multi_prerender_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_multi_prerender_probability =
|
| + release_experiment_multi_prerender_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 = 250;
|
| + const FieldTrial::Probability dev_control_probability = 250;
|
| + const FieldTrial::Probability
|
| + dev_experiment_multi_prerender_probability = 250;
|
| + const FieldTrial::Probability dev_experiment_5min_ttl_probability = 125;
|
| + const FieldTrial::Probability dev_experiment_no_use_probability = 125;
|
| + COMPILE_ASSERT(dev_prerender_on_probability + dev_control_probability +
|
| + dev_experiment_multi_prerender_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_multi_prerender_probability =
|
| + dev_experiment_multi_prerender_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));
|
| + const int control_group =
|
| + trial->AppendGroup("PrerenderControl",
|
| + control_probability);
|
| + const int experiment_multi_prerender_group =
|
| + trial->AppendGroup("PrerenderMulti",
|
| + experiment_multi_prerender_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_multi_prerender_group) {
|
| + PrerenderManager::SetMode(
|
| + PrerenderManager::PRERENDER_MODE_EXPERIMENT_MULTI_PRERENDER_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 +211,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 +250,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 +292,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;
|
| }
|
|
|