Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(224)

Side by Side Diff: net/quic/chromium/quic_stream_factory.cc

Issue 2814633003: Extract Proxy Resolution out of HttpStreamFactoryImpl::Job (Closed)
Patch Set: fix remaining tests Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/quic/chromium/quic_stream_factory.h" 5 #include "net/quic/chromium/quic_stream_factory.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <tuple> 8 #include <tuple>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 factory_ = nullptr; 616 factory_ = nullptr;
617 base::ResetAndReturn(&callback_).Run(rv); 617 base::ResetAndReturn(&callback_).Run(rv);
618 } 618 }
619 619
620 base::TimeDelta QuicStreamRequest::GetTimeDelayForWaitingJob() const { 620 base::TimeDelta QuicStreamRequest::GetTimeDelayForWaitingJob() const {
621 if (!factory_) 621 if (!factory_)
622 return base::TimeDelta(); 622 return base::TimeDelta();
623 return factory_->GetTimeDelayForWaitingJob(server_id_); 623 return factory_->GetTimeDelayForWaitingJob(server_id_);
624 } 624 }
625 625
626 std::unique_ptr<QuicHttpStream> QuicStreamRequest::CreateStream() { 626 std::unique_ptr<HttpStream> QuicStreamRequest::CreateStream() {
627 if (!session_) 627 if (!session_)
628 return nullptr; 628 return nullptr;
629 return base::MakeUnique<QuicHttpStream>(session_, http_server_properties_); 629 return base::MakeUnique<QuicHttpStream>(session_, http_server_properties_);
630 } 630 }
631 631
632 std::unique_ptr<BidirectionalStreamImpl> 632 std::unique_ptr<BidirectionalStreamImpl>
633 QuicStreamRequest::CreateBidirectionalStreamImpl() { 633 QuicStreamRequest::CreateBidirectionalStreamImpl() {
634 if (!session_) 634 if (!session_)
635 return nullptr; 635 return nullptr;
636 return base::MakeUnique<BidirectionalStreamQuicImpl>(session_); 636 return base::MakeUnique<BidirectionalStreamQuicImpl>(session_);
637 } 637 }
638 638
639 QuicStreamRequestFactory::QuicStreamRequestFactory() {}
640
641 QuicStreamRequestFactory::~QuicStreamRequestFactory() {}
642
643 std::unique_ptr<QuicStreamRequest> QuicStreamRequestFactory::CreateRequest(
644 QuicStreamFactory* factory,
645 HttpServerProperties* http_server_properties) {
646 return base::MakeUnique<QuicStreamRequest>(factory, http_server_properties);
647 }
648
639 QuicStreamFactory::QuicStreamFactory( 649 QuicStreamFactory::QuicStreamFactory(
640 NetLog* net_log, 650 NetLog* net_log,
641 HostResolver* host_resolver, 651 HostResolver* host_resolver,
642 SSLConfigService* ssl_config_service, 652 SSLConfigService* ssl_config_service,
643 ClientSocketFactory* client_socket_factory, 653 ClientSocketFactory* client_socket_factory,
644 HttpServerProperties* http_server_properties, 654 HttpServerProperties* http_server_properties,
645 ProxyDelegate* proxy_delegate, 655 ProxyDelegate* proxy_delegate,
646 CertVerifier* cert_verifier, 656 CertVerifier* cert_verifier,
647 CTPolicyEnforcer* ct_policy_enforcer, 657 CTPolicyEnforcer* ct_policy_enforcer,
648 ChannelIDService* channel_id_service, 658 ChannelIDService* channel_id_service,
(...skipping 29 matching lines...) Expand all
678 push_delegate_(nullptr), 688 push_delegate_(nullptr),
679 proxy_delegate_(proxy_delegate), 689 proxy_delegate_(proxy_delegate),
680 transport_security_state_(transport_security_state), 690 transport_security_state_(transport_security_state),
681 cert_transparency_verifier_(cert_transparency_verifier), 691 cert_transparency_verifier_(cert_transparency_verifier),
682 quic_crypto_client_stream_factory_(quic_crypto_client_stream_factory), 692 quic_crypto_client_stream_factory_(quic_crypto_client_stream_factory),
683 random_generator_(random_generator), 693 random_generator_(random_generator),
684 clock_(clock), 694 clock_(clock),
685 max_packet_length_(max_packet_length), 695 max_packet_length_(max_packet_length),
686 clock_skew_detector_(base::TimeTicks::Now(), base::Time::Now()), 696 clock_skew_detector_(base::TimeTicks::Now(), base::Time::Now()),
687 socket_performance_watcher_factory_(socket_performance_watcher_factory), 697 socket_performance_watcher_factory_(socket_performance_watcher_factory),
698 stream_request_factory_(base::MakeUnique<QuicStreamRequestFactory>()),
688 config_(InitializeQuicConfig(connection_options, 699 config_(InitializeQuicConfig(connection_options,
689 idle_connection_timeout_seconds)), 700 idle_connection_timeout_seconds)),
690 crypto_config_(base::WrapUnique( 701 crypto_config_(base::WrapUnique(
691 new ProofVerifierChromium(cert_verifier, 702 new ProofVerifierChromium(cert_verifier,
692 ct_policy_enforcer, 703 ct_policy_enforcer,
693 transport_security_state, 704 transport_security_state,
694 cert_transparency_verifier))), 705 cert_transparency_verifier))),
695 supported_versions_(supported_versions), 706 supported_versions_(supported_versions),
696 mark_quic_broken_when_network_blackholes_( 707 mark_quic_broken_when_network_blackholes_(
697 mark_quic_broken_when_network_blackholes), 708 mark_quic_broken_when_network_blackholes),
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 QuicChromiumClientSession* session = key_value.second; 854 QuicChromiumClientSession* session = key_value.second;
844 if (destination.Equals(all_sessions_[session].destination()) && 855 if (destination.Equals(all_sessions_[session].destination()) &&
845 session->CanPool(server_id.host(), server_id.privacy_mode())) { 856 session->CanPool(server_id.host(), server_id.privacy_mode())) {
846 return true; 857 return true;
847 } 858 }
848 } 859 }
849 860
850 return false; 861 return false;
851 } 862 }
852 863
864 std::unique_ptr<QuicStreamRequest> QuicStreamFactory::CreateStreamRequest() {
865 return stream_request_factory_->CreateRequest(this, http_server_properties_);
866 }
867
853 int QuicStreamFactory::Create(const QuicServerId& server_id, 868 int QuicStreamFactory::Create(const QuicServerId& server_id,
854 const HostPortPair& destination, 869 const HostPortPair& destination,
855 int cert_verify_flags, 870 int cert_verify_flags,
856 const GURL& url, 871 const GURL& url,
857 QuicStringPiece method, 872 QuicStringPiece method,
858 const NetLogWithSource& net_log, 873 const NetLogWithSource& net_log,
859 QuicStreamRequest* request) { 874 QuicStreamRequest* request) {
860 if (clock_skew_detector_.ClockSkewDetected(base::TimeTicks::Now(), 875 if (clock_skew_detector_.ClockSkewDetected(base::TimeTicks::Now(),
861 base::Time::Now())) { 876 base::Time::Now())) {
862 while (!active_sessions_.empty()) { 877 while (!active_sessions_.empty()) {
(...skipping 863 matching lines...) Expand 10 before | Expand all | Expand 10 after
1726 // Since the session was active, there's no longer an 1741 // Since the session was active, there's no longer an
1727 // HttpStreamFactoryImpl::Job running which can mark it broken, unless the TCP 1742 // HttpStreamFactoryImpl::Job running which can mark it broken, unless the TCP
1728 // job also fails. So to avoid not using QUIC when we otherwise could, we mark 1743 // job also fails. So to avoid not using QUIC when we otherwise could, we mark
1729 // it as recently broken, which means that 0-RTT will be disabled but we'll 1744 // it as recently broken, which means that 0-RTT will be disabled but we'll
1730 // still race. 1745 // still race.
1731 http_server_properties_->MarkAlternativeServiceRecentlyBroken( 1746 http_server_properties_->MarkAlternativeServiceRecentlyBroken(
1732 alternative_service); 1747 alternative_service);
1733 } 1748 }
1734 1749
1735 } // namespace net 1750 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698