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() {} |
//------------------------------------------------------------------------------ |