| 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 <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 185 | 185 |
| 186 URLRequestContextBuilder::HttpCacheParams::HttpCacheParams() | 186 URLRequestContextBuilder::HttpCacheParams::HttpCacheParams() |
| 187 : type(IN_MEMORY), | 187 : type(IN_MEMORY), |
| 188 max_size(0) {} | 188 max_size(0) {} |
| 189 URLRequestContextBuilder::HttpCacheParams::~HttpCacheParams() {} | 189 URLRequestContextBuilder::HttpCacheParams::~HttpCacheParams() {} |
| 190 | 190 |
| 191 URLRequestContextBuilder::URLRequestContextBuilder() | 191 URLRequestContextBuilder::URLRequestContextBuilder() |
| 192 : name_(nullptr), | 192 : name_(nullptr), |
| 193 enable_brotli_(false), | 193 enable_brotli_(false), |
| 194 network_quality_estimator_(nullptr), | 194 network_quality_estimator_(nullptr), |
| 195 shared_http_user_agent_settings_(nullptr), | |
| 196 data_enabled_(false), | 195 data_enabled_(false), |
| 197 #if !BUILDFLAG(DISABLE_FILE_SUPPORT) | 196 #if !BUILDFLAG(DISABLE_FILE_SUPPORT) |
| 198 file_enabled_(false), | 197 file_enabled_(false), |
| 199 #endif | 198 #endif |
| 200 #if !BUILDFLAG(DISABLE_FTP_SUPPORT) | 199 #if !BUILDFLAG(DISABLE_FTP_SUPPORT) |
| 201 ftp_enabled_(false), | 200 ftp_enabled_(false), |
| 202 #endif | 201 #endif |
| 203 http_cache_enabled_(true), | 202 http_cache_enabled_(true), |
| 204 throttling_enabled_(false), | 203 throttling_enabled_(false), |
| 205 sdch_enabled_(false), | 204 sdch_enabled_(false), |
| 206 cookie_store_set_by_client_(false), | 205 cookie_store_set_by_client_(false), |
| 207 transport_security_persister_readonly_(false), | |
| 208 net_log_(nullptr), | 206 net_log_(nullptr), |
| 209 shared_host_resolver_(nullptr), | |
| 210 pac_quick_check_enabled_(true), | 207 pac_quick_check_enabled_(true), |
| 211 pac_sanitize_url_policy_(ProxyService::SanitizeUrlPolicy::SAFE), | 208 pac_sanitize_url_policy_(ProxyService::SanitizeUrlPolicy::SAFE) { |
| 212 shared_proxy_delegate_(nullptr), | |
| 213 shared_http_auth_handler_factory_(nullptr), | |
| 214 shared_cert_verifier_(nullptr) { | |
| 215 } | 209 } |
| 216 | 210 |
| 217 URLRequestContextBuilder::~URLRequestContextBuilder() {} | 211 URLRequestContextBuilder::~URLRequestContextBuilder() {} |
| 218 | 212 |
| 219 void URLRequestContextBuilder::SetHttpNetworkSessionComponents( | 213 void URLRequestContextBuilder::SetHttpNetworkSessionComponents( |
| 220 const URLRequestContext* request_context, | 214 const URLRequestContext* request_context, |
| 221 HttpNetworkSession::Context* session_context) { | 215 HttpNetworkSession::Context* session_context) { |
| 222 session_context->host_resolver = request_context->host_resolver(); | 216 session_context->host_resolver = request_context->host_resolver(); |
| 223 session_context->cert_verifier = request_context->cert_verifier(); | 217 session_context->cert_verifier = request_context->cert_verifier(); |
| 224 session_context->transport_security_state = | 218 session_context->transport_security_state = |
| (...skipping 11 matching lines...) Expand all Loading... |
| 236 session_context->channel_id_service = request_context->channel_id_service(); | 230 session_context->channel_id_service = request_context->channel_id_service(); |
| 237 session_context->network_quality_provider = | 231 session_context->network_quality_provider = |
| 238 request_context->network_quality_estimator(); | 232 request_context->network_quality_estimator(); |
| 239 if (request_context->network_quality_estimator()) { | 233 if (request_context->network_quality_estimator()) { |
| 240 session_context->socket_performance_watcher_factory = | 234 session_context->socket_performance_watcher_factory = |
| 241 request_context->network_quality_estimator() | 235 request_context->network_quality_estimator() |
| 242 ->GetSocketPerformanceWatcherFactory(); | 236 ->GetSocketPerformanceWatcherFactory(); |
| 243 } | 237 } |
| 244 } | 238 } |
| 245 | 239 |
| 246 void URLRequestContextBuilder::set_accept_language( | |
| 247 const std::string& accept_language) { | |
| 248 DCHECK(!shared_http_user_agent_settings_); | |
| 249 accept_language_ = accept_language; | |
| 250 } | |
| 251 void URLRequestContextBuilder::set_user_agent(const std::string& user_agent) { | |
| 252 DCHECK(!shared_http_user_agent_settings_); | |
| 253 user_agent_ = user_agent; | |
| 254 } | |
| 255 void URLRequestContextBuilder::set_shared_http_user_agent_settings( | |
| 256 HttpUserAgentSettings* shared_http_user_agent_settings) { | |
| 257 DCHECK(accept_language_.empty()); | |
| 258 DCHECK(user_agent_.empty()); | |
| 259 shared_http_user_agent_settings_ = shared_http_user_agent_settings; | |
| 260 } | |
| 261 | |
| 262 void URLRequestContextBuilder::EnableHttpCache(const HttpCacheParams& params) { | 240 void URLRequestContextBuilder::EnableHttpCache(const HttpCacheParams& params) { |
| 263 http_cache_enabled_ = true; | 241 http_cache_enabled_ = true; |
| 264 http_cache_params_ = params; | 242 http_cache_params_ = params; |
| 265 } | 243 } |
| 266 | 244 |
| 267 void URLRequestContextBuilder::DisableHttpCache() { | 245 void URLRequestContextBuilder::DisableHttpCache() { |
| 268 http_cache_enabled_ = false; | 246 http_cache_enabled_ = false; |
| 269 http_cache_params_ = HttpCacheParams(); | 247 http_cache_params_ = HttpCacheParams(); |
| 270 } | 248 } |
| 271 | 249 |
| 272 void URLRequestContextBuilder::SetSpdyAndQuicEnabled(bool spdy_enabled, | 250 void URLRequestContextBuilder::SetSpdyAndQuicEnabled(bool spdy_enabled, |
| 273 bool quic_enabled) { | 251 bool quic_enabled) { |
| 274 http_network_session_params_.enable_http2 = spdy_enabled; | 252 http_network_session_params_.enable_http2 = spdy_enabled; |
| 275 http_network_session_params_.enable_quic = quic_enabled; | 253 http_network_session_params_.enable_quic = quic_enabled; |
| 276 } | 254 } |
| 277 | 255 |
| 278 void URLRequestContextBuilder::set_ct_verifier( | 256 void URLRequestContextBuilder::set_ct_verifier( |
| 279 std::unique_ptr<CTVerifier> ct_verifier) { | 257 std::unique_ptr<CTVerifier> ct_verifier) { |
| 280 ct_verifier_ = std::move(ct_verifier); | 258 ct_verifier_ = std::move(ct_verifier); |
| 281 } | 259 } |
| 282 | 260 |
| 283 void URLRequestContextBuilder::set_ct_policy_enforcer( | 261 void URLRequestContextBuilder::set_ct_policy_enforcer( |
| 284 std::unique_ptr<CTPolicyEnforcer> ct_policy_enforcer) { | 262 std::unique_ptr<CTPolicyEnforcer> ct_policy_enforcer) { |
| 285 ct_policy_enforcer_ = std::move(ct_policy_enforcer); | 263 ct_policy_enforcer_ = std::move(ct_policy_enforcer); |
| 286 } | 264 } |
| 287 | 265 |
| 288 void URLRequestContextBuilder::SetCertVerifier( | 266 void URLRequestContextBuilder::SetCertVerifier( |
| 289 std::unique_ptr<CertVerifier> cert_verifier) { | 267 std::unique_ptr<CertVerifier> cert_verifier) { |
| 290 DCHECK(!shared_cert_verifier_); | |
| 291 cert_verifier_ = std::move(cert_verifier); | 268 cert_verifier_ = std::move(cert_verifier); |
| 292 } | 269 } |
| 293 | 270 |
| 294 void URLRequestContextBuilder::set_shared_cert_verifier( | |
| 295 CertVerifier* shared_cert_verifier) { | |
| 296 DCHECK(!cert_verifier_); | |
| 297 shared_cert_verifier_ = shared_cert_verifier; | |
| 298 } | |
| 299 | |
| 300 #if BUILDFLAG(ENABLE_REPORTING) | 271 #if BUILDFLAG(ENABLE_REPORTING) |
| 301 void URLRequestContextBuilder::set_reporting_policy( | 272 void URLRequestContextBuilder::set_reporting_policy( |
| 302 std::unique_ptr<net::ReportingPolicy> reporting_policy) { | 273 std::unique_ptr<net::ReportingPolicy> reporting_policy) { |
| 303 reporting_policy_ = std::move(reporting_policy); | 274 reporting_policy_ = std::move(reporting_policy); |
| 304 } | 275 } |
| 305 #endif // BUILDFLAG(ENABLE_REPORTING) | 276 #endif // BUILDFLAG(ENABLE_REPORTING) |
| 306 | 277 |
| 307 void URLRequestContextBuilder::SetInterceptors( | 278 void URLRequestContextBuilder::SetInterceptors( |
| 308 std::vector<std::unique_ptr<URLRequestInterceptor>> | 279 std::vector<std::unique_ptr<URLRequestInterceptor>> |
| 309 url_request_interceptors) { | 280 url_request_interceptors) { |
| 310 url_request_interceptors_ = std::move(url_request_interceptors); | 281 url_request_interceptors_ = std::move(url_request_interceptors); |
| 311 } | 282 } |
| 312 | 283 |
| 313 void URLRequestContextBuilder::set_create_intercepting_job_factory( | |
| 314 CreateInterceptingJobFactory create_intercepting_job_factory) { | |
| 315 DCHECK(!create_intercepting_job_factory_); | |
| 316 create_intercepting_job_factory_ = std::move(create_intercepting_job_factory); | |
| 317 } | |
| 318 | |
| 319 void URLRequestContextBuilder::SetCookieAndChannelIdStores( | 284 void URLRequestContextBuilder::SetCookieAndChannelIdStores( |
| 320 std::unique_ptr<CookieStore> cookie_store, | 285 std::unique_ptr<CookieStore> cookie_store, |
| 321 std::unique_ptr<ChannelIDService> channel_id_service) { | 286 std::unique_ptr<ChannelIDService> channel_id_service) { |
| 322 cookie_store_set_by_client_ = true; | 287 cookie_store_set_by_client_ = true; |
| 323 // If |cookie_store| is NULL, |channel_id_service| must be NULL too. | 288 // If |cookie_store| is NULL, |channel_id_service| must be NULL too. |
| 324 DCHECK(cookie_store || !channel_id_service); | 289 DCHECK(cookie_store || !channel_id_service); |
| 325 cookie_store_ = std::move(cookie_store); | 290 cookie_store_ = std::move(cookie_store); |
| 326 channel_id_service_ = std::move(channel_id_service); | 291 channel_id_service_ = std::move(channel_id_service); |
| 327 } | 292 } |
| 328 | 293 |
| 329 void URLRequestContextBuilder::SetCacheThreadTaskRunner( | 294 void URLRequestContextBuilder::SetCacheThreadTaskRunner( |
| 330 scoped_refptr<base::SingleThreadTaskRunner> cache_thread_task_runner) { | 295 scoped_refptr<base::SingleThreadTaskRunner> cache_thread_task_runner) { |
| 331 cache_thread_task_runner_ = std::move(cache_thread_task_runner); | 296 cache_thread_task_runner_ = std::move(cache_thread_task_runner); |
| 332 } | 297 } |
| 333 | 298 |
| 334 void URLRequestContextBuilder::SetProtocolHandler( | 299 void URLRequestContextBuilder::SetProtocolHandler( |
| 335 const std::string& scheme, | 300 const std::string& scheme, |
| 336 std::unique_ptr<URLRequestJobFactory::ProtocolHandler> protocol_handler) { | 301 std::unique_ptr<URLRequestJobFactory::ProtocolHandler> protocol_handler) { |
| 337 DCHECK(protocol_handler); | 302 DCHECK(protocol_handler); |
| 338 // If a consumer sets a ProtocolHandler and then overwrites it with another, | |
| 339 // it's probably a bug. | |
| 340 DCHECK_EQ(0u, protocol_handlers_.count(scheme)); | |
| 341 protocol_handlers_[scheme] = std::move(protocol_handler); | 303 protocol_handlers_[scheme] = std::move(protocol_handler); |
| 342 } | 304 } |
| 343 | 305 |
| 344 void URLRequestContextBuilder::set_host_resolver( | |
| 345 std::unique_ptr<HostResolver> host_resolver) { | |
| 346 DCHECK(!shared_host_resolver_); | |
| 347 host_resolver_ = std::move(host_resolver); | |
| 348 } | |
| 349 | |
| 350 void URLRequestContextBuilder::set_shared_host_resolver( | |
| 351 HostResolver* shared_host_resolver) { | |
| 352 DCHECK(!host_resolver_); | |
| 353 shared_host_resolver_ = shared_host_resolver; | |
| 354 } | |
| 355 | |
| 356 void URLRequestContextBuilder::set_proxy_delegate( | |
| 357 std::unique_ptr<ProxyDelegate> proxy_delegate) { | |
| 358 DCHECK(!shared_proxy_delegate_); | |
| 359 proxy_delegate_ = std::move(proxy_delegate); | |
| 360 } | |
| 361 | |
| 362 void URLRequestContextBuilder::set_shared_proxy_delegate( | |
| 363 ProxyDelegate* shared_proxy_delegate) { | |
| 364 DCHECK(!proxy_delegate_); | |
| 365 shared_proxy_delegate_ = shared_proxy_delegate; | |
| 366 } | |
| 367 | |
| 368 void URLRequestContextBuilder::SetHttpAuthHandlerFactory( | 306 void URLRequestContextBuilder::SetHttpAuthHandlerFactory( |
| 369 std::unique_ptr<HttpAuthHandlerFactory> factory) { | 307 std::unique_ptr<HttpAuthHandlerFactory> factory) { |
| 370 DCHECK(!shared_http_auth_handler_factory_); | |
| 371 http_auth_handler_factory_ = std::move(factory); | 308 http_auth_handler_factory_ = std::move(factory); |
| 372 } | 309 } |
| 373 | 310 |
| 374 void URLRequestContextBuilder::set_shared_http_auth_handler_factory( | |
| 375 HttpAuthHandlerFactory* shared_http_auth_handler_factory) { | |
| 376 DCHECK(!http_auth_handler_factory_); | |
| 377 shared_http_auth_handler_factory_ = shared_http_auth_handler_factory; | |
| 378 } | |
| 379 | |
| 380 void URLRequestContextBuilder::SetHttpServerProperties( | 311 void URLRequestContextBuilder::SetHttpServerProperties( |
| 381 std::unique_ptr<HttpServerProperties> http_server_properties) { | 312 std::unique_ptr<HttpServerProperties> http_server_properties) { |
| 382 http_server_properties_ = std::move(http_server_properties); | 313 http_server_properties_ = std::move(http_server_properties); |
| 383 } | 314 } |
| 384 | 315 |
| 385 std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() { | 316 std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() { |
| 386 std::unique_ptr<ContainerURLRequestContext> context( | 317 std::unique_ptr<ContainerURLRequestContext> context( |
| 387 new ContainerURLRequestContext()); | 318 new ContainerURLRequestContext()); |
| 388 URLRequestContextStorage* storage = context->storage(); | 319 URLRequestContextStorage* storage = context->storage(); |
| 389 | 320 |
| 390 context->set_name(name_); | 321 context->set_name(name_); |
| 391 context->set_enable_brotli(enable_brotli_); | 322 context->set_enable_brotli(enable_brotli_); |
| 392 context->set_network_quality_estimator(network_quality_estimator_); | 323 context->set_network_quality_estimator(network_quality_estimator_); |
| 393 | 324 |
| 394 if (shared_http_user_agent_settings_) { | 325 storage->set_http_user_agent_settings( |
| 395 context->set_http_user_agent_settings(shared_http_user_agent_settings_); | 326 base::MakeUnique<StaticHttpUserAgentSettings>(accept_language_, |
| 396 } else { | 327 user_agent_)); |
| 397 storage->set_http_user_agent_settings( | |
| 398 base::MakeUnique<StaticHttpUserAgentSettings>(accept_language_, | |
| 399 user_agent_)); | |
| 400 } | |
| 401 | 328 |
| 402 if (!network_delegate_) | 329 if (!network_delegate_) |
| 403 network_delegate_.reset(new BasicNetworkDelegate); | 330 network_delegate_.reset(new BasicNetworkDelegate); |
| 404 storage->set_network_delegate(std::move(network_delegate_)); | 331 storage->set_network_delegate(std::move(network_delegate_)); |
| 405 | 332 |
| 406 if (net_log_) { | 333 if (net_log_) { |
| 407 // Unlike the other builder parameters, |net_log_| is not owned by the | 334 // Unlike the other builder parameters, |net_log_| is not owned by the |
| 408 // builder or resulting context. | 335 // builder or resulting context. |
| 409 context->set_net_log(net_log_); | 336 context->set_net_log(net_log_); |
| 410 } else { | 337 } else { |
| 411 storage->set_net_log(base::WrapUnique(new NetLog)); | 338 storage->set_net_log(base::WrapUnique(new NetLog)); |
| 412 } | 339 } |
| 413 | 340 |
| 414 if (host_resolver_) { | 341 if (!host_resolver_) { |
| 415 DCHECK(!shared_host_resolver_); | 342 host_resolver_ = HostResolver::CreateDefaultResolver(context->net_log()); |
| 416 storage->set_host_resolver(std::move(host_resolver_)); | |
| 417 } else if (shared_host_resolver_) { | |
| 418 context->set_host_resolver(shared_host_resolver_); | |
| 419 } else { | |
| 420 storage->set_host_resolver( | |
| 421 HostResolver::CreateDefaultResolver(context->net_log())); | |
| 422 } | 343 } |
| 344 storage->set_host_resolver(std::move(host_resolver_)); |
| 423 | 345 |
| 424 if (ssl_config_service_) { | 346 if (ssl_config_service_) { |
| 425 // This takes a raw pointer, but |storage| will hold onto a reference to the | 347 // This takes a raw pointer, but |storage| will hold onto a reference to the |
| 426 // service. | 348 // service. |
| 427 storage->set_ssl_config_service(ssl_config_service_.get()); | 349 storage->set_ssl_config_service(ssl_config_service_.get()); |
| 428 } else { | 350 } else { |
| 429 storage->set_ssl_config_service(new SSLConfigServiceDefaults); | 351 storage->set_ssl_config_service(new SSLConfigServiceDefaults); |
| 430 } | 352 } |
| 431 | 353 |
| 432 if (http_auth_handler_factory_) { | 354 if (!http_auth_handler_factory_) { |
| 433 DCHECK(!shared_http_auth_handler_factory_); | 355 http_auth_handler_factory_ = |
| 434 storage->set_http_auth_handler_factory( | 356 HttpAuthHandlerRegistryFactory::CreateDefault(context->host_resolver()); |
| 435 std::move(http_auth_handler_factory_)); | |
| 436 } else if (shared_http_auth_handler_factory_) { | |
| 437 context->set_http_auth_handler_factory(shared_http_auth_handler_factory_); | |
| 438 } else { | |
| 439 storage->set_http_auth_handler_factory( | |
| 440 HttpAuthHandlerRegistryFactory::CreateDefault( | |
| 441 context->host_resolver())); | |
| 442 } | 357 } |
| 443 | 358 |
| 359 storage->set_http_auth_handler_factory(std::move(http_auth_handler_factory_)); |
| 360 |
| 444 if (cookie_store_set_by_client_) { | 361 if (cookie_store_set_by_client_) { |
| 445 storage->set_cookie_store(std::move(cookie_store_)); | 362 storage->set_cookie_store(std::move(cookie_store_)); |
| 446 storage->set_channel_id_service(std::move(channel_id_service_)); | 363 storage->set_channel_id_service(std::move(channel_id_service_)); |
| 447 } else { | 364 } else { |
| 448 std::unique_ptr<CookieStore> cookie_store( | 365 std::unique_ptr<CookieStore> cookie_store( |
| 449 new CookieMonster(nullptr, nullptr)); | 366 new CookieMonster(nullptr, nullptr)); |
| 450 std::unique_ptr<ChannelIDService> channel_id_service( | 367 std::unique_ptr<ChannelIDService> channel_id_service( |
| 451 new ChannelIDService(new DefaultChannelIDStore(NULL))); | 368 new ChannelIDService(new DefaultChannelIDStore(NULL))); |
| 452 cookie_store->SetChannelIDServiceID(channel_id_service->GetUniqueID()); | 369 cookie_store->SetChannelIDServiceID(channel_id_service->GetUniqueID()); |
| 453 storage->set_cookie_store(std::move(cookie_store)); | 370 storage->set_cookie_store(std::move(cookie_store)); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 465 // Use a low priority because saving this should not block anything | 382 // Use a low priority because saving this should not block anything |
| 466 // user-visible. Block shutdown to ensure it does get persisted to disk, | 383 // user-visible. Block shutdown to ensure it does get persisted to disk, |
| 467 // since it contains security-relevant information. | 384 // since it contains security-relevant information. |
| 468 scoped_refptr<base::SequencedTaskRunner> task_runner( | 385 scoped_refptr<base::SequencedTaskRunner> task_runner( |
| 469 base::CreateSequencedTaskRunnerWithTraits( | 386 base::CreateSequencedTaskRunnerWithTraits( |
| 470 {base::MayBlock(), base::TaskPriority::BACKGROUND, | 387 {base::MayBlock(), base::TaskPriority::BACKGROUND, |
| 471 base::TaskShutdownBehavior::BLOCK_SHUTDOWN})); | 388 base::TaskShutdownBehavior::BLOCK_SHUTDOWN})); |
| 472 | 389 |
| 473 context->set_transport_security_persister( | 390 context->set_transport_security_persister( |
| 474 base::WrapUnique<TransportSecurityPersister>( | 391 base::WrapUnique<TransportSecurityPersister>( |
| 475 new TransportSecurityPersister( | 392 new TransportSecurityPersister(context->transport_security_state(), |
| 476 context->transport_security_state(), | 393 transport_security_persister_path_, |
| 477 transport_security_persister_path_, task_runner, | 394 task_runner, false))); |
| 478 transport_security_persister_readonly_))); | |
| 479 } | 395 } |
| 480 | 396 |
| 481 if (http_server_properties_) { | 397 if (http_server_properties_) { |
| 482 storage->set_http_server_properties(std::move(http_server_properties_)); | 398 storage->set_http_server_properties(std::move(http_server_properties_)); |
| 483 } else { | 399 } else { |
| 484 storage->set_http_server_properties( | 400 storage->set_http_server_properties( |
| 485 std::unique_ptr<HttpServerProperties>(new HttpServerPropertiesImpl())); | 401 std::unique_ptr<HttpServerProperties>(new HttpServerPropertiesImpl())); |
| 486 } | 402 } |
| 487 | 403 |
| 488 if (cert_verifier_) { | 404 if (cert_verifier_) { |
| 489 DCHECK(!shared_cert_verifier_); | |
| 490 storage->set_cert_verifier(std::move(cert_verifier_)); | 405 storage->set_cert_verifier(std::move(cert_verifier_)); |
| 491 } else if (shared_cert_verifier_) { | |
| 492 context->set_cert_verifier(shared_cert_verifier_); | |
| 493 } else { | 406 } else { |
| 494 storage->set_cert_verifier(CertVerifier::CreateDefault()); | 407 storage->set_cert_verifier(CertVerifier::CreateDefault()); |
| 495 } | 408 } |
| 496 | 409 |
| 497 if (ct_verifier_) { | 410 if (ct_verifier_) { |
| 498 storage->set_cert_transparency_verifier(std::move(ct_verifier_)); | 411 storage->set_cert_transparency_verifier(std::move(ct_verifier_)); |
| 499 } else { | 412 } else { |
| 500 std::unique_ptr<MultiLogCTVerifier> ct_verifier = | 413 std::unique_ptr<MultiLogCTVerifier> ct_verifier = |
| 501 base::MakeUnique<MultiLogCTVerifier>(); | 414 base::MakeUnique<MultiLogCTVerifier>(); |
| 502 ct_verifier->AddLogs(ct::CreateLogVerifiersForKnownLogs()); | 415 ct_verifier->AddLogs(ct::CreateLogVerifiersForKnownLogs()); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 528 context->network_delegate(), context->net_log()); | 441 context->network_delegate(), context->net_log()); |
| 529 proxy_service_->set_quick_check_enabled(pac_quick_check_enabled_); | 442 proxy_service_->set_quick_check_enabled(pac_quick_check_enabled_); |
| 530 proxy_service_->set_sanitize_url_policy(pac_sanitize_url_policy_); | 443 proxy_service_->set_sanitize_url_policy(pac_sanitize_url_policy_); |
| 531 } | 444 } |
| 532 storage->set_proxy_service(std::move(proxy_service_)); | 445 storage->set_proxy_service(std::move(proxy_service_)); |
| 533 | 446 |
| 534 HttpNetworkSession::Context network_session_context; | 447 HttpNetworkSession::Context network_session_context; |
| 535 SetHttpNetworkSessionComponents(context.get(), &network_session_context); | 448 SetHttpNetworkSessionComponents(context.get(), &network_session_context); |
| 536 | 449 |
| 537 if (proxy_delegate_) { | 450 if (proxy_delegate_) { |
| 538 DCHECK(!shared_proxy_delegate_); | |
| 539 network_session_context.proxy_delegate = proxy_delegate_.get(); | 451 network_session_context.proxy_delegate = proxy_delegate_.get(); |
| 540 storage->set_proxy_delegate(std::move(proxy_delegate_)); | 452 storage->set_proxy_delegate(std::move(proxy_delegate_)); |
| 541 } else if (shared_proxy_delegate_) { | |
| 542 network_session_context.proxy_delegate = shared_proxy_delegate_; | |
| 543 } | 453 } |
| 544 | 454 |
| 545 storage->set_http_network_session(base::MakeUnique<HttpNetworkSession>( | 455 storage->set_http_network_session(base::MakeUnique<HttpNetworkSession>( |
| 546 http_network_session_params_, network_session_context)); | 456 http_network_session_params_, network_session_context)); |
| 547 | 457 |
| 548 std::unique_ptr<HttpTransactionFactory> http_transaction_factory; | 458 std::unique_ptr<HttpTransactionFactory> http_transaction_factory; |
| 549 if (http_cache_enabled_) { | 459 if (http_cache_enabled_) { |
| 550 std::unique_ptr<HttpCache::BackendFactory> http_cache_backend; | 460 std::unique_ptr<HttpCache::BackendFactory> http_cache_backend; |
| 551 if (http_cache_params_.type != HttpCacheParams::IN_MEMORY) { | 461 if (http_cache_params_.type != HttpCacheParams::IN_MEMORY) { |
| 552 if (!cache_thread_task_runner_) { | 462 if (!cache_thread_task_runner_) { |
| 553 cache_thread_task_runner_ = | 463 cache_thread_task_runner_ = |
| 554 base::CreateSingleThreadTaskRunnerWithTraits( | 464 base::CreateSingleThreadTaskRunnerWithTraits( |
| 555 {base::MayBlock(), base::TaskPriority::USER_BLOCKING, | 465 {base::MayBlock(), base::TaskPriority::USER_BLOCKING, |
| 556 base::TaskShutdownBehavior::BLOCK_SHUTDOWN}); | 466 base::TaskShutdownBehavior::BLOCK_SHUTDOWN}); |
| 557 } | 467 } |
| 558 // TODO(mmenke): Maybe merge BackendType and HttpCacheParams::Type? The | 468 BackendType backend_type = |
| 559 // first doesn't include in memory, so may require some work. | 469 http_cache_params_.type == HttpCacheParams::DISK |
| 560 BackendType backend_type = CACHE_BACKEND_DEFAULT; | 470 ? CACHE_BACKEND_DEFAULT |
| 561 switch (http_cache_params_.type) { | 471 : CACHE_BACKEND_SIMPLE; |
| 562 case HttpCacheParams::DISK: | |
| 563 backend_type = CACHE_BACKEND_DEFAULT; | |
| 564 break; | |
| 565 case HttpCacheParams::DISK_BLOCKFILE: | |
| 566 backend_type = CACHE_BACKEND_BLOCKFILE; | |
| 567 break; | |
| 568 case HttpCacheParams::DISK_SIMPLE: | |
| 569 backend_type = CACHE_BACKEND_SIMPLE; | |
| 570 break; | |
| 571 case HttpCacheParams::IN_MEMORY: | |
| 572 NOTREACHED(); | |
| 573 break; | |
| 574 } | |
| 575 http_cache_backend.reset(new HttpCache::DefaultBackend( | 472 http_cache_backend.reset(new HttpCache::DefaultBackend( |
| 576 DISK_CACHE, backend_type, http_cache_params_.path, | 473 DISK_CACHE, backend_type, http_cache_params_.path, |
| 577 http_cache_params_.max_size, cache_thread_task_runner_)); | 474 http_cache_params_.max_size, cache_thread_task_runner_)); |
| 578 } else { | 475 } else { |
| 579 http_cache_backend = | 476 http_cache_backend = |
| 580 HttpCache::DefaultBackend::InMemory(http_cache_params_.max_size); | 477 HttpCache::DefaultBackend::InMemory(http_cache_params_.max_size); |
| 581 } | 478 } |
| 582 | 479 |
| 583 http_transaction_factory.reset(new HttpCache( | 480 http_transaction_factory.reset(new HttpCache( |
| 584 storage->http_network_session(), std::move(http_cache_backend), true)); | 481 storage->http_network_session(), std::move(http_cache_backend), true)); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 622 if (!url_request_interceptors_.empty()) { | 519 if (!url_request_interceptors_.empty()) { |
| 623 // Set up interceptors in the reverse order. | 520 // Set up interceptors in the reverse order. |
| 624 | 521 |
| 625 for (auto i = url_request_interceptors_.rbegin(); | 522 for (auto i = url_request_interceptors_.rbegin(); |
| 626 i != url_request_interceptors_.rend(); ++i) { | 523 i != url_request_interceptors_.rend(); ++i) { |
| 627 top_job_factory.reset(new net::URLRequestInterceptingJobFactory( | 524 top_job_factory.reset(new net::URLRequestInterceptingJobFactory( |
| 628 std::move(top_job_factory), std::move(*i))); | 525 std::move(top_job_factory), std::move(*i))); |
| 629 } | 526 } |
| 630 url_request_interceptors_.clear(); | 527 url_request_interceptors_.clear(); |
| 631 } | 528 } |
| 632 if (create_intercepting_job_factory_) { | |
| 633 top_job_factory = std::move(create_intercepting_job_factory_) | |
| 634 .Run(std::move(top_job_factory)); | |
| 635 } | |
| 636 storage->set_job_factory(std::move(top_job_factory)); | 529 storage->set_job_factory(std::move(top_job_factory)); |
| 637 | 530 |
| 638 #if BUILDFLAG(ENABLE_REPORTING) | 531 #if BUILDFLAG(ENABLE_REPORTING) |
| 639 if (reporting_policy_) { | 532 if (reporting_policy_) { |
| 640 storage->set_reporting_service( | 533 storage->set_reporting_service( |
| 641 ReportingService::Create(*reporting_policy_, context.get())); | 534 ReportingService::Create(*reporting_policy_, context.get())); |
| 642 } | 535 } |
| 643 #endif // BUILDFLAG(ENABLE_REPORTING) | 536 #endif // BUILDFLAG(ENABLE_REPORTING) |
| 644 | 537 |
| 645 return std::move(context); | 538 return std::move(context); |
| 646 } | 539 } |
| 647 | 540 |
| 648 std::unique_ptr<ProxyService> URLRequestContextBuilder::CreateProxyService( | 541 std::unique_ptr<ProxyService> URLRequestContextBuilder::CreateProxyService( |
| 649 std::unique_ptr<ProxyConfigService> proxy_config_service, | 542 std::unique_ptr<ProxyConfigService> proxy_config_service, |
| 650 URLRequestContext* url_request_context, | 543 URLRequestContext* url_request_context, |
| 651 HostResolver* host_resolver, | 544 HostResolver* host_resolver, |
| 652 NetworkDelegate* network_delegate, | 545 NetworkDelegate* network_delegate, |
| 653 NetLog* net_log) { | 546 NetLog* net_log) { |
| 654 return ProxyService::CreateUsingSystemProxyResolver( | 547 return ProxyService::CreateUsingSystemProxyResolver( |
| 655 std::move(proxy_config_service), net_log); | 548 std::move(proxy_config_service), net_log); |
| 656 } | 549 } |
| 657 | 550 |
| 658 } // namespace net | 551 } // namespace net |
| OLD | NEW |