| Index: net/quic/core/quic_spdy_stream_test.cc
|
| diff --git a/net/quic/core/quic_spdy_stream_test.cc b/net/quic/core/quic_spdy_stream_test.cc
|
| index 63aaa89671cf5ce2f698d7291a3b5e27d008bfad..c0b510550917fec63482e9e8e92014f1064e444e 100644
|
| --- a/net/quic/core/quic_spdy_stream_test.cc
|
| +++ b/net/quic/core/quic_spdy_stream_test.cc
|
| @@ -55,6 +55,7 @@ class TestStream : public QuicSpdyStream {
|
|
|
| using QuicStream::WriteOrBufferData;
|
| using QuicStream::CloseWriteSide;
|
| + using QuicSpdyStream::set_ack_listener;
|
|
|
| const string& data() const { return data_; }
|
|
|
| @@ -963,6 +964,49 @@ TEST_P(QuicSpdyStreamTest, WritingTrailersAfterFIN) {
|
| "Trailers cannot be sent after a FIN");
|
| }
|
|
|
| +TEST_P(QuicSpdyStreamTest, HeaderStreamNotiferCorrespondingSpdyStream) {
|
| + Initialize(kShouldProcessData);
|
| + if (!session_->use_stream_notifier()) {
|
| + return;
|
| + }
|
| +
|
| + EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _))
|
| + .Times(AnyNumber())
|
| + .WillRepeatedly(Invoke(MockQuicSession::ConsumeAllData));
|
| + testing::InSequence s;
|
| + QuicReferenceCountedPointer<MockAckListener> ack_listener1(
|
| + new MockAckListener());
|
| + QuicReferenceCountedPointer<MockAckListener> ack_listener2(
|
| + new MockAckListener());
|
| + stream_->set_ack_listener(ack_listener1);
|
| + stream2_->set_ack_listener(ack_listener2);
|
| +
|
| + session_->headers_stream()->WriteOrBufferData("Header1", false,
|
| + ack_listener1);
|
| + stream_->WriteOrBufferData("Test1", true, nullptr);
|
| +
|
| + session_->headers_stream()->WriteOrBufferData("Header2", false,
|
| + ack_listener2);
|
| + stream2_->WriteOrBufferData("Test2", false, nullptr);
|
| +
|
| + QuicStreamFrame frame1(kHeadersStreamId, false, 0, "Header1");
|
| + QuicStreamFrame frame2(stream_->id(), true, 0, "Test1");
|
| + QuicStreamFrame frame3(kHeadersStreamId, false, 7, "Header2");
|
| + QuicStreamFrame frame4(stream2_->id(), false, 0, "Test2");
|
| +
|
| + EXPECT_CALL(*ack_listener1, OnPacketRetransmitted(7));
|
| + session_->OnStreamFrameRetransmitted(frame1);
|
| +
|
| + EXPECT_CALL(*ack_listener1, OnPacketAcked(7, _));
|
| + session_->OnStreamFrameAcked(frame1, QuicTime::Delta::Zero());
|
| + EXPECT_CALL(*ack_listener1, OnPacketAcked(5, _));
|
| + session_->OnStreamFrameAcked(frame2, QuicTime::Delta::Zero());
|
| + EXPECT_CALL(*ack_listener2, OnPacketAcked(7, _));
|
| + session_->OnStreamFrameAcked(frame3, QuicTime::Delta::Zero());
|
| + EXPECT_CALL(*ack_listener2, OnPacketAcked(5, _));
|
| + session_->OnStreamFrameAcked(frame4, QuicTime::Delta::Zero());
|
| +}
|
| +
|
| } // namespace
|
| } // namespace test
|
| } // namespace net
|
|
|