OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/segregated_pref_store.h" | 5 #include "components/user_prefs/tracked/segregated_pref_store.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
11 #include "base/callback.h" | 11 #include "base/callback.h" |
12 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
13 #include "base/memory/scoped_ptr.h" | 13 #include "base/memory/scoped_ptr.h" |
14 #include "base/prefs/persistent_pref_store.h" | 14 #include "base/prefs/persistent_pref_store.h" |
15 #include "base/prefs/pref_store_observer_mock.h" | 15 #include "base/prefs/pref_store_observer_mock.h" |
16 #include "base/prefs/testing_pref_store.h" | 16 #include "base/prefs/testing_pref_store.h" |
17 #include "base/values.h" | 17 #include "base/values.h" |
18 #include "chrome/browser/prefs/tracked/segregated_pref_store.h" | 18 #include "components/user_prefs/tracked/segregated_pref_store.h" |
19 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
20 | 20 |
21 namespace { | 21 namespace { |
22 | 22 |
23 const char kSelectedPref[] = "selected_pref"; | 23 const char kSelectedPref[] = "selected_pref"; |
24 const char kUnselectedPref[] = "unselected_pref"; | 24 const char kUnselectedPref[] = "unselected_pref"; |
25 | 25 |
26 const char kValue1[] = "value1"; | 26 const char kValue1[] = "value1"; |
27 const char kValue2[] = "value2"; | 27 const char kValue2[] = "value2"; |
28 | 28 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 read_error_delegate_( | 62 read_error_delegate_( |
63 new MockReadErrorDelegate(&read_error_delegate_data_)) {} | 63 new MockReadErrorDelegate(&read_error_delegate_data_)) {} |
64 | 64 |
65 void SetUp() override { | 65 void SetUp() override { |
66 selected_store_ = new TestingPrefStore; | 66 selected_store_ = new TestingPrefStore; |
67 default_store_ = new TestingPrefStore; | 67 default_store_ = new TestingPrefStore; |
68 | 68 |
69 std::set<std::string> selected_pref_names; | 69 std::set<std::string> selected_pref_names; |
70 selected_pref_names.insert(kSelectedPref); | 70 selected_pref_names.insert(kSelectedPref); |
71 | 71 |
72 segregated_store_ = new SegregatedPrefStore( | 72 segregated_store_ = new SegregatedPrefStore(default_store_, selected_store_, |
73 default_store_, | 73 selected_pref_names); |
74 selected_store_, | |
75 selected_pref_names); | |
76 | 74 |
77 segregated_store_->AddObserver(&observer_); | 75 segregated_store_->AddObserver(&observer_); |
78 } | 76 } |
79 | 77 |
80 void TearDown() override { segregated_store_->RemoveObserver(&observer_); } | 78 void TearDown() override { segregated_store_->RemoveObserver(&observer_); } |
81 | 79 |
82 protected: | 80 protected: |
83 scoped_ptr<PersistentPrefStore::ReadErrorDelegate> GetReadErrorDelegate() { | 81 scoped_ptr<PersistentPrefStore::ReadErrorDelegate> GetReadErrorDelegate() { |
84 EXPECT_TRUE(read_error_delegate_); | 82 EXPECT_TRUE(read_error_delegate_); |
85 return read_error_delegate_.Pass(); | 83 return read_error_delegate_.Pass(); |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 observer_.VerifyAndResetChangedKey(kSelectedPref); | 159 observer_.VerifyAndResetChangedKey(kSelectedPref); |
162 segregated_store_->SetValue(kUnselectedPref, | 160 segregated_store_->SetValue(kUnselectedPref, |
163 make_scoped_ptr(new base::StringValue(kValue2)), | 161 make_scoped_ptr(new base::StringValue(kValue2)), |
164 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); | 162 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); |
165 observer_.VerifyAndResetChangedKey(kUnselectedPref); | 163 observer_.VerifyAndResetChangedKey(kUnselectedPref); |
166 } | 164 } |
167 | 165 |
168 TEST_F(SegregatedPrefStoreTest, SelectedPrefReadNoFileError) { | 166 TEST_F(SegregatedPrefStoreTest, SelectedPrefReadNoFileError) { |
169 // PREF_READ_ERROR_NO_FILE for the selected prefs file is silently converted | 167 // PREF_READ_ERROR_NO_FILE for the selected prefs file is silently converted |
170 // to PREF_READ_ERROR_NONE. | 168 // to PREF_READ_ERROR_NONE. |
171 selected_store_->set_read_error( | 169 selected_store_->set_read_error(PersistentPrefStore::PREF_READ_ERROR_NO_FILE); |
172 PersistentPrefStore::PREF_READ_ERROR_NO_FILE); | |
173 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, | 170 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, |
174 segregated_store_->ReadPrefs()); | 171 segregated_store_->ReadPrefs()); |
175 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, | 172 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, |
176 segregated_store_->GetReadError()); | 173 segregated_store_->GetReadError()); |
177 } | 174 } |
178 | 175 |
179 TEST_F(SegregatedPrefStoreTest, SelectedPrefReadError) { | 176 TEST_F(SegregatedPrefStoreTest, SelectedPrefReadError) { |
180 selected_store_->set_read_error( | 177 selected_store_->set_read_error( |
181 PersistentPrefStore::PREF_READ_ERROR_ACCESS_DENIED); | 178 PersistentPrefStore::PREF_READ_ERROR_ACCESS_DENIED); |
182 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_ACCESS_DENIED, | 179 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_ACCESS_DENIED, |
183 segregated_store_->ReadPrefs()); | 180 segregated_store_->ReadPrefs()); |
184 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_ACCESS_DENIED, | 181 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_ACCESS_DENIED, |
185 segregated_store_->GetReadError()); | 182 segregated_store_->GetReadError()); |
186 } | 183 } |
187 | 184 |
188 TEST_F(SegregatedPrefStoreTest, SelectedPrefReadNoFileErrorAsync) { | 185 TEST_F(SegregatedPrefStoreTest, SelectedPrefReadNoFileErrorAsync) { |
189 // PREF_READ_ERROR_NO_FILE for the selected prefs file is silently converted | 186 // PREF_READ_ERROR_NO_FILE for the selected prefs file is silently converted |
190 // to PREF_READ_ERROR_NONE. | 187 // to PREF_READ_ERROR_NONE. |
191 selected_store_->set_read_error( | 188 selected_store_->set_read_error(PersistentPrefStore::PREF_READ_ERROR_NO_FILE); |
192 PersistentPrefStore::PREF_READ_ERROR_NO_FILE); | |
193 | 189 |
194 default_store_->SetBlockAsyncRead(true); | 190 default_store_->SetBlockAsyncRead(true); |
195 | 191 |
196 EXPECT_FALSE(read_error_delegate_data_.invoked); | 192 EXPECT_FALSE(read_error_delegate_data_.invoked); |
197 | 193 |
198 segregated_store_->ReadPrefsAsync(GetReadErrorDelegate().release()); | 194 segregated_store_->ReadPrefsAsync(GetReadErrorDelegate().release()); |
199 | 195 |
200 EXPECT_FALSE(read_error_delegate_data_.invoked); | 196 EXPECT_FALSE(read_error_delegate_data_.invoked); |
201 | 197 |
202 default_store_->SetBlockAsyncRead(false); | 198 default_store_->SetBlockAsyncRead(false); |
203 | 199 |
204 // ReadErrorDelegate is not invoked for ERROR_NONE. | 200 // ReadErrorDelegate is not invoked for ERROR_NONE. |
205 EXPECT_FALSE(read_error_delegate_data_.invoked); | 201 EXPECT_FALSE(read_error_delegate_data_.invoked); |
206 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, | 202 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, |
207 segregated_store_->GetReadError()); | 203 segregated_store_->GetReadError()); |
208 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, | 204 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, |
209 segregated_store_->GetReadError()); | 205 segregated_store_->GetReadError()); |
210 } | 206 } |
211 | 207 |
212 TEST_F(SegregatedPrefStoreTest, UnselectedPrefReadNoFileError) { | 208 TEST_F(SegregatedPrefStoreTest, UnselectedPrefReadNoFileError) { |
213 default_store_->set_read_error( | 209 default_store_->set_read_error(PersistentPrefStore::PREF_READ_ERROR_NO_FILE); |
214 PersistentPrefStore::PREF_READ_ERROR_NO_FILE); | |
215 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NO_FILE, | 210 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NO_FILE, |
216 segregated_store_->ReadPrefs()); | 211 segregated_store_->ReadPrefs()); |
217 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NO_FILE, | 212 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NO_FILE, |
218 segregated_store_->GetReadError()); | 213 segregated_store_->GetReadError()); |
219 } | 214 } |
220 | 215 |
221 TEST_F(SegregatedPrefStoreTest, UnselectedPrefReadError) { | 216 TEST_F(SegregatedPrefStoreTest, UnselectedPrefReadError) { |
222 default_store_->set_read_error( | 217 default_store_->set_read_error( |
223 PersistentPrefStore::PREF_READ_ERROR_ACCESS_DENIED); | 218 PersistentPrefStore::PREF_READ_ERROR_ACCESS_DENIED); |
224 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_ACCESS_DENIED, | 219 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_ACCESS_DENIED, |
225 segregated_store_->ReadPrefs()); | 220 segregated_store_->ReadPrefs()); |
226 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_ACCESS_DENIED, | 221 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_ACCESS_DENIED, |
227 segregated_store_->GetReadError()); | 222 segregated_store_->GetReadError()); |
228 } | 223 } |
229 | 224 |
230 TEST_F(SegregatedPrefStoreTest, BothPrefReadError) { | 225 TEST_F(SegregatedPrefStoreTest, BothPrefReadError) { |
231 default_store_->set_read_error( | 226 default_store_->set_read_error(PersistentPrefStore::PREF_READ_ERROR_NO_FILE); |
232 PersistentPrefStore::PREF_READ_ERROR_NO_FILE); | |
233 selected_store_->set_read_error( | 227 selected_store_->set_read_error( |
234 PersistentPrefStore::PREF_READ_ERROR_ACCESS_DENIED); | 228 PersistentPrefStore::PREF_READ_ERROR_ACCESS_DENIED); |
235 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NO_FILE, | 229 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NO_FILE, |
236 segregated_store_->ReadPrefs()); | 230 segregated_store_->ReadPrefs()); |
237 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NO_FILE, | 231 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NO_FILE, |
238 segregated_store_->GetReadError()); | 232 segregated_store_->GetReadError()); |
239 } | 233 } |
240 | 234 |
241 TEST_F(SegregatedPrefStoreTest, BothPrefReadErrorAsync) { | 235 TEST_F(SegregatedPrefStoreTest, BothPrefReadErrorAsync) { |
242 default_store_->set_read_error( | 236 default_store_->set_read_error(PersistentPrefStore::PREF_READ_ERROR_NO_FILE); |
243 PersistentPrefStore::PREF_READ_ERROR_NO_FILE); | |
244 selected_store_->set_read_error( | 237 selected_store_->set_read_error( |
245 PersistentPrefStore::PREF_READ_ERROR_ACCESS_DENIED); | 238 PersistentPrefStore::PREF_READ_ERROR_ACCESS_DENIED); |
246 | 239 |
247 selected_store_->SetBlockAsyncRead(true); | 240 selected_store_->SetBlockAsyncRead(true); |
248 | 241 |
249 EXPECT_FALSE(read_error_delegate_data_.invoked); | 242 EXPECT_FALSE(read_error_delegate_data_.invoked); |
250 | 243 |
251 segregated_store_->ReadPrefsAsync(GetReadErrorDelegate().release()); | 244 segregated_store_->ReadPrefsAsync(GetReadErrorDelegate().release()); |
252 | 245 |
253 EXPECT_FALSE(read_error_delegate_data_.invoked); | 246 EXPECT_FALSE(read_error_delegate_data_.invoked); |
(...skipping 17 matching lines...) Expand all Loading... |
271 selected_store_->SetBlockAsyncRead(true); | 264 selected_store_->SetBlockAsyncRead(true); |
272 default_store_->SetBlockAsyncRead(true); | 265 default_store_->SetBlockAsyncRead(true); |
273 EXPECT_FALSE(segregated_store_->IsInitializationComplete()); | 266 EXPECT_FALSE(segregated_store_->IsInitializationComplete()); |
274 segregated_store_->ReadPrefsAsync(NULL); | 267 segregated_store_->ReadPrefsAsync(NULL); |
275 EXPECT_FALSE(segregated_store_->IsInitializationComplete()); | 268 EXPECT_FALSE(segregated_store_->IsInitializationComplete()); |
276 selected_store_->SetBlockAsyncRead(false); | 269 selected_store_->SetBlockAsyncRead(false); |
277 EXPECT_FALSE(segregated_store_->IsInitializationComplete()); | 270 EXPECT_FALSE(segregated_store_->IsInitializationComplete()); |
278 default_store_->SetBlockAsyncRead(false); | 271 default_store_->SetBlockAsyncRead(false); |
279 EXPECT_TRUE(segregated_store_->IsInitializationComplete()); | 272 EXPECT_TRUE(segregated_store_->IsInitializationComplete()); |
280 } | 273 } |
OLD | NEW |