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 "components/user_prefs/tracked/segregated_pref_store.h" | 5 #include "components/user_prefs/tracked/segregated_pref_store.h" |
6 | 6 |
| 7 #include <memory> |
7 #include <set> | 8 #include <set> |
8 #include <string> | 9 #include <string> |
9 #include <utility> | 10 #include <utility> |
10 | 11 |
11 #include "base/bind.h" | 12 #include "base/bind.h" |
12 #include "base/callback.h" | 13 #include "base/callback.h" |
| 14 #include "base/memory/ptr_util.h" |
13 #include "base/memory/ref_counted.h" | 15 #include "base/memory/ref_counted.h" |
14 #include "base/memory/scoped_ptr.h" | |
15 #include "base/values.h" | 16 #include "base/values.h" |
16 #include "components/prefs/persistent_pref_store.h" | 17 #include "components/prefs/persistent_pref_store.h" |
17 #include "components/prefs/pref_store_observer_mock.h" | 18 #include "components/prefs/pref_store_observer_mock.h" |
18 #include "components/prefs/testing_pref_store.h" | 19 #include "components/prefs/testing_pref_store.h" |
19 #include "components/user_prefs/tracked/segregated_pref_store.h" | 20 #include "components/user_prefs/tracked/segregated_pref_store.h" |
20 #include "testing/gtest/include/gtest/gtest.h" | 21 #include "testing/gtest/include/gtest/gtest.h" |
21 | 22 |
22 namespace { | 23 namespace { |
23 | 24 |
24 const char kSelectedPref[] = "selected_pref"; | 25 const char kSelectedPref[] = "selected_pref"; |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 | 73 |
73 segregated_store_ = new SegregatedPrefStore(default_store_, selected_store_, | 74 segregated_store_ = new SegregatedPrefStore(default_store_, selected_store_, |
74 selected_pref_names); | 75 selected_pref_names); |
75 | 76 |
76 segregated_store_->AddObserver(&observer_); | 77 segregated_store_->AddObserver(&observer_); |
77 } | 78 } |
78 | 79 |
79 void TearDown() override { segregated_store_->RemoveObserver(&observer_); } | 80 void TearDown() override { segregated_store_->RemoveObserver(&observer_); } |
80 | 81 |
81 protected: | 82 protected: |
82 scoped_ptr<PersistentPrefStore::ReadErrorDelegate> GetReadErrorDelegate() { | 83 std::unique_ptr<PersistentPrefStore::ReadErrorDelegate> |
| 84 GetReadErrorDelegate() { |
83 EXPECT_TRUE(read_error_delegate_); | 85 EXPECT_TRUE(read_error_delegate_); |
84 return std::move(read_error_delegate_); | 86 return std::move(read_error_delegate_); |
85 } | 87 } |
86 | 88 |
87 PrefStoreObserverMock observer_; | 89 PrefStoreObserverMock observer_; |
88 | 90 |
89 scoped_refptr<TestingPrefStore> default_store_; | 91 scoped_refptr<TestingPrefStore> default_store_; |
90 scoped_refptr<TestingPrefStore> selected_store_; | 92 scoped_refptr<TestingPrefStore> selected_store_; |
91 scoped_refptr<SegregatedPrefStore> segregated_store_; | 93 scoped_refptr<SegregatedPrefStore> segregated_store_; |
92 | 94 |
93 MockReadErrorDelegate::Data read_error_delegate_data_; | 95 MockReadErrorDelegate::Data read_error_delegate_data_; |
94 | 96 |
95 private: | 97 private: |
96 scoped_ptr<MockReadErrorDelegate> read_error_delegate_; | 98 std::unique_ptr<MockReadErrorDelegate> read_error_delegate_; |
97 }; | 99 }; |
98 | 100 |
99 TEST_F(SegregatedPrefStoreTest, StoreValues) { | 101 TEST_F(SegregatedPrefStoreTest, StoreValues) { |
100 ASSERT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, | 102 ASSERT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, |
101 segregated_store_->ReadPrefs()); | 103 segregated_store_->ReadPrefs()); |
102 | 104 |
103 // Properly stores new values. | 105 // Properly stores new values. |
104 segregated_store_->SetValue(kSelectedPref, | 106 segregated_store_->SetValue(kSelectedPref, |
105 make_scoped_ptr(new base::StringValue(kValue1)), | 107 base::WrapUnique(new base::StringValue(kValue1)), |
106 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); | 108 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); |
107 segregated_store_->SetValue(kUnselectedPref, | 109 segregated_store_->SetValue(kUnselectedPref, |
108 make_scoped_ptr(new base::StringValue(kValue2)), | 110 base::WrapUnique(new base::StringValue(kValue2)), |
109 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); | 111 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); |
110 | 112 |
111 ASSERT_TRUE(selected_store_->GetValue(kSelectedPref, NULL)); | 113 ASSERT_TRUE(selected_store_->GetValue(kSelectedPref, NULL)); |
112 ASSERT_FALSE(selected_store_->GetValue(kUnselectedPref, NULL)); | 114 ASSERT_FALSE(selected_store_->GetValue(kUnselectedPref, NULL)); |
113 ASSERT_FALSE(default_store_->GetValue(kSelectedPref, NULL)); | 115 ASSERT_FALSE(default_store_->GetValue(kSelectedPref, NULL)); |
114 ASSERT_TRUE(default_store_->GetValue(kUnselectedPref, NULL)); | 116 ASSERT_TRUE(default_store_->GetValue(kUnselectedPref, NULL)); |
115 | 117 |
116 ASSERT_TRUE(segregated_store_->GetValue(kSelectedPref, NULL)); | 118 ASSERT_TRUE(segregated_store_->GetValue(kSelectedPref, NULL)); |
117 ASSERT_TRUE(segregated_store_->GetValue(kUnselectedPref, NULL)); | 119 ASSERT_TRUE(segregated_store_->GetValue(kUnselectedPref, NULL)); |
118 | 120 |
119 ASSERT_FALSE(selected_store_->committed()); | 121 ASSERT_FALSE(selected_store_->committed()); |
120 ASSERT_FALSE(default_store_->committed()); | 122 ASSERT_FALSE(default_store_->committed()); |
121 | 123 |
122 segregated_store_->CommitPendingWrite(); | 124 segregated_store_->CommitPendingWrite(); |
123 | 125 |
124 ASSERT_TRUE(selected_store_->committed()); | 126 ASSERT_TRUE(selected_store_->committed()); |
125 ASSERT_TRUE(default_store_->committed()); | 127 ASSERT_TRUE(default_store_->committed()); |
126 } | 128 } |
127 | 129 |
128 TEST_F(SegregatedPrefStoreTest, ReadValues) { | 130 TEST_F(SegregatedPrefStoreTest, ReadValues) { |
129 selected_store_->SetValue(kSelectedPref, | 131 selected_store_->SetValue(kSelectedPref, |
130 make_scoped_ptr(new base::StringValue(kValue1)), | 132 base::WrapUnique(new base::StringValue(kValue1)), |
131 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); | 133 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); |
132 default_store_->SetValue(kUnselectedPref, | 134 default_store_->SetValue(kUnselectedPref, |
133 make_scoped_ptr(new base::StringValue(kValue2)), | 135 base::WrapUnique(new base::StringValue(kValue2)), |
134 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); | 136 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); |
135 | 137 |
136 // Works properly with values that are already there. | 138 // Works properly with values that are already there. |
137 ASSERT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, | 139 ASSERT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, |
138 segregated_store_->ReadPrefs()); | 140 segregated_store_->ReadPrefs()); |
139 ASSERT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, | 141 ASSERT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, |
140 segregated_store_->GetReadError()); | 142 segregated_store_->GetReadError()); |
141 | 143 |
142 ASSERT_TRUE(selected_store_->GetValue(kSelectedPref, NULL)); | 144 ASSERT_TRUE(selected_store_->GetValue(kSelectedPref, NULL)); |
143 ASSERT_FALSE(selected_store_->GetValue(kUnselectedPref, NULL)); | 145 ASSERT_FALSE(selected_store_->GetValue(kUnselectedPref, NULL)); |
144 ASSERT_FALSE(default_store_->GetValue(kSelectedPref, NULL)); | 146 ASSERT_FALSE(default_store_->GetValue(kSelectedPref, NULL)); |
145 ASSERT_TRUE(default_store_->GetValue(kUnselectedPref, NULL)); | 147 ASSERT_TRUE(default_store_->GetValue(kUnselectedPref, NULL)); |
146 | 148 |
147 ASSERT_TRUE(segregated_store_->GetValue(kSelectedPref, NULL)); | 149 ASSERT_TRUE(segregated_store_->GetValue(kSelectedPref, NULL)); |
148 ASSERT_TRUE(segregated_store_->GetValue(kUnselectedPref, NULL)); | 150 ASSERT_TRUE(segregated_store_->GetValue(kUnselectedPref, NULL)); |
149 } | 151 } |
150 | 152 |
151 TEST_F(SegregatedPrefStoreTest, Observer) { | 153 TEST_F(SegregatedPrefStoreTest, Observer) { |
152 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, | 154 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, |
153 segregated_store_->ReadPrefs()); | 155 segregated_store_->ReadPrefs()); |
154 EXPECT_TRUE(observer_.initialized); | 156 EXPECT_TRUE(observer_.initialized); |
155 EXPECT_TRUE(observer_.initialization_success); | 157 EXPECT_TRUE(observer_.initialization_success); |
156 EXPECT_TRUE(observer_.changed_keys.empty()); | 158 EXPECT_TRUE(observer_.changed_keys.empty()); |
157 segregated_store_->SetValue(kSelectedPref, | 159 segregated_store_->SetValue(kSelectedPref, |
158 make_scoped_ptr(new base::StringValue(kValue1)), | 160 base::WrapUnique(new base::StringValue(kValue1)), |
159 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); | 161 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); |
160 observer_.VerifyAndResetChangedKey(kSelectedPref); | 162 observer_.VerifyAndResetChangedKey(kSelectedPref); |
161 segregated_store_->SetValue(kUnselectedPref, | 163 segregated_store_->SetValue(kUnselectedPref, |
162 make_scoped_ptr(new base::StringValue(kValue2)), | 164 base::WrapUnique(new base::StringValue(kValue2)), |
163 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); | 165 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); |
164 observer_.VerifyAndResetChangedKey(kUnselectedPref); | 166 observer_.VerifyAndResetChangedKey(kUnselectedPref); |
165 } | 167 } |
166 | 168 |
167 TEST_F(SegregatedPrefStoreTest, SelectedPrefReadNoFileError) { | 169 TEST_F(SegregatedPrefStoreTest, SelectedPrefReadNoFileError) { |
168 // PREF_READ_ERROR_NO_FILE for the selected prefs file is silently converted | 170 // PREF_READ_ERROR_NO_FILE for the selected prefs file is silently converted |
169 // to PREF_READ_ERROR_NONE. | 171 // to PREF_READ_ERROR_NONE. |
170 selected_store_->set_read_error(PersistentPrefStore::PREF_READ_ERROR_NO_FILE); | 172 selected_store_->set_read_error(PersistentPrefStore::PREF_READ_ERROR_NO_FILE); |
171 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, | 173 EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, |
172 segregated_store_->ReadPrefs()); | 174 segregated_store_->ReadPrefs()); |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
265 selected_store_->SetBlockAsyncRead(true); | 267 selected_store_->SetBlockAsyncRead(true); |
266 default_store_->SetBlockAsyncRead(true); | 268 default_store_->SetBlockAsyncRead(true); |
267 EXPECT_FALSE(segregated_store_->IsInitializationComplete()); | 269 EXPECT_FALSE(segregated_store_->IsInitializationComplete()); |
268 segregated_store_->ReadPrefsAsync(NULL); | 270 segregated_store_->ReadPrefsAsync(NULL); |
269 EXPECT_FALSE(segregated_store_->IsInitializationComplete()); | 271 EXPECT_FALSE(segregated_store_->IsInitializationComplete()); |
270 selected_store_->SetBlockAsyncRead(false); | 272 selected_store_->SetBlockAsyncRead(false); |
271 EXPECT_FALSE(segregated_store_->IsInitializationComplete()); | 273 EXPECT_FALSE(segregated_store_->IsInitializationComplete()); |
272 default_store_->SetBlockAsyncRead(false); | 274 default_store_->SetBlockAsyncRead(false); |
273 EXPECT_TRUE(segregated_store_->IsInitializationComplete()); | 275 EXPECT_TRUE(segregated_store_->IsInitializationComplete()); |
274 } | 276 } |
OLD | NEW |