Set "User-Agent" and "Accept-Language" headers for requests sent using CefURLRequest (issue #1125).
git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1502 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
parent
78cfa155c6
commit
601c2b0ee9
|
@ -25,3 +25,4 @@ Brian Power <powerbf.it@gmail.com>
|
|||
Corey Lucier <clucier@adobe.com>
|
||||
Mihai Tica <mitica@adobe.com>
|
||||
Czarek Tomczak <czarek.tomczak@gmail.com>
|
||||
Felix Bruns <felixbruns@spotify.com>
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include "chrome/browser/net/proxy_service_factory.h"
|
||||
#include "content/browser/net/sqlite_persistent_cookie_store.h"
|
||||
#include "content/public/browser/browser_thread.h"
|
||||
#include "content/public/common/content_client.h"
|
||||
#include "content/public/common/content_switches.h"
|
||||
#include "content/public/common/url_constants.h"
|
||||
#include "net/cert/cert_verifier.h"
|
||||
|
@ -38,12 +39,13 @@
|
|||
#include "net/http/http_auth_handler_factory.h"
|
||||
#include "net/http/http_cache.h"
|
||||
#include "net/http/http_server_properties_impl.h"
|
||||
#include "net/http/http_util.h"
|
||||
#include "net/http/transport_security_state.h"
|
||||
#include "net/proxy/proxy_service.h"
|
||||
#include "net/ssl/default_server_bound_cert_store.h"
|
||||
#include "net/ssl/server_bound_cert_service.h"
|
||||
#include "net/ssl/ssl_config_service_defaults.h"
|
||||
#include "net/url_request/static_http_user_agent_settings.h"
|
||||
#include "net/url_request/http_user_agent_settings.h"
|
||||
#include "net/url_request/url_request.h"
|
||||
#include "net/url_request/url_request_context.h"
|
||||
#include "net/url_request/url_request_context_storage.h"
|
||||
|
@ -56,6 +58,42 @@ using content::BrowserThread;
|
|||
#pragma comment(lib, "winhttp.lib")
|
||||
#endif
|
||||
|
||||
namespace {
|
||||
|
||||
// An implementation of |HttpUserAgentSettings| that provides a static
|
||||
// HTTP Accept-Language header value and uses |content::GetUserAgent|
|
||||
// to provide the HTTP User-Agent header value.
|
||||
class CefHttpUserAgentSettings : public net::HttpUserAgentSettings {
|
||||
public:
|
||||
explicit CefHttpUserAgentSettings(const std::string& raw_language_list)
|
||||
: http_accept_language_(net::HttpUtil::GenerateAcceptLanguageHeader(
|
||||
raw_language_list)) {
|
||||
CEF_REQUIRE_IOT();
|
||||
}
|
||||
|
||||
virtual ~CefHttpUserAgentSettings() {
|
||||
CEF_REQUIRE_IOT();
|
||||
}
|
||||
|
||||
// net::HttpUserAgentSettings implementation
|
||||
virtual std::string GetAcceptLanguage() const OVERRIDE {
|
||||
CEF_REQUIRE_IOT();
|
||||
return http_accept_language_;
|
||||
}
|
||||
|
||||
virtual std::string GetUserAgent(const GURL& url) const OVERRIDE {
|
||||
CEF_REQUIRE_IOT();
|
||||
return content::GetUserAgent(url);
|
||||
}
|
||||
|
||||
private:
|
||||
const std::string http_accept_language_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(CefHttpUserAgentSettings);
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
CefURLRequestContextGetter::CefURLRequestContextGetter(
|
||||
base::MessageLoop* io_loop,
|
||||
base::MessageLoop* file_loop,
|
||||
|
@ -101,7 +139,7 @@ net::URLRequestContext* CefURLRequestContextGetter::GetURLRequestContext() {
|
|||
new net::DefaultServerBoundCertStore(NULL),
|
||||
base::WorkerPool::GetTaskRunner(true)));
|
||||
storage_->set_http_user_agent_settings(
|
||||
new net::StaticHttpUserAgentSettings("en-us,en", EmptyString()));
|
||||
new CefHttpUserAgentSettings("en-us,en"));
|
||||
|
||||
storage_->set_host_resolver(net::HostResolver::CreateDefaultResolver(NULL));
|
||||
storage_->set_cert_verifier(net::CertVerifier::CreateDefault());
|
||||
|
|
|
@ -189,13 +189,20 @@ class RequestSchemeHandler : public CefResourceHandler {
|
|||
settings_.response_data.clear();
|
||||
|
||||
CefRequest::HeaderMap headerMap;
|
||||
CefRequest::HeaderMap::iterator headerIter;
|
||||
request->GetHeaderMap(headerMap);
|
||||
|
||||
// Check if the default headers were sent.
|
||||
headerIter = headerMap.find("User-Agent");
|
||||
EXPECT_TRUE(headerIter != headerMap.end() && !headerIter->second.empty());
|
||||
headerIter = headerMap.find("Accept-Language");
|
||||
EXPECT_TRUE(headerIter != headerMap.end() && !headerIter->second.empty());
|
||||
|
||||
// Check if the request cookie was sent.
|
||||
bool has_send_cookie = false;
|
||||
CefRequest::HeaderMap::iterator iter = headerMap.find("Cookie");
|
||||
if (iter != headerMap.end()) {
|
||||
std::string cookie = iter->second;
|
||||
headerIter = headerMap.find("Cookie");
|
||||
if (headerIter != headerMap.end()) {
|
||||
std::string cookie = headerIter->second;
|
||||
if (cookie.find(kRequestSendCookieName) != std::string::npos)
|
||||
has_send_cookie = true;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue