Chromium Code Reviews| 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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 83 "DisableSessionStorageNamespaceMerging"; | 83 "DisableSessionStorageNamespaceMerging"; |
| 84 const char kPrerenderCookieStore[] = "PrerenderCookieStore"; | 84 const char kPrerenderCookieStore[] = "PrerenderCookieStore"; |
| 85 | 85 |
| 86 void SetupPrerenderFieldTrial() { | 86 void SetupPrerenderFieldTrial() { |
| 87 const FieldTrial::Probability divisor = 1000; | 87 const FieldTrial::Probability divisor = 1000; |
| 88 | 88 |
| 89 FieldTrial::Probability control_probability; | 89 FieldTrial::Probability control_probability; |
| 90 FieldTrial::Probability experiment_multi_prerender_probability; | 90 FieldTrial::Probability experiment_multi_prerender_probability; |
| 91 FieldTrial::Probability experiment_15min_ttl_probability; | 91 FieldTrial::Probability experiment_15min_ttl_probability; |
| 92 FieldTrial::Probability experiment_no_use_probability; | 92 FieldTrial::Probability experiment_no_use_probability; |
| 93 FieldTrial::Probability experiment_match_complete_probability; | |
| 93 | 94 |
| 94 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); | 95 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); |
| 95 if (channel == chrome::VersionInfo::CHANNEL_STABLE || | 96 if (channel == chrome::VersionInfo::CHANNEL_STABLE || |
| 96 channel == chrome::VersionInfo::CHANNEL_BETA) { | 97 channel == chrome::VersionInfo::CHANNEL_BETA) { |
| 97 // Use very conservatives and stable settings in beta and stable. | 98 // Use very conservatives and stable settings in beta and stable. |
| 98 const FieldTrial::Probability release_prerender_enabled_probability = 980; | 99 const FieldTrial::Probability release_prerender_enabled_probability = 970; |
| 99 const FieldTrial::Probability release_control_probability = 10; | 100 const FieldTrial::Probability release_control_probability = 10; |
| 100 const FieldTrial::Probability | 101 const FieldTrial::Probability |
| 101 release_experiment_multi_prerender_probability = 0; | 102 release_experiment_multi_prerender_probability = 0; |
| 102 const FieldTrial::Probability release_experiment_15min_ttl_probability = 10; | 103 const FieldTrial::Probability release_experiment_15min_ttl_probability = 10; |
| 103 const FieldTrial::Probability release_experiment_no_use_probability = 0; | 104 const FieldTrial::Probability release_experiment_no_use_probability = 0; |
| 105 const FieldTrial::Probability | |
| 106 release_experiment_match_complete_probability = 10; | |
| 104 COMPILE_ASSERT( | 107 COMPILE_ASSERT( |
| 105 release_prerender_enabled_probability + release_control_probability + | 108 release_prerender_enabled_probability + |
| 109 release_control_probability + | |
| 106 release_experiment_multi_prerender_probability + | 110 release_experiment_multi_prerender_probability + |
| 107 release_experiment_15min_ttl_probability + | 111 release_experiment_15min_ttl_probability + |
| 108 release_experiment_no_use_probability == divisor, | 112 release_experiment_no_use_probability + |
| 113 release_experiment_match_complete_probability == divisor, | |
| 109 release_experiment_probabilities_must_equal_divisor); | 114 release_experiment_probabilities_must_equal_divisor); |
| 110 | 115 |
| 111 control_probability = release_control_probability; | 116 control_probability = release_control_probability; |
| 112 experiment_multi_prerender_probability = | 117 experiment_multi_prerender_probability = |
| 113 release_experiment_multi_prerender_probability; | 118 release_experiment_multi_prerender_probability; |
| 114 experiment_15min_ttl_probability = release_experiment_15min_ttl_probability; | 119 experiment_15min_ttl_probability = release_experiment_15min_ttl_probability; |
| 115 experiment_no_use_probability = release_experiment_no_use_probability; | 120 experiment_no_use_probability = release_experiment_no_use_probability; |
| 121 experiment_match_complete_probability = | |
| 122 release_experiment_match_complete_probability; | |
| 116 } else { | 123 } else { |
| 117 // In testing channels, use more experiments and a larger control group to | 124 // In testing channels, use more experiments and a larger control group to |
| 118 // improve quality of data. | 125 // improve quality of data. |
| 119 const FieldTrial::Probability dev_prerender_enabled_probability = 250; | 126 const FieldTrial::Probability dev_prerender_enabled_probability = 250; |
| 120 const FieldTrial::Probability dev_control_probability = 250; | 127 const FieldTrial::Probability dev_control_probability = 250; |
| 121 const FieldTrial::Probability | 128 const FieldTrial::Probability |
| 122 dev_experiment_multi_prerender_probability = 250; | 129 dev_experiment_multi_prerender_probability = 200; |
| 123 const FieldTrial::Probability dev_experiment_15min_ttl_probability = 125; | 130 const FieldTrial::Probability dev_experiment_15min_ttl_probability = 100; |
| 124 const FieldTrial::Probability dev_experiment_no_use_probability = 125; | 131 const FieldTrial::Probability dev_experiment_no_use_probability = 100; |
| 125 COMPILE_ASSERT(dev_prerender_enabled_probability + dev_control_probability + | 132 const FieldTrial::Probability |
| 133 dev_experiment_match_complete_probability = 100; | |
|
tburkard
2014/09/17 09:23:20
It's best if the #'s are the same, for easier comp
| |
| 134 COMPILE_ASSERT(dev_prerender_enabled_probability + | |
| 135 dev_control_probability + | |
| 126 dev_experiment_multi_prerender_probability + | 136 dev_experiment_multi_prerender_probability + |
| 127 dev_experiment_15min_ttl_probability + | 137 dev_experiment_15min_ttl_probability + |
| 128 dev_experiment_no_use_probability == divisor, | 138 dev_experiment_no_use_probability + |
| 139 dev_experiment_match_complete_probability == divisor, | |
| 129 dev_experiment_probabilities_must_equal_divisor); | 140 dev_experiment_probabilities_must_equal_divisor); |
| 130 | 141 |
| 131 control_probability = dev_control_probability; | 142 control_probability = dev_control_probability; |
| 132 experiment_multi_prerender_probability = | 143 experiment_multi_prerender_probability = |
| 133 dev_experiment_multi_prerender_probability; | 144 dev_experiment_multi_prerender_probability; |
| 134 experiment_15min_ttl_probability = dev_experiment_15min_ttl_probability; | 145 experiment_15min_ttl_probability = dev_experiment_15min_ttl_probability; |
| 135 experiment_no_use_probability = dev_experiment_no_use_probability; | 146 experiment_no_use_probability = dev_experiment_no_use_probability; |
| 147 experiment_match_complete_probability = | |
| 148 dev_experiment_match_complete_probability; | |
| 136 } | 149 } |
| 137 | 150 |
| 138 int prerender_enabled_group = -1; | 151 int prerender_enabled_group = -1; |
| 139 scoped_refptr<FieldTrial> trial( | 152 scoped_refptr<FieldTrial> trial( |
| 140 FieldTrialList::FactoryGetFieldTrial( | 153 FieldTrialList::FactoryGetFieldTrial( |
| 141 "Prerender", divisor, "PrerenderEnabled", | 154 "Prerender", divisor, "PrerenderEnabled", |
| 142 2014, 12, 31, FieldTrial::SESSION_RANDOMIZED, | 155 2014, 12, 31, FieldTrial::SESSION_RANDOMIZED, |
| 143 &prerender_enabled_group)); | 156 &prerender_enabled_group)); |
| 144 const int control_group = | 157 const int control_group = |
| 145 trial->AppendGroup("PrerenderControl", | 158 trial->AppendGroup("PrerenderControl", |
| 146 control_probability); | 159 control_probability); |
| 147 const int experiment_multi_prerender_group = | 160 const int experiment_multi_prerender_group = |
| 148 trial->AppendGroup("PrerenderMulti", | 161 trial->AppendGroup("PrerenderMulti", |
| 149 experiment_multi_prerender_probability); | 162 experiment_multi_prerender_probability); |
| 150 const int experiment_15_min_TTL_group = | 163 const int experiment_15_min_TTL_group = |
| 151 trial->AppendGroup("Prerender15minTTL", | 164 trial->AppendGroup("Prerender15minTTL", |
| 152 experiment_15min_ttl_probability); | 165 experiment_15min_ttl_probability); |
| 153 const int experiment_no_use_group = | 166 const int experiment_no_use_group = |
| 154 trial->AppendGroup("PrerenderNoUse", | 167 trial->AppendGroup("PrerenderNoUse", |
| 155 experiment_no_use_probability); | 168 experiment_no_use_probability); |
| 169 const int experiment_match_complete_group = | |
| 170 trial->AppendGroup("MatchComplete", | |
| 171 experiment_match_complete_probability); | |
| 156 | 172 |
| 157 const int trial_group = trial->group(); | 173 const int trial_group = trial->group(); |
| 158 if (trial_group == prerender_enabled_group) { | 174 if (trial_group == prerender_enabled_group) { |
| 159 PrerenderManager::SetMode( | 175 PrerenderManager::SetMode( |
| 160 PrerenderManager::PRERENDER_MODE_EXPERIMENT_PRERENDER_GROUP); | 176 PrerenderManager::PRERENDER_MODE_EXPERIMENT_PRERENDER_GROUP); |
| 161 } else if (trial_group == control_group) { | 177 } else if (trial_group == control_group) { |
| 162 PrerenderManager::SetMode( | 178 PrerenderManager::SetMode( |
| 163 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); | 179 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); |
| 164 } else if (trial_group == experiment_multi_prerender_group) { | 180 } else if (trial_group == experiment_multi_prerender_group) { |
| 165 PrerenderManager::SetMode( | 181 PrerenderManager::SetMode( |
| 166 PrerenderManager::PRERENDER_MODE_EXPERIMENT_MULTI_PRERENDER_GROUP); | 182 PrerenderManager::PRERENDER_MODE_EXPERIMENT_MULTI_PRERENDER_GROUP); |
| 167 } else if (trial_group == experiment_15_min_TTL_group) { | 183 } else if (trial_group == experiment_15_min_TTL_group) { |
| 168 PrerenderManager::SetMode( | 184 PrerenderManager::SetMode( |
| 169 PrerenderManager::PRERENDER_MODE_EXPERIMENT_15MIN_TTL_GROUP); | 185 PrerenderManager::PRERENDER_MODE_EXPERIMENT_15MIN_TTL_GROUP); |
| 170 } else if (trial_group == experiment_no_use_group) { | 186 } else if (trial_group == experiment_no_use_group) { |
| 171 PrerenderManager::SetMode( | 187 PrerenderManager::SetMode( |
| 172 PrerenderManager::PRERENDER_MODE_EXPERIMENT_NO_USE_GROUP); | 188 PrerenderManager::PRERENDER_MODE_EXPERIMENT_NO_USE_GROUP); |
| 189 } else if (trial_group == experiment_match_complete_group) { | |
| 190 PrerenderManager::SetMode( | |
| 191 PrerenderManager::PRERENDER_MODE_EXPERIMENT_MATCH_COMPLETE_GROUP); | |
| 173 } else { | 192 } else { |
| 174 NOTREACHED(); | 193 NOTREACHED(); |
| 175 } | 194 } |
| 176 } | 195 } |
| 177 | 196 |
| 178 } // end namespace | 197 } // end namespace |
| 179 | 198 |
| 180 void ConfigureOmniboxPrerender(); | 199 void ConfigureOmniboxPrerender(); |
| 181 | 200 |
| 182 void ConfigurePrerender(const CommandLine& command_line) { | 201 void ConfigurePrerender(const CommandLine& command_line) { |
| (...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 464 return GetLocalPredictorSpecValue(kDisableSessionStorageNamespaceMerging) != | 483 return GetLocalPredictorSpecValue(kDisableSessionStorageNamespaceMerging) != |
| 465 kDisabledGroup; | 484 kDisabledGroup; |
| 466 } | 485 } |
| 467 | 486 |
| 468 bool IsPrerenderCookieStoreEnabled() { | 487 bool IsPrerenderCookieStoreEnabled() { |
| 469 return GetLocalPredictorSpecValue(kPrerenderCookieStore) != kDisabledGroup && | 488 return GetLocalPredictorSpecValue(kPrerenderCookieStore) != kDisabledGroup && |
| 470 FieldTrialList::FindFullName(kPrerenderCookieStore) != kDisabledGroup; | 489 FieldTrialList::FindFullName(kPrerenderCookieStore) != kDisabledGroup; |
| 471 } | 490 } |
| 472 | 491 |
| 473 } // namespace prerender | 492 } // namespace prerender |
| OLD | NEW |