| 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/auto_reset.h" | 5 #include "base/auto_reset.h" |
| 6 #include "base/command_line.h" | 6 #include "base/command_line.h" |
| 7 #include "base/json/json_reader.h" | 7 #include "base/json/json_reader.h" |
| 8 #include "base/json/json_writer.h" | 8 #include "base/json/json_writer.h" |
| 9 #include "chrome/browser/content_settings/content_settings_details.h" | 9 #include "chrome/browser/content_settings/content_settings_details.h" |
| 10 #include "chrome/browser/content_settings/cookie_settings.h" |
| 10 #include "chrome/browser/content_settings/host_content_settings_map.h" | 11 #include "chrome/browser/content_settings/host_content_settings_map.h" |
| 11 #include "chrome/browser/content_settings/mock_settings_observer.h" | 12 #include "chrome/browser/content_settings/mock_settings_observer.h" |
| 12 #include "chrome/browser/prefs/pref_service.h" | 13 #include "chrome/browser/prefs/pref_service.h" |
| 13 #include "chrome/browser/prefs/scoped_user_pref_update.h" | 14 #include "chrome/browser/prefs/scoped_user_pref_update.h" |
| 14 #include "chrome/common/chrome_switches.h" | 15 #include "chrome/common/chrome_switches.h" |
| 15 #include "chrome/common/pref_names.h" | 16 #include "chrome/common/pref_names.h" |
| 16 #include "chrome/common/url_constants.h" | 17 #include "chrome/common/url_constants.h" |
| 17 #include "chrome/test/base/testing_browser_process_test.h" | 18 #include "chrome/test/base/testing_browser_process_test.h" |
| 18 #include "chrome/test/base/testing_pref_service.h" | 19 #include "chrome/test/base/testing_pref_service.h" |
| 19 #include "chrome/test/base/testing_profile.h" | 20 #include "chrome/test/base/testing_profile.h" |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 desired_settings.settings[CONTENT_SETTINGS_TYPE_PLUGINS] = | 146 desired_settings.settings[CONTENT_SETTINGS_TYPE_PLUGINS] = |
| 146 CONTENT_SETTING_ALLOW; | 147 CONTENT_SETTING_ALLOW; |
| 147 desired_settings.settings[CONTENT_SETTINGS_TYPE_POPUPS] = | 148 desired_settings.settings[CONTENT_SETTINGS_TYPE_POPUPS] = |
| 148 CONTENT_SETTING_BLOCK; | 149 CONTENT_SETTING_BLOCK; |
| 149 desired_settings.settings[CONTENT_SETTINGS_TYPE_GEOLOCATION] = | 150 desired_settings.settings[CONTENT_SETTINGS_TYPE_GEOLOCATION] = |
| 150 CONTENT_SETTING_ASK; | 151 CONTENT_SETTING_ASK; |
| 151 desired_settings.settings[CONTENT_SETTINGS_TYPE_NOTIFICATIONS] = | 152 desired_settings.settings[CONTENT_SETTINGS_TYPE_NOTIFICATIONS] = |
| 152 CONTENT_SETTING_ASK; | 153 CONTENT_SETTING_ASK; |
| 153 desired_settings.settings[CONTENT_SETTINGS_TYPE_INTENTS] = | 154 desired_settings.settings[CONTENT_SETTINGS_TYPE_INTENTS] = |
| 154 CONTENT_SETTING_ASK; | 155 CONTENT_SETTING_ASK; |
| 156 desired_settings.settings[CONTENT_SETTINGS_TYPE_COOKIES_SESSION_ONLY] = |
| 157 CONTENT_SETTING_ALLOW; |
| 155 ContentSettings settings = | 158 ContentSettings settings = |
| 156 host_content_settings_map->GetContentSettings(host, host); | 159 host_content_settings_map->GetContentSettings(host, host); |
| 157 EXPECT_TRUE(SettingsEqual(desired_settings, settings)); | 160 EXPECT_TRUE(SettingsEqual(desired_settings, settings)); |
| 158 | 161 |
| 159 // Check returning all hosts for a setting. | 162 // Check returning all hosts for a setting. |
| 160 ContentSettingsPattern pattern2 = | 163 ContentSettingsPattern pattern2 = |
| 161 ContentSettingsPattern::FromString("[*.]example.org"); | 164 ContentSettingsPattern::FromString("[*.]example.org"); |
| 162 host_content_settings_map->SetContentSetting( | 165 host_content_settings_map->SetContentSetting( |
| 163 pattern2, | 166 pattern2, |
| 164 ContentSettingsPattern::Wildcard(), | 167 ContentSettingsPattern::Wildcard(), |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 | 323 |
| 321 PrefService* prefs = profile.GetPrefs(); | 324 PrefService* prefs = profile.GetPrefs(); |
| 322 | 325 |
| 323 // Make a copy of the default pref value so we can reset it later. | 326 // Make a copy of the default pref value so we can reset it later. |
| 324 scoped_ptr<Value> default_value(prefs->FindPreference( | 327 scoped_ptr<Value> default_value(prefs->FindPreference( |
| 325 prefs::kDefaultContentSettings)->GetValue()->DeepCopy()); | 328 prefs::kDefaultContentSettings)->GetValue()->DeepCopy()); |
| 326 | 329 |
| 327 GURL host("http://example.com"); | 330 GURL host("http://example.com"); |
| 328 | 331 |
| 329 host_content_settings_map->SetDefaultContentSetting( | 332 host_content_settings_map->SetDefaultContentSetting( |
| 330 CONTENT_SETTINGS_TYPE_COOKIES, CONTENT_SETTING_BLOCK); | 333 CONTENT_SETTINGS_TYPE_IMAGES, CONTENT_SETTING_BLOCK); |
| 331 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 334 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 332 host_content_settings_map->GetCookieContentSetting( | 335 host_content_settings_map->GetContentSetting( |
| 333 host, host, true)); | 336 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); |
| 334 | 337 |
| 335 // Make a copy of the pref's new value so we can reset it later. | 338 // Make a copy of the pref's new value so we can reset it later. |
| 336 scoped_ptr<Value> new_value(prefs->FindPreference( | 339 scoped_ptr<Value> new_value(prefs->FindPreference( |
| 337 prefs::kDefaultContentSettings)->GetValue()->DeepCopy()); | 340 prefs::kDefaultContentSettings)->GetValue()->DeepCopy()); |
| 338 | 341 |
| 339 // Clearing the backing pref should also clear the internal cache. | 342 // Clearing the backing pref should also clear the internal cache. |
| 340 prefs->Set(prefs::kDefaultContentSettings, *default_value); | 343 prefs->Set(prefs::kDefaultContentSettings, *default_value); |
| 341 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 344 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 342 host_content_settings_map->GetCookieContentSetting( | 345 host_content_settings_map->GetContentSetting( |
| 343 host, host, true)); | 346 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); |
| 344 | 347 |
| 345 // Reseting the pref to its previous value should update the cache. | 348 // Reseting the pref to its previous value should update the cache. |
| 346 prefs->Set(prefs::kDefaultContentSettings, *new_value); | 349 prefs->Set(prefs::kDefaultContentSettings, *new_value); |
| 347 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 350 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 348 host_content_settings_map->GetCookieContentSetting( | 351 host_content_settings_map->GetContentSetting( |
| 349 host, host, true)); | 352 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); |
| 350 } | 353 } |
| 351 | 354 |
| 352 TEST_F(HostContentSettingsMapTest, ObserveExceptionPref) { | 355 TEST_F(HostContentSettingsMapTest, ObserveExceptionPref) { |
| 353 TestingProfile profile; | 356 TestingProfile profile; |
| 354 HostContentSettingsMap* host_content_settings_map = | 357 HostContentSettingsMap* host_content_settings_map = |
| 355 profile.GetHostContentSettingsMap(); | 358 profile.GetHostContentSettingsMap(); |
| 356 | 359 |
| 357 PrefService* prefs = profile.GetPrefs(); | 360 PrefService* prefs = profile.GetPrefs(); |
| 358 | 361 |
| 359 // Make a copy of the default pref value so we can reset it later. | 362 // Make a copy of the default pref value so we can reset it later. |
| 360 scoped_ptr<Value> default_value(prefs->FindPreference( | 363 scoped_ptr<Value> default_value(prefs->FindPreference( |
| 361 prefs::kContentSettingsPatternPairs)->GetValue()->DeepCopy()); | 364 prefs::kContentSettingsPatternPairs)->GetValue()->DeepCopy()); |
| 362 | 365 |
| 363 ContentSettingsPattern pattern = | 366 ContentSettingsPattern pattern = |
| 364 ContentSettingsPattern::FromString("[*.]example.com"); | 367 ContentSettingsPattern::FromString("[*.]example.com"); |
| 365 GURL host("http://example.com"); | 368 GURL host("http://example.com"); |
| 366 | 369 |
| 367 host_content_settings_map->SetContentSetting( | 370 host_content_settings_map->SetContentSetting( |
| 368 pattern, | 371 pattern, |
| 369 ContentSettingsPattern::Wildcard(), | 372 ContentSettingsPattern::Wildcard(), |
| 370 CONTENT_SETTINGS_TYPE_COOKIES, | 373 CONTENT_SETTINGS_TYPE_IMAGES, |
| 371 std::string(), | 374 std::string(), |
| 372 CONTENT_SETTING_BLOCK); | 375 CONTENT_SETTING_BLOCK); |
| 376 |
| 373 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 377 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 374 host_content_settings_map->GetCookieContentSetting( | 378 host_content_settings_map->GetContentSetting( |
| 375 host, host, true)); | 379 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); |
| 376 | 380 |
| 377 // Make a copy of the pref's new value so we can reset it later. | 381 // Make a copy of the pref's new value so we can reset it later. |
| 378 scoped_ptr<Value> new_value(prefs->FindPreference( | 382 scoped_ptr<Value> new_value(prefs->FindPreference( |
| 379 prefs::kContentSettingsPatternPairs)->GetValue()->DeepCopy()); | 383 prefs::kContentSettingsPatternPairs)->GetValue()->DeepCopy()); |
| 380 | 384 |
| 381 // Clearing the backing pref should also clear the internal cache. | 385 // Clearing the backing pref should also clear the internal cache. |
| 382 prefs->Set(prefs::kContentSettingsPatternPairs, *default_value); | 386 prefs->Set(prefs::kContentSettingsPatternPairs, *default_value); |
| 383 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 387 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 384 host_content_settings_map->GetCookieContentSetting( | 388 host_content_settings_map->GetContentSetting( |
| 385 host, host, true)); | 389 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); |
| 386 | 390 |
| 387 // Reseting the pref to its previous value should update the cache. | 391 // Reseting the pref to its previous value should update the cache. |
| 388 prefs->Set(prefs::kContentSettingsPatternPairs, *new_value); | 392 prefs->Set(prefs::kContentSettingsPatternPairs, *new_value); |
| 389 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 393 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 390 host_content_settings_map->GetCookieContentSetting( | 394 host_content_settings_map->GetContentSetting( |
| 391 host, host, true)); | 395 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); |
| 392 } | 396 } |
| 393 | 397 |
| 394 TEST_F(HostContentSettingsMapTest, HostTrimEndingDotCheck) { | 398 TEST_F(HostContentSettingsMapTest, HostTrimEndingDotCheck) { |
| 395 TestingProfile profile; | 399 TestingProfile profile; |
| 396 HostContentSettingsMap* host_content_settings_map = | 400 HostContentSettingsMap* host_content_settings_map = |
| 397 profile.GetHostContentSettingsMap(); | 401 profile.GetHostContentSettingsMap(); |
| 402 CookieSettings* cookie_settings = |
| 403 host_content_settings_map->GetCookieSettings(); |
| 398 | 404 |
| 399 ContentSettingsPattern pattern = | 405 ContentSettingsPattern pattern = |
| 400 ContentSettingsPattern::FromString("[*.]example.com"); | 406 ContentSettingsPattern::FromString("[*.]example.com"); |
| 401 GURL host_ending_with_dot("http://example.com./"); | 407 GURL host_ending_with_dot("http://example.com./"); |
| 402 | 408 |
| 403 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 409 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 404 host_content_settings_map->GetContentSetting( | 410 host_content_settings_map->GetContentSetting( |
| 405 host_ending_with_dot, | 411 host_ending_with_dot, |
| 406 host_ending_with_dot, | 412 host_ending_with_dot, |
| 407 CONTENT_SETTINGS_TYPE_IMAGES, | 413 CONTENT_SETTINGS_TYPE_IMAGES, |
| (...skipping 16 matching lines...) Expand all Loading... |
| 424 CONTENT_SETTINGS_TYPE_IMAGES, | 430 CONTENT_SETTINGS_TYPE_IMAGES, |
| 425 "", | 431 "", |
| 426 CONTENT_SETTING_BLOCK); | 432 CONTENT_SETTING_BLOCK); |
| 427 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 433 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 428 host_content_settings_map->GetContentSetting( | 434 host_content_settings_map->GetContentSetting( |
| 429 host_ending_with_dot, | 435 host_ending_with_dot, |
| 430 host_ending_with_dot, | 436 host_ending_with_dot, |
| 431 CONTENT_SETTINGS_TYPE_IMAGES, | 437 CONTENT_SETTINGS_TYPE_IMAGES, |
| 432 "")); | 438 "")); |
| 433 | 439 |
| 434 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 440 EXPECT_TRUE(cookie_settings->IsCookieAllowed( |
| 435 host_content_settings_map->GetCookieContentSetting( | 441 host_ending_with_dot, host_ending_with_dot, true)); |
| 436 host_ending_with_dot, host_ending_with_dot, true)); | |
| 437 host_content_settings_map->SetContentSetting( | 442 host_content_settings_map->SetContentSetting( |
| 438 pattern, | 443 pattern, |
| 439 ContentSettingsPattern::Wildcard(), | 444 ContentSettingsPattern::Wildcard(), |
| 440 CONTENT_SETTINGS_TYPE_COOKIES, | 445 CONTENT_SETTINGS_TYPE_COOKIES, |
| 441 "", | 446 "", |
| 442 CONTENT_SETTING_DEFAULT); | 447 CONTENT_SETTING_DEFAULT); |
| 443 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 448 EXPECT_TRUE(cookie_settings->IsCookieAllowed( |
| 444 host_content_settings_map->GetCookieContentSetting( | 449 host_ending_with_dot, host_ending_with_dot, true)); |
| 445 host_ending_with_dot, host_ending_with_dot, true)); | |
| 446 host_content_settings_map->SetContentSetting( | 450 host_content_settings_map->SetContentSetting( |
| 447 pattern, | 451 pattern, |
| 448 ContentSettingsPattern::Wildcard(), | 452 ContentSettingsPattern::Wildcard(), |
| 449 CONTENT_SETTINGS_TYPE_COOKIES, | 453 CONTENT_SETTINGS_TYPE_COOKIES, |
| 450 "", | 454 "", |
| 451 CONTENT_SETTING_BLOCK); | 455 CONTENT_SETTING_BLOCK); |
| 452 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 456 EXPECT_FALSE(cookie_settings->IsCookieAllowed( |
| 453 host_content_settings_map->GetCookieContentSetting( | 457 host_ending_with_dot, host_ending_with_dot, true)); |
| 454 host_ending_with_dot, host_ending_with_dot, true)); | |
| 455 | 458 |
| 456 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 459 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 457 host_content_settings_map->GetContentSetting( | 460 host_content_settings_map->GetContentSetting( |
| 458 host_ending_with_dot, | 461 host_ending_with_dot, |
| 459 host_ending_with_dot, | 462 host_ending_with_dot, |
| 460 CONTENT_SETTINGS_TYPE_JAVASCRIPT, | 463 CONTENT_SETTINGS_TYPE_JAVASCRIPT, |
| 461 "")); | 464 "")); |
| 462 host_content_settings_map->SetContentSetting( | 465 host_content_settings_map->SetContentSetting( |
| 463 pattern, | 466 pattern, |
| 464 ContentSettingsPattern::Wildcard(), | 467 ContentSettingsPattern::Wildcard(), |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 593 desired_settings.settings[CONTENT_SETTINGS_TYPE_PLUGINS] = | 596 desired_settings.settings[CONTENT_SETTINGS_TYPE_PLUGINS] = |
| 594 CONTENT_SETTING_BLOCK; | 597 CONTENT_SETTING_BLOCK; |
| 595 desired_settings.settings[CONTENT_SETTINGS_TYPE_POPUPS] = | 598 desired_settings.settings[CONTENT_SETTINGS_TYPE_POPUPS] = |
| 596 CONTENT_SETTING_BLOCK; | 599 CONTENT_SETTING_BLOCK; |
| 597 desired_settings.settings[CONTENT_SETTINGS_TYPE_GEOLOCATION] = | 600 desired_settings.settings[CONTENT_SETTINGS_TYPE_GEOLOCATION] = |
| 598 CONTENT_SETTING_ASK; | 601 CONTENT_SETTING_ASK; |
| 599 desired_settings.settings[CONTENT_SETTINGS_TYPE_NOTIFICATIONS] = | 602 desired_settings.settings[CONTENT_SETTINGS_TYPE_NOTIFICATIONS] = |
| 600 CONTENT_SETTING_ASK; | 603 CONTENT_SETTING_ASK; |
| 601 desired_settings.settings[CONTENT_SETTINGS_TYPE_INTENTS] = | 604 desired_settings.settings[CONTENT_SETTINGS_TYPE_INTENTS] = |
| 602 CONTENT_SETTING_ASK; | 605 CONTENT_SETTING_ASK; |
| 606 desired_settings.settings[CONTENT_SETTINGS_TYPE_COOKIES_SESSION_ONLY] = |
| 607 CONTENT_SETTING_ALLOW; |
| 603 ContentSettings settings = | 608 ContentSettings settings = |
| 604 host_content_settings_map->GetContentSettings(host, host); | 609 host_content_settings_map->GetContentSettings(host, host); |
| 605 EXPECT_TRUE(SettingsEqual(desired_settings, settings)); | 610 EXPECT_TRUE(SettingsEqual(desired_settings, settings)); |
| 606 EXPECT_EQ(desired_settings.settings[CONTENT_SETTINGS_TYPE_COOKIES], | 611 EXPECT_EQ(desired_settings.settings[CONTENT_SETTINGS_TYPE_COOKIES], |
| 607 settings.settings[CONTENT_SETTINGS_TYPE_COOKIES]); | 612 settings.settings[CONTENT_SETTINGS_TYPE_COOKIES]); |
| 608 EXPECT_EQ(desired_settings.settings[CONTENT_SETTINGS_TYPE_IMAGES], | 613 EXPECT_EQ(desired_settings.settings[CONTENT_SETTINGS_TYPE_IMAGES], |
| 609 settings.settings[CONTENT_SETTINGS_TYPE_IMAGES]); | 614 settings.settings[CONTENT_SETTINGS_TYPE_IMAGES]); |
| 610 EXPECT_EQ(desired_settings.settings[CONTENT_SETTINGS_TYPE_PLUGINS], | 615 EXPECT_EQ(desired_settings.settings[CONTENT_SETTINGS_TYPE_PLUGINS], |
| 611 settings.settings[CONTENT_SETTINGS_TYPE_PLUGINS]); | 616 settings.settings[CONTENT_SETTINGS_TYPE_PLUGINS]); |
| 612 EXPECT_EQ(desired_settings.settings[CONTENT_SETTINGS_TYPE_POPUPS], | 617 EXPECT_EQ(desired_settings.settings[CONTENT_SETTINGS_TYPE_POPUPS], |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 663 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 668 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 664 host_content_settings_map->GetContentSetting( | 669 host_content_settings_map->GetContentSetting( |
| 665 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); | 670 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); |
| 666 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 671 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 667 otr_map->GetContentSetting( | 672 otr_map->GetContentSetting( |
| 668 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); | 673 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); |
| 669 | 674 |
| 670 otr_map->ShutdownOnUIThread(); | 675 otr_map->ShutdownOnUIThread(); |
| 671 } | 676 } |
| 672 | 677 |
| 673 TEST_F(HostContentSettingsMapTest, MigrateObsoletePrefs) { | 678 TEST_F(HostContentSettingsMapTest, MigrateObsoletePopupPrefs) { |
| 674 // This feature is currently behind a flag. | 679 // This feature is currently behind a flag. |
| 675 CommandLine* cmd = CommandLine::ForCurrentProcess(); | 680 CommandLine* cmd = CommandLine::ForCurrentProcess(); |
| 676 AutoReset<CommandLine> auto_reset(cmd, *cmd); | 681 AutoReset<CommandLine> auto_reset(cmd, *cmd); |
| 677 cmd->AppendSwitch(switches::kEnableResourceContentSettings); | 682 cmd->AppendSwitch(switches::kEnableResourceContentSettings); |
| 678 | 683 |
| 679 TestingProfile profile; | 684 TestingProfile profile; |
| 680 PrefService* prefs = profile.GetPrefs(); | 685 PrefService* prefs = profile.GetPrefs(); |
| 681 | 686 |
| 682 // Set obsolete data. | 687 // Set obsolete data. |
| 683 prefs->SetInteger(prefs::kCookieBehavior, | |
| 684 net::StaticCookiePolicy::BLOCK_ALL_COOKIES); | |
| 685 | |
| 686 ListValue popup_hosts; | 688 ListValue popup_hosts; |
| 687 popup_hosts.Append(new StringValue("[*.]example.com")); | 689 popup_hosts.Append(new StringValue("[*.]example.com")); |
| 688 prefs->Set(prefs::kPopupWhitelistedHosts, popup_hosts); | 690 prefs->Set(prefs::kPopupWhitelistedHosts, popup_hosts); |
| 689 | 691 |
| 690 HostContentSettingsMap* host_content_settings_map = | 692 HostContentSettingsMap* host_content_settings_map = |
| 691 profile.GetHostContentSettingsMap(); | 693 profile.GetHostContentSettingsMap(); |
| 692 | 694 |
| 693 EXPECT_EQ(CONTENT_SETTING_BLOCK, | |
| 694 host_content_settings_map->GetDefaultContentSetting( | |
| 695 CONTENT_SETTINGS_TYPE_COOKIES)); | |
| 696 | |
| 697 GURL host("http://example.com"); | 695 GURL host("http://example.com"); |
| 698 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 696 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 699 host_content_settings_map->GetContentSetting( | 697 host_content_settings_map->GetContentSetting( |
| 700 host, host, CONTENT_SETTINGS_TYPE_POPUPS, "")); | 698 host, host, CONTENT_SETTINGS_TYPE_POPUPS, "")); |
| 701 } | 699 } |
| 702 | 700 |
| 703 TEST_F(HostContentSettingsMapTest, MigrateObsoleteNotificationsPrefs) { | 701 TEST_F(HostContentSettingsMapTest, MigrateObsoleteNotificationsPrefs) { |
| 704 TestingProfile profile; | 702 TestingProfile profile; |
| 705 PrefService* prefs = profile.GetPrefs(); | 703 PrefService* prefs = profile.GetPrefs(); |
| 706 | 704 |
| (...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1071 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 1069 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 1072 host_content_settings_map->GetDefaultContentSetting( | 1070 host_content_settings_map->GetDefaultContentSetting( |
| 1073 CONTENT_SETTINGS_TYPE_PLUGINS)); | 1071 CONTENT_SETTINGS_TYPE_PLUGINS)); |
| 1074 | 1072 |
| 1075 prefs->RemoveManagedPref(prefs::kManagedDefaultPluginsSetting); | 1073 prefs->RemoveManagedPref(prefs::kManagedDefaultPluginsSetting); |
| 1076 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 1074 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 1077 host_content_settings_map->GetDefaultContentSetting( | 1075 host_content_settings_map->GetDefaultContentSetting( |
| 1078 CONTENT_SETTINGS_TYPE_PLUGINS)); | 1076 CONTENT_SETTINGS_TYPE_PLUGINS)); |
| 1079 } | 1077 } |
| 1080 | 1078 |
| 1081 // Tests for cookie content settings. | |
| 1082 const GURL kBlockedSite = GURL("http://ads.thirdparty.com"); | |
| 1083 const GURL kAllowedSite = GURL("http://good.allays.com"); | |
| 1084 const GURL kFirstPartySite = GURL("http://cool.things.com"); | |
| 1085 const GURL kExtensionURL = GURL("chrome-extension://deadbeef"); | |
| 1086 | |
| 1087 TEST_F(HostContentSettingsMapTest, CookiesBlockSingle) { | |
| 1088 TestingProfile profile; | |
| 1089 HostContentSettingsMap* host_content_settings_map = | |
| 1090 profile.GetHostContentSettingsMap(); | |
| 1091 host_content_settings_map->AddExceptionForURL( | |
| 1092 kBlockedSite, | |
| 1093 kBlockedSite, | |
| 1094 CONTENT_SETTINGS_TYPE_COOKIES, | |
| 1095 "", | |
| 1096 CONTENT_SETTING_BLOCK); | |
| 1097 EXPECT_EQ(CONTENT_SETTING_BLOCK, | |
| 1098 host_content_settings_map->GetCookieContentSetting( | |
| 1099 kBlockedSite, kBlockedSite, false)); | |
| 1100 } | |
| 1101 | |
| 1102 TEST_F(HostContentSettingsMapTest, CookiesBlockThirdParty) { | |
| 1103 TestingProfile profile; | |
| 1104 HostContentSettingsMap* host_content_settings_map = | |
| 1105 profile.GetHostContentSettingsMap(); | |
| 1106 host_content_settings_map->SetBlockThirdPartyCookies(true); | |
| 1107 EXPECT_EQ(CONTENT_SETTING_ALLOW, | |
| 1108 host_content_settings_map->GetCookieContentSetting( | |
| 1109 kBlockedSite, kFirstPartySite, false)); | |
| 1110 EXPECT_EQ(CONTENT_SETTING_BLOCK, | |
| 1111 host_content_settings_map->GetCookieContentSetting( | |
| 1112 kBlockedSite, kFirstPartySite, true)); | |
| 1113 | |
| 1114 CommandLine* cmd = CommandLine::ForCurrentProcess(); | |
| 1115 AutoReset<CommandLine> auto_reset(cmd, *cmd); | |
| 1116 cmd->AppendSwitch(switches::kBlockReadingThirdPartyCookies); | |
| 1117 | |
| 1118 EXPECT_EQ(CONTENT_SETTING_BLOCK, | |
| 1119 host_content_settings_map->GetCookieContentSetting( | |
| 1120 kBlockedSite, kFirstPartySite, false)); | |
| 1121 EXPECT_EQ(CONTENT_SETTING_BLOCK, | |
| 1122 host_content_settings_map->GetCookieContentSetting( | |
| 1123 kBlockedSite, kFirstPartySite, true)); | |
| 1124 } | |
| 1125 | |
| 1126 TEST_F(HostContentSettingsMapTest, CookiesAllowThirdParty) { | |
| 1127 TestingProfile profile; | |
| 1128 HostContentSettingsMap* host_content_settings_map = | |
| 1129 profile.GetHostContentSettingsMap(); | |
| 1130 EXPECT_EQ(CONTENT_SETTING_ALLOW, | |
| 1131 host_content_settings_map->GetCookieContentSetting( | |
| 1132 kBlockedSite, kFirstPartySite, false)); | |
| 1133 EXPECT_EQ(CONTENT_SETTING_ALLOW, | |
| 1134 host_content_settings_map->GetCookieContentSetting( | |
| 1135 kBlockedSite, kFirstPartySite, true)); | |
| 1136 } | |
| 1137 | |
| 1138 TEST_F(HostContentSettingsMapTest, CookiesExplicitBlockSingleThirdParty) { | |
| 1139 TestingProfile profile; | |
| 1140 HostContentSettingsMap* host_content_settings_map = | |
| 1141 profile.GetHostContentSettingsMap(); | |
| 1142 host_content_settings_map->AddExceptionForURL( | |
| 1143 kBlockedSite, kBlockedSite, CONTENT_SETTINGS_TYPE_COOKIES, "", | |
| 1144 CONTENT_SETTING_BLOCK); | |
| 1145 EXPECT_EQ(CONTENT_SETTING_BLOCK, | |
| 1146 host_content_settings_map->GetCookieContentSetting( | |
| 1147 kBlockedSite, kFirstPartySite, false)); | |
| 1148 EXPECT_EQ(CONTENT_SETTING_BLOCK, | |
| 1149 host_content_settings_map->GetCookieContentSetting( | |
| 1150 kBlockedSite, kFirstPartySite, true)); | |
| 1151 EXPECT_EQ(CONTENT_SETTING_ALLOW, | |
| 1152 host_content_settings_map->GetCookieContentSetting( | |
| 1153 kAllowedSite, kFirstPartySite, true)); | |
| 1154 } | |
| 1155 | |
| 1156 TEST_F(HostContentSettingsMapTest, CookiesExplicitSessionOnly) { | |
| 1157 TestingProfile profile; | |
| 1158 HostContentSettingsMap* host_content_settings_map = | |
| 1159 profile.GetHostContentSettingsMap(); | |
| 1160 host_content_settings_map->AddExceptionForURL( | |
| 1161 kBlockedSite, kBlockedSite, CONTENT_SETTINGS_TYPE_COOKIES, "", | |
| 1162 CONTENT_SETTING_SESSION_ONLY); | |
| 1163 EXPECT_EQ(CONTENT_SETTING_SESSION_ONLY, | |
| 1164 host_content_settings_map->GetCookieContentSetting( | |
| 1165 kBlockedSite, kFirstPartySite, false)); | |
| 1166 EXPECT_EQ(CONTENT_SETTING_SESSION_ONLY, | |
| 1167 host_content_settings_map->GetCookieContentSetting( | |
| 1168 kBlockedSite, kFirstPartySite, true)); | |
| 1169 | |
| 1170 host_content_settings_map->SetBlockThirdPartyCookies(true); | |
| 1171 EXPECT_EQ(CONTENT_SETTING_SESSION_ONLY, | |
| 1172 host_content_settings_map->GetCookieContentSetting( | |
| 1173 kBlockedSite, kFirstPartySite, false)); | |
| 1174 EXPECT_EQ(CONTENT_SETTING_SESSION_ONLY, | |
| 1175 host_content_settings_map->GetCookieContentSetting( | |
| 1176 kBlockedSite, kFirstPartySite, true)); | |
| 1177 } | |
| 1178 | |
| 1179 TEST_F(HostContentSettingsMapTest, CookiesThirdPartyBlockedExplicitAllow) { | |
| 1180 TestingProfile profile; | |
| 1181 HostContentSettingsMap* host_content_settings_map = | |
| 1182 profile.GetHostContentSettingsMap(); | |
| 1183 host_content_settings_map->AddExceptionForURL( | |
| 1184 kAllowedSite, kAllowedSite, CONTENT_SETTINGS_TYPE_COOKIES, "", | |
| 1185 CONTENT_SETTING_ALLOW); | |
| 1186 host_content_settings_map->SetBlockThirdPartyCookies(true); | |
| 1187 EXPECT_EQ(CONTENT_SETTING_ALLOW, | |
| 1188 host_content_settings_map->GetCookieContentSetting( | |
| 1189 kAllowedSite, kFirstPartySite, false)); | |
| 1190 EXPECT_EQ(CONTENT_SETTING_ALLOW, | |
| 1191 host_content_settings_map->GetCookieContentSetting( | |
| 1192 kAllowedSite, kFirstPartySite, true)); | |
| 1193 | |
| 1194 // Extensions should always be allowed to use cookies. | |
| 1195 EXPECT_EQ(CONTENT_SETTING_ALLOW, | |
| 1196 host_content_settings_map->GetCookieContentSetting( | |
| 1197 kAllowedSite, kExtensionURL, false)); | |
| 1198 EXPECT_EQ(CONTENT_SETTING_ALLOW, | |
| 1199 host_content_settings_map->GetCookieContentSetting( | |
| 1200 kAllowedSite, kExtensionURL, true)); | |
| 1201 | |
| 1202 CommandLine* cmd = CommandLine::ForCurrentProcess(); | |
| 1203 AutoReset<CommandLine> auto_reset(cmd, *cmd); | |
| 1204 cmd->AppendSwitch(switches::kBlockReadingThirdPartyCookies); | |
| 1205 | |
| 1206 EXPECT_EQ(CONTENT_SETTING_ALLOW, | |
| 1207 host_content_settings_map->GetCookieContentSetting( | |
| 1208 kAllowedSite, kFirstPartySite, false)); | |
| 1209 | |
| 1210 // Extensions should always be allowed to use cookies. | |
| 1211 EXPECT_EQ(CONTENT_SETTING_ALLOW, | |
| 1212 host_content_settings_map->GetCookieContentSetting( | |
| 1213 kAllowedSite, kExtensionURL, false)); | |
| 1214 EXPECT_EQ(CONTENT_SETTING_ALLOW, | |
| 1215 host_content_settings_map->GetCookieContentSetting( | |
| 1216 kAllowedSite, kExtensionURL, true)); | |
| 1217 } | |
| 1218 | |
| 1219 TEST_F(HostContentSettingsMapTest, CookiesBlockEverything) { | |
| 1220 TestingProfile profile; | |
| 1221 HostContentSettingsMap* host_content_settings_map = | |
| 1222 profile.GetHostContentSettingsMap(); | |
| 1223 host_content_settings_map->SetDefaultContentSetting( | |
| 1224 CONTENT_SETTINGS_TYPE_COOKIES, CONTENT_SETTING_BLOCK); | |
| 1225 | |
| 1226 EXPECT_EQ(CONTENT_SETTING_BLOCK, | |
| 1227 host_content_settings_map->GetCookieContentSetting( | |
| 1228 kFirstPartySite, kFirstPartySite, false)); | |
| 1229 EXPECT_EQ(CONTENT_SETTING_BLOCK, | |
| 1230 host_content_settings_map->GetCookieContentSetting( | |
| 1231 kFirstPartySite, kFirstPartySite, true)); | |
| 1232 EXPECT_EQ(CONTENT_SETTING_BLOCK, | |
| 1233 host_content_settings_map->GetCookieContentSetting( | |
| 1234 kAllowedSite, kFirstPartySite, true)); | |
| 1235 } | |
| 1236 | |
| 1237 TEST_F(HostContentSettingsMapTest, CookiesBlockEverythingExceptAllowed) { | |
| 1238 TestingProfile profile; | |
| 1239 HostContentSettingsMap* host_content_settings_map = | |
| 1240 profile.GetHostContentSettingsMap(); | |
| 1241 host_content_settings_map->SetDefaultContentSetting( | |
| 1242 CONTENT_SETTINGS_TYPE_COOKIES, CONTENT_SETTING_BLOCK); | |
| 1243 host_content_settings_map->AddExceptionForURL( | |
| 1244 kAllowedSite, kAllowedSite, CONTENT_SETTINGS_TYPE_COOKIES, "", | |
| 1245 CONTENT_SETTING_ALLOW); | |
| 1246 | |
| 1247 EXPECT_EQ(CONTENT_SETTING_BLOCK, | |
| 1248 host_content_settings_map->GetCookieContentSetting( | |
| 1249 kFirstPartySite, kFirstPartySite, false)); | |
| 1250 EXPECT_EQ(CONTENT_SETTING_BLOCK, | |
| 1251 host_content_settings_map->GetCookieContentSetting( | |
| 1252 kFirstPartySite, kFirstPartySite, true)); | |
| 1253 EXPECT_EQ(CONTENT_SETTING_ALLOW, | |
| 1254 host_content_settings_map->GetCookieContentSetting( | |
| 1255 kAllowedSite, kFirstPartySite, false)); | |
| 1256 EXPECT_EQ(CONTENT_SETTING_ALLOW, | |
| 1257 host_content_settings_map->GetCookieContentSetting( | |
| 1258 kAllowedSite, kFirstPartySite, true)); | |
| 1259 EXPECT_EQ(CONTENT_SETTING_ALLOW, | |
| 1260 host_content_settings_map->GetCookieContentSetting( | |
| 1261 kAllowedSite, kAllowedSite, false)); | |
| 1262 EXPECT_EQ(CONTENT_SETTING_ALLOW, | |
| 1263 host_content_settings_map->GetCookieContentSetting( | |
| 1264 kAllowedSite, kAllowedSite, true)); | |
| 1265 } | |
| 1266 | |
| 1267 } // namespace | 1079 } // namespace |
| OLD | NEW |