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

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: sync to r272759 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 87886d6a3636bcb060a6692d444235ffc9810964..8ed68f5078313c4a4055e0d0faface605384c0e7 100644
--- a/chrome/browser/prefs/pref_hash_filter_unittest.cc
+++ b/chrome/browser/prefs/pref_hash_filter_unittest.cc
@@ -19,6 +19,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/prefs/testing_pref_store.h"
#include "base/values.h"
+#include "chrome/browser/prefs/mock_validation_delegate.h"
#include "chrome/browser/prefs/pref_hash_store.h"
#include "chrome/browser/prefs/pref_hash_store_transaction.h"
#include "chrome/common/pref_names.h"
@@ -341,6 +342,7 @@ class PrefHashFilterTest
pref_hash_filter_.reset(
new PrefHashFilter(temp_mock_pref_hash_store.PassAs<PrefHashStore>(),
configuration,
+ &mock_validation_delegate_,
arraysize(kTestTrackedPrefs)));
}
@@ -362,6 +364,7 @@ class PrefHashFilterTest
MockPrefHashStore* mock_pref_hash_store_;
scoped_ptr<base::DictionaryValue> pref_store_contents_;
bool last_filter_on_load_modified_prefs_;
+ MockValidationDelegate mock_validation_delegate_;
scoped_ptr<PrefHashFilter> pref_hash_filter_;
private:
@@ -394,6 +397,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());
+
+ // Delegate saw all paths, and all unchanged.
+ ASSERT_EQ(arraysize(kTestTrackedPrefs),
+ mock_validation_delegate_.recorded_validations_count());
+ ASSERT_EQ(arraysize(kTestTrackedPrefs),
+ mock_validation_delegate_.CountValidationsOfState(
+ PrefHashStoreTransaction::UNCHANGED));
}
TEST_P(PrefHashFilterTest, FilterTrackedPrefUpdate) {
@@ -537,6 +547,29 @@ TEST_P(PrefHashFilterTest, EmptyAndUnknown) {
ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_SPLIT,
stored_split_value.second);
EXPECT_FALSE(mock_pref_hash_store_->commit_performed());
+
+ // Delegate saw all prefs, two of which had the expected value_state.
+ ASSERT_EQ(arraysize(kTestTrackedPrefs),
+ mock_validation_delegate_.recorded_validations_count());
+ ASSERT_EQ(2u,
+ mock_validation_delegate_.CountValidationsOfState(
+ PrefHashStoreTransaction::TRUSTED_UNKNOWN_VALUE));
+ ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u,
+ mock_validation_delegate_.CountValidationsOfState(
+ PrefHashStoreTransaction::UNCHANGED));
+
+ const MockValidationDelegate::ValidationEvent* validated_split_pref =
+ mock_validation_delegate_.GetEventForPath(kSplitPref);
+ ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_SPLIT,
+ validated_split_pref->strategy);
+ EXPECT_EQ(TrackedPreferenceHelper::DONT_RESET,
+ validated_split_pref->reset_action);
+ const MockValidationDelegate::ValidationEvent* validated_atomic_pref =
+ mock_validation_delegate_.GetEventForPath(kAtomicPref);
+ ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_ATOMIC,
+ validated_atomic_pref->strategy);
+ EXPECT_EQ(TrackedPreferenceHelper::DONT_RESET,
+ validated_atomic_pref->reset_action);
}
TEST_P(PrefHashFilterTest, InitialValueUnknown) {
@@ -563,6 +596,16 @@ TEST_P(PrefHashFilterTest, InitialValueUnknown) {
ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count());
ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
+ // Delegate saw all prefs, two of which had the expected value_state.
+ ASSERT_EQ(arraysize(kTestTrackedPrefs),
+ mock_validation_delegate_.recorded_validations_count());
+ ASSERT_EQ(2u,
+ mock_validation_delegate_.CountValidationsOfState(
+ PrefHashStoreTransaction::UNTRUSTED_UNKNOWN_VALUE));
+ ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u,
+ mock_validation_delegate_.CountValidationsOfState(
+ PrefHashStoreTransaction::UNCHANGED));
+
MockPrefHashStore::ValuePtrStrategyPair stored_atomic_value =
mock_pref_hash_store_->stored_value(kAtomicPref);
MockPrefHashStore::ValuePtrStrategyPair stored_split_value =
@@ -622,6 +665,16 @@ TEST_P(PrefHashFilterTest, InitialValueTrustedUnknown) {
ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count());
ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
+ // Delegate saw all prefs, two of which had the expected value_state.
+ ASSERT_EQ(arraysize(kTestTrackedPrefs),
+ mock_validation_delegate_.recorded_validations_count());
+ ASSERT_EQ(2u,
+ mock_validation_delegate_.CountValidationsOfState(
+ PrefHashStoreTransaction::TRUSTED_UNKNOWN_VALUE));
+ ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u,
+ mock_validation_delegate_.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));
@@ -674,6 +727,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
Mattias Nissler (ping if slow) 2014/05/26 07:01:15 Stray edit?
grt (UTC plus 2) 2014/05/26 13:28:16 Done.
+
MockPrefHashStore::ValuePtrStrategyPair stored_atomic_value =
mock_pref_hash_store_->stored_value(kAtomicPref);
MockPrefHashStore::ValuePtrStrategyPair stored_split_value =
@@ -736,6 +791,16 @@ TEST_P(PrefHashFilterTest, EmptyCleared) {
ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count());
ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
+ // Delegate saw all prefs, two of which had the expected value_state.
+ ASSERT_EQ(arraysize(kTestTrackedPrefs),
+ mock_validation_delegate_.recorded_validations_count());
+ ASSERT_EQ(2u,
+ mock_validation_delegate_.CountValidationsOfState(
+ PrefHashStoreTransaction::CLEARED));
+ ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u,
+ mock_validation_delegate_.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));
@@ -773,6 +838,16 @@ TEST_P(PrefHashFilterTest, InitialValueMigrated) {
ASSERT_EQ(1u, mock_pref_hash_store_->stored_paths_count());
ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
+ // Delegate saw all prefs, one of which had the expected value_state.
+ ASSERT_EQ(arraysize(kTestTrackedPrefs),
+ mock_validation_delegate_.recorded_validations_count());
+ ASSERT_EQ(1u,
+ mock_validation_delegate_.CountValidationsOfState(
+ PrefHashStoreTransaction::WEAK_LEGACY));
+ ASSERT_EQ(arraysize(kTestTrackedPrefs) - 1u,
+ mock_validation_delegate_.CountValidationsOfState(
+ PrefHashStoreTransaction::UNCHANGED));
+
MockPrefHashStore::ValuePtrStrategyPair stored_atomic_value =
mock_pref_hash_store_->stored_value(kAtomicPref);
ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_ATOMIC,
@@ -819,6 +894,16 @@ TEST_P(PrefHashFilterTest, InitialValueUnchangedLegacyId) {
mock_pref_hash_store_->checked_paths_count());
ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
+ // Delegate saw all prefs, two of which had the expected value_state.
+ ASSERT_EQ(arraysize(kTestTrackedPrefs),
+ mock_validation_delegate_.recorded_validations_count());
+ ASSERT_EQ(2u,
+ mock_validation_delegate_.CountValidationsOfState(
+ PrefHashStoreTransaction::SECURE_LEGACY));
+ ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u,
+ mock_validation_delegate_.CountValidationsOfState(
+ PrefHashStoreTransaction::UNCHANGED));
+
// Ensure that both the atomic and split hashes were restored.
ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count());
@@ -881,6 +966,16 @@ TEST_P(PrefHashFilterTest, DontResetReportOnly) {
ASSERT_EQ(4u, mock_pref_hash_store_->stored_paths_count());
ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
+ // Delegate saw all prefs, four of which had the expected value_state.
+ ASSERT_EQ(arraysize(kTestTrackedPrefs),
+ mock_validation_delegate_.recorded_validations_count());
+ ASSERT_EQ(4u,
+ mock_validation_delegate_.CountValidationsOfState(
+ PrefHashStoreTransaction::CHANGED));
+ ASSERT_EQ(arraysize(kTestTrackedPrefs) - 4u,
+ mock_validation_delegate_.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));

Powered by Google App Engine
This is Rietveld 408576698