| 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 |