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