Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(452)

Unified Diff: chrome/browser/prefs/pref_hash_filter_unittest.cc

Issue 266553002: Add TrackedPreferenceValidationDelegate (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix expectations for android and cros Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 1c7dfc6615262e18be525d9d8d15ba5c326be05c..9db0d6b8a312e821ff3d5ea573942989a8811c60 100644
--- a/chrome/browser/prefs/pref_hash_filter_unittest.cc
+++ b/chrome/browser/prefs/pref_hash_filter_unittest.cc
@@ -19,8 +19,10 @@
#include "base/memory/scoped_ptr.h"
#include "base/prefs/testing_pref_store.h"
#include "base/values.h"
+#include "chrome/browser/prefs/mock_validation_observer.h"
#include "chrome/browser/prefs/pref_hash_store.h"
#include "chrome/browser/prefs/pref_hash_store_transaction.h"
+#include "chrome/browser/prefs/tracked/tracked_preference_validation_observer.h"
#include "chrome/common/pref_names.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -336,10 +338,14 @@ 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,
- arraysize(kTestTrackedPrefs)));
+ validation_data_ = new MockValidationObserver::ValidationData();
+ scoped_ptr<MockValidationObserver> mock_validation_observer(
+ new MockValidationObserver(validation_data_));
+ pref_hash_filter_.reset(new PrefHashFilter(
+ temp_mock_pref_hash_store.PassAs<PrefHashStore>(),
+ configuration,
+ mock_validation_observer.PassAs<TrackedPreferenceValidationObserver>(),
erikwright (departed) 2014/05/14 00:39:26 I assume you decided it was clearer not to inline
grt (UTC plus 2) 2014/05/14 18:57:22 Not really. I thought PassAs was required (which w
grt (UTC plus 2) 2014/05/15 02:07:00 Well, as it turns out PassAs would be required in
erikwright (departed) 2014/05/15 13:49:02 Ah, yes, make_scoped_ptr infers the type from its
+ arraysize(kTestTrackedPrefs)));
}
bool RecordedReset() {
@@ -347,6 +353,7 @@ class PrefHashFilterTest
}
MockPrefHashStore* mock_pref_hash_store_;
+ scoped_refptr<MockValidationObserver::ValidationData> validation_data_;
base::DictionaryValue pref_store_contents_;
scoped_ptr<PrefHashFilter> pref_hash_filter_;
@@ -369,6 +376,13 @@ TEST_P(PrefHashFilterTest, EmptyAndUnchanged) {
ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
ASSERT_FALSE(RecordedReset());
EXPECT_FALSE(mock_pref_hash_store_->commit_performed());
+
+ // Observer saw all paths, and all unchanged.
+ ASSERT_EQ(arraysize(kTestTrackedPrefs),
+ validation_data_->recorded_validations_count());
+ ASSERT_EQ(arraysize(kTestTrackedPrefs),
+ validation_data_->CountValidationsOfState(
+ PrefHashStoreTransaction::UNCHANGED));
}
TEST_P(PrefHashFilterTest, FilterTrackedPrefUpdate) {
@@ -512,6 +526,23 @@ TEST_P(PrefHashFilterTest, EmptyAndUnknown) {
ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_SPLIT,
stored_split_value.second);
EXPECT_FALSE(mock_pref_hash_store_->commit_performed());
+
+ // Observer saw all prefs, two of which had the expected value_state.
+ ASSERT_EQ(arraysize(kTestTrackedPrefs),
+ validation_data_->recorded_validations_count());
+ ASSERT_EQ(2u,
+ validation_data_->CountValidationsOfState(
+ PrefHashStoreTransaction::TRUSTED_UNKNOWN_VALUE));
+ ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u,
+ validation_data_->CountValidationsOfState(
+ PrefHashStoreTransaction::UNCHANGED));
+
+ const MockValidationObserver::ValidationData::ValidationEvent*
+ validated_split_pref = validation_data_->GetEventForPath(kSplitPref);
+ ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_SPLIT,
+ validated_split_pref->strategy);
erikwright (departed) 2014/05/14 00:39:26 Can you add at least one check somewhere that an a
grt (UTC plus 2) 2014/05/14 18:57:22 Done.
+ EXPECT_EQ(TrackedPreferenceHelper::DONT_RESET,
+ validated_split_pref->reset_action);
}
TEST_P(PrefHashFilterTest, InitialValueUnknown) {
@@ -539,6 +570,16 @@ TEST_P(PrefHashFilterTest, InitialValueUnknown) {
ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count());
ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
+ // Observer saw all prefs, two of which had the expected value_state.
+ ASSERT_EQ(arraysize(kTestTrackedPrefs),
+ validation_data_->recorded_validations_count());
+ ASSERT_EQ(2u,
+ validation_data_->CountValidationsOfState(
+ PrefHashStoreTransaction::UNTRUSTED_UNKNOWN_VALUE));
+ ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u,
+ validation_data_->CountValidationsOfState(
+ PrefHashStoreTransaction::UNCHANGED));
+
MockPrefHashStore::ValuePtrStrategyPair stored_atomic_value =
mock_pref_hash_store_->stored_value(kAtomicPref);
MockPrefHashStore::ValuePtrStrategyPair stored_split_value =
@@ -598,6 +639,16 @@ TEST_P(PrefHashFilterTest, InitialValueTrustedUnknown) {
ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count());
ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
+ // Observer saw all prefs, two of which had the expected value_state.
+ ASSERT_EQ(arraysize(kTestTrackedPrefs),
+ validation_data_->recorded_validations_count());
+ ASSERT_EQ(2u,
+ validation_data_->CountValidationsOfState(
+ PrefHashStoreTransaction::TRUSTED_UNKNOWN_VALUE));
+ ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u,
+ validation_data_->CountValidationsOfState(
+ PrefHashStoreTransaction::UNCHANGED));
+
// Seeding is always allowed for trusted unknown values.
const base::Value* atomic_value_in_store;
ASSERT_TRUE(pref_store_contents_.Get(kAtomicPref, &atomic_value_in_store));
@@ -651,6 +702,8 @@ TEST_P(PrefHashFilterTest, InitialValueChanged) {
ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count());
ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
+ // CHANGED 2
+
MockPrefHashStore::ValuePtrStrategyPair stored_atomic_value =
mock_pref_hash_store_->stored_value(kAtomicPref);
MockPrefHashStore::ValuePtrStrategyPair stored_split_value =
@@ -713,6 +766,16 @@ TEST_P(PrefHashFilterTest, EmptyCleared) {
ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count());
ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
+ // Observer saw all prefs, two of which had the expected value_state.
+ ASSERT_EQ(arraysize(kTestTrackedPrefs),
+ validation_data_->recorded_validations_count());
+ ASSERT_EQ(2u,
+ validation_data_->CountValidationsOfState(
+ PrefHashStoreTransaction::CLEARED));
+ ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u,
+ validation_data_->CountValidationsOfState(
+ PrefHashStoreTransaction::UNCHANGED));
+
// Regardless of the enforcement level, the only thing that should be done is
// to restore the hash for NULL. The value itself should still be NULL.
ASSERT_FALSE(pref_store_contents_.Get(kAtomicPref, NULL));
@@ -751,6 +814,16 @@ TEST_P(PrefHashFilterTest, InitialValueMigrated) {
ASSERT_EQ(1u, mock_pref_hash_store_->stored_paths_count());
ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
+ // Observer saw all prefs, one of which had the expected value_state.
+ ASSERT_EQ(arraysize(kTestTrackedPrefs),
+ validation_data_->recorded_validations_count());
+ ASSERT_EQ(1u,
+ validation_data_->CountValidationsOfState(
+ PrefHashStoreTransaction::WEAK_LEGACY));
+ ASSERT_EQ(arraysize(kTestTrackedPrefs) - 1u,
+ validation_data_->CountValidationsOfState(
+ PrefHashStoreTransaction::UNCHANGED));
+
MockPrefHashStore::ValuePtrStrategyPair stored_atomic_value =
mock_pref_hash_store_->stored_value(kAtomicPref);
ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_ATOMIC,
@@ -797,6 +870,16 @@ TEST_P(PrefHashFilterTest, InitialValueUnchangedLegacyId) {
mock_pref_hash_store_->checked_paths_count());
ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
+ // Observer saw all prefs, two of which had the expected value_state.
+ ASSERT_EQ(arraysize(kTestTrackedPrefs),
+ validation_data_->recorded_validations_count());
+ ASSERT_EQ(2u,
+ validation_data_->CountValidationsOfState(
+ PrefHashStoreTransaction::SECURE_LEGACY));
+ ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u,
+ validation_data_->CountValidationsOfState(
+ PrefHashStoreTransaction::UNCHANGED));
+
// Ensure that both the atomic and split hashes were restored.
ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count());
@@ -860,6 +943,16 @@ TEST_P(PrefHashFilterTest, DontResetReportOnly) {
ASSERT_EQ(4u, mock_pref_hash_store_->stored_paths_count());
ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
+ // Observer saw all prefs, four of which had the expected value_state.
+ ASSERT_EQ(arraysize(kTestTrackedPrefs),
+ validation_data_->recorded_validations_count());
+ ASSERT_EQ(4u,
+ validation_data_->CountValidationsOfState(
+ PrefHashStoreTransaction::CHANGED));
+ ASSERT_EQ(arraysize(kTestTrackedPrefs) - 4u,
+ validation_data_->CountValidationsOfState(
+ PrefHashStoreTransaction::UNCHANGED));
+
// No matter what the enforcement level is, the report only pref should never
// be reset.
ASSERT_TRUE(pref_store_contents_.Get(kReportOnlyPref, NULL));
@@ -967,6 +1060,15 @@ TEST_P(PrefHashFilterTest, MigrateValuesTest) {
ASSERT_EQ("foobar3", value);
ASSERT_FALSE(destination->GetValue(kReportOnlyPref, NULL));
ASSERT_FALSE(destination->GetValue(kAtomicPref4, NULL));
+
+ // Observer saw all prefs, two of which had the expected value_state.
+ ASSERT_EQ(2u, validation_data_->recorded_validations_count());
+ ASSERT_EQ(1u,
+ validation_data_->CountValidationsOfState(
+ PrefHashStoreTransaction::CHANGED));
+ ASSERT_EQ(1u,
+ validation_data_->CountValidationsOfState(
+ PrefHashStoreTransaction::UNCHANGED));
} else {
std::string value;
@@ -987,6 +1089,9 @@ TEST_P(PrefHashFilterTest, MigrateValuesTest) {
ASSERT_EQ("foobar3", value);
ASSERT_FALSE(destination->GetValue(kAtomicPref4, NULL));
ASSERT_FALSE(destination->GetValue(kReportOnlyPref, NULL));
+
+ // Observer saw no prefs.
+ EXPECT_EQ(0u, validation_data_->recorded_validations_count());
}
EXPECT_FALSE(mock_pref_hash_store_->commit_performed());
}

Powered by Google App Engine
This is Rietveld 408576698