summaryrefslogtreecommitdiffstats
path: root/base/metrics
diff options
context:
space:
mode:
authorasvitkine@chromium.org <asvitkine@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-09 18:15:26 +0000
committerasvitkine@chromium.org <asvitkine@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-09 18:15:26 +0000
commitd0c692981d34a0aa35aea070eabcae656ee5ef74 (patch)
treeafbb3732ea2f30c057451285d187ebcf1feebc02 /base/metrics
parente02333bb7f311c9421461afb6b650cb2b925d54c (diff)
downloadchromium_src-d0c692981d34a0aa35aea070eabcae656ee5ef74.zip
chromium_src-d0c692981d34a0aa35aea070eabcae656ee5ef74.tar.gz
chromium_src-d0c692981d34a0aa35aea070eabcae656ee5ef74.tar.bz2
Fix problem where field trials using kExpirationYearInFuture could get disabled.
The issue was that kExpirationYearInFuture was using system time, but the expiration check in field_trial.cc was using build time. This CL changes the constant to be named kExpirationYearNotExpired and sets it based on build time. BUG=168799 TEST=New unit test. Review URL: https://chromiumcodereview.appspot.com/11783033 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@175831 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/metrics')
-rw-r--r--base/metrics/field_trial.cc9
-rw-r--r--base/metrics/field_trial.h5
-rw-r--r--base/metrics/field_trial_unittest.cc13
3 files changed, 20 insertions, 7 deletions
diff --git a/base/metrics/field_trial.cc b/base/metrics/field_trial.cc
index 14e16ea..66421da2 100644
--- a/base/metrics/field_trial.cc
+++ b/base/metrics/field_trial.cc
@@ -49,7 +49,7 @@ const int FieldTrial::kDefaultGroupNumber = 0;
bool FieldTrial::enable_benchmarking_ = false;
const char FieldTrialList::kPersistentStringSeparator('/');
-int FieldTrialList::kExpirationYearInFuture = 0;
+int FieldTrialList::kNoExpirationYear = 0;
//------------------------------------------------------------------------------
// FieldTrial methods and members.
@@ -244,11 +244,10 @@ FieldTrialList::FieldTrialList(
DCHECK(!used_without_global_);
global_ = this;
+ Time two_years_from_build_time = GetBuildTime() + TimeDelta::FromDays(730);
Time::Exploded exploded;
- Time two_years_from_now =
- Time::NowFromSystemTime() + TimeDelta::FromDays(730);
- two_years_from_now.LocalExplode(&exploded);
- kExpirationYearInFuture = exploded.year;
+ two_years_from_build_time.LocalExplode(&exploded);
+ kNoExpirationYear = exploded.year;
}
FieldTrialList::~FieldTrialList() {
diff --git a/base/metrics/field_trial.h b/base/metrics/field_trial.h
index 007c1da..80f4601 100644
--- a/base/metrics/field_trial.h
+++ b/base/metrics/field_trial.h
@@ -283,8 +283,9 @@ class BASE_EXPORT FieldTrialList {
// second process to mimic our state (i.e., provide the same group name).
static const char kPersistentStringSeparator; // Currently a slash.
- // Define expiration year in future. It is initialized to two years from Now.
- static int kExpirationYearInFuture;
+ // Year that is guaranteed to not be expired when instantiating a field trial
+ // via |FactoryGetFieldTrial()|. Set to two years from the build date.
+ static int kNoExpirationYear;
// Observer is notified when a FieldTrial's group is selected.
class BASE_EXPORT Observer {
diff --git a/base/metrics/field_trial_unittest.cc b/base/metrics/field_trial_unittest.cc
index eed5f78..09a3809 100644
--- a/base/metrics/field_trial_unittest.cc
+++ b/base/metrics/field_trial_unittest.cc
@@ -717,5 +717,18 @@ TEST_F(FieldTrialTest, DisabledTrialNotActive) {
EXPECT_TRUE(states.empty());
}
+TEST_F(FieldTrialTest, ExpirationYearNotExpired) {
+ const char kTrialName[] = "NotExpired";
+ const char kGroupName[] = "Group2";
+ const int kProbability = 100;
+ ASSERT_FALSE(FieldTrialList::TrialExists(kTrialName));
+
+ FieldTrial* trial =
+ FieldTrialList::FactoryGetFieldTrial(
+ kTrialName, kProbability, kDefaultGroupName,
+ FieldTrialList::kNoExpirationYear, 1, 1, NULL);
+ trial->AppendGroup(kGroupName, kProbability);
+ EXPECT_EQ(kGroupName, trial->group_name());
+}
} // namespace base