diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-01-23 17:21:03 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-01-23 16:25:15 +0000 |
commit | c551f43206405019121bd2b2c93714319a0a3300 (patch) | |
tree | 1f48c30631c421fd4bbb3c36da20183c8a2ed7d7 /chromium/net/third_party/quiche/src/quic/test_tools | |
parent | 7961cea6d1041e3e454dae6a1da660b453efd238 (diff) | |
download | qtwebengine-chromium-c551f43206405019121bd2b2c93714319a0a3300.tar.gz |
BASELINE: Update Chromium to 79.0.3945.139
Change-Id: I336b7182fab9bca80b709682489c07db112eaca5
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/net/third_party/quiche/src/quic/test_tools')
32 files changed, 364 insertions, 140 deletions
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/crypto_test_utils.cc b/chromium/net/third_party/quiche/src/quic/test_tools/crypto_test_utils.cc index 27e47b2172f..98d65e8d0fe 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/crypto_test_utils.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/crypto_test_utils.cc @@ -6,6 +6,7 @@ #include <memory> #include <string> +#include <utility> #include "third_party/boringssl/src/include/openssl/bn.h" #include "third_party/boringssl/src/include/openssl/ec.h" @@ -25,10 +26,10 @@ #include "net/third_party/quiche/src/quic/core/quic_crypto_stream.h" #include "net/third_party/quiche/src/quic/core/quic_server_id.h" #include "net/third_party/quiche/src/quic/core/quic_utils.h" +#include "net/third_party/quiche/src/quic/core/quic_versions.h" #include "net/third_party/quiche/src/quic/platform/api/quic_bug_tracker.h" #include "net/third_party/quiche/src/quic/platform/api/quic_clock.h" #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h" #include "net/third_party/quiche/src/quic/platform/api/quic_socket_address.h" #include "net/third_party/quiche/src/quic/platform/api/quic_test.h" #include "net/third_party/quiche/src/quic/platform/api/quic_text_utils.h" @@ -45,6 +46,8 @@ namespace crypto_test_utils { namespace { +using testing::_; + // CryptoFramerVisitor is a framer visitor that records handshake messages. class CryptoFramerVisitor : public CryptoFramerVisitorInterface { public: @@ -130,7 +133,7 @@ class FullChloGenerator { std::unique_ptr<ValidateClientHelloCallback> GetValidateClientHelloCallback() { - return QuicMakeUnique<ValidateClientHelloCallback>(this); + return std::make_unique<ValidateClientHelloCallback>(this); } private: @@ -164,7 +167,7 @@ class FullChloGenerator { }; std::unique_ptr<ProcessClientHelloCallback> GetProcessClientHelloCallback() { - return QuicMakeUnique<ProcessClientHelloCallback>(this); + return std::make_unique<ProcessClientHelloCallback>(this); } void ProcessClientHelloDone(std::unique_ptr<CryptoHandshakeMessage> rej) { @@ -210,7 +213,8 @@ int HandshakeWithFakeServer(QuicConfig* server_quic_config, MockQuicConnectionHelper* helper, MockAlarmFactory* alarm_factory, PacketSavingConnection* client_conn, - QuicCryptoClientStream* client) { + QuicCryptoClientStream* client, + std::string alpn) { PacketSavingConnection* server_conn = new PacketSavingConnection( helper, alarm_factory, Perspective::IS_SERVER, ParsedVersionOfIndex(client_conn->supported_versions(), 0)); @@ -234,6 +238,10 @@ int HandshakeWithFakeServer(QuicConfig* server_quic_config, .Times(testing::AnyNumber()); EXPECT_CALL(*server_conn, OnCanWrite()).Times(testing::AnyNumber()); EXPECT_CALL(*client_conn, OnCanWrite()).Times(testing::AnyNumber()); + EXPECT_CALL(server_session, SelectAlpn(_)) + .WillRepeatedly([alpn](const std::vector<QuicStringPiece>& alpns) { + return std::find(alpns.cbegin(), alpns.cend(), alpn); + }); // The client's handshake must have been started already. CHECK_NE(0u, client_conn->encrypted_packets_.size()); @@ -250,7 +258,8 @@ int HandshakeWithFakeClient(MockQuicConnectionHelper* helper, PacketSavingConnection* server_conn, QuicCryptoServerStream* server, const QuicServerId& server_id, - const FakeClientOptions& options) { + const FakeClientOptions& options, + std::string alpn) { ParsedQuicVersionVector supported_versions = AllSupportedVersions(); if (options.only_tls_versions) { supported_versions.clear(); @@ -275,6 +284,14 @@ int HandshakeWithFakeClient(MockQuicConnectionHelper* helper, EXPECT_CALL(client_session, OnProofVerifyDetailsAvailable(testing::_)) .Times(testing::AnyNumber()); EXPECT_CALL(*client_conn, OnCanWrite()).Times(testing::AnyNumber()); + if (!alpn.empty()) { + EXPECT_CALL(client_session, GetAlpnsToOffer()) + .WillRepeatedly(testing::Return(std::vector<std::string>({alpn}))); + } else { + EXPECT_CALL(client_session, GetAlpnsToOffer()) + .WillRepeatedly(testing::Return(std::vector<std::string>( + {AlpnForVersion(client_conn->version())}))); + } client_session.GetMutableCryptoStream()->CryptoConnect(); CHECK_EQ(1u, client_conn->encrypted_packets_.size()); @@ -303,12 +320,10 @@ void SendHandshakeMessageToStream(QuicCryptoStream* stream, Perspective /*perspective*/) { const QuicData& data = message.GetSerialized(); QuicSession* session = QuicStreamPeer::session(stream); - if (!QuicVersionUsesCryptoFrames( - session->connection()->transport_version())) { - QuicStreamFrame frame(QuicUtils::GetCryptoStreamId( - session->connection()->transport_version()), - false, stream->crypto_bytes_read(), - data.AsStringPiece()); + if (!QuicVersionUsesCryptoFrames(session->transport_version())) { + QuicStreamFrame frame( + QuicUtils::GetCryptoStreamId(session->transport_version()), false, + stream->crypto_bytes_read(), data.AsStringPiece()); stream->OnStreamFrame(frame); } else { EncryptionLevel level = session->connection()->last_decrypted_level(); diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/crypto_test_utils.h b/chromium/net/third_party/quiche/src/quic/test_tools/crypto_test_utils.h index 421c0f3dd2d..6f87e90494c 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/crypto_test_utils.h +++ b/chromium/net/third_party/quiche/src/quic/test_tools/crypto_test_utils.h @@ -69,7 +69,8 @@ int HandshakeWithFakeServer(QuicConfig* server_quic_config, MockQuicConnectionHelper* helper, MockAlarmFactory* alarm_factory, PacketSavingConnection* client_conn, - QuicCryptoClientStream* client); + QuicCryptoClientStream* client, + std::string alpn); // returns: the number of client hellos that the client sent. int HandshakeWithFakeClient(MockQuicConnectionHelper* helper, @@ -77,7 +78,8 @@ int HandshakeWithFakeClient(MockQuicConnectionHelper* helper, PacketSavingConnection* server_conn, QuicCryptoServerStream* server, const QuicServerId& server_id, - const FakeClientOptions& options); + const FakeClientOptions& options, + std::string alpn); // SetupCryptoServerConfigForTest configures |crypto_config| // with sensible defaults for testing. diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/crypto_test_utils_test.cc b/chromium/net/third_party/quiche/src/quic/test_tools/crypto_test_utils_test.cc index 62eafb9d422..59a3947393e 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/crypto_test_utils_test.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/crypto_test_utils_test.cc @@ -4,9 +4,10 @@ #include "net/third_party/quiche/src/quic/test_tools/crypto_test_utils.h" +#include <utility> + #include "net/third_party/quiche/src/quic/core/proto/crypto_server_config_proto.h" #include "net/third_party/quiche/src/quic/core/quic_utils.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h" #include "net/third_party/quiche/src/quic/platform/api/quic_test.h" #include "net/third_party/quiche/src/quic/platform/api/quic_text_utils.h" #include "net/third_party/quiche/src/quic/test_tools/mock_clock.h" @@ -47,7 +48,7 @@ class ShloVerifier { std::unique_ptr<ValidateClientHelloCallback> GetValidateClientHelloCallback() { - return QuicMakeUnique<ValidateClientHelloCallback>(this); + return std::make_unique<ValidateClientHelloCallback>(this); } private: @@ -82,7 +83,7 @@ class ShloVerifier { }; std::unique_ptr<ProcessClientHelloCallback> GetProcessClientHelloCallback() { - return QuicMakeUnique<ProcessClientHelloCallback>(this); + return std::make_unique<ProcessClientHelloCallback>(this); } void ProcessClientHelloDone(std::unique_ptr<CryptoHandshakeMessage> message) { diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/fake_proof_source.cc b/chromium/net/third_party/quiche/src/quic/test_tools/fake_proof_source.cc index 8f1cd376833..784ced4027e 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/fake_proof_source.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/fake_proof_source.cc @@ -4,8 +4,9 @@ #include "net/third_party/quiche/src/quic/test_tools/fake_proof_source.h" +#include <utility> + #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h" #include "net/third_party/quiche/src/quic/test_tools/crypto_test_utils.h" namespace quic { @@ -80,7 +81,7 @@ void FakeProofSource::GetProof( return; } - pending_ops_.push_back(QuicMakeUnique<GetProofOp>( + pending_ops_.push_back(std::make_unique<GetProofOp>( server_address, hostname, server_config, transport_version, std::string(chlo_hash), std::move(callback), delegate_.get())); } @@ -106,7 +107,7 @@ void FakeProofSource::ComputeTlsSignature( } QUIC_LOG(INFO) << "Adding pending op"; - pending_ops_.push_back(QuicMakeUnique<ComputeSignatureOp>( + pending_ops_.push_back(std::make_unique<ComputeSignatureOp>( server_address, hostname, signature_algorithm, in, std::move(callback), delegate_.get())); } diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/mock_quic_time_wait_list_manager.h b/chromium/net/third_party/quiche/src/quic/test_tools/mock_quic_time_wait_list_manager.h index 6b2b6d0968f..b8a9776381a 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/mock_quic_time_wait_list_manager.h +++ b/chromium/net/third_party/quiche/src/quic/test_tools/mock_quic_time_wait_list_manager.h @@ -61,6 +61,11 @@ class MockTimeWaitListManager : public QuicTimeWaitListManager { QuicConnectionId, bool, std::unique_ptr<QuicPerPacketContext>)); + + MOCK_METHOD3(SendPacket, + void(const QuicSocketAddress&, + const QuicSocketAddress&, + const QuicEncryptedPacket&)); }; } // namespace test diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_config_peer.cc b/chromium/net/third_party/quiche/src/quic/test_tools/quic_config_peer.cc index f9ce04f1765..6278817caaf 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_config_peer.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_config_peer.cc @@ -18,6 +18,30 @@ void QuicConfigPeer::SetReceivedInitialStreamFlowControlWindow( } // static +void QuicConfigPeer::SetReceivedInitialMaxStreamDataBytesIncomingBidirectional( + QuicConfig* config, + uint32_t window_bytes) { + config->initial_max_stream_data_bytes_incoming_bidirectional_ + .SetReceivedValue(window_bytes); +} + +// static +void QuicConfigPeer::SetReceivedInitialMaxStreamDataBytesOutgoingBidirectional( + QuicConfig* config, + uint32_t window_bytes) { + config->initial_max_stream_data_bytes_outgoing_bidirectional_ + .SetReceivedValue(window_bytes); +} + +// static +void QuicConfigPeer::SetReceivedInitialMaxStreamDataBytesUnidirectional( + QuicConfig* config, + uint32_t window_bytes) { + config->initial_max_stream_data_bytes_unidirectional_.SetReceivedValue( + window_bytes); +} + +// static void QuicConfigPeer::SetReceivedInitialSessionFlowControlWindow( QuicConfig* config, uint32_t window_bytes) { diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_config_peer.h b/chromium/net/third_party/quiche/src/quic/test_tools/quic_config_peer.h index 7faee7e6e11..e68d87d8502 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_config_peer.h +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_config_peer.h @@ -22,6 +22,18 @@ class QuicConfigPeer { static void SetReceivedInitialStreamFlowControlWindow(QuicConfig* config, uint32_t window_bytes); + static void SetReceivedInitialMaxStreamDataBytesIncomingBidirectional( + QuicConfig* config, + uint32_t window_bytes); + + static void SetReceivedInitialMaxStreamDataBytesOutgoingBidirectional( + QuicConfig* config, + uint32_t window_bytes); + + static void SetReceivedInitialMaxStreamDataBytesUnidirectional( + QuicConfig* config, + uint32_t window_bytes); + static void SetReceivedInitialSessionFlowControlWindow(QuicConfig* config, uint32_t window_bytes); diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_connection_peer.cc b/chromium/net/third_party/quiche/src/quic/test_tools/quic_connection_peer.cc index ef2ffb39c02..02775caf901 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_connection_peer.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_connection_peer.cc @@ -226,6 +226,9 @@ QuicConnectionStats* QuicConnectionPeer::GetStats(QuicConnection* connection) { // static QuicPacketCount QuicConnectionPeer::GetPacketsBetweenMtuProbes( QuicConnection* connection) { + if (connection->mtu_discovery_v2_) { + return connection->mtu_discoverer_.packets_between_probes(); + } return connection->packets_between_mtu_probes_; } @@ -242,6 +245,15 @@ void QuicConnectionPeer::SetNextMtuProbeAt(QuicConnection* connection, } // static +void QuicConnectionPeer::ReInitializeMtuDiscoverer( + QuicConnection* connection, + QuicPacketCount packets_between_probes_base, + QuicPacketNumber next_probe_at) { + connection->mtu_discoverer_ = + QuicConnectionMtuDiscoverer(packets_between_probes_base, next_probe_at); +} + +// static void QuicConnectionPeer::SetAckMode(QuicConnection* connection, AckMode ack_mode) { for (auto& received_packet_manager : @@ -345,5 +357,12 @@ void QuicConnectionPeer::SetAddressValidated(QuicConnection* connection) { connection->address_validated_ = true; } +// static +void QuicConnectionPeer::SendConnectionClosePacket(QuicConnection* connection, + QuicErrorCode error, + const std::string& details) { + connection->SendConnectionClosePacket(error, details); +} + } // namespace test } // namespace quic diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_connection_peer.h b/chromium/net/third_party/quiche/src/quic/test_tools/quic_connection_peer.h index f329a1cb833..c5c972f9cc0 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_connection_peer.h +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_connection_peer.h @@ -111,6 +111,10 @@ class QuicConnectionPeer { QuicPacketCount packets); static void SetNextMtuProbeAt(QuicConnection* connection, QuicPacketNumber number); + static void ReInitializeMtuDiscoverer( + QuicConnection* connection, + QuicPacketCount packets_between_probes_base, + QuicPacketNumber next_probe_at); static void SetAckMode(QuicConnection* connection, AckMode ack_mode); static void SetFastAckAfterQuiescence(QuicConnection* connection, bool fast_ack_after_quiescence); @@ -135,6 +139,10 @@ class QuicConnectionPeer { PacketHeaderFormat format); static void AddBytesReceived(QuicConnection* connection, size_t length); static void SetAddressValidated(QuicConnection* connection); + + static void SendConnectionClosePacket(QuicConnection* connection, + QuicErrorCode error, + const std::string& details); }; } // namespace test diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_framer_peer.cc b/chromium/net/third_party/quiche/src/quic/test_tools/quic_framer_peer.cc index eea4fd64c4e..d686d5a4097 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_framer_peer.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_framer_peer.cc @@ -36,6 +36,13 @@ void QuicFramerPeer::SetLastSerializedClientConnectionId( } // static +void QuicFramerPeer::SetLastWrittenPacketNumberLength( + QuicFramer* framer, + size_t packet_number_length) { + framer->last_written_packet_number_length_ = packet_number_length; +} + +// static void QuicFramerPeer::SetLargestPacketNumber(QuicFramer* framer, QuicPacketNumber packet_number) { framer->largest_packet_number_ = packet_number; diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_framer_peer.h b/chromium/net/third_party/quiche/src/quic/test_tools/quic_framer_peer.h index 24b8818a804..661def5493a 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_framer_peer.h +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_framer_peer.h @@ -28,6 +28,8 @@ class QuicFramerPeer { static void SetLastSerializedClientConnectionId( QuicFramer* framer, QuicConnectionId client_connection_id); + static void SetLastWrittenPacketNumberLength(QuicFramer* framer, + size_t packet_number_length); static void SetLargestPacketNumber(QuicFramer* framer, QuicPacketNumber packet_number); static void SetPerspective(QuicFramer* framer, Perspective perspective); diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_packet_creator_peer.cc b/chromium/net/third_party/quiche/src/quic/test_tools/quic_packet_creator_peer.cc index d4dc008790f..d4e5598ffa0 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_packet_creator_peer.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_packet_creator_peer.cc @@ -139,11 +139,5 @@ QuicFramer* QuicPacketCreatorPeer::framer(QuicPacketCreator* creator) { return creator->framer_; } -// static -void QuicPacketCreatorPeer::EnableGetPacketHeaderSizeBugFix( - QuicPacketCreator* creator) { - creator->fix_get_packet_header_size_ = true; -} - } // namespace test } // namespace quic diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_packet_creator_peer.h b/chromium/net/third_party/quiche/src/quic/test_tools/quic_packet_creator_peer.h index f8f3d5987ad..e040090f6dd 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_packet_creator_peer.h +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_packet_creator_peer.h @@ -57,7 +57,6 @@ class QuicPacketCreatorPeer { static EncryptionLevel GetEncryptionLevel(QuicPacketCreator* creator); static QuicFramer* framer(QuicPacketCreator* creator); - static void EnableGetPacketHeaderSizeBugFix(QuicPacketCreator* creator); }; } // namespace test diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_sent_packet_manager_peer.cc b/chromium/net/third_party/quiche/src/quic/test_tools/quic_sent_packet_manager_peer.cc index c48c090ffbd..b680f66d815 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_sent_packet_manager_peer.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_sent_packet_manager_peer.cc @@ -209,5 +209,19 @@ void QuicSentPacketManagerPeer::SetNextPacedPacketTime( sent_packet_manager->pacing_sender_.ideal_next_packet_send_time_ = time; } +// static +int QuicSentPacketManagerPeer::GetReorderingShift( + QuicSentPacketManager* sent_packet_manager) { + return sent_packet_manager->uber_loss_algorithm_.general_loss_algorithms_[0] + .reordering_shift(); +} + +// static +bool QuicSentPacketManagerPeer::AdaptiveReorderingThresholdEnabled( + QuicSentPacketManager* sent_packet_manager) { + return sent_packet_manager->uber_loss_algorithm_.general_loss_algorithms_[0] + .use_adaptive_reordering_threshold(); +} + } // namespace test } // namespace quic diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_sent_packet_manager_peer.h b/chromium/net/third_party/quiche/src/quic/test_tools/quic_sent_packet_manager_peer.h index 6dcce0cf4a4..6be8b46308f 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_sent_packet_manager_peer.h +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_sent_packet_manager_peer.h @@ -93,6 +93,11 @@ class QuicSentPacketManagerPeer { static void SetNextPacedPacketTime(QuicSentPacketManager* sent_packet_manager, QuicTime time); + + static int GetReorderingShift(QuicSentPacketManager* sent_packet_manager); + + static bool AdaptiveReorderingThresholdEnabled( + QuicSentPacketManager* sent_packet_manager); }; } // namespace test diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_session_peer.cc b/chromium/net/third_party/quiche/src/quic/test_tools/quic_session_peer.cc index ab4e5af1ebc..001f1ca2b87 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_session_peer.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_session_peer.cc @@ -27,7 +27,7 @@ QuicStreamId QuicSessionPeer::GetNextOutgoingUnidirectionalStreamId( // static void QuicSessionPeer::SetNextOutgoingBidirectionalStreamId(QuicSession* session, QuicStreamId id) { - if (VersionHasIetfQuicFrames(session->connection()->transport_version())) { + if (VersionHasIetfQuicFrames(session->transport_version())) { session->v99_streamid_manager_.bidirectional_stream_id_manager_ .next_outgoing_stream_id_ = id; return; @@ -38,7 +38,7 @@ void QuicSessionPeer::SetNextOutgoingBidirectionalStreamId(QuicSession* session, // static void QuicSessionPeer::SetMaxOpenIncomingStreams(QuicSession* session, uint32_t max_streams) { - if (VersionHasIetfQuicFrames(session->connection()->transport_version())) { + if (VersionHasIetfQuicFrames(session->transport_version())) { QUIC_BUG << "SetmaxOpenIncomingStreams deprecated for IETF QUIC"; session->v99_streamid_manager_.SetMaxOpenIncomingUnidirectionalStreams( max_streams); @@ -53,7 +53,7 @@ void QuicSessionPeer::SetMaxOpenIncomingStreams(QuicSession* session, void QuicSessionPeer::SetMaxOpenIncomingBidirectionalStreams( QuicSession* session, uint32_t max_streams) { - DCHECK(VersionHasIetfQuicFrames(session->connection()->transport_version())) + DCHECK(VersionHasIetfQuicFrames(session->transport_version())) << "SetmaxOpenIncomingBidirectionalStreams not supported for Google " "QUIC"; session->v99_streamid_manager_.SetMaxOpenIncomingBidirectionalStreams( @@ -63,7 +63,7 @@ void QuicSessionPeer::SetMaxOpenIncomingBidirectionalStreams( void QuicSessionPeer::SetMaxOpenIncomingUnidirectionalStreams( QuicSession* session, uint32_t max_streams) { - DCHECK(VersionHasIetfQuicFrames(session->connection()->transport_version())) + DCHECK(VersionHasIetfQuicFrames(session->transport_version())) << "SetmaxOpenIncomingUnidirectionalStreams not supported for Google " "QUIC"; session->v99_streamid_manager_.SetMaxOpenIncomingUnidirectionalStreams( @@ -73,7 +73,7 @@ void QuicSessionPeer::SetMaxOpenIncomingUnidirectionalStreams( // static void QuicSessionPeer::SetMaxOpenOutgoingStreams(QuicSession* session, uint32_t max_streams) { - if (VersionHasIetfQuicFrames(session->connection()->transport_version())) { + if (VersionHasIetfQuicFrames(session->transport_version())) { QUIC_BUG << "SetmaxOpenOutgoingStreams deprecated for IETF QUIC"; session->v99_streamid_manager_.SetMaxOpenOutgoingUnidirectionalStreams( max_streams); @@ -88,7 +88,7 @@ void QuicSessionPeer::SetMaxOpenOutgoingStreams(QuicSession* session, void QuicSessionPeer::SetMaxOpenOutgoingBidirectionalStreams( QuicSession* session, uint32_t max_streams) { - DCHECK(VersionHasIetfQuicFrames(session->connection()->transport_version())) + DCHECK(VersionHasIetfQuicFrames(session->transport_version())) << "SetmaxOpenOutgoingBidirectionalStreams not supported for Google " "QUIC"; session->v99_streamid_manager_.SetMaxOpenOutgoingBidirectionalStreams( @@ -98,7 +98,7 @@ void QuicSessionPeer::SetMaxOpenOutgoingBidirectionalStreams( void QuicSessionPeer::SetMaxOpenOutgoingUnidirectionalStreams( QuicSession* session, uint32_t max_streams) { - DCHECK(VersionHasIetfQuicFrames(session->connection()->transport_version())) + DCHECK(VersionHasIetfQuicFrames(session->transport_version())) << "SetmaxOpenOutgoingUnidirectionalStreams not supported for Google " "QUIC"; session->v99_streamid_manager_.SetMaxOpenOutgoingUnidirectionalStreams( @@ -159,12 +159,6 @@ void QuicSessionPeer::ActivateStream(QuicSession* session, } // static -void QuicSessionPeer::RegisterStaticStream(QuicSession* session, - std::unique_ptr<QuicStream> stream) { - return session->RegisterStaticStream(std::move(stream)); -} - -// static bool QuicSessionPeer::IsStreamClosed(QuicSession* session, QuicStreamId id) { return session->IsClosedStream(id); } @@ -176,10 +170,8 @@ bool QuicSessionPeer::IsStreamCreated(QuicSession* session, QuicStreamId id) { // static bool QuicSessionPeer::IsStreamAvailable(QuicSession* session, QuicStreamId id) { - if (VersionHasIetfQuicFrames(session->connection()->transport_version())) { - if (id % QuicUtils::StreamIdDelta( - session->connection()->transport_version()) < - 2) { + if (VersionHasIetfQuicFrames(session->transport_version())) { + if (id % QuicUtils::StreamIdDelta(session->transport_version()) < 2) { return QuicContainsKey( session->v99_streamid_manager_.bidirectional_stream_id_manager_ .available_streams_, @@ -249,5 +241,10 @@ PendingStream* QuicSessionPeer::GetPendingStream(QuicSession* session, return it == session->pending_stream_map_.end() ? nullptr : it->second.get(); } +// static +void QuicSessionPeer::set_is_configured(QuicSession* session, bool value) { + session->is_configured_ = value; +} + } // namespace test } // namespace quic diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_session_peer.h b/chromium/net/third_party/quiche/src/quic/test_tools/quic_session_peer.h index decc4b93f45..eed3bddcf88 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_session_peer.h +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_session_peer.h @@ -63,8 +63,6 @@ class QuicSessionPeer { QuicSession* session); static void ActivateStream(QuicSession* session, std::unique_ptr<QuicStream> stream); - static void RegisterStaticStream(QuicSession* session, - std::unique_ptr<QuicStream> stream); // Discern the state of a stream. Exactly one of these should be true at a // time for any stream id > 0 (other than the special streams 1 and 3). @@ -88,6 +86,7 @@ class QuicSessionPeer { bool close_write_side_only); static PendingStream* GetPendingStream(QuicSession* session, QuicStreamId stream_id); + static void set_is_configured(QuicSession* session, bool value); }; } // namespace test diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_spdy_session_peer.cc b/chromium/net/third_party/quiche/src/quic/test_tools/quic_spdy_session_peer.cc index 85237c454e1..cad9599f6fb 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_spdy_session_peer.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_spdy_session_peer.cc @@ -14,16 +14,16 @@ namespace test { // static QuicHeadersStream* QuicSpdySessionPeer::GetHeadersStream( QuicSpdySession* session) { - DCHECK(!VersionUsesQpack(session->connection()->transport_version())); + DCHECK(!VersionUsesHttp3(session->transport_version())); return session->headers_stream(); } void QuicSpdySessionPeer::SetHeadersStream(QuicSpdySession* session, QuicHeadersStream* headers_stream) { - DCHECK(!VersionUsesQpack(session->connection()->transport_version())); + DCHECK(!VersionUsesHttp3(session->transport_version())); for (auto& it : session->stream_map()) { - if (it.first == QuicUtils::GetHeadersStreamId( - session->connection()->transport_version())) { + if (it.first == + QuicUtils::GetHeadersStreamId(session->transport_version())) { it.second.reset(headers_stream); session->headers_stream_ = static_cast<QuicHeadersStream*>(it.second.get()); break; diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_stream_id_manager_peer.cc b/chromium/net/third_party/quiche/src/quic/test_tools/quic_stream_id_manager_peer.cc index 3ce5f1f2a39..6c08ecea5ed 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_stream_id_manager_peer.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_stream_id_manager_peer.cc @@ -20,10 +20,23 @@ void QuicStreamIdManagerPeer::set_incoming_actual_max_streams( } // static +void QuicStreamIdManagerPeer::set_outgoing_max_streams( + QuicStreamIdManager* stream_id_manager, + QuicStreamCount count) { + stream_id_manager->outgoing_max_streams_ = count; +} + +// static QuicStreamId QuicStreamIdManagerPeer::GetFirstIncomingStreamId( QuicStreamIdManager* stream_id_manager) { return stream_id_manager->GetFirstIncomingStreamId(); } +// static +bool QuicStreamIdManagerPeer::get_unidirectional( + QuicStreamIdManager* stream_id_manager) { + return stream_id_manager->unidirectional_; +} + } // namespace test } // namespace quic diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_stream_id_manager_peer.h b/chromium/net/third_party/quiche/src/quic/test_tools/quic_stream_id_manager_peer.h index cc78aee5820..4c975121310 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_stream_id_manager_peer.h +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_stream_id_manager_peer.h @@ -22,9 +22,13 @@ class QuicStreamIdManagerPeer { static void set_incoming_actual_max_streams( QuicStreamIdManager* stream_id_manager, QuicStreamCount count); + static void set_outgoing_max_streams(QuicStreamIdManager* stream_id_manager, + QuicStreamCount count); static QuicStreamId GetFirstIncomingStreamId( QuicStreamIdManager* stream_id_manager); + + static bool get_unidirectional(QuicStreamIdManager* stream_id_manager); }; } // namespace test diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_client.cc b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_client.cc index 402a2311882..237d9f66d8f 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_client.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_client.cc @@ -205,8 +205,8 @@ MockableQuicClient::MockableQuicClient( supported_versions, config, epoll_server, - QuicMakeUnique<MockableQuicClientEpollNetworkHelper>(epoll_server, - this), + std::make_unique<MockableQuicClientEpollNetworkHelper>(epoll_server, + this), QuicWrapUnique( new RecordingProofVerifier(std::move(proof_verifier)))), override_server_connection_id_(EmptyQuicConnectionId()), @@ -347,6 +347,10 @@ void QuicTestClient::Initialize() { num_requests_ = 0; num_responses_ = 0; ClearPerConnectionState(); + // TODO(b/142715651): Figure out how to use QPACK in tests. + // Do not use the QPACK dynamic table in tests to avoid flakiness due to the + // uncertain order of receiving the SETTINGS frame and sending headers. + client_->disable_qpack_dynamic_table(); // As chrome will generally do this, we want it to be the default when it's // not overridden. if (!client_->config()->HasSetBytesForConnectionIdToSend()) { @@ -377,7 +381,7 @@ ssize_t QuicTestClient::SendRequestAndRstTogether(const std::string& uri) { ssize_t ret = SendMessage(headers, "", /*fin=*/true, /*flush=*/false); QuicStreamId stream_id = GetNthClientInitiatedBidirectionalStreamId( - session->connection()->transport_version(), 0); + session->transport_version(), 0); session->SendRstStream(stream_id, QUIC_STREAM_CANCELLED, 0); return ret; } @@ -406,7 +410,7 @@ ssize_t QuicTestClient::GetOrCreateStreamAndSendRequest( // May need to retry request if asynchronous rendezvous fails. std::unique_ptr<spdy::SpdyHeaderBlock> new_headers( new spdy::SpdyHeaderBlock(headers->Clone())); - push_promise_data_to_resend_ = QuicMakeUnique<TestClientDataToResend>( + push_promise_data_to_resend_ = std::make_unique<TestClientDataToResend>( std::move(new_headers), body, fin, this, std::move(ack_listener)); return 1; } diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_server.cc b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_server.cc index 19b986e8dba..a893830102e 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_server.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_server.cc @@ -4,6 +4,8 @@ #include "net/third_party/quiche/src/quic/test_tools/quic_test_server.h" +#include <utility> + #include "net/third_party/quiche/src/quic/core/quic_epoll_alarm_factory.h" #include "net/third_party/quiche/src/quic/core/quic_epoll_connection_helper.h" #include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h" @@ -116,6 +118,11 @@ class QuicTestDispatcher : public QuicSimpleDispatcher { config(), connection, this, session_helper(), crypto_config(), compressed_certs_cache(), server_backend()); } + // TODO(b/142715651): Figure out how to use QPACK in tests. + // Do not use the QPACK dynamic table in tests to avoid flakiness due to the + // uncertain order of receiving the SETTINGS frame and sending headers. + session->set_qpack_maximum_dynamic_table_capacity(0); + session->set_qpack_maximum_blocked_streams(0); session->Initialize(); return session; } @@ -181,11 +188,11 @@ QuicTestServer::QuicTestServer( QuicDispatcher* QuicTestServer::CreateQuicDispatcher() { return new QuicTestDispatcher( &config(), &crypto_config(), version_manager(), - QuicMakeUnique<QuicEpollConnectionHelper>(epoll_server(), - QuicAllocator::BUFFER_POOL), + std::make_unique<QuicEpollConnectionHelper>(epoll_server(), + QuicAllocator::BUFFER_POOL), std::unique_ptr<QuicCryptoServerStream::Helper>( new QuicSimpleCryptoServerStreamHelper()), - QuicMakeUnique<QuicEpollAlarmFactory>(epoll_server()), server_backend(), + std::make_unique<QuicEpollAlarmFactory>(epoll_server()), server_backend(), expected_server_connection_id_length()); } @@ -227,6 +234,11 @@ void ImmediateGoAwaySession::OnStreamFrame(const QuicStreamFrame& frame) { QuicSimpleServerSession::OnStreamFrame(frame); } +void ImmediateGoAwaySession::OnCryptoFrame(const QuicCryptoFrame& frame) { + SendGoAway(QUIC_PEER_GOING_AWAY, ""); + QuicSimpleServerSession::OnCryptoFrame(frame); +} + } // namespace test } // namespace quic diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_server.h b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_server.h index 3661b7a1c8e..f9b677ab04a 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_server.h +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_server.h @@ -104,6 +104,7 @@ class ImmediateGoAwaySession : public QuicSimpleServerSession { // Override to send GoAway. void OnStreamFrame(const QuicStreamFrame& frame) override; + void OnCryptoFrame(const QuicCryptoFrame& frame) override; }; } // namespace test diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_utils.cc b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_utils.cc index 5ff5e05a9b0..ff0239213a2 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_utils.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_utils.cc @@ -7,6 +7,7 @@ #include <algorithm> #include <cstdint> #include <memory> +#include <utility> #include "third_party/boringssl/src/include/openssl/chacha.h" #include "third_party/boringssl/src/include/openssl/sha.h" @@ -24,7 +25,6 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_endian.h" #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h" #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h" #include "net/third_party/quiche/src/quic/test_tools/crypto_test_utils.h" #include "net/third_party/quiche/src/quic/test_tools/quic_config_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_connection_peer.h" @@ -107,6 +107,19 @@ QuicAckFrame MakeAckFrameWithAckBlocks(size_t num_ack_blocks, return ack; } +EncryptionLevel HeaderToEncryptionLevel(const QuicPacketHeader& header) { + if (header.form == IETF_QUIC_SHORT_HEADER_PACKET) { + return ENCRYPTION_FORWARD_SECURE; + } else if (header.form == IETF_QUIC_LONG_HEADER_PACKET) { + if (header.long_packet_type == HANDSHAKE) { + return ENCRYPTION_HANDSHAKE; + } else if (header.long_packet_type == ZERO_RTT_PROTECTED) { + return ENCRYPTION_ZERO_RTT; + } + } + return ENCRYPTION_INITIAL; +} + std::unique_ptr<QuicPacket> BuildUnsizedDataPacket( QuicFramer* framer, const QuicPacketHeader& header, @@ -133,11 +146,12 @@ std::unique_ptr<QuicPacket> BuildUnsizedDataPacket( const QuicFrames& frames, size_t packet_size) { char* buffer = new char[packet_size]; - size_t length = framer->BuildDataPacket(header, frames, buffer, packet_size, - ENCRYPTION_INITIAL); + EncryptionLevel level = HeaderToEncryptionLevel(header); + size_t length = + framer->BuildDataPacket(header, frames, buffer, packet_size, level); DCHECK_NE(0u, length); // Re-construct the data packet with data ownership. - return QuicMakeUnique<QuicPacket>( + return std::make_unique<QuicPacket>( buffer, length, /* owns_buffer */ true, GetIncludedDestinationConnectionIdLength(header), GetIncludedSourceConnectionIdLength(header), header.version_flag, @@ -511,7 +525,7 @@ PacketSavingConnection::PacketSavingConnection( PacketSavingConnection::~PacketSavingConnection() {} void PacketSavingConnection::SendOrQueuePacket(SerializedPacket* packet) { - encrypted_packets_.push_back(QuicMakeUnique<QuicEncryptedPacket>( + encrypted_packets_.push_back(std::make_unique<QuicEncryptedPacket>( CopyBuffer(*packet), packet->encrypted_length, true)); clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(10)); // Transfer ownership of the packet to the SentPacketManager and the @@ -532,7 +546,7 @@ MockQuicSession::MockQuicSession(QuicConnection* connection, connection->supported_versions(), /*num_expected_unidirectional_static_streams = */ 0) { if (create_mock_crypto_stream) { - crypto_stream_ = QuicMakeUnique<MockQuicCryptoStream>(this); + crypto_stream_ = std::make_unique<MockQuicCryptoStream>(this); } ON_CALL(*this, WritevData(_, _, _, _, _)) .WillByDefault(testing::Return(QuicConsumedData(0, false))); @@ -561,7 +575,7 @@ QuicConsumedData MockQuicSession::ConsumeData(QuicStream* stream, QuicStreamOffset offset, StreamSendingState state) { if (write_length > 0) { - auto buf = QuicMakeUnique<char[]>(write_length); + auto buf = std::make_unique<char[]>(write_length); QuicDataWriter writer(write_length, buf.get(), HOST_BYTE_ORDER); stream->WriteStreamData(offset, write_length, &writer); } else { @@ -602,7 +616,7 @@ MockQuicSpdySession::MockQuicSpdySession(QuicConnection* connection, DefaultQuicConfig(), connection->supported_versions()) { if (create_mock_crypto_stream) { - crypto_stream_ = QuicMakeUnique<MockQuicCryptoStream>(this); + crypto_stream_ = std::make_unique<MockQuicCryptoStream>(this); } ON_CALL(*this, WritevData(_, _, _, _, _)) @@ -681,7 +695,7 @@ TestQuicSpdyClientSession::TestQuicSpdyClientSession( &push_promise_index_, config, supported_versions) { - crypto_stream_ = QuicMakeUnique<QuicCryptoClientStream>( + crypto_stream_ = std::make_unique<QuicCryptoClientStream>( server_id, this, crypto_test_utils::ProofVerifyContextForTesting(), crypto_config, this); Initialize(); @@ -857,10 +871,11 @@ QuicEncryptedPacket* ConstructEncryptedPacket( ParsedQuicVersionVector* versions) { return ConstructEncryptedPacket( destination_connection_id, source_connection_id, version_flag, reset_flag, - packet_number, data, destination_connection_id_included, + packet_number, data, false, destination_connection_id_included, source_connection_id_included, packet_number_length, versions, Perspective::IS_CLIENT); } + QuicEncryptedPacket* ConstructEncryptedPacket( QuicConnectionId destination_connection_id, QuicConnectionId source_connection_id, @@ -868,6 +883,26 @@ QuicEncryptedPacket* ConstructEncryptedPacket( bool reset_flag, uint64_t packet_number, const std::string& data, + bool full_padding, + QuicConnectionIdIncluded destination_connection_id_included, + QuicConnectionIdIncluded source_connection_id_included, + QuicPacketNumberLength packet_number_length, + ParsedQuicVersionVector* versions) { + return ConstructEncryptedPacket( + destination_connection_id, source_connection_id, version_flag, reset_flag, + packet_number, data, full_padding, destination_connection_id_included, + source_connection_id_included, packet_number_length, versions, + Perspective::IS_CLIENT); +} + +QuicEncryptedPacket* ConstructEncryptedPacket( + QuicConnectionId destination_connection_id, + QuicConnectionId source_connection_id, + bool version_flag, + bool reset_flag, + uint64_t packet_number, + const std::string& data, + bool full_padding, QuicConnectionIdIncluded destination_connection_id_included, QuicConnectionIdIncluded source_connection_id_included, QuicPacketNumberLength packet_number_length, @@ -887,7 +922,8 @@ QuicEncryptedPacket* ConstructEncryptedPacket( if (!versions) { versions = &supported_versions; } - if (QuicVersionHasLongHeaderLengths((*versions)[0].transport_version) && + ParsedQuicVersion version = (*versions)[0]; + if (QuicVersionHasLongHeaderLengths(version.transport_version) && version_flag) { header.retry_token_length_length = VARIABLE_LENGTH_INTEGER_LENGTH_1; header.length_length = VARIABLE_LENGTH_INTEGER_LENGTH_2; @@ -896,22 +932,11 @@ QuicEncryptedPacket* ConstructEncryptedPacket( QuicFrames frames; QuicFramer framer(*versions, QuicTime::Zero(), perspective, kQuicDefaultConnectionIdLength); - ParsedQuicVersion version = (*versions)[0]; + framer.SetInitialObfuscators(destination_connection_id); EncryptionLevel level = header.version_flag ? ENCRYPTION_INITIAL : ENCRYPTION_FORWARD_SECURE; - if (version.handshake_protocol == PROTOCOL_TLS1_3 && - level == ENCRYPTION_INITIAL) { - CrypterPair crypters; - CryptoUtils::CreateTlsInitialCrypters(Perspective::IS_CLIENT, - version.transport_version, - destination_connection_id, &crypters); - framer.SetEncrypter(ENCRYPTION_INITIAL, std::move(crypters.encrypter)); - if (version.KnowsWhichDecrypterToUse()) { - framer.InstallDecrypter(ENCRYPTION_INITIAL, - std::move(crypters.decrypter)); - } else { - framer.SetDecrypter(ENCRYPTION_INITIAL, std::move(crypters.decrypter)); - } + if (level != ENCRYPTION_INITIAL) { + framer.SetEncrypter(level, std::make_unique<NullEncrypter>(perspective)); } if (!QuicVersionUsesCryptoFrames(version.transport_version)) { QuicFrame frame( @@ -922,14 +947,18 @@ QuicEncryptedPacket* ConstructEncryptedPacket( QuicFrame frame(new QuicCryptoFrame(level, 0, data)); frames.push_back(frame); } - // We need a minimum number of bytes of encrypted payload. This will - // guarantee that we have at least that much. (It ignores the overhead of the - // stream/crypto framing, so it overpads slightly.) - size_t min_plaintext_size = - QuicPacketCreator::MinPlaintextPacketSize(version); - if (data.length() < min_plaintext_size) { - size_t padding_length = min_plaintext_size - data.length(); - frames.push_back(QuicFrame(QuicPaddingFrame(padding_length))); + if (full_padding) { + frames.push_back(QuicFrame(QuicPaddingFrame(-1))); + } else { + // We need a minimum number of bytes of encrypted payload. This will + // guarantee that we have at least that much. (It ignores the overhead of + // the stream/crypto framing, so it overpads slightly.) + size_t min_plaintext_size = + QuicPacketCreator::MinPlaintextPacketSize(version); + if (data.length() < min_plaintext_size) { + size_t padding_length = min_plaintext_size - data.length(); + frames.push_back(QuicFrame(QuicPaddingFrame(padding_length))); + } } std::unique_ptr<QuicPacket> packet( @@ -937,8 +966,8 @@ QuicEncryptedPacket* ConstructEncryptedPacket( EXPECT_TRUE(packet != nullptr); char* buffer = new char[kMaxOutgoingPacketSize]; size_t encrypted_length = - framer.EncryptPayload(ENCRYPTION_INITIAL, QuicPacketNumber(packet_number), - *packet, buffer, kMaxOutgoingPacketSize); + framer.EncryptPayload(level, QuicPacketNumber(packet_number), *packet, + buffer, kMaxOutgoingPacketSize); EXPECT_NE(0u, encrypted_length); DeleteFrames(&frames); return new QuicEncryptedPacket(buffer, encrypted_length, true); @@ -988,13 +1017,11 @@ QuicEncryptedPacket* ConstructMisFramedEncryptedPacket( QuicFramer framer(versions != nullptr ? *versions : AllSupportedVersions(), QuicTime::Zero(), perspective, kQuicDefaultConnectionIdLength); - if (version.handshake_protocol == PROTOCOL_TLS1_3 && version_flag) { - CrypterPair crypters; - CryptoUtils::CreateTlsInitialCrypters(Perspective::IS_CLIENT, - version.transport_version, - destination_connection_id, &crypters); - framer.SetEncrypter(ENCRYPTION_INITIAL, std::move(crypters.encrypter)); - framer.InstallDecrypter(ENCRYPTION_INITIAL, std::move(crypters.decrypter)); + framer.SetInitialObfuscators(destination_connection_id); + EncryptionLevel level = + version_flag ? ENCRYPTION_INITIAL : ENCRYPTION_FORWARD_SECURE; + if (level != ENCRYPTION_INITIAL) { + framer.SetEncrypter(level, std::make_unique<NullEncrypter>(perspective)); } // We need a minimum of 7 bytes of encrypted payload. This will guarantee that // we have at least that much. (It ignores the overhead of the stream/crypto @@ -1019,8 +1046,8 @@ QuicEncryptedPacket* ConstructMisFramedEncryptedPacket( char* buffer = new char[kMaxOutgoingPacketSize]; size_t encrypted_length = - framer.EncryptPayload(ENCRYPTION_INITIAL, QuicPacketNumber(packet_number), - *packet, buffer, kMaxOutgoingPacketSize); + framer.EncryptPayload(level, QuicPacketNumber(packet_number), *packet, + buffer, kMaxOutgoingPacketSize); EXPECT_NE(0u, encrypted_length); return new QuicEncryptedPacket(buffer, encrypted_length, true); } @@ -1058,6 +1085,12 @@ void CompareCharArraysWithHexError(const std::string& description, QuicConfig DefaultQuicConfig() { QuicConfig config; + config.SetInitialMaxStreamDataBytesIncomingBidirectionalToSend( + kInitialStreamFlowControlWindowForTest); + config.SetInitialMaxStreamDataBytesOutgoingBidirectionalToSend( + kInitialStreamFlowControlWindowForTest); + config.SetInitialMaxStreamDataBytesUnidirectionalToSend( + kInitialStreamFlowControlWindowForTest); config.SetInitialStreamFlowControlWindowToSend( kInitialStreamFlowControlWindowForTest); config.SetInitialSessionFlowControlWindowToSend( @@ -1161,7 +1194,7 @@ QuicStreamId GetNthClientInitiatedBidirectionalStreamId( QuicTransportVersion version, int n) { int num = n; - if (!VersionUsesQpack(version)) { + if (!VersionUsesHttp3(version)) { num++; } return QuicUtils::GetFirstBidirectionalStreamId(version, diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_utils.h b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_utils.h index 5750b9bc61d..be6e84d7746 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_utils.h +++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_utils.h @@ -23,7 +23,6 @@ #include "net/third_party/quiche/src/quic/core/quic_sent_packet_manager.h" #include "net/third_party/quiche/src/quic/core/quic_simple_buffer_allocator.h" #include "net/third_party/quiche/src/quic/platform/api/quic_mem_slice_storage.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h" #include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" #include "net/third_party/quiche/src/quic/platform/api/quic_test.h" #include "net/third_party/quiche/src/quic/test_tools/mock_clock.h" @@ -82,12 +81,26 @@ QuicEncryptedPacket* ConstructEncryptedPacket( bool reset_flag, uint64_t packet_number, const std::string& data, + bool full_padding, QuicConnectionIdIncluded destination_connection_id_included, QuicConnectionIdIncluded source_connection_id_included, QuicPacketNumberLength packet_number_length, ParsedQuicVersionVector* versions, Perspective perspective); +QuicEncryptedPacket* ConstructEncryptedPacket( + QuicConnectionId destination_connection_id, + QuicConnectionId source_connection_id, + bool version_flag, + bool reset_flag, + uint64_t packet_number, + const std::string& data, + bool full_padding, + QuicConnectionIdIncluded destination_connection_id_included, + QuicConnectionIdIncluded source_connection_id_included, + QuicPacketNumberLength packet_number_length, + ParsedQuicVersionVector* versions); + // Create an encrypted packet for testing. // If versions == nullptr, uses &AllSupportedVersions(). // Note that the packet is encrypted with NullEncrypter, so to decrypt the @@ -191,6 +204,11 @@ QuicAckFrame InitAckFrame(QuicPacketNumber largest_acked); QuicAckFrame MakeAckFrameWithAckBlocks(size_t num_ack_blocks, uint64_t least_unacked); +// Returns the encryption level that corresponds to the header type in +// |header|. If the header is for GOOGLE_QUIC_PACKET instead of an +// IETF-invariants packet, this function returns ENCRYPTION_INITIAL. +EncryptionLevel HeaderToEncryptionLevel(const QuicPacketHeader& header); + // Returns a QuicPacket that is owned by the caller, and // is populated with the fields in |header| and |frames|, or is nullptr if the // packet could not be created. @@ -629,7 +647,6 @@ class MockQuicSession : public QuicSession { void(QuicStreamId stream_id, spdy::SpdyPriority priority)); MOCK_METHOD3(OnStreamHeadersComplete, void(QuicStreamId stream_id, bool fin, size_t frame_len)); - MOCK_CONST_METHOD0(IsCryptoHandshakeConfirmed, bool()); MOCK_CONST_METHOD0(ShouldKeepConnectionAlive, bool()); MOCK_METHOD2(SendStopSending, void(uint16_t code, QuicStreamId stream_id)); MOCK_METHOD1(OnCryptoHandshakeEvent, void(QuicSession::CryptoHandshakeEvent)); @@ -690,8 +707,6 @@ class MockQuicSpdySession : public QuicSpdySession { QuicSession::OnConnectionClosed(frame, source); } - using QuicSession::RegisterStaticStream; - // From QuicSession. MOCK_METHOD2(OnConnectionClosed, void(const QuicConnectionCloseFrame& frame, @@ -727,7 +742,6 @@ class MockQuicSpdySession : public QuicSpdySession { bool fin, size_t frame_len, const QuicHeaderList& header_list)); - MOCK_CONST_METHOD0(IsCryptoHandshakeConfirmed, bool()); MOCK_METHOD2(OnPromiseHeaders, void(QuicStreamId stream_id, QuicStringPiece headers_data)); MOCK_METHOD3(OnPromiseHeadersComplete, @@ -771,6 +785,9 @@ class TestQuicSpdyServerSession : public QuicServerSessionBase { MOCK_METHOD1(CreateIncomingStream, QuicSpdyStream*(PendingStream* stream)); MOCK_METHOD0(CreateOutgoingBidirectionalStream, QuicSpdyStream*()); MOCK_METHOD0(CreateOutgoingUnidirectionalStream, QuicSpdyStream*()); + MOCK_CONST_METHOD1(SelectAlpn, + std::vector<QuicStringPiece>::const_iterator( + const std::vector<QuicStringPiece>&)); QuicCryptoServerStreamBase* CreateQuicCryptoServerStream( const QuicCryptoServerConfig* crypto_config, QuicCompressedCertsCache* compressed_certs_cache) override; @@ -839,6 +856,7 @@ class TestQuicSpdyClientSession : public QuicSpdyClientSessionBase { MOCK_METHOD1(ShouldCreateIncomingStream, bool(QuicStreamId id)); MOCK_METHOD0(ShouldCreateOutgoingBidirectionalStream, bool()); MOCK_METHOD0(ShouldCreateOutgoingUnidirectionalStream, bool()); + MOCK_CONST_METHOD0(GetAlpnsToOffer, std::vector<std::string>()); // Override to not send max header list size. void OnCryptoHandshakeEvent(CryptoHandshakeEvent event) override; @@ -953,6 +971,12 @@ class MockLossAlgorithm : public LossDetectionInterface { QuicTime, const RttStats&, QuicPacketNumber)); + MOCK_METHOD5(SpuriousLossDetected, + void(const QuicUnackedPacketMap&, + const RttStats&, + QuicTime, + QuicPacketNumber, + QuicPacketNumber)); }; class MockAckListener : public QuicAckListenerInterface { @@ -1013,12 +1037,25 @@ class MockQuicConnectionDebugVisitor : public QuicConnectionDebugVisitor { MOCK_METHOD1(OnStreamFrame, void(const QuicStreamFrame&)); + MOCK_METHOD1(OnCryptoFrame, void(const QuicCryptoFrame&)); + MOCK_METHOD1(OnStopWaitingFrame, void(const QuicStopWaitingFrame&)); MOCK_METHOD1(OnRstStreamFrame, void(const QuicRstStreamFrame&)); MOCK_METHOD1(OnConnectionCloseFrame, void(const QuicConnectionCloseFrame&)); + MOCK_METHOD1(OnBlockedFrame, void(const QuicBlockedFrame&)); + + MOCK_METHOD1(OnNewConnectionIdFrame, void(const QuicNewConnectionIdFrame&)); + + MOCK_METHOD1(OnRetireConnectionIdFrame, + void(const QuicRetireConnectionIdFrame&)); + + MOCK_METHOD1(OnNewTokenFrame, void(const QuicNewTokenFrame&)); + + MOCK_METHOD1(OnMessageFrame, void(const QuicMessageFrame&)); + MOCK_METHOD1(OnStopSendingFrame, void(const QuicStopSendingFrame&)); MOCK_METHOD1(OnPathChallengeFrame, void(const QuicPathChallengeFrame&)); @@ -1060,6 +1097,10 @@ class MockPacketCreatorDelegate : public QuicPacketCreator::DelegateInterface { MOCK_METHOD0(GetPacketBuffer, char*()); MOCK_METHOD1(OnSerializedPacket, void(SerializedPacket* packet)); MOCK_METHOD2(OnUnrecoverableError, void(QuicErrorCode, const std::string&)); + MOCK_METHOD2(ShouldGeneratePacket, + bool(HasRetransmittableData retransmittable, + IsHandshake handshake)); + MOCK_METHOD0(MaybeBundleAckOpportunistically, const QuicFrames()); }; class MockSessionNotifier : public SessionNotifierInterface { @@ -1209,6 +1250,10 @@ MATCHER_P(ReceivedPacketInfoConnectionIdEquals, destination_connection_id, "") { return arg.destination_connection_id == destination_connection_id; } +MATCHER_P2(InRange, min, max, "") { + return arg >= min && arg <= max; +} + } // namespace test } // namespace quic diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/simple_data_producer.cc b/chromium/net/third_party/quiche/src/quic/test_tools/simple_data_producer.cc index 89bf5b952e2..ad8b2c3573a 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/simple_data_producer.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/simple_data_producer.cc @@ -4,11 +4,12 @@ #include "net/third_party/quiche/src/quic/test_tools/simple_data_producer.h" +#include <utility> + #include "net/third_party/quiche/src/quic/core/quic_data_writer.h" #include "net/third_party/quiche/src/quic/platform/api/quic_bug_tracker.h" #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h" #include "net/third_party/quiche/src/quic/platform/api/quic_map_util.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h" namespace quic { @@ -27,7 +28,7 @@ void SimpleDataProducer::SaveStreamData(QuicStreamId id, return; } if (!QuicContainsKey(send_buffer_map_, id)) { - send_buffer_map_[id] = QuicMakeUnique<QuicStreamSendBuffer>(&allocator_); + send_buffer_map_[id] = std::make_unique<QuicStreamSendBuffer>(&allocator_); } send_buffer_map_[id]->SaveStreamData(iov, iov_count, iov_offset, data_length); } diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/simple_quic_framer.cc b/chromium/net/third_party/quiche/src/quic/test_tools/simple_quic_framer.cc index ad7e7bb32a1..be03aa1c869 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/simple_quic_framer.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/simple_quic_framer.cc @@ -5,6 +5,7 @@ #include "net/third_party/quiche/src/quic/test_tools/simple_quic_framer.h" #include <memory> +#include <utility> #include "net/third_party/quiche/src/quic/core/crypto/quic_decrypter.h" #include "net/third_party/quiche/src/quic/core/crypto/quic_encrypter.h" @@ -30,12 +31,12 @@ class SimpleFramerVisitor : public QuicFramerVisitorInterface { void OnPacket() override {} void OnPublicResetPacket(const QuicPublicResetPacket& packet) override { - public_reset_packet_ = QuicMakeUnique<QuicPublicResetPacket>((packet)); + public_reset_packet_ = std::make_unique<QuicPublicResetPacket>((packet)); } void OnVersionNegotiationPacket( const QuicVersionNegotiationPacket& packet) override { version_negotiation_packet_ = - QuicMakeUnique<QuicVersionNegotiationPacket>((packet)); + std::make_unique<QuicVersionNegotiationPacket>((packet)); } void OnRetryPacket(QuicConnectionId /*original_connection_id*/, @@ -70,7 +71,7 @@ class SimpleFramerVisitor : public QuicFramerVisitorInterface { new std::string(frame.data_buffer, frame.data_length); stream_data_.push_back(QuicWrapUnique(string_data)); // TODO(ianswett): A pointer isn't necessary with emplace_back. - stream_frames_.push_back(QuicMakeUnique<QuicStreamFrame>( + stream_frames_.push_back(std::make_unique<QuicStreamFrame>( frame.stream_id, frame.fin, frame.offset, QuicStringPiece(*string_data))); return true; @@ -81,7 +82,7 @@ class SimpleFramerVisitor : public QuicFramerVisitorInterface { std::string* string_data = new std::string(frame.data_buffer, frame.data_length); crypto_data_.push_back(QuicWrapUnique(string_data)); - crypto_frames_.push_back(QuicMakeUnique<QuicCryptoFrame>( + crypto_frames_.push_back(std::make_unique<QuicCryptoFrame>( frame.level, frame.offset, QuicStringPiece(*string_data))); return true; } @@ -202,7 +203,7 @@ class SimpleFramerVisitor : public QuicFramerVisitorInterface { void OnAuthenticatedIetfStatelessResetPacket( const QuicIetfStatelessResetPacket& packet) override { stateless_reset_packet_ = - QuicMakeUnique<QuicIetfStatelessResetPacket>(packet); + std::make_unique<QuicIetfStatelessResetPacket>(packet); } const QuicPacketHeader& header() const { return header_; } @@ -309,13 +310,13 @@ SimpleQuicFramer::SimpleQuicFramer( SimpleQuicFramer::~SimpleQuicFramer() {} bool SimpleQuicFramer::ProcessPacket(const QuicEncryptedPacket& packet) { - visitor_ = QuicMakeUnique<SimpleFramerVisitor>(); + visitor_ = std::make_unique<SimpleFramerVisitor>(); framer_.set_visitor(visitor_.get()); return framer_.ProcessPacket(packet); } void SimpleQuicFramer::Reset() { - visitor_ = QuicMakeUnique<SimpleFramerVisitor>(); + visitor_ = std::make_unique<SimpleFramerVisitor>(); } const QuicPacketHeader& SimpleQuicFramer::header() const { diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/simple_session_notifier_test.cc b/chromium/net/third_party/quiche/src/quic/test_tools/simple_session_notifier_test.cc index 63da6397209..93f11aa387d 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/simple_session_notifier_test.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/simple_session_notifier_test.cc @@ -4,6 +4,8 @@ #include "net/third_party/quiche/src/quic/test_tools/simple_session_notifier.h" +#include <utility> + #include "net/third_party/quiche/src/quic/core/crypto/null_encrypter.h" #include "net/third_party/quiche/src/quic/core/quic_utils.h" #include "net/third_party/quiche/src/quic/platform/api/quic_test.h" @@ -258,7 +260,7 @@ TEST_F(SimpleSessionNotifierTest, OnCanWriteCryptoFrames) { notifier_.WriteCryptoData(ENCRYPTION_INITIAL, 1024, 0); // Send crypto data [1024, 2048) in ENCRYPTION_ZERO_RTT. connection_.SetDefaultEncryptionLevel(ENCRYPTION_ZERO_RTT); - connection_.SetEncrypter(ENCRYPTION_ZERO_RTT, QuicMakeUnique<NullEncrypter>( + connection_.SetEncrypter(ENCRYPTION_ZERO_RTT, std::make_unique<NullEncrypter>( Perspective::IS_CLIENT)); EXPECT_CALL(connection_, SendCryptoData(ENCRYPTION_ZERO_RTT, 1024, 0)) .WillOnce(Invoke(&connection_, diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/simulator/quic_endpoint.cc b/chromium/net/third_party/quiche/src/quic/test_tools/simulator/quic_endpoint.cc index 28df15f0593..bd01c43d252 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/simulator/quic_endpoint.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/simulator/quic_endpoint.cc @@ -4,10 +4,11 @@ #include "net/third_party/quiche/src/quic/test_tools/simulator/quic_endpoint.h" +#include <utility> + #include "net/third_party/quiche/src/quic/core/crypto/crypto_handshake_message.h" #include "net/third_party/quiche/src/quic/core/crypto/crypto_protocol.h" #include "net/third_party/quiche/src/quic/core/quic_data_writer.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h" #include "net/third_party/quiche/src/quic/platform/api/quic_str_cat.h" #include "net/third_party/quiche/src/quic/platform/api/quic_test_output.h" #include "net/third_party/quiche/src/quic/platform/api/quic_text_utils.h" @@ -85,14 +86,15 @@ QuicEndpoint::QuicEndpoint(Simulator* simulator, connection_.SetSelfAddress(GetAddressFromName(name)); connection_.set_visitor(this); connection_.SetEncrypter(ENCRYPTION_FORWARD_SECURE, - QuicMakeUnique<NullEncrypter>(perspective)); + std::make_unique<NullEncrypter>(perspective)); + connection_.SetEncrypter(ENCRYPTION_INITIAL, nullptr); if (connection_.version().KnowsWhichDecrypterToUse()) { connection_.InstallDecrypter(ENCRYPTION_FORWARD_SECURE, - QuicMakeUnique<NullDecrypter>(perspective)); + std::make_unique<NullDecrypter>(perspective)); connection_.RemoveDecrypter(ENCRYPTION_INITIAL); } else { connection_.SetDecrypter(ENCRYPTION_FORWARD_SECURE, - QuicMakeUnique<NullDecrypter>(perspective)); + std::make_unique<NullDecrypter>(perspective)); } connection_.SetDefaultEncryptionLevel(ENCRYPTION_FORWARD_SECURE); if (perspective == Perspective::IS_SERVER) { @@ -102,7 +104,7 @@ QuicEndpoint::QuicEndpoint(Simulator* simulator, connection_.SetDataProducer(&producer_); connection_.SetSessionNotifier(this); if (connection_.session_decides_what_to_write()) { - notifier_ = QuicMakeUnique<test::SimpleSessionNotifier>(&connection_); + notifier_ = std::make_unique<test::SimpleSessionNotifier>(&connection_); } // Configure the connection as if it received a handshake. This is important @@ -179,7 +181,7 @@ void QuicEndpoint::DropNextIncomingPacket() { } void QuicEndpoint::RecordTrace() { - trace_visitor_ = QuicMakeUnique<QuicTraceVisitor>(&connection_); + trace_visitor_ = std::make_unique<QuicTraceVisitor>(&connection_); connection_.set_debug_visitor(trace_visitor_.get()); } @@ -323,7 +325,7 @@ WriteResult QuicEndpoint::Writer::WritePacket( return WriteResult(WRITE_STATUS_BLOCKED, 0); } - auto packet = QuicMakeUnique<Packet>(); + auto packet = std::make_unique<Packet>(); packet->source = endpoint_->name(); packet->destination = endpoint_->peer_name_; packet->tx_timestamp = endpoint_->clock_->Now(); diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/simulator/quic_endpoint_test.cc b/chromium/net/third_party/quiche/src/quic/test_tools/simulator/quic_endpoint_test.cc index 74b48ba16ea..772cd2e4ffd 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/simulator/quic_endpoint_test.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/simulator/quic_endpoint_test.cc @@ -4,8 +4,9 @@ #include "net/third_party/quiche/src/quic/test_tools/simulator/quic_endpoint.h" +#include <utility> + #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h" #include "net/third_party/quiche/src/quic/platform/api/quic_test.h" #include "net/third_party/quiche/src/quic/test_tools/quic_connection_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h" @@ -37,14 +38,14 @@ class QuicEndpointTest : public QuicTest { Switch switch_; std::unique_ptr<SymmetricLink> Link(Endpoint* a, Endpoint* b) { - return QuicMakeUnique<SymmetricLink>(a, b, kDefaultBandwidth, - kDefaultPropagationDelay); + return std::make_unique<SymmetricLink>(a, b, kDefaultBandwidth, + kDefaultPropagationDelay); } std::unique_ptr<SymmetricLink> CustomLink(Endpoint* a, Endpoint* b, uint64_t extra_rtt_ms) { - return QuicMakeUnique<SymmetricLink>( + return std::make_unique<SymmetricLink>( a, b, kDefaultBandwidth, kDefaultPropagationDelay + QuicTime::Delta::FromMilliseconds(extra_rtt_ms)); @@ -156,22 +157,22 @@ TEST_F(QuicEndpointTest, TwoWayTransmission) { TEST_F(QuicEndpointTest, Competition) { // TODO(63765788): Turn back on this flag when the issue if fixed. SetQuicReloadableFlag(quic_bbr_one_mss_conservation, false); - auto endpoint_a = QuicMakeUnique<QuicEndpoint>( + auto endpoint_a = std::make_unique<QuicEndpoint>( &simulator_, "Endpoint A", "Endpoint D (A)", Perspective::IS_CLIENT, test::TestConnectionId(42)); - auto endpoint_b = QuicMakeUnique<QuicEndpoint>( + auto endpoint_b = std::make_unique<QuicEndpoint>( &simulator_, "Endpoint B", "Endpoint D (B)", Perspective::IS_CLIENT, test::TestConnectionId(43)); - auto endpoint_c = QuicMakeUnique<QuicEndpoint>( + auto endpoint_c = std::make_unique<QuicEndpoint>( &simulator_, "Endpoint C", "Endpoint D (C)", Perspective::IS_CLIENT, test::TestConnectionId(44)); - auto endpoint_d_a = QuicMakeUnique<QuicEndpoint>( + auto endpoint_d_a = std::make_unique<QuicEndpoint>( &simulator_, "Endpoint D (A)", "Endpoint A", Perspective::IS_SERVER, test::TestConnectionId(42)); - auto endpoint_d_b = QuicMakeUnique<QuicEndpoint>( + auto endpoint_d_b = std::make_unique<QuicEndpoint>( &simulator_, "Endpoint D (B)", "Endpoint B", Perspective::IS_SERVER, test::TestConnectionId(43)); - auto endpoint_d_c = QuicMakeUnique<QuicEndpoint>( + auto endpoint_d_c = std::make_unique<QuicEndpoint>( &simulator_, "Endpoint D (C)", "Endpoint C", Perspective::IS_SERVER, test::TestConnectionId(44)); QuicEndpointMultiplexer endpoint_d( diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/simulator/simulator_test.cc b/chromium/net/third_party/quiche/src/quic/test_tools/simulator/simulator_test.cc index 1e7a8ce53a0..06ef4b235b0 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/simulator/simulator_test.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/simulator/simulator_test.cc @@ -4,9 +4,10 @@ #include "net/third_party/quiche/src/quic/test_tools/simulator/simulator.h" +#include <utility> + #include "net/third_party/quiche/src/quic/platform/api/quic_containers.h" #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h" #include "net/third_party/quiche/src/quic/platform/api/quic_test.h" #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h" #include "net/third_party/quiche/src/quic/test_tools/simulator/alarm_factory.h" @@ -123,7 +124,7 @@ class LinkSaturator : public Endpoint { void Act() override { if (tx_port_->TimeUntilAvailable().IsZero()) { - auto packet = QuicMakeUnique<Packet>(); + auto packet = std::make_unique<Packet>(); packet->source = name_; packet->destination = destination_; packet->tx_timestamp = clock_->Now(); @@ -255,7 +256,7 @@ TEST_F(SimulatorTest, Queue) { EXPECT_EQ(0u, queue.packets_queued()); EXPECT_EQ(0u, acceptor.packets()->size()); - auto first_packet = QuicMakeUnique<Packet>(); + auto first_packet = std::make_unique<Packet>(); first_packet->size = 600; queue.AcceptPacket(std::move(first_packet)); EXPECT_EQ(600u, queue.bytes_queued()); @@ -263,14 +264,14 @@ TEST_F(SimulatorTest, Queue) { EXPECT_EQ(0u, acceptor.packets()->size()); // The second packet does not fit and is dropped. - auto second_packet = QuicMakeUnique<Packet>(); + auto second_packet = std::make_unique<Packet>(); second_packet->size = 500; queue.AcceptPacket(std::move(second_packet)); EXPECT_EQ(600u, queue.bytes_queued()); EXPECT_EQ(1u, queue.packets_queued()); EXPECT_EQ(0u, acceptor.packets()->size()); - auto third_packet = QuicMakeUnique<Packet>(); + auto third_packet = std::make_unique<Packet>(); third_packet->size = 400; queue.AcceptPacket(std::move(third_packet)); EXPECT_EQ(1000u, queue.bytes_queued()); diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/simulator/switch.cc b/chromium/net/third_party/quiche/src/quic/test_tools/simulator/switch.cc index 809c7f8d785..e9b57ec6171 100644 --- a/chromium/net/third_party/quiche/src/quic/test_tools/simulator/switch.cc +++ b/chromium/net/third_party/quiche/src/quic/test_tools/simulator/switch.cc @@ -3,8 +3,8 @@ // found in the LICENSE file. #include <cinttypes> +#include <utility> -#include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h" #include "net/third_party/quiche/src/quic/platform/api/quic_str_cat.h" #include "net/third_party/quiche/src/quic/test_tools/simulator/switch.h" @@ -77,7 +77,7 @@ void Switch::DispatchPacket(SwitchPortNumber port_number, if (!egress_port.connected()) { continue; } - egress_port.EnqueuePacket(QuicMakeUnique<Packet>(*packet)); + egress_port.EnqueuePacket(std::make_unique<Packet>(*packet)); } } |