summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authormarkusheintz@chromium.org <markusheintz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-30 10:46:02 +0000
committermarkusheintz@chromium.org <markusheintz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-30 10:46:02 +0000
commit7f4a91ed66f5be7c48f28fe7e9da440de4dba288 (patch)
treeb85b6d0aa4d22fbcb4c73eece34ad100b2e3670b /chrome/browser
parent70934f6030dc01fd718ab1fcfa056f402c59fce8 (diff)
downloadchromium_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.cc9
-rw-r--r--chrome/browser/host_content_settings_map_unittest.cc31
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