OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
6 #include "base/prefs/scoped_user_pref_update.h" | 6 #include "base/prefs/scoped_user_pref_update.h" |
7 #include "base/values.h" | 7 #include "base/values.h" |
8 #include "chrome/browser/prefs/pref_model_associator.h" | 8 #include "chrome/browser/prefs/pref_model_associator.h" |
9 #include "chrome/common/pref_names.h" | 9 #include "chrome/common/pref_names.h" |
10 #include "chrome/test/base/testing_profile.h" | 10 #include "chrome/test/base/testing_profile.h" |
11 #include "content/public/test/test_browser_thread_bundle.h" | 11 #include "content/public/test/test_browser_thread_bundle.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
13 | 13 |
| 14 // Any content settings pref name should do for these tests. |
| 15 const char* kContentSettingsPrefName = |
| 16 "profile.content_settings.exceptions.cookies"; |
| 17 |
14 class AbstractPreferenceMergeTest : public testing::Test { | 18 class AbstractPreferenceMergeTest : public testing::Test { |
15 protected: | 19 protected: |
16 void SetUp() override { pref_service_ = profile_.GetPrefs(); } | 20 void SetUp() override { pref_service_ = profile_.GetPrefs(); } |
17 | 21 |
18 void SetContentPattern(base::DictionaryValue* patterns_dict, | 22 void SetContentPattern(base::DictionaryValue* patterns_dict, |
19 const std::string& expression, | 23 const std::string& expression, |
20 int setting) { | 24 int setting) { |
21 base::DictionaryValue* expression_dict; | 25 base::DictionaryValue* expression_dict; |
22 bool found = | 26 bool found = |
23 patterns_dict->GetDictionaryWithoutPathExpansion(expression, | 27 patterns_dict->GetDictionaryWithoutPathExpansion(expression, |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 | 218 |
215 std::string expression0_; | 219 std::string expression0_; |
216 std::string expression1_; | 220 std::string expression1_; |
217 std::string expression2_; | 221 std::string expression2_; |
218 std::string expression3_; | 222 std::string expression3_; |
219 std::string expression4_; | 223 std::string expression4_; |
220 base::DictionaryValue server_patterns_; | 224 base::DictionaryValue server_patterns_; |
221 }; | 225 }; |
222 | 226 |
223 TEST_F(DictionaryPreferenceMergeTest, LocalEmpty) { | 227 TEST_F(DictionaryPreferenceMergeTest, LocalEmpty) { |
224 SetPrefToEmpty(prefs::kContentSettingsImagesPatternPairs); | 228 SetPrefToEmpty(kContentSettingsPrefName); |
225 const PrefService::Preference* pref = | 229 const PrefService::Preference* pref = |
226 pref_service_->FindPreference(prefs::kContentSettingsImagesPatternPairs); | 230 pref_service_->FindPreference(kContentSettingsPrefName); |
227 scoped_ptr<base::Value> merged_value( | 231 scoped_ptr<base::Value> merged_value( |
228 PrefModelAssociator::MergePreference(pref->name(), | 232 PrefModelAssociator::MergePreference(pref->name(), |
229 *pref->GetValue(), | 233 *pref->GetValue(), |
230 server_patterns_)); | 234 server_patterns_)); |
231 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); | 235 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); |
232 } | 236 } |
233 | 237 |
234 TEST_F(DictionaryPreferenceMergeTest, ServerNull) { | 238 TEST_F(DictionaryPreferenceMergeTest, ServerNull) { |
235 scoped_ptr<base::Value> null_value = base::Value::CreateNullValue(); | 239 scoped_ptr<base::Value> null_value = base::Value::CreateNullValue(); |
236 { | 240 { |
237 DictionaryPrefUpdate update(pref_service_, | 241 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); |
238 prefs::kContentSettingsCookiesPatternPairs); | |
239 base::DictionaryValue* local_dict_value = update.Get(); | 242 base::DictionaryValue* local_dict_value = update.Get(); |
240 SetContentPattern(local_dict_value, expression3_, 1); | 243 SetContentPattern(local_dict_value, expression3_, 1); |
241 } | 244 } |
242 | 245 |
243 const PrefService::Preference* pref = | 246 const PrefService::Preference* pref = |
244 pref_service_->FindPreference(prefs::kContentSettingsCookiesPatternPairs); | 247 pref_service_->FindPreference(kContentSettingsPrefName); |
245 scoped_ptr<base::Value> merged_value( | 248 scoped_ptr<base::Value> merged_value( |
246 PrefModelAssociator::MergePreference(pref->name(), | 249 PrefModelAssociator::MergePreference(pref->name(), |
247 *pref->GetValue(), | 250 *pref->GetValue(), |
248 *null_value)); | 251 *null_value)); |
249 const base::DictionaryValue* local_dict_value = | 252 const base::DictionaryValue* local_dict_value = |
250 pref_service_->GetDictionary(prefs::kContentSettingsCookiesPatternPairs); | 253 pref_service_->GetDictionary(kContentSettingsPrefName); |
251 EXPECT_TRUE(merged_value->Equals(local_dict_value)); | 254 EXPECT_TRUE(merged_value->Equals(local_dict_value)); |
252 } | 255 } |
253 | 256 |
254 TEST_F(DictionaryPreferenceMergeTest, ServerEmpty) { | 257 TEST_F(DictionaryPreferenceMergeTest, ServerEmpty) { |
255 scoped_ptr<base::Value> empty_value(new base::DictionaryValue); | 258 scoped_ptr<base::Value> empty_value(new base::DictionaryValue); |
256 { | 259 { |
257 DictionaryPrefUpdate update(pref_service_, | 260 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); |
258 prefs::kContentSettingsPluginsPatternPairs); | |
259 base::DictionaryValue* local_dict_value = update.Get(); | 261 base::DictionaryValue* local_dict_value = update.Get(); |
260 SetContentPattern(local_dict_value, expression3_, 1); | 262 SetContentPattern(local_dict_value, expression3_, 1); |
261 } | 263 } |
262 | 264 |
263 const PrefService::Preference* pref = | 265 const PrefService::Preference* pref = |
264 pref_service_->FindPreference( | 266 pref_service_->FindPreference(kContentSettingsPrefName); |
265 prefs::kContentSettingsPluginsPatternPairs); | |
266 scoped_ptr<base::Value> merged_value( | 267 scoped_ptr<base::Value> merged_value( |
267 PrefModelAssociator::MergePreference(pref->name(), | 268 PrefModelAssociator::MergePreference(pref->name(), |
268 *pref->GetValue(), | 269 *pref->GetValue(), |
269 *empty_value)); | 270 *empty_value)); |
270 const base::DictionaryValue* local_dict_value = | 271 const base::DictionaryValue* local_dict_value = |
271 pref_service_->GetDictionary( | 272 pref_service_->GetDictionary(kContentSettingsPrefName); |
272 prefs::kContentSettingsPluginsPatternPairs); | |
273 EXPECT_TRUE(merged_value->Equals(local_dict_value)); | 273 EXPECT_TRUE(merged_value->Equals(local_dict_value)); |
274 } | 274 } |
275 | 275 |
276 TEST_F(DictionaryPreferenceMergeTest, MergeNoConflicts) { | 276 TEST_F(DictionaryPreferenceMergeTest, MergeNoConflicts) { |
277 { | 277 { |
278 DictionaryPrefUpdate update(pref_service_, | 278 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); |
279 prefs::kContentSettingsJavaScriptPatternPairs); | |
280 base::DictionaryValue* local_dict_value = update.Get(); | 279 base::DictionaryValue* local_dict_value = update.Get(); |
281 SetContentPattern(local_dict_value, expression3_, 1); | 280 SetContentPattern(local_dict_value, expression3_, 1); |
282 } | 281 } |
283 | 282 |
284 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 283 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
285 prefs::kContentSettingsJavaScriptPatternPairs, | 284 kContentSettingsPrefName, |
286 *pref_service_->FindPreference( | 285 *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), |
287 prefs::kContentSettingsJavaScriptPatternPairs)->GetValue(), | |
288 server_patterns_)); | 286 server_patterns_)); |
289 | 287 |
290 base::DictionaryValue expected; | 288 base::DictionaryValue expected; |
291 SetContentPattern(&expected, expression0_, 1); | 289 SetContentPattern(&expected, expression0_, 1); |
292 SetContentPattern(&expected, expression1_, 2); | 290 SetContentPattern(&expected, expression1_, 2); |
293 SetContentPattern(&expected, expression2_, 1); | 291 SetContentPattern(&expected, expression2_, 1); |
294 SetContentPattern(&expected, expression3_, 1); | 292 SetContentPattern(&expected, expression3_, 1); |
295 EXPECT_TRUE(merged_value->Equals(&expected)); | 293 EXPECT_TRUE(merged_value->Equals(&expected)); |
296 } | 294 } |
297 | 295 |
298 TEST_F(DictionaryPreferenceMergeTest, MergeConflicts) { | 296 TEST_F(DictionaryPreferenceMergeTest, MergeConflicts) { |
299 { | 297 { |
300 DictionaryPrefUpdate update(pref_service_, | 298 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); |
301 prefs::kContentSettingsPopupsPatternPairs); | |
302 base::DictionaryValue* local_dict_value = update.Get(); | 299 base::DictionaryValue* local_dict_value = update.Get(); |
303 SetContentPattern(local_dict_value, expression0_, 2); | 300 SetContentPattern(local_dict_value, expression0_, 2); |
304 SetContentPattern(local_dict_value, expression2_, 1); | 301 SetContentPattern(local_dict_value, expression2_, 1); |
305 SetContentPattern(local_dict_value, expression3_, 1); | 302 SetContentPattern(local_dict_value, expression3_, 1); |
306 SetContentPattern(local_dict_value, expression4_, 2); | 303 SetContentPattern(local_dict_value, expression4_, 2); |
307 } | 304 } |
308 | 305 |
309 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 306 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
310 prefs::kContentSettingsPopupsPatternPairs, | 307 kContentSettingsPrefName, |
311 *pref_service_->FindPreference( | 308 *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), |
312 prefs::kContentSettingsPopupsPatternPairs)->GetValue(), | |
313 server_patterns_)); | 309 server_patterns_)); |
314 | 310 |
315 base::DictionaryValue expected; | 311 base::DictionaryValue expected; |
316 SetContentPattern(&expected, expression0_, 1); | 312 SetContentPattern(&expected, expression0_, 1); |
317 SetContentPattern(&expected, expression1_, 2); | 313 SetContentPattern(&expected, expression1_, 2); |
318 SetContentPattern(&expected, expression2_, 1); | 314 SetContentPattern(&expected, expression2_, 1); |
319 SetContentPattern(&expected, expression3_, 1); | 315 SetContentPattern(&expected, expression3_, 1); |
320 SetContentPattern(&expected, expression4_, 2); | 316 SetContentPattern(&expected, expression4_, 2); |
321 EXPECT_TRUE(merged_value->Equals(&expected)); | 317 EXPECT_TRUE(merged_value->Equals(&expected)); |
322 } | 318 } |
323 | 319 |
324 TEST_F(DictionaryPreferenceMergeTest, Equal) { | 320 TEST_F(DictionaryPreferenceMergeTest, Equal) { |
325 { | 321 { |
326 DictionaryPrefUpdate update(pref_service_, | 322 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); |
327 prefs::kContentSettingsMouseLockPatternPairs); | |
328 base::DictionaryValue* local_dict_value = update.Get(); | 323 base::DictionaryValue* local_dict_value = update.Get(); |
329 SetContentPattern(local_dict_value, expression0_, 1); | 324 SetContentPattern(local_dict_value, expression0_, 1); |
330 SetContentPattern(local_dict_value, expression1_, 2); | 325 SetContentPattern(local_dict_value, expression1_, 2); |
331 SetContentPattern(local_dict_value, expression2_, 1); | 326 SetContentPattern(local_dict_value, expression2_, 1); |
332 } | 327 } |
333 | 328 |
334 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 329 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
335 prefs::kContentSettingsMouseLockPatternPairs, | 330 kContentSettingsPrefName, |
336 *pref_service_->FindPreference( | 331 *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), |
337 prefs::kContentSettingsMouseLockPatternPairs)->GetValue(), | |
338 server_patterns_)); | 332 server_patterns_)); |
339 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); | 333 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); |
340 } | 334 } |
341 | 335 |
342 TEST_F(DictionaryPreferenceMergeTest, ConflictButServerWins) { | 336 TEST_F(DictionaryPreferenceMergeTest, ConflictButServerWins) { |
343 { | 337 { |
344 DictionaryPrefUpdate update(pref_service_, | 338 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); |
345 prefs::kContentSettingsFullScreenPatternPairs); | |
346 base::DictionaryValue* local_dict_value = update.Get(); | 339 base::DictionaryValue* local_dict_value = update.Get(); |
347 SetContentPattern(local_dict_value, expression0_, 2); | 340 SetContentPattern(local_dict_value, expression0_, 2); |
348 SetContentPattern(local_dict_value, expression1_, 2); | 341 SetContentPattern(local_dict_value, expression1_, 2); |
349 SetContentPattern(local_dict_value, expression2_, 1); | 342 SetContentPattern(local_dict_value, expression2_, 1); |
350 } | 343 } |
351 | 344 |
352 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 345 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
353 prefs::kContentSettingsFullScreenPatternPairs, | 346 kContentSettingsPrefName, |
354 *pref_service_->FindPreference( | 347 *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), |
355 prefs::kContentSettingsFullScreenPatternPairs)->GetValue(), | |
356 server_patterns_)); | 348 server_patterns_)); |
357 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); | 349 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); |
358 } | 350 } |
359 | 351 |
360 class IndividualPreferenceMergeTest : public AbstractPreferenceMergeTest { | 352 class IndividualPreferenceMergeTest : public AbstractPreferenceMergeTest { |
361 protected: | 353 protected: |
362 IndividualPreferenceMergeTest() : | 354 IndividualPreferenceMergeTest() : |
363 url0_("http://example.com/server0"), | 355 url0_("http://example.com/server0"), |
364 url1_("http://example.com/server1"), | 356 url1_("http://example.com/server1"), |
365 expression0_("expression0"), | 357 expression0_("expression0"), |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
412 std::string expression0_; | 404 std::string expression0_; |
413 std::string expression1_; | 405 std::string expression1_; |
414 std::string content_type0_; | 406 std::string content_type0_; |
415 base::ListValue server_url_list_; | 407 base::ListValue server_url_list_; |
416 base::DictionaryValue server_patterns_; | 408 base::DictionaryValue server_patterns_; |
417 }; | 409 }; |
418 | 410 |
419 TEST_F(IndividualPreferenceMergeTest, URLsToRestoreOnStartup) { | 411 TEST_F(IndividualPreferenceMergeTest, URLsToRestoreOnStartup) { |
420 EXPECT_TRUE(MergeListPreference(prefs::kURLsToRestoreOnStartup)); | 412 EXPECT_TRUE(MergeListPreference(prefs::kURLsToRestoreOnStartup)); |
421 } | 413 } |
OLD | NEW |