diff options
author | markusheintz@chromium.org <markusheintz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-30 10:46:02 +0000 |
---|---|---|
committer | markusheintz@chromium.org <markusheintz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-30 10:46:02 +0000 |
commit | 7f4a91ed66f5be7c48f28fe7e9da440de4dba288 (patch) | |
tree | b85b6d0aa4d22fbcb4c73eece34ad100b2e3670b /chrome/browser | |
parent | 70934f6030dc01fd718ab1fcfa056f402c59fce8 (diff) | |
download | chromium_src-7f4a91ed66f5be7c48f28fe7e9da440de4dba288.zip chromium_src-7f4a91ed66f5be7c48f28fe7e9da440de4dba288.tar.gz chromium_src-7f4a91ed66f5be7c48f28fe7e9da440de4dba288.tar.bz2 |
Don't reset BlockThirdPartyCookies to it's default value if the preference it managed.
BUG=64460
TEST=host_content_settings_map_unittest.cc
Review URL: http://codereview.chromium.org/5355005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@67705 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/host_content_settings_map.cc | 9 | ||||
-rw-r--r-- | chrome/browser/host_content_settings_map_unittest.cc | 31 |
2 files changed, 39 insertions, 1 deletions
diff --git a/chrome/browser/host_content_settings_map.cc b/chrome/browser/host_content_settings_map.cc index 9371139..8605f2e 100644 --- a/chrome/browser/host_content_settings_map.cc +++ b/chrome/browser/host_content_settings_map.cc @@ -799,9 +799,13 @@ void HostContentSettingsMap::ResetToDefaults() { AutoLock auto_lock(lock_); default_content_settings_ = ContentSettings(); ForceDefaultsToBeExplicit(); + // Clear all content settings map except the + // managed_default_content_settings. host_content_settings_.clear(); off_the_record_settings_.clear(); - block_third_party_cookies_ = false; + // Don't reset block third party cookies if they are managed. + if (!IsBlockThirdPartyCookiesManaged()) + block_third_party_cookies_ = false; block_nonsandboxed_plugins_ = false; } @@ -810,6 +814,9 @@ void HostContentSettingsMap::ResetToDefaults() { updating_preferences_ = true; prefs->ClearPref(prefs::kDefaultContentSettings); prefs->ClearPref(prefs::kContentSettingsPatterns); + // If the block third party cookies preference is managed we still must + // clear it in order to restore the default value for later when the + // preference is not managed anymore. prefs->ClearPref(prefs::kBlockThirdPartyCookies); prefs->ClearPref(prefs::kBlockNonsandboxedPlugins); updating_preferences_ = false; diff --git a/chrome/browser/host_content_settings_map_unittest.cc b/chrome/browser/host_content_settings_map_unittest.cc index 1312d43..db1cf63 100644 --- a/chrome/browser/host_content_settings_map_unittest.cc +++ b/chrome/browser/host_content_settings_map_unittest.cc @@ -984,4 +984,35 @@ TEST_F(HostContentSettingsMapTest, SettingDefaultContentSettingsWhenManaged) { CONTENT_SETTINGS_TYPE_PLUGINS)); } +TEST_F(HostContentSettingsMapTest, ResetToDefaultsWhenManaged) { + TestingProfile profile; + HostContentSettingsMap* host_content_settings_map = + profile.GetHostContentSettingsMap(); + TestingPrefService* prefs = profile.GetTestingPrefService(); + + prefs->SetManagedPref(prefs::kBlockThirdPartyCookies, + Value::CreateBooleanValue(true)); + prefs->SetUserPref(prefs::kBlockThirdPartyCookies, + Value::CreateBooleanValue(true)); + + EXPECT_EQ(true, + host_content_settings_map->IsBlockThirdPartyCookiesManaged()); + EXPECT_EQ(true, host_content_settings_map->BlockThirdPartyCookies()); + + // Reset to the default value (false). + host_content_settings_map->ResetToDefaults(); + // Since the preference BlockThirdPartyCookies is managed the + // HostContentSettingsMap should still return the managed value which is true. + EXPECT_EQ(true, + host_content_settings_map->IsBlockThirdPartyCookiesManaged()); + EXPECT_EQ(true, host_content_settings_map->BlockThirdPartyCookies()); + + // After unsetting the managed value for the preference BlockThirdPartyCookies + // the default value should be returned now. + prefs->RemoveManagedPref(prefs::kBlockThirdPartyCookies); + EXPECT_EQ(false, + host_content_settings_map->IsBlockThirdPartyCookiesManaged()); + EXPECT_EQ(false, host_content_settings_map->BlockThirdPartyCookies()); +} + } // namespace |