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 |