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 |