| Index: net/quic/core/quic_session_test.cc
|
| diff --git a/net/quic/core/quic_session_test.cc b/net/quic/core/quic_session_test.cc
|
| index a5451e791707984fb8cc7cea4b66980518b209ba..b157c1b44552bbd1d8b18eb37131ee80a04b0829 100644
|
| --- a/net/quic/core/quic_session_test.cc
|
| +++ b/net/quic/core/quic_session_test.cc
|
| @@ -13,10 +13,10 @@
|
| #include "net/quic/core/crypto/crypto_protocol.h"
|
| #include "net/quic/core/crypto/null_encrypter.h"
|
| #include "net/quic/core/quic_crypto_stream.h"
|
| -#include "net/quic/core/quic_flags.h"
|
| #include "net/quic/core/quic_packets.h"
|
| #include "net/quic/core/quic_stream.h"
|
| #include "net/quic/core/quic_utils.h"
|
| +#include "net/quic/platform/api/quic_flags.h"
|
| #include "net/quic/platform/api/quic_map_util.h"
|
| #include "net/quic/platform/api/quic_ptr_util.h"
|
| #include "net/quic/platform/api/quic_str_cat.h"
|
| @@ -125,7 +125,13 @@ class TestSession : public QuicSpdySession {
|
|
|
| ~TestSession() override { delete connection(); }
|
|
|
| - TestCryptoStream* GetCryptoStream() override { return &crypto_stream_; }
|
| + TestCryptoStream* GetMutableCryptoStream() override {
|
| + return &crypto_stream_;
|
| + }
|
| +
|
| + const TestCryptoStream* GetCryptoStream() const override {
|
| + return &crypto_stream_;
|
| + }
|
|
|
| TestStream* CreateOutgoingDynamicStream(SpdyPriority priority) override {
|
| TestStream* stream = new TestStream(GetNextOutgoingStreamId(), this);
|
| @@ -167,12 +173,13 @@ class TestSession : public QuicSpdySession {
|
| QuicStreamId id,
|
| QuicIOVector data,
|
| QuicStreamOffset offset,
|
| - bool fin,
|
| + StreamSendingState state,
|
| QuicReferenceCountedPointer<QuicAckListenerInterface> ack_listener)
|
| override {
|
| + bool fin = state != NO_FIN;
|
| QuicConsumedData consumed(data.total_length, fin);
|
| if (!writev_consumes_all_data_) {
|
| - consumed = QuicSession::WritevData(stream, id, data, offset, fin,
|
| + consumed = QuicSession::WritevData(stream, id, data, offset, state,
|
| std::move(ack_listener));
|
| }
|
| stream->set_stream_bytes_written(stream->stream_bytes_written() +
|
| @@ -194,9 +201,8 @@ class TestSession : public QuicSpdySession {
|
| if (stream->id() != kCryptoStreamId) {
|
| this->connection()->SetDefaultEncryptionLevel(ENCRYPTION_FORWARD_SECURE);
|
| }
|
| - QuicConsumedData consumed =
|
| - WritevData(stream, stream->id(), MakeIOVector("not empty", &iov), 0,
|
| - true, nullptr);
|
| + QuicConsumedData consumed = WritevData(
|
| + stream, stream->id(), MakeIOVector("not empty", &iov), 0, FIN, nullptr);
|
| return consumed;
|
| }
|
|
|
| @@ -206,7 +212,7 @@ class TestSession : public QuicSpdySession {
|
| iov.iov_base = nullptr; // should not be read.
|
| iov.iov_len = static_cast<size_t>(bytes);
|
| return WritevData(stream, stream->id(), QuicIOVector(&iov, 1, bytes), 0,
|
| - true, nullptr);
|
| + FIN, nullptr);
|
| }
|
|
|
| using QuicSession::PostProcessAfterData;
|
| @@ -304,7 +310,7 @@ TEST_P(QuicSessionTestServer, PeerAddress) {
|
| TEST_P(QuicSessionTestServer, IsCryptoHandshakeConfirmed) {
|
| EXPECT_FALSE(session_.IsCryptoHandshakeConfirmed());
|
| CryptoHandshakeMessage message;
|
| - session_.GetCryptoStream()->OnHandshakeMessage(message);
|
| + session_.GetMutableCryptoStream()->OnHandshakeMessage(message);
|
| EXPECT_TRUE(session_.IsCryptoHandshakeConfirmed());
|
| }
|
|
|
| @@ -525,7 +531,7 @@ TEST_P(QuicSessionTestServer, OnCanWriteBundlesStreams) {
|
| EXPECT_CALL(*writer, WritePacket(_, _, _, _, _))
|
| .WillOnce(Return(WriteResult(WRITE_STATUS_OK, 0)));
|
| }
|
| - session_.GetCryptoStream()->OnHandshakeMessage(msg);
|
| + session_.GetMutableCryptoStream()->OnHandshakeMessage(msg);
|
|
|
| // Drive congestion control manually.
|
| MockSendAlgorithm* send_algorithm = new StrictMock<MockSendAlgorithm>;
|
| @@ -680,7 +686,7 @@ TEST_P(QuicSessionTestServer, BufferedHandshake) {
|
| // Due to prioritization, we *should* be asked to write the crypto stream
|
| // first.
|
| // Don't re-register the crypto stream (which signals complete writing).
|
| - TestCryptoStream* crypto_stream = session_.GetCryptoStream();
|
| + TestCryptoStream* crypto_stream = session_.GetMutableCryptoStream();
|
| EXPECT_CALL(*crypto_stream, OnCanWrite());
|
|
|
| EXPECT_CALL(*stream2, OnCanWrite())
|
| @@ -754,7 +760,7 @@ TEST_P(QuicSessionTestServer, OnCanWriteLimitsNumWritesIfFlowControlBlocked) {
|
|
|
| // The crypto and headers streams should be called even though we are
|
| // connection flow control blocked.
|
| - TestCryptoStream* crypto_stream = session_.GetCryptoStream();
|
| + TestCryptoStream* crypto_stream = session_.GetMutableCryptoStream();
|
| EXPECT_CALL(*crypto_stream, OnCanWrite());
|
| TestHeadersStream* headers_stream = new TestHeadersStream(&session_);
|
| QuicSpdySessionPeer::SetHeadersStream(&session_, headers_stream);
|
| @@ -789,7 +795,7 @@ TEST_P(QuicSessionTestServer, IncreasedTimeoutAfterCryptoHandshake) {
|
| EXPECT_EQ(kInitialIdleTimeoutSecs + 3,
|
| QuicConnectionPeer::GetNetworkTimeout(connection_).ToSeconds());
|
| CryptoHandshakeMessage msg;
|
| - session_.GetCryptoStream()->OnHandshakeMessage(msg);
|
| + session_.GetMutableCryptoStream()->OnHandshakeMessage(msg);
|
| EXPECT_EQ(kMaximumIdleTimeoutSecs + 3,
|
| QuicConnectionPeer::GetNetworkTimeout(connection_).ToSeconds());
|
| }
|
| @@ -836,7 +842,7 @@ TEST_P(QuicSessionTestServer, HandshakeUnblocksFlowControlBlockedStream) {
|
| // Now complete the crypto handshake, resulting in an increased flow control
|
| // send window.
|
| CryptoHandshakeMessage msg;
|
| - session_.GetCryptoStream()->OnHandshakeMessage(msg);
|
| + session_.GetMutableCryptoStream()->OnHandshakeMessage(msg);
|
|
|
| // Stream is now unblocked.
|
| EXPECT_FALSE(stream2->flow_controller()->IsBlocked());
|
| @@ -848,7 +854,7 @@ TEST_P(QuicSessionTestServer, HandshakeUnblocksFlowControlBlockedCryptoStream) {
|
| // Test that if the crypto stream is flow control blocked, then if the SHLO
|
| // contains a larger send window offset, the stream becomes unblocked.
|
| session_.set_writev_consumes_all_data(true);
|
| - TestCryptoStream* crypto_stream = session_.GetCryptoStream();
|
| + TestCryptoStream* crypto_stream = session_.GetMutableCryptoStream();
|
| EXPECT_FALSE(crypto_stream->flow_controller()->IsBlocked());
|
| EXPECT_FALSE(session_.IsConnectionFlowControlBlocked());
|
| EXPECT_FALSE(session_.IsStreamFlowControlBlocked());
|
| @@ -881,7 +887,7 @@ TEST_P(QuicSessionTestServer, HandshakeUnblocksFlowControlBlockedCryptoStream) {
|
| // Now complete the crypto handshake, resulting in an increased flow control
|
| // send window.
|
| CryptoHandshakeMessage msg;
|
| - session_.GetCryptoStream()->OnHandshakeMessage(msg);
|
| + session_.GetMutableCryptoStream()->OnHandshakeMessage(msg);
|
|
|
| // Stream is now unblocked and will no longer have buffered data.
|
| EXPECT_FALSE(crypto_stream->flow_controller()->IsBlocked());
|
| @@ -900,7 +906,7 @@ TEST_P(QuicSessionTestServer,
|
| // Test that if the header stream is flow control blocked, then if the SHLO
|
| // contains a larger send window offset, the stream becomes unblocked.
|
| session_.set_writev_consumes_all_data(true);
|
| - TestCryptoStream* crypto_stream = session_.GetCryptoStream();
|
| + TestCryptoStream* crypto_stream = session_.GetMutableCryptoStream();
|
| EXPECT_FALSE(crypto_stream->flow_controller()->IsBlocked());
|
| EXPECT_FALSE(session_.IsConnectionFlowControlBlocked());
|
| EXPECT_FALSE(session_.IsStreamFlowControlBlocked());
|
| @@ -935,7 +941,7 @@ TEST_P(QuicSessionTestServer,
|
| // Now complete the crypto handshake, resulting in an increased flow control
|
| // send window.
|
| CryptoHandshakeMessage msg;
|
| - session_.GetCryptoStream()->OnHandshakeMessage(msg);
|
| + session_.GetMutableCryptoStream()->OnHandshakeMessage(msg);
|
|
|
| // Stream is now unblocked and will no longer have buffered data.
|
| EXPECT_FALSE(headers_stream->flow_controller()->IsBlocked());
|
| @@ -1094,7 +1100,6 @@ TEST_P(QuicSessionTestServer, InvalidSessionFlowControlWindowInHandshake) {
|
|
|
| // Test negotiation of custom server initial flow control window.
|
| TEST_P(QuicSessionTestServer, CustomFlowControlWindow) {
|
| - FLAGS_quic_reloadable_flag_quic_large_ifw_options = true;
|
| QuicTagVector copt;
|
| copt.push_back(kIFW7);
|
| QuicConfigPeer::SetReceivedConnectionOptions(session_.config(), copt);
|
|
|