OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
gab
2015/09/10 14:15:09
Not sure why this file is marked 'D' by reitveld?!
| |
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 "base/macros.h" | |
6 #include "base/memory/ref_counted.h" | |
5 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
6 #include "base/prefs/scoped_user_pref_update.h" | 8 #include "base/prefs/scoped_user_pref_update.h" |
7 #include "base/values.h" | 9 #include "base/values.h" |
8 #include "chrome/browser/prefs/pref_model_associator.h" | 10 #include "chrome/browser/prefs/pref_model_associator.h" |
9 #include "chrome/common/pref_names.h" | 11 #include "chrome/browser/prefs/pref_model_associator_client.h" |
10 #include "chrome/test/base/testing_profile.h" | 12 #include "chrome/browser/prefs/pref_service_mock_factory.h" |
11 #include "content/public/test/test_browser_thread_bundle.h" | 13 #include "chrome/browser/prefs/pref_service_syncable.h" |
14 #include "chrome/browser/prefs/pref_service_syncable_factory.h" | |
15 #include "components/pref_registry/pref_registry_syncable.h" | |
12 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
13 | 17 |
14 // Any content settings pref name should do for these tests. | 18 namespace { |
15 const char* kContentSettingsPrefName = | 19 |
16 "profile.content_settings.exceptions.cookies"; | 20 const char kStringPrefName[] = "string_pref"; |
21 const char kListPrefName[] = "list_pref"; | |
22 const char kDictionaryPrefName[] = "dictionary_pref"; | |
23 | |
24 } // namespace | |
17 | 25 |
18 class AbstractPreferenceMergeTest : public testing::Test { | 26 class AbstractPreferenceMergeTest : public testing::Test { |
19 protected: | 27 protected: |
20 void SetUp() override { pref_service_ = profile_.GetPrefs(); } | 28 AbstractPreferenceMergeTest() { |
29 pref_model_associator_client_.RegisterPreference( | |
30 kListPrefName, PREF_MODEL_PREFERENCE_TYPE_LIST); | |
31 pref_model_associator_client_.RegisterPreference( | |
32 kDictionaryPrefName, PREF_MODEL_PREFERENCE_TYPE_DICT); | |
33 | |
34 PrefServiceMockFactory factory; | |
35 factory.SetPrefModelAssociatorClient(&pref_model_associator_client_); | |
36 scoped_refptr<user_prefs::PrefRegistrySyncable> pref_registry( | |
37 new user_prefs::PrefRegistrySyncable); | |
38 pref_service_ = factory.CreateSyncable(pref_registry.get()); | |
gab
2015/09/10 14:15:09
We're trying to move towards a world where all reg
| |
39 | |
40 pref_registry->RegisterStringPref( | |
41 kStringPrefName, std::string(), | |
42 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); | |
43 pref_registry->RegisterListPref( | |
44 kListPrefName, | |
45 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); | |
46 pref_registry->RegisterDictionaryPref( | |
47 kDictionaryPrefName, | |
48 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); | |
49 } | |
21 | 50 |
22 void SetContentPattern(base::DictionaryValue* patterns_dict, | 51 void SetContentPattern(base::DictionaryValue* patterns_dict, |
23 const std::string& expression, | 52 const std::string& expression, |
24 int setting) { | 53 int setting) { |
25 base::DictionaryValue* expression_dict; | 54 base::DictionaryValue* expression_dict; |
26 bool found = | 55 bool found = patterns_dict->GetDictionaryWithoutPathExpansion( |
27 patterns_dict->GetDictionaryWithoutPathExpansion(expression, | 56 expression, &expression_dict); |
28 &expression_dict); | |
29 if (!found) { | 57 if (!found) { |
30 expression_dict = new base::DictionaryValue; | 58 expression_dict = new base::DictionaryValue; |
31 patterns_dict->SetWithoutPathExpansion(expression, expression_dict); | 59 patterns_dict->SetWithoutPathExpansion(expression, expression_dict); |
32 } | 60 } |
33 expression_dict->SetWithoutPathExpansion( | 61 expression_dict->SetWithoutPathExpansion( |
34 "setting", new base::FundamentalValue(setting)); | 62 "setting", new base::FundamentalValue(setting)); |
35 } | 63 } |
36 | 64 |
37 void SetPrefToEmpty(const std::string& pref_name) { | 65 void SetPrefToEmpty(const std::string& pref_name) { |
38 scoped_ptr<base::Value> empty_value; | 66 scoped_ptr<base::Value> empty_value; |
39 const PrefService::Preference* pref = | 67 const PrefService::Preference* pref = |
40 pref_service_->FindPreference(pref_name.c_str()); | 68 pref_service_->FindPreference(pref_name.c_str()); |
41 ASSERT_TRUE(pref); | 69 ASSERT_TRUE(pref); |
42 base::Value::Type type = pref->GetType(); | 70 base::Value::Type type = pref->GetType(); |
43 if (type == base::Value::TYPE_DICTIONARY) | 71 if (type == base::Value::TYPE_DICTIONARY) |
44 empty_value.reset(new base::DictionaryValue); | 72 empty_value.reset(new base::DictionaryValue); |
45 else if (type == base::Value::TYPE_LIST) | 73 else if (type == base::Value::TYPE_LIST) |
46 empty_value.reset(new base::ListValue); | 74 empty_value.reset(new base::ListValue); |
47 else | 75 else |
48 FAIL(); | 76 FAIL(); |
49 pref_service_->Set(pref_name.c_str(), *empty_value); | 77 pref_service_->Set(pref_name.c_str(), *empty_value); |
50 } | 78 } |
51 | 79 |
52 content::TestBrowserThreadBundle thread_bundle_; | 80 PrefModelAssociatorClient pref_model_associator_client_; |
53 TestingProfile profile_; | 81 scoped_ptr<PrefServiceSyncable> pref_service_; |
54 PrefService* pref_service_; | |
55 }; | 82 }; |
56 | 83 |
57 class ListPreferenceMergeTest : public AbstractPreferenceMergeTest { | 84 class ListPreferenceMergeTest : public AbstractPreferenceMergeTest { |
58 protected: | 85 protected: |
59 ListPreferenceMergeTest() : | 86 ListPreferenceMergeTest() |
60 server_url0_("http://example.com/server0"), | 87 : server_url0_("http://example.com/server0"), |
61 server_url1_("http://example.com/server1"), | 88 server_url1_("http://example.com/server1"), |
62 local_url0_("http://example.com/local0"), | 89 local_url0_("http://example.com/local0"), |
63 local_url1_("http://example.com/local1") {} | 90 local_url1_("http://example.com/local1") {} |
64 | 91 |
65 void SetUp() override { | 92 void SetUp() override { |
66 AbstractPreferenceMergeTest::SetUp(); | 93 AbstractPreferenceMergeTest::SetUp(); |
67 server_url_list_.Append(new base::StringValue(server_url0_)); | 94 server_url_list_.Append(new base::StringValue(server_url0_)); |
68 server_url_list_.Append(new base::StringValue(server_url1_)); | 95 server_url_list_.Append(new base::StringValue(server_url1_)); |
69 } | 96 } |
70 | 97 |
71 std::string server_url0_; | 98 std::string server_url0_; |
72 std::string server_url1_; | 99 std::string server_url1_; |
73 std::string local_url0_; | 100 std::string local_url0_; |
74 std::string local_url1_; | 101 std::string local_url1_; |
75 base::ListValue server_url_list_; | 102 base::ListValue server_url_list_; |
76 }; | 103 }; |
77 | 104 |
78 TEST_F(ListPreferenceMergeTest, NotListOrDictionary) { | 105 TEST_F(ListPreferenceMergeTest, NotListOrDictionary) { |
79 pref_service_->SetString(prefs::kHomePage, local_url0_); | 106 pref_service_->SetString(kStringPrefName, local_url0_); |
80 const PrefService::Preference* pref = | 107 const PrefService::Preference* pref = |
81 pref_service_->FindPreference(prefs::kHomePage); | 108 pref_service_->FindPreference(kStringPrefName); |
82 scoped_ptr<base::Value> server_value(new base::StringValue(server_url0_)); | 109 scoped_ptr<base::Value> server_value(new base::StringValue(server_url0_)); |
83 scoped_ptr<base::Value> merged_value( | 110 scoped_ptr<base::Value> merged_value( |
84 PrefModelAssociator::MergePreference(pref->name(), | 111 PrefModelAssociator::MergePreference(pref->name(), |
85 *pref->GetValue(), | 112 *pref->GetValue(), |
86 *server_value)); | 113 *server_value, |
114 &pref_model_associator_client_)); | |
87 EXPECT_TRUE(merged_value->Equals(server_value.get())); | 115 EXPECT_TRUE(merged_value->Equals(server_value.get())); |
88 } | 116 } |
89 | 117 |
90 TEST_F(ListPreferenceMergeTest, LocalEmpty) { | 118 TEST_F(ListPreferenceMergeTest, LocalEmpty) { |
91 SetPrefToEmpty(prefs::kURLsToRestoreOnStartup); | 119 SetPrefToEmpty(kListPrefName); |
92 const PrefService::Preference* pref = | 120 const PrefService::Preference* pref = |
93 pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); | 121 pref_service_->FindPreference(kListPrefName); |
94 scoped_ptr<base::Value> merged_value( | 122 scoped_ptr<base::Value> merged_value( |
95 PrefModelAssociator::MergePreference(pref->name(), | 123 PrefModelAssociator::MergePreference(pref->name(), |
96 *pref->GetValue(), | 124 *pref->GetValue(), |
97 server_url_list_)); | 125 server_url_list_, |
126 &pref_model_associator_client_)); | |
98 EXPECT_TRUE(merged_value->Equals(&server_url_list_)); | 127 EXPECT_TRUE(merged_value->Equals(&server_url_list_)); |
99 } | 128 } |
100 | 129 |
101 TEST_F(ListPreferenceMergeTest, ServerNull) { | 130 TEST_F(ListPreferenceMergeTest, ServerNull) { |
102 scoped_ptr<base::Value> null_value = base::Value::CreateNullValue(); | 131 scoped_ptr<base::Value> null_value = base::Value::CreateNullValue(); |
103 { | 132 { |
104 ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); | 133 ListPrefUpdate update(pref_service_.get(), kListPrefName); |
105 base::ListValue* local_list_value = update.Get(); | 134 base::ListValue* local_list_value = update.Get(); |
106 local_list_value->Append(new base::StringValue(local_url0_)); | 135 local_list_value->Append(new base::StringValue(local_url0_)); |
107 } | 136 } |
108 | 137 |
109 const PrefService::Preference* pref = | 138 const PrefService::Preference* pref = |
110 pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); | 139 pref_service_->FindPreference(kListPrefName); |
111 scoped_ptr<base::Value> merged_value( | 140 scoped_ptr<base::Value> merged_value( |
112 PrefModelAssociator::MergePreference(pref->name(), | 141 PrefModelAssociator::MergePreference(pref->name(), |
113 *pref->GetValue(), | 142 *pref->GetValue(), |
114 *null_value)); | 143 *null_value, |
144 &pref_model_associator_client_)); | |
115 const base::ListValue* local_list_value = | 145 const base::ListValue* local_list_value = |
116 pref_service_->GetList(prefs::kURLsToRestoreOnStartup); | 146 pref_service_->GetList(kListPrefName); |
117 EXPECT_TRUE(merged_value->Equals(local_list_value)); | 147 EXPECT_TRUE(merged_value->Equals(local_list_value)); |
118 } | 148 } |
119 | 149 |
120 TEST_F(ListPreferenceMergeTest, ServerEmpty) { | 150 TEST_F(ListPreferenceMergeTest, ServerEmpty) { |
121 scoped_ptr<base::Value> empty_value(new base::ListValue); | 151 scoped_ptr<base::Value> empty_value(new base::ListValue); |
122 { | 152 { |
123 ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); | 153 ListPrefUpdate update(pref_service_.get(), kListPrefName); |
124 base::ListValue* local_list_value = update.Get(); | 154 base::ListValue* local_list_value = update.Get(); |
125 local_list_value->Append(new base::StringValue(local_url0_)); | 155 local_list_value->Append(new base::StringValue(local_url0_)); |
126 } | 156 } |
127 | 157 |
128 const PrefService::Preference* pref = | 158 const PrefService::Preference* pref = |
129 pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); | 159 pref_service_->FindPreference(kListPrefName); |
130 scoped_ptr<base::Value> merged_value( | 160 scoped_ptr<base::Value> merged_value( |
131 PrefModelAssociator::MergePreference(pref->name(), | 161 PrefModelAssociator::MergePreference(pref->name(), |
132 *pref->GetValue(), | 162 *pref->GetValue(), |
133 *empty_value)); | 163 *empty_value, |
164 &pref_model_associator_client_)); | |
134 const base::ListValue* local_list_value = | 165 const base::ListValue* local_list_value = |
135 pref_service_->GetList(prefs::kURLsToRestoreOnStartup); | 166 pref_service_->GetList(kListPrefName); |
136 EXPECT_TRUE(merged_value->Equals(local_list_value)); | 167 EXPECT_TRUE(merged_value->Equals(local_list_value)); |
137 } | 168 } |
138 | 169 |
139 TEST_F(ListPreferenceMergeTest, Merge) { | 170 TEST_F(ListPreferenceMergeTest, Merge) { |
140 { | 171 { |
141 ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); | 172 ListPrefUpdate update(pref_service_.get(), kListPrefName); |
142 base::ListValue* local_list_value = update.Get(); | 173 base::ListValue* local_list_value = update.Get(); |
143 local_list_value->Append(new base::StringValue(local_url0_)); | 174 local_list_value->Append(new base::StringValue(local_url0_)); |
144 local_list_value->Append(new base::StringValue(local_url1_)); | 175 local_list_value->Append(new base::StringValue(local_url1_)); |
145 } | 176 } |
146 | 177 |
147 const PrefService::Preference* pref = | 178 const PrefService::Preference* pref = |
148 pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); | 179 pref_service_->FindPreference(kListPrefName); |
149 scoped_ptr<base::Value> merged_value( | 180 scoped_ptr<base::Value> merged_value( |
150 PrefModelAssociator::MergePreference(pref->name(), | 181 PrefModelAssociator::MergePreference(pref->name(), |
151 *pref->GetValue(), | 182 *pref->GetValue(), |
152 server_url_list_)); | 183 server_url_list_, |
184 &pref_model_associator_client_)); | |
153 | 185 |
154 base::ListValue expected; | 186 base::ListValue expected; |
155 expected.Append(new base::StringValue(server_url0_)); | 187 expected.Append(new base::StringValue(server_url0_)); |
156 expected.Append(new base::StringValue(server_url1_)); | 188 expected.Append(new base::StringValue(server_url1_)); |
157 expected.Append(new base::StringValue(local_url0_)); | 189 expected.Append(new base::StringValue(local_url0_)); |
158 expected.Append(new base::StringValue(local_url1_)); | 190 expected.Append(new base::StringValue(local_url1_)); |
159 EXPECT_TRUE(merged_value->Equals(&expected)); | 191 EXPECT_TRUE(merged_value->Equals(&expected)); |
160 } | 192 } |
161 | 193 |
162 TEST_F(ListPreferenceMergeTest, Duplicates) { | 194 TEST_F(ListPreferenceMergeTest, Duplicates) { |
163 { | 195 { |
164 ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); | 196 ListPrefUpdate update(pref_service_.get(), kListPrefName); |
165 base::ListValue* local_list_value = update.Get(); | 197 base::ListValue* local_list_value = update.Get(); |
166 local_list_value->Append(new base::StringValue(local_url0_)); | 198 local_list_value->Append(new base::StringValue(local_url0_)); |
167 local_list_value->Append(new base::StringValue(server_url0_)); | 199 local_list_value->Append(new base::StringValue(server_url0_)); |
168 local_list_value->Append(new base::StringValue(server_url1_)); | 200 local_list_value->Append(new base::StringValue(server_url1_)); |
169 } | 201 } |
170 | 202 |
171 const PrefService::Preference* pref = | 203 const PrefService::Preference* pref = |
172 pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); | 204 pref_service_->FindPreference(kListPrefName); |
173 scoped_ptr<base::Value> merged_value( | 205 scoped_ptr<base::Value> merged_value( |
174 PrefModelAssociator::MergePreference(pref->name(), | 206 PrefModelAssociator::MergePreference(pref->name(), |
175 *pref->GetValue(), | 207 *pref->GetValue(), |
176 server_url_list_)); | 208 server_url_list_, |
209 &pref_model_associator_client_)); | |
177 | 210 |
178 base::ListValue expected; | 211 base::ListValue expected; |
179 expected.Append(new base::StringValue(server_url0_)); | 212 expected.Append(new base::StringValue(server_url0_)); |
180 expected.Append(new base::StringValue(server_url1_)); | 213 expected.Append(new base::StringValue(server_url1_)); |
181 expected.Append(new base::StringValue(local_url0_)); | 214 expected.Append(new base::StringValue(local_url0_)); |
182 EXPECT_TRUE(merged_value->Equals(&expected)); | 215 EXPECT_TRUE(merged_value->Equals(&expected)); |
183 } | 216 } |
184 | 217 |
185 TEST_F(ListPreferenceMergeTest, Equals) { | 218 TEST_F(ListPreferenceMergeTest, Equals) { |
186 { | 219 { |
187 ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); | 220 ListPrefUpdate update(pref_service_.get(), kListPrefName); |
188 base::ListValue* local_list_value = update.Get(); | 221 base::ListValue* local_list_value = update.Get(); |
189 local_list_value->Append(new base::StringValue(server_url0_)); | 222 local_list_value->Append(new base::StringValue(server_url0_)); |
190 local_list_value->Append(new base::StringValue(server_url1_)); | 223 local_list_value->Append(new base::StringValue(server_url1_)); |
191 } | 224 } |
192 | 225 |
193 scoped_ptr<base::Value> original(server_url_list_.DeepCopy()); | 226 scoped_ptr<base::Value> original(server_url_list_.DeepCopy()); |
194 const PrefService::Preference* pref = | 227 const PrefService::Preference* pref = |
195 pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); | 228 pref_service_->FindPreference(kListPrefName); |
196 scoped_ptr<base::Value> merged_value( | 229 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
197 PrefModelAssociator::MergePreference(pref->name(), | 230 pref->name(), *pref->GetValue(), server_url_list_, |
198 *pref->GetValue(), | 231 &pref_model_associator_client_)); |
199 server_url_list_)); | |
200 EXPECT_TRUE(merged_value->Equals(original.get())); | 232 EXPECT_TRUE(merged_value->Equals(original.get())); |
201 } | 233 } |
202 | 234 |
203 class DictionaryPreferenceMergeTest : public AbstractPreferenceMergeTest { | 235 class DictionaryPreferenceMergeTest : public AbstractPreferenceMergeTest { |
204 protected: | 236 protected: |
205 DictionaryPreferenceMergeTest() : | 237 DictionaryPreferenceMergeTest() |
206 expression0_("expression0"), | 238 : expression0_("expression0"), |
207 expression1_("expression1"), | 239 expression1_("expression1"), |
208 expression2_("expression2"), | 240 expression2_("expression2"), |
209 expression3_("expression3"), | 241 expression3_("expression3"), |
210 expression4_("expression4") {} | 242 expression4_("expression4") {} |
211 | 243 |
212 void SetUp() override { | 244 void SetUp() override { |
213 AbstractPreferenceMergeTest::SetUp(); | 245 AbstractPreferenceMergeTest::SetUp(); |
214 SetContentPattern(&server_patterns_, expression0_, 1); | 246 SetContentPattern(&server_patterns_, expression0_, 1); |
215 SetContentPattern(&server_patterns_, expression1_, 2); | 247 SetContentPattern(&server_patterns_, expression1_, 2); |
216 SetContentPattern(&server_patterns_, expression2_, 1); | 248 SetContentPattern(&server_patterns_, expression2_, 1); |
217 } | 249 } |
218 | 250 |
219 std::string expression0_; | 251 std::string expression0_; |
220 std::string expression1_; | 252 std::string expression1_; |
221 std::string expression2_; | 253 std::string expression2_; |
222 std::string expression3_; | 254 std::string expression3_; |
223 std::string expression4_; | 255 std::string expression4_; |
224 base::DictionaryValue server_patterns_; | 256 base::DictionaryValue server_patterns_; |
225 }; | 257 }; |
226 | 258 |
227 TEST_F(DictionaryPreferenceMergeTest, LocalEmpty) { | 259 TEST_F(DictionaryPreferenceMergeTest, LocalEmpty) { |
228 SetPrefToEmpty(kContentSettingsPrefName); | 260 SetPrefToEmpty(kDictionaryPrefName); |
229 const PrefService::Preference* pref = | 261 const PrefService::Preference* pref = |
230 pref_service_->FindPreference(kContentSettingsPrefName); | 262 pref_service_->FindPreference(kDictionaryPrefName); |
231 scoped_ptr<base::Value> merged_value( | 263 scoped_ptr<base::Value> merged_value( |
232 PrefModelAssociator::MergePreference(pref->name(), | 264 PrefModelAssociator::MergePreference(pref->name(), |
233 *pref->GetValue(), | 265 *pref->GetValue(), |
234 server_patterns_)); | 266 server_patterns_, |
267 &pref_model_associator_client_)); | |
235 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); | 268 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); |
236 } | 269 } |
237 | 270 |
238 TEST_F(DictionaryPreferenceMergeTest, ServerNull) { | 271 TEST_F(DictionaryPreferenceMergeTest, ServerNull) { |
239 scoped_ptr<base::Value> null_value = base::Value::CreateNullValue(); | 272 scoped_ptr<base::Value> null_value = base::Value::CreateNullValue(); |
240 { | 273 { |
241 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); | 274 DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName); |
242 base::DictionaryValue* local_dict_value = update.Get(); | 275 base::DictionaryValue* local_dict_value = update.Get(); |
243 SetContentPattern(local_dict_value, expression3_, 1); | 276 SetContentPattern(local_dict_value, expression3_, 1); |
244 } | 277 } |
245 | 278 |
246 const PrefService::Preference* pref = | 279 const PrefService::Preference* pref = |
247 pref_service_->FindPreference(kContentSettingsPrefName); | 280 pref_service_->FindPreference(kDictionaryPrefName); |
248 scoped_ptr<base::Value> merged_value( | 281 scoped_ptr<base::Value> merged_value( |
249 PrefModelAssociator::MergePreference(pref->name(), | 282 PrefModelAssociator::MergePreference(pref->name(), |
250 *pref->GetValue(), | 283 *pref->GetValue(), |
251 *null_value)); | 284 *null_value, |
285 &pref_model_associator_client_)); | |
252 const base::DictionaryValue* local_dict_value = | 286 const base::DictionaryValue* local_dict_value = |
253 pref_service_->GetDictionary(kContentSettingsPrefName); | 287 pref_service_->GetDictionary(kDictionaryPrefName); |
254 EXPECT_TRUE(merged_value->Equals(local_dict_value)); | 288 EXPECT_TRUE(merged_value->Equals(local_dict_value)); |
255 } | 289 } |
256 | 290 |
257 TEST_F(DictionaryPreferenceMergeTest, ServerEmpty) { | 291 TEST_F(DictionaryPreferenceMergeTest, ServerEmpty) { |
258 scoped_ptr<base::Value> empty_value(new base::DictionaryValue); | 292 scoped_ptr<base::Value> empty_value(new base::DictionaryValue); |
259 { | 293 { |
260 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); | 294 DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName); |
261 base::DictionaryValue* local_dict_value = update.Get(); | 295 base::DictionaryValue* local_dict_value = update.Get(); |
262 SetContentPattern(local_dict_value, expression3_, 1); | 296 SetContentPattern(local_dict_value, expression3_, 1); |
263 } | 297 } |
264 | 298 |
265 const PrefService::Preference* pref = | 299 const PrefService::Preference* pref = |
266 pref_service_->FindPreference(kContentSettingsPrefName); | 300 pref_service_->FindPreference(kDictionaryPrefName); |
267 scoped_ptr<base::Value> merged_value( | 301 scoped_ptr<base::Value> merged_value( |
268 PrefModelAssociator::MergePreference(pref->name(), | 302 PrefModelAssociator::MergePreference(pref->name(), |
269 *pref->GetValue(), | 303 *pref->GetValue(), |
270 *empty_value)); | 304 *empty_value, |
305 &pref_model_associator_client_)); | |
271 const base::DictionaryValue* local_dict_value = | 306 const base::DictionaryValue* local_dict_value = |
272 pref_service_->GetDictionary(kContentSettingsPrefName); | 307 pref_service_->GetDictionary(kDictionaryPrefName); |
273 EXPECT_TRUE(merged_value->Equals(local_dict_value)); | 308 EXPECT_TRUE(merged_value->Equals(local_dict_value)); |
274 } | 309 } |
275 | 310 |
276 TEST_F(DictionaryPreferenceMergeTest, MergeNoConflicts) { | 311 TEST_F(DictionaryPreferenceMergeTest, MergeNoConflicts) { |
277 { | 312 { |
278 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); | 313 DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName); |
279 base::DictionaryValue* local_dict_value = update.Get(); | 314 base::DictionaryValue* local_dict_value = update.Get(); |
280 SetContentPattern(local_dict_value, expression3_, 1); | 315 SetContentPattern(local_dict_value, expression3_, 1); |
281 } | 316 } |
282 | 317 |
283 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 318 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
284 kContentSettingsPrefName, | 319 kDictionaryPrefName, |
285 *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), | 320 *pref_service_->FindPreference(kDictionaryPrefName)->GetValue(), |
286 server_patterns_)); | 321 server_patterns_, |
322 &pref_model_associator_client_)); | |
287 | 323 |
288 base::DictionaryValue expected; | 324 base::DictionaryValue expected; |
289 SetContentPattern(&expected, expression0_, 1); | 325 SetContentPattern(&expected, expression0_, 1); |
290 SetContentPattern(&expected, expression1_, 2); | 326 SetContentPattern(&expected, expression1_, 2); |
291 SetContentPattern(&expected, expression2_, 1); | 327 SetContentPattern(&expected, expression2_, 1); |
292 SetContentPattern(&expected, expression3_, 1); | 328 SetContentPattern(&expected, expression3_, 1); |
293 EXPECT_TRUE(merged_value->Equals(&expected)); | 329 EXPECT_TRUE(merged_value->Equals(&expected)); |
294 } | 330 } |
295 | 331 |
296 TEST_F(DictionaryPreferenceMergeTest, MergeConflicts) { | 332 TEST_F(DictionaryPreferenceMergeTest, MergeConflicts) { |
297 { | 333 { |
298 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); | 334 DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName); |
299 base::DictionaryValue* local_dict_value = update.Get(); | 335 base::DictionaryValue* local_dict_value = update.Get(); |
300 SetContentPattern(local_dict_value, expression0_, 2); | 336 SetContentPattern(local_dict_value, expression0_, 2); |
301 SetContentPattern(local_dict_value, expression2_, 1); | 337 SetContentPattern(local_dict_value, expression2_, 1); |
302 SetContentPattern(local_dict_value, expression3_, 1); | 338 SetContentPattern(local_dict_value, expression3_, 1); |
303 SetContentPattern(local_dict_value, expression4_, 2); | 339 SetContentPattern(local_dict_value, expression4_, 2); |
304 } | 340 } |
305 | 341 |
306 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 342 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
307 kContentSettingsPrefName, | 343 kDictionaryPrefName, |
308 *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), | 344 *pref_service_->FindPreference(kDictionaryPrefName)->GetValue(), |
309 server_patterns_)); | 345 server_patterns_, |
346 &pref_model_associator_client_)); | |
310 | 347 |
311 base::DictionaryValue expected; | 348 base::DictionaryValue expected; |
312 SetContentPattern(&expected, expression0_, 1); | 349 SetContentPattern(&expected, expression0_, 1); |
313 SetContentPattern(&expected, expression1_, 2); | 350 SetContentPattern(&expected, expression1_, 2); |
314 SetContentPattern(&expected, expression2_, 1); | 351 SetContentPattern(&expected, expression2_, 1); |
315 SetContentPattern(&expected, expression3_, 1); | 352 SetContentPattern(&expected, expression3_, 1); |
316 SetContentPattern(&expected, expression4_, 2); | 353 SetContentPattern(&expected, expression4_, 2); |
317 EXPECT_TRUE(merged_value->Equals(&expected)); | 354 EXPECT_TRUE(merged_value->Equals(&expected)); |
318 } | 355 } |
319 | 356 |
320 TEST_F(DictionaryPreferenceMergeTest, MergeValueToDictionary) { | 357 TEST_F(DictionaryPreferenceMergeTest, MergeValueToDictionary) { |
321 base::DictionaryValue local_dict_value; | 358 base::DictionaryValue local_dict_value; |
322 local_dict_value.SetInteger("key", 0); | 359 local_dict_value.SetInteger("key", 0); |
323 | 360 |
324 base::DictionaryValue server_dict_value; | 361 base::DictionaryValue server_dict_value; |
325 server_dict_value.SetInteger("key.subkey", 0); | 362 server_dict_value.SetInteger("key.subkey", 0); |
326 | 363 |
327 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 364 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
328 kContentSettingsPrefName, | 365 kDictionaryPrefName, |
329 local_dict_value, | 366 local_dict_value, |
330 server_dict_value)); | 367 server_dict_value, |
368 &pref_model_associator_client_)); | |
331 | 369 |
332 EXPECT_TRUE(merged_value->Equals(&server_dict_value)); | 370 EXPECT_TRUE(merged_value->Equals(&server_dict_value)); |
333 } | 371 } |
334 | 372 |
335 TEST_F(DictionaryPreferenceMergeTest, Equal) { | 373 TEST_F(DictionaryPreferenceMergeTest, Equal) { |
336 { | 374 { |
337 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); | 375 DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName); |
338 base::DictionaryValue* local_dict_value = update.Get(); | 376 base::DictionaryValue* local_dict_value = update.Get(); |
339 SetContentPattern(local_dict_value, expression0_, 1); | 377 SetContentPattern(local_dict_value, expression0_, 1); |
340 SetContentPattern(local_dict_value, expression1_, 2); | 378 SetContentPattern(local_dict_value, expression1_, 2); |
341 SetContentPattern(local_dict_value, expression2_, 1); | 379 SetContentPattern(local_dict_value, expression2_, 1); |
342 } | 380 } |
343 | 381 |
344 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 382 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
345 kContentSettingsPrefName, | 383 kDictionaryPrefName, |
346 *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), | 384 *pref_service_->FindPreference(kDictionaryPrefName)->GetValue(), |
347 server_patterns_)); | 385 server_patterns_, |
386 &pref_model_associator_client_)); | |
348 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); | 387 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); |
349 } | 388 } |
350 | 389 |
351 TEST_F(DictionaryPreferenceMergeTest, ConflictButServerWins) { | 390 TEST_F(DictionaryPreferenceMergeTest, ConflictButServerWins) { |
352 { | 391 { |
353 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); | 392 DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName); |
354 base::DictionaryValue* local_dict_value = update.Get(); | 393 base::DictionaryValue* local_dict_value = update.Get(); |
355 SetContentPattern(local_dict_value, expression0_, 2); | 394 SetContentPattern(local_dict_value, expression0_, 2); |
356 SetContentPattern(local_dict_value, expression1_, 2); | 395 SetContentPattern(local_dict_value, expression1_, 2); |
357 SetContentPattern(local_dict_value, expression2_, 1); | 396 SetContentPattern(local_dict_value, expression2_, 1); |
358 } | 397 } |
359 | 398 |
360 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 399 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
361 kContentSettingsPrefName, | 400 kDictionaryPrefName, |
362 *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), | 401 *pref_service_->FindPreference(kDictionaryPrefName)->GetValue(), |
363 server_patterns_)); | 402 server_patterns_, |
403 &pref_model_associator_client_)); | |
364 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); | 404 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); |
365 } | 405 } |
366 | 406 |
367 class IndividualPreferenceMergeTest : public AbstractPreferenceMergeTest { | 407 class IndividualPreferenceMergeTest : public AbstractPreferenceMergeTest { |
368 protected: | 408 protected: |
369 IndividualPreferenceMergeTest() : | 409 IndividualPreferenceMergeTest() |
370 url0_("http://example.com/server0"), | 410 : url0_("http://example.com/server0"), |
371 url1_("http://example.com/server1"), | 411 url1_("http://example.com/server1"), |
372 expression0_("expression0"), | 412 expression0_("expression0"), |
373 expression1_("expression1") {} | 413 expression1_("expression1") {} |
374 | 414 |
375 void SetUp() override { | 415 void SetUp() override { |
376 AbstractPreferenceMergeTest::SetUp(); | 416 AbstractPreferenceMergeTest::SetUp(); |
377 server_url_list_.Append(new base::StringValue(url0_)); | 417 server_url_list_.Append(new base::StringValue(url0_)); |
378 SetContentPattern(&server_patterns_, expression0_, 1); | 418 SetContentPattern(&server_patterns_, expression0_, 1); |
379 } | 419 } |
380 | 420 |
381 bool MergeListPreference(const char* pref) { | 421 bool MergeListPreference(const char* pref) { |
382 { | 422 { |
383 ListPrefUpdate update(pref_service_, pref); | 423 ListPrefUpdate update(pref_service_.get(), pref); |
384 base::ListValue* local_list_value = update.Get(); | 424 base::ListValue* local_list_value = update.Get(); |
385 local_list_value->Append(new base::StringValue(url1_)); | 425 local_list_value->Append(new base::StringValue(url1_)); |
386 } | 426 } |
387 | 427 |
388 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 428 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
389 pref, | 429 pref, |
390 *pref_service_->GetUserPrefValue(pref), | 430 *pref_service_->GetUserPrefValue(pref), |
391 server_url_list_)); | 431 server_url_list_, |
432 &pref_model_associator_client_)); | |
392 | 433 |
393 base::ListValue expected; | 434 base::ListValue expected; |
394 expected.Append(new base::StringValue(url0_)); | 435 expected.Append(new base::StringValue(url0_)); |
395 expected.Append(new base::StringValue(url1_)); | 436 expected.Append(new base::StringValue(url1_)); |
396 return merged_value->Equals(&expected); | 437 return merged_value->Equals(&expected); |
397 } | 438 } |
398 | 439 |
399 bool MergeDictionaryPreference(const char* pref) { | 440 bool MergeDictionaryPreference(const char* pref) { |
400 { | 441 { |
401 DictionaryPrefUpdate update(pref_service_, pref); | 442 DictionaryPrefUpdate update(pref_service_.get(), pref); |
402 base::DictionaryValue* local_dict_value = update.Get(); | 443 base::DictionaryValue* local_dict_value = update.Get(); |
403 SetContentPattern(local_dict_value, expression1_, 1); | 444 SetContentPattern(local_dict_value, expression1_, 1); |
404 } | 445 } |
405 | 446 |
406 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 447 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
407 pref, | 448 pref, |
408 *pref_service_->GetUserPrefValue(pref), | 449 *pref_service_->GetUserPrefValue(pref), |
409 server_patterns_)); | 450 server_patterns_, |
451 &pref_model_associator_client_)); | |
410 | 452 |
411 base::DictionaryValue expected; | 453 base::DictionaryValue expected; |
412 SetContentPattern(&expected, expression0_, 1); | 454 SetContentPattern(&expected, expression0_, 1); |
413 SetContentPattern(&expected, expression1_, 1); | 455 SetContentPattern(&expected, expression1_, 1); |
414 return merged_value->Equals(&expected); | 456 return merged_value->Equals(&expected); |
415 } | 457 } |
416 | 458 |
417 std::string url0_; | 459 std::string url0_; |
418 std::string url1_; | 460 std::string url1_; |
419 std::string expression0_; | 461 std::string expression0_; |
420 std::string expression1_; | 462 std::string expression1_; |
421 std::string content_type0_; | 463 std::string content_type0_; |
422 base::ListValue server_url_list_; | 464 base::ListValue server_url_list_; |
423 base::DictionaryValue server_patterns_; | 465 base::DictionaryValue server_patterns_; |
424 }; | 466 }; |
425 | 467 |
426 TEST_F(IndividualPreferenceMergeTest, URLsToRestoreOnStartup) { | 468 TEST_F(IndividualPreferenceMergeTest, URLsToRestoreOnStartup) { |
gab
2015/09/10 14:15:09
Change name of this test to reflect its new generi
| |
427 EXPECT_TRUE(MergeListPreference(prefs::kURLsToRestoreOnStartup)); | 469 EXPECT_TRUE(MergeListPreference(kListPrefName)); |
428 } | 470 } |
OLD | NEW |