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

Side by Side Diff: chrome/browser/prefs/tracked/pref_hash_store_impl_unittest.cc

Issue 617183005: Split the NullInitialized signal out of TrustedInitialized. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@c1_move_to_tracked
Patch Set: fix PrefHashBrowserTest Created 6 years, 2 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 "chrome/browser/prefs/tracked/pref_hash_store_impl.h" 5 #include "chrome/browser/prefs/tracked/pref_hash_store_impl.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 20 matching lines...) Expand all
31 31
32 { 32 {
33 // 32 NULL bytes is the seed that was used to generate the legacy hash. 33 // 32 NULL bytes is the seed that was used to generate the legacy hash.
34 PrefHashStoreImpl pref_hash_store(std::string(32, 0), "device_id", true); 34 PrefHashStoreImpl pref_hash_store(std::string(32, 0), "device_id", true);
35 scoped_ptr<PrefHashStoreTransaction> transaction( 35 scoped_ptr<PrefHashStoreTransaction> transaction(
36 pref_hash_store.BeginTransaction(CreateHashStoreContents())); 36 pref_hash_store.BeginTransaction(CreateHashStoreContents()));
37 37
38 // Only NULL should be trusted in the absence of a hash. 38 // Only NULL should be trusted in the absence of a hash.
39 EXPECT_EQ(PrefHashStoreTransaction::UNTRUSTED_UNKNOWN_VALUE, 39 EXPECT_EQ(PrefHashStoreTransaction::UNTRUSTED_UNKNOWN_VALUE,
40 transaction->CheckValue("path1", &string_1)); 40 transaction->CheckValue("path1", &string_1));
41 EXPECT_EQ(PrefHashStoreTransaction::TRUSTED_UNKNOWN_VALUE, 41 EXPECT_EQ(PrefHashStoreTransaction::TRUSTED_NULL_VALUE,
42 transaction->CheckValue("path1", NULL)); 42 transaction->CheckValue("path1", NULL));
43 43
44 transaction->StoreHash("path1", &string_1); 44 transaction->StoreHash("path1", &string_1);
45 EXPECT_EQ(PrefHashStoreTransaction::UNCHANGED, 45 EXPECT_EQ(PrefHashStoreTransaction::UNCHANGED,
46 transaction->CheckValue("path1", &string_1)); 46 transaction->CheckValue("path1", &string_1));
47 EXPECT_EQ(PrefHashStoreTransaction::CLEARED, 47 EXPECT_EQ(PrefHashStoreTransaction::CLEARED,
48 transaction->CheckValue("path1", NULL)); 48 transaction->CheckValue("path1", NULL));
49 transaction->StoreHash("path1", NULL); 49 transaction->StoreHash("path1", NULL);
50 EXPECT_EQ(PrefHashStoreTransaction::UNCHANGED, 50 EXPECT_EQ(PrefHashStoreTransaction::UNCHANGED,
51 transaction->CheckValue("path1", NULL)); 51 transaction->CheckValue("path1", NULL));
(...skipping 16 matching lines...) Expand all
68 { 68 {
69 // |pref_hash_store2| should trust its initial hashes dictionary and thus 69 // |pref_hash_store2| should trust its initial hashes dictionary and thus
70 // trust new unknown values. 70 // trust new unknown values.
71 PrefHashStoreImpl pref_hash_store2(std::string(32, 0), "device_id", true); 71 PrefHashStoreImpl pref_hash_store2(std::string(32, 0), "device_id", true);
72 scoped_ptr<PrefHashStoreTransaction> transaction( 72 scoped_ptr<PrefHashStoreTransaction> transaction(
73 pref_hash_store2.BeginTransaction(CreateHashStoreContents())); 73 pref_hash_store2.BeginTransaction(CreateHashStoreContents()));
74 EXPECT_EQ(PrefHashStoreTransaction::TRUSTED_UNKNOWN_VALUE, 74 EXPECT_EQ(PrefHashStoreTransaction::TRUSTED_UNKNOWN_VALUE,
75 transaction->CheckValue("new_path", &string_1)); 75 transaction->CheckValue("new_path", &string_1));
76 EXPECT_EQ(PrefHashStoreTransaction::TRUSTED_UNKNOWN_VALUE, 76 EXPECT_EQ(PrefHashStoreTransaction::TRUSTED_UNKNOWN_VALUE,
77 transaction->CheckValue("new_path", &string_2)); 77 transaction->CheckValue("new_path", &string_2));
78 EXPECT_EQ(PrefHashStoreTransaction::TRUSTED_UNKNOWN_VALUE, 78 EXPECT_EQ(PrefHashStoreTransaction::TRUSTED_NULL_VALUE,
79 transaction->CheckValue("new_path", NULL)); 79 transaction->CheckValue("new_path", NULL));
80 } 80 }
81 81
82 // Manually corrupt the super MAC. 82 // Manually corrupt the super MAC.
83 CreateHashStoreContents()->SetSuperMac(std::string(64, 'A')); 83 CreateHashStoreContents()->SetSuperMac(std::string(64, 'A'));
84 84
85 { 85 {
86 // |pref_hash_store3| should no longer trust its initial hashes dictionary 86 // |pref_hash_store3| should no longer trust its initial hashes dictionary
87 // and thus shouldn't trust non-NULL unknown values. 87 // and thus shouldn't trust non-NULL unknown values.
88 PrefHashStoreImpl pref_hash_store3(std::string(32, 0), "device_id", true); 88 PrefHashStoreImpl pref_hash_store3(std::string(32, 0), "device_id", true);
89 scoped_ptr<PrefHashStoreTransaction> transaction( 89 scoped_ptr<PrefHashStoreTransaction> transaction(
90 pref_hash_store3.BeginTransaction(CreateHashStoreContents())); 90 pref_hash_store3.BeginTransaction(CreateHashStoreContents()));
91 EXPECT_EQ(PrefHashStoreTransaction::UNTRUSTED_UNKNOWN_VALUE, 91 EXPECT_EQ(PrefHashStoreTransaction::UNTRUSTED_UNKNOWN_VALUE,
92 transaction->CheckValue("new_path", &string_1)); 92 transaction->CheckValue("new_path", &string_1));
93 EXPECT_EQ(PrefHashStoreTransaction::UNTRUSTED_UNKNOWN_VALUE, 93 EXPECT_EQ(PrefHashStoreTransaction::UNTRUSTED_UNKNOWN_VALUE,
94 transaction->CheckValue("new_path", &string_2)); 94 transaction->CheckValue("new_path", &string_2));
95 EXPECT_EQ(PrefHashStoreTransaction::TRUSTED_UNKNOWN_VALUE, 95 EXPECT_EQ(PrefHashStoreTransaction::TRUSTED_NULL_VALUE,
96 transaction->CheckValue("new_path", NULL)); 96 transaction->CheckValue("new_path", NULL));
97 } 97 }
98 } 98 }
99 99
100 TEST_F(PrefHashStoreImplTest, ImportExportOperations) { 100 TEST_F(PrefHashStoreImplTest, ImportExportOperations) {
101 base::StringValue string_1("string1"); 101 base::StringValue string_1("string1");
102 base::StringValue string_2("string2"); 102 base::StringValue string_2("string2");
103 103
104 // Initial state: no super MAC. 104 // Initial state: no super MAC.
105 { 105 {
(...skipping 26 matching lines...) Expand all
132 scoped_ptr<PrefHashStoreTransaction> transaction( 132 scoped_ptr<PrefHashStoreTransaction> transaction(
133 pref_hash_store.BeginTransaction(CreateHashStoreContents())); 133 pref_hash_store.BeginTransaction(CreateHashStoreContents()));
134 ASSERT_TRUE(transaction->IsSuperMACValid()); 134 ASSERT_TRUE(transaction->IsSuperMACValid());
135 ASSERT_TRUE(transaction->HasHash("path1")); 135 ASSERT_TRUE(transaction->HasHash("path1"));
136 136
137 // Clearing the hash should preserve validity. 137 // Clearing the hash should preserve validity.
138 transaction->ClearHash("path1"); 138 transaction->ClearHash("path1");
139 139
140 // The effects of the clear should be immediately visible. 140 // The effects of the clear should be immediately visible.
141 ASSERT_FALSE(transaction->HasHash("path1")); 141 ASSERT_FALSE(transaction->HasHash("path1"));
142 EXPECT_EQ(PrefHashStoreTransaction::TRUSTED_UNKNOWN_VALUE, 142 EXPECT_EQ(PrefHashStoreTransaction::TRUSTED_NULL_VALUE,
143 transaction->CheckValue("path1", NULL)); 143 transaction->CheckValue("path1", NULL));
144 EXPECT_EQ(PrefHashStoreTransaction::TRUSTED_UNKNOWN_VALUE, 144 EXPECT_EQ(PrefHashStoreTransaction::TRUSTED_UNKNOWN_VALUE,
145 transaction->CheckValue("path1", &string_1)); 145 transaction->CheckValue("path1", &string_1));
146 } 146 }
147 147
148 // Verify that validity was preserved and that the clear took effect. 148 // Verify that validity was preserved and that the clear took effect.
149 { 149 {
150 PrefHashStoreImpl pref_hash_store(std::string(32, 0), "device_id", true); 150 PrefHashStoreImpl pref_hash_store(std::string(32, 0), "device_id", true);
151 scoped_ptr<PrefHashStoreTransaction> transaction( 151 scoped_ptr<PrefHashStoreTransaction> transaction(
152 pref_hash_store.BeginTransaction(CreateHashStoreContents())); 152 pref_hash_store.BeginTransaction(CreateHashStoreContents()));
(...skipping 27 matching lines...) Expand all
180 scoped_ptr<PrefHashStoreTransaction> transaction( 180 scoped_ptr<PrefHashStoreTransaction> transaction(
181 pref_hash_store.BeginTransaction(CreateHashStoreContents())); 181 pref_hash_store.BeginTransaction(CreateHashStoreContents()));
182 ASSERT_FALSE(transaction->IsSuperMACValid()); 182 ASSERT_FALSE(transaction->IsSuperMACValid());
183 ASSERT_TRUE(transaction->HasHash("path1")); 183 ASSERT_TRUE(transaction->HasHash("path1"));
184 EXPECT_EQ(PrefHashStoreTransaction::UNCHANGED, 184 EXPECT_EQ(PrefHashStoreTransaction::UNCHANGED,
185 transaction->CheckValue("path1", &string_1)); 185 transaction->CheckValue("path1", &string_1));
186 186
187 // After clearing the hash, non-null values are UNTRUSTED_UNKNOWN. 187 // After clearing the hash, non-null values are UNTRUSTED_UNKNOWN.
188 transaction->ClearHash("path1"); 188 transaction->ClearHash("path1");
189 189
190 EXPECT_EQ(PrefHashStoreTransaction::TRUSTED_UNKNOWN_VALUE, 190 EXPECT_EQ(PrefHashStoreTransaction::TRUSTED_NULL_VALUE,
191 transaction->CheckValue("path1", NULL)); 191 transaction->CheckValue("path1", NULL));
192 EXPECT_EQ(PrefHashStoreTransaction::UNTRUSTED_UNKNOWN_VALUE, 192 EXPECT_EQ(PrefHashStoreTransaction::UNTRUSTED_UNKNOWN_VALUE,
193 transaction->CheckValue("path1", &string_1)); 193 transaction->CheckValue("path1", &string_1));
194 } 194 }
195 195
196 { 196 {
197 PrefHashStoreImpl pref_hash_store(std::string(32, 0), "device_id", true); 197 PrefHashStoreImpl pref_hash_store(std::string(32, 0), "device_id", true);
198 scoped_ptr<PrefHashStoreTransaction> transaction( 198 scoped_ptr<PrefHashStoreTransaction> transaction(
199 pref_hash_store.BeginTransaction(CreateHashStoreContents())); 199 pref_hash_store.BeginTransaction(CreateHashStoreContents()));
200 ASSERT_FALSE(transaction->IsSuperMACValid()); 200 ASSERT_FALSE(transaction->IsSuperMACValid());
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 // Load a new |pref_hash_store2| in which the hashes dictionary is trusted. 466 // Load a new |pref_hash_store2| in which the hashes dictionary is trusted.
467 PrefHashStoreImpl pref_hash_store2(std::string(32, 0), "device_id", true); 467 PrefHashStoreImpl pref_hash_store2(std::string(32, 0), "device_id", true);
468 scoped_ptr<PrefHashStoreTransaction> transaction( 468 scoped_ptr<PrefHashStoreTransaction> transaction(
469 pref_hash_store2.BeginTransaction(CreateHashStoreContents())); 469 pref_hash_store2.BeginTransaction(CreateHashStoreContents()));
470 std::vector<std::string> invalid_keys; 470 std::vector<std::string> invalid_keys;
471 EXPECT_EQ(PrefHashStoreTransaction::TRUSTED_UNKNOWN_VALUE, 471 EXPECT_EQ(PrefHashStoreTransaction::TRUSTED_UNKNOWN_VALUE,
472 transaction->CheckSplitValue("path1", &dict, &invalid_keys)); 472 transaction->CheckSplitValue("path1", &dict, &invalid_keys));
473 EXPECT_TRUE(invalid_keys.empty()); 473 EXPECT_TRUE(invalid_keys.empty());
474 } 474 }
475 } 475 }
OLDNEW
« no previous file with comments | « chrome/browser/prefs/tracked/pref_hash_store_impl.cc ('k') | chrome/browser/prefs/tracked/pref_hash_store_transaction.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698