diff options
author | asvitkine@chromium.org <asvitkine@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-09 18:15:26 +0000 |
---|---|---|
committer | asvitkine@chromium.org <asvitkine@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-09 18:15:26 +0000 |
commit | d0c692981d34a0aa35aea070eabcae656ee5ef74 (patch) | |
tree | afbb3732ea2f30c057451285d187ebcf1feebc02 /base/metrics | |
parent | e02333bb7f311c9421461afb6b650cb2b925d54c (diff) | |
download | chromium_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.cc | 9 | ||||
-rw-r--r-- | base/metrics/field_trial.h | 5 | ||||
-rw-r--r-- | base/metrics/field_trial_unittest.cc | 13 |
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 |