Index: chrome/browser/ui/webui/options/content_settings_handler.cc |
diff --git a/chrome/browser/ui/webui/options/content_settings_handler.cc b/chrome/browser/ui/webui/options/content_settings_handler.cc |
index 3ccff84367d1599a95bd007ac12ec9bdeefd87e4..d00443826fce8eab440913872ad275f5492b9b87 100644 |
--- a/chrome/browser/ui/webui/options/content_settings_handler.cc |
+++ b/chrome/browser/ui/webui/options/content_settings_handler.cc |
@@ -16,6 +16,7 @@ |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/content_settings/content_settings_details.h" |
#include "chrome/browser/content_settings/content_settings_utils.h" |
+#include "chrome/browser/content_settings/cookie_settings.h" |
#include "chrome/browser/content_settings/host_content_settings_map.h" |
#include "chrome/browser/custom_handlers/protocol_handler_registry.h" |
#include "chrome/browser/notifications/desktop_notification_service.h" |
@@ -384,6 +385,9 @@ std::string ContentSettingsHandler::GetSettingDefaultFromModel( |
default_setting = |
DesktopNotificationServiceFactory::GetForProfile(profile)-> |
GetDefaultContentSetting(provider_id); |
+ } else if (type == CONTENT_SETTINGS_TYPE_COOKIES) { |
+ default_setting = CookieSettings::GetForProfile(profile)-> |
+ GetDefaultCookieSetting(provider_id); |
} else { |
default_setting = |
profile->GetHostContentSettingsMap()-> |
@@ -554,7 +558,10 @@ void ContentSettingsHandler::UpdateNotificationExceptionsView() { |
void ContentSettingsHandler::UpdateExceptionsViewFromHostContentSettingsMap( |
ContentSettingsType type) { |
HostContentSettingsMap::SettingsForOneType entries; |
- GetContentSettingsMap()->GetSettingsForOneType(type, "", &entries); |
+ if (type == CONTENT_SETTINGS_TYPE_COOKIES) |
+ GetCookieSettings()->GetCookieSettings(&entries); |
+ else |
+ GetContentSettingsMap()->GetSettingsForOneType(type, "", &entries); |
ListValue exceptions; |
for (size_t i = 0; i < entries.size(); ++i) { |
@@ -598,7 +605,14 @@ void ContentSettingsHandler::UpdateExceptionsViewFromOTRHostContentSettingsMap( |
return; |
HostContentSettingsMap::SettingsForOneType otr_entries; |
- otr_settings_map->GetSettingsForOneType(type, "", &otr_entries); |
+ if (type == CONTENT_SETTINGS_TYPE_COOKIES) { |
+ const CookieSettings* otr_cookie_settings = GetOTRCookieSettings(); |
+ if (!otr_cookie_settings) |
+ return; |
+ otr_cookie_settings->GetCookieSettings(&otr_entries); |
+ } else { |
+ otr_settings_map->GetSettingsForOneType(type, "", &otr_entries); |
+ } |
ListValue otr_exceptions; |
for (size_t i = 0; i < otr_entries.size(); ++i) { |
@@ -708,18 +722,31 @@ void ContentSettingsHandler::RemoveException(const ListValue* args) { |
rv = args->GetString(arg_i++, &pattern); |
DCHECK(rv); |
- HostContentSettingsMap* settings_map = |
- mode == "normal" ? GetContentSettingsMap() : |
- GetOTRContentSettingsMap(); |
- // The settings map could be null if the mode was OTR but the OTR profile |
- // got destroyed before we received this message. |
- if (settings_map) { |
- settings_map->SetContentSetting( |
- ContentSettingsPattern::FromString(pattern), |
- ContentSettingsPattern::Wildcard(), |
- ContentSettingsTypeFromGroupName(type_string), |
- "", |
- CONTENT_SETTING_DEFAULT); |
+ if (type == CONTENT_SETTINGS_TYPE_COOKIES) { |
+ CookieSettings* cookie_settings = |
+ mode == "normal" ? GetCookieSettings() : |
+ GetOTRCookieSettings(); |
+ // |cookie_settings| could be null if the mode was OTR but the OTR profile |
+ // got destroyed before we received this message. |
+ if (cookie_settings) { |
+ cookie_settings->ResetCookieSetting( |
+ ContentSettingsPattern::FromString(pattern), |
+ ContentSettingsPattern::Wildcard()); |
+ } |
+ } else { |
+ HostContentSettingsMap* settings_map = |
+ mode == "normal" ? GetContentSettingsMap() : |
+ GetOTRContentSettingsMap(); |
+ // |settings_map| could be null if the mode was OTR but the OTR profile |
+ // got destroyed before we received this message. |
+ if (settings_map) { |
+ settings_map->SetContentSetting( |
+ ContentSettingsPattern::FromString(pattern), |
+ ContentSettingsPattern::Wildcard(), |
+ ContentSettingsTypeFromGroupName(type_string), |
+ "", |
+ CONTENT_SETTING_DEFAULT); |
+ } |
} |
} |
} |
@@ -742,19 +769,34 @@ void ContentSettingsHandler::SetException(const ListValue* args) { |
return; |
} |
- HostContentSettingsMap* settings_map = |
- mode == "normal" ? GetContentSettingsMap() : |
- GetOTRContentSettingsMap(); |
+ if (type == CONTENT_SETTINGS_TYPE_COOKIES) { |
+ CookieSettings* cookie_settings = |
+ mode == "normal" ? GetCookieSettings() : |
+ GetOTRCookieSettings(); |
- // The settings map could be null if the mode was OTR but the OTR profile |
- // got destroyed before we received this message. |
- if (!settings_map) |
- return; |
- settings_map->SetContentSetting(ContentSettingsPattern::FromString(pattern), |
- ContentSettingsPattern::Wildcard(), |
- type, |
- "", |
- ContentSettingFromString(setting)); |
+ // |cookie_settings| could be null if the mode was OTR but the OTR profile |
+ // got destroyed before we received this message. |
+ if (!cookie_settings) |
+ return; |
+ cookie_settings->SetCookieSetting( |
+ ContentSettingsPattern::FromString(pattern), |
+ ContentSettingsPattern::Wildcard(), |
+ ContentSettingFromString(setting)); |
+ } else { |
+ HostContentSettingsMap* settings_map = |
+ mode == "normal" ? GetContentSettingsMap() : |
+ GetOTRContentSettingsMap(); |
+ |
+ // |settings_map| could be null if the mode was OTR but the OTR profile |
+ // got destroyed before we received this message. |
+ if (!settings_map) |
+ return; |
+ settings_map->SetContentSetting(ContentSettingsPattern::FromString(pattern), |
+ ContentSettingsPattern::Wildcard(), |
+ type, |
+ "", |
+ ContentSettingFromString(setting)); |
+ } |
} |
void ContentSettingsHandler::CheckExceptionPatternValidity( |
@@ -809,3 +851,14 @@ HostContentSettingsMap* |
return profile->GetOffTheRecordProfile()->GetHostContentSettingsMap(); |
return NULL; |
} |
+ |
+CookieSettings* ContentSettingsHandler::GetCookieSettings() { |
+ return CookieSettings::GetForProfile(Profile::FromWebUI(web_ui_)); |
+} |
+ |
+CookieSettings* ContentSettingsHandler::GetOTRCookieSettings() { |
+ Profile* profile = Profile::FromWebUI(web_ui_); |
+ if (profile->HasOffTheRecordProfile()) |
+ return CookieSettings::GetForProfile(profile->GetOffTheRecordProfile()); |
+ return NULL; |
+} |