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 |