| Index: chrome/browser/net/chrome_url_request_context.cc
|
| ===================================================================
|
| --- chrome/browser/net/chrome_url_request_context.cc (revision 37613)
|
| +++ chrome/browser/net/chrome_url_request_context.cc (working copy)
|
| @@ -22,6 +22,7 @@
|
| #include "chrome/common/notification_service.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "chrome/common/url_constants.h"
|
| +#include "net/base/static_cookie_policy.h"
|
| #include "net/ftp/ftp_network_layer.h"
|
| #include "net/http/http_cache.h"
|
| #include "net/http/http_network_layer.h"
|
| @@ -544,15 +545,6 @@
|
| this,
|
| &ChromeURLRequestContextGetter::OnAcceptLanguageChange,
|
| accept_language));
|
| - } else if (*pref_name_in == prefs::kCookieBehavior) {
|
| - net::CookiePolicy::Type policy_type = net::CookiePolicy::FromInt(
|
| - prefs_->GetInteger(prefs::kCookieBehavior));
|
| - ChromeThread::PostTask(
|
| - ChromeThread::IO, FROM_HERE,
|
| - NewRunnableMethod(
|
| - this,
|
| - &ChromeURLRequestContextGetter::OnCookiePolicyChange,
|
| - policy_type));
|
| } else if (*pref_name_in == prefs::kDefaultCharset) {
|
| std::string default_charset =
|
| WideToASCII(prefs->GetString(prefs::kDefaultCharset));
|
| @@ -596,11 +588,6 @@
|
| GetIOContext()->OnAcceptLanguageChange(accept_language);
|
| }
|
|
|
| -void ChromeURLRequestContextGetter::OnCookiePolicyChange(
|
| - net::CookiePolicy::Type type) {
|
| - GetIOContext()->OnCookiePolicyChange(type);
|
| -}
|
| -
|
| void ChromeURLRequestContextGetter::OnDefaultCharsetChange(
|
| const std::string& default_charset) {
|
| GetIOContext()->OnDefaultCharsetChange(default_charset);
|
| @@ -620,12 +607,16 @@
|
|
|
| ChromeURLRequestContext::ChromeURLRequestContext() {
|
| CheckCurrentlyOnIOThread();
|
| +
|
| + cookie_policy_ = this; // We implement CookiePolicy
|
| +
|
| url_request_tracker()->SetGraveyardFilter(
|
| &ChromeURLRequestContext::ShouldTrackRequest);
|
| }
|
|
|
| ChromeURLRequestContext::~ChromeURLRequestContext() {
|
| CheckCurrentlyOnIOThread();
|
| +
|
| if (appcache_service_.get() && appcache_service_->request_context() == this)
|
| appcache_service_->set_request_context(NULL);
|
|
|
| @@ -650,6 +641,8 @@
|
|
|
| delete ftp_transaction_factory_;
|
| delete http_transaction_factory_;
|
| +
|
| + cookie_policy_ = NULL;
|
| }
|
|
|
| FilePath ChromeURLRequestContext::GetPathForExtension(const std::string& id) {
|
| @@ -758,10 +751,55 @@
|
| extension_info_.erase(iter);
|
| }
|
|
|
| +bool ChromeURLRequestContext::AreCookiesEnabled() const {
|
| + ContentSetting setting =
|
| + host_content_settings_map_->GetDefaultContentSetting(
|
| + CONTENT_SETTINGS_TYPE_COOKIES);
|
| + return setting != CONTENT_SETTING_BLOCK;
|
| +}
|
| +
|
| +bool ChromeURLRequestContext::CanGetCookies(const GURL& url,
|
| + const GURL& first_party) {
|
| + if (host_content_settings_map_->BlockThirdPartyCookies()) {
|
| + net::StaticCookiePolicy policy(
|
| + net::StaticCookiePolicy::BLOCK_THIRD_PARTY_COOKIES);
|
| + if (!policy.CanGetCookies(url, first_party))
|
| + return false;
|
| + }
|
| +
|
| + ContentSetting setting = host_content_settings_map_->GetContentSetting(
|
| + url.host(), CONTENT_SETTINGS_TYPE_COOKIES);
|
| + if (setting == CONTENT_SETTING_BLOCK)
|
| + return false;
|
| +
|
| + // TODO(darin): Implement CONTENT_SETTING_ASK
|
| + return true;
|
| +}
|
| +
|
| +bool ChromeURLRequestContext::CanSetCookie(const GURL& url,
|
| + const GURL& first_party) {
|
| + if (host_content_settings_map_->BlockThirdPartyCookies()) {
|
| + net::StaticCookiePolicy policy(
|
| + net::StaticCookiePolicy::BLOCK_THIRD_PARTY_COOKIES);
|
| + if (!policy.CanSetCookie(url, first_party))
|
| + return false;
|
| + }
|
| +
|
| + ContentSetting setting = host_content_settings_map_->GetContentSetting(
|
| + url.host(), CONTENT_SETTINGS_TYPE_COOKIES);
|
| + if (setting == CONTENT_SETTING_BLOCK)
|
| + return false;
|
| +
|
| + // TODO(darin): Implement CONTENT_SETTING_ASK
|
| + return true;
|
| +}
|
| +
|
| ChromeURLRequestContext::ChromeURLRequestContext(
|
| ChromeURLRequestContext* other) {
|
| CheckCurrentlyOnIOThread();
|
|
|
| + cookie_policy_ = this; // We implement CookiePolicy
|
| +
|
| // Set URLRequestContext members
|
| host_resolver_ = other->host_resolver_;
|
| proxy_service_ = other->proxy_service_;
|
| @@ -769,7 +807,6 @@
|
| http_transaction_factory_ = other->http_transaction_factory_;
|
| ftp_transaction_factory_ = other->ftp_transaction_factory_;
|
| cookie_store_ = other->cookie_store_;
|
| - cookie_policy_.set_type(other->cookie_policy_.type());
|
| transport_security_state_ = other->transport_security_state_;
|
| accept_language_ = other->accept_language_;
|
| accept_charset_ = other->accept_charset_;
|
| @@ -793,12 +830,6 @@
|
| net::HttpUtil::GenerateAcceptLanguageHeader(accept_language);
|
| }
|
|
|
| -void ChromeURLRequestContext::OnCookiePolicyChange(
|
| - net::CookiePolicy::Type type) {
|
| - CheckCurrentlyOnIOThread();
|
| - cookie_policy_.set_type(type);
|
| -}
|
| -
|
| void ChromeURLRequestContext::OnDefaultCharsetChange(
|
| const std::string& default_charset) {
|
| CheckCurrentlyOnIOThread();
|
| @@ -850,9 +881,6 @@
|
| // net_util::GetSuggestedFilename is unlikely to be taken.
|
| referrer_charset_ = default_charset;
|
|
|
| - cookie_policy_type_ = net::CookiePolicy::FromInt(
|
| - prefs->GetInteger(prefs::kCookieBehavior));
|
| -
|
| host_content_settings_map_ = profile->GetHostContentSettingsMap();
|
|
|
| host_zoom_map_ = profile->GetHostZoomMap();
|
| @@ -898,7 +926,6 @@
|
| context->set_accept_language(accept_language_);
|
| context->set_accept_charset(accept_charset_);
|
| context->set_referrer_charset(referrer_charset_);
|
| - context->set_cookie_policy_type(cookie_policy_type_);
|
| context->set_extension_info(extension_info_);
|
| context->set_user_script_dir_path(user_script_dir_path_);
|
| context->set_host_content_settings_map(host_content_settings_map_);
|
|
|