OLD | NEW |
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 445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
456 // of the copy, we make it forward calls to the mock it was created from. | 456 // of the copy, we make it forward calls to the mock it was created from. |
457 // Once set, |origin_mock_| must outlive this instance. | 457 // Once set, |origin_mock_| must outlive this instance. |
458 MockHashStoreContents* origin_mock_; | 458 MockHashStoreContents* origin_mock_; |
459 | 459 |
460 DISALLOW_COPY_AND_ASSIGN(MockHashStoreContents); | 460 DISALLOW_COPY_AND_ASSIGN(MockHashStoreContents); |
461 }; | 461 }; |
462 | 462 |
463 std::string MockHashStoreContents::GetStoredMac(const std::string& path) const { | 463 std::string MockHashStoreContents::GetStoredMac(const std::string& path) const { |
464 const base::Value* out_value; | 464 const base::Value* out_value; |
465 if (dictionary_.GetWithoutPathExpansion(path, &out_value)) { | 465 if (dictionary_.GetWithoutPathExpansion(path, &out_value)) { |
466 const base::StringValue* value_as_string; | 466 const base::Value* value_as_string; |
467 EXPECT_TRUE(out_value->GetAsString(&value_as_string)); | 467 EXPECT_TRUE(out_value->GetAsString(&value_as_string)); |
468 | 468 |
469 return value_as_string->GetString(); | 469 return value_as_string->GetString(); |
470 } | 470 } |
471 | 471 |
472 return std::string(); | 472 return std::string(); |
473 } | 473 } |
474 | 474 |
475 std::string MockHashStoreContents::GetStoredSplitMac( | 475 std::string MockHashStoreContents::GetStoredSplitMac( |
476 const std::string& path, | 476 const std::string& path, |
477 const std::string& split_path) const { | 477 const std::string& split_path) const { |
478 const base::Value* out_value; | 478 const base::Value* out_value; |
479 if (dictionary_.GetWithoutPathExpansion(path, &out_value)) { | 479 if (dictionary_.GetWithoutPathExpansion(path, &out_value)) { |
480 const base::DictionaryValue* value_as_dict; | 480 const base::DictionaryValue* value_as_dict; |
481 EXPECT_TRUE(out_value->GetAsDictionary(&value_as_dict)); | 481 EXPECT_TRUE(out_value->GetAsDictionary(&value_as_dict)); |
482 | 482 |
483 if (value_as_dict->GetWithoutPathExpansion(split_path, &out_value)) { | 483 if (value_as_dict->GetWithoutPathExpansion(split_path, &out_value)) { |
484 const base::StringValue* value_as_string; | 484 const base::Value* value_as_string; |
485 EXPECT_TRUE(out_value->GetAsString(&value_as_string)); | 485 EXPECT_TRUE(out_value->GetAsString(&value_as_string)); |
486 | 486 |
487 return value_as_string->GetString(); | 487 return value_as_string->GetString(); |
488 } | 488 } |
489 } | 489 } |
490 | 490 |
491 return std::string(); | 491 return std::string(); |
492 } | 492 } |
493 | 493 |
494 MockHashStoreContents::MockHashStoreContents(MockHashStoreContents* origin_mock) | 494 MockHashStoreContents::MockHashStoreContents(MockHashStoreContents* origin_mock) |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
696 mock_pref_hash_store_->set_stamp_super_mac_result(true); | 696 mock_pref_hash_store_->set_stamp_super_mac_result(true); |
697 DoFilterOnLoad(true); | 697 DoFilterOnLoad(true); |
698 // No paths stored, since they all return |UNCHANGED|. The StampSuperMAC | 698 // No paths stored, since they all return |UNCHANGED|. The StampSuperMAC |
699 // result is the only reason the prefs were considered altered. | 699 // result is the only reason the prefs were considered altered. |
700 ASSERT_EQ(0u, mock_pref_hash_store_->stored_paths_count()); | 700 ASSERT_EQ(0u, mock_pref_hash_store_->stored_paths_count()); |
701 } | 701 } |
702 | 702 |
703 TEST_P(PrefHashFilterTest, FilterTrackedPrefUpdate) { | 703 TEST_P(PrefHashFilterTest, FilterTrackedPrefUpdate) { |
704 base::DictionaryValue root_dict; | 704 base::DictionaryValue root_dict; |
705 // Ownership of |string_value| is transfered to |root_dict|. | 705 // Ownership of |string_value| is transfered to |root_dict|. |
706 base::Value* string_value = new base::StringValue("string value"); | 706 base::Value* string_value = new base::Value("string value"); |
707 root_dict.Set(kAtomicPref, string_value); | 707 root_dict.Set(kAtomicPref, string_value); |
708 | 708 |
709 // No path should be stored on FilterUpdate. | 709 // No path should be stored on FilterUpdate. |
710 pref_hash_filter_->FilterUpdate(kAtomicPref); | 710 pref_hash_filter_->FilterUpdate(kAtomicPref); |
711 ASSERT_EQ(0u, mock_pref_hash_store_->stored_paths_count()); | 711 ASSERT_EQ(0u, mock_pref_hash_store_->stored_paths_count()); |
712 | 712 |
713 // One path should be stored on FilterSerializeData. | 713 // One path should be stored on FilterSerializeData. |
714 pref_hash_filter_->FilterSerializeData(&root_dict); | 714 pref_hash_filter_->FilterSerializeData(&root_dict); |
715 ASSERT_EQ(1u, mock_pref_hash_store_->stored_paths_count()); | 715 ASSERT_EQ(1u, mock_pref_hash_store_->stored_paths_count()); |
716 MockPrefHashStore::ValuePtrStrategyPair stored_value = | 716 MockPrefHashStore::ValuePtrStrategyPair stored_value = |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
777 mock_pref_hash_store_->stored_value(kSplitPref); | 777 mock_pref_hash_store_->stored_value(kSplitPref); |
778 ASSERT_EQ(dict_value, stored_value.first); | 778 ASSERT_EQ(dict_value, stored_value.first); |
779 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_SPLIT, stored_value.second); | 779 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_SPLIT, stored_value.second); |
780 | 780 |
781 ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed()); | 781 ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed()); |
782 VerifyRecordedReset(false); | 782 VerifyRecordedReset(false); |
783 } | 783 } |
784 | 784 |
785 TEST_P(PrefHashFilterTest, FilterUntrackedPrefUpdate) { | 785 TEST_P(PrefHashFilterTest, FilterUntrackedPrefUpdate) { |
786 base::DictionaryValue root_dict; | 786 base::DictionaryValue root_dict; |
787 root_dict.Set("untracked", new base::StringValue("some value")); | 787 root_dict.Set("untracked", new base::Value("some value")); |
788 pref_hash_filter_->FilterUpdate("untracked"); | 788 pref_hash_filter_->FilterUpdate("untracked"); |
789 | 789 |
790 // No paths should be stored on FilterUpdate. | 790 // No paths should be stored on FilterUpdate. |
791 ASSERT_EQ(0u, mock_pref_hash_store_->stored_paths_count()); | 791 ASSERT_EQ(0u, mock_pref_hash_store_->stored_paths_count()); |
792 | 792 |
793 // Nor on FilterSerializeData. | 793 // Nor on FilterSerializeData. |
794 pref_hash_filter_->FilterSerializeData(&root_dict); | 794 pref_hash_filter_->FilterSerializeData(&root_dict); |
795 ASSERT_EQ(0u, mock_pref_hash_store_->stored_paths_count()); | 795 ASSERT_EQ(0u, mock_pref_hash_store_->stored_paths_count()); |
796 | 796 |
797 // No transaction should even be started on FilterSerializeData() if there are | 797 // No transaction should even be started on FilterSerializeData() if there are |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
889 ASSERT_FALSE(validated_split_pref->is_personal); | 889 ASSERT_FALSE(validated_split_pref->is_personal); |
890 const MockValidationDelegate::ValidationEvent* validated_atomic_pref = | 890 const MockValidationDelegate::ValidationEvent* validated_atomic_pref = |
891 mock_validation_delegate_.GetEventForPath(kAtomicPref); | 891 mock_validation_delegate_.GetEventForPath(kAtomicPref); |
892 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_ATOMIC, | 892 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_ATOMIC, |
893 validated_atomic_pref->strategy); | 893 validated_atomic_pref->strategy); |
894 ASSERT_TRUE(validated_atomic_pref->is_personal); | 894 ASSERT_TRUE(validated_atomic_pref->is_personal); |
895 } | 895 } |
896 | 896 |
897 TEST_P(PrefHashFilterTest, InitialValueUnknown) { | 897 TEST_P(PrefHashFilterTest, InitialValueUnknown) { |
898 // Ownership of these values is transfered to |pref_store_contents_|. | 898 // Ownership of these values is transfered to |pref_store_contents_|. |
899 base::StringValue* string_value = new base::StringValue("string value"); | 899 base::Value* string_value = new base::Value("string value"); |
900 pref_store_contents_->Set(kAtomicPref, string_value); | 900 pref_store_contents_->Set(kAtomicPref, string_value); |
901 | 901 |
902 base::DictionaryValue* dict_value = new base::DictionaryValue; | 902 base::DictionaryValue* dict_value = new base::DictionaryValue; |
903 dict_value->SetString("a", "foo"); | 903 dict_value->SetString("a", "foo"); |
904 dict_value->SetInteger("b", 1234); | 904 dict_value->SetInteger("b", 1234); |
905 pref_store_contents_->Set(kSplitPref, dict_value); | 905 pref_store_contents_->Set(kSplitPref, dict_value); |
906 | 906 |
907 ASSERT_TRUE(pref_store_contents_->Get(kAtomicPref, NULL)); | 907 ASSERT_TRUE(pref_store_contents_->Get(kAtomicPref, NULL)); |
908 ASSERT_TRUE(pref_store_contents_->Get(kSplitPref, NULL)); | 908 ASSERT_TRUE(pref_store_contents_->Get(kSplitPref, NULL)); |
909 | 909 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
956 ASSERT_TRUE(pref_store_contents_->Get(kSplitPref, &split_value_in_store)); | 956 ASSERT_TRUE(pref_store_contents_->Get(kSplitPref, &split_value_in_store)); |
957 ASSERT_EQ(dict_value, split_value_in_store); | 957 ASSERT_EQ(dict_value, split_value_in_store); |
958 ASSERT_EQ(dict_value, stored_split_value.first); | 958 ASSERT_EQ(dict_value, stored_split_value.first); |
959 | 959 |
960 VerifyRecordedReset(false); | 960 VerifyRecordedReset(false); |
961 } | 961 } |
962 } | 962 } |
963 | 963 |
964 TEST_P(PrefHashFilterTest, InitialValueTrustedUnknown) { | 964 TEST_P(PrefHashFilterTest, InitialValueTrustedUnknown) { |
965 // Ownership of this value is transfered to |pref_store_contents_|. | 965 // Ownership of this value is transfered to |pref_store_contents_|. |
966 base::Value* string_value = new base::StringValue("test"); | 966 base::Value* string_value = new base::Value("test"); |
967 pref_store_contents_->Set(kAtomicPref, string_value); | 967 pref_store_contents_->Set(kAtomicPref, string_value); |
968 | 968 |
969 base::DictionaryValue* dict_value = new base::DictionaryValue; | 969 base::DictionaryValue* dict_value = new base::DictionaryValue; |
970 dict_value->SetString("a", "foo"); | 970 dict_value->SetString("a", "foo"); |
971 dict_value->SetInteger("b", 1234); | 971 dict_value->SetInteger("b", 1234); |
972 pref_store_contents_->Set(kSplitPref, dict_value); | 972 pref_store_contents_->Set(kSplitPref, dict_value); |
973 | 973 |
974 ASSERT_TRUE(pref_store_contents_->Get(kAtomicPref, NULL)); | 974 ASSERT_TRUE(pref_store_contents_->Get(kAtomicPref, NULL)); |
975 ASSERT_TRUE(pref_store_contents_->Get(kSplitPref, NULL)); | 975 ASSERT_TRUE(pref_store_contents_->Get(kSplitPref, NULL)); |
976 | 976 |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1123 | 1123 |
1124 ASSERT_FALSE(pref_store_contents_->Get(kSplitPref, NULL)); | 1124 ASSERT_FALSE(pref_store_contents_->Get(kSplitPref, NULL)); |
1125 MockPrefHashStore::ValuePtrStrategyPair stored_split_value = | 1125 MockPrefHashStore::ValuePtrStrategyPair stored_split_value = |
1126 mock_pref_hash_store_->stored_value(kSplitPref); | 1126 mock_pref_hash_store_->stored_value(kSplitPref); |
1127 ASSERT_EQ(NULL, stored_split_value.first); | 1127 ASSERT_EQ(NULL, stored_split_value.first); |
1128 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_SPLIT, stored_split_value.second); | 1128 ASSERT_EQ(PrefHashFilter::TRACKING_STRATEGY_SPLIT, stored_split_value.second); |
1129 } | 1129 } |
1130 | 1130 |
1131 TEST_P(PrefHashFilterTest, InitialValueUnchangedLegacyId) { | 1131 TEST_P(PrefHashFilterTest, InitialValueUnchangedLegacyId) { |
1132 // Ownership of these values is transfered to |pref_store_contents_|. | 1132 // Ownership of these values is transfered to |pref_store_contents_|. |
1133 base::StringValue* string_value = new base::StringValue("string value"); | 1133 base::Value* string_value = new base::Value("string value"); |
1134 pref_store_contents_->Set(kAtomicPref, string_value); | 1134 pref_store_contents_->Set(kAtomicPref, string_value); |
1135 | 1135 |
1136 base::DictionaryValue* dict_value = new base::DictionaryValue; | 1136 base::DictionaryValue* dict_value = new base::DictionaryValue; |
1137 dict_value->SetString("a", "foo"); | 1137 dict_value->SetString("a", "foo"); |
1138 dict_value->SetInteger("b", 1234); | 1138 dict_value->SetInteger("b", 1234); |
1139 pref_store_contents_->Set(kSplitPref, dict_value); | 1139 pref_store_contents_->Set(kSplitPref, dict_value); |
1140 | 1140 |
1141 ASSERT_TRUE(pref_store_contents_->Get(kAtomicPref, NULL)); | 1141 ASSERT_TRUE(pref_store_contents_->Get(kAtomicPref, NULL)); |
1142 ASSERT_TRUE(pref_store_contents_->Get(kSplitPref, NULL)); | 1142 ASSERT_TRUE(pref_store_contents_->Get(kSplitPref, NULL)); |
1143 | 1143 |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1384 PrefHashStoreTransaction::CHANGED)); | 1384 PrefHashStoreTransaction::CHANGED)); |
1385 ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u, | 1385 ASSERT_EQ(arraysize(kTestTrackedPrefs) - 2u, |
1386 mock_validation_delegate_.CountExternalValidationsOfState( | 1386 mock_validation_delegate_.CountExternalValidationsOfState( |
1387 PrefHashStoreTransaction::UNCHANGED)); | 1387 PrefHashStoreTransaction::UNCHANGED)); |
1388 } | 1388 } |
1389 | 1389 |
1390 INSTANTIATE_TEST_CASE_P(PrefHashFilterTestInstance, | 1390 INSTANTIATE_TEST_CASE_P(PrefHashFilterTestInstance, |
1391 PrefHashFilterTest, | 1391 PrefHashFilterTest, |
1392 testing::Values(PrefHashFilter::NO_ENFORCEMENT, | 1392 testing::Values(PrefHashFilter::NO_ENFORCEMENT, |
1393 PrefHashFilter::ENFORCE_ON_LOAD)); | 1393 PrefHashFilter::ENFORCE_ON_LOAD)); |
OLD | NEW |