Index: net/quic/reliable_quic_stream_test.cc |
diff --git a/net/quic/reliable_quic_stream_test.cc b/net/quic/reliable_quic_stream_test.cc |
index 8ee03b58126e6687aba5da83bb751c7109f18f56..5e07e8d34722d8a4b2da76d5c7d1e8ca63c8fe5b 100644 |
--- a/net/quic/reliable_quic_stream_test.cc |
+++ b/net/quic/reliable_quic_stream_test.cc |
@@ -73,7 +73,8 @@ class ReliableQuicStreamTest : public ::testing::TestWithParam<bool> { |
public: |
ReliableQuicStreamTest() |
: initial_flow_control_window_bytes_(kMaxPacketSize), |
- zero_(QuicTime::Delta::Zero()) { |
+ zero_(QuicTime::Delta::Zero()), |
+ supported_versions_(QuicSupportedVersions()) { |
headers_[":host"] = "www.google.com"; |
headers_[":path"] = "/index.hml"; |
headers_[":scheme"] = "https"; |
@@ -103,8 +104,13 @@ class ReliableQuicStreamTest : public ::testing::TestWithParam<bool> { |
"JBCScs_ejbKaqBDoB7ZGxTvqlrB__2ZmnHHjCr8RgMRtKNtIeuZAo "; |
} |
+ void set_supported_versions(const QuicVersionVector& versions) { |
+ supported_versions_ = versions; |
+ } |
+ |
void Initialize(bool stream_should_process_data) { |
- connection_ = new StrictMock<MockConnection>(kIsServer); |
+ connection_ = |
+ new StrictMock<MockConnection>(kIsServer, supported_versions_); |
session_.reset(new StrictMock<MockSession>(connection_)); |
// New streams rely on having the peer's flow control receive window |
@@ -136,6 +142,7 @@ class ReliableQuicStreamTest : public ::testing::TestWithParam<bool> { |
QuicWriteBlockedList* write_blocked_list_; |
uint32 initial_flow_control_window_bytes_; |
QuicTime::Delta zero_; |
+ QuicVersionVector supported_versions_; |
}; |
TEST_F(ReliableQuicStreamTest, WriteAllData) { |
@@ -341,6 +348,26 @@ TEST_F(ReliableQuicStreamTest, StreamFlowControlMultipleWindowUpdates) { |
stream_.get()->flow_controller())); |
} |
+TEST_F(ReliableQuicStreamTest, StreamFlowControlShouldNotBlockInLessThanQ017) { |
+ // TODO(rjshade): Remove this test when we no longer have any versions < |
+ // QUIC_VERSION_17. |
+ ValueRestore<bool> old_flag(&FLAGS_enable_quic_stream_flow_control, true); |
+ |
+ // Make sure we are using a version which does not support flow control. |
+ const QuicVersionVector versions = {QUIC_VERSION_16}; |
+ set_supported_versions(versions); |
+ |
+ // Peer is not talking QUIC_VERSION_17 so assumes that it can send a zero |
+ // length flow control receive window with no consequences. |
+ set_initial_flow_control_window_bytes(0); |
+ |
+ Initialize(kShouldProcessData); |
+ |
+ // The stream should _not_ be flow control blocked, because we are not talking |
+ // a version which has flow control enabled. |
+ EXPECT_FALSE(stream_->flow_controller()->IsBlocked()); |
+} |
+ |
void SaveProxyAckNotifierDelegate( |
scoped_refptr<QuicAckNotifier::DelegateInterface>* delegate_out, |
QuicAckNotifier::DelegateInterface* delegate) { |