Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1880)

Unified Diff: chrome/browser/net/chrome_url_request_context.cc

Issue 10918279: Provide mutable members of UrlRequestContext via pure-virtual interface (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address erikwright's second round of comments. Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..8eae0ab3b02b194a5ede30149a06a7ee828d0710 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,43 @@ 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 net::HttpUserAgentSettings {
+ public:
+ ChromeHttpUserAgentSettings() {}
+ virtual ~ChromeHttpUserAgentSettings() {}
+
+ // net::HttpUserAgentSettings implementation.
+ virtual const std::string& GetAcceptLanguage() OVERRIDE {
+ return accept_language_;
+ }
+ virtual const std::string& GetAcceptCharset() OVERRIDE {
+ return accept_charset_;
+ }
+ virtual const std::string& GetUserAgent(const GURL& url) OVERRIDE {
+ return content::GetUserAgent(url);
+ }
+
+
+ // 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 +376,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 +409,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 +420,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));
}

Powered by Google App Engine
This is Rietveld 408576698