| 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 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 406 DCHECK(job->using_spdy()); | 406 DCHECK(job->using_spdy()); |
| 407 | 407 |
| 408 bool is_job_orphaned = job_bound_ && bound_job_ != job; | 408 bool is_job_orphaned = job_bound_ && bound_job_ != job; |
| 409 | 409 |
| 410 // Cache these values in case the job gets deleted. | 410 // Cache these values in case the job gets deleted. |
| 411 const SSLConfig used_ssl_config = job->server_ssl_config(); | 411 const SSLConfig used_ssl_config = job->server_ssl_config(); |
| 412 const ProxyInfo used_proxy_info = job->proxy_info(); | 412 const ProxyInfo used_proxy_info = job->proxy_info(); |
| 413 const bool was_npn_negotiated = job->was_npn_negotiated(); | 413 const bool was_npn_negotiated = job->was_npn_negotiated(); |
| 414 const NextProto negotiated_protocol = job->negotiated_protocol(); | 414 const NextProto negotiated_protocol = job->negotiated_protocol(); |
| 415 const bool using_spdy = job->using_spdy(); | 415 const bool using_spdy = job->using_spdy(); |
| 416 const BoundNetLog net_log = job->net_log(); | 416 const NetLogWithSource net_log = job->net_log(); |
| 417 | 417 |
| 418 // Cache this so we can still use it if the JobController is deleted. | 418 // Cache this so we can still use it if the JobController is deleted. |
| 419 HttpStreamFactoryImpl* factory = factory_; | 419 HttpStreamFactoryImpl* factory = factory_; |
| 420 | 420 |
| 421 // Notify |request_|. | 421 // Notify |request_|. |
| 422 if (!is_preconnect_ && !is_job_orphaned) { | 422 if (!is_preconnect_ && !is_job_orphaned) { |
| 423 if (job->job_type() == MAIN && alternative_job_failed_) | 423 if (job->job_type() == MAIN && alternative_job_failed_) |
| 424 ReportBrokenAlternativeService(); | 424 ReportBrokenAlternativeService(); |
| 425 | 425 |
| 426 DCHECK(request_); | 426 DCHECK(request_); |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 586 DCHECK(base::ContainsKey(spdy_session_request_map, *spdy_session_key)); | 586 DCHECK(base::ContainsKey(spdy_session_request_map, *spdy_session_key)); |
| 587 RequestSet& request_set = spdy_session_request_map[*spdy_session_key]; | 587 RequestSet& request_set = spdy_session_request_map[*spdy_session_key]; |
| 588 DCHECK(base::ContainsKey(request_set, request_)); | 588 DCHECK(base::ContainsKey(request_set, request_)); |
| 589 request_set.erase(request_); | 589 request_set.erase(request_); |
| 590 if (request_set.empty()) | 590 if (request_set.empty()) |
| 591 spdy_session_request_map.erase(*spdy_session_key); | 591 spdy_session_request_map.erase(*spdy_session_key); |
| 592 request_->ResetSpdySessionKey(); | 592 request_->ResetSpdySessionKey(); |
| 593 } | 593 } |
| 594 } | 594 } |
| 595 | 595 |
| 596 const BoundNetLog* HttpStreamFactoryImpl::JobController::GetNetLog( | 596 const NetLogWithSource* HttpStreamFactoryImpl::JobController::GetNetLog( |
| 597 Job* job) const { | 597 Job* job) const { |
| 598 if (is_preconnect_ || (job_bound_ && bound_job_ != job)) | 598 if (is_preconnect_ || (job_bound_ && bound_job_ != job)) |
| 599 return nullptr; | 599 return nullptr; |
| 600 DCHECK(request_); | 600 DCHECK(request_); |
| 601 return &request_->net_log(); | 601 return &request_->net_log(); |
| 602 } | 602 } |
| 603 | 603 |
| 604 void HttpStreamFactoryImpl::JobController::MaybeSetWaitTimeForMainJob( | 604 void HttpStreamFactoryImpl::JobController::MaybeSetWaitTimeForMainJob( |
| 605 const base::TimeDelta& delay) { | 605 const base::TimeDelta& delay) { |
| 606 if (main_job_is_blocked_) | 606 if (main_job_is_blocked_) |
| 607 main_job_wait_time_ = delay; | 607 main_job_wait_time_ = delay; |
| 608 } | 608 } |
| 609 | 609 |
| 610 WebSocketHandshakeStreamBase::CreateHelper* HttpStreamFactoryImpl:: | 610 WebSocketHandshakeStreamBase::CreateHelper* HttpStreamFactoryImpl:: |
| 611 JobController::websocket_handshake_stream_create_helper() { | 611 JobController::websocket_handshake_stream_create_helper() { |
| 612 DCHECK(request_); | 612 DCHECK(request_); |
| 613 return request_->websocket_handshake_stream_create_helper(); | 613 return request_->websocket_handshake_stream_create_helper(); |
| 614 } | 614 } |
| 615 | 615 |
| 616 void HttpStreamFactoryImpl::JobController::CreateJobs( | 616 void HttpStreamFactoryImpl::JobController::CreateJobs( |
| 617 const HttpRequestInfo& request_info, | 617 const HttpRequestInfo& request_info, |
| 618 RequestPriority priority, | 618 RequestPriority priority, |
| 619 const SSLConfig& server_ssl_config, | 619 const SSLConfig& server_ssl_config, |
| 620 const SSLConfig& proxy_ssl_config, | 620 const SSLConfig& proxy_ssl_config, |
| 621 HttpStreamRequest::Delegate* delegate, | 621 HttpStreamRequest::Delegate* delegate, |
| 622 HttpStreamRequest::StreamType stream_type, | 622 HttpStreamRequest::StreamType stream_type, |
| 623 const BoundNetLog& net_log) { | 623 const NetLogWithSource& net_log) { |
| 624 DCHECK(!main_job_); | 624 DCHECK(!main_job_); |
| 625 DCHECK(!alternative_job_); | 625 DCHECK(!alternative_job_); |
| 626 HostPortPair destination(HostPortPair::FromURL(request_info.url)); | 626 HostPortPair destination(HostPortPair::FromURL(request_info.url)); |
| 627 GURL origin_url = ApplyHostMappingRules(request_info.url, &destination); | 627 GURL origin_url = ApplyHostMappingRules(request_info.url, &destination); |
| 628 | 628 |
| 629 main_job_.reset(job_factory_->CreateJob( | 629 main_job_.reset(job_factory_->CreateJob( |
| 630 this, MAIN, session_, request_info, priority, server_ssl_config, | 630 this, MAIN, session_, request_info, priority, server_ssl_config, |
| 631 proxy_ssl_config, destination, origin_url, net_log.net_log())); | 631 proxy_ssl_config, destination, origin_url, net_log.net_log())); |
| 632 AttachJob(main_job_.get()); | 632 AttachJob(main_job_.get()); |
| 633 | 633 |
| (...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1040 // Check that QUIC is enabled globally, and it is not disabled. | 1040 // Check that QUIC is enabled globally, and it is not disabled. |
| 1041 if (!session_->params().enable_quic || | 1041 if (!session_->params().enable_quic || |
| 1042 session_->quic_stream_factory()->IsQuicDisabled()) { | 1042 session_->quic_stream_factory()->IsQuicDisabled()) { |
| 1043 return false; | 1043 return false; |
| 1044 } | 1044 } |
| 1045 } | 1045 } |
| 1046 | 1046 |
| 1047 return true; | 1047 return true; |
| 1048 } | 1048 } |
| 1049 } | 1049 } |
| OLD | NEW |