OLD | NEW |
1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2016 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/http/http_stream_factory_impl_job_controller.h" | 5 #include "net/http/http_stream_factory_impl_job_controller.h" |
6 | 6 |
7 #include "base/metrics/histogram_macros.h" | 7 #include "base/metrics/histogram_macros.h" |
8 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "base/values.h" | 10 #include "base/values.h" |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 | 55 |
56 bool HttpStreamFactoryImpl::JobController::for_websockets() { | 56 bool HttpStreamFactoryImpl::JobController::for_websockets() { |
57 return factory_->for_websockets_; | 57 return factory_->for_websockets_; |
58 } | 58 } |
59 | 59 |
60 HttpStreamFactoryImpl::Request* HttpStreamFactoryImpl::JobController::Start( | 60 HttpStreamFactoryImpl::Request* HttpStreamFactoryImpl::JobController::Start( |
61 const HttpRequestInfo& request_info, | 61 const HttpRequestInfo& request_info, |
62 HttpStreamRequest::Delegate* delegate, | 62 HttpStreamRequest::Delegate* delegate, |
63 WebSocketHandshakeStreamBase::CreateHelper* | 63 WebSocketHandshakeStreamBase::CreateHelper* |
64 websocket_handshake_stream_create_helper, | 64 websocket_handshake_stream_create_helper, |
65 const BoundNetLog& net_log, | 65 const NetLogWithSource& net_log, |
66 HttpStreamRequest::StreamType stream_type, | 66 HttpStreamRequest::StreamType stream_type, |
67 RequestPriority priority, | 67 RequestPriority priority, |
68 const SSLConfig& server_ssl_config, | 68 const SSLConfig& server_ssl_config, |
69 const SSLConfig& proxy_ssl_config) { | 69 const SSLConfig& proxy_ssl_config) { |
70 DCHECK(factory_); | 70 DCHECK(factory_); |
71 DCHECK(!request_); | 71 DCHECK(!request_); |
72 | 72 |
73 request_ = new Request(request_info.url, this, delegate, | 73 request_ = new Request(request_info.url, this, delegate, |
74 websocket_handshake_stream_create_helper, net_log, | 74 websocket_handshake_stream_create_helper, net_log, |
75 stream_type); | 75 stream_type); |
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
407 DCHECK(job->using_spdy()); | 407 DCHECK(job->using_spdy()); |
408 | 408 |
409 bool is_job_orphaned = job_bound_ && bound_job_ != job; | 409 bool is_job_orphaned = job_bound_ && bound_job_ != job; |
410 | 410 |
411 // Cache these values in case the job gets deleted. | 411 // Cache these values in case the job gets deleted. |
412 const SSLConfig used_ssl_config = job->server_ssl_config(); | 412 const SSLConfig used_ssl_config = job->server_ssl_config(); |
413 const ProxyInfo used_proxy_info = job->proxy_info(); | 413 const ProxyInfo used_proxy_info = job->proxy_info(); |
414 const bool was_alpn_negotiated = job->was_alpn_negotiated(); | 414 const bool was_alpn_negotiated = job->was_alpn_negotiated(); |
415 const NextProto negotiated_protocol = job->negotiated_protocol(); | 415 const NextProto negotiated_protocol = job->negotiated_protocol(); |
416 const bool using_spdy = job->using_spdy(); | 416 const bool using_spdy = job->using_spdy(); |
417 const BoundNetLog net_log = job->net_log(); | 417 const NetLogWithSource net_log = job->net_log(); |
418 | 418 |
419 // Cache this so we can still use it if the JobController is deleted. | 419 // Cache this so we can still use it if the JobController is deleted. |
420 HttpStreamFactoryImpl* factory = factory_; | 420 HttpStreamFactoryImpl* factory = factory_; |
421 | 421 |
422 // Notify |request_|. | 422 // Notify |request_|. |
423 if (!is_preconnect_ && !is_job_orphaned) { | 423 if (!is_preconnect_ && !is_job_orphaned) { |
424 if (job->job_type() == MAIN && alternative_job_failed_) | 424 if (job->job_type() == MAIN && alternative_job_failed_) |
425 ReportBrokenAlternativeService(); | 425 ReportBrokenAlternativeService(); |
426 | 426 |
427 DCHECK(request_); | 427 DCHECK(request_); |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
587 DCHECK(base::ContainsKey(spdy_session_request_map, *spdy_session_key)); | 587 DCHECK(base::ContainsKey(spdy_session_request_map, *spdy_session_key)); |
588 RequestSet& request_set = spdy_session_request_map[*spdy_session_key]; | 588 RequestSet& request_set = spdy_session_request_map[*spdy_session_key]; |
589 DCHECK(base::ContainsKey(request_set, request_)); | 589 DCHECK(base::ContainsKey(request_set, request_)); |
590 request_set.erase(request_); | 590 request_set.erase(request_); |
591 if (request_set.empty()) | 591 if (request_set.empty()) |
592 spdy_session_request_map.erase(*spdy_session_key); | 592 spdy_session_request_map.erase(*spdy_session_key); |
593 request_->ResetSpdySessionKey(); | 593 request_->ResetSpdySessionKey(); |
594 } | 594 } |
595 } | 595 } |
596 | 596 |
597 const BoundNetLog* HttpStreamFactoryImpl::JobController::GetNetLog( | 597 const NetLogWithSource* HttpStreamFactoryImpl::JobController::GetNetLog( |
598 Job* job) const { | 598 Job* job) const { |
599 if (is_preconnect_ || (job_bound_ && bound_job_ != job)) | 599 if (is_preconnect_ || (job_bound_ && bound_job_ != job)) |
600 return nullptr; | 600 return nullptr; |
601 DCHECK(request_); | 601 DCHECK(request_); |
602 return &request_->net_log(); | 602 return &request_->net_log(); |
603 } | 603 } |
604 | 604 |
605 void HttpStreamFactoryImpl::JobController::MaybeSetWaitTimeForMainJob( | 605 void HttpStreamFactoryImpl::JobController::MaybeSetWaitTimeForMainJob( |
606 const base::TimeDelta& delay) { | 606 const base::TimeDelta& delay) { |
607 if (main_job_is_blocked_) | 607 if (main_job_is_blocked_) |
608 main_job_wait_time_ = delay; | 608 main_job_wait_time_ = delay; |
609 } | 609 } |
610 | 610 |
611 WebSocketHandshakeStreamBase::CreateHelper* HttpStreamFactoryImpl:: | 611 WebSocketHandshakeStreamBase::CreateHelper* HttpStreamFactoryImpl:: |
612 JobController::websocket_handshake_stream_create_helper() { | 612 JobController::websocket_handshake_stream_create_helper() { |
613 DCHECK(request_); | 613 DCHECK(request_); |
614 return request_->websocket_handshake_stream_create_helper(); | 614 return request_->websocket_handshake_stream_create_helper(); |
615 } | 615 } |
616 | 616 |
617 void HttpStreamFactoryImpl::JobController::CreateJobs( | 617 void HttpStreamFactoryImpl::JobController::CreateJobs( |
618 const HttpRequestInfo& request_info, | 618 const HttpRequestInfo& request_info, |
619 RequestPriority priority, | 619 RequestPriority priority, |
620 const SSLConfig& server_ssl_config, | 620 const SSLConfig& server_ssl_config, |
621 const SSLConfig& proxy_ssl_config, | 621 const SSLConfig& proxy_ssl_config, |
622 HttpStreamRequest::Delegate* delegate, | 622 HttpStreamRequest::Delegate* delegate, |
623 HttpStreamRequest::StreamType stream_type, | 623 HttpStreamRequest::StreamType stream_type, |
624 const BoundNetLog& net_log) { | 624 const NetLogWithSource& net_log) { |
625 DCHECK(!main_job_); | 625 DCHECK(!main_job_); |
626 DCHECK(!alternative_job_); | 626 DCHECK(!alternative_job_); |
627 HostPortPair destination(HostPortPair::FromURL(request_info.url)); | 627 HostPortPair destination(HostPortPair::FromURL(request_info.url)); |
628 GURL origin_url = ApplyHostMappingRules(request_info.url, &destination); | 628 GURL origin_url = ApplyHostMappingRules(request_info.url, &destination); |
629 | 629 |
630 main_job_.reset(job_factory_->CreateJob( | 630 main_job_.reset(job_factory_->CreateJob( |
631 this, MAIN, session_, request_info, priority, server_ssl_config, | 631 this, MAIN, session_, request_info, priority, server_ssl_config, |
632 proxy_ssl_config, destination, origin_url, net_log.net_log())); | 632 proxy_ssl_config, destination, origin_url, net_log.net_log())); |
633 AttachJob(main_job_.get()); | 633 AttachJob(main_job_.get()); |
634 | 634 |
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1084 } | 1084 } |
1085 | 1085 |
1086 void HttpStreamFactoryImpl::JobController::StartAlternativeProxyServerJob() { | 1086 void HttpStreamFactoryImpl::JobController::StartAlternativeProxyServerJob() { |
1087 if (!alternative_job_ || !request_) | 1087 if (!alternative_job_ || !request_) |
1088 return; | 1088 return; |
1089 DCHECK(alternative_job_->alternative_proxy_server().is_valid()); | 1089 DCHECK(alternative_job_->alternative_proxy_server().is_valid()); |
1090 alternative_job_->Start(request_->stream_type()); | 1090 alternative_job_->Start(request_->stream_type()); |
1091 } | 1091 } |
1092 | 1092 |
1093 } // namespace net | 1093 } // namespace net |
OLD | NEW |