| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/prerender/prerender_field_trial.h" | 5 #include "chrome/browser/prerender/prerender_field_trial.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/metrics/field_trial.h" | 9 #include "base/metrics/field_trial.h" |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 2013, 6, 30, NULL)); | 45 2013, 6, 30, NULL)); |
| 46 const int kPrefetchOnGroup = trial->AppendGroup("ContentPrefetchPrefetchOn", | 46 const int kPrefetchOnGroup = trial->AppendGroup("ContentPrefetchPrefetchOn", |
| 47 prefetch_probability); | 47 prefetch_probability); |
| 48 PrerenderManager::SetIsPrefetchEnabled(trial->group() == kPrefetchOnGroup); | 48 PrerenderManager::SetIsPrefetchEnabled(trial->group() == kPrefetchOnGroup); |
| 49 } | 49 } |
| 50 | 50 |
| 51 void SetupPrerenderFieldTrial() { | 51 void SetupPrerenderFieldTrial() { |
| 52 const FieldTrial::Probability divisor = 1000; | 52 const FieldTrial::Probability divisor = 1000; |
| 53 | 53 |
| 54 FieldTrial::Probability control_probability; | 54 FieldTrial::Probability control_probability; |
| 55 FieldTrial::Probability experiment_multi_prerender_probability; |
| 55 FieldTrial::Probability experiment_5min_ttl_probability; | 56 FieldTrial::Probability experiment_5min_ttl_probability; |
| 56 FieldTrial::Probability experiment_no_use_probability; | 57 FieldTrial::Probability experiment_no_use_probability; |
| 57 | 58 |
| 58 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); | 59 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); |
| 59 if (channel == chrome::VersionInfo::CHANNEL_STABLE || | 60 if (channel == chrome::VersionInfo::CHANNEL_STABLE || |
| 60 channel == chrome::VersionInfo::CHANNEL_BETA) { | 61 channel == chrome::VersionInfo::CHANNEL_BETA) { |
| 61 // Use very conservatives and stable settings in beta and stable. | 62 // Use very conservatives and stable settings in beta and stable. |
| 62 const FieldTrial::Probability release_prerender_enabled_probability = 980; | 63 const FieldTrial::Probability release_prerender_enabled_probability = 980; |
| 63 const FieldTrial::Probability release_control_probability = 10; | 64 const FieldTrial::Probability release_control_probability = 10; |
| 65 const FieldTrial::Probability |
| 66 release_experiment_multi_prerender_probability = 0; |
| 64 const FieldTrial::Probability release_experiment_5min_ttl_probability = 10; | 67 const FieldTrial::Probability release_experiment_5min_ttl_probability = 10; |
| 65 const FieldTrial::Probability release_experiment_no_use_probability = 0; | 68 const FieldTrial::Probability release_experiment_no_use_probability = 0; |
| 66 COMPILE_ASSERT( | 69 COMPILE_ASSERT( |
| 67 release_prerender_enabled_probability + release_control_probability + | 70 release_prerender_enabled_probability + release_control_probability + |
| 71 release_experiment_multi_prerender_probability + |
| 68 release_experiment_5min_ttl_probability + | 72 release_experiment_5min_ttl_probability + |
| 69 release_experiment_no_use_probability == divisor, | 73 release_experiment_no_use_probability == divisor, |
| 70 release_experiment_probabilities_must_equal_divisor); | 74 release_experiment_probabilities_must_equal_divisor); |
| 71 | 75 |
| 72 control_probability = release_experiment_5min_ttl_probability; | 76 control_probability = release_experiment_5min_ttl_probability; |
| 77 experiment_multi_prerender_probability = |
| 78 release_experiment_multi_prerender_probability; |
| 73 experiment_5min_ttl_probability = release_control_probability; | 79 experiment_5min_ttl_probability = release_control_probability; |
| 74 experiment_no_use_probability = release_experiment_no_use_probability; | 80 experiment_no_use_probability = release_experiment_no_use_probability; |
| 75 } else { | 81 } else { |
| 76 // In testing channels, use more experiments and a larger control group to | 82 // In testing channels, use more experiments and a larger control group to |
| 77 // improve quality of data. | 83 // improve quality of data. |
| 78 const FieldTrial::Probability dev_prerender_enabled_probability = 333; | 84 const FieldTrial::Probability dev_prerender_enabled_probability = 250; |
| 79 const FieldTrial::Probability dev_control_probability = 333; | 85 const FieldTrial::Probability dev_control_probability = 250; |
| 80 const FieldTrial::Probability dev_experiment_5min_ttl_probability = 167; | 86 const FieldTrial::Probability |
| 81 const FieldTrial::Probability dev_experiment_no_use_probability = 167; | 87 dev_experiment_multi_prerender_probability = 250; |
| 88 const FieldTrial::Probability dev_experiment_5min_ttl_probability = 125; |
| 89 const FieldTrial::Probability dev_experiment_no_use_probability = 125; |
| 82 COMPILE_ASSERT(dev_prerender_enabled_probability + dev_control_probability + | 90 COMPILE_ASSERT(dev_prerender_enabled_probability + dev_control_probability + |
| 91 dev_experiment_multi_prerender_probability + |
| 83 dev_experiment_5min_ttl_probability + | 92 dev_experiment_5min_ttl_probability + |
| 84 dev_experiment_no_use_probability == divisor, | 93 dev_experiment_no_use_probability == divisor, |
| 85 dev_experiment_probabilities_must_equal_divisor); | 94 dev_experiment_probabilities_must_equal_divisor); |
| 86 | 95 |
| 87 control_probability = dev_experiment_5min_ttl_probability; | 96 control_probability = dev_experiment_5min_ttl_probability; |
| 97 experiment_multi_prerender_probability = |
| 98 dev_experiment_multi_prerender_probability; |
| 88 experiment_5min_ttl_probability = dev_control_probability; | 99 experiment_5min_ttl_probability = dev_control_probability; |
| 89 experiment_no_use_probability = dev_experiment_no_use_probability; | 100 experiment_no_use_probability = dev_experiment_no_use_probability; |
| 90 } | 101 } |
| 91 | 102 |
| 92 int prerender_enabled_group = -1; | 103 int prerender_enabled_group = -1; |
| 93 scoped_refptr<FieldTrial> trial( | 104 scoped_refptr<FieldTrial> trial( |
| 94 FieldTrialList::FactoryGetFieldTrial( | 105 FieldTrialList::FactoryGetFieldTrial( |
| 95 "Prerender", divisor, "PrerenderEnabled", | 106 "Prerender", divisor, "PrerenderEnabled", |
| 96 2013, 6, 30, &prerender_enabled_group)); | 107 2013, 6, 30, &prerender_enabled_group)); |
| 97 const int control_group = | 108 const int control_group = |
| 98 trial->AppendGroup("PrerenderControl", | 109 trial->AppendGroup("PrerenderControl", |
| 99 control_probability); | 110 control_probability); |
| 111 const int experiment_multi_prerender_group = |
| 112 trial->AppendGroup("PrerenderMulti", |
| 113 experiment_multi_prerender_probability); |
| 100 const int experiment_5_min_TTL_group = | 114 const int experiment_5_min_TTL_group = |
| 101 trial->AppendGroup("Prerender5minTTL", | 115 trial->AppendGroup("Prerender5minTTL", |
| 102 experiment_5min_ttl_probability); | 116 experiment_5min_ttl_probability); |
| 103 const int experiment_no_use_group = | 117 const int experiment_no_use_group = |
| 104 trial->AppendGroup("PrerenderNoUse", | 118 trial->AppendGroup("PrerenderNoUse", |
| 105 experiment_no_use_probability); | 119 experiment_no_use_probability); |
| 106 | 120 |
| 107 const int trial_group = trial->group(); | 121 const int trial_group = trial->group(); |
| 108 if (trial_group == prerender_enabled_group) { | 122 if (trial_group == prerender_enabled_group) { |
| 109 PrerenderManager::SetMode( | 123 PrerenderManager::SetMode( |
| 110 PrerenderManager::PRERENDER_MODE_EXPERIMENT_PRERENDER_GROUP); | 124 PrerenderManager::PRERENDER_MODE_EXPERIMENT_PRERENDER_GROUP); |
| 111 } else if (trial_group == control_group) { | 125 } else if (trial_group == control_group) { |
| 112 PrerenderManager::SetMode( | 126 PrerenderManager::SetMode( |
| 113 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); | 127 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); |
| 128 } else if (trial_group == experiment_multi_prerender_group) { |
| 129 PrerenderManager::SetMode( |
| 130 PrerenderManager::PRERENDER_MODE_EXPERIMENT_MULTI_PRERENDER_GROUP); |
| 114 } else if (trial_group == experiment_5_min_TTL_group) { | 131 } else if (trial_group == experiment_5_min_TTL_group) { |
| 115 PrerenderManager::SetMode( | 132 PrerenderManager::SetMode( |
| 116 PrerenderManager::PRERENDER_MODE_EXPERIMENT_5MIN_TTL_GROUP); | 133 PrerenderManager::PRERENDER_MODE_EXPERIMENT_5MIN_TTL_GROUP); |
| 117 } else if (trial_group == experiment_no_use_group) { | 134 } else if (trial_group == experiment_no_use_group) { |
| 118 PrerenderManager::SetMode( | 135 PrerenderManager::SetMode( |
| 119 PrerenderManager::PRERENDER_MODE_EXPERIMENT_NO_USE_GROUP); | 136 PrerenderManager::PRERENDER_MODE_EXPERIMENT_NO_USE_GROUP); |
| 120 } else { | 137 } else { |
| 121 NOTREACHED(); | 138 NOTREACHED(); |
| 122 } | 139 } |
| 123 } | 140 } |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 271 if (switch_value == switches::kSpeculativeResourcePrefetchingLearning) | 288 if (switch_value == switches::kSpeculativeResourcePrefetchingLearning) |
| 272 return true; | 289 return true; |
| 273 } | 290 } |
| 274 | 291 |
| 275 const int group = FieldTrialList::FindValue( | 292 const int group = FieldTrialList::FindValue( |
| 276 kSpeculativePrefetchingLearningTrialName); | 293 kSpeculativePrefetchingLearningTrialName); |
| 277 return group == g_speculative_prefetching_learning_default_group_number; | 294 return group == g_speculative_prefetching_learning_default_group_number; |
| 278 } | 295 } |
| 279 | 296 |
| 280 } // namespace prerender | 297 } // namespace prerender |
| OLD | NEW |