| 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 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 void URLRequestContextBuilder::SetHttpServerProperties( | 250 void URLRequestContextBuilder::SetHttpServerProperties( |
| 251 scoped_ptr<HttpServerProperties> http_server_properties) { | 251 scoped_ptr<HttpServerProperties> http_server_properties) { |
| 252 http_server_properties_ = http_server_properties.Pass(); | 252 http_server_properties_ = http_server_properties.Pass(); |
| 253 } | 253 } |
| 254 | 254 |
| 255 scoped_ptr<URLRequestContext> URLRequestContextBuilder::Build() { | 255 scoped_ptr<URLRequestContext> URLRequestContextBuilder::Build() { |
| 256 scoped_ptr<ContainerURLRequestContext> context( | 256 scoped_ptr<ContainerURLRequestContext> context( |
| 257 new ContainerURLRequestContext(file_task_runner_)); | 257 new ContainerURLRequestContext(file_task_runner_)); |
| 258 URLRequestContextStorage* storage = context->storage(); | 258 URLRequestContextStorage* storage = context->storage(); |
| 259 | 259 |
| 260 storage->set_http_user_agent_settings(new StaticHttpUserAgentSettings( | 260 storage->set_http_user_agent_settings(scoped_ptr<HttpUserAgentSettings>( |
| 261 accept_language_, user_agent_)); | 261 new StaticHttpUserAgentSettings(accept_language_, user_agent_))); |
| 262 | 262 |
| 263 if (!network_delegate_) | 263 if (!network_delegate_) |
| 264 network_delegate_.reset(new BasicNetworkDelegate); | 264 network_delegate_.reset(new BasicNetworkDelegate); |
| 265 NetworkDelegate* network_delegate = network_delegate_.release(); | 265 storage->set_network_delegate(network_delegate_.Pass()); |
| 266 storage->set_network_delegate(network_delegate); | |
| 267 | 266 |
| 268 if (net_log_) { | 267 if (net_log_) { |
| 269 context->set_net_log(net_log_); | 268 context->set_net_log(net_log_); |
| 270 } else { | 269 } else { |
| 271 storage->set_net_log(new NetLog); | 270 storage->set_net_log(make_scoped_ptr(new NetLog)); |
| 272 } | 271 } |
| 273 | 272 |
| 274 if (!host_resolver_) { | 273 if (!host_resolver_) { |
| 275 host_resolver_ = HostResolver::CreateDefaultResolver(context->net_log()); | 274 host_resolver_ = HostResolver::CreateDefaultResolver(context->net_log()); |
| 276 } | 275 } |
| 277 storage->set_host_resolver(host_resolver_.Pass()); | 276 storage->set_host_resolver(host_resolver_.Pass()); |
| 278 | 277 |
| 279 if (!proxy_service_) { | 278 if (!proxy_service_) { |
| 280 // TODO(willchan): Switch to using this code when | 279 // TODO(willchan): Switch to using this code when |
| 281 // ProxyService::CreateSystemProxyConfigService()'s signature doesn't suck. | 280 // ProxyService::CreateSystemProxyConfigService()'s signature doesn't suck. |
| 282 #if defined(OS_LINUX) || defined(OS_ANDROID) | 281 #if defined(OS_LINUX) || defined(OS_ANDROID) |
| 283 ProxyConfigService* proxy_config_service = proxy_config_service_.release(); | 282 ProxyConfigService* proxy_config_service = proxy_config_service_.release(); |
| 284 #else | 283 #else |
| 285 ProxyConfigService* proxy_config_service = NULL; | 284 ProxyConfigService* proxy_config_service = NULL; |
| 286 if (proxy_config_service_) { | 285 if (proxy_config_service_) { |
| 287 proxy_config_service = proxy_config_service_.release(); | 286 proxy_config_service = proxy_config_service_.release(); |
| 288 } else { | 287 } else { |
| 289 proxy_config_service = ProxyService::CreateSystemProxyConfigService( | 288 proxy_config_service = ProxyService::CreateSystemProxyConfigService( |
| 290 base::ThreadTaskRunnerHandle::Get().get(), | 289 base::ThreadTaskRunnerHandle::Get().get(), |
| 291 context->GetFileTaskRunner()); | 290 context->GetFileTaskRunner()); |
| 292 } | 291 } |
| 293 #endif // defined(OS_LINUX) || defined(OS_ANDROID) | 292 #endif // defined(OS_LINUX) || defined(OS_ANDROID) |
| 294 proxy_service_.reset( | 293 proxy_service_ = ProxyService::CreateUsingSystemProxyResolver( |
| 295 ProxyService::CreateUsingSystemProxyResolver( | 294 proxy_config_service, |
| 296 proxy_config_service, | 295 0, // This results in using the default value. |
| 297 0, // This results in using the default value. | 296 context->net_log()); |
| 298 context->net_log())); | |
| 299 } | 297 } |
| 300 storage->set_proxy_service(proxy_service_.release()); | 298 storage->set_proxy_service(proxy_service_.Pass()); |
| 301 | 299 |
| 302 storage->set_ssl_config_service(new SSLConfigServiceDefaults); | 300 storage->set_ssl_config_service(new SSLConfigServiceDefaults); |
| 303 HttpAuthHandlerRegistryFactory* http_auth_handler_registry_factory = | 301 scoped_ptr<HttpAuthHandlerRegistryFactory> http_auth_handler_registry_factory( |
| 304 HttpAuthHandlerRegistryFactory::CreateDefault(context->host_resolver()); | 302 HttpAuthHandlerRegistryFactory::CreateDefault(context->host_resolver())); |
| 305 for (size_t i = 0; i < extra_http_auth_handlers_.size(); ++i) { | 303 for (size_t i = 0; i < extra_http_auth_handlers_.size(); ++i) { |
| 306 http_auth_handler_registry_factory->RegisterSchemeFactory( | 304 http_auth_handler_registry_factory->RegisterSchemeFactory( |
| 307 extra_http_auth_handlers_[i].scheme, | 305 extra_http_auth_handlers_[i].scheme, |
| 308 extra_http_auth_handlers_[i].factory); | 306 extra_http_auth_handlers_[i].factory); |
| 309 } | 307 } |
| 310 storage->set_http_auth_handler_factory(http_auth_handler_registry_factory); | 308 storage->set_http_auth_handler_factory( |
| 309 http_auth_handler_registry_factory.Pass()); |
| 311 | 310 |
| 312 if (cookie_store_) { | 311 if (cookie_store_) { |
| 313 storage->set_cookie_store(cookie_store_.get()); | 312 storage->set_cookie_store(cookie_store_.get()); |
| 314 storage->set_channel_id_service(channel_id_service_.Pass()); | 313 storage->set_channel_id_service(channel_id_service_.Pass()); |
| 315 } else { | 314 } else { |
| 316 storage->set_cookie_store(new CookieMonster(NULL, NULL)); | 315 storage->set_cookie_store(new CookieMonster(NULL, NULL)); |
| 317 // TODO(mmenke): This always creates a file thread, even when it ends up | 316 // TODO(mmenke): This always creates a file thread, even when it ends up |
| 318 // not being used. Consider lazily creating the thread. | 317 // not being used. Consider lazily creating the thread. |
| 319 storage->set_channel_id_service(make_scoped_ptr(new ChannelIDService( | 318 storage->set_channel_id_service(make_scoped_ptr(new ChannelIDService( |
| 320 new DefaultChannelIDStore(NULL), context->GetFileTaskRunner()))); | 319 new DefaultChannelIDStore(NULL), context->GetFileTaskRunner()))); |
| 321 } | 320 } |
| 322 | 321 |
| 323 if (sdch_enabled_) { | 322 if (sdch_enabled_) { |
| 324 storage->set_sdch_manager( | 323 storage->set_sdch_manager( |
| 325 scoped_ptr<net::SdchManager>(new SdchManager()).Pass()); | 324 scoped_ptr<net::SdchManager>(new SdchManager()).Pass()); |
| 326 } | 325 } |
| 327 | 326 |
| 328 storage->set_transport_security_state(new TransportSecurityState()); | 327 storage->set_transport_security_state( |
| 328 make_scoped_ptr(new TransportSecurityState())); |
| 329 if (!transport_security_persister_path_.empty()) { | 329 if (!transport_security_persister_path_.empty()) { |
| 330 context->set_transport_security_persister( | 330 context->set_transport_security_persister( |
| 331 make_scoped_ptr<TransportSecurityPersister>( | 331 make_scoped_ptr<TransportSecurityPersister>( |
| 332 new TransportSecurityPersister(context->transport_security_state(), | 332 new TransportSecurityPersister(context->transport_security_state(), |
| 333 transport_security_persister_path_, | 333 transport_security_persister_path_, |
| 334 context->GetFileTaskRunner(), | 334 context->GetFileTaskRunner(), |
| 335 false))); | 335 false))); |
| 336 } | 336 } |
| 337 | 337 |
| 338 if (http_server_properties_) { | 338 if (http_server_properties_) { |
| 339 storage->set_http_server_properties(http_server_properties_.Pass()); | 339 storage->set_http_server_properties(http_server_properties_.Pass()); |
| 340 } else { | 340 } else { |
| 341 storage->set_http_server_properties( | 341 storage->set_http_server_properties( |
| 342 scoped_ptr<HttpServerProperties>(new HttpServerPropertiesImpl())); | 342 scoped_ptr<HttpServerProperties>(new HttpServerPropertiesImpl())); |
| 343 } | 343 } |
| 344 | 344 |
| 345 storage->set_cert_verifier(CertVerifier::CreateDefault()); | 345 storage->set_cert_verifier(CertVerifier::CreateDefault()); |
| 346 | 346 |
| 347 if (throttling_enabled_) | 347 if (throttling_enabled_) { |
| 348 storage->set_throttler_manager(new URLRequestThrottlerManager()); | 348 storage->set_throttler_manager( |
| 349 make_scoped_ptr(new URLRequestThrottlerManager())); |
| 350 } |
| 349 | 351 |
| 350 if (backoff_enabled_) | 352 if (backoff_enabled_) { |
| 351 storage->set_backoff_manager(new URLRequestBackoffManager()); | 353 storage->set_backoff_manager( |
| 354 make_scoped_ptr(new URLRequestBackoffManager())); |
| 355 } |
| 352 | 356 |
| 353 HttpNetworkSession::Params network_session_params; | 357 HttpNetworkSession::Params network_session_params; |
| 354 network_session_params.host_resolver = context->host_resolver(); | 358 network_session_params.host_resolver = context->host_resolver(); |
| 355 network_session_params.cert_verifier = context->cert_verifier(); | 359 network_session_params.cert_verifier = context->cert_verifier(); |
| 356 network_session_params.transport_security_state = | 360 network_session_params.transport_security_state = |
| 357 context->transport_security_state(); | 361 context->transport_security_state(); |
| 358 network_session_params.proxy_service = context->proxy_service(); | 362 network_session_params.proxy_service = context->proxy_service(); |
| 359 network_session_params.ssl_config_service = | 363 network_session_params.ssl_config_service = |
| 360 context->ssl_config_service(); | 364 context->ssl_config_service(); |
| 361 network_session_params.http_auth_handler_factory = | 365 network_session_params.http_auth_handler_factory = |
| 362 context->http_auth_handler_factory(); | 366 context->http_auth_handler_factory(); |
| 363 network_session_params.network_delegate = network_delegate; | 367 network_session_params.network_delegate = context->network_delegate(); |
| 364 network_session_params.http_server_properties = | 368 network_session_params.http_server_properties = |
| 365 context->http_server_properties(); | 369 context->http_server_properties(); |
| 366 network_session_params.net_log = context->net_log(); | 370 network_session_params.net_log = context->net_log(); |
| 367 | 371 |
| 368 network_session_params.ignore_certificate_errors = | 372 network_session_params.ignore_certificate_errors = |
| 369 http_network_session_params_.ignore_certificate_errors; | 373 http_network_session_params_.ignore_certificate_errors; |
| 370 network_session_params.host_mapping_rules = | 374 network_session_params.host_mapping_rules = |
| 371 http_network_session_params_.host_mapping_rules; | 375 http_network_session_params_.host_mapping_rules; |
| 372 network_session_params.testing_fixed_http_port = | 376 network_session_params.testing_fixed_http_port = |
| 373 http_network_session_params_.testing_fixed_http_port; | 377 http_network_session_params_.testing_fixed_http_port; |
| 374 network_session_params.testing_fixed_https_port = | 378 network_session_params.testing_fixed_https_port = |
| 375 http_network_session_params_.testing_fixed_https_port; | 379 http_network_session_params_.testing_fixed_https_port; |
| 376 network_session_params.use_alternative_services = | 380 network_session_params.use_alternative_services = |
| 377 http_network_session_params_.use_alternative_services; | 381 http_network_session_params_.use_alternative_services; |
| 378 network_session_params.trusted_spdy_proxy = | 382 network_session_params.trusted_spdy_proxy = |
| 379 http_network_session_params_.trusted_spdy_proxy; | 383 http_network_session_params_.trusted_spdy_proxy; |
| 380 network_session_params.next_protos = http_network_session_params_.next_protos; | 384 network_session_params.next_protos = http_network_session_params_.next_protos; |
| 381 network_session_params.enable_quic = http_network_session_params_.enable_quic; | 385 network_session_params.enable_quic = http_network_session_params_.enable_quic; |
| 382 network_session_params.enable_insecure_quic = | 386 network_session_params.enable_insecure_quic = |
| 383 http_network_session_params_.enable_insecure_quic; | 387 http_network_session_params_.enable_insecure_quic; |
| 384 network_session_params.quic_connection_options = | 388 network_session_params.quic_connection_options = |
| 385 http_network_session_params_.quic_connection_options; | 389 http_network_session_params_.quic_connection_options; |
| 386 | 390 |
| 387 HttpTransactionFactory* http_transaction_factory = NULL; | 391 scoped_ptr<HttpTransactionFactory> http_transaction_factory; |
| 388 if (http_cache_enabled_) { | 392 if (http_cache_enabled_) { |
| 389 network_session_params.channel_id_service = | 393 network_session_params.channel_id_service = |
| 390 context->channel_id_service(); | 394 context->channel_id_service(); |
| 391 HttpCache::BackendFactory* http_cache_backend = NULL; | 395 HttpCache::BackendFactory* http_cache_backend = NULL; |
| 392 if (http_cache_params_.type == HttpCacheParams::DISK) { | 396 if (http_cache_params_.type == HttpCacheParams::DISK) { |
| 393 http_cache_backend = new HttpCache::DefaultBackend( | 397 http_cache_backend = new HttpCache::DefaultBackend( |
| 394 DISK_CACHE, CACHE_BACKEND_DEFAULT, http_cache_params_.path, | 398 DISK_CACHE, CACHE_BACKEND_DEFAULT, http_cache_params_.path, |
| 395 http_cache_params_.max_size, context->GetFileTaskRunner()); | 399 http_cache_params_.max_size, context->GetFileTaskRunner()); |
| 396 } else { | 400 } else { |
| 397 http_cache_backend = | 401 http_cache_backend = |
| 398 HttpCache::DefaultBackend::InMemory(http_cache_params_.max_size); | 402 HttpCache::DefaultBackend::InMemory(http_cache_params_.max_size); |
| 399 } | 403 } |
| 400 | 404 |
| 401 http_transaction_factory = new HttpCache( | 405 http_transaction_factory.reset( |
| 402 network_session_params, http_cache_backend); | 406 new HttpCache(network_session_params, http_cache_backend)); |
| 403 } else { | 407 } else { |
| 404 scoped_refptr<HttpNetworkSession> network_session( | 408 scoped_refptr<HttpNetworkSession> network_session( |
| 405 new HttpNetworkSession(network_session_params)); | 409 new HttpNetworkSession(network_session_params)); |
| 406 | 410 |
| 407 http_transaction_factory = new HttpNetworkLayer(network_session.get()); | 411 http_transaction_factory.reset(new HttpNetworkLayer(network_session.get())); |
| 408 } | 412 } |
| 409 storage->set_http_transaction_factory(http_transaction_factory); | 413 storage->set_http_transaction_factory(http_transaction_factory.Pass()); |
| 410 | 414 |
| 411 URLRequestJobFactoryImpl* job_factory = new URLRequestJobFactoryImpl; | 415 URLRequestJobFactoryImpl* job_factory = new URLRequestJobFactoryImpl; |
| 412 if (data_enabled_) | 416 if (data_enabled_) |
| 413 job_factory->SetProtocolHandler("data", new DataProtocolHandler); | 417 job_factory->SetProtocolHandler("data", new DataProtocolHandler); |
| 414 | 418 |
| 415 #if !defined(DISABLE_FILE_SUPPORT) | 419 #if !defined(DISABLE_FILE_SUPPORT) |
| 416 if (file_enabled_) { | 420 if (file_enabled_) { |
| 417 job_factory->SetProtocolHandler( | 421 job_factory->SetProtocolHandler( |
| 418 "file", new FileProtocolHandler(context->GetFileTaskRunner())); | 422 "file", new FileProtocolHandler(context->GetFileTaskRunner())); |
| 419 } | 423 } |
| (...skipping 13 matching lines...) Expand all Loading... |
| 433 // Set up interceptors in the reverse order. | 437 // Set up interceptors in the reverse order. |
| 434 | 438 |
| 435 for (ScopedVector<net::URLRequestInterceptor>::reverse_iterator i = | 439 for (ScopedVector<net::URLRequestInterceptor>::reverse_iterator i = |
| 436 url_request_interceptors_.rbegin(); | 440 url_request_interceptors_.rbegin(); |
| 437 i != url_request_interceptors_.rend(); ++i) { | 441 i != url_request_interceptors_.rend(); ++i) { |
| 438 top_job_factory.reset(new net::URLRequestInterceptingJobFactory( | 442 top_job_factory.reset(new net::URLRequestInterceptingJobFactory( |
| 439 top_job_factory.Pass(), make_scoped_ptr(*i))); | 443 top_job_factory.Pass(), make_scoped_ptr(*i))); |
| 440 } | 444 } |
| 441 url_request_interceptors_.weak_clear(); | 445 url_request_interceptors_.weak_clear(); |
| 442 } | 446 } |
| 443 storage->set_job_factory(top_job_factory.release()); | 447 storage->set_job_factory(top_job_factory.Pass()); |
| 444 // TODO(willchan): Support sdch. | 448 // TODO(willchan): Support sdch. |
| 445 | 449 |
| 446 return context.Pass(); | 450 return context.Pass(); |
| 447 } | 451 } |
| 448 | 452 |
| 449 } // namespace net | 453 } // namespace net |
| OLD | NEW |