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