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 "content/shell/browser/shell_url_request_context_getter.h" | 5 #include "content/shell/browser/shell_url_request_context_getter.h" |
6 | 6 |
| 7 #include <utility> |
| 8 |
7 #include "base/command_line.h" | 9 #include "base/command_line.h" |
8 #include "base/logging.h" | 10 #include "base/logging.h" |
9 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
10 #include "base/single_thread_task_runner.h" | 12 #include "base/single_thread_task_runner.h" |
11 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
12 #include "base/strings/string_split.h" | 14 #include "base/strings/string_split.h" |
13 #include "base/strings/string_util.h" | 15 #include "base/strings/string_util.h" |
14 #include "base/threading/sequenced_worker_pool.h" | 16 #include "base/threading/sequenced_worker_pool.h" |
15 #include "base/threading/worker_pool.h" | 17 #include "base/threading/worker_pool.h" |
16 #include "build/build_config.h" | 18 #include "build/build_config.h" |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 base::MessageLoop* io_loop, | 70 base::MessageLoop* io_loop, |
69 base::MessageLoop* file_loop, | 71 base::MessageLoop* file_loop, |
70 ProtocolHandlerMap* protocol_handlers, | 72 ProtocolHandlerMap* protocol_handlers, |
71 URLRequestInterceptorScopedVector request_interceptors, | 73 URLRequestInterceptorScopedVector request_interceptors, |
72 net::NetLog* net_log) | 74 net::NetLog* net_log) |
73 : ignore_certificate_errors_(ignore_certificate_errors), | 75 : ignore_certificate_errors_(ignore_certificate_errors), |
74 base_path_(base_path), | 76 base_path_(base_path), |
75 io_loop_(io_loop), | 77 io_loop_(io_loop), |
76 file_loop_(file_loop), | 78 file_loop_(file_loop), |
77 net_log_(net_log), | 79 net_log_(net_log), |
78 request_interceptors_(request_interceptors.Pass()) { | 80 request_interceptors_(std::move(request_interceptors)) { |
79 // Must first be created on the UI thread. | 81 // Must first be created on the UI thread. |
80 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 82 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
81 | 83 |
82 std::swap(protocol_handlers_, *protocol_handlers); | 84 std::swap(protocol_handlers_, *protocol_handlers); |
83 | 85 |
84 // We must create the proxy config service on the UI loop on Linux because it | 86 // We must create the proxy config service on the UI loop on Linux because it |
85 // must synchronously run on the glib message loop. This will be passed to | 87 // must synchronously run on the glib message loop. This will be passed to |
86 // the URLRequestContextStorage on the IO thread in GetURLRequestContext(). | 88 // the URLRequestContextStorage on the IO thread in GetURLRequestContext(). |
87 proxy_config_service_ = GetProxyConfigService(); | 89 proxy_config_service_ = GetProxyConfigService(); |
88 } | 90 } |
89 | 91 |
90 ShellURLRequestContextGetter::~ShellURLRequestContextGetter() { | 92 ShellURLRequestContextGetter::~ShellURLRequestContextGetter() { |
91 } | 93 } |
92 | 94 |
93 scoped_ptr<net::NetworkDelegate> | 95 scoped_ptr<net::NetworkDelegate> |
94 ShellURLRequestContextGetter::CreateNetworkDelegate() { | 96 ShellURLRequestContextGetter::CreateNetworkDelegate() { |
95 return make_scoped_ptr(new ShellNetworkDelegate); | 97 return make_scoped_ptr(new ShellNetworkDelegate); |
96 } | 98 } |
97 | 99 |
98 scoped_ptr<net::ProxyConfigService> | 100 scoped_ptr<net::ProxyConfigService> |
99 ShellURLRequestContextGetter::GetProxyConfigService() { | 101 ShellURLRequestContextGetter::GetProxyConfigService() { |
100 return net::ProxyService::CreateSystemProxyConfigService( | 102 return net::ProxyService::CreateSystemProxyConfigService( |
101 io_loop_->task_runner(), file_loop_->task_runner()); | 103 io_loop_->task_runner(), file_loop_->task_runner()); |
102 } | 104 } |
103 | 105 |
104 scoped_ptr<net::ProxyService> ShellURLRequestContextGetter::GetProxyService() { | 106 scoped_ptr<net::ProxyService> ShellURLRequestContextGetter::GetProxyService() { |
105 // TODO(jam): use v8 if possible, look at chrome code. | 107 // TODO(jam): use v8 if possible, look at chrome code. |
106 return net::ProxyService::CreateUsingSystemProxyResolver( | 108 return net::ProxyService::CreateUsingSystemProxyResolver( |
107 proxy_config_service_.Pass(), 0, url_request_context_->net_log()); | 109 std::move(proxy_config_service_), 0, url_request_context_->net_log()); |
108 } | 110 } |
109 | 111 |
110 net::URLRequestContext* ShellURLRequestContextGetter::GetURLRequestContext() { | 112 net::URLRequestContext* ShellURLRequestContextGetter::GetURLRequestContext() { |
111 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 113 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
112 | 114 |
113 if (!url_request_context_) { | 115 if (!url_request_context_) { |
114 const base::CommandLine& command_line = | 116 const base::CommandLine& command_line = |
115 *base::CommandLine::ForCurrentProcess(); | 117 *base::CommandLine::ForCurrentProcess(); |
116 | 118 |
117 url_request_context_.reset(new net::URLRequestContext()); | 119 url_request_context_.reset(new net::URLRequestContext()); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 network_session_params.testing_fixed_http_port = value; | 186 network_session_params.testing_fixed_http_port = value; |
185 } | 187 } |
186 if (command_line.HasSwitch(switches::kTestingFixedHttpsPort)) { | 188 if (command_line.HasSwitch(switches::kTestingFixedHttpsPort)) { |
187 int value; | 189 int value; |
188 base::StringToInt(command_line.GetSwitchValueASCII( | 190 base::StringToInt(command_line.GetSwitchValueASCII( |
189 switches::kTestingFixedHttpsPort), &value); | 191 switches::kTestingFixedHttpsPort), &value); |
190 network_session_params.testing_fixed_https_port = value; | 192 network_session_params.testing_fixed_https_port = value; |
191 } | 193 } |
192 if (command_line.HasSwitch(switches::kHostResolverRules)) { | 194 if (command_line.HasSwitch(switches::kHostResolverRules)) { |
193 scoped_ptr<net::MappedHostResolver> mapped_host_resolver( | 195 scoped_ptr<net::MappedHostResolver> mapped_host_resolver( |
194 new net::MappedHostResolver(host_resolver.Pass())); | 196 new net::MappedHostResolver(std::move(host_resolver))); |
195 mapped_host_resolver->SetRulesFromString( | 197 mapped_host_resolver->SetRulesFromString( |
196 command_line.GetSwitchValueASCII(switches::kHostResolverRules)); | 198 command_line.GetSwitchValueASCII(switches::kHostResolverRules)); |
197 host_resolver = mapped_host_resolver.Pass(); | 199 host_resolver = std::move(mapped_host_resolver); |
198 } | 200 } |
199 | 201 |
200 // Give |storage_| ownership at the end in case it's |mapped_host_resolver|. | 202 // Give |storage_| ownership at the end in case it's |mapped_host_resolver|. |
201 storage_->set_host_resolver(host_resolver.Pass()); | 203 storage_->set_host_resolver(std::move(host_resolver)); |
202 network_session_params.host_resolver = | 204 network_session_params.host_resolver = |
203 url_request_context_->host_resolver(); | 205 url_request_context_->host_resolver(); |
204 | 206 |
205 storage_->set_http_network_session( | 207 storage_->set_http_network_session( |
206 make_scoped_ptr(new net::HttpNetworkSession(network_session_params))); | 208 make_scoped_ptr(new net::HttpNetworkSession(network_session_params))); |
207 storage_->set_http_transaction_factory(make_scoped_ptr( | 209 storage_->set_http_transaction_factory(make_scoped_ptr(new net::HttpCache( |
208 new net::HttpCache(storage_->http_network_session(), | 210 storage_->http_network_session(), std::move(main_backend), |
209 main_backend.Pass(), | 211 true /* set_up_quic_server_info */))); |
210 true /* set_up_quic_server_info */))); | |
211 | 212 |
212 scoped_ptr<net::URLRequestJobFactoryImpl> job_factory( | 213 scoped_ptr<net::URLRequestJobFactoryImpl> job_factory( |
213 new net::URLRequestJobFactoryImpl()); | 214 new net::URLRequestJobFactoryImpl()); |
214 // Keep ProtocolHandlers added in sync with | 215 // Keep ProtocolHandlers added in sync with |
215 // ShellContentBrowserClient::IsHandledURL(). | 216 // ShellContentBrowserClient::IsHandledURL(). |
216 InstallProtocolHandlers(job_factory.get(), &protocol_handlers_); | 217 InstallProtocolHandlers(job_factory.get(), &protocol_handlers_); |
217 bool set_protocol = job_factory->SetProtocolHandler( | 218 bool set_protocol = job_factory->SetProtocolHandler( |
218 url::kDataScheme, make_scoped_ptr(new net::DataProtocolHandler)); | 219 url::kDataScheme, make_scoped_ptr(new net::DataProtocolHandler)); |
219 DCHECK(set_protocol); | 220 DCHECK(set_protocol); |
220 #if !defined(DISABLE_FILE_SUPPORT) | 221 #if !defined(DISABLE_FILE_SUPPORT) |
221 set_protocol = job_factory->SetProtocolHandler( | 222 set_protocol = job_factory->SetProtocolHandler( |
222 url::kFileScheme, | 223 url::kFileScheme, |
223 make_scoped_ptr(new net::FileProtocolHandler( | 224 make_scoped_ptr(new net::FileProtocolHandler( |
224 BrowserThread::GetBlockingPool()->GetTaskRunnerWithShutdownBehavior( | 225 BrowserThread::GetBlockingPool()->GetTaskRunnerWithShutdownBehavior( |
225 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)))); | 226 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)))); |
226 DCHECK(set_protocol); | 227 DCHECK(set_protocol); |
227 #endif | 228 #endif |
228 | 229 |
229 // Set up interceptors in the reverse order. | 230 // Set up interceptors in the reverse order. |
230 scoped_ptr<net::URLRequestJobFactory> top_job_factory = | 231 scoped_ptr<net::URLRequestJobFactory> top_job_factory = |
231 job_factory.Pass(); | 232 std::move(job_factory); |
232 for (URLRequestInterceptorScopedVector::reverse_iterator i = | 233 for (URLRequestInterceptorScopedVector::reverse_iterator i = |
233 request_interceptors_.rbegin(); | 234 request_interceptors_.rbegin(); |
234 i != request_interceptors_.rend(); | 235 i != request_interceptors_.rend(); |
235 ++i) { | 236 ++i) { |
236 top_job_factory.reset(new net::URLRequestInterceptingJobFactory( | 237 top_job_factory.reset(new net::URLRequestInterceptingJobFactory( |
237 top_job_factory.Pass(), make_scoped_ptr(*i))); | 238 std::move(top_job_factory), make_scoped_ptr(*i))); |
238 } | 239 } |
239 request_interceptors_.weak_clear(); | 240 request_interceptors_.weak_clear(); |
240 | 241 |
241 storage_->set_job_factory(top_job_factory.Pass()); | 242 storage_->set_job_factory(std::move(top_job_factory)); |
242 } | 243 } |
243 | 244 |
244 return url_request_context_.get(); | 245 return url_request_context_.get(); |
245 } | 246 } |
246 | 247 |
247 scoped_refptr<base::SingleThreadTaskRunner> | 248 scoped_refptr<base::SingleThreadTaskRunner> |
248 ShellURLRequestContextGetter::GetNetworkTaskRunner() const { | 249 ShellURLRequestContextGetter::GetNetworkTaskRunner() const { |
249 return BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO); | 250 return BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO); |
250 } | 251 } |
251 | 252 |
252 net::HostResolver* ShellURLRequestContextGetter::host_resolver() { | 253 net::HostResolver* ShellURLRequestContextGetter::host_resolver() { |
253 return url_request_context_->host_resolver(); | 254 return url_request_context_->host_resolver(); |
254 } | 255 } |
255 | 256 |
256 } // namespace content | 257 } // namespace content |
OLD | NEW |