Chromium Code Reviews| Index: chrome/browser/net/chrome_url_request_context.cc |
| diff --git a/chrome/browser/net/chrome_url_request_context.cc b/chrome/browser/net/chrome_url_request_context.cc |
| index 6b8bbc803dab9db0c6e11b00cfee894183238334..b73a91d998246a932a5bbd7fd38924498d170eb2 100644 |
| --- a/chrome/browser/net/chrome_url_request_context.cc |
| +++ b/chrome/browser/net/chrome_url_request_context.cc |
| @@ -8,8 +8,10 @@ |
| #include "base/compiler_specific.h" |
| #include "base/message_loop.h" |
| #include "base/message_loop_proxy.h" |
| +#include "base/string_util.h" |
| #include "chrome/browser/browser_process.h" |
| #include "chrome/browser/io_thread.h" |
| +#include "chrome/browser/net/basic_http_user_agent_settings.h" |
| #include "chrome/browser/net/load_time_stats.h" |
| #include "chrome/browser/prefs/pref_service.h" |
| #include "chrome/browser/profiles/profile.h" |
| @@ -37,6 +39,40 @@ class ChromeURLRequestContextFactory { |
| DISALLOW_COPY_AND_ASSIGN(ChromeURLRequestContextFactory); |
| }; |
| +// Implementation of HttpUserAgentSettings for ChromeURLRequestContext |
| +// that mirrors changes in Accept-Language and Accept-Charset from |
| +// content's PrefService. |
| +class ChromeHttpUserAgentSettings : public BasicHttpUserAgentSettings { |
|
erikwright (departed)
2012/09/21 15:06:33
Hmm. It's kind of funny that this inherits from Ba
|
| + public: |
| + ChromeHttpUserAgentSettings() |
| + : BasicHttpUserAgentSettings(EmptyString(), EmptyString()) {} |
| + virtual ~ChromeHttpUserAgentSettings() {} |
| + |
| + // net::HttpUserAgentSettings implementation. |
| + virtual const std::string& GetAcceptLanguage() OVERRIDE { |
| + return accept_language_; |
| + } |
| + virtual const std::string& GetAcceptCharset() OVERRIDE { |
| + return accept_charset_; |
| + } |
| + |
| + // Sets the value of 'Accept-Charset' header field. |
| + void set_accept_charset(const std::string& accept_charset) { |
| + accept_charset_ = accept_charset; |
| + } |
| + |
| + // Sets the value of 'Accept-Language' header field. |
| + void set_accept_language(const std::string& accept_language) { |
| + accept_language_ = accept_language; |
| + } |
| + |
| + private: |
| + std::string accept_language_; |
| + std::string accept_charset_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(ChromeHttpUserAgentSettings); |
| +}; |
| + |
| namespace { |
| // ---------------------------------------------------------------------------- |
| @@ -337,10 +373,12 @@ ChromeURLRequestContext::ChromeURLRequestContext( |
| chrome_browser_net::LoadTimeStats* load_time_stats) |
| : ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)), |
| is_incognito_(false), |
| - load_time_stats_(load_time_stats) { |
| + load_time_stats_(load_time_stats), |
| + chrome_http_user_agent_settings_(new ChromeHttpUserAgentSettings) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| if (load_time_stats_) |
| load_time_stats_->RegisterURLRequestContext(this, type); |
| + set_http_user_agent_settings(chrome_http_user_agent_settings_.get()); |
| } |
| ChromeURLRequestContext::~ChromeURLRequestContext() { |
| @@ -368,15 +406,10 @@ void ChromeURLRequestContext::set_chrome_url_data_manager_backend( |
| chrome_url_data_manager_backend_ = backend; |
| } |
| -const std::string& ChromeURLRequestContext::GetUserAgent( |
| - const GURL& url) const { |
| - return content::GetUserAgent(url); |
| -} |
| - |
| void ChromeURLRequestContext::OnAcceptLanguageChange( |
| const std::string& accept_language) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| - set_accept_language( |
| + chrome_http_user_agent_settings_->set_accept_language( |
| net::HttpUtil::GenerateAcceptLanguageHeader(accept_language)); |
| } |
| @@ -384,6 +417,6 @@ void ChromeURLRequestContext::OnDefaultCharsetChange( |
| const std::string& default_charset) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| set_referrer_charset(default_charset); |
| - set_accept_charset( |
| + chrome_http_user_agent_settings_->set_accept_charset( |
| net::HttpUtil::GenerateAcceptCharsetHeader(default_charset)); |
| } |