1f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer// Copyright (c) 2011 The Chromium Authors. All rights reserved. 22b37d7cf28b1382420b5e4007042feeb66d21ac8Misha Brukman// Use of this source code is governed by a BSD-style license that can be 3b576c94c15af9a440f69d9d03c2afead7971118cJohn Criswell// found in the LICENSE file. 4b576c94c15af9a440f69d9d03c2afead7971118cJohn Criswell 54ee451de366474b9c228b4e5fa573795a715216dChris Lattner#include "net/url_request/url_request_context.h" 64ee451de366474b9c228b4e5fa573795a715216dChris Lattner 72b37d7cf28b1382420b5e4007042feeb66d21ac8Misha Brukman#include "base/string_util.h" 8b576c94c15af9a440f69d9d03c2afead7971118cJohn Criswell#include "net/base/cookie_store.h" 9968cfd0b6e5aa4eac98c748fafd145889b4c7b83Chris Lattner#include "net/base/host_resolver.h" 10a99be51bf5cdac1438069d4b01766c47704961c8Gabor Greif#include "net/ftp/ftp_transaction_factory.h" 11968cfd0b6e5aa4eac98c748fafd145889b4c7b83Chris Lattner#include "net/http/http_transaction_factory.h" 12968cfd0b6e5aa4eac98c748fafd145889b4c7b83Chris Lattner 13968cfd0b6e5aa4eac98c748fafd145889b4c7b83Chris Lattnernamespace net { 14f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer 15603d6b56a2b72358e7b599aab743beb44823d76cRafael EspindolaURLRequestContext::URLRequestContext() 16e07c15c734fcac9f6a82ae20a93b18799d6ca992Chris Lattner : is_main_(false), 17e07c15c734fcac9f6a82ae20a93b18799d6ca992Chris Lattner net_log_(NULL), 18c1d5624d71f7534cfc1bd51b76ead9cea99d3e8dChris Lattner host_resolver_(NULL), 19901b85888c2de6bf982c47ab69b7e83908b6a216Benjamin Kramer cert_verifier_(NULL), 20d68a07650cdb2e18f18f362ba533459aa10e01b6Dan Gohman dnsrr_resolver_(NULL), 21874874657eea1d50062a973321ab256d8e761496Duraid Madina dns_cert_checker_(NULL), 223446ae833754df5b139d056de025797dbacc10e5Chris Lattner http_auth_handler_factory_(NULL), 23d0fde30ce850b78371fd1386338350591f9ff494Brian Gaeke network_delegate_(NULL), 24f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer cookie_policy_(NULL), 25844731a7f1909f55935e3514c9e713a62d67662eDan Gohman transport_security_state_(NULL), 26f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer http_transaction_factory_(NULL), 27f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer ftp_transaction_factory_(NULL) 282b37d7cf28b1382420b5e4007042feeb66d21ac8Misha Brukman#ifdef ANDROID 29f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer , valid_uid_(false), 302b37d7cf28b1382420b5e4007042feeb66d21ac8Misha Brukman calling_uid_(0) 318d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer#endif 32f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer {} 33f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer 34f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencervoid URLRequestContext::CopyFrom(URLRequestContext* other) { 35f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer // Copy URLRequestContext parameters. 36968cfd0b6e5aa4eac98c748fafd145889b4c7b83Chris Lattner // Do not copy is_main_. 37968cfd0b6e5aa4eac98c748fafd145889b4c7b83Chris Lattner set_net_log(other->net_log()); 38f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer set_host_resolver(other->host_resolver()); 398d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer set_cert_verifier(other->cert_verifier()); 408d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer set_dnsrr_resolver(other->dnsrr_resolver()); 41f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer set_dns_cert_checker(other->dns_cert_checker()); 42f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer set_http_auth_handler_factory(other->http_auth_handler_factory()); 43f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer set_proxy_service(other->proxy_service()); 44f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer set_ssl_config_service(other->ssl_config_service()); 458d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer set_network_delegate(other->network_delegate()); 468d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer set_cookie_store(other->cookie_store()); 478d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer set_cookie_policy(other->cookie_policy()); 488d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer set_transport_security_state(other->transport_security_state()); 498d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer // FTPAuthCache is unique per context. 50f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer set_accept_language(other->accept_language()); 518d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer set_accept_charset(other->accept_charset()); 528d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer set_referrer_charset(other->referrer_charset()); 538d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer set_http_transaction_factory(other->http_transaction_factory()); 548d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer set_ftp_transaction_factory(other->ftp_transaction_factory()); 558d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer#ifdef ANDROID 568d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer calling_uid_ = 0; 578d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer valid_uid_ = other->getUID(&calling_uid_); 588d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer#endif 598d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer} 608d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer 61f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencervoid URLRequestContext::set_cookie_store(CookieStore* cookie_store) { 629a29db43a7a906162b0fde012b5d16f3b0895023Reid Spencer cookie_store_ = cookie_store; 63f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer} 64f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer 65f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencerconst std::string& URLRequestContext::GetUserAgent(const GURL& url) const { 668d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer return EmptyString(); 672c61d7b240f41dcc3f7a7e4966dc80b804918bc9Brian Gaeke} 68968cfd0b6e5aa4eac98c748fafd145889b4c7b83Chris Lattner 69f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencerbool URLRequestContext::IsSNIAvailable() const { 70f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer if (!ssl_config_service_) 712b37d7cf28b1382420b5e4007042feeb66d21ac8Misha Brukman return false; 72f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer 738d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer SSLConfig ssl_config; 748d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer ssl_config_service_->GetSSLConfig(&ssl_config); 75cd5561a56e1521c7dc18744dcd371d255b580fdfReid Spencer return ssl_config.tls1_enabled; 76cd5561a56e1521c7dc18744dcd371d255b580fdfReid Spencer} 77cd5561a56e1521c7dc18744dcd371d255b580fdfReid Spencer 78cd5561a56e1521c7dc18744dcd371d255b580fdfReid Spencer#ifdef ANDROID 79cd5561a56e1521c7dc18744dcd371d255b580fdfReid Spencervoid URLRequestContext::setUID(uid_t uid) { 80f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer valid_uid_ = true; 81f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer calling_uid_ = uid; 82f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer} 83f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer 84f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencerbool URLRequestContext::getUID(uid_t *uid) const { 852b37d7cf28b1382420b5e4007042feeb66d21ac8Misha Brukman if (!valid_uid_) { 86f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer return false; 87f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer } 88f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer *uid = calling_uid_; 89f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer return true; 90f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer} 91f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer#endif 92f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer 93f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid SpencerURLRequestContext::~URLRequestContext() { 94f9d7a51c4458680a8fd0c69ef06485ac1d11862aReid Spencer} 958d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer 968d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer} // namespace net 978d8a7ffe580c622e7e43f1426bca64e517de0d06Reid Spencer