OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "remoting/base/url_request_context.h" | 5 #include "remoting/base/url_request_context_getter.h" |
6 | 6 |
7 #include "base/message_loop/message_loop_proxy.h" | 7 #include "base/message_loop/message_loop_proxy.h" |
8 #include "net/cert/cert_verifier.h" | |
9 #include "net/dns/host_resolver.h" | |
10 #include "net/http/http_auth_handler_factory.h" | |
11 #include "net/http/http_network_layer.h" | |
12 #include "net/http/http_network_session.h" | |
13 #include "net/http/http_server_properties_impl.h" | |
14 #include "net/http/transport_security_state.h" | |
15 #include "net/proxy/proxy_config_service.h" | 8 #include "net/proxy/proxy_config_service.h" |
16 #include "net/proxy/proxy_service.h" | 9 #include "net/url_request/url_request_context_builder.h" |
17 #include "net/ssl/ssl_config_service_defaults.h" | |
18 #include "net/url_request/url_request_job_factory_impl.h" | |
19 #include "remoting/base/vlog_net_log.h" | 10 #include "remoting/base/vlog_net_log.h" |
20 | 11 |
21 #if defined(OS_WIN) | 12 #if defined(OS_WIN) |
22 #include "net/proxy/proxy_config_service_win.h" | 13 #include "net/proxy/proxy_config_service_win.h" |
23 #elif defined(OS_IOS) | 14 #elif defined(OS_IOS) |
24 #include "net/proxy/proxy_config_service_ios.h" | 15 #include "net/proxy/proxy_config_service_ios.h" |
25 #elif defined(OS_MACOSX) | 16 #elif defined(OS_MACOSX) |
26 #include "net/proxy/proxy_config_service_mac.h" | 17 #include "net/proxy/proxy_config_service_mac.h" |
27 #elif defined(OS_LINUX) && !defined(OS_CHROMEOS) | 18 #elif defined(OS_LINUX) && !defined(OS_CHROMEOS) |
28 #include "net/proxy/proxy_config_service_linux.h" | 19 #include "net/proxy/proxy_config_service_linux.h" |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 return new ProxyConfigServiceDirect(); | 62 return new ProxyConfigServiceDirect(); |
72 #else | 63 #else |
73 LOG(WARNING) << "Failed to choose a system proxy settings fetcher " | 64 LOG(WARNING) << "Failed to choose a system proxy settings fetcher " |
74 "for this platform."; | 65 "for this platform."; |
75 return new ProxyConfigServiceDirect(); | 66 return new ProxyConfigServiceDirect(); |
76 #endif | 67 #endif |
77 } | 68 } |
78 | 69 |
79 } // namespace | 70 } // namespace |
80 | 71 |
81 // TODO(willchan): This is largely copied from service_url_request_context.cc, | |
82 // which is in turn copied from some test code. Move it somewhere reusable. | |
83 URLRequestContext::URLRequestContext( | |
84 scoped_ptr<net::ProxyConfigService> proxy_config_service) | |
85 : storage_(this) { | |
86 scoped_ptr<VlogNetLog> net_log(new VlogNetLog()); | |
87 storage_.set_host_resolver( | |
88 net::HostResolver::CreateDefaultResolver(net_log.get())); | |
89 storage_.set_proxy_service(net::ProxyService::CreateUsingSystemProxyResolver( | |
90 proxy_config_service.release(), 0u, net_log.get())); | |
91 storage_.set_cert_verifier(net::CertVerifier::CreateDefault()); | |
92 storage_.set_ssl_config_service(new net::SSLConfigServiceDefaults); | |
93 storage_.set_http_auth_handler_factory( | |
94 net::HttpAuthHandlerFactory::CreateDefault(host_resolver())); | |
95 storage_.set_http_server_properties( | |
96 scoped_ptr<net::HttpServerProperties>( | |
97 new net::HttpServerPropertiesImpl())); | |
98 storage_.set_transport_security_state(new net::TransportSecurityState); | |
99 storage_.set_job_factory(new net::URLRequestJobFactoryImpl()); | |
100 | |
101 net::HttpNetworkSession::Params session_params; | |
102 session_params.host_resolver = host_resolver(); | |
103 session_params.cert_verifier = cert_verifier(); | |
104 session_params.transport_security_state = transport_security_state(); | |
105 session_params.proxy_service = proxy_service(); | |
106 session_params.ssl_config_service = ssl_config_service(); | |
107 session_params.http_auth_handler_factory = http_auth_handler_factory(); | |
108 session_params.http_server_properties = http_server_properties(); | |
109 session_params.net_log = net_log.get(); | |
110 scoped_refptr<net::HttpNetworkSession> network_session( | |
111 new net::HttpNetworkSession(session_params)); | |
112 storage_.set_http_transaction_factory( | |
113 new net::HttpNetworkLayer(network_session.get())); | |
114 storage_.set_net_log(net_log.release()); | |
115 } | |
116 | |
117 URLRequestContext::~URLRequestContext() { | |
118 } | |
119 | |
120 URLRequestContextGetter::URLRequestContextGetter( | 72 URLRequestContextGetter::URLRequestContextGetter( |
121 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner) | 73 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner) |
122 : network_task_runner_(network_task_runner) { | 74 : network_task_runner_(network_task_runner) { |
123 proxy_config_service_.reset(CreateSystemProxyConfigService( | 75 proxy_config_service_.reset(CreateSystemProxyConfigService( |
124 network_task_runner_.get())); | 76 network_task_runner_.get())); |
125 } | 77 } |
126 | 78 |
127 net::URLRequestContext* URLRequestContextGetter::GetURLRequestContext() { | 79 net::URLRequestContext* URLRequestContextGetter::GetURLRequestContext() { |
128 if (!url_request_context_.get()) { | 80 if (!url_request_context_.get()) { |
129 url_request_context_.reset( | 81 net::URLRequestContextBuilder builder; |
130 new URLRequestContext(proxy_config_service_.Pass())); | 82 builder.set_net_log(new VlogNetLog()); |
| 83 builder.DisableHttpCache(); |
| 84 builder.set_proxy_config_service(proxy_config_service_.release()); |
| 85 url_request_context_.reset(builder.Build()); |
131 } | 86 } |
132 return url_request_context_.get(); | 87 return url_request_context_.get(); |
133 } | 88 } |
134 | 89 |
135 scoped_refptr<base::SingleThreadTaskRunner> | 90 scoped_refptr<base::SingleThreadTaskRunner> |
136 URLRequestContextGetter::GetNetworkTaskRunner() const { | 91 URLRequestContextGetter::GetNetworkTaskRunner() const { |
137 return network_task_runner_; | 92 return network_task_runner_; |
138 } | 93 } |
139 | 94 |
140 URLRequestContextGetter::~URLRequestContextGetter() { | 95 URLRequestContextGetter::~URLRequestContextGetter() { |
141 } | 96 } |
142 | 97 |
143 } // namespace remoting | 98 } // namespace remoting |
OLD | NEW |