Chromium Code Reviews| Index: base/metrics/field_trial.cc |
| =================================================================== |
| --- base/metrics/field_trial.cc (revision 70854) |
| +++ base/metrics/field_trial.cc (working copy) |
| @@ -7,7 +7,11 @@ |
| #include "base/logging.h" |
| #include "base/rand_util.h" |
| #include "base/stringprintf.h" |
| +#include "base/utf_string_conversions.h" |
| +using base::Time; |
| +using base::TimeDelta; |
| + |
| namespace base { |
| // static |
| @@ -34,7 +38,9 @@ |
| random_(static_cast<Probability>(divisor_ * base::RandDouble())), |
| accumulated_group_probability_(0), |
| next_group_number_(0), |
| - group_(kNotParticipating) { |
| + group_(kNotParticipating), |
| + duration_after_which_disable_field_trials_(base::TimeDelta::FromDays(30)), |
| + disable_field_trails_(false) { |
| FieldTrialList::Register(this); |
| } |
| @@ -46,8 +52,11 @@ |
| if (group_probability == kAllRemainingProbability) { |
| accumulated_group_probability_ = divisor_; |
| } else { |
| - if (enable_benchmarking_) |
| + if (enable_benchmarking_ || |
| + (base::Time::NowFromSystemTime() - GetBuildTime() >= |
| + duration_after_which_disable_field_trials_)) |
| group_probability = 0; |
| + |
| accumulated_group_probability_ += group_probability; |
| } |
| DCHECK(accumulated_group_probability_ <= divisor_); |
| @@ -76,6 +85,18 @@ |
| enable_benchmarking_ = true; |
| } |
| +// static |
| +Time FieldTrial::GetBuildTime() { |
| + static Time integral_build_time; |
| + if (integral_build_time.is_null()) { |
| + const char* kDateTime = __DATE__ " " __TIME__ " GMT"; |
|
jar (doing other things)
2011/01/09 07:00:04
caveat: This is OK.... but we should be sure our t
rtenneti
2011/01/09 23:16:42
Done.
|
| + bool result = Time::FromString(ASCIIToWide(kDateTime).c_str(), |
| + &integral_build_time); |
| + DCHECK(result); |
| + } |
| + return integral_build_time; |
| +} |
| + |
| FieldTrial::~FieldTrial() {} |
| //------------------------------------------------------------------------------ |