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 6ef0239cccb81f8c07f55017bdbd8b8a0da91012..413649d59178485dd7e21867ede7e297de9d55be 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/content_settings/content_settings_details.h" |
#include "chrome/browser/content_settings/content_settings_pattern.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" |
@@ -61,6 +62,7 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { |
{CONTENT_SETTINGS_TYPE_GEOLOCATION, "location"}, |
{CONTENT_SETTINGS_TYPE_NOTIFICATIONS, "notifications"}, |
{CONTENT_SETTINGS_TYPE_INTENTS, "intents"}, |
+ {CONTENT_SETTINGS_TYPE_COOKIES_SESSION_ONLY, "cookies-session-only"}, |
Bernhard Bauer
2011/08/28 19:18:49
This seems weird, as this content type isn't expos
marja
2011/08/30 10:10:38
What breaks if that is simply removed: ContentSett
Bernhard Bauer
2011/08/30 11:03:12
Ah, I missed |ContentSettingsTypeToGroupName| belo
markusheintz_
2011/08/30 11:49:34
How about providing a method that converts a Conte
|
}; |
ContentSettingsType ContentSettingsTypeFromGroupName(const std::string& name) { |
@@ -607,6 +609,10 @@ void ContentSettingsHandler::SetContentFilter(const ListValue* args) { |
Profile* profile = Profile::FromWebUI(web_ui_); |
DesktopNotificationServiceFactory::GetForProfile(profile)-> |
SetDefaultContentSetting(default_setting); |
+ } else if (content_type == CONTENT_SETTINGS_TYPE_COOKIES) { |
+ GetContentSettingsMap()->GetCookieSettings()->SetDefaultSetting( |
+ default_setting); |
+ |
} else { |
GetContentSettingsMap()-> |
SetDefaultContentSetting(content_type, default_setting); |
@@ -662,15 +668,24 @@ void ContentSettingsHandler::RemoveException(const ListValue* args) { |
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) { |
+ settings_map->GetCookieSettings()->ResetCookieAllowed( |
+ ContentSettingsPattern::FromString(pattern), |
+ ContentSettingsPattern::Wildcard()); |
+ settings_map->GetCookieSettings()->ResetCookieSessionOnly( |
+ ContentSettingsPattern::FromString(pattern)); |
+ } else { |
+ settings_map->SetContentSetting( |
+ ContentSettingsPattern::FromString(pattern), |
+ ContentSettingsPattern::Wildcard(), |
+ ContentSettingsTypeFromGroupName(type_string), |
+ "", |
+ CONTENT_SETTING_DEFAULT); |
+ } |
} |
} |
} |
@@ -696,16 +711,29 @@ void ContentSettingsHandler::SetException(const ListValue* args) { |
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) |
return; |
- settings_map->SetContentSetting(ContentSettingsPattern::FromString(pattern), |
- ContentSettingsPattern::Wildcard(), |
- type, |
- "", |
- ContentSettingFromString(setting)); |
+ |
+ if (type == CONTENT_SETTINGS_TYPE_COOKIES) { |
+ ContentSetting content_setting = ContentSettingFromString(setting); |
+ CookieSettings* cookie_settings = settings_map->GetCookieSettings(); |
+ bool allow = (content_setting == CONTENT_SETTING_ALLOW || |
+ content_setting == CONTENT_SETTING_SESSION_ONLY); |
+ bool session_only = (content_setting == CONTENT_SETTING_SESSION_ONLY); |
+ cookie_settings->SetCookieAllowed( |
+ ContentSettingsPattern::FromString(pattern), |
+ ContentSettingsPattern::Wildcard(), allow); |
+ cookie_settings->SetCookieSessionOnly( |
+ ContentSettingsPattern::FromString(pattern), session_only); |
Bernhard Bauer
2011/08/28 19:18:49
Maybe we could add a convenience method for this t
marja
2011/09/01 11:03:19
Now there is CookieSettings::SetCookieSetting, whi
Bernhard Bauer
2011/09/01 11:41:54
Nice, thank you!
|
+ } else { |
+ settings_map->SetContentSetting(ContentSettingsPattern::FromString(pattern), |
+ ContentSettingsPattern::Wildcard(), |
+ type, |
+ "", |
+ ContentSettingFromString(setting)); |
+ } |
} |
void ContentSettingsHandler::CheckExceptionPatternValidity( |