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

Unified Diff: net/quic/chromium/quic_stream_factory.h

Issue 2814633003: Extract Proxy Resolution out of HttpStreamFactoryImpl::Job (Closed)
Patch Set: fix remaining tests Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: net/quic/chromium/quic_stream_factory.h
diff --git a/net/quic/chromium/quic_stream_factory.h b/net/quic/chromium/quic_stream_factory.h
index 28f66daa2bd61503badf1a132b890c0abbcba2eb..9b7e95f905efe75d3944308c4b31e182860f300e 100644
--- a/net/quic/chromium/quic_stream_factory.h
+++ b/net/quic/chromium/quic_stream_factory.h
@@ -108,21 +108,21 @@ enum QuicConnectionMigrationStatus {
// cancel the request with the factory.
class NET_EXPORT_PRIVATE QuicStreamRequest {
public:
- explicit QuicStreamRequest(QuicStreamFactory* factory,
- HttpServerProperties* http_server_properties);
+ QuicStreamRequest(QuicStreamFactory* factory,
+ HttpServerProperties* http_server_properties);
~QuicStreamRequest();
// |cert_verify_flags| is bitwise OR'd of CertVerifier::VerifyFlags and it is
// passed to CertVerifier::Verify.
// |destination| will be resolved and resulting IPEndPoint used to open a
// QuicConnection. This can be different than HostPortPair::FromURL(url).
- int Request(const HostPortPair& destination,
- PrivacyMode privacy_mode,
- int cert_verify_flags,
- const GURL& url,
- QuicStringPiece method,
- const NetLogWithSource& net_log,
- const CompletionCallback& callback);
+ virtual int Request(const HostPortPair& destination,
+ PrivacyMode privacy_mode,
+ int cert_verify_flags,
+ const GURL& url,
+ QuicStringPiece method,
+ const NetLogWithSource& net_log,
+ const CompletionCallback& callback);
void OnRequestComplete(int rv);
@@ -130,9 +130,10 @@ class NET_EXPORT_PRIVATE QuicStreamRequest {
// returns the amount of time waiting job should be delayed.
base::TimeDelta GetTimeDelayForWaitingJob() const;
- std::unique_ptr<QuicHttpStream> CreateStream();
+ virtual std::unique_ptr<HttpStream> CreateStream();
- std::unique_ptr<BidirectionalStreamImpl> CreateBidirectionalStreamImpl();
+ virtual std::unique_ptr<BidirectionalStreamImpl>
+ CreateBidirectionalStreamImpl();
// Sets |session_|.
void SetSession(QuicChromiumClientSession* session);
@@ -152,6 +153,18 @@ class NET_EXPORT_PRIVATE QuicStreamRequest {
DISALLOW_COPY_AND_ASSIGN(QuicStreamRequest);
};
+// A default factory for creating QuicStreamRequest. Subclassed for testing
+// purpose.
+class NET_EXPORT_PRIVATE QuicStreamRequestFactory {
+ public:
+ QuicStreamRequestFactory();
+ ~QuicStreamRequestFactory();
+
+ virtual std::unique_ptr<QuicStreamRequest> CreateRequest(
+ QuicStreamFactory* factory,
+ HttpServerProperties* http_server_properties);
+};
+
// A factory for creating new QuicHttpStreams on top of a pool of
// QuicChromiumClientSessions.
class NET_EXPORT_PRIVATE QuicStreamFactory
@@ -230,6 +243,8 @@ class NET_EXPORT_PRIVATE QuicStreamFactory
bool CanUseExistingSession(const QuicServerId& server_id,
const HostPortPair& destination);
+ std::unique_ptr<QuicStreamRequest> CreateStreamRequest();
+
// Creates a new QuicHttpStream to |host_port_pair| which will be
// owned by |request|.
// If a matching session already exists, this method will return OK. If no
@@ -493,6 +508,8 @@ class NET_EXPORT_PRIVATE QuicStreamFactory
// The alarm factory used for all connections.
std::unique_ptr<QuicAlarmFactory> alarm_factory_;
+ std::unique_ptr<QuicStreamRequestFactory> stream_request_factory_;
+
// Contains owning pointers to all sessions that currently exist.
SessionIdMap all_sessions_;
// Contains non-owning pointers to currently active session

Powered by Google App Engine
This is Rietveld 408576698