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

Side by Side Diff: components/user_prefs/tracked/pref_hash_filter_unittest.cc

Issue 2722483005: Change configuration of user prefs to use mojo. (Closed)
Patch Set: Created 3 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/user_prefs/tracked/pref_hash_filter.h" 5 #include "components/user_prefs/tracked/pref_hash_filter.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <map> 9 #include <map>
10 #include <memory> 10 #include <memory>
(...skipping 24 matching lines...) Expand all
35 35
36 const char kAtomicPref[] = "atomic_pref"; 36 const char kAtomicPref[] = "atomic_pref";
37 const char kAtomicPref2[] = "atomic_pref2"; 37 const char kAtomicPref2[] = "atomic_pref2";
38 const char kAtomicPref3[] = "pref3"; 38 const char kAtomicPref3[] = "pref3";
39 const char kAtomicPref4[] = "pref4"; 39 const char kAtomicPref4[] = "pref4";
40 const char kReportOnlyPref[] = "report_only"; 40 const char kReportOnlyPref[] = "report_only";
41 const char kReportOnlySplitPref[] = "report_only_split_pref"; 41 const char kReportOnlySplitPref[] = "report_only_split_pref";
42 const char kSplitPref[] = "split_pref"; 42 const char kSplitPref[] = "split_pref";
43 43
44 const PrefHashFilter::TrackedPreferenceMetadata kTestTrackedPrefs[] = { 44 const PrefHashFilter::TrackedPreferenceMetadata kTestTrackedPrefs[] = {
45 {0, 45 {0, kAtomicPref, PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD,
46 kAtomicPref, 46 PrefHashFilter::PrefTrackingStrategy::ATOMIC,
47 PrefHashFilter::ENFORCE_ON_LOAD, 47 PrefHashFilter::ValueType::PERSONAL},
48 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, 48 {1, kReportOnlyPref, PrefHashFilter::EnforcementLevel::NO_ENFORCEMENT,
49 PrefHashFilter::VALUE_PERSONAL}, 49 PrefHashFilter::PrefTrackingStrategy::ATOMIC,
50 {1, 50 PrefHashFilter::ValueType::IMPERSONAL},
51 kReportOnlyPref, 51 {2, kSplitPref, PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD,
52 PrefHashFilter::NO_ENFORCEMENT, 52 PrefHashFilter::PrefTrackingStrategy::SPLIT,
53 PrefHashFilter::TRACKING_STRATEGY_ATOMIC, 53 PrefHashFilter::ValueType::IMPERSONAL},
54 PrefHashFilter::VALUE_IMPERSONAL}, 54 {3, kReportOnlySplitPref, PrefHashFilter::EnforcementLevel::NO_ENFORCEMENT,
55 {2, 55 PrefHashFilter::PrefTrackingStrategy::SPLIT,
56 kSplitPref, 56 PrefHashFilter::ValueType::IMPERSONAL},
57 PrefHashFilter::ENFORCE_ON_LOAD, 57 {4, kAtomicPref2, PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD,
58 PrefHashFilter::TRACKING_STRATEGY_SPLIT, 58 PrefHashFilter::PrefTrackingStrategy::ATOMIC,
59 PrefHashFilter::VALUE_IMPERSONAL}, 59 PrefHashFilter::ValueType::IMPERSONAL},
60 {3, 60 {5, kAtomicPref3, PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD,
61 kReportOnlySplitPref, 61 PrefHashFilter::PrefTrackingStrategy::ATOMIC,
62 PrefHashFilter::NO_ENFORCEMENT, 62 PrefHashFilter::ValueType::IMPERSONAL},
63 PrefHashFilter::TRACKING_STRATEGY_SPLIT, 63 {6, kAtomicPref4, PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD,
64 PrefHashFilter::VALUE_IMPERSONAL}, 64 PrefHashFilter::PrefTrackingStrategy::ATOMIC,
65 {4, 65 PrefHashFilter::ValueType::IMPERSONAL},
66 kAtomicPref2,
67 PrefHashFilter::ENFORCE_ON_LOAD,
68 PrefHashFilter::TRACKING_STRATEGY_ATOMIC,
69 PrefHashFilter::VALUE_IMPERSONAL},
70 {5,
71 kAtomicPref3,
72 PrefHashFilter::ENFORCE_ON_LOAD,
73 PrefHashFilter::TRACKING_STRATEGY_ATOMIC,
74 PrefHashFilter::VALUE_IMPERSONAL},
75 {6,
76 kAtomicPref4,
77 PrefHashFilter::ENFORCE_ON_LOAD,
78 PrefHashFilter::TRACKING_STRATEGY_ATOMIC,
79 PrefHashFilter::VALUE_IMPERSONAL},
80 }; 66 };
81 67
82 } // namespace 68 } // namespace
83 69
84 // A PrefHashStore that allows simulation of CheckValue results and captures 70 // A PrefHashStore that allows simulation of CheckValue results and captures
85 // checked and stored values. 71 // checked and stored values.
86 class MockPrefHashStore : public PrefHashStore { 72 class MockPrefHashStore : public PrefHashStore {
87 public: 73 public:
88 typedef std::pair<const void*, PrefHashFilter::PrefTrackingStrategy> 74 typedef std::pair<const void*, PrefHashFilter::PrefTrackingStrategy>
89 ValuePtrStrategyPair; 75 ValuePtrStrategyPair;
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 base::StringPiece 291 base::StringPiece
306 MockPrefHashStore::MockPrefHashStoreTransaction::GetStoreUMASuffix() const { 292 MockPrefHashStore::MockPrefHashStoreTransaction::GetStoreUMASuffix() const {
307 return "unused"; 293 return "unused";
308 } 294 }
309 295
310 PrefHashStoreTransaction::ValueState 296 PrefHashStoreTransaction::ValueState
311 MockPrefHashStore::MockPrefHashStoreTransaction::CheckValue( 297 MockPrefHashStore::MockPrefHashStoreTransaction::CheckValue(
312 const std::string& path, 298 const std::string& path,
313 const base::Value* value) const { 299 const base::Value* value) const {
314 return outer_->RecordCheckValue(path, value, 300 return outer_->RecordCheckValue(path, value,
315 PrefHashFilter::TRACKING_STRATEGY_ATOMIC); 301 PrefHashFilter::PrefTrackingStrategy::ATOMIC);
316 } 302 }
317 303
318 void MockPrefHashStore::MockPrefHashStoreTransaction::StoreHash( 304 void MockPrefHashStore::MockPrefHashStoreTransaction::StoreHash(
319 const std::string& path, 305 const std::string& path,
320 const base::Value* new_value) { 306 const base::Value* new_value) {
321 outer_->RecordStoreHash(path, new_value, 307 outer_->RecordStoreHash(path, new_value,
322 PrefHashFilter::TRACKING_STRATEGY_ATOMIC); 308 PrefHashFilter::PrefTrackingStrategy::ATOMIC);
323 } 309 }
324 310
325 PrefHashStoreTransaction::ValueState 311 PrefHashStoreTransaction::ValueState
326 MockPrefHashStore::MockPrefHashStoreTransaction::CheckSplitValue( 312 MockPrefHashStore::MockPrefHashStoreTransaction::CheckSplitValue(
327 const std::string& path, 313 const std::string& path,
328 const base::DictionaryValue* initial_split_value, 314 const base::DictionaryValue* initial_split_value,
329 std::vector<std::string>* invalid_keys) const { 315 std::vector<std::string>* invalid_keys) const {
330 EXPECT_TRUE(invalid_keys && invalid_keys->empty()); 316 EXPECT_TRUE(invalid_keys && invalid_keys->empty());
331 317
332 std::map<std::string, std::vector<std::string>>::const_iterator 318 std::map<std::string, std::vector<std::string>>::const_iterator
333 invalid_keys_result = outer_->invalid_keys_results_.find(path); 319 invalid_keys_result = outer_->invalid_keys_results_.find(path);
334 if (invalid_keys_result != outer_->invalid_keys_results_.end()) { 320 if (invalid_keys_result != outer_->invalid_keys_results_.end()) {
335 invalid_keys->insert(invalid_keys->begin(), 321 invalid_keys->insert(invalid_keys->begin(),
336 invalid_keys_result->second.begin(), 322 invalid_keys_result->second.begin(),
337 invalid_keys_result->second.end()); 323 invalid_keys_result->second.end());
338 } 324 }
339 325
340 return outer_->RecordCheckValue(path, initial_split_value, 326 return outer_->RecordCheckValue(path, initial_split_value,
341 PrefHashFilter::TRACKING_STRATEGY_SPLIT); 327 PrefHashFilter::PrefTrackingStrategy::SPLIT);
342 } 328 }
343 329
344 void MockPrefHashStore::MockPrefHashStoreTransaction::StoreSplitHash( 330 void MockPrefHashStore::MockPrefHashStoreTransaction::StoreSplitHash(
345 const std::string& path, 331 const std::string& path,
346 const base::DictionaryValue* new_value) { 332 const base::DictionaryValue* new_value) {
347 outer_->RecordStoreHash(path, new_value, 333 outer_->RecordStoreHash(path, new_value,
348 PrefHashFilter::TRACKING_STRATEGY_SPLIT); 334 PrefHashFilter::PrefTrackingStrategy::SPLIT);
349 } 335 }
350 336
351 bool MockPrefHashStore::MockPrefHashStoreTransaction::HasHash( 337 bool MockPrefHashStore::MockPrefHashStoreTransaction::HasHash(
352 const std::string& path) const { 338 const std::string& path) const {
353 ADD_FAILURE() << "Unexpected call."; 339 ADD_FAILURE() << "Unexpected call.";
354 return false; 340 return false;
355 } 341 }
356 342
357 void MockPrefHashStore::MockPrefHashStoreTransaction::ImportHash( 343 void MockPrefHashStore::MockPrefHashStoreTransaction::ImportHash(
358 const std::string& path, 344 const std::string& path,
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
712 // No path should be stored on FilterUpdate. 698 // No path should be stored on FilterUpdate.
713 pref_hash_filter_->FilterUpdate(kAtomicPref); 699 pref_hash_filter_->FilterUpdate(kAtomicPref);
714 ASSERT_EQ(0u, mock_pref_hash_store_->stored_paths_count()); 700 ASSERT_EQ(0u, mock_pref_hash_store_->stored_paths_count());
715 701
716 // One path should be stored on FilterSerializeData. 702 // One path should be stored on FilterSerializeData.
717 pref_hash_filter_->FilterSerializeData(&root_dict); 703 pref_hash_filter_->FilterSerializeData(&root_dict);
718 ASSERT_EQ(1u, mock_pref_hash_store_->stored_paths_count()); 704 ASSERT_EQ(1u, mock_pref_hash_store_->stored_paths_count());
719 MockPrefHashStore::ValuePtrStrategyPair stored_value = 705 MockPrefHashStore::ValuePtrStrategyPair stored_value =
720 mock_pref_hash_store_->stored_value(kAtomicPref); 706 mock_pref_hash_store_->stored_value(kAtomicPref);
721 ASSERT_EQ(string_value, stored_value.first); 707 ASSERT_EQ(string_value, stored_value.first);
722 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_ATOMIC, stored_value.second); 708 ASSERT_EQ(PrefHashFilter::PrefTrackingStrategy::ATOMIC, stored_value.second);
723 709
724 ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed()); 710 ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
725 VerifyRecordedReset(false); 711 VerifyRecordedReset(false);
726 } 712 }
727 713
728 TEST_P(PrefHashFilterTest, ReportSuperMacValidity) { 714 TEST_P(PrefHashFilterTest, ReportSuperMacValidity) {
729 // Do this once just to force the histogram to be defined. 715 // Do this once just to force the histogram to be defined.
730 DoFilterOnLoad(false); 716 DoFilterOnLoad(false);
731 717
732 base::HistogramBase* histogram = base::StatisticsRecorder::FindHistogram( 718 base::HistogramBase* histogram = base::StatisticsRecorder::FindHistogram(
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
772 // No path should be stored on FilterUpdate. 758 // No path should be stored on FilterUpdate.
773 pref_hash_filter_->FilterUpdate(kSplitPref); 759 pref_hash_filter_->FilterUpdate(kSplitPref);
774 ASSERT_EQ(0u, mock_pref_hash_store_->stored_paths_count()); 760 ASSERT_EQ(0u, mock_pref_hash_store_->stored_paths_count());
775 761
776 // One path should be stored on FilterSerializeData. 762 // One path should be stored on FilterSerializeData.
777 pref_hash_filter_->FilterSerializeData(&root_dict); 763 pref_hash_filter_->FilterSerializeData(&root_dict);
778 ASSERT_EQ(1u, mock_pref_hash_store_->stored_paths_count()); 764 ASSERT_EQ(1u, mock_pref_hash_store_->stored_paths_count());
779 MockPrefHashStore::ValuePtrStrategyPair stored_value = 765 MockPrefHashStore::ValuePtrStrategyPair stored_value =
780 mock_pref_hash_store_->stored_value(kSplitPref); 766 mock_pref_hash_store_->stored_value(kSplitPref);
781 ASSERT_EQ(dict_value, stored_value.first); 767 ASSERT_EQ(dict_value, stored_value.first);
782 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_SPLIT, stored_value.second); 768 ASSERT_EQ(PrefHashFilter::PrefTrackingStrategy::SPLIT, stored_value.second);
783 769
784 ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed()); 770 ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
785 VerifyRecordedReset(false); 771 VerifyRecordedReset(false);
786 } 772 }
787 773
788 TEST_P(PrefHashFilterTest, FilterUntrackedPrefUpdate) { 774 TEST_P(PrefHashFilterTest, FilterUntrackedPrefUpdate) {
789 base::DictionaryValue root_dict; 775 base::DictionaryValue root_dict;
790 root_dict.Set("untracked", new base::StringValue("some value")); 776 root_dict.Set("untracked", new base::StringValue("some value"));
791 pref_hash_filter_->FilterUpdate("untracked"); 777 pref_hash_filter_->FilterUpdate("untracked");
792 778
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 root_dict.Set(kAtomicPref3, int_value5); 814 root_dict.Set(kAtomicPref3, int_value5);
829 ASSERT_EQ(0u, mock_pref_hash_store_->stored_paths_count()); 815 ASSERT_EQ(0u, mock_pref_hash_store_->stored_paths_count());
830 816
831 // On FilterSerializeData, only kAtomicPref, kAtomicPref3, and kSplitPref 817 // On FilterSerializeData, only kAtomicPref, kAtomicPref3, and kSplitPref
832 // should get a new hash. 818 // should get a new hash.
833 pref_hash_filter_->FilterSerializeData(&root_dict); 819 pref_hash_filter_->FilterSerializeData(&root_dict);
834 ASSERT_EQ(3u, mock_pref_hash_store_->stored_paths_count()); 820 ASSERT_EQ(3u, mock_pref_hash_store_->stored_paths_count());
835 MockPrefHashStore::ValuePtrStrategyPair stored_value_atomic1 = 821 MockPrefHashStore::ValuePtrStrategyPair stored_value_atomic1 =
836 mock_pref_hash_store_->stored_value(kAtomicPref); 822 mock_pref_hash_store_->stored_value(kAtomicPref);
837 ASSERT_EQ(int_value1, stored_value_atomic1.first); 823 ASSERT_EQ(int_value1, stored_value_atomic1.first);
838 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_ATOMIC, 824 ASSERT_EQ(PrefHashFilter::PrefTrackingStrategy::ATOMIC,
839 stored_value_atomic1.second); 825 stored_value_atomic1.second);
840 ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed()); 826 ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
841 827
842 MockPrefHashStore::ValuePtrStrategyPair stored_value_atomic3 = 828 MockPrefHashStore::ValuePtrStrategyPair stored_value_atomic3 =
843 mock_pref_hash_store_->stored_value(kAtomicPref3); 829 mock_pref_hash_store_->stored_value(kAtomicPref3);
844 ASSERT_EQ(int_value5, stored_value_atomic3.first); 830 ASSERT_EQ(int_value5, stored_value_atomic3.first);
845 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_ATOMIC, 831 ASSERT_EQ(PrefHashFilter::PrefTrackingStrategy::ATOMIC,
846 stored_value_atomic3.second); 832 stored_value_atomic3.second);
847 833
848 MockPrefHashStore::ValuePtrStrategyPair stored_value_split = 834 MockPrefHashStore::ValuePtrStrategyPair stored_value_split =
849 mock_pref_hash_store_->stored_value(kSplitPref); 835 mock_pref_hash_store_->stored_value(kSplitPref);
850 ASSERT_EQ(dict_value, stored_value_split.first); 836 ASSERT_EQ(dict_value, stored_value_split.first);
851 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_SPLIT, stored_value_split.second); 837 ASSERT_EQ(PrefHashFilter::PrefTrackingStrategy::SPLIT,
838 stored_value_split.second);
852 } 839 }
853 840
854 TEST_P(PrefHashFilterTest, UnknownNullValue) { 841 TEST_P(PrefHashFilterTest, UnknownNullValue) {
855 ASSERT_FALSE(pref_store_contents_->Get(kAtomicPref, NULL)); 842 ASSERT_FALSE(pref_store_contents_->Get(kAtomicPref, NULL));
856 ASSERT_FALSE(pref_store_contents_->Get(kSplitPref, NULL)); 843 ASSERT_FALSE(pref_store_contents_->Get(kSplitPref, NULL));
857 // NULL values are always trusted by the PrefHashStore. 844 // NULL values are always trusted by the PrefHashStore.
858 mock_pref_hash_store_->SetCheckResult( 845 mock_pref_hash_store_->SetCheckResult(
859 kAtomicPref, PrefHashStoreTransaction::TRUSTED_NULL_VALUE); 846 kAtomicPref, PrefHashStoreTransaction::TRUSTED_NULL_VALUE);
860 mock_pref_hash_store_->SetCheckResult( 847 mock_pref_hash_store_->SetCheckResult(
861 kSplitPref, PrefHashStoreTransaction::TRUSTED_NULL_VALUE); 848 kSplitPref, PrefHashStoreTransaction::TRUSTED_NULL_VALUE);
862 DoFilterOnLoad(false); 849 DoFilterOnLoad(false);
863 ASSERT_EQ(arraysize(kTestTrackedPrefs), 850 ASSERT_EQ(arraysize(kTestTrackedPrefs),
864 mock_pref_hash_store_->checked_paths_count()); 851 mock_pref_hash_store_->checked_paths_count());
865 ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count()); 852 ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count());
866 ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed()); 853 ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
867 854
868 MockPrefHashStore::ValuePtrStrategyPair stored_atomic_value = 855 MockPrefHashStore::ValuePtrStrategyPair stored_atomic_value =
869 mock_pref_hash_store_->stored_value(kAtomicPref); 856 mock_pref_hash_store_->stored_value(kAtomicPref);
870 ASSERT_EQ(NULL, stored_atomic_value.first); 857 ASSERT_EQ(NULL, stored_atomic_value.first);
871 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_ATOMIC, 858 ASSERT_EQ(PrefHashFilter::PrefTrackingStrategy::ATOMIC,
872 stored_atomic_value.second); 859 stored_atomic_value.second);
873 860
874 MockPrefHashStore::ValuePtrStrategyPair stored_split_value = 861 MockPrefHashStore::ValuePtrStrategyPair stored_split_value =
875 mock_pref_hash_store_->stored_value(kSplitPref); 862 mock_pref_hash_store_->stored_value(kSplitPref);
876 ASSERT_EQ(NULL, stored_split_value.first); 863 ASSERT_EQ(NULL, stored_split_value.first);
877 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_SPLIT, stored_split_value.second); 864 ASSERT_EQ(PrefHashFilter::PrefTrackingStrategy::SPLIT,
865 stored_split_value.second);
878 866
879 // Delegate saw all prefs, two of which had the expected value_state. 867 // Delegate saw all prefs, two of which had the expected value_state.
880 ASSERT_EQ(arraysize(kTestTrackedPrefs), 868 ASSERT_EQ(arraysize(kTestTrackedPrefs),
881 mock_validation_delegate_record_->recorded_validations_count()); 869 mock_validation_delegate_record_->recorded_validations_count());
882 ASSERT_EQ(2u, mock_validation_delegate_record_->CountValidationsOfState( 870 ASSERT_EQ(2u, mock_validation_delegate_record_->CountValidationsOfState(
883 PrefHashStoreTransaction::TRUSTED_NULL_VALUE)); 871 PrefHashStoreTransaction::TRUSTED_NULL_VALUE));
884 ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u, 872 ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u,
885 mock_validation_delegate_record_->CountValidationsOfState( 873 mock_validation_delegate_record_->CountValidationsOfState(
886 PrefHashStoreTransaction::UNCHANGED)); 874 PrefHashStoreTransaction::UNCHANGED));
887 875
888 const MockValidationDelegateRecord::ValidationEvent* validated_split_pref = 876 const MockValidationDelegateRecord::ValidationEvent* validated_split_pref =
889 mock_validation_delegate_record_->GetEventForPath(kSplitPref); 877 mock_validation_delegate_record_->GetEventForPath(kSplitPref);
890 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_SPLIT, 878 ASSERT_EQ(PrefHashFilter::PrefTrackingStrategy::SPLIT,
891 validated_split_pref->strategy); 879 validated_split_pref->strategy);
892 ASSERT_FALSE(validated_split_pref->is_personal); 880 ASSERT_FALSE(validated_split_pref->is_personal);
893 const MockValidationDelegateRecord::ValidationEvent* validated_atomic_pref = 881 const MockValidationDelegateRecord::ValidationEvent* validated_atomic_pref =
894 mock_validation_delegate_record_->GetEventForPath(kAtomicPref); 882 mock_validation_delegate_record_->GetEventForPath(kAtomicPref);
895 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_ATOMIC, 883 ASSERT_EQ(PrefHashFilter::PrefTrackingStrategy::ATOMIC,
896 validated_atomic_pref->strategy); 884 validated_atomic_pref->strategy);
897 ASSERT_TRUE(validated_atomic_pref->is_personal); 885 ASSERT_TRUE(validated_atomic_pref->is_personal);
898 } 886 }
899 887
900 TEST_P(PrefHashFilterTest, InitialValueUnknown) { 888 TEST_P(PrefHashFilterTest, InitialValueUnknown) {
901 // Ownership of these values is transfered to |pref_store_contents_|. 889 // Ownership of these values is transfered to |pref_store_contents_|.
902 base::StringValue* string_value = new base::StringValue("string value"); 890 base::StringValue* string_value = new base::StringValue("string value");
903 pref_store_contents_->Set(kAtomicPref, string_value); 891 pref_store_contents_->Set(kAtomicPref, string_value);
904 892
905 base::DictionaryValue* dict_value = new base::DictionaryValue; 893 base::DictionaryValue* dict_value = new base::DictionaryValue;
906 dict_value->SetString("a", "foo"); 894 dict_value->SetString("a", "foo");
907 dict_value->SetInteger("b", 1234); 895 dict_value->SetInteger("b", 1234);
908 pref_store_contents_->Set(kSplitPref, dict_value); 896 pref_store_contents_->Set(kSplitPref, dict_value);
909 897
910 ASSERT_TRUE(pref_store_contents_->Get(kAtomicPref, NULL)); 898 ASSERT_TRUE(pref_store_contents_->Get(kAtomicPref, NULL));
911 ASSERT_TRUE(pref_store_contents_->Get(kSplitPref, NULL)); 899 ASSERT_TRUE(pref_store_contents_->Get(kSplitPref, NULL));
912 900
913 mock_pref_hash_store_->SetCheckResult( 901 mock_pref_hash_store_->SetCheckResult(
914 kAtomicPref, PrefHashStoreTransaction::UNTRUSTED_UNKNOWN_VALUE); 902 kAtomicPref, PrefHashStoreTransaction::UNTRUSTED_UNKNOWN_VALUE);
915 mock_pref_hash_store_->SetCheckResult( 903 mock_pref_hash_store_->SetCheckResult(
916 kSplitPref, PrefHashStoreTransaction::UNTRUSTED_UNKNOWN_VALUE); 904 kSplitPref, PrefHashStoreTransaction::UNTRUSTED_UNKNOWN_VALUE);
917 // If we are enforcing, expect this to report changes. 905 // If we are enforcing, expect this to report changes.
918 DoFilterOnLoad(GetParam() >= PrefHashFilter::ENFORCE_ON_LOAD); 906 DoFilterOnLoad(GetParam() >=
907 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD);
919 ASSERT_EQ(arraysize(kTestTrackedPrefs), 908 ASSERT_EQ(arraysize(kTestTrackedPrefs),
920 mock_pref_hash_store_->checked_paths_count()); 909 mock_pref_hash_store_->checked_paths_count());
921 ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count()); 910 ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count());
922 ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed()); 911 ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
923 912
924 // Delegate saw all prefs, two of which had the expected value_state. 913 // Delegate saw all prefs, two of which had the expected value_state.
925 ASSERT_EQ(arraysize(kTestTrackedPrefs), 914 ASSERT_EQ(arraysize(kTestTrackedPrefs),
926 mock_validation_delegate_record_->recorded_validations_count()); 915 mock_validation_delegate_record_->recorded_validations_count());
927 ASSERT_EQ(2u, mock_validation_delegate_record_->CountValidationsOfState( 916 ASSERT_EQ(2u, mock_validation_delegate_record_->CountValidationsOfState(
928 PrefHashStoreTransaction::UNTRUSTED_UNKNOWN_VALUE)); 917 PrefHashStoreTransaction::UNTRUSTED_UNKNOWN_VALUE));
929 ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u, 918 ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u,
930 mock_validation_delegate_record_->CountValidationsOfState( 919 mock_validation_delegate_record_->CountValidationsOfState(
931 PrefHashStoreTransaction::UNCHANGED)); 920 PrefHashStoreTransaction::UNCHANGED));
932 921
933 MockPrefHashStore::ValuePtrStrategyPair stored_atomic_value = 922 MockPrefHashStore::ValuePtrStrategyPair stored_atomic_value =
934 mock_pref_hash_store_->stored_value(kAtomicPref); 923 mock_pref_hash_store_->stored_value(kAtomicPref);
935 MockPrefHashStore::ValuePtrStrategyPair stored_split_value = 924 MockPrefHashStore::ValuePtrStrategyPair stored_split_value =
936 mock_pref_hash_store_->stored_value(kSplitPref); 925 mock_pref_hash_store_->stored_value(kSplitPref);
937 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_ATOMIC, 926 ASSERT_EQ(PrefHashFilter::PrefTrackingStrategy::ATOMIC,
938 stored_atomic_value.second); 927 stored_atomic_value.second);
939 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_SPLIT, stored_split_value.second); 928 ASSERT_EQ(PrefHashFilter::PrefTrackingStrategy::SPLIT,
940 if (GetParam() == PrefHashFilter::ENFORCE_ON_LOAD) { 929 stored_split_value.second);
930 if (GetParam() == PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD) {
941 // Ensure the prefs were cleared and the hashes for NULL were restored if 931 // Ensure the prefs were cleared and the hashes for NULL were restored if
942 // the current enforcement level denies seeding. 932 // the current enforcement level denies seeding.
943 ASSERT_FALSE(pref_store_contents_->Get(kAtomicPref, NULL)); 933 ASSERT_FALSE(pref_store_contents_->Get(kAtomicPref, NULL));
944 ASSERT_EQ(NULL, stored_atomic_value.first); 934 ASSERT_EQ(NULL, stored_atomic_value.first);
945 935
946 ASSERT_FALSE(pref_store_contents_->Get(kSplitPref, NULL)); 936 ASSERT_FALSE(pref_store_contents_->Get(kSplitPref, NULL));
947 ASSERT_EQ(NULL, stored_split_value.first); 937 ASSERT_EQ(NULL, stored_split_value.first);
948 938
949 VerifyRecordedReset(true); 939 VerifyRecordedReset(true);
950 } else { 940 } else {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
996 mock_validation_delegate_record_->CountValidationsOfState( 986 mock_validation_delegate_record_->CountValidationsOfState(
997 PrefHashStoreTransaction::UNCHANGED)); 987 PrefHashStoreTransaction::UNCHANGED));
998 988
999 // Seeding is always allowed for trusted unknown values. 989 // Seeding is always allowed for trusted unknown values.
1000 const base::Value* atomic_value_in_store; 990 const base::Value* atomic_value_in_store;
1001 ASSERT_TRUE(pref_store_contents_->Get(kAtomicPref, &atomic_value_in_store)); 991 ASSERT_TRUE(pref_store_contents_->Get(kAtomicPref, &atomic_value_in_store));
1002 ASSERT_EQ(string_value, atomic_value_in_store); 992 ASSERT_EQ(string_value, atomic_value_in_store);
1003 MockPrefHashStore::ValuePtrStrategyPair stored_atomic_value = 993 MockPrefHashStore::ValuePtrStrategyPair stored_atomic_value =
1004 mock_pref_hash_store_->stored_value(kAtomicPref); 994 mock_pref_hash_store_->stored_value(kAtomicPref);
1005 ASSERT_EQ(string_value, stored_atomic_value.first); 995 ASSERT_EQ(string_value, stored_atomic_value.first);
1006 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_ATOMIC, 996 ASSERT_EQ(PrefHashFilter::PrefTrackingStrategy::ATOMIC,
1007 stored_atomic_value.second); 997 stored_atomic_value.second);
1008 998
1009 const base::Value* split_value_in_store; 999 const base::Value* split_value_in_store;
1010 ASSERT_TRUE(pref_store_contents_->Get(kSplitPref, &split_value_in_store)); 1000 ASSERT_TRUE(pref_store_contents_->Get(kSplitPref, &split_value_in_store));
1011 ASSERT_EQ(dict_value, split_value_in_store); 1001 ASSERT_EQ(dict_value, split_value_in_store);
1012 MockPrefHashStore::ValuePtrStrategyPair stored_split_value = 1002 MockPrefHashStore::ValuePtrStrategyPair stored_split_value =
1013 mock_pref_hash_store_->stored_value(kSplitPref); 1003 mock_pref_hash_store_->stored_value(kSplitPref);
1014 ASSERT_EQ(dict_value, stored_split_value.first); 1004 ASSERT_EQ(dict_value, stored_split_value.first);
1015 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_SPLIT, stored_split_value.second); 1005 ASSERT_EQ(PrefHashFilter::PrefTrackingStrategy::SPLIT,
1006 stored_split_value.second);
1016 } 1007 }
1017 1008
1018 TEST_P(PrefHashFilterTest, InitialValueChanged) { 1009 TEST_P(PrefHashFilterTest, InitialValueChanged) {
1019 // Ownership of this value is transfered to |pref_store_contents_|. 1010 // Ownership of this value is transfered to |pref_store_contents_|.
1020 base::Value* int_value = new base::Value(1234); 1011 base::Value* int_value = new base::Value(1234);
1021 pref_store_contents_->Set(kAtomicPref, int_value); 1012 pref_store_contents_->Set(kAtomicPref, int_value);
1022 1013
1023 base::DictionaryValue* dict_value = new base::DictionaryValue; 1014 base::DictionaryValue* dict_value = new base::DictionaryValue;
1024 dict_value->SetString("a", "foo"); 1015 dict_value->SetString("a", "foo");
1025 dict_value->SetInteger("b", 1234); 1016 dict_value->SetInteger("b", 1234);
1026 dict_value->SetInteger("c", 56); 1017 dict_value->SetInteger("c", 56);
1027 dict_value->SetBoolean("d", false); 1018 dict_value->SetBoolean("d", false);
1028 pref_store_contents_->Set(kSplitPref, dict_value); 1019 pref_store_contents_->Set(kSplitPref, dict_value);
1029 1020
1030 ASSERT_TRUE(pref_store_contents_->Get(kAtomicPref, NULL)); 1021 ASSERT_TRUE(pref_store_contents_->Get(kAtomicPref, NULL));
1031 ASSERT_TRUE(pref_store_contents_->Get(kSplitPref, NULL)); 1022 ASSERT_TRUE(pref_store_contents_->Get(kSplitPref, NULL));
1032 1023
1033 mock_pref_hash_store_->SetCheckResult(kAtomicPref, 1024 mock_pref_hash_store_->SetCheckResult(kAtomicPref,
1034 PrefHashStoreTransaction::CHANGED); 1025 PrefHashStoreTransaction::CHANGED);
1035 mock_pref_hash_store_->SetCheckResult(kSplitPref, 1026 mock_pref_hash_store_->SetCheckResult(kSplitPref,
1036 PrefHashStoreTransaction::CHANGED); 1027 PrefHashStoreTransaction::CHANGED);
1037 1028
1038 std::vector<std::string> mock_invalid_keys; 1029 std::vector<std::string> mock_invalid_keys;
1039 mock_invalid_keys.push_back("a"); 1030 mock_invalid_keys.push_back("a");
1040 mock_invalid_keys.push_back("c"); 1031 mock_invalid_keys.push_back("c");
1041 mock_pref_hash_store_->SetInvalidKeysResult(kSplitPref, mock_invalid_keys); 1032 mock_pref_hash_store_->SetInvalidKeysResult(kSplitPref, mock_invalid_keys);
1042 1033
1043 DoFilterOnLoad(GetParam() >= PrefHashFilter::ENFORCE_ON_LOAD); 1034 DoFilterOnLoad(GetParam() >=
1035 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD);
1044 ASSERT_EQ(arraysize(kTestTrackedPrefs), 1036 ASSERT_EQ(arraysize(kTestTrackedPrefs),
1045 mock_pref_hash_store_->checked_paths_count()); 1037 mock_pref_hash_store_->checked_paths_count());
1046 ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count()); 1038 ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count());
1047 ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed()); 1039 ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
1048 1040
1049 MockPrefHashStore::ValuePtrStrategyPair stored_atomic_value = 1041 MockPrefHashStore::ValuePtrStrategyPair stored_atomic_value =
1050 mock_pref_hash_store_->stored_value(kAtomicPref); 1042 mock_pref_hash_store_->stored_value(kAtomicPref);
1051 MockPrefHashStore::ValuePtrStrategyPair stored_split_value = 1043 MockPrefHashStore::ValuePtrStrategyPair stored_split_value =
1052 mock_pref_hash_store_->stored_value(kSplitPref); 1044 mock_pref_hash_store_->stored_value(kSplitPref);
1053 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_ATOMIC, 1045 ASSERT_EQ(PrefHashFilter::PrefTrackingStrategy::ATOMIC,
1054 stored_atomic_value.second); 1046 stored_atomic_value.second);
1055 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_SPLIT, stored_split_value.second); 1047 ASSERT_EQ(PrefHashFilter::PrefTrackingStrategy::SPLIT,
1056 if (GetParam() == PrefHashFilter::ENFORCE_ON_LOAD) { 1048 stored_split_value.second);
1049 if (GetParam() == PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD) {
1057 // Ensure the atomic pref was cleared and the hash for NULL was restored if 1050 // Ensure the atomic pref was cleared and the hash for NULL was restored if
1058 // the current enforcement level prevents changes. 1051 // the current enforcement level prevents changes.
1059 ASSERT_FALSE(pref_store_contents_->Get(kAtomicPref, NULL)); 1052 ASSERT_FALSE(pref_store_contents_->Get(kAtomicPref, NULL));
1060 ASSERT_EQ(NULL, stored_atomic_value.first); 1053 ASSERT_EQ(NULL, stored_atomic_value.first);
1061 1054
1062 // The split pref on the other hand should only have been stripped of its 1055 // The split pref on the other hand should only have been stripped of its
1063 // invalid keys. 1056 // invalid keys.
1064 const base::Value* split_value_in_store; 1057 const base::Value* split_value_in_store;
1065 ASSERT_TRUE(pref_store_contents_->Get(kSplitPref, &split_value_in_store)); 1058 ASSERT_TRUE(pref_store_contents_->Get(kSplitPref, &split_value_in_store));
1066 ASSERT_EQ(2U, dict_value->size()); 1059 ASSERT_EQ(2U, dict_value->size());
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1114 ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u, 1107 ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u,
1115 mock_validation_delegate_record_->CountValidationsOfState( 1108 mock_validation_delegate_record_->CountValidationsOfState(
1116 PrefHashStoreTransaction::UNCHANGED)); 1109 PrefHashStoreTransaction::UNCHANGED));
1117 1110
1118 // Regardless of the enforcement level, the only thing that should be done is 1111 // Regardless of the enforcement level, the only thing that should be done is
1119 // to restore the hash for NULL. The value itself should still be NULL. 1112 // to restore the hash for NULL. The value itself should still be NULL.
1120 ASSERT_FALSE(pref_store_contents_->Get(kAtomicPref, NULL)); 1113 ASSERT_FALSE(pref_store_contents_->Get(kAtomicPref, NULL));
1121 MockPrefHashStore::ValuePtrStrategyPair stored_atomic_value = 1114 MockPrefHashStore::ValuePtrStrategyPair stored_atomic_value =
1122 mock_pref_hash_store_->stored_value(kAtomicPref); 1115 mock_pref_hash_store_->stored_value(kAtomicPref);
1123 ASSERT_EQ(NULL, stored_atomic_value.first); 1116 ASSERT_EQ(NULL, stored_atomic_value.first);
1124 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_ATOMIC, 1117 ASSERT_EQ(PrefHashFilter::PrefTrackingStrategy::ATOMIC,
1125 stored_atomic_value.second); 1118 stored_atomic_value.second);
1126 1119
1127 ASSERT_FALSE(pref_store_contents_->Get(kSplitPref, NULL)); 1120 ASSERT_FALSE(pref_store_contents_->Get(kSplitPref, NULL));
1128 MockPrefHashStore::ValuePtrStrategyPair stored_split_value = 1121 MockPrefHashStore::ValuePtrStrategyPair stored_split_value =
1129 mock_pref_hash_store_->stored_value(kSplitPref); 1122 mock_pref_hash_store_->stored_value(kSplitPref);
1130 ASSERT_EQ(NULL, stored_split_value.first); 1123 ASSERT_EQ(NULL, stored_split_value.first);
1131 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_SPLIT, stored_split_value.second); 1124 ASSERT_EQ(PrefHashFilter::PrefTrackingStrategy::SPLIT,
1125 stored_split_value.second);
1132 } 1126 }
1133 1127
1134 TEST_P(PrefHashFilterTest, InitialValueUnchangedLegacyId) { 1128 TEST_P(PrefHashFilterTest, InitialValueUnchangedLegacyId) {
1135 // Ownership of these values is transfered to |pref_store_contents_|. 1129 // Ownership of these values is transfered to |pref_store_contents_|.
1136 base::StringValue* string_value = new base::StringValue("string value"); 1130 base::StringValue* string_value = new base::StringValue("string value");
1137 pref_store_contents_->Set(kAtomicPref, string_value); 1131 pref_store_contents_->Set(kAtomicPref, string_value);
1138 1132
1139 base::DictionaryValue* dict_value = new base::DictionaryValue; 1133 base::DictionaryValue* dict_value = new base::DictionaryValue;
1140 dict_value->SetString("a", "foo"); 1134 dict_value->SetString("a", "foo");
1141 dict_value->SetInteger("b", 1234); 1135 dict_value->SetInteger("b", 1234);
(...skipping 21 matching lines...) Expand all
1163 PrefHashStoreTransaction::UNCHANGED)); 1157 PrefHashStoreTransaction::UNCHANGED));
1164 1158
1165 // Ensure that both the atomic and split hashes were restored. 1159 // Ensure that both the atomic and split hashes were restored.
1166 ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count()); 1160 ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count());
1167 1161
1168 // In all cases, the values should have remained intact and the hashes should 1162 // In all cases, the values should have remained intact and the hashes should
1169 // have been updated to match them. 1163 // have been updated to match them.
1170 1164
1171 MockPrefHashStore::ValuePtrStrategyPair stored_atomic_value = 1165 MockPrefHashStore::ValuePtrStrategyPair stored_atomic_value =
1172 mock_pref_hash_store_->stored_value(kAtomicPref); 1166 mock_pref_hash_store_->stored_value(kAtomicPref);
1173 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_ATOMIC, 1167 ASSERT_EQ(PrefHashFilter::PrefTrackingStrategy::ATOMIC,
1174 stored_atomic_value.second); 1168 stored_atomic_value.second);
1175 const base::Value* atomic_value_in_store; 1169 const base::Value* atomic_value_in_store;
1176 ASSERT_TRUE(pref_store_contents_->Get(kAtomicPref, &atomic_value_in_store)); 1170 ASSERT_TRUE(pref_store_contents_->Get(kAtomicPref, &atomic_value_in_store));
1177 ASSERT_EQ(string_value, atomic_value_in_store); 1171 ASSERT_EQ(string_value, atomic_value_in_store);
1178 ASSERT_EQ(string_value, stored_atomic_value.first); 1172 ASSERT_EQ(string_value, stored_atomic_value.first);
1179 1173
1180 MockPrefHashStore::ValuePtrStrategyPair stored_split_value = 1174 MockPrefHashStore::ValuePtrStrategyPair stored_split_value =
1181 mock_pref_hash_store_->stored_value(kSplitPref); 1175 mock_pref_hash_store_->stored_value(kSplitPref);
1182 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_SPLIT, stored_split_value.second); 1176 ASSERT_EQ(PrefHashFilter::PrefTrackingStrategy::SPLIT,
1177 stored_split_value.second);
1183 const base::Value* split_value_in_store; 1178 const base::Value* split_value_in_store;
1184 ASSERT_TRUE(pref_store_contents_->Get(kSplitPref, &split_value_in_store)); 1179 ASSERT_TRUE(pref_store_contents_->Get(kSplitPref, &split_value_in_store));
1185 ASSERT_EQ(dict_value, split_value_in_store); 1180 ASSERT_EQ(dict_value, split_value_in_store);
1186 ASSERT_EQ(dict_value, stored_split_value.first); 1181 ASSERT_EQ(dict_value, stored_split_value.first);
1187 1182
1188 VerifyRecordedReset(false); 1183 VerifyRecordedReset(false);
1189 } 1184 }
1190 1185
1191 TEST_P(PrefHashFilterTest, DontResetReportOnly) { 1186 TEST_P(PrefHashFilterTest, DontResetReportOnly) {
1192 // Ownership of these values is transfered to |pref_store_contents_|. 1187 // Ownership of these values is transfered to |pref_store_contents_|.
(...skipping 14 matching lines...) Expand all
1207 1202
1208 mock_pref_hash_store_->SetCheckResult(kAtomicPref, 1203 mock_pref_hash_store_->SetCheckResult(kAtomicPref,
1209 PrefHashStoreTransaction::CHANGED); 1204 PrefHashStoreTransaction::CHANGED);
1210 mock_pref_hash_store_->SetCheckResult(kAtomicPref2, 1205 mock_pref_hash_store_->SetCheckResult(kAtomicPref2,
1211 PrefHashStoreTransaction::CHANGED); 1206 PrefHashStoreTransaction::CHANGED);
1212 mock_pref_hash_store_->SetCheckResult(kReportOnlyPref, 1207 mock_pref_hash_store_->SetCheckResult(kReportOnlyPref,
1213 PrefHashStoreTransaction::CHANGED); 1208 PrefHashStoreTransaction::CHANGED);
1214 mock_pref_hash_store_->SetCheckResult(kReportOnlySplitPref, 1209 mock_pref_hash_store_->SetCheckResult(kReportOnlySplitPref,
1215 PrefHashStoreTransaction::CHANGED); 1210 PrefHashStoreTransaction::CHANGED);
1216 1211
1217 DoFilterOnLoad(GetParam() >= PrefHashFilter::ENFORCE_ON_LOAD); 1212 DoFilterOnLoad(GetParam() >=
1213 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD);
1218 // All prefs should be checked and a new hash should be stored for each tested 1214 // All prefs should be checked and a new hash should be stored for each tested
1219 // pref. 1215 // pref.
1220 ASSERT_EQ(arraysize(kTestTrackedPrefs), 1216 ASSERT_EQ(arraysize(kTestTrackedPrefs),
1221 mock_pref_hash_store_->checked_paths_count()); 1217 mock_pref_hash_store_->checked_paths_count());
1222 ASSERT_EQ(4u, mock_pref_hash_store_->stored_paths_count()); 1218 ASSERT_EQ(4u, mock_pref_hash_store_->stored_paths_count());
1223 ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed()); 1219 ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
1224 1220
1225 // Delegate saw all prefs, four of which had the expected value_state. 1221 // Delegate saw all prefs, four of which had the expected value_state.
1226 ASSERT_EQ(arraysize(kTestTrackedPrefs), 1222 ASSERT_EQ(arraysize(kTestTrackedPrefs),
1227 mock_validation_delegate_record_->recorded_validations_count()); 1223 mock_validation_delegate_record_->recorded_validations_count());
1228 ASSERT_EQ(4u, mock_validation_delegate_record_->CountValidationsOfState( 1224 ASSERT_EQ(4u, mock_validation_delegate_record_->CountValidationsOfState(
1229 PrefHashStoreTransaction::CHANGED)); 1225 PrefHashStoreTransaction::CHANGED));
1230 ASSERT_EQ(arraysize(kTestTrackedPrefs) - 4u, 1226 ASSERT_EQ(arraysize(kTestTrackedPrefs) - 4u,
1231 mock_validation_delegate_record_->CountValidationsOfState( 1227 mock_validation_delegate_record_->CountValidationsOfState(
1232 PrefHashStoreTransaction::UNCHANGED)); 1228 PrefHashStoreTransaction::UNCHANGED));
1233 1229
1234 // No matter what the enforcement level is, the report only pref should never 1230 // No matter what the enforcement level is, the report only pref should never
1235 // be reset. 1231 // be reset.
1236 ASSERT_TRUE(pref_store_contents_->Get(kReportOnlyPref, NULL)); 1232 ASSERT_TRUE(pref_store_contents_->Get(kReportOnlyPref, NULL));
1237 ASSERT_TRUE(pref_store_contents_->Get(kReportOnlySplitPref, NULL)); 1233 ASSERT_TRUE(pref_store_contents_->Get(kReportOnlySplitPref, NULL));
1238 ASSERT_EQ(report_only_val, 1234 ASSERT_EQ(report_only_val,
1239 mock_pref_hash_store_->stored_value(kReportOnlyPref).first); 1235 mock_pref_hash_store_->stored_value(kReportOnlyPref).first);
1240 ASSERT_EQ(report_only_split_val, 1236 ASSERT_EQ(report_only_split_val,
1241 mock_pref_hash_store_->stored_value(kReportOnlySplitPref).first); 1237 mock_pref_hash_store_->stored_value(kReportOnlySplitPref).first);
1242 1238
1243 // All other prefs should have been reset if the enforcement level allows it. 1239 // All other prefs should have been reset if the enforcement level allows it.
1244 if (GetParam() == PrefHashFilter::ENFORCE_ON_LOAD) { 1240 if (GetParam() == PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD) {
1245 ASSERT_FALSE(pref_store_contents_->Get(kAtomicPref, NULL)); 1241 ASSERT_FALSE(pref_store_contents_->Get(kAtomicPref, NULL));
1246 ASSERT_FALSE(pref_store_contents_->Get(kAtomicPref2, NULL)); 1242 ASSERT_FALSE(pref_store_contents_->Get(kAtomicPref2, NULL));
1247 ASSERT_EQ(NULL, mock_pref_hash_store_->stored_value(kAtomicPref).first); 1243 ASSERT_EQ(NULL, mock_pref_hash_store_->stored_value(kAtomicPref).first);
1248 ASSERT_EQ(NULL, mock_pref_hash_store_->stored_value(kAtomicPref2).first); 1244 ASSERT_EQ(NULL, mock_pref_hash_store_->stored_value(kAtomicPref2).first);
1249 1245
1250 VerifyRecordedReset(true); 1246 VerifyRecordedReset(true);
1251 } else { 1247 } else {
1252 const base::Value* value_in_store; 1248 const base::Value* value_in_store;
1253 const base::Value* value_in_store2; 1249 const base::Value* value_in_store2;
1254 ASSERT_TRUE(pref_store_contents_->Get(kAtomicPref, &value_in_store)); 1250 ASSERT_TRUE(pref_store_contents_->Get(kAtomicPref, &value_in_store));
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
1384 1380
1385 // External validation should have two CHANGED prefs (kAtomic and kSplit). 1381 // External validation should have two CHANGED prefs (kAtomic and kSplit).
1386 ASSERT_EQ(2u, 1382 ASSERT_EQ(2u,
1387 mock_validation_delegate_record_->CountExternalValidationsOfState( 1383 mock_validation_delegate_record_->CountExternalValidationsOfState(
1388 PrefHashStoreTransaction::CHANGED)); 1384 PrefHashStoreTransaction::CHANGED));
1389 ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u, 1385 ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u,
1390 mock_validation_delegate_record_->CountExternalValidationsOfState( 1386 mock_validation_delegate_record_->CountExternalValidationsOfState(
1391 PrefHashStoreTransaction::UNCHANGED)); 1387 PrefHashStoreTransaction::UNCHANGED));
1392 } 1388 }
1393 1389
1394 INSTANTIATE_TEST_CASE_P(PrefHashFilterTestInstance, 1390 INSTANTIATE_TEST_CASE_P(
1395 PrefHashFilterTest, 1391 PrefHashFilterTestInstance,
1396 testing::Values(PrefHashFilter::NO_ENFORCEMENT, 1392 PrefHashFilterTest,
1397 PrefHashFilter::ENFORCE_ON_LOAD)); 1393 testing::Values(PrefHashFilter::EnforcementLevel::NO_ENFORCEMENT,
1394 PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD));
OLDNEW
« no previous file with comments | « components/user_prefs/tracked/pref_hash_filter.cc ('k') | components/user_prefs/tracked/tracked_preference_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698