diff options
Diffstat (limited to 'chrome/browser/cookie_modal_dialog.cc')
-rw-r--r-- | chrome/browser/cookie_modal_dialog.cc | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/chrome/browser/cookie_modal_dialog.cc b/chrome/browser/cookie_modal_dialog.cc index 579698e..a744fdf 100644 --- a/chrome/browser/cookie_modal_dialog.cc +++ b/chrome/browser/cookie_modal_dialog.cc @@ -14,10 +14,12 @@ // Cookies CookiePromptModalDialog::CookiePromptModalDialog( TabContents* tab_contents, + HostContentSettingsMap* host_content_settings_map, const GURL& origin, const std::string& cookie_line, CookiePromptModalDialogDelegate* delegate) : AppModalDialog(tab_contents, std::wstring()), + host_content_settings_map_(host_content_settings_map), dialog_type_(DIALOG_TYPE_COOKIE), origin_(origin), cookie_line_(cookie_line), @@ -27,11 +29,13 @@ CookiePromptModalDialog::CookiePromptModalDialog( // LocalStorage CookiePromptModalDialog::CookiePromptModalDialog( TabContents* tab_contents, + HostContentSettingsMap* host_content_settings_map, const GURL& origin, const string16& key, const string16& value, CookiePromptModalDialogDelegate* delegate) : AppModalDialog(tab_contents, std::wstring()), + host_content_settings_map_(host_content_settings_map), dialog_type_(DIALOG_TYPE_LOCAL_STORAGE), origin_(origin), local_storage_key_(key), @@ -42,25 +46,28 @@ CookiePromptModalDialog::CookiePromptModalDialog( // Database CookiePromptModalDialog::CookiePromptModalDialog( TabContents* tab_contents, + HostContentSettingsMap* host_content_settings_map, const GURL& origin, const string16& database_name, CookiePromptModalDialogDelegate* delegate) : AppModalDialog(tab_contents, std::wstring()), + host_content_settings_map_(host_content_settings_map), dialog_type_(DIALOG_TYPE_DATABASE), origin_(origin), database_name_(database_name), delegate_(delegate) { } +CookiePromptModalDialog::~CookiePromptModalDialog() { +} + bool CookiePromptModalDialog::IsValid() { - HostContentSettingsMap* host_content_settings_map = - tab_contents()->profile()->GetHostContentSettingsMap(); ContentSetting content_setting = - host_content_settings_map->GetContentSetting( - origin(), - CONTENT_SETTINGS_TYPE_COOKIES); + host_content_settings_map_->GetContentSetting( + origin_, CONTENT_SETTINGS_TYPE_COOKIES); if (content_setting != CONTENT_SETTING_ASK) { if (content_setting == CONTENT_SETTING_ALLOW) { + // If it's remembered as allow, then we assume session_expire is false. AllowSiteData(false, false); } else { DCHECK(content_setting == CONTENT_SETTING_BLOCK); @@ -68,20 +75,30 @@ bool CookiePromptModalDialog::IsValid() { } return false; } - return true; + return !skip_this_dialog_; } void CookiePromptModalDialog::AllowSiteData(bool remember, bool session_expire) { + if (remember) { + host_content_settings_map_->SetContentSetting( + origin_.host(), CONTENT_SETTINGS_TYPE_COOKIES, CONTENT_SETTING_ALLOW); + } + if (delegate_) { - delegate_->AllowSiteData(remember, session_expire); + delegate_->AllowSiteData(session_expire); delegate_ = NULL; // It can be deleted at any point now. } } void CookiePromptModalDialog::BlockSiteData(bool remember) { + if (remember) { + host_content_settings_map_->SetContentSetting( + origin_.host(), CONTENT_SETTINGS_TYPE_COOKIES, CONTENT_SETTING_BLOCK); + } + if (delegate_) { - delegate_->BlockSiteData(remember); + delegate_->BlockSiteData(); delegate_ = NULL; // It can be deleted at any point now. } } |