Index: chrome/browser/prefs/pref_hash_filter_unittest.cc |
diff --git a/chrome/browser/prefs/pref_hash_filter_unittest.cc b/chrome/browser/prefs/pref_hash_filter_unittest.cc |
index cbf12b16b18e1b81aa9749c5b51b7d8a9137e282..a65ff7f963d5be5f1142a6fd892565257e523f8e 100644 |
--- a/chrome/browser/prefs/pref_hash_filter_unittest.cc |
+++ b/chrome/browser/prefs/pref_hash_filter_unittest.cc |
@@ -365,7 +365,8 @@ class PrefHashFilterTest |
public: |
PrefHashFilterTest() : mock_pref_hash_store_(NULL), |
pref_store_contents_(new base::DictionaryValue), |
- last_filter_on_load_modified_prefs_(false) {} |
+ last_filter_on_load_modified_prefs_(false), |
+ reset_recorded_(false) {} |
virtual void SetUp() OVERRIDE { |
base::StatisticsRecorder::Initialize(); |
@@ -387,16 +388,21 @@ class PrefHashFilterTest |
scoped_ptr<MockPrefHashStore> temp_mock_pref_hash_store( |
new MockPrefHashStore); |
mock_pref_hash_store_ = temp_mock_pref_hash_store.get(); |
- pref_hash_filter_.reset( |
- new PrefHashFilter(temp_mock_pref_hash_store.PassAs<PrefHashStore>(), |
- configuration, |
- &mock_validation_delegate_, |
- arraysize(kTestTrackedPrefs), |
- true)); |
+ pref_hash_filter_.reset(new PrefHashFilter( |
+ temp_mock_pref_hash_store.PassAs<PrefHashStore>(), |
+ configuration, |
+ base::Bind(&PrefHashFilterTest::RecordReset, base::Unretained(this)), |
+ &mock_validation_delegate_, |
+ arraysize(kTestTrackedPrefs), |
+ true)); |
} |
- bool RecordedReset() { |
- return pref_store_contents_->Get(prefs::kPreferenceResetTime, NULL); |
+ // Verifies whether a reset was reported by the PrefHashFiler. Also verifies |
+ // that kPreferenceResetTime was set (or not) accordingly. |
+ void VerifyRecordedReset(bool reset_expected) { |
+ EXPECT_EQ(reset_expected, reset_recorded_); |
+ EXPECT_EQ(reset_expected, |
+ pref_store_contents_->Get(prefs::kPreferenceResetTime, NULL)); |
} |
// Calls FilterOnLoad() on |pref_hash_Filter_|. |pref_store_contents_| is |
@@ -427,6 +433,15 @@ class PrefHashFilterTest |
EXPECT_EQ(expected_schedule_write, schedule_write); |
} |
+ void RecordReset() { |
+ // As-is |reset_recorded_| is only designed to remember a single reset, make |
+ // sure none was previously recorded. |
+ EXPECT_FALSE(reset_recorded_); |
+ reset_recorded_ = true; |
+ } |
+ |
+ bool reset_recorded_; |
+ |
DISALLOW_COPY_AND_ASSIGN(PrefHashFilterTest); |
}; |
@@ -444,7 +459,7 @@ TEST_P(PrefHashFilterTest, EmptyAndUnchanged) { |
kTestTrackedPrefs[i].name).first); |
} |
ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed()); |
- ASSERT_FALSE(RecordedReset()); |
+ VerifyRecordedReset(false); |
// Delegate saw all paths, and all unchanged. |
ASSERT_EQ(arraysize(kTestTrackedPrefs), |
@@ -481,7 +496,7 @@ TEST_P(PrefHashFilterTest, FilterTrackedPrefUpdate) { |
ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_ATOMIC, stored_value.second); |
ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed()); |
- ASSERT_FALSE(RecordedReset()); |
+ VerifyRecordedReset(false); |
} |
TEST_P(PrefHashFilterTest, ReportSuperMacValidity) { |
@@ -541,7 +556,7 @@ TEST_P(PrefHashFilterTest, FilterSplitPrefUpdate) { |
ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_SPLIT, stored_value.second); |
ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed()); |
- ASSERT_FALSE(RecordedReset()); |
+ VerifyRecordedReset(false); |
} |
TEST_P(PrefHashFilterTest, FilterUntrackedPrefUpdate) { |
@@ -711,7 +726,7 @@ TEST_P(PrefHashFilterTest, InitialValueUnknown) { |
ASSERT_FALSE(pref_store_contents_->Get(kSplitPref, NULL)); |
ASSERT_EQ(NULL, stored_split_value.first); |
- ASSERT_TRUE(RecordedReset()); |
+ VerifyRecordedReset(true); |
} else { |
// Otherwise the values should have remained intact and the hashes should |
// have been updated to match them. |
@@ -725,7 +740,7 @@ TEST_P(PrefHashFilterTest, InitialValueUnknown) { |
ASSERT_EQ(dict_value, split_value_in_store); |
ASSERT_EQ(dict_value, stored_split_value.first); |
- ASSERT_FALSE(RecordedReset()); |
+ VerifyRecordedReset(false); |
} |
} |
@@ -838,7 +853,7 @@ TEST_P(PrefHashFilterTest, InitialValueChanged) { |
ASSERT_TRUE(dict_value->HasKey("d")); |
ASSERT_EQ(dict_value, stored_split_value.first); |
- ASSERT_TRUE(RecordedReset()); |
+ VerifyRecordedReset(true); |
} else { |
// Otherwise the value should have remained intact and the hash should have |
// been updated to match it. |
@@ -857,7 +872,7 @@ TEST_P(PrefHashFilterTest, InitialValueChanged) { |
ASSERT_TRUE(dict_value->HasKey("d")); |
ASSERT_EQ(dict_value, stored_split_value.first); |
- ASSERT_FALSE(RecordedReset()); |
+ VerifyRecordedReset(false); |
} |
} |
@@ -940,7 +955,7 @@ TEST_P(PrefHashFilterTest, InitialValueMigrated) { |
ASSERT_FALSE(pref_store_contents_->Get(kAtomicPref, NULL)); |
ASSERT_EQ(NULL, stored_atomic_value.first); |
- ASSERT_TRUE(RecordedReset()); |
+ VerifyRecordedReset(true); |
} else { |
// Otherwise the value should have remained intact and the hash should have |
// been updated to match it. |
@@ -949,7 +964,7 @@ TEST_P(PrefHashFilterTest, InitialValueMigrated) { |
ASSERT_EQ(list_value, atomic_value_in_store); |
ASSERT_EQ(list_value, stored_atomic_value.first); |
- ASSERT_FALSE(RecordedReset()); |
+ VerifyRecordedReset(false); |
} |
} |
@@ -1009,7 +1024,7 @@ TEST_P(PrefHashFilterTest, InitialValueUnchangedLegacyId) { |
ASSERT_EQ(dict_value, split_value_in_store); |
ASSERT_EQ(dict_value, stored_split_value.first); |
- ASSERT_FALSE(RecordedReset()); |
+ VerifyRecordedReset(false); |
} |
TEST_P(PrefHashFilterTest, DontResetReportOnly) { |
@@ -1072,7 +1087,7 @@ TEST_P(PrefHashFilterTest, DontResetReportOnly) { |
ASSERT_EQ(NULL, mock_pref_hash_store_->stored_value(kAtomicPref).first); |
ASSERT_EQ(NULL, mock_pref_hash_store_->stored_value(kAtomicPref2).first); |
- ASSERT_TRUE(RecordedReset()); |
+ VerifyRecordedReset(true); |
} else { |
const base::Value* value_in_store; |
const base::Value* value_in_store2; |
@@ -1085,7 +1100,7 @@ TEST_P(PrefHashFilterTest, DontResetReportOnly) { |
ASSERT_EQ(int_value2, |
mock_pref_hash_store_->stored_value(kAtomicPref2).first); |
- ASSERT_FALSE(RecordedReset()); |
+ VerifyRecordedReset(false); |
} |
} |