| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "net/url_request/url_request_context_builder.h" | 5 #include "net/url_request/url_request_context_builder.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <utility> |
| 8 #include <vector> | 9 #include <vector> |
| 9 | 10 |
| 10 #include "base/compiler_specific.h" | 11 #include "base/compiler_specific.h" |
| 11 #include "base/logging.h" | 12 #include "base/logging.h" |
| 12 #include "base/macros.h" | 13 #include "base/macros.h" |
| 13 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
| 14 #include "base/single_thread_task_runner.h" | 15 #include "base/single_thread_task_runner.h" |
| 15 #include "base/strings/string_util.h" | 16 #include "base/strings/string_util.h" |
| 16 #include "base/thread_task_runner_handle.h" | 17 #include "base/thread_task_runner_handle.h" |
| 17 #include "base/threading/thread.h" | 18 #include "base/threading/thread.h" |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 file_thread_.reset(new base::Thread("Network File Thread")); | 146 file_thread_.reset(new base::Thread("Network File Thread")); |
| 146 file_thread_->StartWithOptions( | 147 file_thread_->StartWithOptions( |
| 147 base::Thread::Options(base::MessageLoop::TYPE_DEFAULT, 0)); | 148 base::Thread::Options(base::MessageLoop::TYPE_DEFAULT, 0)); |
| 148 file_task_runner_ = file_thread_->task_runner(); | 149 file_task_runner_ = file_thread_->task_runner(); |
| 149 } | 150 } |
| 150 return file_task_runner_; | 151 return file_task_runner_; |
| 151 } | 152 } |
| 152 | 153 |
| 153 void set_transport_security_persister( | 154 void set_transport_security_persister( |
| 154 scoped_ptr<TransportSecurityPersister> transport_security_persister) { | 155 scoped_ptr<TransportSecurityPersister> transport_security_persister) { |
| 155 transport_security_persister_ = transport_security_persister.Pass(); | 156 transport_security_persister_ = std::move(transport_security_persister); |
| 156 } | 157 } |
| 157 | 158 |
| 158 private: | 159 private: |
| 159 // The thread should be torn down last. | 160 // The thread should be torn down last. |
| 160 scoped_ptr<base::Thread> file_thread_; | 161 scoped_ptr<base::Thread> file_thread_; |
| 161 scoped_refptr<base::SingleThreadTaskRunner> file_task_runner_; | 162 scoped_refptr<base::SingleThreadTaskRunner> file_task_runner_; |
| 162 | 163 |
| 163 URLRequestContextStorage storage_; | 164 URLRequestContextStorage storage_; |
| 164 scoped_ptr<TransportSecurityPersister> transport_security_persister_; | 165 scoped_ptr<TransportSecurityPersister> transport_security_persister_; |
| 165 | 166 |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 | 236 |
| 236 void URLRequestContextBuilder::SetSpdyAndQuicEnabled(bool spdy_enabled, | 237 void URLRequestContextBuilder::SetSpdyAndQuicEnabled(bool spdy_enabled, |
| 237 bool quic_enabled) { | 238 bool quic_enabled) { |
| 238 http_network_session_params_.next_protos = | 239 http_network_session_params_.next_protos = |
| 239 NextProtosWithSpdyAndQuic(spdy_enabled, quic_enabled); | 240 NextProtosWithSpdyAndQuic(spdy_enabled, quic_enabled); |
| 240 http_network_session_params_.enable_quic = quic_enabled; | 241 http_network_session_params_.enable_quic = quic_enabled; |
| 241 } | 242 } |
| 242 | 243 |
| 243 void URLRequestContextBuilder::SetCertVerifier( | 244 void URLRequestContextBuilder::SetCertVerifier( |
| 244 scoped_ptr<CertVerifier> cert_verifier) { | 245 scoped_ptr<CertVerifier> cert_verifier) { |
| 245 cert_verifier_ = cert_verifier.Pass(); | 246 cert_verifier_ = std::move(cert_verifier); |
| 246 } | 247 } |
| 247 | 248 |
| 248 void URLRequestContextBuilder::SetInterceptors( | 249 void URLRequestContextBuilder::SetInterceptors( |
| 249 std::vector<scoped_ptr<URLRequestInterceptor>> url_request_interceptors) { | 250 std::vector<scoped_ptr<URLRequestInterceptor>> url_request_interceptors) { |
| 250 url_request_interceptors_ = std::move(url_request_interceptors); | 251 url_request_interceptors_ = std::move(url_request_interceptors); |
| 251 } | 252 } |
| 252 | 253 |
| 253 void URLRequestContextBuilder::SetCookieAndChannelIdStores( | 254 void URLRequestContextBuilder::SetCookieAndChannelIdStores( |
| 254 const scoped_refptr<CookieStore>& cookie_store, | 255 const scoped_refptr<CookieStore>& cookie_store, |
| 255 scoped_ptr<ChannelIDService> channel_id_service) { | 256 scoped_ptr<ChannelIDService> channel_id_service) { |
| 256 DCHECK(cookie_store); | 257 DCHECK(cookie_store); |
| 257 cookie_store_ = cookie_store; | 258 cookie_store_ = cookie_store; |
| 258 channel_id_service_ = channel_id_service.Pass(); | 259 channel_id_service_ = std::move(channel_id_service); |
| 259 } | 260 } |
| 260 | 261 |
| 261 void URLRequestContextBuilder::SetFileTaskRunner( | 262 void URLRequestContextBuilder::SetFileTaskRunner( |
| 262 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) { | 263 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) { |
| 263 file_task_runner_ = task_runner; | 264 file_task_runner_ = task_runner; |
| 264 } | 265 } |
| 265 | 266 |
| 266 void URLRequestContextBuilder::SetHttpAuthHandlerFactory( | 267 void URLRequestContextBuilder::SetHttpAuthHandlerFactory( |
| 267 scoped_ptr<HttpAuthHandlerFactory> factory) { | 268 scoped_ptr<HttpAuthHandlerFactory> factory) { |
| 268 http_auth_handler_factory_ = factory.Pass(); | 269 http_auth_handler_factory_ = std::move(factory); |
| 269 } | 270 } |
| 270 | 271 |
| 271 void URLRequestContextBuilder::SetHttpServerProperties( | 272 void URLRequestContextBuilder::SetHttpServerProperties( |
| 272 scoped_ptr<HttpServerProperties> http_server_properties) { | 273 scoped_ptr<HttpServerProperties> http_server_properties) { |
| 273 http_server_properties_ = http_server_properties.Pass(); | 274 http_server_properties_ = std::move(http_server_properties); |
| 274 } | 275 } |
| 275 | 276 |
| 276 scoped_ptr<URLRequestContext> URLRequestContextBuilder::Build() { | 277 scoped_ptr<URLRequestContext> URLRequestContextBuilder::Build() { |
| 277 scoped_ptr<ContainerURLRequestContext> context( | 278 scoped_ptr<ContainerURLRequestContext> context( |
| 278 new ContainerURLRequestContext(file_task_runner_)); | 279 new ContainerURLRequestContext(file_task_runner_)); |
| 279 URLRequestContextStorage* storage = context->storage(); | 280 URLRequestContextStorage* storage = context->storage(); |
| 280 | 281 |
| 281 storage->set_http_user_agent_settings(make_scoped_ptr( | 282 storage->set_http_user_agent_settings(make_scoped_ptr( |
| 282 new StaticHttpUserAgentSettings(accept_language_, user_agent_))); | 283 new StaticHttpUserAgentSettings(accept_language_, user_agent_))); |
| 283 | 284 |
| 284 if (!network_delegate_) | 285 if (!network_delegate_) |
| 285 network_delegate_.reset(new BasicNetworkDelegate); | 286 network_delegate_.reset(new BasicNetworkDelegate); |
| 286 storage->set_network_delegate(network_delegate_.Pass()); | 287 storage->set_network_delegate(std::move(network_delegate_)); |
| 287 | 288 |
| 288 if (net_log_) { | 289 if (net_log_) { |
| 289 // Unlike the other builder parameters, |net_log_| is not owned by the | 290 // Unlike the other builder parameters, |net_log_| is not owned by the |
| 290 // builder or resulting context. | 291 // builder or resulting context. |
| 291 context->set_net_log(net_log_); | 292 context->set_net_log(net_log_); |
| 292 } else { | 293 } else { |
| 293 storage->set_net_log(make_scoped_ptr(new NetLog)); | 294 storage->set_net_log(make_scoped_ptr(new NetLog)); |
| 294 } | 295 } |
| 295 | 296 |
| 296 if (!host_resolver_) { | 297 if (!host_resolver_) { |
| 297 host_resolver_ = HostResolver::CreateDefaultResolver(context->net_log()); | 298 host_resolver_ = HostResolver::CreateDefaultResolver(context->net_log()); |
| 298 } | 299 } |
| 299 storage->set_host_resolver(host_resolver_.Pass()); | 300 storage->set_host_resolver(std::move(host_resolver_)); |
| 300 | 301 |
| 301 if (!proxy_service_) { | 302 if (!proxy_service_) { |
| 302 // TODO(willchan): Switch to using this code when | 303 // TODO(willchan): Switch to using this code when |
| 303 // ProxyService::CreateSystemProxyConfigService()'s signature doesn't suck. | 304 // ProxyService::CreateSystemProxyConfigService()'s signature doesn't suck. |
| 304 #if !defined(OS_LINUX) && !defined(OS_ANDROID) | 305 #if !defined(OS_LINUX) && !defined(OS_ANDROID) |
| 305 if (!proxy_config_service_) { | 306 if (!proxy_config_service_) { |
| 306 proxy_config_service_ = ProxyService::CreateSystemProxyConfigService( | 307 proxy_config_service_ = ProxyService::CreateSystemProxyConfigService( |
| 307 base::ThreadTaskRunnerHandle::Get().get(), | 308 base::ThreadTaskRunnerHandle::Get().get(), |
| 308 context->GetFileTaskRunner()); | 309 context->GetFileTaskRunner()); |
| 309 } | 310 } |
| 310 #endif // !defined(OS_LINUX) && !defined(OS_ANDROID) | 311 #endif // !defined(OS_LINUX) && !defined(OS_ANDROID) |
| 311 proxy_service_ = ProxyService::CreateUsingSystemProxyResolver( | 312 proxy_service_ = ProxyService::CreateUsingSystemProxyResolver( |
| 312 proxy_config_service_.Pass(), | 313 std::move(proxy_config_service_), |
| 313 0, // This results in using the default value. | 314 0, // This results in using the default value. |
| 314 context->net_log()); | 315 context->net_log()); |
| 315 } | 316 } |
| 316 storage->set_proxy_service(proxy_service_.Pass()); | 317 storage->set_proxy_service(std::move(proxy_service_)); |
| 317 | 318 |
| 318 storage->set_ssl_config_service(new SSLConfigServiceDefaults); | 319 storage->set_ssl_config_service(new SSLConfigServiceDefaults); |
| 319 | 320 |
| 320 if (!http_auth_handler_factory_) { | 321 if (!http_auth_handler_factory_) { |
| 321 http_auth_handler_factory_ = | 322 http_auth_handler_factory_ = |
| 322 HttpAuthHandlerRegistryFactory::CreateDefault(context->host_resolver()); | 323 HttpAuthHandlerRegistryFactory::CreateDefault(context->host_resolver()); |
| 323 } | 324 } |
| 324 | 325 |
| 325 storage->set_http_auth_handler_factory(http_auth_handler_factory_.Pass()); | 326 storage->set_http_auth_handler_factory(std::move(http_auth_handler_factory_)); |
| 326 | 327 |
| 327 if (cookie_store_) { | 328 if (cookie_store_) { |
| 328 storage->set_cookie_store(cookie_store_.get()); | 329 storage->set_cookie_store(cookie_store_.get()); |
| 329 storage->set_channel_id_service(channel_id_service_.Pass()); | 330 storage->set_channel_id_service(std::move(channel_id_service_)); |
| 330 } else { | 331 } else { |
| 331 storage->set_cookie_store(new CookieMonster(NULL, NULL)); | 332 storage->set_cookie_store(new CookieMonster(NULL, NULL)); |
| 332 // TODO(mmenke): This always creates a file thread, even when it ends up | 333 // TODO(mmenke): This always creates a file thread, even when it ends up |
| 333 // not being used. Consider lazily creating the thread. | 334 // not being used. Consider lazily creating the thread. |
| 334 storage->set_channel_id_service(make_scoped_ptr(new ChannelIDService( | 335 storage->set_channel_id_service(make_scoped_ptr(new ChannelIDService( |
| 335 new DefaultChannelIDStore(NULL), context->GetFileTaskRunner()))); | 336 new DefaultChannelIDStore(NULL), context->GetFileTaskRunner()))); |
| 336 } | 337 } |
| 337 | 338 |
| 338 if (sdch_enabled_) { | 339 if (sdch_enabled_) { |
| 339 storage->set_sdch_manager( | 340 storage->set_sdch_manager(scoped_ptr<net::SdchManager>(new SdchManager())); |
| 340 scoped_ptr<net::SdchManager>(new SdchManager()).Pass()); | |
| 341 } | 341 } |
| 342 | 342 |
| 343 storage->set_transport_security_state( | 343 storage->set_transport_security_state( |
| 344 make_scoped_ptr(new TransportSecurityState())); | 344 make_scoped_ptr(new TransportSecurityState())); |
| 345 if (!transport_security_persister_path_.empty()) { | 345 if (!transport_security_persister_path_.empty()) { |
| 346 context->set_transport_security_persister( | 346 context->set_transport_security_persister( |
| 347 make_scoped_ptr<TransportSecurityPersister>( | 347 make_scoped_ptr<TransportSecurityPersister>( |
| 348 new TransportSecurityPersister(context->transport_security_state(), | 348 new TransportSecurityPersister(context->transport_security_state(), |
| 349 transport_security_persister_path_, | 349 transport_security_persister_path_, |
| 350 context->GetFileTaskRunner(), | 350 context->GetFileTaskRunner(), |
| 351 false))); | 351 false))); |
| 352 } | 352 } |
| 353 | 353 |
| 354 if (http_server_properties_) { | 354 if (http_server_properties_) { |
| 355 storage->set_http_server_properties(http_server_properties_.Pass()); | 355 storage->set_http_server_properties(std::move(http_server_properties_)); |
| 356 } else { | 356 } else { |
| 357 storage->set_http_server_properties( | 357 storage->set_http_server_properties( |
| 358 scoped_ptr<HttpServerProperties>(new HttpServerPropertiesImpl())); | 358 scoped_ptr<HttpServerProperties>(new HttpServerPropertiesImpl())); |
| 359 } | 359 } |
| 360 | 360 |
| 361 if (cert_verifier_) { | 361 if (cert_verifier_) { |
| 362 storage->set_cert_verifier(cert_verifier_.Pass()); | 362 storage->set_cert_verifier(std::move(cert_verifier_)); |
| 363 } else { | 363 } else { |
| 364 storage->set_cert_verifier(CertVerifier::CreateDefault()); | 364 storage->set_cert_verifier(CertVerifier::CreateDefault()); |
| 365 } | 365 } |
| 366 | 366 |
| 367 if (throttling_enabled_) { | 367 if (throttling_enabled_) { |
| 368 storage->set_throttler_manager( | 368 storage->set_throttler_manager( |
| 369 make_scoped_ptr(new URLRequestThrottlerManager())); | 369 make_scoped_ptr(new URLRequestThrottlerManager())); |
| 370 } | 370 } |
| 371 | 371 |
| 372 if (backoff_enabled_) { | 372 if (backoff_enabled_) { |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 417 : CACHE_BACKEND_SIMPLE; | 417 : CACHE_BACKEND_SIMPLE; |
| 418 http_cache_backend.reset(new HttpCache::DefaultBackend( | 418 http_cache_backend.reset(new HttpCache::DefaultBackend( |
| 419 DISK_CACHE, backend_type, http_cache_params_.path, | 419 DISK_CACHE, backend_type, http_cache_params_.path, |
| 420 http_cache_params_.max_size, context->GetFileTaskRunner())); | 420 http_cache_params_.max_size, context->GetFileTaskRunner())); |
| 421 } else { | 421 } else { |
| 422 http_cache_backend = | 422 http_cache_backend = |
| 423 HttpCache::DefaultBackend::InMemory(http_cache_params_.max_size); | 423 HttpCache::DefaultBackend::InMemory(http_cache_params_.max_size); |
| 424 } | 424 } |
| 425 | 425 |
| 426 http_transaction_factory.reset(new HttpCache( | 426 http_transaction_factory.reset(new HttpCache( |
| 427 storage->http_network_session(), http_cache_backend.Pass(), true)); | 427 storage->http_network_session(), std::move(http_cache_backend), true)); |
| 428 } else { | 428 } else { |
| 429 http_transaction_factory.reset( | 429 http_transaction_factory.reset( |
| 430 new HttpNetworkLayer(storage->http_network_session())); | 430 new HttpNetworkLayer(storage->http_network_session())); |
| 431 } | 431 } |
| 432 storage->set_http_transaction_factory(http_transaction_factory.Pass()); | 432 storage->set_http_transaction_factory(std::move(http_transaction_factory)); |
| 433 | 433 |
| 434 URLRequestJobFactoryImpl* job_factory = new URLRequestJobFactoryImpl; | 434 URLRequestJobFactoryImpl* job_factory = new URLRequestJobFactoryImpl; |
| 435 if (data_enabled_) | 435 if (data_enabled_) |
| 436 job_factory->SetProtocolHandler("data", | 436 job_factory->SetProtocolHandler("data", |
| 437 make_scoped_ptr(new DataProtocolHandler)); | 437 make_scoped_ptr(new DataProtocolHandler)); |
| 438 | 438 |
| 439 #if !defined(DISABLE_FILE_SUPPORT) | 439 #if !defined(DISABLE_FILE_SUPPORT) |
| 440 if (file_enabled_) { | 440 if (file_enabled_) { |
| 441 job_factory->SetProtocolHandler( | 441 job_factory->SetProtocolHandler( |
| 442 "file", | 442 "file", |
| (...skipping 22 matching lines...) Expand all Loading... |
| 465 } | 465 } |
| 466 url_request_interceptors_.clear(); | 466 url_request_interceptors_.clear(); |
| 467 } | 467 } |
| 468 storage->set_job_factory(std::move(top_job_factory)); | 468 storage->set_job_factory(std::move(top_job_factory)); |
| 469 // TODO(willchan): Support sdch. | 469 // TODO(willchan): Support sdch. |
| 470 | 470 |
| 471 return std::move(context); | 471 return std::move(context); |
| 472 } | 472 } |
| 473 | 473 |
| 474 } // namespace net | 474 } // namespace net |
| OLD | NEW |