Use quiche string libraries in third_party/quic/core gfe-relnote: n/a, no functional change PiperOrigin-RevId: 285401547 Change-Id: Ice6d421ff7058fe2d47aee426d7634b6d403ee3f
diff --git a/quic/core/chlo_extractor.cc b/quic/core/chlo_extractor.cc index 0430f8d..d2a0608 100644 --- a/quic/core/chlo_extractor.cc +++ b/quic/core/chlo_extractor.cc
@@ -13,8 +13,8 @@ #include "net/third_party/quiche/src/quic/core/crypto/quic_encrypter.h" #include "net/third_party/quiche/src/quic/core/quic_framer.h" #include "net/third_party/quiche/src/quic/core/quic_utils.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_text_utils.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h" namespace quic { @@ -38,7 +38,7 @@ const QuicVersionNegotiationPacket& /*packet*/) override {} void OnRetryPacket(QuicConnectionId /*original_connection_id*/, QuicConnectionId /*new_connection_id*/, - QuicStringPiece /*retry_token*/) override {} + quiche::QuicheStringPiece /*retry_token*/) override {} bool OnUnauthenticatedPublicHeader(const QuicPacketHeader& header) override; bool OnUnauthenticatedHeader(const QuicPacketHeader& header) override; void OnDecryptedPacket(EncryptionLevel /*level*/) override {} @@ -83,7 +83,7 @@ void OnHandshakeMessage(const CryptoHandshakeMessage& message) override; // Shared implementation between OnStreamFrame and OnCryptoFrame. - bool OnHandshakeData(QuicStringPiece data); + bool OnHandshakeData(quiche::QuicheStringPiece data); bool found_chlo() { return found_chlo_; } bool chlo_contains_tags() { return chlo_contains_tags_; } @@ -147,10 +147,10 @@ // CHLO will be sent in CRYPTO frames in v47 and above. return false; } - QuicStringPiece data(frame.data_buffer, frame.data_length); + quiche::QuicheStringPiece data(frame.data_buffer, frame.data_length); if (QuicUtils::IsCryptoStreamId(framer_->transport_version(), frame.stream_id) && - frame.offset == 0 && QuicTextUtils::StartsWith(data, "CHLO")) { + frame.offset == 0 && quiche::QuicheTextUtils::StartsWith(data, "CHLO")) { return OnHandshakeData(data); } return true; @@ -161,14 +161,14 @@ // CHLO will be in stream frames before v47. return false; } - QuicStringPiece data(frame.data_buffer, frame.data_length); - if (frame.offset == 0 && QuicTextUtils::StartsWith(data, "CHLO")) { + quiche::QuicheStringPiece data(frame.data_buffer, frame.data_length); + if (frame.offset == 0 && quiche::QuicheTextUtils::StartsWith(data, "CHLO")) { return OnHandshakeData(data); } return true; } -bool ChloFramerVisitor::OnHandshakeData(QuicStringPiece data) { +bool ChloFramerVisitor::OnHandshakeData(quiche::QuicheStringPiece data) { CryptoFramer crypto_framer; crypto_framer.set_visitor(this); if (!crypto_framer.ProcessInput(data)) {
diff --git a/quic/core/chlo_extractor_test.cc b/quic/core/chlo_extractor_test.cc index aab0f65..d556f7a 100644 --- a/quic/core/chlo_extractor_test.cc +++ b/quic/core/chlo_extractor_test.cc
@@ -14,6 +14,7 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_test.h" #include "net/third_party/quiche/src/quic/test_tools/crypto_test_utils.h" #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { namespace test { @@ -60,7 +61,7 @@ } void MakePacket(ParsedQuicVersion version, - QuicStringPiece data, + quiche::QuicheStringPiece data, bool munge_offset, bool munge_stream_id) { QuicFrames frames;
diff --git a/quic/core/congestion_control/bbr2_simulator_test.cc b/quic/core/congestion_control/bbr2_simulator_test.cc index 811161d..19d68b2 100644 --- a/quic/core/congestion_control/bbr2_simulator_test.cc +++ b/quic/core/congestion_control/bbr2_simulator_test.cc
@@ -25,6 +25,7 @@ #include "net/third_party/quiche/src/quic/test_tools/simulator/simulator.h" #include "net/third_party/quiche/src/quic/test_tools/simulator/switch.h" #include "net/third_party/quiche/src/quic/test_tools/simulator/traffic_policer.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" using testing::AllOf; using testing::Ge; @@ -804,8 +805,8 @@ uint64_t first_connection_id = 42; std::vector<simulator::QuicEndpointBase*> receiver_endpoint_pointers; for (size_t i = 0; i < MultiSenderTopologyParams::kNumLocalLinks; ++i) { - std::string sender_name = QuicStrCat("Sender", i + 1); - std::string receiver_name = QuicStrCat("Receiver", i + 1); + std::string sender_name = quiche::QuicheStrCat("Sender", i + 1); + std::string receiver_name = quiche::QuicheStrCat("Receiver", i + 1); sender_endpoints_.push_back(std::make_unique<simulator::QuicEndpoint>( &simulator_, sender_name, receiver_name, Perspective::IS_CLIENT, TestConnectionId(first_connection_id + i)));
diff --git a/quic/core/congestion_control/cubic_bytes_test.cc b/quic/core/congestion_control/cubic_bytes_test.cc index 4f3e9b1..7a48ddf 100644 --- a/quic/core/congestion_control/cubic_bytes_test.cc +++ b/quic/core/congestion_control/cubic_bytes_test.cc
@@ -7,7 +7,6 @@ #include <cstdint> #include "net/third_party/quiche/src/quic/platform/api/quic_flags.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.h" #include "net/third_party/quiche/src/quic/test_tools/mock_clock.h"
diff --git a/quic/core/congestion_control/send_algorithm_test.cc b/quic/core/congestion_control/send_algorithm_test.cc index b363813..150ac1a 100644 --- a/quic/core/congestion_control/send_algorithm_test.cc +++ b/quic/core/congestion_control/send_algorithm_test.cc
@@ -13,7 +13,6 @@ #include "net/third_party/quiche/src/quic/core/quic_types.h" #include "net/third_party/quiche/src/quic/core/quic_utils.h" #include "net/third_party/quiche/src/quic/platform/api/quic_logging.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.h" #include "net/third_party/quiche/src/quic/test_tools/mock_clock.h" #include "net/third_party/quiche/src/quic/test_tools/quic_config_peer.h" @@ -23,6 +22,7 @@ #include "net/third_party/quiche/src/quic/test_tools/simulator/quic_endpoint.h" #include "net/third_party/quiche/src/quic/test_tools/simulator/simulator.h" #include "net/third_party/quiche/src/quic/test_tools/simulator/switch.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" namespace quic { namespace test { @@ -134,7 +134,7 @@ std::string TestParamToString( const testing::TestParamInfo<TestParams>& params) { - return QuicStrCat( + return quiche::QuicheStrCat( CongestionControlTypeToString(params.param.congestion_control_type), "_"); }
diff --git a/quic/core/legacy_quic_stream_id_manager.cc b/quic/core/legacy_quic_stream_id_manager.cc index b8498b3..6e8f13a 100644 --- a/quic/core/legacy_quic_stream_id_manager.cc +++ b/quic/core/legacy_quic_stream_id_manager.cc
@@ -8,6 +8,7 @@ #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_map_util.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" namespace quic {
diff --git a/quic/core/quic_bandwidth.cc b/quic/core/quic_bandwidth.cc index 9fcc3b9..ad2c032 100644 --- a/quic/core/quic_bandwidth.cc +++ b/quic/core/quic_bandwidth.cc
@@ -7,14 +7,16 @@ #include <cinttypes> #include <string> -#include "net/third_party/quiche/src/quic/platform/api/quic_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { std::string QuicBandwidth::ToDebuggingValue() const { if (bits_per_second_ < 80000) { - return QuicStringPrintf("%" PRId64 " bits/s (%" PRId64 " bytes/s)", - bits_per_second_, bits_per_second_ / 8); + return quiche::QuicheStringPrintf("%" PRId64 " bits/s (%" PRId64 + " bytes/s)", + bits_per_second_, bits_per_second_ / 8); } double divisor; @@ -32,9 +34,9 @@ double bits_per_second_with_unit = bits_per_second_ / divisor; double bytes_per_second_with_unit = bits_per_second_with_unit / 8; - return QuicStringPrintf("%.2f %cbits/s (%.2f %cbytes/s)", - bits_per_second_with_unit, unit, - bytes_per_second_with_unit, unit); + return quiche::QuicheStringPrintf("%.2f %cbits/s (%.2f %cbytes/s)", + bits_per_second_with_unit, unit, + bytes_per_second_with_unit, unit); } } // namespace quic
diff --git a/quic/core/quic_config.cc b/quic/core/quic_config.cc index 3d8fe3f..d5c4d33 100644 --- a/quic/core/quic_config.cc +++ b/quic/core/quic_config.cc
@@ -20,8 +20,8 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h" #include "net/third_party/quiche/src/quic/platform/api/quic_macros.h" #include "net/third_party/quiche/src/quic/platform/api/quic_socket_address.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" #include "net/third_party/quiche/src/quic/platform/api/quic_uint128.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { @@ -380,7 +380,7 @@ const CryptoHandshakeMessage& peer_hello, HelloType /*hello_type*/, std::string* error_details) { - QuicStringPiece address; + quiche::QuicheStringPiece address; if (!peer_hello.GetStringPiece(tag_, &address)) { if (presence_ == PRESENCE_REQUIRED) { *error_details = "Missing " + QuicTagToString(tag_);
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc index 6ff097e..1d176d7 100644 --- a/quic/core/quic_connection.cc +++ b/quic/core/quic_connection.cc
@@ -34,9 +34,10 @@ #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_map_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_string_utils.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_text_utils.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h" namespace quic { @@ -606,7 +607,7 @@ } if (QuicContainsValue(packet.versions, version())) { - const std::string error_details = QuicStrCat( + const std::string error_details = quiche::QuicheStrCat( "Server already supports client's version ", ParsedQuicVersionToString(version()), " and should have accepted the connection instead of sending {", @@ -620,7 +621,7 @@ server_supported_versions_ = packet.versions; CloseConnection( QUIC_INVALID_VERSION, - QuicStrCat( + quiche::QuicheStrCat( "Client may support one of the versions in the server's list, but " "it's going to close the connection anyway. Supported versions: {", ParsedQuicVersionVectorToString(framer_.supported_versions()), @@ -632,18 +633,18 @@ // Handles retry for client connection. void QuicConnection::OnRetryPacket(QuicConnectionId original_connection_id, QuicConnectionId new_connection_id, - QuicStringPiece retry_token) { + quiche::QuicheStringPiece retry_token) { DCHECK_EQ(Perspective::IS_CLIENT, perspective_); if (original_connection_id != server_connection_id_) { QUIC_DLOG(ERROR) << "Ignoring RETRY with original connection ID " << original_connection_id << " not matching expected " << server_connection_id_ << " token " - << QuicTextUtils::HexEncode(retry_token); + << quiche::QuicheTextUtils::HexEncode(retry_token); return; } if (retry_has_been_parsed_) { QUIC_DLOG(ERROR) << "Ignoring non-first RETRY with token " - << QuicTextUtils::HexEncode(retry_token); + << quiche::QuicheTextUtils::HexEncode(retry_token); return; } retry_has_been_parsed_ = true; @@ -651,7 +652,7 @@ QUIC_DLOG(INFO) << "Received RETRY, replacing connection ID " << server_connection_id_ << " with " << new_connection_id << ", received token " - << QuicTextUtils::HexEncode(retry_token); + << quiche::QuicheTextUtils::HexEncode(retry_token); server_connection_id_ = new_connection_id; packet_creator_.SetServerConnectionId(server_connection_id_); packet_creator_.SetRetryToken(retry_token); @@ -763,9 +764,9 @@ if (!header.version_flag) { // Packets should have the version flag till version negotiation is // done. - std::string error_details = - QuicStrCat(ENDPOINT, "Packet ", header.packet_number.ToUint64(), - " without version flag before version negotiated."); + std::string error_details = quiche::QuicheStrCat( + ENDPOINT, "Packet ", header.packet_number.ToUint64(), + " without version flag before version negotiated."); QUIC_DLOG(WARNING) << error_details; CloseConnection(QUIC_INVALID_VERSION, error_details, ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET); @@ -1349,7 +1350,7 @@ debug_visitor_->OnMessageFrame(frame); } visitor_->OnMessageReceived( - QuicStringPiece(frame.data, frame.message_length)); + quiche::QuicheStringPiece(frame.data, frame.message_length)); should_last_packet_instigate_acks_ = true; return connected_; } @@ -1501,12 +1502,12 @@ sent_packet_manager_.GetLeastUnacked() + max_tracked_packets_) { CloseConnection( QUIC_TOO_MANY_OUTSTANDING_SENT_PACKETS, - QuicStrCat("More than ", max_tracked_packets_, - " outstanding, least_unacked: ", - sent_packet_manager_.GetLeastUnacked().ToUint64(), - ", packets_processed: ", stats_.packets_processed, - ", last_decrypted_packet_level: ", - EncryptionLevelToString(last_decrypted_packet_level_)), + quiche::QuicheStrCat( + "More than ", max_tracked_packets_, " outstanding, least_unacked: ", + sent_packet_manager_.GetLeastUnacked().ToUint64(), + ", packets_processed: ", stats_.packets_processed, + ", last_decrypted_packet_level: ", + EncryptionLevelToString(last_decrypted_packet_level_)), ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET); } } @@ -1576,7 +1577,7 @@ QUIC_DVLOG(2) << ENDPOINT << "Sending version negotiation packet: {" << ParsedQuicVersionVectorToString(framer_.supported_versions()) << "}, " << (ietf_quic ? "" : "!") << "ietf_quic:" << std::endl - << QuicTextUtils::HexDump(QuicStringPiece( + << quiche::QuicheTextUtils::HexDump(quiche::QuicheStringPiece( version_packet->data(), version_packet->length())); WriteResult result = writer_->WritePacket( version_packet->data(), version_packet->length(), self_address().host(), @@ -1753,8 +1754,8 @@ } QUIC_DVLOG(2) << ENDPOINT << "Received encrypted " << packet.length() << " bytes:" << std::endl - << QuicTextUtils::HexDump( - QuicStringPiece(packet.data(), packet.length())); + << quiche::QuicheTextUtils::HexDump(quiche::QuicheStringPiece( + packet.data(), packet.length())); QUIC_BUG_IF(current_packet_data_ != nullptr) << "ProcessUdpPacket must not be called while processing a packet."; if (debug_visitor_ != nullptr) { @@ -2198,7 +2199,7 @@ << ", encrypted length:" << encrypted_length << ", fate: " << SerializedPacketFateToString(fate); QUIC_DVLOG(2) << ENDPOINT << "packet(" << packet_number << "): " << std::endl - << QuicTextUtils::HexDump(QuicStringPiece( + << quiche::QuicheTextUtils::HexDump(quiche::QuicheStringPiece( packet->encrypted_buffer, encrypted_length)); // Measure the RTT from before the write begins to avoid underestimating the @@ -2430,7 +2431,7 @@ } write_error_occurred_ = true; - const std::string error_details = QuicStrCat( + const std::string error_details = quiche::QuicheStrCat( "Write failed with error: ", error_code, " (", strerror(error_code), ")"); QUIC_LOG_FIRST_N(ERROR, 2) << ENDPOINT << error_details; switch (error_code) { @@ -2605,8 +2606,8 @@ if (sent_packet_manager_.pto_enabled() && max_consecutive_ptos_ > 0 && sent_packet_manager_.GetConsecutivePtoCount() >= max_consecutive_ptos_) { CloseConnection(QUIC_TOO_MANY_RTOS, - QuicStrCat(max_consecutive_ptos_ + 1, - "consecutive retransmission timeouts"), + quiche::QuicheStrCat(max_consecutive_ptos_ + 1, + "consecutive retransmission timeouts"), ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET); return; } @@ -3450,9 +3451,9 @@ QUIC_DVLOG(2) << ENDPOINT << "Sending path probe packet for server connection ID " << server_connection_id_ << std::endl - << QuicTextUtils::HexDump( - QuicStringPiece(probing_packet->encrypted_buffer, - probing_packet->encrypted_length)); + << quiche::QuicheTextUtils::HexDump(quiche::QuicheStringPiece( + probing_packet->encrypted_buffer, + probing_packet->encrypted_length)); WriteResult result = probing_writer->WritePacket( probing_packet->encrypted_buffer, probing_packet->encrypted_length, self_address().host(), peer_address, per_packet_options_); @@ -3553,11 +3554,11 @@ return uber_received_packet_manager_.IsAckFrameUpdated(); } -QuicStringPiece QuicConnection::GetCurrentPacket() { +quiche::QuicheStringPiece QuicConnection::GetCurrentPacket() { if (current_packet_data_ == nullptr) { - return QuicStringPiece(); + return quiche::QuicheStringPiece(); } - return QuicStringPiece(current_packet_data_, last_size_); + return quiche::QuicheStringPiece(current_packet_data_, last_size_); } bool QuicConnection::MaybeConsiderAsMemoryCorruption(
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h index ca4e9ca..9c5810a 100644 --- a/quic/core/quic_connection.h +++ b/quic/core/quic_connection.h
@@ -46,7 +46,8 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_containers.h" #include "net/third_party/quiche/src/quic/platform/api/quic_export.h" #include "net/third_party/quiche/src/quic/platform/api/quic_socket_address.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { @@ -86,7 +87,7 @@ virtual void OnGoAway(const QuicGoAwayFrame& frame) = 0; // Called when |message| has been received. - virtual void OnMessageReceived(QuicStringPiece message) = 0; + virtual void OnMessageReceived(quiche::QuicheStringPiece message) = 0; // Called when a MAX_STREAMS frame has been received from the peer. virtual bool OnMaxStreamsFrame(const QuicMaxStreamsFrame& frame) = 0; @@ -480,7 +481,7 @@ const QuicVersionNegotiationPacket& packet) override; void OnRetryPacket(QuicConnectionId original_connection_id, QuicConnectionId new_connection_id, - QuicStringPiece retry_token) override; + quiche::QuicheStringPiece retry_token) override; bool OnUnauthenticatedPublicHeader(const QuicPacketHeader& header) override; bool OnUnauthenticatedHeader(const QuicPacketHeader& header) override; void OnDecryptedPacket(EncryptionLevel level) override; @@ -782,7 +783,7 @@ QuicConnectionHelperInterface* helper() { return helper_; } QuicAlarmFactory* alarm_factory() { return alarm_factory_; } - QuicStringPiece GetCurrentPacket(); + quiche::QuicheStringPiece GetCurrentPacket(); const QuicFramer& framer() const { return framer_; } @@ -996,7 +997,7 @@ ~BufferedPacket(); // encrypted_buffer is owned by buffered packet. - QuicStringPiece encrypted_buffer; + quiche::QuicheStringPiece encrypted_buffer; // Self and peer addresses when the packet is serialized. const QuicSocketAddress self_address; const QuicSocketAddress peer_address;
diff --git a/quic/core/quic_connection_id.cc b/quic/core/quic_connection_id.cc index 49e90b6..c495b35 100644 --- a/quic/core/quic_connection_id.cc +++ b/quic/core/quic_connection_id.cc
@@ -17,8 +17,8 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_flag_utils.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_text_utils.h" #include "net/third_party/quiche/src/common/platform/api/quiche_endian.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h" namespace quic { @@ -152,7 +152,7 @@ if (IsEmpty()) { return std::string("0"); } - return QuicTextUtils::HexEncode(data(), length_); + return quiche::QuicheTextUtils::HexEncode(data(), length_); } std::ostream& operator<<(std::ostream& os, const QuicConnectionId& v) {
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc index ab5a7ba..efe3544 100644 --- a/quic/core/quic_connection_test.cc +++ b/quic/core/quic_connection_test.cc
@@ -27,8 +27,6 @@ #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_reference_counted.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_str_cat.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" #include "net/third_party/quiche/src/quic/test_tools/mock_random.h" @@ -41,6 +39,8 @@ #include "net/third_party/quiche/src/quic/test_tools/simple_data_producer.h" #include "net/third_party/quiche/src/quic/test_tools/simple_quic_framer.h" #include "net/third_party/quiche/src/quic/test_tools/simple_session_notifier.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" using testing::_; using testing::AnyNumber; @@ -117,19 +117,21 @@ ~TaggingEncrypter() override {} // QuicEncrypter interface. - bool SetKey(QuicStringPiece /*key*/) override { return true; } + bool SetKey(quiche::QuicheStringPiece /*key*/) override { return true; } - bool SetNoncePrefix(QuicStringPiece /*nonce_prefix*/) override { + bool SetNoncePrefix(quiche::QuicheStringPiece /*nonce_prefix*/) override { return true; } - bool SetIV(QuicStringPiece /*iv*/) override { return true; } + bool SetIV(quiche::QuicheStringPiece /*iv*/) override { return true; } - bool SetHeaderProtectionKey(QuicStringPiece /*key*/) override { return true; } + bool SetHeaderProtectionKey(quiche::QuicheStringPiece /*key*/) override { + return true; + } bool EncryptPacket(uint64_t /*packet_number*/, - QuicStringPiece /*associated_data*/, - QuicStringPiece plaintext, + quiche::QuicheStringPiece /*associated_data*/, + quiche::QuicheStringPiece plaintext, char* output, size_t* output_length, size_t max_output_length) override { @@ -146,7 +148,7 @@ } std::string GenerateHeaderProtectionMask( - QuicStringPiece /*sample*/) override { + quiche::QuicheStringPiece /*sample*/) override { return std::string(5, 0); } @@ -162,9 +164,13 @@ return plaintext_size + kTagSize; } - QuicStringPiece GetKey() const override { return QuicStringPiece(); } + quiche::QuicheStringPiece GetKey() const override { + return quiche::QuicheStringPiece(); + } - QuicStringPiece GetNoncePrefix() const override { return QuicStringPiece(); } + quiche::QuicheStringPiece GetNoncePrefix() const override { + return quiche::QuicheStringPiece(); + } private: enum { @@ -181,17 +187,19 @@ ~TaggingDecrypter() override {} // QuicDecrypter interface - bool SetKey(QuicStringPiece /*key*/) override { return true; } + bool SetKey(quiche::QuicheStringPiece /*key*/) override { return true; } - bool SetNoncePrefix(QuicStringPiece /*nonce_prefix*/) override { + bool SetNoncePrefix(quiche::QuicheStringPiece /*nonce_prefix*/) override { return true; } - bool SetIV(QuicStringPiece /*iv*/) override { return true; } + bool SetIV(quiche::QuicheStringPiece /*iv*/) override { return true; } - bool SetHeaderProtectionKey(QuicStringPiece /*key*/) override { return true; } + bool SetHeaderProtectionKey(quiche::QuicheStringPiece /*key*/) override { + return true; + } - bool SetPreliminaryKey(QuicStringPiece /*key*/) override { + bool SetPreliminaryKey(quiche::QuicheStringPiece /*key*/) override { QUIC_BUG << "should not be called"; return false; } @@ -201,8 +209,8 @@ } bool DecryptPacket(uint64_t /*packet_number*/, - QuicStringPiece /*associated_data*/, - QuicStringPiece ciphertext, + quiche::QuicheStringPiece /*associated_data*/, + quiche::QuicheStringPiece ciphertext, char* output, size_t* output_length, size_t /*max_output_length*/) override { @@ -225,13 +233,17 @@ size_t GetKeySize() const override { return 0; } size_t GetNoncePrefixSize() const override { return 0; } size_t GetIVSize() const override { return 0; } - QuicStringPiece GetKey() const override { return QuicStringPiece(); } - QuicStringPiece GetNoncePrefix() const override { return QuicStringPiece(); } + quiche::QuicheStringPiece GetKey() const override { + return quiche::QuicheStringPiece(); + } + quiche::QuicheStringPiece GetNoncePrefix() const override { + return quiche::QuicheStringPiece(); + } // Use a distinct value starting with 0xFFFFFF, which is never used by TLS. uint32_t cipher_id() const override { return 0xFFFFFFF0; } protected: - virtual uint8_t GetTag(QuicStringPiece ciphertext) { + virtual uint8_t GetTag(quiche::QuicheStringPiece ciphertext) { return ciphertext.data()[ciphertext.size() - 1]; } @@ -240,7 +252,7 @@ kTagSize = 12, }; - bool CheckTag(QuicStringPiece ciphertext, uint8_t tag) { + bool CheckTag(quiche::QuicheStringPiece ciphertext, uint8_t tag) { for (size_t i = ciphertext.size() - kTagSize; i < ciphertext.size(); i++) { if (ciphertext.data()[i] != tag) { return false; @@ -259,7 +271,9 @@ ~StrictTaggingDecrypter() override {} // TaggingQuicDecrypter - uint8_t GetTag(QuicStringPiece /*ciphertext*/) override { return tag_; } + uint8_t GetTag(quiche::QuicheStringPiece /*ciphertext*/) override { + return tag_; + } // Use a distinct value starting with 0xFFFFFF, which is never used by TLS. uint32_t cipher_id() const override { return 0xFFFFFFF1; } @@ -673,7 +687,7 @@ } QuicConsumedData SendStreamDataWithString(QuicStreamId id, - QuicStringPiece data, + quiche::QuicheStringPiece data, QuicStreamOffset offset, StreamSendingState state) { ScopedPacketFlusher flusher(this); @@ -694,7 +708,7 @@ QuicConsumedData SendApplicationDataAtLevel(EncryptionLevel encryption_level, QuicStreamId id, - QuicStringPiece data, + quiche::QuicheStringPiece data, QuicStreamOffset offset, StreamSendingState state) { ScopedPacketFlusher flusher(this); @@ -731,7 +745,7 @@ // tests for some cases for this stream. QuicConsumedData SendCryptoStreamData() { QuicStreamOffset offset = 0; - QuicStringPiece data("chlo"); + quiche::QuicheStringPiece data("chlo"); if (!QuicVersionUsesCryptoFrames(transport_version())) { return SendCryptoDataWithString(data, offset); } @@ -747,7 +761,7 @@ return QuicConsumedData(bytes_written, /*fin_consumed*/ false); } - QuicConsumedData SendCryptoDataWithString(QuicStringPiece data, + QuicConsumedData SendCryptoDataWithString(quiche::QuicheStringPiece data, QuicStreamOffset offset) { if (!QuicVersionUsesCryptoFrames(transport_version())) { return SendStreamDataWithString( @@ -910,7 +924,7 @@ // Used by ::testing::PrintToStringParamName(). std::string PrintToString(const TestParams& p) { - return QuicStrCat( + return quiche::QuicheStrCat( ParsedQuicVersionToString(p.version), "_", (p.ack_response == AckResponse::kDefer ? "defer" : "immediate"), "_", (p.no_stop_waiting ? "No" : ""), "StopWaiting"); @@ -976,9 +990,9 @@ version()), creator_(QuicConnectionPeer::GetPacketCreator(&connection_)), manager_(QuicConnectionPeer::GetSentPacketManager(&connection_)), - frame1_(0, false, 0, QuicStringPiece(data1)), - frame2_(0, false, 3, QuicStringPiece(data2)), - crypto_frame_(ENCRYPTION_INITIAL, 0, QuicStringPiece(data1)), + frame1_(0, false, 0, quiche::QuicheStringPiece(data1)), + frame2_(0, false, 3, quiche::QuicheStringPiece(data2)), + crypto_frame_(ENCRYPTION_INITIAL, 0, quiche::QuicheStringPiece(data1)), packet_number_length_(PACKET_4BYTE_PACKET_NUMBER), connection_id_included_(CONNECTION_ID_PRESENT), notifier_(&connection_), @@ -1307,7 +1321,7 @@ } QuicByteCount SendStreamDataToPeer(QuicStreamId id, - QuicStringPiece data, + quiche::QuicheStringPiece data, QuicStreamOffset offset, StreamSendingState state, QuicPacketNumber* last_packet) { @@ -1717,7 +1731,7 @@ } else { frame = QuicFrame(QuicStreamFrame( QuicUtils::GetCryptoStreamId(connection_.transport_version()), false, - 0u, QuicStringPiece())); + 0u, quiche::QuicheStringPiece())); EXPECT_CALL(visitor_, OnStreamFrame(_)); } ProcessFramePacketWithAddresses(frame, kSelfAddress, kPeerAddress); @@ -1748,7 +1762,7 @@ } else { frame = QuicFrame(QuicStreamFrame( QuicUtils::GetCryptoStreamId(connection_.transport_version()), false, - 0u, QuicStringPiece())); + 0u, quiche::QuicheStringPiece())); EXPECT_CALL(visitor_, OnStreamFrame(_)); } ProcessFramePacketWithAddresses(frame, kSelfAddress, kPeerAddress); @@ -1777,7 +1791,7 @@ } else { frame = QuicFrame(QuicStreamFrame( QuicUtils::GetCryptoStreamId(connection_.transport_version()), false, - 0u, QuicStringPiece())); + 0u, quiche::QuicheStringPiece())); EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(3); } QuicIpAddress host; @@ -1786,8 +1800,8 @@ ProcessFramePacketWithAddresses(frame, self_address1, kPeerAddress); // Cause self_address change to mapped Ipv4 address. QuicIpAddress host2; - host2.FromString( - QuicStrCat("::ffff:", connection_.self_address().host().ToString())); + host2.FromString(quiche::QuicheStrCat( + "::ffff:", connection_.self_address().host().ToString())); QuicSocketAddress self_address2(host2, connection_.self_address().port()); ProcessFramePacketWithAddresses(frame, self_address2, kPeerAddress); EXPECT_TRUE(connection_.connected()); @@ -1814,7 +1828,7 @@ } else { frame = QuicFrame(QuicStreamFrame( QuicUtils::GetCryptoStreamId(connection_.transport_version()), false, - 0u, QuicStringPiece())); + 0u, quiche::QuicheStringPiece())); EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(AnyNumber()); } QuicPacketCreatorPeer::SetPacketNumber(&peer_creator_, 5); @@ -1854,7 +1868,7 @@ } else { frame = QuicFrame(QuicStreamFrame( QuicUtils::GetCryptoStreamId(connection_.transport_version()), false, - 0u, QuicStringPiece())); + 0u, quiche::QuicheStringPiece())); EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(AnyNumber()); } ProcessFramePacketWithAddresses(frame, kSelfAddress, kPeerAddress); @@ -1893,7 +1907,7 @@ } else { frame = QuicFrame(QuicStreamFrame( QuicUtils::GetCryptoStreamId(connection_.transport_version()), false, - 0u, QuicStringPiece())); + 0u, quiche::QuicheStringPiece())); EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(AnyNumber()); } ProcessFramePacketWithAddresses(frame, kSelfAddress, kPeerAddress); @@ -1976,7 +1990,7 @@ } else { frame = QuicFrame(QuicStreamFrame( QuicUtils::GetCryptoStreamId(connection_.transport_version()), false, - 0u, QuicStringPiece())); + 0u, quiche::QuicheStringPiece())); EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(AnyNumber()); } ProcessFramePacketWithAddresses(frame, kSelfAddress, kPeerAddress); @@ -2083,7 +2097,7 @@ } else { frame = QuicFrame(QuicStreamFrame( QuicUtils::GetCryptoStreamId(connection_.transport_version()), false, - 0u, QuicStringPiece())); + 0u, quiche::QuicheStringPiece())); EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(AnyNumber()); } ProcessFramePacketWithAddresses(frame, kSelfAddress, kPeerAddress); @@ -2141,7 +2155,7 @@ } else { frame = QuicFrame(QuicStreamFrame( QuicUtils::GetCryptoStreamId(connection_.transport_version()), false, - 0u, QuicStringPiece())); + 0u, quiche::QuicheStringPiece())); EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(AnyNumber()); } QuicPacketCreatorPeer::SetPacketNumber(&peer_creator_, 5); @@ -2197,7 +2211,7 @@ } else { frame = QuicFrame(QuicStreamFrame( QuicUtils::GetCryptoStreamId(connection_.transport_version()), false, - 0u, QuicStringPiece())); + 0u, quiche::QuicheStringPiece())); EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(AnyNumber()); } ProcessFramePacketWithAddresses(frame, kSelfAddress, kPeerAddress); @@ -2250,7 +2264,7 @@ } else { frame = QuicFrame(QuicStreamFrame( QuicUtils::GetCryptoStreamId(connection_.transport_version()), false, - 0u, QuicStringPiece())); + 0u, quiche::QuicheStringPiece())); EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(AnyNumber()); } ProcessFramePacketWithAddresses(frame, kSelfAddress, kPeerAddress); @@ -2297,7 +2311,7 @@ } else { frame = QuicFrame(QuicStreamFrame( QuicUtils::GetCryptoStreamId(connection_.transport_version()), false, - 0u, QuicStringPiece())); + 0u, quiche::QuicheStringPiece())); EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(AnyNumber()); } ProcessFramePacketWithAddresses(frame, kSelfAddress, kPeerAddress); @@ -2347,7 +2361,7 @@ } else { frame = QuicFrame(QuicStreamFrame( QuicUtils::GetCryptoStreamId(connection_.transport_version()), false, - 0u, QuicStringPiece())); + 0u, quiche::QuicheStringPiece())); EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(AnyNumber()); } ProcessFramePacketWithAddresses(frame, kSelfAddress, kPeerAddress); @@ -3175,7 +3189,8 @@ EXPECT_EQ(0u, writer_->padding_frames().size()); QuicStreamFrame* frame = writer_->stream_frames()[0].get(); EXPECT_EQ(stream_id, frame->stream_id); - EXPECT_EQ("ABCDEF", QuicStringPiece(frame->data_buffer, frame->data_length)); + EXPECT_EQ("ABCDEF", + quiche::QuicheStringPiece(frame->data_buffer, frame->data_length)); } TEST_P(QuicConnectionTest, FramePackingSendvQueued) { @@ -8606,7 +8621,7 @@ return; } std::string message(connection_.GetCurrentLargestMessagePayload() * 2, 'a'); - QuicStringPiece message_data(message); + quiche::QuicheStringPiece message_data(message); QuicMemSliceStorage storage(nullptr, 0, nullptr, 0); { QuicConnection::ScopedPacketFlusher flusher(&connection_); @@ -8619,7 +8634,7 @@ connection_.SendMessage( 1, MakeSpan(connection_.helper()->GetStreamSendBufferAllocator(), - QuicStringPiece( + quiche::QuicheStringPiece( message_data.data(), connection_.GetCurrentLargestMessagePayload()), &storage), @@ -8640,7 +8655,7 @@ connection_.SendMessage( 3, MakeSpan(connection_.helper()->GetStreamSendBufferAllocator(), - QuicStringPiece( + quiche::QuicheStringPiece( message_data.data(), connection_.GetCurrentLargestMessagePayload() + 1), &storage), @@ -8764,7 +8779,7 @@ } else { frame = QuicFrame(QuicStreamFrame( QuicUtils::GetCryptoStreamId(connection_.transport_version()), false, - 0u, QuicStringPiece())); + 0u, quiche::QuicheStringPiece())); EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); } ProcessFramePacketWithAddresses(frame, kSelfAddress, kPeerAddress); @@ -9085,7 +9100,7 @@ } else { frame = QuicFrame(QuicStreamFrame( QuicUtils::GetCryptoStreamId(connection_.transport_version()), false, - 0u, QuicStringPiece())); + 0u, quiche::QuicheStringPiece())); EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(AnyNumber()); } ProcessFramePacketWithAddresses(frame, kSelfAddress, kPeerAddress);
diff --git a/quic/core/quic_control_frame_manager.cc b/quic/core/quic_control_frame_manager.cc index 3eed5e8..de49366 100644 --- a/quic/core/quic_control_frame_manager.cc +++ b/quic/core/quic_control_frame_manager.cc
@@ -11,6 +11,7 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_bug_tracker.h" #include "net/third_party/quiche/src/quic/platform/api/quic_flag_utils.h" #include "net/third_party/quiche/src/quic/platform/api/quic_map_util.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" namespace quic { @@ -41,9 +42,10 @@ if (control_frames_.size() > kMaxNumControlFrames) { session_->connection()->CloseConnection( QUIC_TOO_MANY_BUFFERED_CONTROL_FRAMES, - QuicStrCat("More than ", kMaxNumControlFrames, - "buffered control frames, least_unacked: ", least_unacked_, - ", least_unsent_: ", least_unsent_), + quiche::QuicheStrCat( + "More than ", kMaxNumControlFrames, + "buffered control frames, least_unacked: ", least_unacked_, + ", least_unsent_: ", least_unsent_), ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET); return; } @@ -121,9 +123,10 @@ if (control_frames_.size() > kMaxNumControlFrames) { session_->connection()->CloseConnection( QUIC_TOO_MANY_BUFFERED_CONTROL_FRAMES, - QuicStrCat("More than ", kMaxNumControlFrames, - "buffered control frames, least_unacked: ", least_unacked_, - ", least_unsent_: ", least_unsent_), + quiche::QuicheStrCat( + "More than ", kMaxNumControlFrames, + "buffered control frames, least_unacked: ", least_unacked_, + ", least_unsent_: ", least_unsent_), ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET); return; }
diff --git a/quic/core/quic_control_frame_manager.h b/quic/core/quic_control_frame_manager.h index a4c2678..61dfba1 100644 --- a/quic/core/quic_control_frame_manager.h +++ b/quic/core/quic_control_frame_manager.h
@@ -9,6 +9,7 @@ #include "net/third_party/quiche/src/quic/core/frames/quic_frame.h" #include "net/third_party/quiche/src/quic/platform/api/quic_containers.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" namespace quic {
diff --git a/quic/core/quic_crypto_client_handshaker.cc b/quic/core/quic_crypto_client_handshaker.cc index eaeabfe..eed6993 100644 --- a/quic/core/quic_crypto_client_handshaker.cc +++ b/quic/core/quic_crypto_client_handshaker.cc
@@ -13,7 +13,7 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_client_stats.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_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" namespace quic { @@ -250,8 +250,9 @@ if (num_client_hellos_ >= QuicCryptoClientStream::kMaxClientHellos) { stream_->CloseConnectionWithDetails( QUIC_CRYPTO_TOO_MANY_REJECTS, - QuicStrCat("More than ", QuicCryptoClientStream::kMaxClientHellos, - " rejects")); + quiche::QuicheStrCat("More than ", + QuicCryptoClientStream::kMaxClientHellos, + " rejects")); return; } num_client_hellos_++;
diff --git a/quic/core/quic_crypto_client_handshaker_test.cc b/quic/core/quic_crypto_client_handshaker_test.cc index 43c7efa..30dcbfc 100644 --- a/quic/core/quic_crypto_client_handshaker_test.cc +++ b/quic/core/quic_crypto_client_handshaker_test.cc
@@ -9,6 +9,7 @@ #include "net/third_party/quiche/src/quic/core/proto/crypto_server_config_proto.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/common/platform/api/quiche_string_piece.h" namespace quic { namespace { @@ -35,7 +36,7 @@ const uint16_t /*port*/, const std::string& /*server_config*/, QuicTransportVersion /*transport_version*/, - QuicStringPiece /*chlo_hash*/, + quiche::QuicheStringPiece /*chlo_hash*/, const std::vector<std::string>& /*certs*/, const std::string& /*cert_sct*/, const std::string& /*signature*/, @@ -73,7 +74,7 @@ const std::string& hostname, const std::string& /*server_config*/, QuicTransportVersion /*transport_version*/, - QuicStringPiece /*chlo_hash*/, + quiche::QuicheStringPiece /*chlo_hash*/, std::unique_ptr<Callback> callback) override { QuicReferenceCountedPointer<ProofSource::Chain> chain = GetCertChain(server_address, hostname); @@ -96,7 +97,7 @@ const QuicSocketAddress& /*server_address*/, const std::string& /*hostname*/, uint16_t /*signature_algorit*/, - QuicStringPiece /*in*/, + quiche::QuicheStringPiece /*in*/, std::unique_ptr<SignatureCallback> callback) override { callback->Run(true, "Dummy signature"); }
diff --git a/quic/core/quic_crypto_client_stream.cc b/quic/core/quic_crypto_client_stream.cc index b30cd3a..e940635 100644 --- a/quic/core/quic_crypto_client_stream.cc +++ b/quic/core/quic_crypto_client_stream.cc
@@ -18,7 +18,6 @@ #include "net/third_party/quiche/src/quic/core/tls_client_handshaker.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_str_cat.h" namespace quic {
diff --git a/quic/core/quic_crypto_server_handshaker.cc b/quic/core/quic_crypto_server_handshaker.cc index 755e35e..18e635b 100644 --- a/quic/core/quic_crypto_server_handshaker.cc +++ b/quic/core/quic_crypto_server_handshaker.cc
@@ -9,7 +9,8 @@ #include "third_party/boringssl/src/include/openssl/sha.h" #include "net/third_party/quiche/src/quic/platform/api/quic_arraysize.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_text_utils.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h" namespace quic { @@ -325,8 +326,8 @@ << message.DebugString(); if (!QuicVersionUsesCryptoFrames(transport_version())) { const QuicData& data = message.GetSerialized(); - stream_->WriteOrBufferData(QuicStringPiece(data.data(), data.length()), - false, nullptr); + stream_->WriteOrBufferData( + quiche::QuicheStringPiece(data.data(), data.length()), false, nullptr); } else { SendHandshakeMessage(message); } @@ -384,7 +385,7 @@ SHA256(reinterpret_cast<const uint8_t*>(channel_id.data()), channel_id.size(), digest); - QuicTextUtils::Base64Encode(digest, QUIC_ARRAYSIZE(digest), output); + quiche::QuicheTextUtils::Base64Encode(digest, QUIC_ARRAYSIZE(digest), output); return true; } @@ -430,7 +431,7 @@ if (num_handshake_messages_ == 1) { // Client attempts zero RTT handshake by sending a non-inchoate CHLO. - QuicStringPiece public_value; + quiche::QuicheStringPiece public_value; zero_rtt_attempted_ = message.GetStringPiece(kPUBS, &public_value); }
diff --git a/quic/core/quic_crypto_server_stream.cc b/quic/core/quic_crypto_server_stream.cc index bbc3b09..02088df 100644 --- a/quic/core/quic_crypto_server_stream.cc +++ b/quic/core/quic_crypto_server_stream.cc
@@ -21,7 +21,6 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_flag_utils.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_string_piece.h" namespace quic {
diff --git a/quic/core/quic_crypto_server_stream_test.cc b/quic/core/quic_crypto_server_stream_test.cc index 6de5433..741a8aa 100644 --- a/quic/core/quic_crypto_server_stream_test.cc +++ b/quic/core/quic_crypto_server_stream_test.cc
@@ -32,6 +32,7 @@ #include "net/third_party/quiche/src/quic/test_tools/fake_proof_source.h" #include "net/third_party/quiche/src/quic/test_tools/quic_crypto_server_config_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { class QuicConnection; @@ -92,11 +93,12 @@ EXPECT_CALL(*server_session_->helper(), CanAcceptClientHello(_, _, _, _, _)) .Times(testing::AnyNumber()); EXPECT_CALL(*server_session_, SelectAlpn(_)) - .WillRepeatedly([this](const std::vector<QuicStringPiece>& alpns) { - return std::find( - alpns.cbegin(), alpns.cend(), - AlpnForVersion(server_session_->connection()->version())); - }); + .WillRepeatedly( + [this](const std::vector<quiche::QuicheStringPiece>& alpns) { + return std::find( + alpns.cbegin(), alpns.cend(), + AlpnForVersion(server_session_->connection()->version())); + }); crypto_test_utils::SetupCryptoServerConfigForTest( server_connection_->clock(), server_connection_->random_generator(), &server_crypto_config_);
diff --git a/quic/core/quic_crypto_stream.cc b/quic/core/quic_crypto_stream.cc index 3bc94e8..b10ead7 100644 --- a/quic/core/quic_crypto_stream.cc +++ b/quic/core/quic_crypto_stream.cc
@@ -14,7 +14,7 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_flag_utils.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_string_piece.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { @@ -113,7 +113,8 @@ EncryptionLevel level) { struct iovec iov; while (sequencer->GetReadableRegion(&iov)) { - QuicStringPiece data(static_cast<char*>(iov.iov_base), iov.iov_len); + quiche::QuicheStringPiece data(static_cast<char*>(iov.iov_base), + iov.iov_len); if (!crypto_message_parser()->ProcessInput(data, level)) { CloseConnectionWithDetails(crypto_message_parser()->error(), crypto_message_parser()->error_detail()); @@ -130,8 +131,8 @@ } } -bool QuicCryptoStream::ExportKeyingMaterial(QuicStringPiece label, - QuicStringPiece context, +bool QuicCryptoStream::ExportKeyingMaterial(quiche::QuicheStringPiece label, + quiche::QuicheStringPiece context, size_t result_len, std::string* result) const { if (!handshake_confirmed()) { @@ -145,7 +146,7 @@ } void QuicCryptoStream::WriteCryptoData(EncryptionLevel level, - QuicStringPiece data) { + quiche::QuicheStringPiece data) { if (!QuicVersionUsesCryptoFrames(session()->transport_version())) { // The QUIC crypto handshake takes care of setting the appropriate // encryption level before writing data. Since that is the only handshake
diff --git a/quic/core/quic_crypto_stream.h b/quic/core/quic_crypto_stream.h index 10b0b53..ccaa6a7 100644 --- a/quic/core/quic_crypto_stream.h +++ b/quic/core/quic_crypto_stream.h
@@ -15,7 +15,7 @@ #include "net/third_party/quiche/src/quic/core/quic_packets.h" #include "net/third_party/quiche/src/quic/core/quic_stream.h" #include "net/third_party/quiche/src/quic/platform/api/quic_export.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { @@ -60,13 +60,14 @@ // dependent on |label|, |context|, and the stream's negotiated subkey secret. // Returns false if the handshake has not been confirmed or the parameters are // invalid (e.g. |label| contains null bytes); returns true on success. - bool ExportKeyingMaterial(QuicStringPiece label, - QuicStringPiece context, + bool ExportKeyingMaterial(quiche::QuicheStringPiece label, + quiche::QuicheStringPiece context, size_t result_len, std::string* result) const; // Writes |data| to the QuicStream at level |level|. - virtual void WriteCryptoData(EncryptionLevel level, QuicStringPiece data); + virtual void WriteCryptoData(EncryptionLevel level, + quiche::QuicheStringPiece data); // Returns true once an encrypter has been set for the connection. virtual bool encryption_established() const = 0;
diff --git a/quic/core/quic_data_reader.cc b/quic/core/quic_data_reader.cc index 17fb6cd..306a8a9 100644 --- a/quic/core/quic_data_reader.cc +++ b/quic/core/quic_data_reader.cc
@@ -8,12 +8,13 @@ #include "net/third_party/quiche/src/quic/core/quic_utils.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_str_cat.h" #include "net/third_party/quiche/src/common/platform/api/quiche_endian.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { -QuicDataReader::QuicDataReader(QuicStringPiece data) +QuicDataReader::QuicDataReader(quiche::QuicheStringPiece data) : QuicDataReader(data.data(), data.length(), quiche::NETWORK_BYTE_ORDER) {} QuicDataReader::QuicDataReader(const char* data, const size_t len) @@ -108,7 +109,7 @@ return true; } -bool QuicDataReader::ReadStringPiece16(QuicStringPiece* result) { +bool QuicDataReader::ReadStringPiece16(quiche::QuicheStringPiece* result) { // Read resultant length. uint16_t result_len; if (!ReadUInt16(&result_len)) { @@ -119,7 +120,8 @@ return ReadStringPiece(result, result_len); } -bool QuicDataReader::ReadStringPiece(QuicStringPiece* result, size_t size) { +bool QuicDataReader::ReadStringPiece(quiche::QuicheStringPiece* result, + size_t size) { // Make sure that we have enough data to read. if (!CanRead(size)) { OnFailure(); @@ -127,7 +129,7 @@ } // Set result. - *result = QuicStringPiece(data_ + pos_, size); + *result = quiche::QuicheStringPiece(data_ + pos_, size); // Iterate. pos_ += size; @@ -174,18 +176,18 @@ return ReadBytes(tag, sizeof(*tag)); } -QuicStringPiece QuicDataReader::ReadRemainingPayload() { - QuicStringPiece payload = PeekRemainingPayload(); +quiche::QuicheStringPiece QuicDataReader::ReadRemainingPayload() { + quiche::QuicheStringPiece payload = PeekRemainingPayload(); pos_ = len_; return payload; } -QuicStringPiece QuicDataReader::PeekRemainingPayload() const { - return QuicStringPiece(data_ + pos_, len_ - pos_); +quiche::QuicheStringPiece QuicDataReader::PeekRemainingPayload() const { + return quiche::QuicheStringPiece(data_ + pos_, len_ - pos_); } -QuicStringPiece QuicDataReader::FullPayload() const { - return QuicStringPiece(data_, len_); +quiche::QuicheStringPiece QuicDataReader::FullPayload() const { + return quiche::QuicheStringPiece(data_, len_); } bool QuicDataReader::ReadBytes(void* result, size_t size) { @@ -343,7 +345,7 @@ } std::string QuicDataReader::DebugString() const { - return QuicStrCat(" { length: ", len_, ", position: ", pos_, " }"); + return quiche::QuicheStrCat(" { length: ", len_, ", position: ", pos_, " }"); } #undef ENDPOINT // undef for jumbo builds
diff --git a/quic/core/quic_data_reader.h b/quic/core/quic_data_reader.h index acd30fd..40ad4fc 100644 --- a/quic/core/quic_data_reader.h +++ b/quic/core/quic_data_reader.h
@@ -10,8 +10,8 @@ #include "net/third_party/quiche/src/quic/core/quic_types.h" #include "net/third_party/quiche/src/quic/platform/api/quic_export.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" #include "net/third_party/quiche/src/common/platform/api/quiche_endian.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { @@ -33,7 +33,7 @@ public: // Constructs a reader using NETWORK_BYTE_ORDER endianness. // Caller must provide an underlying buffer to work on. - explicit QuicDataReader(QuicStringPiece data); + explicit QuicDataReader(quiche::QuicheStringPiece data); // Constructs a reader using NETWORK_BYTE_ORDER endianness. // Caller must provide an underlying buffer to work on. QuicDataReader(const char* data, const size_t len); @@ -72,13 +72,13 @@ // // Forwards the internal iterator on success. // Returns true on success, false otherwise. - bool ReadStringPiece16(QuicStringPiece* result); + bool ReadStringPiece16(quiche::QuicheStringPiece* result); // Reads a given number of bytes into the given buffer. The buffer // must be of adequate size. // Forwards the internal iterator on success. // Returns true on success, false otherwise. - bool ReadStringPiece(QuicStringPiece* result, size_t len); + bool ReadStringPiece(quiche::QuicheStringPiece* result, size_t len); // Reads connection ID into the given output parameter. // Forwards the internal iterator on success. @@ -96,29 +96,29 @@ // endian. bool ReadTag(uint32_t* tag); - // Returns the remaining payload as a QuicStringPiece. + // Returns the remaining payload as a quiche::QuicheStringPiece. // // NOTE: Does not copy but rather references strings in the underlying buffer. // This should be kept in mind when handling memory management! // // Forwards the internal iterator. - QuicStringPiece ReadRemainingPayload(); + quiche::QuicheStringPiece ReadRemainingPayload(); - // Returns the remaining payload as a QuicStringPiece. + // Returns the remaining payload as a quiche::QuicheStringPiece. // // NOTE: Does not copy but rather references strings in the underlying buffer. // This should be kept in mind when handling memory management! // // DOES NOT forward the internal iterator. - QuicStringPiece PeekRemainingPayload() const; + quiche::QuicheStringPiece PeekRemainingPayload() const; - // Returns the entire payload as a QuicStringPiece. + // Returns the entire payload as a quiche::QuicheStringPiece. // // NOTE: Does not copy but rather references strings in the underlying buffer. // This should be kept in mind when handling memory management! // // DOES NOT forward the internal iterator. - QuicStringPiece FullPayload() const; + quiche::QuicheStringPiece FullPayload() const; // Reads a given number of bytes into the given buffer. The buffer // must be of adequate size.
diff --git a/quic/core/quic_data_writer.cc b/quic/core/quic_data_writer.cc index d2d7113..28af68b 100644 --- a/quic/core/quic_data_writer.cc +++ b/quic/core/quic_data_writer.cc
@@ -11,8 +11,9 @@ #include "net/third_party/quiche/src/quic/core/quic_constants.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_str_cat.h" #include "net/third_party/quiche/src/common/platform/api/quiche_endian.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { @@ -110,7 +111,7 @@ return WriteBytes(&result, sizeof(result)); } -bool QuicDataWriter::WriteStringPiece16(QuicStringPiece val) { +bool QuicDataWriter::WriteStringPiece16(quiche::QuicheStringPiece val) { if (val.size() > std::numeric_limits<uint16_t>::max()) { return false; } @@ -120,7 +121,7 @@ return WriteBytes(val.data(), val.size()); } -bool QuicDataWriter::WriteStringPiece(QuicStringPiece val) { +bool QuicDataWriter::WriteStringPiece(quiche::QuicheStringPiece val) { return WriteBytes(val.data(), val.size()); } @@ -353,7 +354,7 @@ } bool QuicDataWriter::WriteStringPieceVarInt62( - const QuicStringPiece& string_piece) { + const quiche::QuicheStringPiece& string_piece) { if (!WriteVarInt62(string_piece.size())) { return false; } @@ -366,7 +367,8 @@ } std::string QuicDataWriter::DebugString() const { - return QuicStrCat(" { capacity: ", capacity_, ", length: ", length_, " }"); + return quiche::QuicheStrCat(" { capacity: ", capacity_, ", length: ", length_, + " }"); } } // namespace quic
diff --git a/quic/core/quic_data_writer.h b/quic/core/quic_data_writer.h index 8f1b21d..7d90f39 100644 --- a/quic/core/quic_data_writer.h +++ b/quic/core/quic_data_writer.h
@@ -10,8 +10,8 @@ #include "net/third_party/quiche/src/quic/core/quic_types.h" #include "net/third_party/quiche/src/quic/platform/api/quic_export.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" #include "net/third_party/quiche/src/common/platform/api/quiche_endian.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { @@ -80,7 +80,7 @@ // Writes a string piece as a consecutive length/content pair. The // length is VarInt62 encoded. - bool WriteStringPieceVarInt62(const QuicStringPiece& string_piece); + bool WriteStringPieceVarInt62(const quiche::QuicheStringPiece& string_piece); // Utility function to return the number of bytes needed to encode // the given value using IETF VarInt62 encoding. Returns the number @@ -96,8 +96,8 @@ // clamped to the maximum representable (kUFloat16MaxValue). Values that can // not be represented directly are rounded down. bool WriteUFloat16(uint64_t value); - bool WriteStringPiece(QuicStringPiece val); - bool WriteStringPiece16(QuicStringPiece val); + bool WriteStringPiece(quiche::QuicheStringPiece val); + bool WriteStringPiece16(quiche::QuicheStringPiece val); bool WriteBytes(const void* data, size_t data_len); bool WriteRepeatedByte(uint8_t byte, size_t count); // Fills the remaining buffer with null characters.
diff --git a/quic/core/quic_data_writer_test.cc b/quic/core/quic_data_writer_test.cc index 104df8d..653fbff 100644 --- a/quic/core/quic_data_writer_test.cc +++ b/quic/core/quic_data_writer_test.cc
@@ -16,6 +16,8 @@ #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/common/platform/api/quiche_endian.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { namespace test { @@ -33,7 +35,7 @@ // Used by ::testing::PrintToStringParamName(). std::string PrintToString(const TestParams& p) { - return QuicStrCat( + return quiche::QuicheStrCat( (p.endianness == quiche::NETWORK_BYTE_ORDER ? "Network" : "Host"), "ByteOrder"); } @@ -1172,8 +1174,9 @@ bool ok; EXPECT_QUIC_BUG( ok = reader.ReadConnectionId(&connection_id, bad_connection_id_length), - QuicStrCat("Attempted to read connection ID with length too high ", - static_cast<int>(bad_connection_id_length))); + quiche::QuicheStrCat( + "Attempted to read connection ID with length too high ", + static_cast<int>(bad_connection_id_length))); EXPECT_FALSE(ok); } @@ -1255,22 +1258,24 @@ test::CompareCharArraysWithHexError( "first read", first_read_buffer, sizeof(first_read_buffer), expected_first_read, sizeof(expected_first_read)); - QuicStringPiece peeked_remaining_payload = reader.PeekRemainingPayload(); + quiche::QuicheStringPiece peeked_remaining_payload = + reader.PeekRemainingPayload(); test::CompareCharArraysWithHexError( "peeked_remaining_payload", peeked_remaining_payload.data(), peeked_remaining_payload.length(), expected_remaining, sizeof(expected_remaining)); - QuicStringPiece full_payload = reader.FullPayload(); + quiche::QuicheStringPiece full_payload = reader.FullPayload(); test::CompareCharArraysWithHexError("full_payload", full_payload.data(), full_payload.length(), buffer, sizeof(buffer)); - QuicStringPiece read_remaining_payload = reader.ReadRemainingPayload(); + quiche::QuicheStringPiece read_remaining_payload = + reader.ReadRemainingPayload(); test::CompareCharArraysWithHexError( "read_remaining_payload", read_remaining_payload.data(), read_remaining_payload.length(), expected_remaining, sizeof(expected_remaining)); EXPECT_TRUE(reader.IsDoneReading()); - QuicStringPiece full_payload2 = reader.FullPayload(); + quiche::QuicheStringPiece full_payload2 = reader.FullPayload(); test::CompareCharArraysWithHexError("full_payload2", full_payload2.data(), full_payload2.length(), buffer, sizeof(buffer));
diff --git a/quic/core/quic_dispatcher.cc b/quic/core/quic_dispatcher.cc index 4c9dab8..9c71d41 100644 --- a/quic/core/quic_dispatcher.cc +++ b/quic/core/quic_dispatcher.cc
@@ -21,8 +21,8 @@ #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_stack_trace.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_text_utils.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h" namespace quic { @@ -199,7 +199,7 @@ void OnChlo(QuicTransportVersion /*version*/, QuicConnectionId /*server_connection_id*/, const CryptoHandshakeMessage& chlo) override { - QuicStringPiece alpn_value; + quiche::QuicheStringPiece alpn_value; if (chlo.GetStringPiece(kALPN, &alpn_value)) { alpn_ = std::string(alpn_value); } @@ -261,12 +261,12 @@ const QuicReceivedPacket& packet) { QUIC_DVLOG(2) << "Dispatcher received encrypted " << packet.length() << " bytes:" << std::endl - << QuicTextUtils::HexDump( - QuicStringPiece(packet.data(), packet.length())); + << quiche::QuicheTextUtils::HexDump(quiche::QuicheStringPiece( + packet.data(), packet.length())); ReceivedPacketInfo packet_info(self_address, peer_address, packet); std::string detailed_error; bool retry_token_present; - QuicStringPiece retry_token; + quiche::QuicheStringPiece retry_token; const QuicErrorCode error = QuicFramer::ParsePublicHeaderDispatcher( packet, expected_server_connection_id_length_, &packet_info.form, &packet_info.long_packet_type, &packet_info.version_flag,
diff --git a/quic/core/quic_dispatcher.h b/quic/core/quic_dispatcher.h index 1d694e5..3c57ec5 100644 --- a/quic/core/quic_dispatcher.h +++ b/quic/core/quic_dispatcher.h
@@ -25,6 +25,7 @@ #include "net/third_party/quiche/src/quic/core/quic_version_manager.h" #include "net/third_party/quiche/src/quic/platform/api/quic_containers.h" #include "net/third_party/quiche/src/quic/platform/api/quic_socket_address.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { namespace test { @@ -141,7 +142,7 @@ virtual std::unique_ptr<QuicSession> CreateQuicSession( QuicConnectionId server_connection_id, const QuicSocketAddress& peer_address, - QuicStringPiece alpn, + quiche::QuicheStringPiece alpn, const ParsedQuicVersion& version) = 0; // Tries to validate and dispatch packet based on available information.
diff --git a/quic/core/quic_dispatcher_test.cc b/quic/core/quic_dispatcher_test.cc index 7ec844a..f70add6 100644 --- a/quic/core/quic_dispatcher_test.cc +++ b/quic/core/quic_dispatcher_test.cc
@@ -24,7 +24,6 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_expect_bug.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_str_cat.h" #include "net/third_party/quiche/src/quic/platform/api/quic_test.h" #include "net/third_party/quiche/src/quic/test_tools/crypto_test_utils.h" #include "net/third_party/quiche/src/quic/test_tools/fake_proof_source.h" @@ -35,6 +34,7 @@ #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h" #include "net/third_party/quiche/src/quic/test_tools/quic_time_wait_list_manager_peer.h" #include "net/third_party/quiche/src/quic/tools/quic_simple_crypto_server_stream_helper.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" using testing::_; using testing::ByMove; @@ -129,7 +129,7 @@ CreateQuicSession, std::unique_ptr<QuicSession>(QuicConnectionId connection_id, const QuicSocketAddress& peer_address, - QuicStringPiece alpn, + quiche::QuicheStringPiece alpn, const quic::ParsedQuicVersion& version)); MOCK_METHOD1(ShouldCreateOrBufferPacketForConnection, @@ -373,8 +373,9 @@ void VerifyVersionSupported(ParsedQuicVersion version) { QuicConnectionId connection_id = TestConnectionId(++connection_id_); QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); - EXPECT_CALL(*dispatcher_, CreateQuicSession(connection_id, client_address, - QuicStringPiece("hq"), _)) + EXPECT_CALL(*dispatcher_, + CreateQuicSession(connection_id, client_address, + quiche::QuicheStringPiece("hq"), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, connection_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -395,8 +396,9 @@ void VerifyVersionNotSupported(ParsedQuicVersion version) { QuicConnectionId connection_id = TestConnectionId(++connection_id_); QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); - EXPECT_CALL(*dispatcher_, CreateQuicSession(connection_id, client_address, - QuicStringPiece("hq"), _)) + EXPECT_CALL(*dispatcher_, + CreateQuicSession(connection_id, client_address, + quiche::QuicheStringPiece("hq"), _)) .Times(0); ProcessPacket(client_address, connection_id, true, version, SerializeCHLO(), true, CONNECTION_ID_PRESENT, PACKET_4BYTE_PACKET_NUMBER, 1); @@ -426,7 +428,7 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(1), client_address, - QuicStringPiece(""), _)) + quiche::QuicheStringPiece(""), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -449,7 +451,7 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(1), client_address, - QuicStringPiece("hq"), _)) + quiche::QuicheStringPiece("hq"), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -466,7 +468,7 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(2), client_address, - QuicStringPiece("hq"), _)) + quiche::QuicheStringPiece("hq"), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(2), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -496,7 +498,7 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(1), client_address, - QuicStringPiece("hq"), _)) + quiche::QuicheStringPiece("hq"), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -609,8 +611,9 @@ TEST_F(QuicDispatcherTest, Shutdown) { QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); - EXPECT_CALL(*dispatcher_, - CreateQuicSession(_, client_address, QuicStringPiece("hq"), _)) + EXPECT_CALL( + *dispatcher_, + CreateQuicSession(_, client_address, quiche::QuicheStringPiece("hq"), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -638,8 +641,9 @@ // Create a new session. QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); QuicConnectionId connection_id = TestConnectionId(1); - EXPECT_CALL(*dispatcher_, CreateQuicSession(connection_id, client_address, - QuicStringPiece("hq"), _)) + EXPECT_CALL(*dispatcher_, + CreateQuicSession(connection_id, client_address, + quiche::QuicheStringPiece("hq"), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, connection_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -680,7 +684,8 @@ QuicConnectionId connection_id = TestConnectionId(1); // Dispatcher forwards all packets for this connection_id to the time wait // list manager. - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, QuicStringPiece("hq"), _)) + EXPECT_CALL(*dispatcher_, + CreateQuicSession(_, _, quiche::QuicheStringPiece("hq"), _)) .Times(0); EXPECT_CALL(*time_wait_list_manager_, ProcessPacket(_, _, connection_id, _, _)) @@ -732,7 +737,7 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(fixed_connection_id, client_address, - QuicStringPiece("hq"), _)) + quiche::QuicheStringPiece("hq"), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, fixed_connection_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -770,7 +775,7 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(fixed_connection_id, client_address, - QuicStringPiece("hq"), _)) + quiche::QuicheStringPiece("hq"), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, fixed_connection_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -802,7 +807,7 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(1), client_address, - QuicStringPiece("hq"), _)) + quiche::QuicheStringPiece("hq"), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -819,7 +824,7 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(fixed_connection_id, client_address, - QuicStringPiece("hq"), _)) + quiche::QuicheStringPiece("hq"), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, fixed_connection_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -852,7 +857,7 @@ // dispatcher_ should drop this packet. EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(1), client_address, - QuicStringPiece("hq"), _)) + quiche::QuicheStringPiece("hq"), _)) .Times(0); EXPECT_CALL(*time_wait_list_manager_, ProcessPacket(_, _, _, _, _)).Times(0); EXPECT_CALL(*time_wait_list_manager_, @@ -868,8 +873,9 @@ QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); // dispatcher_ should drop this packet. - EXPECT_CALL(*dispatcher_, - CreateQuicSession(_, client_address, QuicStringPiece("hq"), _)) + EXPECT_CALL( + *dispatcher_, + CreateQuicSession(_, client_address, quiche::QuicheStringPiece("hq"), _)) .Times(0); EXPECT_CALL(*time_wait_list_manager_, ProcessPacket(_, _, _, _, _)).Times(0); EXPECT_CALL(*time_wait_list_manager_, @@ -884,7 +890,7 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(1), client_address, - QuicStringPiece("hq"), _)) + quiche::QuicheStringPiece("hq"), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -1310,7 +1316,8 @@ QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); QuicConnectionId connection_id = TestConnectionId(1); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, QuicStringPiece("hq"), _)) + EXPECT_CALL(*dispatcher_, + CreateQuicSession(_, _, quiche::QuicheStringPiece("hq"), _)) .Times(0); if (VersionHasIetfInvariantHeader( CurrentSupportedVersions()[0].transport_version)) { @@ -1365,7 +1372,8 @@ QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); EXPECT_CALL(*dispatcher_, - CreateQuicSession(_, client_address, QuicStringPiece("hq"), _)) + CreateQuicSession(_, client_address, + quiche::QuicheStringPiece("hq"), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &helper_, &alarm_factory_, &crypto_config_, @@ -1381,7 +1389,8 @@ ProcessPacket(client_address, TestConnectionId(1), true, SerializeCHLO()); EXPECT_CALL(*dispatcher_, - CreateQuicSession(_, client_address, QuicStringPiece("hq"), _)) + CreateQuicSession(_, client_address, + quiche::QuicheStringPiece("hq"), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(2), client_address, &helper_, &alarm_factory_, &crypto_config_, @@ -1676,8 +1685,9 @@ ReceivedPacketInfoConnectionIdEquals(conn_id))); for (size_t i = 1; i <= kDefaultMaxUndecryptablePackets + 1; ++i) { ProcessPacket(client_address, conn_id, true, - QuicStrCat("data packet ", i + 1), CONNECTION_ID_PRESENT, - PACKET_4BYTE_PACKET_NUMBER, /*packet_number=*/i + 1); + quiche::QuicheStrCat("data packet ", i + 1), + CONNECTION_ID_PRESENT, PACKET_4BYTE_PACKET_NUMBER, + /*packet_number=*/i + 1); } EXPECT_EQ(0u, dispatcher_->session_map().size()) << "No session should be created before CHLO arrives."; @@ -1686,8 +1696,8 @@ data_connection_map_[conn_id].pop_back(); // When CHLO arrives, a new session should be created, and all packets // buffered should be delivered to the session. - EXPECT_CALL(*dispatcher_, - CreateQuicSession(conn_id, client_address, QuicStringPiece(), _)) + EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, client_address, + quiche::QuicheStringPiece(), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, conn_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -1717,7 +1727,7 @@ ShouldCreateOrBufferPacketForConnection( ReceivedPacketInfoConnectionIdEquals(conn_id))); ProcessPacket(client_address, conn_id, true, - QuicStrCat("data packet on connection ", i), + quiche::QuicheStrCat("data packet on connection ", i), CONNECTION_ID_PRESENT, PACKET_4BYTE_PACKET_NUMBER, /*packet_number=*/2); } @@ -1740,7 +1750,7 @@ ReceivedPacketInfoConnectionIdEquals(conn_id))); } EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, client_address, - QuicStringPiece(), _)) + quiche::QuicheStringPiece(), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, conn_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -1766,8 +1776,8 @@ QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); EXPECT_CALL(*dispatcher_, ShouldCreateOrBufferPacketForConnection( ReceivedPacketInfoConnectionIdEquals(conn_id))); - EXPECT_CALL(*dispatcher_, - CreateQuicSession(conn_id, client_address, QuicStringPiece(), _)) + EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, client_address, + quiche::QuicheStringPiece(), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, conn_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -1783,14 +1793,15 @@ InSequence s; QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); QuicConnectionId conn_id = TestConnectionId(1); - ProcessPacket(client_address, conn_id, true, QuicStrCat("data packet ", 2), - CONNECTION_ID_PRESENT, PACKET_4BYTE_PACKET_NUMBER, + ProcessPacket(client_address, conn_id, true, + quiche::QuicheStrCat("data packet ", 2), CONNECTION_ID_PRESENT, + PACKET_4BYTE_PACKET_NUMBER, /*packet_number=*/2); // When CHLO arrives, a new session should be created, and all packets // buffered should be delivered to the session. - EXPECT_CALL(*dispatcher_, - CreateQuicSession(conn_id, client_address, QuicStringPiece(), _)) + EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, client_address, + quiche::QuicheStringPiece(), _)) .Times(1) // Only triggered by 1st CHLO. .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, conn_id, client_address, &mock_helper_, @@ -1818,8 +1829,9 @@ QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); QuicConnectionId conn_id = TestConnectionId(1); - ProcessPacket(client_address, conn_id, true, QuicStrCat("data packet ", 2), - CONNECTION_ID_PRESENT, PACKET_4BYTE_PACKET_NUMBER, + ProcessPacket(client_address, conn_id, true, + quiche::QuicheStrCat("data packet ", 2), CONNECTION_ID_PRESENT, + PACKET_4BYTE_PACKET_NUMBER, /*packet_number=*/2); mock_helper_.AdvanceTime( @@ -1853,7 +1865,7 @@ if (conn_id <= kMaxNumSessionsToCreate) { EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(conn_id), client_addr_, - QuicStringPiece(), _)) + quiche::QuicheStringPiece(), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, @@ -1887,7 +1899,7 @@ ++conn_id) { EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(conn_id), client_addr_, - QuicStringPiece(), _)) + quiche::QuicheStringPiece(), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -1901,7 +1913,7 @@ } EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(kNumCHLOs), client_addr_, - QuicStringPiece(), _)) + quiche::QuicheStringPiece(), _)) .Times(0); while (store->HasChlosBuffered()) { @@ -1921,7 +1933,7 @@ if (conn_id <= kMaxNumSessionsToCreate) { EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(conn_id), client_addr_, - QuicStringPiece(), _)) + quiche::QuicheStringPiece(), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, @@ -1947,7 +1959,7 @@ // Reset counter and process buffered CHLO. EXPECT_CALL(*dispatcher_, CreateQuicSession(last_connection, client_addr_, - QuicStringPiece(), _)) + quiche::QuicheStringPiece(), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, last_connection, client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -1971,7 +1983,7 @@ if (conn_id <= kMaxNumSessionsToCreate) { EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(conn_id), client_addr_, - QuicStringPiece(), _)) + quiche::QuicheStringPiece(), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, @@ -1998,7 +2010,7 @@ // Reset counter and process buffered CHLO. EXPECT_CALL(*dispatcher_, CreateQuicSession(last_connection_id, client_addr_, - QuicStringPiece(), _)) + quiche::QuicheStringPiece(), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, last_connection_id, client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -2034,7 +2046,7 @@ if (conn_id <= kMaxNumSessionsToCreate + 1) { EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(conn_id), client_addr_, - QuicStringPiece(), _)) + quiche::QuicheStringPiece(), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, @@ -2076,7 +2088,7 @@ if (conn_id <= kMaxNumSessionsToCreate) { EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(conn_id), client_addr_, - QuicStringPiece(), version)) + quiche::QuicheStringPiece(), version)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, @@ -2102,7 +2114,7 @@ supported_versions[(conn_id - 1) % supported_versions.size()]; EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(conn_id), client_addr_, - QuicStringPiece(), version)) + quiche::QuicheStringPiece(), version)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_,
diff --git a/quic/core/quic_flow_controller.cc b/quic/core/quic_flow_controller.cc index 40f18a3..7175a47 100644 --- a/quic/core/quic_flow_controller.cc +++ b/quic/core/quic_flow_controller.cc
@@ -14,7 +14,7 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_flag_utils.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_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" namespace quic { @@ -25,7 +25,7 @@ if (is_connection_flow_controller_) { return "connection"; } - return QuicStrCat("stream ", id_); + return quiche::QuicheStrCat("stream ", id_); } QuicFlowController::QuicFlowController( @@ -99,8 +99,8 @@ // This is an error on our side, close the connection as soon as possible. connection_->CloseConnection( QUIC_FLOW_CONTROL_SENT_TOO_MUCH_DATA, - QuicStrCat(send_window_offset_ - (bytes_sent_ + bytes_sent), - "bytes over send window offset"), + quiche::QuicheStrCat(send_window_offset_ - (bytes_sent_ + bytes_sent), + "bytes over send window offset"), ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET); return; }
diff --git a/quic/core/quic_flow_controller_test.cc b/quic/core/quic_flow_controller_test.cc index e9854e9..8f4cdf7 100644 --- a/quic/core/quic_flow_controller_test.cc +++ b/quic/core/quic_flow_controller_test.cc
@@ -8,12 +8,12 @@ #include <utility> #include "net/third_party/quiche/src/quic/platform/api/quic_expect_bug.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.h" #include "net/third_party/quiche/src/quic/test_tools/quic_connection_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_flow_controller_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_sent_packet_manager_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" using testing::_; using testing::Invoke; @@ -91,9 +91,9 @@ // Try to send more bytes, violating flow control. EXPECT_CALL(*connection_, CloseConnection(QUIC_FLOW_CONTROL_SENT_TOO_MUCH_DATA, _, _)); - EXPECT_QUIC_BUG( - flow_controller_->AddBytesSent(send_window_ * 10), - QuicStrCat("Trying to send an extra ", send_window_ * 10, " bytes")); + EXPECT_QUIC_BUG(flow_controller_->AddBytesSent(send_window_ * 10), + quiche::QuicheStrCat("Trying to send an extra ", + send_window_ * 10, " bytes")); EXPECT_TRUE(flow_controller_->IsBlocked()); EXPECT_EQ(0u, flow_controller_->SendWindowSize()); }
diff --git a/quic/core/quic_framer.cc b/quic/core/quic_framer.cc index 3235009..678796c 100644 --- a/quic/core/quic_framer.cc +++ b/quic/core/quic_framer.cc
@@ -41,8 +41,9 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h" #include "net/third_party/quiche/src/quic/platform/api/quic_map_util.h" #include "net/third_party/quiche/src/quic/platform/api/quic_stack_trace.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_str_cat.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_text_utils.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h" namespace quic { @@ -292,14 +293,14 @@ return NUM_ENCRYPTION_LEVELS; } -QuicStringPiece TruncateErrorString(QuicStringPiece error) { +quiche::QuicheStringPiece TruncateErrorString(quiche::QuicheStringPiece error) { if (error.length() <= kMaxErrorStringLength) { return error; } - return QuicStringPiece(error.data(), kMaxErrorStringLength); + return quiche::QuicheStringPiece(error.data(), kMaxErrorStringLength); } -size_t TruncatedErrorStringSize(const QuicStringPiece& error) { +size_t TruncatedErrorStringSize(const quiche::QuicheStringPiece& error) { if (error.length() < kMaxErrorStringLength) { return error.length(); } @@ -384,8 +385,9 @@ // the error value in the string. return initial_error_string; } - return QuicStrCat(std::to_string(static_cast<unsigned>(quic_error_code)), ":", - initial_error_string); + return quiche::QuicheStrCat( + std::to_string(static_cast<unsigned>(quic_error_code)), ":", + initial_error_string); } } // namespace @@ -1516,7 +1518,7 @@ return false; } - QuicStringPiece retry_token = reader->ReadRemainingPayload(); + quiche::QuicheStringPiece retry_token = reader->ReadRemainingPayload(); visitor_->OnRetryPacket(original_destination_connection_id, header.source_connection_id, retry_token); return true; @@ -1534,7 +1536,8 @@ return; } - QuicStringPiece remaining_data = encrypted_reader.PeekRemainingPayload(); + quiche::QuicheStringPiece remaining_data = + encrypted_reader.PeekRemainingPayload(); DCHECK_EQ(remaining_data.length(), remaining_bytes_length); const char* coalesced_data = @@ -1548,8 +1551,8 @@ QUIC_PEER_BUG << ENDPOINT << "Failed to parse received coalesced header of length " << coalesced_data_length << ": " - << QuicTextUtils::HexEncode(coalesced_data, - coalesced_data_length) + << quiche::QuicheTextUtils::HexEncode(coalesced_data, + coalesced_data_length) << " previous header was " << header; return; } @@ -1612,7 +1615,8 @@ perspective_ == Perspective::IS_CLIENT) { // Peek possible stateless reset token. Will only be used on decryption // failure. - QuicStringPiece remaining = encrypted_reader->PeekRemainingPayload(); + quiche::QuicheStringPiece remaining = + encrypted_reader->PeekRemainingPayload(); if (remaining.length() >= sizeof(header->possible_stateless_reset_token)) { header->has_possible_stateless_reset_token = true; memcpy(&header->possible_stateless_reset_token, @@ -1626,7 +1630,7 @@ return false; } - QuicStringPiece associated_data; + quiche::QuicheStringPiece associated_data; std::vector<char> ad_storage; if (header->form == IETF_QUIC_SHORT_HEADER_PACKET || header->long_packet_type != VERSION_NEGOTIATION) { @@ -1652,7 +1656,8 @@ &full_packet_number, &ad_storage)) { hp_removal_failed = true; } - associated_data = QuicStringPiece(ad_storage.data(), ad_storage.size()); + associated_data = + quiche::QuicheStringPiece(ad_storage.data(), ad_storage.size()); } else if (!ProcessAndCalculatePacketNumber( encrypted_reader, header->packet_number_length, base_packet_number, &full_packet_number)) { @@ -1712,7 +1717,8 @@ return false; } - QuicStringPiece encrypted = encrypted_reader->ReadRemainingPayload(); + quiche::QuicheStringPiece encrypted = + encrypted_reader->ReadRemainingPayload(); if (!version_.HasHeaderProtection()) { associated_data = GetAssociatedDataFromEncryptedPacket( version_.transport_version, packet, @@ -1808,14 +1814,16 @@ return false; } - QuicStringPiece encrypted = encrypted_reader->ReadRemainingPayload(); - QuicStringPiece associated_data = GetAssociatedDataFromEncryptedPacket( - version_.transport_version, packet, - GetIncludedDestinationConnectionIdLength(*header), - GetIncludedSourceConnectionIdLength(*header), header->version_flag, - header->nonce != nullptr, header->packet_number_length, - header->retry_token_length_length, header->retry_token.length(), - header->length_length); + quiche::QuicheStringPiece encrypted = + encrypted_reader->ReadRemainingPayload(); + quiche::QuicheStringPiece associated_data = + GetAssociatedDataFromEncryptedPacket( + version_.transport_version, packet, + GetIncludedDestinationConnectionIdLength(*header), + GetIncludedSourceConnectionIdLength(*header), header->version_flag, + header->nonce != nullptr, header->packet_number_length, + header->retry_token_length_length, header->retry_token.length(), + header->length_length); size_t decrypted_length = 0; EncryptionLevel decrypted_level; @@ -1893,7 +1901,7 @@ } // TODO(satyamshekhar): validate nonce to protect against DoS. - QuicStringPiece address; + quiche::QuicheStringPiece address; if (reset->GetStringPiece(kCADR, &address)) { QuicSocketAddressCoder address_coder; if (address_coder.Decode(address.data(), address.length())) { @@ -1902,7 +1910,7 @@ } } - QuicStringPiece endpoint_id; + quiche::QuicheStringPiece endpoint_id; if (perspective_ == Perspective::IS_CLIENT && reset->GetStringPiece(kEPID, &endpoint_id)) { packet.endpoint_id = std::string(endpoint_id); @@ -3324,8 +3332,8 @@ return false; } - // TODO(ianswett): Don't use QuicStringPiece as an intermediary. - QuicStringPiece data; + // TODO(ianswett): Don't use quiche::QuicheStringPiece as an intermediary. + quiche::QuicheStringPiece data; if (has_data_length) { if (!reader->ReadStringPiece16(&data)) { set_detailed_error("Unable to read frame data."); @@ -3387,8 +3395,8 @@ frame->fin = false; } - // TODO(ianswett): Don't use QuicStringPiece as an intermediary. - QuicStringPiece data; + // TODO(ianswett): Don't use quiche::QuicheStringPiece as an intermediary. + quiche::QuicheStringPiece data; if (!reader->ReadStringPiece(&data, frame->data_length)) { set_detailed_error("Unable to read frame data."); return false; @@ -3413,8 +3421,8 @@ } frame->data_length = len; - // TODO(ianswett): Don't use QuicStringPiece as an intermediary. - QuicStringPiece data; + // TODO(ianswett): Don't use quiche::QuicheStringPiece as an intermediary. + quiche::QuicheStringPiece data; if (!reader->ReadStringPiece(&data, frame->data_length)) { set_detailed_error("Unable to read frame data."); return false; @@ -3492,10 +3500,11 @@ first_ack_block_underflow = true; } if (first_ack_block_underflow) { - set_detailed_error(QuicStrCat("Underflow with first ack block length ", - first_block_length, " largest acked is ", - largest_acked, ".") - .c_str()); + set_detailed_error( + quiche::QuicheStrCat("Underflow with first ack block length ", + first_block_length, " largest acked is ", + largest_acked, ".") + .c_str()); return false; } @@ -3528,8 +3537,9 @@ } if (ack_block_underflow) { set_detailed_error( - QuicStrCat("Underflow with ack block length ", current_block_length, - ", end of block is ", first_received - gap, ".") + quiche::QuicheStrCat("Underflow with ack block length ", + current_block_length, ", end of block is ", + first_received - gap, ".") .c_str()); return false; } @@ -3577,10 +3587,11 @@ } if (largest_acked.ToUint64() <= delta_from_largest_observed) { - set_detailed_error(QuicStrCat("delta_from_largest_observed too high: ", - delta_from_largest_observed, - ", largest_acked: ", largest_acked.ToUint64()) - .c_str()); + set_detailed_error( + quiche::QuicheStrCat("delta_from_largest_observed too high: ", + delta_from_largest_observed, + ", largest_acked: ", largest_acked.ToUint64()) + .c_str()); return false; } @@ -3605,9 +3616,9 @@ } if (largest_acked.ToUint64() <= delta_from_largest_observed) { set_detailed_error( - QuicStrCat("delta_from_largest_observed too high: ", - delta_from_largest_observed, - ", largest_acked: ", largest_acked.ToUint64()) + quiche::QuicheStrCat("delta_from_largest_observed too high: ", + delta_from_largest_observed, + ", largest_acked: ", largest_acked.ToUint64()) .c_str()); return false; } @@ -3713,10 +3724,11 @@ // error if the value is wrong. if (ack_block_value + first_sending_packet_number_.ToUint64() > largest_acked) { - set_detailed_error(QuicStrCat("Underflow with first ack block length ", - ack_block_value + 1, " largest acked is ", - largest_acked, ".") - .c_str()); + set_detailed_error( + quiche::QuicheStrCat("Underflow with first ack block length ", + ack_block_value + 1, " largest acked is ", + largest_acked, ".") + .c_str()); return false; } @@ -3746,8 +3758,9 @@ // The test is written this way to detect wrap-arounds. if ((gap_block_value + 2) > block_low) { set_detailed_error( - QuicStrCat("Underflow with gap block length ", gap_block_value + 1, - " previous ack block start is ", block_low, ".") + quiche::QuicheStrCat("Underflow with gap block length ", + gap_block_value + 1, + " previous ack block start is ", block_low, ".") .c_str()); return false; } @@ -3767,8 +3780,9 @@ if (ack_block_value + first_sending_packet_number_.ToUint64() > (block_high - 1)) { set_detailed_error( - QuicStrCat("Underflow with ack block length ", ack_block_value + 1, - " latest ack block end is ", block_high - 1, ".") + quiche::QuicheStrCat("Underflow with ack block length ", + ack_block_value + 1, " latest ack block end is ", + block_high - 1, ".") .c_str()); return false; } @@ -3859,7 +3873,7 @@ // available in extracted_error_code. frame->extracted_error_code = frame->quic_error_code; - QuicStringPiece error_details; + quiche::QuicheStringPiece error_details; if (!reader->ReadStringPiece16(&error_details)) { set_detailed_error("Unable to read connection close error details."); return false; @@ -3890,7 +3904,7 @@ } frame->last_good_stream_id = static_cast<QuicStreamId>(stream_id); - QuicStringPiece reason_phrase; + quiche::QuicheStringPiece reason_phrase; if (!reader->ReadStringPiece16(&reason_phrase)) { set_detailed_error("Unable to read goaway reason."); return false; @@ -3944,7 +3958,7 @@ bool no_message_length, QuicMessageFrame* frame) { if (no_message_length) { - QuicStringPiece remaining(reader->ReadRemainingPayload()); + quiche::QuicheStringPiece remaining(reader->ReadRemainingPayload()); frame->data = remaining.data(); frame->message_length = remaining.length(); return true; @@ -3956,7 +3970,7 @@ return false; } - QuicStringPiece message_piece; + quiche::QuicheStringPiece message_piece; if (!reader->ReadStringPiece(&message_piece, message_length)) { set_detailed_error("Unable to read message data"); return false; @@ -3969,7 +3983,7 @@ } // static -QuicStringPiece QuicFramer::GetAssociatedDataFromEncryptedPacket( +quiche::QuicheStringPiece QuicFramer::GetAssociatedDataFromEncryptedPacket( QuicTransportVersion version, const QuicEncryptedPacket& encrypted, QuicConnectionIdLength destination_connection_id_length, @@ -3981,7 +3995,7 @@ uint64_t retry_token_length, QuicVariableLengthIntegerLength length_length) { // TODO(ianswett): This is identical to QuicData::AssociatedData. - return QuicStringPiece( + return quiche::QuicheStringPiece( encrypted.data(), GetStartOfEncryptedData(version, destination_connection_id_length, source_connection_id_length, includes_version, @@ -4086,9 +4100,10 @@ size_t output_length = 0; if (!encrypter_[level]->EncryptPacket( packet_number.ToUint64(), - QuicStringPiece(buffer, ad_len), // Associated data - QuicStringPiece(buffer + ad_len, total_len - ad_len), // Plaintext - buffer + ad_len, // Destination buffer + quiche::QuicheStringPiece(buffer, ad_len), // Associated data + quiche::QuicheStringPiece(buffer + ad_len, + total_len - ad_len), // Plaintext + buffer + ad_len, // Destination buffer &output_length, buffer_len - ad_len)) { RaiseError(QUIC_ENCRYPTION_FAILURE); return 0; @@ -4127,7 +4142,7 @@ // Sample the ciphertext and generate the mask to use for header protection. size_t sample_offset = pn_offset + 4; QuicDataReader sample_reader(buffer, buffer_len); - QuicStringPiece sample; + quiche::QuicheStringPiece sample; if (!sample_reader.Seek(sample_offset) || !sample_reader.ReadStringPiece(&sample, kHPSampleLen)) { QUIC_BUG << "Not enough bytes to sample: sample_offset " << sample_offset @@ -4214,11 +4229,11 @@ // Read a sample from the ciphertext and compute the mask to use for header // protection. - QuicStringPiece remaining_packet = reader->PeekRemainingPayload(); + quiche::QuicheStringPiece remaining_packet = reader->PeekRemainingPayload(); QuicDataReader sample_reader(remaining_packet); // The sample starts 4 bytes after the start of the packet number. - QuicStringPiece pn; + quiche::QuicheStringPiece pn; if (!sample_reader.ReadStringPiece(&pn, 4)) { QUIC_DVLOG(1) << "Not enough data to sample"; return false; @@ -4286,7 +4301,7 @@ } // Get the associated data, and apply the same unmasking operations to it. - QuicStringPiece ad = GetAssociatedDataFromEncryptedPacket( + quiche::QuicheStringPiece ad = GetAssociatedDataFromEncryptedPacket( version_.transport_version, packet, GetIncludedDestinationConnectionIdLength(*header), GetIncludedSourceConnectionIdLength(*header), header->version_flag, @@ -4328,7 +4343,7 @@ return 0; } - QuicStringPiece associated_data = + quiche::QuicheStringPiece associated_data = packet.AssociatedData(version_.transport_version); // Copy in the header, because the encrypter only populates the encrypted // plaintext content. @@ -4375,8 +4390,8 @@ return min_plaintext_size; } -bool QuicFramer::DecryptPayload(QuicStringPiece encrypted, - QuicStringPiece associated_data, +bool QuicFramer::DecryptPayload(quiche::QuicheStringPiece encrypted, + quiche::QuicheStringPiece associated_data, const QuicPacketHeader& header, char* decrypted_buffer, size_t buffer_length, @@ -4946,8 +4961,8 @@ return false; } - // TODO(ianswett): Don't use QuicStringPiece as an intermediary. - QuicStringPiece data; + // TODO(ianswett): Don't use quiche::QuicheStringPiece as an intermediary. + quiche::QuicheStringPiece data; if (!reader->ReadStringPiece(&data, length)) { set_detailed_error("Unable to read new token data."); return false; @@ -5664,7 +5679,7 @@ return false; } - QuicStringPiece phrase; + quiche::QuicheStringPiece phrase; if (!reader->ReadStringPiece(&phrase, static_cast<size_t>(phrase_length))) { set_detailed_error("Unable to read connection close error details."); return false; @@ -6118,7 +6133,7 @@ QuicConnectionId* destination_connection_id, QuicConnectionId* source_connection_id, bool* retry_token_present, - QuicStringPiece* retry_token, + quiche::QuicheStringPiece* retry_token, std::string* detailed_error) { QuicDataReader reader(packet.data(), packet.length()); if (reader.IsDoneReading()) { @@ -6288,7 +6303,7 @@ QuicConnectionId* source_connection_id, QuicLongHeaderType* long_packet_type, QuicVariableLengthIntegerLength* retry_token_length_length, - QuicStringPiece* retry_token, + quiche::QuicheStringPiece* retry_token, std::string* detailed_error) { *version_present = false; *has_length_prefix = false; @@ -6297,7 +6312,7 @@ *source_connection_id = EmptyQuicConnectionId(); *long_packet_type = INVALID_PACKET_TYPE; *retry_token_length_length = VARIABLE_LENGTH_INTEGER_LENGTH_0; - *retry_token = QuicStringPiece(); + *retry_token = quiche::QuicheStringPiece(); *detailed_error = ""; if (!reader->ReadUInt8(first_byte)) { @@ -6565,11 +6580,11 @@ // the string is not found, or is not properly formed, it returns // ErrorCode::QUIC_IETF_GQUIC_ERROR_MISSING void MaybeExtractQuicErrorCode(QuicConnectionCloseFrame* frame) { - std::vector<QuicStringPiece> ed = - QuicTextUtils::Split(frame->error_details, ':'); + std::vector<quiche::QuicheStringPiece> ed = + quiche::QuicheTextUtils::Split(frame->error_details, ':'); uint64_t extracted_error_code; - if (ed.size() < 2 || !QuicTextUtils::IsAllDigits(ed[0]) || - !QuicTextUtils::StringToUint64(ed[0], &extracted_error_code)) { + if (ed.size() < 2 || !quiche::QuicheTextUtils::IsAllDigits(ed[0]) || + !quiche::QuicheTextUtils::StringToUint64(ed[0], &extracted_error_code)) { if (frame->close_type == IETF_QUIC_TRANSPORT_CONNECTION_CLOSE && frame->transport_error_code == NO_IETF_QUIC_ERROR) { frame->extracted_error_code = QUIC_NO_ERROR; @@ -6583,7 +6598,7 @@ // including, the split character, so the length of ed[0] is just the number // of digits in the error number. In removing the prefix, 1 is added to the // length to account for the : - QuicStringPiece x = QuicStringPiece(frame->error_details); + quiche::QuicheStringPiece x = quiche::QuicheStringPiece(frame->error_details); x.remove_prefix(ed[0].length() + 1); frame->error_details = std::string(x); frame->extracted_error_code =
diff --git a/quic/core/quic_framer.h b/quic/core/quic_framer.h index cd2e2c7..44e172b 100644 --- a/quic/core/quic_framer.h +++ b/quic/core/quic_framer.h
@@ -17,7 +17,7 @@ #include "net/third_party/quiche/src/quic/core/quic_packets.h" #include "net/third_party/quiche/src/quic/core/quic_types.h" #include "net/third_party/quiche/src/quic/platform/api/quic_export.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { @@ -97,7 +97,7 @@ // parsed. virtual void OnRetryPacket(QuicConnectionId original_connection_id, QuicConnectionId new_connection_id, - QuicStringPiece retry_token) = 0; + quiche::QuicheStringPiece retry_token) = 0; // Called when all fields except packet number has been parsed, but has not // been authenticated. If it returns false, framing for this packet will @@ -368,7 +368,7 @@ // Returns the associated data from the encrypted packet |encrypted| as a // stringpiece. - static QuicStringPiece GetAssociatedDataFromEncryptedPacket( + static quiche::QuicheStringPiece GetAssociatedDataFromEncryptedPacket( QuicTransportVersion version, const QuicEncryptedPacket& encrypted, QuicConnectionIdLength destination_connection_id_length, @@ -397,7 +397,7 @@ QuicConnectionId* source_connection_id, QuicLongHeaderType* long_packet_type, QuicVariableLengthIntegerLength* retry_token_length_length, - QuicStringPiece* retry_token, + quiche::QuicheStringPiece* retry_token, std::string* detailed_error); // Parses the unencryoted fields in |packet| and stores them in the other @@ -415,7 +415,7 @@ QuicConnectionId* destination_connection_id, QuicConnectionId* source_connection_id, bool* retry_token_present, - QuicStringPiece* retry_token, + quiche::QuicheStringPiece* retry_token, std::string* detailed_error); // Serializes a packet containing |frames| into |buffer|. @@ -780,8 +780,8 @@ bool no_message_length, QuicMessageFrame* frame); - bool DecryptPayload(QuicStringPiece encrypted, - QuicStringPiece associated_data, + bool DecryptPayload(quiche::QuicheStringPiece encrypted, + quiche::QuicheStringPiece associated_data, const QuicPacketHeader& header, char* decrypted_buffer, size_t buffer_length,
diff --git a/quic/core/quic_framer_test.cc b/quic/core/quic_framer_test.cc index a810d7b..ab254a2 100644 --- a/quic/core/quic_framer_test.cc +++ b/quic/core/quic_framer_test.cc
@@ -28,10 +28,11 @@ #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/platform/api/quic_text_utils.h" #include "net/third_party/quiche/src/quic/test_tools/quic_framer_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h" #include "net/third_party/quiche/src/quic/test_tools/simple_data_producer.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h" using testing::_; using testing::Return; @@ -91,15 +92,17 @@ class TestEncrypter : public QuicEncrypter { public: ~TestEncrypter() override {} - bool SetKey(QuicStringPiece /*key*/) override { return true; } - bool SetNoncePrefix(QuicStringPiece /*nonce_prefix*/) override { + bool SetKey(quiche::QuicheStringPiece /*key*/) override { return true; } + bool SetNoncePrefix(quiche::QuicheStringPiece /*nonce_prefix*/) override { return true; } - bool SetIV(QuicStringPiece /*iv*/) override { return true; } - bool SetHeaderProtectionKey(QuicStringPiece /*key*/) override { return true; } + bool SetIV(quiche::QuicheStringPiece /*iv*/) override { return true; } + bool SetHeaderProtectionKey(quiche::QuicheStringPiece /*key*/) override { + return true; + } bool EncryptPacket(uint64_t packet_number, - QuicStringPiece associated_data, - QuicStringPiece plaintext, + quiche::QuicheStringPiece associated_data, + quiche::QuicheStringPiece plaintext, char* output, size_t* output_length, size_t /*max_output_length*/) override { @@ -111,7 +114,7 @@ return true; } std::string GenerateHeaderProtectionMask( - QuicStringPiece /*sample*/) override { + quiche::QuicheStringPiece /*sample*/) override { return std::string(5, 0); } size_t GetKeySize() const override { return 0; } @@ -123,8 +126,12 @@ size_t GetCiphertextSize(size_t plaintext_size) const override { return plaintext_size; } - QuicStringPiece GetKey() const override { return QuicStringPiece(); } - QuicStringPiece GetNoncePrefix() const override { return QuicStringPiece(); } + quiche::QuicheStringPiece GetKey() const override { + return quiche::QuicheStringPiece(); + } + quiche::QuicheStringPiece GetNoncePrefix() const override { + return quiche::QuicheStringPiece(); + } QuicPacketNumber packet_number_; std::string associated_data_; @@ -134,13 +141,15 @@ class TestDecrypter : public QuicDecrypter { public: ~TestDecrypter() override {} - bool SetKey(QuicStringPiece /*key*/) override { return true; } - bool SetNoncePrefix(QuicStringPiece /*nonce_prefix*/) override { + bool SetKey(quiche::QuicheStringPiece /*key*/) override { return true; } + bool SetNoncePrefix(quiche::QuicheStringPiece /*nonce_prefix*/) override { return true; } - bool SetIV(QuicStringPiece /*iv*/) override { return true; } - bool SetHeaderProtectionKey(QuicStringPiece /*key*/) override { return true; } - bool SetPreliminaryKey(QuicStringPiece /*key*/) override { + bool SetIV(quiche::QuicheStringPiece /*iv*/) override { return true; } + bool SetHeaderProtectionKey(quiche::QuicheStringPiece /*key*/) override { + return true; + } + bool SetPreliminaryKey(quiche::QuicheStringPiece /*key*/) override { QUIC_BUG << "should not be called"; return false; } @@ -148,8 +157,8 @@ return true; } bool DecryptPacket(uint64_t packet_number, - QuicStringPiece associated_data, - QuicStringPiece ciphertext, + quiche::QuicheStringPiece associated_data, + quiche::QuicheStringPiece ciphertext, char* output, size_t* output_length, size_t /*max_output_length*/) override { @@ -167,8 +176,12 @@ size_t GetKeySize() const override { return 0; } size_t GetNoncePrefixSize() const override { return 0; } size_t GetIVSize() const override { return 0; } - QuicStringPiece GetKey() const override { return QuicStringPiece(); } - QuicStringPiece GetNoncePrefix() const override { return QuicStringPiece(); } + quiche::QuicheStringPiece GetKey() const override { + return quiche::QuicheStringPiece(); + } + quiche::QuicheStringPiece GetNoncePrefix() const override { + return quiche::QuicheStringPiece(); + } // Use a distinct value starting with 0xFFFFFF, which is never used by TLS. uint32_t cipher_id() const override { return 0xFFFFFFF2; } QuicPacketNumber packet_number_; @@ -211,7 +224,7 @@ void OnRetryPacket(QuicConnectionId original_connection_id, QuicConnectionId new_connection_id, - QuicStringPiece retry_token) override { + quiche::QuicheStringPiece retry_token) override { retry_original_connection_id_ = std::make_unique<QuicConnectionId>(original_connection_id); retry_new_connection_id_ = @@ -662,7 +675,7 @@ << " actual: " << decrypter_->packet_number_; return false; } - QuicStringPiece associated_data = + quiche::QuicheStringPiece associated_data = QuicFramer::GetAssociatedDataFromEncryptedPacket( framer_.transport_version(), encrypted, destination_connection_id_length, source_connection_id_length, @@ -671,12 +684,13 @@ retry_token_length, length_length); if (associated_data != decrypter_->associated_data_) { QUIC_LOG(ERROR) << "Decrypted incorrect associated data. expected " - << QuicTextUtils::HexEncode(associated_data) + << quiche::QuicheTextUtils::HexEncode(associated_data) << " actual: " - << QuicTextUtils::HexEncode(decrypter_->associated_data_); + << quiche::QuicheTextUtils::HexEncode( + decrypter_->associated_data_); return false; } - QuicStringPiece ciphertext( + quiche::QuicheStringPiece ciphertext( encrypted.AsStringPiece().substr(GetStartOfEncryptedData( framer_.transport_version(), destination_connection_id_length, source_connection_id_length, includes_version, @@ -684,10 +698,12 @@ retry_token_length_length, retry_token_length, length_length))); if (ciphertext != decrypter_->ciphertext_) { QUIC_LOG(ERROR) << "Decrypted incorrect ciphertext data. expected " - << QuicTextUtils::HexEncode(ciphertext) << " actual: " - << QuicTextUtils::HexEncode(decrypter_->ciphertext_) + << quiche::QuicheTextUtils::HexEncode(ciphertext) + << " actual: " + << quiche::QuicheTextUtils::HexEncode( + decrypter_->ciphertext_) << " associated data: " - << QuicTextUtils::HexEncode(associated_data); + << quiche::QuicheTextUtils::HexEncode(associated_data); return false; } return true; @@ -1022,7 +1038,7 @@ QuicVersionLabel version_label; std::string detailed_error; bool retry_token_present, use_length_prefix; - QuicStringPiece retry_token; + quiche::QuicheStringPiece retry_token; ParsedQuicVersion parsed_version = UnsupportedQuicVersion(); const QuicErrorCode error_code = QuicFramer::ParsePublicHeaderDispatcher( *encrypted, kQuicDefaultConnectionIdLength, &format, &long_packet_type, @@ -1087,7 +1103,7 @@ QuicVersionLabel version_label; std::string detailed_error; bool retry_token_present, use_length_prefix; - QuicStringPiece retry_token; + quiche::QuicheStringPiece retry_token; ParsedQuicVersion parsed_version = UnsupportedQuicVersion(); const QuicErrorCode error_code = QuicFramer::ParsePublicHeaderDispatcher( *encrypted, kQuicDefaultConnectionIdLength, &format, &long_packet_type, @@ -1167,7 +1183,7 @@ QuicVersionLabel version_label = 0; std::string detailed_error = ""; bool retry_token_present, use_length_prefix; - QuicStringPiece retry_token; + quiche::QuicheStringPiece retry_token; ParsedQuicVersion parsed_version = UnsupportedQuicVersion(); const QuicErrorCode error_code = QuicFramer::ParsePublicHeaderDispatcher( encrypted, kQuicDefaultConnectionIdLength, &format, &long_packet_type, @@ -1257,7 +1273,7 @@ QuicLongHeaderType long_packet_type = INVALID_PACKET_TYPE; QuicVariableLengthIntegerLength retry_token_length_length = VARIABLE_LENGTH_INTEGER_LENGTH_4; - QuicStringPiece retry_token; + quiche::QuicheStringPiece retry_token; std::string detailed_error = "foobar"; QuicDataReader reader(AsChars(p), p_length); @@ -1280,7 +1296,7 @@ EXPECT_EQ(FramerTestConnectionId(), destination_connection_id); EXPECT_EQ(EmptyQuicConnectionId(), source_connection_id); EXPECT_EQ(VARIABLE_LENGTH_INTEGER_LENGTH_0, retry_token_length_length); - EXPECT_EQ(QuicStringPiece(), retry_token); + EXPECT_EQ(quiche::QuicheStringPiece(), retry_token); if (VersionHasIetfInvariantHeader(framer_.transport_version())) { EXPECT_EQ(IETF_QUIC_LONG_HEADER_PACKET, format); EXPECT_EQ(HANDSHAKE, long_packet_type); @@ -1327,7 +1343,7 @@ QuicLongHeaderType long_packet_type = INVALID_PACKET_TYPE; QuicVariableLengthIntegerLength retry_token_length_length = VARIABLE_LENGTH_INTEGER_LENGTH_4; - QuicStringPiece retry_token; + quiche::QuicheStringPiece retry_token; std::string detailed_error = "foobar"; QuicDataReader reader(AsChars(p), p_length); @@ -1347,7 +1363,7 @@ EXPECT_EQ(FramerTestConnectionId(), destination_connection_id); EXPECT_EQ(EmptyQuicConnectionId(), source_connection_id); EXPECT_EQ(VARIABLE_LENGTH_INTEGER_LENGTH_0, retry_token_length_length); - EXPECT_EQ(QuicStringPiece(), retry_token); + EXPECT_EQ(quiche::QuicheStringPiece(), retry_token); EXPECT_EQ(IETF_QUIC_LONG_HEADER_PACKET, format); } @@ -3994,7 +4010,7 @@ : packet), QUIC_ARRAYSIZE(packet), false); EXPECT_FALSE(framer_.ProcessPacket(encrypted)); - EXPECT_TRUE(QuicTextUtils::StartsWith( + EXPECT_TRUE(quiche::QuicheTextUtils::StartsWith( framer_.detailed_error(), "delta_from_largest_observed too high")); } @@ -4068,7 +4084,7 @@ : packet), QUIC_ARRAYSIZE(packet), false); EXPECT_FALSE(framer_.ProcessPacket(encrypted)); - EXPECT_TRUE(QuicTextUtils::StartsWith( + EXPECT_TRUE(quiche::QuicheTextUtils::StartsWith( framer_.detailed_error(), "delta_from_largest_observed too high")); } @@ -5806,7 +5822,7 @@ header.version_flag = false; header.packet_number = kPacketNumber; QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset, - QuicStringPiece("hello world!")); + quiche::QuicheStringPiece("hello world!")); QuicPaddingFrame padding_frame(2); QuicFrames frames = {QuicFrame(padding_frame), QuicFrame(stream_frame), QuicFrame(padding_frame)}; @@ -6149,7 +6165,7 @@ } QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset, - QuicStringPiece("hello world!")); + quiche::QuicheStringPiece("hello world!")); QuicFrames frames = {QuicFrame(stream_frame)}; @@ -6248,7 +6264,7 @@ } QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset, - QuicStringPiece("hello world!")); + quiche::QuicheStringPiece("hello world!")); QuicFrames frames = {QuicFrame(stream_frame)}; // clang-format off @@ -6381,7 +6397,7 @@ SimpleDataProducer data_producer; framer_.set_data_producer(&data_producer); - QuicStringPiece crypto_frame_contents("hello world!"); + quiche::QuicheStringPiece crypto_frame_contents("hello world!"); QuicCryptoFrame crypto_frame(ENCRYPTION_INITIAL, kStreamOffset, crypto_frame_contents.length()); data_producer.SaveCryptoData(ENCRYPTION_INITIAL, kStreamOffset, @@ -13249,7 +13265,7 @@ QuicConnectionId destination_connection_id = TestConnectionId(0x33); QuicConnectionId source_connection_id = TestConnectionId(0x34); bool retry_token_present = true; - QuicStringPiece retry_token; + quiche::QuicheStringPiece retry_token; std::string detailed_error = "foobar"; QuicErrorCode parse_result = QuicFramer::ParsePublicHeaderDispatcher( @@ -13266,7 +13282,7 @@ EXPECT_EQ(probe_payload_connection_id, destination_connection_id); EXPECT_EQ(EmptyQuicConnectionId(), source_connection_id); EXPECT_FALSE(retry_token_present); - EXPECT_EQ(QuicStringPiece(), retry_token); + EXPECT_EQ(quiche::QuicheStringPiece(), retry_token); EXPECT_EQ("", detailed_error); } @@ -13401,7 +13417,7 @@ QuicConnectionId destination_connection_id = TestConnectionId(1); QuicConnectionId source_connection_id = TestConnectionId(2); bool retry_token_present = true; - QuicStringPiece retry_token; + quiche::QuicheStringPiece retry_token; std::string detailed_error = "foobar"; QuicErrorCode header_parse_result = QuicFramer::ParsePublicHeaderDispatcher( encrypted, kQuicDefaultConnectionIdLength, &format, &long_packet_type, @@ -13480,7 +13496,7 @@ QuicConnectionId destination_connection_id = TestConnectionId(1); QuicConnectionId source_connection_id = TestConnectionId(2); bool retry_token_present = true; - QuicStringPiece retry_token; + quiche::QuicheStringPiece retry_token; std::string detailed_error = "foobar"; QuicErrorCode header_parse_result = QuicFramer::ParsePublicHeaderDispatcher( encrypted, kQuicDefaultConnectionIdLength, &format, &long_packet_type,
diff --git a/quic/core/quic_ietf_framer_test.cc b/quic/core/quic_ietf_framer_test.cc new file mode 100644 index 0000000..3dd7a82 --- /dev/null +++ b/quic/core/quic_ietf_framer_test.cc
@@ -0,0 +1,1503 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// gunit tests for the IETF-format framer --- generally does a simple test +// for each framer; we generate the template object (eg +// QuicIetfStreamFrame) with the correct stuff in it, ask that a frame +// be serialized (call AppendIetf<mumble>) then deserialized (call +// ProcessIetf<mumble>) and then check that the gazintas and gazoutas +// are the same. +// +// We do minimal checking of the serialized frame +// +// We do look at various different values (resulting in different +// length varints, etc) + +#include "net/third_party/quiche/src/quic/core/quic_framer.h" + +#include <algorithm> +#include <cstdint> +#include <map> +#include <memory> +#include <string> +#include <vector> + +#include "net/third_party/quiche/src/quic/core/crypto/null_decrypter.h" +#include "net/third_party/quiche/src/quic/core/crypto/null_encrypter.h" +#include "net/third_party/quiche/src/quic/core/crypto/quic_decrypter.h" +#include "net/third_party/quiche/src/quic/core/crypto/quic_encrypter.h" +#include "net/third_party/quiche/src/quic/core/quic_data_reader.h" +#include "net/third_party/quiche/src/quic/core/quic_data_writer.h" +#include "net/third_party/quiche/src/quic/core/quic_packets.h" +#include "net/third_party/quiche/src/quic/core/quic_utils.h" +#include "net/third_party/quiche/src/quic/platform/api/quic_arraysize.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_test.h" +#include "net/third_party/quiche/src/quic/test_tools/quic_framer_peer.h" +#include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h" +#include "net/third_party/quiche/src/quic/test_tools/simple_data_producer.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" + +namespace quic { +namespace test { +namespace { + +const size_t kNormalPacketBufferSize = 1400; +// Several different stream ids, should be encoded +// in 8, 4, 2, and 1 byte, respectively. Last one +// checks that value==0 works. +// All stream IDs end in 0x0, so the client/server- initiated +// and Uni/Bi-directional bits are available to alter, as any +// given test may wish. +const QuicIetfStreamId kStreamId8 = UINT64_C(0x3EDCBA9876543210); +const QuicIetfStreamId kStreamId4 = UINT64_C(0x36543210); +const QuicIetfStreamId kStreamId2 = UINT64_C(0x3210); +const QuicIetfStreamId kStreamId1 = UINT64_C(0x10); +const QuicIetfStreamId kStreamId0 = UINT64_C(0x00); + +// Ditto for the offsets. +const QuicIetfStreamOffset kOffset8 = UINT64_C(0x3210BA9876543210); +const QuicIetfStreamOffset kOffset4 = UINT64_C(0x32109876); +const QuicIetfStreamOffset kOffset2 = UINT64_C(0x3456); +const QuicIetfStreamOffset kOffset1 = UINT64_C(0x3f); +const QuicIetfStreamOffset kOffset0 = UINT64_C(0x00); + +// Structures used to create various ack frames. + +// Defines an ack frame to feed through the framer/deframer. +struct ack_frame { + uint64_t delay_time; + bool is_ack_ecn; + QuicPacketCount ect_0_count; + QuicPacketCount ect_1_count; + QuicPacketCount ecn_ce_count; + const std::vector<QuicAckBlock>& ranges; + uint64_t expected_frame_type; +}; + +class TestQuicVisitor : public QuicFramerVisitorInterface { + public: + TestQuicVisitor() {} + + ~TestQuicVisitor() override {} + + void OnError(QuicFramer* f) override { + QUIC_DLOG(INFO) << "QuicIetfFramer Error: " + << QuicErrorCodeToString(f->error()) << " (" << f->error() + << ")"; + } + + void OnPacket() override {} + + void OnPublicResetPacket(const QuicPublicResetPacket& /*packet*/) override {} + + void OnVersionNegotiationPacket( + const QuicVersionNegotiationPacket& /*packet*/) override {} + + void OnRetryPacket(QuicConnectionId /*original_connection_id*/, + QuicConnectionId /*new_connection_id*/, + quiche::QuicheStringPiece /*retry_token*/) override {} + + bool OnProtocolVersionMismatch( + ParsedQuicVersion /*received_version*/) override { + return false; + } + + bool OnUnauthenticatedPublicHeader( + const QuicPacketHeader& /*header*/) override { + return true; + } + + bool OnUnauthenticatedHeader(const QuicPacketHeader& /*header*/) override { + return true; + } + + void OnDecryptedPacket(EncryptionLevel /*level*/) override {} + + bool OnPacketHeader(const QuicPacketHeader& /*header*/) override { + return true; + } + + void OnCoalescedPacket(const QuicEncryptedPacket& /*packet*/) override {} + + void OnUndecryptablePacket(const QuicEncryptedPacket& /*packet*/, + EncryptionLevel /*decryption_level*/, + bool /*has_decryption_key*/) override {} + + bool OnStreamFrame(const QuicStreamFrame& /*frame*/) override { return true; } + + bool OnCryptoFrame(const QuicCryptoFrame& /*frame*/) override { return true; } + + bool OnAckFrameStart(QuicPacketNumber /*largest_acked*/, + QuicTime::Delta /*ack_delay_time*/) override { + return true; + } + + bool OnAckRange(QuicPacketNumber /*start*/, + QuicPacketNumber /*end*/) override { + return true; + } + + bool OnAckTimestamp(QuicPacketNumber /*packet_number*/, + QuicTime /*timestamp*/) override { + return true; + } + + bool OnAckFrameEnd(QuicPacketNumber /*start*/) override { return true; } + + bool OnStopWaitingFrame(const QuicStopWaitingFrame& /*frame*/) override { + return true; + } + + bool OnPaddingFrame(const QuicPaddingFrame& /*frame*/) override { + return true; + } + + bool OnPingFrame(const QuicPingFrame& /*frame*/) override { return true; } + + bool OnMessageFrame(const QuicMessageFrame& /*frame*/) override { + return true; + } + + void OnPacketComplete() override {} + + bool OnRstStreamFrame(const QuicRstStreamFrame& /*frame*/) override { + return true; + } + + bool OnConnectionCloseFrame( + const QuicConnectionCloseFrame& /*frame*/) override { + return true; + } + + bool OnStopSendingFrame(const QuicStopSendingFrame& /*frame*/) override { + return true; + } + + bool OnPathChallengeFrame(const QuicPathChallengeFrame& /*frame*/) override { + return true; + } + bool OnPathResponseFrame(const QuicPathResponseFrame& /*frame*/) override { + return true; + } + + bool OnGoAwayFrame(const QuicGoAwayFrame& /*frame*/) override { return true; } + + bool OnWindowUpdateFrame(const QuicWindowUpdateFrame& /*frame*/) override { + return true; + } + + bool OnBlockedFrame(const QuicBlockedFrame& /*frame*/) override { + return true; + } + + bool OnNewConnectionIdFrame( + const QuicNewConnectionIdFrame& /*frame*/) override { + return true; + } + + bool OnRetireConnectionIdFrame( + const QuicRetireConnectionIdFrame& /*frame*/) override { + return true; + } + + bool OnNewTokenFrame(const QuicNewTokenFrame& /*frame*/) override { + return true; + } + + bool IsValidStatelessResetToken(QuicUint128 /*token*/) const override { + return true; + } + + void OnAuthenticatedIetfStatelessResetPacket( + const QuicIetfStatelessResetPacket& /*packet*/) override {} + + bool OnMaxStreamsFrame(const QuicMaxStreamsFrame& /*frame*/) override { + return true; + } + + bool OnStreamsBlockedFrame( + const QuicStreamsBlockedFrame& /*frame*/) override { + return true; + } +}; + +class QuicIetfFramerTest : public QuicTestWithParam<ParsedQuicVersion> { + public: + QuicIetfFramerTest() + : start_(QuicTime::Zero() + QuicTime::Delta::FromMicroseconds(0x10)), + framer_(AllSupportedVersions(), + start_, + Perspective::IS_SERVER, + kQuicDefaultConnectionIdLength) { + framer_.set_visitor(&visitor_); + } + + // Utility functions to do actual framing/deframing. + void TryStreamFrame(char* packet_buffer, + size_t packet_buffer_size, + const char* xmit_packet_data, + size_t xmit_packet_data_size, + QuicIetfStreamId stream_id, + QuicIetfStreamOffset offset, + bool fin_bit, + bool last_frame_bit, + QuicIetfFrameType frame_type) { + // initialize a writer so that the serialized packet is placed in + // packet_buffer. + QuicDataWriter writer(packet_buffer_size, packet_buffer, + quiche::NETWORK_BYTE_ORDER); // do not really care + // about endianness. + // set up to define the source frame we wish to send. + QuicStreamFrame source_stream_frame( + stream_id, fin_bit, offset, xmit_packet_data, xmit_packet_data_size); + + // Write the frame to the packet buffer. + EXPECT_TRUE(QuicFramerPeer::AppendIetfStreamFrame( + &framer_, source_stream_frame, last_frame_bit, &writer)); + // Better have something in the packet buffer. + EXPECT_NE(0u, writer.length()); + // Now set up a reader to read in the frame. + QuicDataReader reader(packet_buffer, writer.length(), + quiche::NETWORK_BYTE_ORDER); + + // A StreamFrame to hold the results... we know the frame type, + // put it into the QuicIetfStreamFrame + QuicStreamFrame sink_stream_frame; + if (xmit_packet_data_size) { + EXPECT_EQ(sink_stream_frame.data_buffer, nullptr); + EXPECT_EQ(sink_stream_frame.data_length, 0u); + } + + EXPECT_TRUE(QuicFramerPeer::ProcessIetfStreamFrame( + &framer_, &reader, frame_type, &sink_stream_frame)); + + // Now check that the streamid, fin-bit, offset, and + // data len all match the input. + EXPECT_EQ(sink_stream_frame.stream_id, source_stream_frame.stream_id); + EXPECT_EQ(sink_stream_frame.fin, source_stream_frame.fin); + EXPECT_EQ(sink_stream_frame.data_length, source_stream_frame.data_length); + if (frame_type & IETF_STREAM_FRAME_OFF_BIT) { + // There was an offset in the frame, see if xmit and rcv vales equal. + EXPECT_EQ(sink_stream_frame.offset, source_stream_frame.offset); + } else { + // Offset not in frame, so it better come out 0. + EXPECT_EQ(sink_stream_frame.offset, 0u); + } + if (xmit_packet_data_size) { + ASSERT_NE(sink_stream_frame.data_buffer, nullptr); + ASSERT_NE(source_stream_frame.data_buffer, nullptr); + EXPECT_EQ(strcmp(sink_stream_frame.data_buffer, + source_stream_frame.data_buffer), + 0); + } else { + // No data in the frame. + EXPECT_EQ(source_stream_frame.data_length, 0u); + EXPECT_EQ(sink_stream_frame.data_length, 0u); + } + } + + // Overall ack frame encode/decode/compare function + // Encodes an ack frame as specified at |*frame| + // Then decodes the frame, + // Then compares the two + // Does some basic checking: + // - did the writer write something? + // - did the reader read the entire packet? + // - did the things the reader read match what the writer wrote? + // Returns true if it all worked false if not. + bool TryAckFrame(char* packet_buffer, + size_t /*packet_buffer_size*/, + struct ack_frame* frame) { + QuicAckFrame transmit_frame = InitAckFrame(frame->ranges); + if (frame->is_ack_ecn) { + transmit_frame.ecn_counters_populated = true; + transmit_frame.ect_0_count = frame->ect_0_count; + transmit_frame.ect_1_count = frame->ect_1_count; + transmit_frame.ecn_ce_count = frame->ecn_ce_count; + } + transmit_frame.ack_delay_time = + QuicTime::Delta::FromMicroseconds(frame->delay_time); + size_t expected_size = + QuicFramerPeer::GetIetfAckFrameSize(&framer_, transmit_frame); + + // Make a writer so that the serialized packet is placed in + // packet_buffer. + QuicDataWriter writer(expected_size, packet_buffer, + quiche::NETWORK_BYTE_ORDER); + + // Write the frame to the packet buffer. + EXPECT_TRUE(QuicFramerPeer::AppendIetfAckFrameAndTypeByte( + &framer_, transmit_frame, &writer)); + + size_t expected_frame_length = QuicFramerPeer::ComputeFrameLength( + &framer_, QuicFrame(&transmit_frame), false, + static_cast<QuicPacketNumberLength>(123456u)); + + // Encoded length should match what ComputeFrameLength returns + EXPECT_EQ(expected_frame_length, writer.length()); + // and what is in the buffer should be the expected size. + EXPECT_EQ(expected_size, writer.length()) << "Frame is " << transmit_frame; + // Now set up a reader to read in the frame. + QuicDataReader reader(packet_buffer, writer.length(), + quiche::NETWORK_BYTE_ORDER); + + // read in the frame type + uint8_t received_frame_type; + EXPECT_TRUE(reader.ReadUInt8(&received_frame_type)); + EXPECT_EQ(frame->expected_frame_type, received_frame_type); + + // an AckFrame to hold the results + QuicAckFrame receive_frame; + + EXPECT_TRUE(QuicFramerPeer::ProcessIetfAckFrame( + &framer_, &reader, received_frame_type, &receive_frame)); + + if (frame->is_ack_ecn && + (frame->ect_0_count || frame->ect_1_count || frame->ecn_ce_count)) { + EXPECT_TRUE(receive_frame.ecn_counters_populated); + EXPECT_EQ(receive_frame.ect_0_count, frame->ect_0_count); + EXPECT_EQ(receive_frame.ect_1_count, frame->ect_1_count); + EXPECT_EQ(receive_frame.ecn_ce_count, frame->ecn_ce_count); + } else { + EXPECT_FALSE(receive_frame.ecn_counters_populated); + EXPECT_EQ(receive_frame.ect_0_count, 0u); + EXPECT_EQ(receive_frame.ect_1_count, 0u); + EXPECT_EQ(receive_frame.ecn_ce_count, 0u); + } + + // Now check that the received frame matches the sent frame. + EXPECT_EQ(transmit_frame.largest_acked, receive_frame.largest_acked); + // The ~0x7 needs some explaining. The ack frame format down shifts the + // delay time by 3 (divide by 8) to allow for greater ranges in delay time. + // Therefore, if we give the framer a delay time that is not an + // even multiple of 8, the value that the deframer produces will + // not be the same as what the framer got. The downshift on + // framing and upshift on deframing results in clearing the 3 + // low-order bits ... The masking basically does the same thing, + // so the compare works properly. + return true; + } + + // encode, decode, and check a Path Challenge frame. + bool TryPathChallengeFrame(char* packet_buffer, + size_t packet_buffer_size, + const QuicPathFrameBuffer& data) { + // Make a writer so that the serialized packet is placed in + // packet_buffer. + QuicDataWriter writer(packet_buffer_size, packet_buffer, + quiche::NETWORK_BYTE_ORDER); + + QuicPathChallengeFrame transmit_frame(0, data); + + // write the frame to the packet buffer. + EXPECT_TRUE(QuicFramerPeer::AppendPathChallengeFrame( + &framer_, transmit_frame, &writer)); + + // Check for correct length in the packet buffer. + EXPECT_EQ(kQuicPathChallengeFrameSize, writer.length()); + + // now set up a reader to read in the frame. + QuicDataReader reader(packet_buffer, writer.length(), + quiche::NETWORK_BYTE_ORDER); + + QuicPathChallengeFrame receive_frame; + + EXPECT_TRUE(QuicFramerPeer::ProcessPathChallengeFrame(&framer_, &reader, + &receive_frame)); + + // Now check that the received frame matches the sent frame. + EXPECT_EQ( + 0, memcmp(transmit_frame.data_buffer.data(), + receive_frame.data_buffer.data(), kQuicPathFrameBufferSize)); + return true; + } + + // encode, decode, and check a Path Response frame. + bool TryPathResponseFrame(char* packet_buffer, + size_t packet_buffer_size, + const QuicPathFrameBuffer& data) { + // Make a writer so that the serialized packet is placed in + // packet_buffer. + QuicDataWriter writer(packet_buffer_size, packet_buffer, + quiche::NETWORK_BYTE_ORDER); + + QuicPathResponseFrame transmit_frame(0, data); + + // Write the frame to the packet buffer. + EXPECT_TRUE(QuicFramerPeer::AppendPathResponseFrame( + &framer_, transmit_frame, &writer)); + + // Check for correct length in the packet buffer. + EXPECT_EQ(kQuicPathResponseFrameSize, writer.length()); + + // Set up a reader to read in the frame. + QuicDataReader reader(packet_buffer, writer.length(), + quiche::NETWORK_BYTE_ORDER); + + QuicPathResponseFrame receive_frame; + + EXPECT_TRUE(QuicFramerPeer::ProcessPathResponseFrame(&framer_, &reader, + &receive_frame)); + + // Now check that the received frame matches the sent frame. + EXPECT_EQ( + 0, memcmp(transmit_frame.data_buffer.data(), + receive_frame.data_buffer.data(), kQuicPathFrameBufferSize)); + return true; + } + + // Test the Serialization/deserialization of a Reset Stream Frame. + void TryResetFrame(char* packet_buffer, + size_t packet_buffer_size, + QuicStreamId stream_id, + uint16_t error_code, + QuicStreamOffset final_offset) { + // Initialize a writer so that the serialized packet is placed in + // packet_buffer. + QuicDataWriter writer(packet_buffer_size, packet_buffer, + quiche::NETWORK_BYTE_ORDER); + + QuicRstStreamFrame transmit_frame(static_cast<QuicControlFrameId>(1), + stream_id, error_code, final_offset); + + // Write the frame to the packet buffer. + EXPECT_TRUE(QuicFramerPeer::AppendIetfResetStreamFrame( + &framer_, transmit_frame, &writer)); + // Check that the size of the serialzed frame is in the allowed range (3 to + // 24 bytes, inclusive). + EXPECT_LT(2u, writer.length()); + EXPECT_GT(25u, writer.length()); + // Now set up a reader to read in the thing in. + QuicDataReader reader(packet_buffer, writer.length(), + quiche::NETWORK_BYTE_ORDER); + + // A QuicRstStreamFrame to hold the results + QuicRstStreamFrame receive_frame; + EXPECT_TRUE(QuicFramerPeer::ProcessIetfResetStreamFrame(&framer_, &reader, + &receive_frame)); + + // Now check that the received values match the input. + EXPECT_EQ(receive_frame.stream_id, transmit_frame.stream_id); + EXPECT_EQ(receive_frame.ietf_error_code, transmit_frame.ietf_error_code); + EXPECT_EQ(receive_frame.byte_offset, transmit_frame.byte_offset); + } + + void TryMaxStreamsFrame(QuicStreamCount stream_count, + bool unidirectional, + bool stream_id_server_initiated) { + char packet_buffer[kNormalPacketBufferSize]; + memset(packet_buffer, 0, sizeof(packet_buffer)); + + Perspective old_perspective = framer_.perspective(); + // Set up the writer and transmit QuicMaxStreamsFrame + QuicDataWriter writer(sizeof(packet_buffer), packet_buffer, + quiche::NETWORK_BYTE_ORDER); + + // Set the perspective of the sender. If the stream id is supposed to + // be server-initiated, then the sender of the MAX_STREAMS should be + // a client, and vice versa. Do this prior to constructing the frame or + // generating the packet, so that any internal dependencies are satisfied. + QuicFramerPeer::SetPerspective(&framer_, (stream_id_server_initiated) + ? Perspective::IS_CLIENT + : Perspective::IS_SERVER); + QuicMaxStreamsFrame transmit_frame(0, stream_count, unidirectional); + + // Add the frame. + EXPECT_TRUE(QuicFramerPeer::AppendMaxStreamsFrame(&framer_, transmit_frame, + &writer)); + + // Check that buffer length is in the expected range + EXPECT_LE(1u, writer.length()); + EXPECT_GE(8u, writer.length()); + + // Set the perspective for the receiver. + QuicFramerPeer::SetPerspective(&framer_, (stream_id_server_initiated) + ? Perspective::IS_SERVER + : Perspective::IS_CLIENT); + + // Set up reader and empty receive QuicPaddingFrame. + QuicDataReader reader(packet_buffer, writer.length(), + quiche::NETWORK_BYTE_ORDER); + QuicMaxStreamsFrame receive_frame; + + // Deframe it + EXPECT_TRUE(QuicFramerPeer::ProcessMaxStreamsFrame( + &framer_, &reader, &receive_frame, + (unidirectional) ? IETF_MAX_STREAMS_UNIDIRECTIONAL + : IETF_MAX_STREAMS_BIDIRECTIONAL)) + << " Error: " << framer_.detailed_error(); + + // Now check that received and sent data are equivalent + EXPECT_EQ(stream_count, receive_frame.stream_count); + EXPECT_EQ(transmit_frame.stream_count, receive_frame.stream_count); + QuicFramerPeer::SetPerspective(&framer_, old_perspective); + } + + void TryStreamsBlockedFrame(QuicStreamCount stream_count, + bool unidirectional, + bool stream_id_server_initiated) { + char packet_buffer[kNormalPacketBufferSize]; + memset(packet_buffer, 0, sizeof(packet_buffer)); + + Perspective old_perspective = framer_.perspective(); + // Set up the writer and transmit QuicStreamsBlockedFrame + QuicDataWriter writer(sizeof(packet_buffer), packet_buffer, + quiche::NETWORK_BYTE_ORDER); + + // Set the perspective of the sender. If the stream id is supposed to + // be server-initiated, then the sender of the STREAMS_BLOCKED should be + // a client, and vice versa. Do this prior to constructing the frame or + // generating the packet, so that any internal dependencies are satisfied. + QuicFramerPeer::SetPerspective(&framer_, (stream_id_server_initiated) + ? Perspective::IS_SERVER + : Perspective::IS_CLIENT); + QuicStreamsBlockedFrame transmit_frame(0, stream_count, unidirectional); + + // Add the frame. + EXPECT_TRUE(QuicFramerPeer::AppendStreamsBlockedFrame( + &framer_, transmit_frame, &writer)); + + // Check that buffer length is in the expected range + EXPECT_LE(1u, writer.length()); + EXPECT_GE(8u, writer.length()); + + // Set the perspective for the receiver. + QuicFramerPeer::SetPerspective(&framer_, (stream_id_server_initiated) + ? Perspective::IS_CLIENT + : Perspective::IS_SERVER); + + // Set up reader and empty receive QuicPaddingFrame. + QuicDataReader reader(packet_buffer, writer.length(), + quiche::NETWORK_BYTE_ORDER); + QuicStreamsBlockedFrame receive_frame; + + // Deframe it + EXPECT_TRUE(QuicFramerPeer::ProcessStreamsBlockedFrame( + &framer_, &reader, &receive_frame, + (unidirectional) ? IETF_STREAMS_BLOCKED_UNIDIRECTIONAL + : IETF_STREAMS_BLOCKED_BIDIRECTIONAL)); + + // Now check that received and sent data are equivalent + EXPECT_EQ(stream_count, receive_frame.stream_count); + EXPECT_EQ(transmit_frame.stream_count, receive_frame.stream_count); + QuicFramerPeer::SetPerspective(&framer_, old_perspective); + } + + QuicTime start_; + QuicFramer framer_; + test::TestQuicVisitor visitor_; +}; + +struct stream_frame_variant { + QuicIetfStreamId stream_id; + QuicIetfStreamOffset offset; + bool fin_bit; + bool last_frame_bit; + uint8_t frame_type; +} stream_frame_to_test[] = { +#define IETF_STREAM0 (((uint8_t)IETF_STREAM)) + +#define IETF_STREAM1 (((uint8_t)IETF_STREAM) | IETF_STREAM_FRAME_FIN_BIT) + +#define IETF_STREAM2 (((uint8_t)IETF_STREAM) | IETF_STREAM_FRAME_LEN_BIT) + +#define IETF_STREAM3 \ + (((uint8_t)IETF_STREAM) | IETF_STREAM_FRAME_LEN_BIT | \ + IETF_STREAM_FRAME_FIN_BIT) + +#define IETF_STREAM4 (((uint8_t)IETF_STREAM) | IETF_STREAM_FRAME_OFF_BIT) + +#define IETF_STREAM5 \ + (((uint8_t)IETF_STREAM) | IETF_STREAM_FRAME_OFF_BIT | \ + IETF_STREAM_FRAME_FIN_BIT) + +#define IETF_STREAM6 \ + (((uint8_t)IETF_STREAM) | IETF_STREAM_FRAME_OFF_BIT | \ + IETF_STREAM_FRAME_LEN_BIT) + +#define IETF_STREAM7 \ + (((uint8_t)IETF_STREAM) | IETF_STREAM_FRAME_OFF_BIT | \ + IETF_STREAM_FRAME_LEN_BIT | IETF_STREAM_FRAME_FIN_BIT) + + {kStreamId8, kOffset8, true, false, IETF_STREAM7}, + {kStreamId8, kOffset8, false, false, IETF_STREAM6}, + {kStreamId8, kOffset4, true, false, IETF_STREAM7}, + {kStreamId8, kOffset4, false, false, IETF_STREAM6}, + {kStreamId8, kOffset2, true, false, IETF_STREAM7}, + {kStreamId8, kOffset2, false, false, IETF_STREAM6}, + {kStreamId8, kOffset1, true, false, IETF_STREAM7}, + {kStreamId8, kOffset1, false, false, IETF_STREAM6}, + {kStreamId8, kOffset0, true, false, IETF_STREAM3}, + {kStreamId8, kOffset0, false, false, IETF_STREAM2}, + {kStreamId4, kOffset8, true, false, IETF_STREAM7}, + {kStreamId4, kOffset8, false, false, IETF_STREAM6}, + {kStreamId4, kOffset4, true, false, IETF_STREAM7}, + {kStreamId4, kOffset4, false, false, IETF_STREAM6}, + {kStreamId4, kOffset2, true, false, IETF_STREAM7}, + {kStreamId4, kOffset2, false, false, IETF_STREAM6}, + {kStreamId4, kOffset1, true, false, IETF_STREAM7}, + {kStreamId4, kOffset1, false, false, IETF_STREAM6}, + {kStreamId4, kOffset0, true, false, IETF_STREAM3}, + {kStreamId4, kOffset0, false, false, IETF_STREAM2}, + {kStreamId2, kOffset8, true, false, IETF_STREAM7}, + {kStreamId2, kOffset8, false, false, IETF_STREAM6}, + {kStreamId2, kOffset4, true, false, IETF_STREAM7}, + {kStreamId2, kOffset4, false, false, IETF_STREAM6}, + {kStreamId2, kOffset2, true, false, IETF_STREAM7}, + {kStreamId2, kOffset2, false, false, IETF_STREAM6}, + {kStreamId2, kOffset1, true, false, IETF_STREAM7}, + {kStreamId2, kOffset1, false, false, IETF_STREAM6}, + {kStreamId2, kOffset0, true, false, IETF_STREAM3}, + {kStreamId2, kOffset0, false, false, IETF_STREAM2}, + {kStreamId1, kOffset8, true, false, IETF_STREAM7}, + {kStreamId1, kOffset8, false, false, IETF_STREAM6}, + {kStreamId1, kOffset4, true, false, IETF_STREAM7}, + {kStreamId1, kOffset4, false, false, IETF_STREAM6}, + {kStreamId1, kOffset2, true, false, IETF_STREAM7}, + {kStreamId1, kOffset2, false, false, IETF_STREAM6}, + {kStreamId1, kOffset1, true, false, IETF_STREAM7}, + {kStreamId1, kOffset1, false, false, IETF_STREAM6}, + {kStreamId1, kOffset0, true, false, IETF_STREAM3}, + {kStreamId1, kOffset0, false, false, IETF_STREAM2}, + {kStreamId0, kOffset8, true, false, IETF_STREAM7}, + {kStreamId0, kOffset8, false, false, IETF_STREAM6}, + {kStreamId0, kOffset4, true, false, IETF_STREAM7}, + {kStreamId0, kOffset4, false, false, IETF_STREAM6}, + {kStreamId0, kOffset2, true, false, IETF_STREAM7}, + {kStreamId0, kOffset2, false, false, IETF_STREAM6}, + {kStreamId0, kOffset1, true, false, IETF_STREAM7}, + {kStreamId0, kOffset1, false, false, IETF_STREAM6}, + {kStreamId0, kOffset0, true, false, IETF_STREAM3}, + {kStreamId0, kOffset0, false, false, IETF_STREAM2}, + + {kStreamId8, kOffset8, true, true, IETF_STREAM5}, + {kStreamId8, kOffset8, false, true, IETF_STREAM4}, + {kStreamId8, kOffset4, true, true, IETF_STREAM5}, + {kStreamId8, kOffset4, false, true, IETF_STREAM4}, + {kStreamId8, kOffset2, true, true, IETF_STREAM5}, + {kStreamId8, kOffset2, false, true, IETF_STREAM4}, + {kStreamId8, kOffset1, true, true, IETF_STREAM5}, + {kStreamId8, kOffset1, false, true, IETF_STREAM4}, + {kStreamId8, kOffset0, true, true, IETF_STREAM1}, + {kStreamId8, kOffset0, false, true, IETF_STREAM0}, + {kStreamId4, kOffset8, true, true, IETF_STREAM5}, + {kStreamId4, kOffset8, false, true, IETF_STREAM4}, + {kStreamId4, kOffset4, true, true, IETF_STREAM5}, + {kStreamId4, kOffset4, false, true, IETF_STREAM4}, + {kStreamId4, kOffset2, true, true, IETF_STREAM5}, + {kStreamId4, kOffset2, false, true, IETF_STREAM4}, + {kStreamId4, kOffset1, true, true, IETF_STREAM5}, + {kStreamId4, kOffset1, false, true, IETF_STREAM4}, + {kStreamId4, kOffset0, true, true, IETF_STREAM1}, + {kStreamId4, kOffset0, false, true, IETF_STREAM0}, + {kStreamId2, kOffset8, true, true, IETF_STREAM5}, + {kStreamId2, kOffset8, false, true, IETF_STREAM4}, + {kStreamId2, kOffset4, true, true, IETF_STREAM5}, + {kStreamId2, kOffset4, false, true, IETF_STREAM4}, + {kStreamId2, kOffset2, true, true, IETF_STREAM5}, + {kStreamId2, kOffset2, false, true, IETF_STREAM4}, + {kStreamId2, kOffset1, true, true, IETF_STREAM5}, + {kStreamId2, kOffset1, false, true, IETF_STREAM4}, + {kStreamId2, kOffset0, true, true, IETF_STREAM1}, + {kStreamId2, kOffset0, false, true, IETF_STREAM0}, + {kStreamId1, kOffset8, true, true, IETF_STREAM5}, + {kStreamId1, kOffset8, false, true, IETF_STREAM4}, + {kStreamId1, kOffset4, true, true, IETF_STREAM5}, + {kStreamId1, kOffset4, false, true, IETF_STREAM4}, + {kStreamId1, kOffset2, true, true, IETF_STREAM5}, + {kStreamId1, kOffset2, false, true, IETF_STREAM4}, + {kStreamId1, kOffset1, true, true, IETF_STREAM5}, + {kStreamId1, kOffset1, false, true, IETF_STREAM4}, + {kStreamId1, kOffset0, true, true, IETF_STREAM1}, + {kStreamId1, kOffset0, false, true, IETF_STREAM0}, + {kStreamId0, kOffset8, true, true, IETF_STREAM5}, + {kStreamId0, kOffset8, false, true, IETF_STREAM4}, + {kStreamId0, kOffset4, true, true, IETF_STREAM5}, + {kStreamId0, kOffset4, false, true, IETF_STREAM4}, + {kStreamId0, kOffset2, true, true, IETF_STREAM5}, + {kStreamId0, kOffset2, false, true, IETF_STREAM4}, + {kStreamId0, kOffset1, true, true, IETF_STREAM5}, + {kStreamId0, kOffset1, false, true, IETF_STREAM4}, + {kStreamId0, kOffset0, true, true, IETF_STREAM1}, + {kStreamId0, kOffset0, false, true, IETF_STREAM0}, +}; + +TEST_F(QuicIetfFramerTest, StreamFrame) { + char packet_buffer[kNormalPacketBufferSize]; + const char* transmit_packet_data = + "this is a test of some packet data, " + "can do a simple strcmp to see if the " + "input and output are the same!"; + + size_t transmit_packet_data_len = strlen(transmit_packet_data) + 1; + for (size_t i = 0; i < QUIC_ARRAYSIZE(stream_frame_to_test); ++i) { + SCOPED_TRACE(i); + struct stream_frame_variant* variant = &stream_frame_to_test[i]; + TryStreamFrame(packet_buffer, sizeof(packet_buffer), transmit_packet_data, + transmit_packet_data_len, variant->stream_id, + variant->offset, variant->fin_bit, variant->last_frame_bit, + static_cast<QuicIetfFrameType>(variant->frame_type)); + } +} +// As the previous test, but with no data. +TEST_F(QuicIetfFramerTest, ZeroLengthStreamFrame) { + char packet_buffer[kNormalPacketBufferSize]; + + for (size_t i = 0; i < QUIC_ARRAYSIZE(stream_frame_to_test); ++i) { + SCOPED_TRACE(i); + struct stream_frame_variant* variant = &stream_frame_to_test[i]; + TryStreamFrame(packet_buffer, sizeof(packet_buffer), + /* xmit_packet_data = */ NULL, + /* xmit_packet_data_size = */ 0, variant->stream_id, + variant->offset, variant->fin_bit, variant->last_frame_bit, + static_cast<QuicIetfFrameType>(variant->frame_type)); + } +} + +TEST_F(QuicIetfFramerTest, CryptoFrame) { + SimpleDataProducer data_producer; + framer_.set_data_producer(&data_producer); + char packet_buffer[kNormalPacketBufferSize]; + + quiche::QuicheStringPiece frame_data("This is a CRYPTO frame."); + + QuicStreamOffset offsets[] = {kOffset8, kOffset4, kOffset2, kOffset1, + kOffset0}; + for (QuicStreamOffset offset : offsets) { + QuicCryptoFrame frame(ENCRYPTION_INITIAL, offset, frame_data.length()); + data_producer.SaveCryptoData(ENCRYPTION_INITIAL, offset, frame_data); + + QuicDataWriter writer(QUIC_ARRAYSIZE(packet_buffer), packet_buffer, + quiche::NETWORK_BYTE_ORDER); + + // Write the frame. + EXPECT_TRUE(QuicFramerPeer::AppendCryptoFrame(&framer_, frame, &writer)); + EXPECT_NE(0u, writer.length()); + // Read it back. + QuicDataReader reader(packet_buffer, writer.length(), + quiche::NETWORK_BYTE_ORDER); + QuicCryptoFrame read_frame; + EXPECT_TRUE( + QuicFramerPeer::ProcessCryptoFrame(&framer_, &reader, &read_frame)); + + // Check that the frames match: + quiche::QuicheStringPiece read_data(read_frame.data_buffer, + read_frame.data_length); + EXPECT_EQ(read_frame.data_length, frame.data_length); + EXPECT_EQ(read_frame.offset, frame.offset); + EXPECT_EQ(read_data, frame_data); + } +} + +TEST_F(QuicIetfFramerTest, ConnectionClose) { + char packet_buffer[kNormalPacketBufferSize]; + + // initialize a writer so that the serialized packet is placed in + // packet_buffer. + QuicDataWriter writer(sizeof(packet_buffer), packet_buffer, + quiche::NETWORK_BYTE_ORDER); + + std::string test_string = "Ich Bin Ein Jelly Donut?"; + QuicConnectionCloseFrame sent_frame(QUIC_VERSION_99, QUIC_NO_ERROR, + test_string, + /*transport_close_frame_type=*/123); + + // write the frame to the packet buffer. + EXPECT_TRUE(QuicFramerPeer::AppendIetfConnectionCloseFrame( + &framer_, sent_frame, &writer)); + + // better have something in the packet buffer. + EXPECT_NE(0u, writer.length()); + + // now set up a reader to read in the frame. + QuicDataReader reader(packet_buffer, writer.length(), + quiche::NETWORK_BYTE_ORDER); + + // a QuicConnectionCloseFrame to hold the results. + QuicConnectionCloseFrame sink_frame; + + EXPECT_TRUE(QuicFramerPeer::ProcessIetfConnectionCloseFrame( + &framer_, &reader, IETF_QUIC_TRANSPORT_CONNECTION_CLOSE, &sink_frame)); + + // Now check that received == sent + EXPECT_EQ(sent_frame.quic_error_code, sink_frame.quic_error_code); + EXPECT_THAT(sink_frame.quic_error_code, IsQuicNoError()); + EXPECT_EQ(sink_frame.error_details, test_string); + EXPECT_EQ(sink_frame.close_type, sent_frame.close_type); + EXPECT_EQ(sent_frame.close_type, IETF_QUIC_TRANSPORT_CONNECTION_CLOSE); +} + +TEST_F(QuicIetfFramerTest, ApplicationClose) { + char packet_buffer[kNormalPacketBufferSize]; + + // initialize a writer so that the serialized packet is placed in + // packet_buffer. + QuicDataWriter writer(sizeof(packet_buffer), packet_buffer, + quiche::NETWORK_BYTE_ORDER); + + std::string test_string = "Ich Bin Ein Jelly Donut?"; + QuicConnectionCloseFrame sent_frame(QUIC_VERSION_99, QUIC_LAST_ERROR, + test_string, + /*transport_close_frame_type=*/0); + + // write the frame to the packet buffer. + EXPECT_TRUE(QuicFramerPeer::AppendIetfConnectionCloseFrame( + &framer_, sent_frame, &writer)); + + // better have something in the packet buffer. + EXPECT_NE(0u, writer.length()); + + // now set up a reader to read in the frame. + QuicDataReader reader(packet_buffer, writer.length(), + quiche::NETWORK_BYTE_ORDER); + + // a QuicConnectionCloseFrame to hold the results. + QuicConnectionCloseFrame sink_frame; + + EXPECT_TRUE(QuicFramerPeer::ProcessIetfConnectionCloseFrame( + &framer_, &reader, IETF_QUIC_APPLICATION_CONNECTION_CLOSE, &sink_frame)); + + // Now check that received == sent + EXPECT_EQ(sink_frame.quic_error_code, QUIC_LAST_ERROR); + EXPECT_EQ(sent_frame.quic_error_code, sink_frame.quic_error_code); + EXPECT_EQ(sink_frame.error_details, test_string); + EXPECT_EQ(sent_frame.close_type, IETF_QUIC_APPLICATION_CONNECTION_CLOSE); + EXPECT_EQ(sent_frame.close_type, sink_frame.close_type); +} + +// Testing for the IETF ACK framer. +// clang-format off +struct ack_frame ack_frame_variants[] = { + {90000, + false, + 0, + 0, + 0, + {{QuicPacketNumber(1000), QuicPacketNumber(2001)}}, + IETF_ACK}, + {0, + false, + 0, + 0, + 0, + {{QuicPacketNumber(1000), QuicPacketNumber(2001)}}, + IETF_ACK}, + {1, + false, + 0, + 0, + 0, + {{QuicPacketNumber(1), QuicPacketNumber(2)}, + {QuicPacketNumber(5), QuicPacketNumber(6)}}, + IETF_ACK}, + {63, + false, + 0, + 0, + 0, + {{QuicPacketNumber(1), QuicPacketNumber(2)}, + {QuicPacketNumber(5), QuicPacketNumber(6)}}, + IETF_ACK}, + {64, + false, + 0, + 0, + 0, + {{QuicPacketNumber(1), QuicPacketNumber(2)}, + {QuicPacketNumber(3), QuicPacketNumber(4)}, + {QuicPacketNumber(5), QuicPacketNumber(6)}, + {QuicPacketNumber(7), QuicPacketNumber(8)}, + {QuicPacketNumber(9), QuicPacketNumber(10)}, + {QuicPacketNumber(11), QuicPacketNumber(12)}}, + IETF_ACK}, + {10000, + false, + 0, + 0, + 0, + {{QuicPacketNumber(1), QuicPacketNumber(2)}, + {QuicPacketNumber(3), QuicPacketNumber(4)}, + {QuicPacketNumber(5), QuicPacketNumber(6)}, + {QuicPacketNumber(7), QuicPacketNumber(8)}, + {QuicPacketNumber(9), QuicPacketNumber(10)}, + {QuicPacketNumber(11), QuicPacketNumber(12)}}, + IETF_ACK}, + {100000000, + false, + 0, + 0, + 0, + {{QuicPacketNumber(1), QuicPacketNumber(2)}, + {QuicPacketNumber(3), QuicPacketNumber(4)}, + {QuicPacketNumber(5), QuicPacketNumber(6)}, + {QuicPacketNumber(7), QuicPacketNumber(8)}, + {QuicPacketNumber(9), QuicPacketNumber(10)}, + {QuicPacketNumber(11), QuicPacketNumber(12)}}, + IETF_ACK}, + {0, + false, + 0, + 0, + 0, + {{QuicPacketNumber(1), QuicPacketNumber(65)}}, + IETF_ACK}, + {9223372036854775807, + false, + 0, + 0, + 0, + {{QuicPacketNumber(1), QuicPacketNumber(11)}, + {QuicPacketNumber(74), QuicPacketNumber(138)}}, + IETF_ACK}, + // This ack is for packets 60 & 125. There are 64 packets in the gap. + // The encoded value is gap_size - 1, or 63. Crosses a VarInt62 encoding + // boundary... + {1, + false, + 0, + 0, + 0, + {{QuicPacketNumber(60), QuicPacketNumber(61)}, + {QuicPacketNumber(125), QuicPacketNumber(126)}}, + IETF_ACK}, + {2, + false, + 0, + 0, + 0, + {{QuicPacketNumber(1), QuicPacketNumber(65)}, + {QuicPacketNumber(129), QuicPacketNumber(130)}}, + IETF_ACK}, + {3, + false, + 0, + 0, + 0, + {{QuicPacketNumber(1), QuicPacketNumber(65)}, + {QuicPacketNumber(129), QuicPacketNumber(195)}}, + IETF_ACK}, + {4, + false, + 0, + 0, + 0, + {{QuicPacketNumber(1), QuicPacketNumber(65)}, + {QuicPacketNumber(129), QuicPacketNumber(194)}}, + IETF_ACK}, + {5, + false, + 0, + 0, + 0, + {{QuicPacketNumber(1), QuicPacketNumber(65)}, + {QuicPacketNumber(129), QuicPacketNumber(193)}}, + IETF_ACK}, + {6, + false, + 0, + 0, + 0, + {{QuicPacketNumber(1), QuicPacketNumber(65)}, + {QuicPacketNumber(129), QuicPacketNumber(192)}}, + IETF_ACK}, + // declare some ack_ecn frames to try. + {6, + false, + 100, + 200, + 300, + {{QuicPacketNumber(1), QuicPacketNumber(65)}, + {QuicPacketNumber(129), QuicPacketNumber(192)}}, + IETF_ACK}, + {6, + true, + 100, + 200, + 300, + {{QuicPacketNumber(1), QuicPacketNumber(65)}, + {QuicPacketNumber(129), QuicPacketNumber(192)}}, + IETF_ACK_ECN}, + {6, + true, + 100, + 0, + 0, + {{QuicPacketNumber(1), QuicPacketNumber(65)}, + {QuicPacketNumber(129), QuicPacketNumber(192)}}, + IETF_ACK_ECN}, + {6, + true, + 0, + 200, + 0, + {{QuicPacketNumber(1), QuicPacketNumber(65)}, + {QuicPacketNumber(129), QuicPacketNumber(192)}}, + IETF_ACK_ECN}, + {6, + true, + 0, + 0, + 300, + {{QuicPacketNumber(1), QuicPacketNumber(65)}, + {QuicPacketNumber(129), QuicPacketNumber(192)}}, + IETF_ACK_ECN}, + {6, + true, + 0, + 0, + 0, + {{QuicPacketNumber(1), QuicPacketNumber(65)}, + {QuicPacketNumber(129), QuicPacketNumber(192)}}, + IETF_ACK}, +}; +// clang-format on + +TEST_F(QuicIetfFramerTest, AckFrame) { + char packet_buffer[kNormalPacketBufferSize]; + for (auto ack_frame_variant : ack_frame_variants) { + EXPECT_TRUE( + TryAckFrame(packet_buffer, sizeof(packet_buffer), &ack_frame_variant)); + } +} + +// Test the case of having a QuicAckFrame with no ranges in it. By +// examination of the Google Quic Ack code and tests, this case should +// be handled as an ack with no "ranges after the first"; the +// AckBlockCount should be 0 and the FirstAckBlock should be +// |LargestAcked| - 1 (number of packets preceding the LargestAcked. +TEST_F(QuicIetfFramerTest, AckFrameNoRanges) { + char packet_buffer[kNormalPacketBufferSize]; + + // Make a writer so that the serialized packet is placed in + // packet_buffer. + QuicDataWriter writer(sizeof(packet_buffer), packet_buffer, + quiche::NETWORK_BYTE_ORDER); + + QuicAckFrame transmit_frame; + transmit_frame.largest_acked = QuicPacketNumber(1); + transmit_frame.ack_delay_time = QuicTime::Delta::FromMicroseconds(0); + + size_t expected_size = + QuicFramerPeer::GetIetfAckFrameSize(&framer_, transmit_frame); + // Write the frame to the packet buffer. + EXPECT_TRUE(QuicFramerPeer::AppendIetfAckFrameAndTypeByte( + &framer_, transmit_frame, &writer)); + + uint8_t packet[] = { + 0x02, // type, IETF_ACK + 0x01, // largest_acked, + 0x00, // delay + 0x00, // count of additional ack blocks + 0x00, // size of first ack block (packets preceding largest_acked) + }; + EXPECT_EQ(expected_size, sizeof(packet)); + EXPECT_EQ(sizeof(packet), writer.length()); + EXPECT_EQ(0, memcmp(packet, packet_buffer, writer.length())); + + // Now set up a reader to read in the frame. + QuicDataReader reader(packet_buffer, writer.length(), + quiche::NETWORK_BYTE_ORDER); + + // an AckFrame to hold the results + QuicAckFrame receive_frame; + + // read in the frame type + uint8_t received_frame_type; + EXPECT_TRUE(reader.ReadUInt8(&received_frame_type)); + EXPECT_EQ(received_frame_type, IETF_ACK); + + EXPECT_TRUE(QuicFramerPeer::ProcessIetfAckFrame(&framer_, &reader, IETF_ACK, + &receive_frame)); + + // Now check that the received frame matches the sent frame. + EXPECT_EQ(transmit_frame.largest_acked, receive_frame.largest_acked); +} + +TEST_F(QuicIetfFramerTest, PathChallengeFrame) { + // Double-braces needed on some platforms due to + // https://bugs.llvm.org/show_bug.cgi?id=21629 + QuicPathFrameBuffer buffer0 = {{0, 0, 0, 0, 0, 0, 0, 0}}; + QuicPathFrameBuffer buffer1 = { + {0x80, 0x91, 0xa2, 0xb3, 0xc4, 0xd5, 0xe5, 0xf7}}; + char packet_buffer[kNormalPacketBufferSize]; + EXPECT_TRUE( + TryPathChallengeFrame(packet_buffer, sizeof(packet_buffer), buffer0)); + EXPECT_TRUE( + TryPathChallengeFrame(packet_buffer, sizeof(packet_buffer), buffer1)); +} + +TEST_F(QuicIetfFramerTest, PathResponseFrame) { + // Double-braces needed on some platforms due to + // https://bugs.llvm.org/show_bug.cgi?id=21629 + QuicPathFrameBuffer buffer0 = {{0, 0, 0, 0, 0, 0, 0, 0}}; + QuicPathFrameBuffer buffer1 = { + {0x80, 0x91, 0xa2, 0xb3, 0xc4, 0xd5, 0xe5, 0xf7}}; + char packet_buffer[kNormalPacketBufferSize]; + EXPECT_TRUE( + TryPathResponseFrame(packet_buffer, sizeof(packet_buffer), buffer0)); + EXPECT_TRUE( + TryPathResponseFrame(packet_buffer, sizeof(packet_buffer), buffer1)); +} + +TEST_F(QuicIetfFramerTest, ResetStreamFrame) { + char packet_buffer[kNormalPacketBufferSize]; + struct resets { + QuicStreamId stream_id; + uint16_t error_code; + QuicStreamOffset final_offset; + } reset_frames[] = { + {0, 55, 0}, + {0x10, 73, 0x300}, + }; + for (auto reset : reset_frames) { + TryResetFrame(packet_buffer, sizeof(packet_buffer), reset.stream_id, + reset.error_code, reset.final_offset); + } +} + +TEST_F(QuicIetfFramerTest, StopSendingFrame) { + char packet_buffer[kNormalPacketBufferSize]; + + // Make a writer so that the serialized packet is placed in + // packet_buffer. + QuicDataWriter writer(sizeof(packet_buffer), packet_buffer, + quiche::NETWORK_BYTE_ORDER); + + QuicStopSendingFrame transmit_frame; + transmit_frame.stream_id = 12345; + transmit_frame.application_error_code = 543; + + // Write the frame to the packet buffer. + EXPECT_TRUE(QuicFramerPeer::AppendStopSendingFrame(&framer_, transmit_frame, + &writer)); + // Check that the number of bytes in the buffer is in the + // allowed range. + EXPECT_LE(3u, writer.length()); + EXPECT_GE(10u, writer.length()); + + QuicDataReader reader(packet_buffer, writer.length(), + quiche::NETWORK_BYTE_ORDER); + + // A frame to hold the results + QuicStopSendingFrame receive_frame; + + EXPECT_TRUE(QuicFramerPeer::ProcessStopSendingFrame(&framer_, &reader, + &receive_frame)); + + // Verify that the transmitted and received values are the same. + EXPECT_EQ(receive_frame.stream_id, 12345u); + EXPECT_EQ(receive_frame.application_error_code, 543u); + EXPECT_EQ(receive_frame.stream_id, transmit_frame.stream_id); + EXPECT_EQ(receive_frame.application_error_code, + transmit_frame.application_error_code); +} + +TEST_F(QuicIetfFramerTest, MaxDataFrame) { + char packet_buffer[kNormalPacketBufferSize]; + QuicStreamOffset window_sizes[] = {0, 1, 2, 5, 10, + 20, 50, 100, 200, 500, + 1000000, kOffset8, kOffset4, kOffset2}; + for (QuicStreamOffset window_size : window_sizes) { + memset(packet_buffer, 0, sizeof(packet_buffer)); + + // Set up the writer and transmit QuicWindowUpdateFrame + QuicDataWriter writer(sizeof(packet_buffer), packet_buffer, + quiche::NETWORK_BYTE_ORDER); + QuicWindowUpdateFrame transmit_frame(0, 99, window_size); + + // Add the frame. + EXPECT_TRUE( + QuicFramerPeer::AppendMaxDataFrame(&framer_, transmit_frame, &writer)); + + // Check that the number of bytes in the buffer is in the expected range. + EXPECT_LE(1u, writer.length()); + EXPECT_GE(8u, writer.length()); + + // Set up reader and an empty QuicWindowUpdateFrame + QuicDataReader reader(packet_buffer, writer.length(), + quiche::NETWORK_BYTE_ORDER); + QuicWindowUpdateFrame receive_frame; + + // Deframe it + EXPECT_TRUE( + QuicFramerPeer::ProcessMaxDataFrame(&framer_, &reader, &receive_frame)); + + // Now check that the received data equals the sent data. + EXPECT_EQ(transmit_frame.max_data, window_size); + EXPECT_EQ(transmit_frame.max_data, receive_frame.max_data); + EXPECT_EQ(QuicUtils::GetInvalidStreamId(framer_.transport_version()), + receive_frame.stream_id); + } +} + +TEST_F(QuicIetfFramerTest, MaxStreamDataFrame) { + char packet_buffer[kNormalPacketBufferSize]; + QuicStreamOffset window_sizes[] = {0, 1, 2, 5, 10, + 20, 50, 100, 200, 500, + 1000000, kOffset8, kOffset4, kOffset2}; + QuicIetfStreamId stream_ids[] = {kStreamId4, kStreamId2, kStreamId1, + kStreamId0}; + + for (QuicIetfStreamId stream_id : stream_ids) { + for (QuicStreamOffset window_size : window_sizes) { + memset(packet_buffer, 0, sizeof(packet_buffer)); + + // Set up the writer and transmit QuicWindowUpdateFrame + QuicDataWriter writer(sizeof(packet_buffer), packet_buffer, + quiche::NETWORK_BYTE_ORDER); + QuicWindowUpdateFrame transmit_frame(0, stream_id, window_size); + + // Add the frame. + EXPECT_TRUE(QuicFramerPeer::AppendMaxStreamDataFrame( + &framer_, transmit_frame, &writer)); + + // Check that number of bytes in the buffer is in the expected range. + EXPECT_LE(2u, writer.length()); + EXPECT_GE(16u, writer.length()); + + // Set up reader and empty receive QuicPaddingFrame. + QuicDataReader reader(packet_buffer, writer.length(), + quiche::NETWORK_BYTE_ORDER); + QuicWindowUpdateFrame receive_frame; + + // Deframe it + EXPECT_TRUE(QuicFramerPeer::ProcessMaxStreamDataFrame(&framer_, &reader, + &receive_frame)); + + // Now check that received data and sent data are equal. + EXPECT_EQ(transmit_frame.max_data, window_size); + EXPECT_EQ(transmit_frame.max_data, receive_frame.max_data); + EXPECT_EQ(stream_id, receive_frame.stream_id); + EXPECT_EQ(transmit_frame.stream_id, receive_frame.stream_id); + } + } +} + +TEST_F(QuicIetfFramerTest, MaxStreamsFrame) { + QuicStreamCount stream_counts[] = {0x3fffffff, 0x3fff, 0x3f, 0x1}; + + for (QuicStreamCount stream_count : stream_counts) { + // Cover all four combinations of uni/bi-directional and + // server-/client- initiation. + TryMaxStreamsFrame(stream_count, /*unidirectional=*/true, + /*stream_id_server_initiated=*/true); + TryMaxStreamsFrame(stream_count, /*unidirectional=*/true, + /*stream_id_server_initiated=*/false); + TryMaxStreamsFrame(stream_count, /*unidirectional=*/false, + /*stream_id_server_initiated=*/true); + TryMaxStreamsFrame(stream_count, /*unidirectional=*/false, + /*stream_id_server_initiated=*/false); + } +} + +TEST_F(QuicIetfFramerTest, BlockedFrame) { + char packet_buffer[kNormalPacketBufferSize]; + QuicStreamOffset offsets[] = {kOffset8, kOffset4, kOffset2, kOffset1, + kOffset0}; + + for (QuicStreamOffset offset : offsets) { + memset(packet_buffer, 0, sizeof(packet_buffer)); + + // Set up the writer and transmit QuicBlockedFrame + QuicDataWriter writer(sizeof(packet_buffer), packet_buffer, + quiche::NETWORK_BYTE_ORDER); + QuicBlockedFrame transmit_frame( + 0, QuicUtils::GetInvalidStreamId(framer_.transport_version()), offset); + + // Add the frame. + EXPECT_TRUE(QuicFramerPeer::AppendIetfBlockedFrame(&framer_, transmit_frame, + &writer)); + + // Check that buffer length is in the expected range + EXPECT_LE(1u, writer.length()); + EXPECT_GE(8u, writer.length()); + + // Set up reader and empty receive QuicFrame. + QuicDataReader reader(packet_buffer, writer.length(), + quiche::NETWORK_BYTE_ORDER); + QuicBlockedFrame receive_frame; + + // Deframe it + EXPECT_TRUE(QuicFramerPeer::ProcessIetfBlockedFrame(&framer_, &reader, + &receive_frame)); + + // Check that received and sent data are equivalent + EXPECT_EQ(QuicUtils::GetInvalidStreamId(framer_.transport_version()), + receive_frame.stream_id); + EXPECT_EQ(offset, receive_frame.offset); + EXPECT_EQ(transmit_frame.offset, receive_frame.offset); + } +} + +TEST_F(QuicIetfFramerTest, StreamBlockedFrame) { + char packet_buffer[kNormalPacketBufferSize]; + QuicStreamOffset offsets[] = {0, 1, 2, 5, 10, + 20, 50, 100, 200, 500, + 1000000, kOffset8, kOffset4, kOffset2}; + QuicIetfStreamId stream_ids[] = {kStreamId4, kStreamId2, kStreamId1, + kStreamId0}; + + for (QuicIetfStreamId stream_id : stream_ids) { + for (QuicStreamOffset offset : offsets) { + memset(packet_buffer, 0, sizeof(packet_buffer)); + + // Set up the writer and transmit QuicWindowUpdateFrame + QuicDataWriter writer(sizeof(packet_buffer), packet_buffer, + quiche::NETWORK_BYTE_ORDER); + QuicBlockedFrame transmit_frame(0, stream_id, offset); + + // Add the frame. + EXPECT_TRUE(QuicFramerPeer::AppendStreamBlockedFrame( + &framer_, transmit_frame, &writer)); + + // Check that number of bytes in the buffer is in the expected range. + EXPECT_LE(2u, writer.length()); + EXPECT_GE(16u, writer.length()); + + // Set up reader and empty receive QuicPaddingFrame. + QuicDataReader reader(packet_buffer, writer.length(), + quiche::NETWORK_BYTE_ORDER); + QuicBlockedFrame receive_frame; + + // Deframe it + EXPECT_TRUE(QuicFramerPeer::ProcessStreamBlockedFrame(&framer_, &reader, + &receive_frame)); + + // Now check that received == sent + EXPECT_EQ(transmit_frame.offset, offset); + EXPECT_EQ(transmit_frame.offset, receive_frame.offset); + EXPECT_EQ(stream_id, receive_frame.stream_id); + EXPECT_EQ(transmit_frame.stream_id, receive_frame.stream_id); + } + } +} + +TEST_F(QuicIetfFramerTest, StreamsBlockedFrame) { + QuicStreamCount stream_counts[] = {0x3fffffff, 0x3fff, 0x3f, 0x1}; + + for (QuicStreamCount stream_count : stream_counts) { + TryStreamsBlockedFrame(stream_count, + /*unidirectional=*/false, + /*stream_id_server_initiated=*/false); + TryStreamsBlockedFrame(stream_count, + /*unidirectional=*/false, + /*stream_id_server_initiated=*/true); + TryStreamsBlockedFrame(stream_count, + /*unidirectional=*/true, + /*stream_id_server_initiated=*/false); + TryStreamsBlockedFrame(stream_count, + /*unidirectional=*/true, + /*stream_id_server_initiated=*/true); + } +} + +TEST_F(QuicIetfFramerTest, NewConnectionIdFrame) { + char packet_buffer[kNormalPacketBufferSize]; + + QuicNewConnectionIdFrame transmit_frame; + transmit_frame.connection_id = TestConnectionId(UINT64_C(0x0edcba9876543201)); + transmit_frame.sequence_number = 0x01020304; + transmit_frame.retire_prior_to = 0x00020304; + // The token is defined as a uint128 -- a 16-byte integer. + // The value is set in this manner because we want each + // byte to have a specific value so that the binary + // packet check (below) is good. If we used integer + // operations (eg. "token = 0x12345...") then the bytes + // would be set in host order. + unsigned char token_bytes[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, + 0x0c, 0x0d, 0x0e, 0x0f}; + memcpy(&transmit_frame.stateless_reset_token, token_bytes, + sizeof(transmit_frame.stateless_reset_token)); + + memset(packet_buffer, 0, sizeof(packet_buffer)); + + // Set up the writer and transmit a QuicNewConnectionIdFrame + QuicDataWriter writer(sizeof(packet_buffer), packet_buffer, + quiche::NETWORK_BYTE_ORDER); + + // Add the frame. + EXPECT_TRUE(QuicFramerPeer::AppendNewConnectionIdFrame( + &framer_, transmit_frame, &writer)); + // clang-format off + uint8_t packet[] = { + // sequence number, 0x80 for varint62 encoding + 0x80 + 0x01, 0x02, 0x03, 0x04, + // retire_prior_to, 0x80 for varint62 encoding + 0x80 + 0x00, 0x02, 0x03, 0x04, + // new connection id length, is not varint62 encoded. + 0x08, + // new connection id, is not varint62 encoded. + 0x0E, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x01, + // the reset token: + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f + }; + // clang-format on + + // Check that buffer length is correct + EXPECT_EQ(sizeof(packet), writer.length()); + EXPECT_EQ(0, memcmp(packet_buffer, packet, sizeof(packet))); + + // Set up reader and empty receive QuicPaddingFrame. + QuicDataReader reader(packet_buffer, writer.length(), + quiche::NETWORK_BYTE_ORDER); + QuicNewConnectionIdFrame receive_frame; + + // Deframe it + EXPECT_TRUE(QuicFramerPeer::ProcessNewConnectionIdFrame(&framer_, &reader, + &receive_frame)); + + // Now check that received == sent + EXPECT_EQ(transmit_frame.connection_id, receive_frame.connection_id); + EXPECT_EQ(transmit_frame.sequence_number, receive_frame.sequence_number); + EXPECT_EQ(transmit_frame.retire_prior_to, receive_frame.retire_prior_to); + EXPECT_EQ(transmit_frame.stateless_reset_token, + receive_frame.stateless_reset_token); +} + +TEST_F(QuicIetfFramerTest, RetireConnectionIdFrame) { + char packet_buffer[kNormalPacketBufferSize]; + + QuicRetireConnectionIdFrame transmit_frame; + transmit_frame.sequence_number = 0x01020304; + + memset(packet_buffer, 0, sizeof(packet_buffer)); + + // Set up the writer and transmit QuicRetireConnectionIdFrame + QuicDataWriter writer(sizeof(packet_buffer), packet_buffer, + quiche::NETWORK_BYTE_ORDER); + + // Add the frame. + EXPECT_TRUE(QuicFramerPeer::AppendRetireConnectionIdFrame( + &framer_, transmit_frame, &writer)); + // Check that buffer length is correct + EXPECT_EQ(4u, writer.length()); + // clang-format off + uint8_t packet[] = { + // sequence number, 0x80 for varint62 encoding + 0x80 + 0x01, 0x02, 0x03, 0x04, + }; + + // clang-format on + EXPECT_EQ(0, memcmp(packet_buffer, packet, sizeof(packet))); + + // Set up reader and empty receive QuicPaddingFrame. + QuicDataReader reader(packet_buffer, writer.length(), + quiche::NETWORK_BYTE_ORDER); + QuicRetireConnectionIdFrame receive_frame; + + // Deframe it + EXPECT_TRUE(QuicFramerPeer::ProcessRetireConnectionIdFrame(&framer_, &reader, + &receive_frame)); + + // Now check that received == sent + EXPECT_EQ(transmit_frame.sequence_number, receive_frame.sequence_number); +} + +} // namespace +} // namespace test +} // namespace quic
diff --git a/quic/core/quic_packet_creator.cc b/quic/core/quic_packet_creator.cc index b223205..3b1a77a 100644 --- a/quic/core/quic_packet_creator.cc +++ b/quic/core/quic_packet_creator.cc
@@ -27,9 +27,9 @@ #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_server_stats.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_str_cat.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_text_utils.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h" namespace quic { namespace { @@ -1047,16 +1047,16 @@ return VARIABLE_LENGTH_INTEGER_LENGTH_0; } -QuicStringPiece QuicPacketCreator::GetRetryToken() const { +quiche::QuicheStringPiece QuicPacketCreator::GetRetryToken() const { if (QuicVersionHasLongHeaderLengths(framer_->transport_version()) && HasIetfLongHeader() && EncryptionlevelToLongHeaderType(packet_.encryption_level) == INITIAL) { return retry_token_; } - return QuicStringPiece(); + return quiche::QuicheStringPiece(); } -void QuicPacketCreator::SetRetryToken(QuicStringPiece retry_token) { +void QuicPacketCreator::SetRetryToken(quiche::QuicheStringPiece retry_token) { retry_token_ = std::string(retry_token); } @@ -1436,8 +1436,8 @@ (packet_.encryption_level == ENCRYPTION_INITIAL || packet_.encryption_level == ENCRYPTION_HANDSHAKE)) { const std::string error_details = - QuicStrCat("Cannot send stream data with level: ", - EncryptionLevelToString(packet_.encryption_level)); + quiche::QuicheStrCat("Cannot send stream data with level: ", + EncryptionLevelToString(packet_.encryption_level)); QUIC_BUG << error_details; delegate_->OnUnrecoverableError( QUIC_ATTEMPT_TO_SEND_UNENCRYPTED_STREAM_DATA, error_details);
diff --git a/quic/core/quic_packet_creator.h b/quic/core/quic_packet_creator.h index eb7b627..96cd5bf 100644 --- a/quic/core/quic_packet_creator.h +++ b/quic/core/quic_packet_creator.h
@@ -26,6 +26,7 @@ #include "net/third_party/quiche/src/quic/core/quic_packets.h" #include "net/third_party/quiche/src/quic/core/quic_types.h" #include "net/third_party/quiche/src/quic/platform/api/quic_export.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { namespace test { @@ -286,7 +287,7 @@ void AddPendingPadding(QuicByteCount size); // Sets the retry token to be sent over the wire in IETF Initial packets. - void SetRetryToken(QuicStringPiece retry_token); + void SetRetryToken(quiche::QuicheStringPiece retry_token); // Consumes retransmittable control |frame|. Returns true if the frame is // successfully consumed. Returns false otherwise. @@ -510,7 +511,7 @@ // Returns the retry token to send over the wire, only sent in // v99 IETF Initial packets. - QuicStringPiece GetRetryToken() const; + quiche::QuicheStringPiece GetRetryToken() const; // Returns length of the length variable length integer to send over the // wire. Is non-zero for v99 IETF Initial, 0-RTT or Handshake packets.
diff --git a/quic/core/quic_packet_creator_test.cc b/quic/core/quic_packet_creator_test.cc index 6ca369c..56c62cb 100644 --- a/quic/core/quic_packet_creator_test.cc +++ b/quic/core/quic_packet_creator_test.cc
@@ -25,13 +25,14 @@ #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_socket_address.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/quic_framer_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_packet_creator_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h" #include "net/third_party/quiche/src/quic/test_tools/simple_data_producer.h" #include "net/third_party/quiche/src/quic/test_tools/simple_quic_framer.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" using testing::_; using testing::DoAll; @@ -64,8 +65,9 @@ // Used by ::testing::PrintToStringParamName(). std::string PrintToString(const TestParams& p) { - return QuicStrCat(ParsedQuicVersionToString(p.version), "_", - (p.version_serialization ? "Include" : "No"), "Version"); + return quiche::QuicheStrCat(ParsedQuicVersionToString(p.version), "_", + (p.version_serialization ? "Include" : "No"), + "Version"); } // Constructs various test permutations. @@ -234,7 +236,8 @@ producer_.WriteStreamData(stream_id, frame.stream_frame.offset, frame.stream_frame.data_length, &writer); } - EXPECT_EQ(data, QuicStringPiece(buf, frame.stream_frame.data_length)); + EXPECT_EQ(data, + quiche::QuicheStringPiece(buf, frame.stream_frame.data_length)); EXPECT_EQ(offset, frame.stream_frame.offset); EXPECT_EQ(fin, frame.stream_frame.fin); } @@ -311,11 +314,11 @@ QuicStreamId stream_id = QuicUtils::GetFirstBidirectionalStreamId( client_framer_.transport_version(), Perspective::IS_CLIENT); if (level != ENCRYPTION_INITIAL && level != ENCRYPTION_HANDSHAKE) { - frames_.push_back( - QuicFrame(QuicStreamFrame(stream_id, false, 0u, QuicStringPiece()))); + frames_.push_back(QuicFrame( + QuicStreamFrame(stream_id, false, 0u, quiche::QuicheStringPiece()))); if (!GetQuicRestartFlag(quic_coalesce_stream_frames_2)) { - frames_.push_back( - QuicFrame(QuicStreamFrame(stream_id, true, 0u, QuicStringPiece()))); + frames_.push_back(QuicFrame( + QuicStreamFrame(stream_id, true, 0u, quiche::QuicheStringPiece()))); } } SerializedPacket serialized = SerializeAllFrames(frames_); @@ -1337,7 +1340,7 @@ if (!QuicVersionUsesCryptoFrames(client_framer_.transport_version())) { QuicStreamFrame stream_frame( QuicUtils::GetCryptoStreamId(client_framer_.transport_version()), - /*fin=*/false, 0u, QuicStringPiece()); + /*fin=*/false, 0u, quiche::QuicheStringPiece()); frames_.push_back(QuicFrame(stream_frame)); } else { producer_.SaveCryptoData(ENCRYPTION_INITIAL, 0, data); @@ -1375,7 +1378,7 @@ if (!QuicVersionUsesCryptoFrames(client_framer_.transport_version())) { QuicStreamFrame stream_frame( QuicUtils::GetCryptoStreamId(client_framer_.transport_version()), - /*fin=*/false, 0u, QuicStringPiece()); + /*fin=*/false, 0u, quiche::QuicheStringPiece()); frames_.push_back(QuicFrame(stream_frame)); } else { producer_.SaveCryptoData(ENCRYPTION_INITIAL, 0, data); @@ -1595,7 +1598,7 @@ creator_.set_encryption_level(ENCRYPTION_INITIAL); EXPECT_CALL(delegate_, OnUnrecoverableError(_, _)); QuicStreamFrame stream_frame(GetNthClientInitiatedStreamId(0), - /*fin=*/false, 0u, QuicStringPiece()); + /*fin=*/false, 0u, quiche::QuicheStringPiece()); EXPECT_QUIC_BUG( creator_.AddFrame(QuicFrame(stream_frame), NOT_RETRANSMISSION), "Cannot send stream data with level: ENCRYPTION_INITIAL"); @@ -1610,7 +1613,7 @@ creator_.set_encryption_level(ENCRYPTION_HANDSHAKE); EXPECT_CALL(delegate_, OnUnrecoverableError(_, _)); QuicStreamFrame stream_frame(GetNthClientInitiatedStreamId(0), - /*fin=*/false, 0u, QuicStringPiece()); + /*fin=*/false, 0u, quiche::QuicheStringPiece()); EXPECT_QUIC_BUG( creator_.AddFrame(QuicFrame(stream_frame), NOT_RETRANSMISSION), "Cannot send stream data with level: ENCRYPTION_HANDSHAKE"); @@ -1637,8 +1640,9 @@ message_data = framer.ConstructHandshakeMessage(message); struct iovec iov; - MakeIOVector(QuicStringPiece(message_data->data(), message_data->length()), - &iov); + MakeIOVector( + quiche::QuicheStringPiece(message_data->data(), message_data->length()), + &iov); QuicFrame frame; EXPECT_CALL(delegate_, OnUnrecoverableError(QUIC_CRYPTO_CHLO_TOO_LARGE, _)); EXPECT_QUIC_BUG( @@ -1715,7 +1719,7 @@ .WillRepeatedly( Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); // Send stream frame of size kStreamFramePayloadSize. - MakeIOVector(QuicStringPiece(buf, kStreamFramePayloadSize), &iov_); + MakeIOVector(quiche::QuicheStringPiece(buf, kStreamFramePayloadSize), &iov_); creator_.ConsumeDataToFillCurrentPacket(stream_id, &iov_, 1u, iov_.iov_len, 0u, 0u, false, false, NOT_RETRANSMISSION, &frame); @@ -1723,7 +1727,8 @@ // 1 byte padding is sent. EXPECT_EQ(pending_padding_bytes - 1, creator_.pending_padding_bytes()); // Send stream frame of size kStreamFramePayloadSize + 1. - MakeIOVector(QuicStringPiece(buf, kStreamFramePayloadSize + 1), &iov_); + MakeIOVector(quiche::QuicheStringPiece(buf, kStreamFramePayloadSize + 1), + &iov_); creator_.ConsumeDataToFillCurrentPacket(stream_id, &iov_, 1u, iov_.iov_len, 0u, kStreamFramePayloadSize, false, false, NOT_RETRANSMISSION, &frame); @@ -1829,7 +1834,7 @@ return; } std::string message_data(kDefaultMaxPacketSize, 'a'); - QuicStringPiece message_buffer(message_data); + quiche::QuicheStringPiece message_buffer(message_data); QuicMemSliceStorage storage(nullptr, 0, nullptr, 0); // Test all possible encryption levels of message frames. for (EncryptionLevel level : @@ -1840,9 +1845,10 @@ message_size <= creator_.GetCurrentLargestMessagePayload(); ++message_size) { QuicMessageFrame* frame = new QuicMessageFrame( - 0, MakeSpan(&allocator_, - QuicStringPiece(message_buffer.data(), message_size), - &storage)); + 0, MakeSpan( + &allocator_, + quiche::QuicheStringPiece(message_buffer.data(), message_size), + &storage)); EXPECT_TRUE(creator_.AddFrame(QuicFrame(frame), NOT_RETRANSMISSION)); EXPECT_TRUE(creator_.HasPendingFrames()); @@ -1895,7 +1901,8 @@ QuicStreamId stream_id = QuicUtils::GetFirstBidirectionalStreamId( client_framer_.transport_version(), Perspective::IS_CLIENT); QuicFrame stream_frame(QuicStreamFrame(stream_id, - /*fin=*/false, 0u, QuicStringPiece())); + /*fin=*/false, 0u, + quiche::QuicheStringPiece())); ASSERT_TRUE(QuicUtils::IsRetransmittableFrame(stream_frame.type)); QuicFrame padding_frame{QuicPaddingFrame()}; @@ -1936,7 +1943,7 @@ if (!QuicVersionUsesCryptoFrames(client_framer_.transport_version())) { QuicStreamFrame stream_frame( QuicUtils::GetCryptoStreamId(client_framer_.transport_version()), - /*fin=*/false, 0u, QuicStringPiece()); + /*fin=*/false, 0u, quiche::QuicheStringPiece()); frames_.push_back(QuicFrame(stream_frame)); } else { producer_.SaveCryptoData(ENCRYPTION_INITIAL, 0, data); @@ -2105,8 +2112,8 @@ QuicAckFrame ack_frame(InitAckFrame(1)); frames_.push_back(QuicFrame(&ack_frame)); if (level != ENCRYPTION_INITIAL && level != ENCRYPTION_HANDSHAKE) { - frames_.push_back( - QuicFrame(QuicStreamFrame(1, false, 0u, QuicStringPiece()))); + frames_.push_back(QuicFrame( + QuicStreamFrame(1, false, 0u, quiche::QuicheStringPiece()))); } SerializedPacket serialized = SerializeAllFrames(frames_); EXPECT_EQ(level, serialized.encryption_level); @@ -2365,7 +2372,7 @@ } size_t ConsumeCryptoData(EncryptionLevel level, - QuicStringPiece data, + quiche::QuicheStringPiece data, QuicStreamOffset offset) { producer_->SaveCryptoData(level, offset, data); if (!has_ack() && delegate_->ShouldGeneratePacket(NO_RETRANSMITTABLE_DATA, @@ -3495,7 +3502,7 @@ ConnectionCloseFrameLargerThanPacketSize) { delegate_.SetCanWriteAnything(); char buf[2000] = {}; - QuicStringPiece error_details(buf, 2000); + quiche::QuicheStringPiece error_details(buf, 2000); const QuicErrorCode kQuicErrorCode = QUIC_PACKET_WRITE_ERROR; QuicConnectionCloseFrame* frame = new QuicConnectionCloseFrame( @@ -3535,7 +3542,7 @@ EXPECT_CALL(delegate_, OnSerializedPacket(_)) .WillOnce( Invoke(this, &QuicPacketCreatorMultiplePacketsTest::SavePacket)); - MakeIOVector(QuicStringPiece(buf, kStreamFramePayloadSize), &iov_); + MakeIOVector(quiche::QuicheStringPiece(buf, kStreamFramePayloadSize), &iov_); QuicConsumedData consumed = creator_.ConsumeData( kDataStreamId, &iov_, 1u, iov_.iov_len, 0, FIN_AND_PADDING); creator_.Flush(); @@ -3578,7 +3585,7 @@ EXPECT_CALL(delegate_, OnSerializedPacket(_)) .WillRepeatedly( Invoke(this, &QuicPacketCreatorMultiplePacketsTest::SavePacket)); - MakeIOVector(QuicStringPiece(buf, kStreamFramePayloadSize), &iov_); + MakeIOVector(quiche::QuicheStringPiece(buf, kStreamFramePayloadSize), &iov_); QuicConsumedData consumed = creator_.ConsumeData( kDataStreamId, &iov_, 1u, iov_.iov_len, 0, FIN_AND_PADDING); creator_.Flush(); @@ -3633,11 +3640,11 @@ EXPECT_CALL(delegate_, OnSerializedPacket(_)) .WillRepeatedly( Invoke(this, &QuicPacketCreatorMultiplePacketsTest::SavePacket)); - MakeIOVector(QuicStringPiece(buf, kStreamFramePayloadSize), &iov_); + MakeIOVector(quiche::QuicheStringPiece(buf, kStreamFramePayloadSize), &iov_); QuicConsumedData consumed = creator_.ConsumeData( kDataStreamId1, &iov_, 1u, iov_.iov_len, 0, FIN_AND_PADDING); EXPECT_EQ(kStreamFramePayloadSize, consumed.bytes_consumed); - MakeIOVector(QuicStringPiece(buf, kStreamFramePayloadSize), &iov_); + MakeIOVector(quiche::QuicheStringPiece(buf, kStreamFramePayloadSize), &iov_); consumed = creator_.ConsumeData(kDataStreamId2, &iov_, 1u, iov_.iov_len, 0, FIN_AND_PADDING); EXPECT_EQ(kStreamFramePayloadSize, consumed.bytes_consumed);
diff --git a/quic/core/quic_packets.cc b/quic/core/quic_packets.cc index 87b310e..41ada82 100644 --- a/quic/core/quic_packets.cc +++ b/quic/core/quic_packets.cc
@@ -12,10 +12,10 @@ #include "net/third_party/quiche/src/quic/core/quic_versions.h" #include "net/third_party/quiche/src/quic/platform/api/quic_flag_utils.h" #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_str_cat.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" #include "net/third_party/quiche/src/quic/platform/api/quic_string_utils.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_text_utils.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h" namespace quic { @@ -185,7 +185,7 @@ long_packet_type(INITIAL), possible_stateless_reset_token(0), retry_token_length_length(VARIABLE_LENGTH_INTEGER_LENGTH_0), - retry_token(QuicStringPiece()), + retry_token(quiche::QuicheStringPiece()), length_length(VARIABLE_LENGTH_INTEGER_LENGTH_0), remaining_packet_length(0) {} @@ -259,8 +259,8 @@ } if (header.nonce != nullptr) { os << ", diversification_nonce: " - << QuicTextUtils::HexEncode( - QuicStringPiece(header.nonce->data(), header.nonce->size())); + << quiche::QuicheTextUtils::HexEncode(quiche::QuicheStringPiece( + header.nonce->data(), header.nonce->size())); } os << ", packet_number: " << header.packet_number << " }\n"; return os; @@ -272,7 +272,7 @@ QuicData::QuicData(const char* buffer, size_t length, bool owns_buffer) : buffer_(buffer), length_(length), owns_buffer_(owns_buffer) {} -QuicData::QuicData(QuicStringPiece packet_data) +QuicData::QuicData(quiche::QuicheStringPiece packet_data) : buffer_(packet_data.data()), length_(packet_data.length()), owns_buffer_(false) {} @@ -331,7 +331,7 @@ bool owns_buffer) : QuicData(buffer, length, owns_buffer) {} -QuicEncryptedPacket::QuicEncryptedPacket(QuicStringPiece data) +QuicEncryptedPacket::QuicEncryptedPacket(quiche::QuicheStringPiece data) : QuicData(data) {} std::unique_ptr<QuicEncryptedPacket> QuicEncryptedPacket::Clone() const { @@ -422,8 +422,9 @@ return os; } -QuicStringPiece QuicPacket::AssociatedData(QuicTransportVersion version) const { - return QuicStringPiece( +quiche::QuicheStringPiece QuicPacket::AssociatedData( + QuicTransportVersion version) const { + return quiche::QuicheStringPiece( data(), GetStartOfEncryptedData(version, destination_connection_id_length_, source_connection_id_length_, includes_version_, @@ -432,13 +433,14 @@ retry_token_length_, length_length_)); } -QuicStringPiece QuicPacket::Plaintext(QuicTransportVersion version) const { +quiche::QuicheStringPiece QuicPacket::Plaintext( + QuicTransportVersion version) const { const size_t start_of_encrypted_data = GetStartOfEncryptedData( version, destination_connection_id_length_, source_connection_id_length_, includes_version_, includes_diversification_nonce_, packet_number_length_, retry_token_length_length_, retry_token_length_, length_length_); - return QuicStringPiece(data() + start_of_encrypted_data, - length() - start_of_encrypted_data); + return quiche::QuicheStringPiece(data() + start_of_encrypted_data, + length() - start_of_encrypted_data); } SerializedPacket::SerializedPacket(QuicPacketNumber packet_number, @@ -551,11 +553,11 @@ ReceivedPacketInfo::~ReceivedPacketInfo() {} std::string ReceivedPacketInfo::ToString() const { - std::string output = - QuicStrCat("{ self_address: ", self_address.ToString(), - ", peer_address: ", peer_address.ToString(), - ", packet_length: ", packet.length(), - ", header_format: ", form, ", version_flag: ", version_flag); + std::string output = quiche::QuicheStrCat( + "{ self_address: ", self_address.ToString(), + ", peer_address: ", peer_address.ToString(), + ", packet_length: ", packet.length(), ", header_format: ", form, + ", version_flag: ", version_flag); if (version_flag) { QuicStrAppend(&output, ", version: ", ParsedQuicVersionToString(version)); }
diff --git a/quic/core/quic_packets.h b/quic/core/quic_packets.h index 93417ac..9e97fa9 100644 --- a/quic/core/quic_packets.h +++ b/quic/core/quic_packets.h
@@ -24,8 +24,8 @@ #include "net/third_party/quiche/src/quic/core/quic_versions.h" #include "net/third_party/quiche/src/quic/platform/api/quic_export.h" #include "net/third_party/quiche/src/quic/platform/api/quic_socket_address.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" #include "net/third_party/quiche/src/quic/platform/api/quic_uint128.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { @@ -158,7 +158,7 @@ // carried only by v99 IETF Initial packets. QuicVariableLengthIntegerLength retry_token_length_length; // Retry token, carried only by v99 IETF Initial packets. - QuicStringPiece retry_token; + quiche::QuicheStringPiece retry_token; // Length of the length variable length integer field, // carried only by v99 IETF Initial, 0-RTT and Handshake packets. QuicVariableLengthIntegerLength length_length; @@ -209,14 +209,15 @@ // Creates a QuicData from a buffer and length, // optionally taking ownership of the buffer. QuicData(const char* buffer, size_t length, bool owns_buffer); - // Creates a QuicData from a QuicStringPiece. Does not own the buffer. - QuicData(QuicStringPiece data); + // Creates a QuicData from a quiche::QuicheStringPiece. Does not own the + // buffer. + QuicData(quiche::QuicheStringPiece data); QuicData(const QuicData&) = delete; QuicData& operator=(const QuicData&) = delete; virtual ~QuicData(); - QuicStringPiece AsStringPiece() const { - return QuicStringPiece(data(), length()); + quiche::QuicheStringPiece AsStringPiece() const { + return quiche::QuicheStringPiece(data(), length()); } const char* data() const { return buffer_; } @@ -249,8 +250,8 @@ QuicPacket(const QuicPacket&) = delete; QuicPacket& operator=(const QuicPacket&) = delete; - QuicStringPiece AssociatedData(QuicTransportVersion version) const; - QuicStringPiece Plaintext(QuicTransportVersion version) const; + quiche::QuicheStringPiece AssociatedData(QuicTransportVersion version) const; + quiche::QuicheStringPiece Plaintext(QuicTransportVersion version) const; char* mutable_data() { return buffer_; } @@ -274,9 +275,9 @@ // Creates a QuicEncryptedPacket from a buffer and length, // optionally taking ownership of the buffer. QuicEncryptedPacket(const char* buffer, size_t length, bool owns_buffer); - // Creates a QuicEncryptedPacket from a QuicStringPiece. + // Creates a QuicEncryptedPacket from a quiche::QuicheStringPiece. // Does not own the buffer. - QuicEncryptedPacket(QuicStringPiece data); + QuicEncryptedPacket(quiche::QuicheStringPiece data); QuicEncryptedPacket(const QuicEncryptedPacket&) = delete; QuicEncryptedPacket& operator=(const QuicEncryptedPacket&) = delete;
diff --git a/quic/core/quic_sent_packet_manager_test.cc b/quic/core/quic_sent_packet_manager_test.cc index 625ba99..fd130fa 100644 --- a/quic/core/quic_sent_packet_manager_test.cc +++ b/quic/core/quic_sent_packet_manager_test.cc
@@ -9,11 +9,11 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_arraysize.h" #include "net/third_party/quiche/src/quic/platform/api/quic_flags.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/quic_config_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_sent_packet_manager_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" using testing::_; using testing::AnyNumber; @@ -61,7 +61,7 @@ kDefaultLength, HAS_RETRANSMITTABLE_DATA)); SerializedPacket packet(CreatePacket(packet_number, false)); packet.retransmittable_frames.push_back( - QuicFrame(QuicStreamFrame(1, false, 0, QuicStringPiece()))); + QuicFrame(QuicStreamFrame(1, false, 0, quiche::QuicheStringPiece()))); packet.has_crypto_handshake = IS_HANDSHAKE; manager_.OnPacketSent(&packet, clock_.Now(), HANDSHAKE_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); @@ -244,8 +244,8 @@ PACKET_4BYTE_PACKET_NUMBER, nullptr, kDefaultLength, false, false); if (retransmittable) { - packet.retransmittable_frames.push_back( - QuicFrame(QuicStreamFrame(kStreamId, false, 0, QuicStringPiece()))); + packet.retransmittable_frames.push_back(QuicFrame( + QuicStreamFrame(kStreamId, false, 0, quiche::QuicheStringPiece()))); } return packet; } @@ -291,7 +291,7 @@ kDefaultLength, HAS_RETRANSMITTABLE_DATA)); SerializedPacket packet(CreatePacket(packet_number, false)); packet.retransmittable_frames.push_back( - QuicFrame(QuicStreamFrame(1, false, 0, QuicStringPiece()))); + QuicFrame(QuicStreamFrame(1, false, 0, quiche::QuicheStringPiece()))); packet.has_crypto_handshake = IS_HANDSHAKE; manager_.OnPacketSent(&packet, clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); @@ -3167,7 +3167,7 @@ TEST_F(QuicSentPacketManagerTest, RtoNotInFlightPacket) { QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); // Send SHLO. - QuicStreamFrame crypto_frame(1, false, 0, QuicStringPiece()); + QuicStreamFrame crypto_frame(1, false, 0, quiche::QuicheStringPiece()); SendCryptoPacket(1); // Send data packet. SendDataPacket(2, ENCRYPTION_FORWARD_SECURE);
diff --git a/quic/core/quic_server_id.cc b/quic/core/quic_server_id.cc index 6a4e56f..653152d 100644 --- a/quic/core/quic_server_id.cc +++ b/quic/core/quic_server_id.cc
@@ -8,7 +8,6 @@ #include <tuple> #include "net/third_party/quiche/src/quic/platform/api/quic_estimate_memory_usage.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_str_cat.h" namespace quic {
diff --git a/quic/core/quic_session.cc b/quic/core/quic_session.cc index 60fea01..9a0bae6 100644 --- a/quic/core/quic_session.cc +++ b/quic/core/quic_session.cc
@@ -22,7 +22,8 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h" #include "net/third_party/quiche/src/quic/platform/api/quic_server_stats.h" #include "net/third_party/quiche/src/quic/platform/api/quic_stack_trace.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" using spdy::SpdyPriority; @@ -367,7 +368,7 @@ goaway_received_ = true; } -void QuicSession::OnMessageReceived(QuicStringPiece message) { +void QuicSession::OnMessageReceived(quiche::QuicheStringPiece message) { QUIC_DVLOG(1) << ENDPOINT << "Received message, length: " << message.length() << ", " << message; } @@ -1573,8 +1574,8 @@ if (!stream_id_manager_.MaybeIncreaseLargestPeerStreamId(stream_id)) { connection()->CloseConnection( QUIC_TOO_MANY_AVAILABLE_STREAMS, - QuicStrCat(stream_id, " exceeds available streams ", - stream_id_manager_.MaxAvailableStreams()), + quiche::QuicheStrCat(stream_id, " exceeds available streams ", + stream_id_manager_.MaxAvailableStreams()), ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET); return false; } @@ -2145,13 +2146,13 @@ return stream_id_manager_.max_open_incoming_streams(); } -std::vector<QuicStringPiece>::const_iterator QuicSession::SelectAlpn( - const std::vector<QuicStringPiece>& alpns) const { +std::vector<quiche::QuicheStringPiece>::const_iterator QuicSession::SelectAlpn( + const std::vector<quiche::QuicheStringPiece>& alpns) const { const std::string alpn = AlpnForVersion(connection()->version()); return std::find(alpns.cbegin(), alpns.cend(), alpn); } -void QuicSession::OnAlpnSelected(QuicStringPiece alpn) { +void QuicSession::OnAlpnSelected(quiche::QuicheStringPiece alpn) { QUIC_DLOG(INFO) << (perspective() == Perspective::IS_SERVER ? "Server: " : "Client: ") << "ALPN selected: " << alpn;
diff --git a/quic/core/quic_session.h b/quic/core/quic_session.h index eb9cdfe..f526a62 100644 --- a/quic/core/quic_session.h +++ b/quic/core/quic_session.h
@@ -31,6 +31,7 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_containers.h" #include "net/third_party/quiche/src/quic/platform/api/quic_export.h" #include "net/third_party/quiche/src/quic/platform/api/quic_socket_address.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { @@ -104,7 +105,7 @@ void OnCryptoFrame(const QuicCryptoFrame& frame) override; void OnRstStream(const QuicRstStreamFrame& frame) override; void OnGoAway(const QuicGoAwayFrame& frame) override; - void OnMessageReceived(QuicStringPiece message) override; + void OnMessageReceived(quiche::QuicheStringPiece message) override; void OnWindowUpdateFrame(const QuicWindowUpdateFrame& frame) override; void OnBlockedFrame(const QuicBlockedFrame& frame) override; void OnConnectionClosed(const QuicConnectionCloseFrame& frame, @@ -491,12 +492,12 @@ // Provided a list of ALPNs offered by the client, selects an ALPN from the // list, or alpns.end() if none of the ALPNs are acceptable. - virtual std::vector<QuicStringPiece>::const_iterator SelectAlpn( - const std::vector<QuicStringPiece>& alpns) const; + virtual std::vector<quiche::QuicheStringPiece>::const_iterator SelectAlpn( + const std::vector<quiche::QuicheStringPiece>& alpns) const; // Called when the ALPN of the connection is established for a connection that // uses TLS handshake. - virtual void OnAlpnSelected(QuicStringPiece alpn); + virtual void OnAlpnSelected(quiche::QuicheStringPiece alpn); protected: using StreamMap = QuicSmallMap<QuicStreamId, std::unique_ptr<QuicStream>, 10>;
diff --git a/quic/core/quic_session_test.cc b/quic/core/quic_session_test.cc index 5c04379..ee3695a 100644 --- a/quic/core/quic_session_test.cc +++ b/quic/core/quic_session_test.cc
@@ -25,8 +25,6 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_map_util.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_str_cat.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/platform/api/quic_test_mem_slice_vector.h" #include "net/third_party/quiche/src/quic/test_tools/mock_quic_session_visitor.h" @@ -38,6 +36,8 @@ #include "net/third_party/quiche/src/quic/test_tools/quic_stream_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_stream_send_buffer_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" using spdy::kV3HighestPriority; using spdy::SpdyPriority; @@ -858,8 +858,8 @@ EXPECT_CALL(*connection_, SendControlFrame(_)); EXPECT_CALL(*connection_, OnStreamReset(closed_stream_id, _)); stream2->Reset(QUIC_BAD_APPLICATION_PAYLOAD); - std::string msg = - QuicStrCat("Marking unknown stream ", closed_stream_id, " blocked."); + std::string msg = quiche::QuicheStrCat("Marking unknown stream ", + closed_stream_id, " blocked."); EXPECT_QUIC_BUG(session_.MarkConnectionLevelWriteBlocked(closed_stream_id), msg); } @@ -1449,7 +1449,8 @@ /*is_static*/ true, BIDIRECTIONAL); QuicSessionPeer::ActivateStream(&session_, std::move(fake_headers_stream)); // Send two bytes of payload. - QuicStreamFrame data1(headers_stream_id, true, 0, QuicStringPiece("HT")); + QuicStreamFrame data1(headers_stream_id, true, 0, + quiche::QuicheStringPiece("HT")); EXPECT_CALL(*connection_, CloseConnection( QUIC_INVALID_STREAM_ID, "Attempt to close a static stream", @@ -1482,7 +1483,7 @@ // Send two bytes of payload. QuicStreamFrame data1( QuicUtils::GetInvalidStreamId(connection_->transport_version()), true, 0, - QuicStringPiece("HT")); + quiche::QuicheStringPiece("HT")); EXPECT_CALL(*connection_, CloseConnection( QUIC_INVALID_STREAM_ID, "Received data for an invalid stream", @@ -1672,7 +1673,8 @@ // account the total number of bytes sent by the peer. const QuicStreamOffset kByteOffset = 5678; std::string body = "hello"; - QuicStreamFrame frame(stream->id(), true, kByteOffset, QuicStringPiece(body)); + QuicStreamFrame frame(stream->id(), true, kByteOffset, + quiche::QuicheStringPiece(body)); session_.OnStreamFrame(frame); QuicStreamOffset total_stream_bytes_sent_by_peer = @@ -1775,7 +1777,8 @@ EXPECT_CALL(*connection_, SendControlFrame(_)); EXPECT_CALL(*connection_, OnStreamReset(stream->id(), _)); stream->Reset(QUIC_STREAM_CANCELLED); - QuicStreamFrame frame(stream->id(), true, kLargeOffset, QuicStringPiece()); + QuicStreamFrame frame(stream->id(), true, kLargeOffset, + quiche::QuicheStringPiece()); session_.OnStreamFrame(frame); // Check that RST results in connection close. @@ -1802,7 +1805,7 @@ // FIN or a RST_STREAM from the client. for (QuicStreamId i = kFirstStreamId; i < kFinalStreamId; i += QuicUtils::StreamIdDelta(connection_->transport_version())) { - QuicStreamFrame data1(i, false, 0, QuicStringPiece("HT")); + QuicStreamFrame data1(i, false, 0, quiche::QuicheStringPiece("HT")); session_.OnStreamFrame(data1); // EXPECT_EQ(1u, session_.GetNumOpenStreams()); if (VersionHasIetfQuicFrames(transport_version())) { @@ -1833,7 +1836,8 @@ .Times(1); } // Create one more data streams to exceed limit of open stream. - QuicStreamFrame data1(kFinalStreamId, false, 0, QuicStringPiece("HT")); + QuicStreamFrame data1(kFinalStreamId, false, 0, + quiche::QuicheStringPiece("HT")); session_.OnStreamFrame(data1); } @@ -1843,7 +1847,7 @@ // protocol point of view). TestStream* stream = session_.CreateOutgoingBidirectionalStream(); QuicStreamId stream_id = stream->id(); - QuicStreamFrame data1(stream_id, true, 0, QuicStringPiece("HT")); + QuicStreamFrame data1(stream_id, true, 0, quiche::QuicheStringPiece("HT")); session_.OnStreamFrame(data1); EXPECT_CALL(session_, OnCanCreateNewOutgoingStream(false)).Times(1); session_.StreamDraining(stream_id); @@ -1854,11 +1858,11 @@ QuicStreamId stream_id = QuicUtils::GetFirstUnidirectionalStreamId( transport_version(), Perspective::IS_CLIENT); - QuicStreamFrame data1(stream_id, true, 10, QuicStringPiece("HT")); + QuicStreamFrame data1(stream_id, true, 10, quiche::QuicheStringPiece("HT")); session_.OnStreamFrame(data1); EXPECT_EQ(1, session_.num_incoming_streams_created()); - QuicStreamFrame data2(stream_id, false, 0, QuicStringPiece("HT")); + QuicStreamFrame data2(stream_id, false, 0, quiche::QuicheStringPiece("HT")); session_.OnStreamFrame(data2); EXPECT_EQ(1, session_.num_incoming_streams_created()); } @@ -1871,12 +1875,12 @@ QuicStreamId stream_id = QuicUtils::GetFirstUnidirectionalStreamId( transport_version(), Perspective::IS_CLIENT); - QuicStreamFrame data1(stream_id, true, 10, QuicStringPiece("HT")); + QuicStreamFrame data1(stream_id, true, 10, quiche::QuicheStringPiece("HT")); session_.OnStreamFrame(data1); EXPECT_TRUE(QuicSessionPeer::GetPendingStream(&session_, stream_id)); EXPECT_EQ(0, session_.num_incoming_streams_created()); - QuicStreamFrame data2(stream_id, false, 0, QuicStringPiece("HT")); + QuicStreamFrame data2(stream_id, false, 0, quiche::QuicheStringPiece("HT")); session_.OnStreamFrame(data2); EXPECT_FALSE(QuicSessionPeer::GetPendingStream(&session_, stream_id)); EXPECT_EQ(1, session_.num_incoming_streams_created()); @@ -1890,7 +1894,7 @@ QuicStreamId stream_id = QuicUtils::GetFirstUnidirectionalStreamId( transport_version(), Perspective::IS_CLIENT); - QuicStreamFrame data1(stream_id, true, 10, QuicStringPiece("HT")); + QuicStreamFrame data1(stream_id, true, 10, quiche::QuicheStringPiece("HT")); session_.OnStreamFrame(data1); EXPECT_TRUE(QuicSessionPeer::GetPendingStream(&session_, stream_id)); EXPECT_EQ(0, session_.num_incoming_streams_created()); @@ -1903,7 +1907,7 @@ EXPECT_EQ(0, session_.num_incoming_streams_created()); EXPECT_EQ(0u, session_.GetNumOpenIncomingStreams()); - QuicStreamFrame data2(stream_id, false, 0, QuicStringPiece("HT")); + QuicStreamFrame data2(stream_id, false, 0, quiche::QuicheStringPiece("HT")); session_.OnStreamFrame(data2); EXPECT_FALSE(QuicSessionPeer::GetPendingStream(&session_, stream_id)); EXPECT_EQ(0, session_.num_incoming_streams_created()); @@ -1934,7 +1938,7 @@ session_.set_uses_pending_streams(true); QuicStreamId stream_id = QuicUtils::GetFirstUnidirectionalStreamId( transport_version(), Perspective::IS_CLIENT); - QuicStreamFrame data1(stream_id, true, 10, QuicStringPiece("HT")); + QuicStreamFrame data1(stream_id, true, 10, quiche::QuicheStringPiece("HT")); session_.OnStreamFrame(data1); EXPECT_TRUE(QuicSessionPeer::GetPendingStream(&session_, stream_id)); EXPECT_EQ(0, session_.num_incoming_streams_created()); @@ -1974,7 +1978,7 @@ GetNthClientInitiatedBidirectionalId(2 * kMaxStreams + 1); for (QuicStreamId i = kFirstStreamId; i < kFinalStreamId; i += QuicUtils::StreamIdDelta(connection_->transport_version())) { - QuicStreamFrame data1(i, true, 0, QuicStringPiece("HT")); + QuicStreamFrame data1(i, true, 0, quiche::QuicheStringPiece("HT")); session_.OnStreamFrame(data1); EXPECT_EQ(1u, session_.GetNumOpenIncomingStreams()); session_.StreamDraining(i); @@ -2039,7 +2043,7 @@ QuicStreamPeer::CloseReadSide(stream); // Receive a stream data frame with FIN. - QuicStreamFrame frame(stream_id, true, 0, QuicStringPiece()); + QuicStreamFrame frame(stream_id, true, 0, quiche::QuicheStringPiece()); session_.OnStreamFrame(frame); EXPECT_TRUE(stream->fin_received()); @@ -2346,7 +2350,7 @@ session_.GetMutableCryptoStream()->OnHandshakeMessage(handshake_message); EXPECT_TRUE(session_.IsCryptoHandshakeConfirmed()); - QuicStringPiece message; + quiche::QuicheStringPiece message; EXPECT_CALL(*connection_, SendMessage(1, _, false)) .WillOnce(Return(MESSAGE_STATUS_SUCCESS)); EXPECT_EQ(MessageResult(MESSAGE_STATUS_SUCCESS, 1),
diff --git a/quic/core/quic_stream.cc b/quic/core/quic_stream.cc index 1c70f48..a440a13 100644 --- a/quic/core/quic_stream.cc +++ b/quic/core/quic_stream.cc
@@ -15,7 +15,8 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_flag_utils.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_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" using spdy::SpdyPriority; @@ -179,7 +180,7 @@ if (frame.offset + frame.data_length > sequencer_.close_offset()) { CloseConnectionWithDetails( QUIC_STREAM_DATA_BEYOND_CLOSE_OFFSET, - QuicStrCat( + quiche::QuicheStrCat( "Stream ", id_, " received data with offset: ", frame.offset + frame.data_length, ", which is beyond close offset: ", sequencer()->close_offset())); @@ -228,10 +229,10 @@ frame.byte_offset != sequencer()->close_offset()) { CloseConnectionWithDetails( QUIC_STREAM_MULTIPLE_OFFSET, - QuicStrCat("Stream ", id_, - " received new final offset: ", frame.byte_offset, - ", which is different from close offset: ", - sequencer()->close_offset())); + quiche::QuicheStrCat("Stream ", id_, + " received new final offset: ", frame.byte_offset, + ", which is different from close offset: ", + sequencer()->close_offset())); return; } @@ -415,16 +416,17 @@ << sequencer_.DebugString(); CloseConnectionWithDetails( QUIC_STREAM_LENGTH_OVERFLOW, - QuicStrCat("Peer sends more data than allowed on stream ", id_, - ". frame: offset = ", frame.offset, ", length = ", - frame.data_length, ". ", sequencer_.DebugString())); + quiche::QuicheStrCat("Peer sends more data than allowed on stream ", + id_, ". frame: offset = ", frame.offset, + ", length = ", frame.data_length, ". ", + sequencer_.DebugString())); return; } if (frame.offset + frame.data_length > sequencer_.close_offset()) { CloseConnectionWithDetails( QUIC_STREAM_DATA_BEYOND_CLOSE_OFFSET, - QuicStrCat( + quiche::QuicheStrCat( "Stream ", id_, " received data with offset: ", frame.offset + frame.data_length, ", which is beyond close offset: ", sequencer_.close_offset())); @@ -491,10 +493,10 @@ frame.byte_offset != sequencer()->close_offset()) { CloseConnectionWithDetails( QUIC_STREAM_MULTIPLE_OFFSET, - QuicStrCat("Stream ", id_, - " received new final offset: ", frame.byte_offset, - ", which is different from close offset: ", - sequencer_.close_offset())); + quiche::QuicheStrCat("Stream ", id_, + " received new final offset: ", frame.byte_offset, + ", which is different from close offset: ", + sequencer_.close_offset())); return; } @@ -564,7 +566,7 @@ } void QuicStream::WriteOrBufferData( - QuicStringPiece data, + quiche::QuicheStringPiece data, bool fin, QuicReferenceCountedPointer<QuicAckListenerInterface> ack_listener) { if (data.empty() && !fin) { @@ -599,7 +601,7 @@ QUIC_BUG << "Write too many data via stream " << id_; CloseConnectionWithDetails( QUIC_STREAM_LENGTH_OVERFLOW, - QuicStrCat("Write too many data via stream ", id_)); + quiche::QuicheStrCat("Write too many data via stream ", id_)); return; } send_buffer_.SaveStreamData(&iov, 1, 0, data.length()); @@ -694,7 +696,7 @@ QUIC_BUG << "Write too many data via stream " << id_; CloseConnectionWithDetails( QUIC_STREAM_LENGTH_OVERFLOW, - QuicStrCat("Write too many data via stream ", id_)); + quiche::QuicheStrCat("Write too many data via stream ", id_)); return consumed_data; } OnDataBuffered(offset, consumed_data.bytes_consumed, nullptr);
diff --git a/quic/core/quic_stream.h b/quic/core/quic_stream.h index c936bc7..42bdb5c 100644 --- a/quic/core/quic_stream.h +++ b/quic/core/quic_stream.h
@@ -32,7 +32,7 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_mem_slice_span.h" #include "net/third_party/quiche/src/quic/platform/api/quic_optional.h" #include "net/third_party/quiche/src/quic/platform/api/quic_reference_counted.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" #include "net/third_party/quiche/src/spdy/core/spdy_protocol.h" namespace quic { @@ -269,7 +269,7 @@ // If fin is true: if it is immediately passed on to the session, // write_side_closed() becomes true, otherwise fin_buffered_ becomes true. void WriteOrBufferData( - QuicStringPiece data, + quiche::QuicheStringPiece data, bool fin, QuicReferenceCountedPointer<QuicAckListenerInterface> ack_listener);
diff --git a/quic/core/quic_stream_id_manager.cc b/quic/core/quic_stream_id_manager.cc index 0d570d2..aa5cabf 100644 --- a/quic/core/quic_stream_id_manager.cc +++ b/quic/core/quic_stream_id_manager.cc
@@ -12,7 +12,7 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_flag_utils.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_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" namespace quic { @@ -260,10 +260,10 @@ << "Failed to create a new incoming stream with id:" << stream_id << ", reaching MAX_STREAMS limit: " << incoming_advertised_max_streams_ << "."; - delegate_->OnError( - QUIC_INVALID_STREAM_ID, - QuicStrCat("Stream id ", stream_id, " would exceed stream count limit ", - incoming_advertised_max_streams_)); + delegate_->OnError(QUIC_INVALID_STREAM_ID, + quiche::QuicheStrCat("Stream id ", stream_id, + " would exceed stream count limit ", + incoming_advertised_max_streams_)); return false; }
diff --git a/quic/core/quic_stream_id_manager.h b/quic/core/quic_stream_id_manager.h index f1b6556..201f6a1 100644 --- a/quic/core/quic_stream_id_manager.h +++ b/quic/core/quic_stream_id_manager.h
@@ -8,7 +8,7 @@ #include "net/third_party/quiche/src/quic/core/quic_types.h" #include "net/third_party/quiche/src/quic/core/quic_versions.h" #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" namespace quic { @@ -66,7 +66,7 @@ // Generate a string suitable for sending to the log/etc to show current state // of the stream ID manager. std::string DebugString() const { - return QuicStrCat( + return quiche::QuicheStrCat( " { unidirectional_: ", unidirectional_, ", perspective: ", perspective(), ", outgoing_max_streams_: ", outgoing_max_streams_,
diff --git a/quic/core/quic_stream_id_manager_test.cc b/quic/core/quic_stream_id_manager_test.cc index 6916ba8..00193dd 100644 --- a/quic/core/quic_stream_id_manager_test.cc +++ b/quic/core/quic_stream_id_manager_test.cc
@@ -11,6 +11,7 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_expect_bug.h" #include "net/third_party/quiche/src/quic/platform/api/quic_test.h" #include "net/third_party/quiche/src/quic/test_tools/quic_stream_id_manager_peer.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" using testing::_; using testing::StrictMock; @@ -40,7 +41,7 @@ // Used by ::testing::PrintToStringParamName(). std::string PrintToString(const TestParams& p) { - return QuicStrCat( + return quiche::QuicheStrCat( (p.perspective == Perspective::IS_CLIENT ? "Client" : "Server"), (p.is_unidirectional ? "Unidirectional" : "Bidirectional")); } @@ -228,7 +229,7 @@ TEST_P(QuicStreamIdManagerTest, IsIncomingStreamIdInValidAboveLimit) { QuicStreamId stream_id = GetNthIncomingStreamId(stream_id_manager_.incoming_actual_max_streams()); - std::string error_details = QuicStrCat( + std::string error_details = quiche::QuicheStrCat( "Stream id ", stream_id, " would exceed stream count limit 100"); EXPECT_CALL(delegate_, OnError(QUIC_INVALID_STREAM_ID, error_details)); EXPECT_FALSE(stream_id_manager_.MaybeIncreaseLargestPeerStreamId(stream_id)); @@ -613,7 +614,7 @@ TEST_P(QuicStreamIdManagerTest, ExtremeMaybeIncreaseLargestPeerStreamId) { QuicStreamId too_big_stream_id = GetNthIncomingStreamId( stream_id_manager_.incoming_actual_max_streams() + 20); - std::string error_details = QuicStrCat( + std::string error_details = quiche::QuicheStrCat( "Stream id ", too_big_stream_id, " would exceed stream count limit 100"); EXPECT_CALL(delegate_, OnError(QUIC_INVALID_STREAM_ID, error_details));
diff --git a/quic/core/quic_stream_send_buffer_test.cc b/quic/core/quic_stream_send_buffer_test.cc index 90fcd6e..5c1bff3 100644 --- a/quic/core/quic_stream_send_buffer_test.cc +++ b/quic/core/quic_stream_send_buffer_test.cc
@@ -15,12 +15,13 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_test_mem_slice_vector.h" #include "net/third_party/quiche/src/quic/test_tools/quic_stream_send_buffer_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { namespace test { namespace { -struct iovec MakeIovec(QuicStringPiece data) { +struct iovec MakeIovec(quiche::QuicheStringPiece data) { struct iovec iov = {const_cast<char*>(data.data()), static_cast<size_t>(data.size())}; return iov; @@ -35,8 +36,8 @@ std::string data1(1536, 'a'); std::string data2 = std::string(256, 'b') + std::string(256, 'c'); struct iovec iov[2]; - iov[0] = MakeIovec(QuicStringPiece(data1)); - iov[1] = MakeIovec(QuicStringPiece(data2)); + iov[0] = MakeIovec(quiche::QuicheStringPiece(data1)); + iov[1] = MakeIovec(quiche::QuicheStringPiece(data2)); QuicMemSlice slice1(&allocator_, 1024); memset(const_cast<char*>(slice1.data()), 'c', 1024); @@ -86,23 +87,23 @@ std::string copy4(768, 'd'); ASSERT_TRUE(send_buffer_.WriteStreamData(0, 1024, &writer)); - EXPECT_EQ(copy1, QuicStringPiece(buf, 1024)); + EXPECT_EQ(copy1, quiche::QuicheStringPiece(buf, 1024)); ASSERT_TRUE(send_buffer_.WriteStreamData(1024, 1024, &writer)); - EXPECT_EQ(copy2, QuicStringPiece(buf + 1024, 1024)); + EXPECT_EQ(copy2, quiche::QuicheStringPiece(buf + 1024, 1024)); ASSERT_TRUE(send_buffer_.WriteStreamData(2048, 1024, &writer)); - EXPECT_EQ(copy3, QuicStringPiece(buf + 2048, 1024)); + EXPECT_EQ(copy3, quiche::QuicheStringPiece(buf + 2048, 1024)); ASSERT_TRUE(send_buffer_.WriteStreamData(3072, 768, &writer)); - EXPECT_EQ(copy4, QuicStringPiece(buf + 3072, 768)); + EXPECT_EQ(copy4, quiche::QuicheStringPiece(buf + 3072, 768)); // Test data piece across boundries. QuicDataWriter writer2(4000, buf, quiche::HOST_BYTE_ORDER); std::string copy5 = std::string(536, 'a') + std::string(256, 'b') + std::string(232, 'c'); ASSERT_TRUE(send_buffer_.WriteStreamData(1000, 1024, &writer2)); - EXPECT_EQ(copy5, QuicStringPiece(buf, 1024)); + EXPECT_EQ(copy5, quiche::QuicheStringPiece(buf, 1024)); ASSERT_TRUE(send_buffer_.WriteStreamData(2500, 1024, &writer2)); std::string copy6 = std::string(572, 'c') + std::string(452, 'd'); - EXPECT_EQ(copy6, QuicStringPiece(buf + 1024, 1024)); + EXPECT_EQ(copy6, quiche::QuicheStringPiece(buf + 1024, 1024)); // Invalid data copy. QuicDataWriter writer3(4000, buf, quiche::HOST_BYTE_ORDER); @@ -127,12 +128,12 @@ // Write more than one slice. EXPECT_EQ(0, QuicStreamSendBufferPeer::write_index(&send_buffer_)); ASSERT_TRUE(send_buffer_.WriteStreamData(0, 1024, &writer)); - EXPECT_EQ(copy1, QuicStringPiece(buf, 1024)); + EXPECT_EQ(copy1, quiche::QuicheStringPiece(buf, 1024)); EXPECT_EQ(1, QuicStreamSendBufferPeer::write_index(&send_buffer_)); // Retransmit the first frame and also send new data. ASSERT_TRUE(send_buffer_.WriteStreamData(0, 2048, &writer)); - EXPECT_EQ(copy1 + copy2, QuicStringPiece(buf + 1024, 2048)); + EXPECT_EQ(copy1 + copy2, quiche::QuicheStringPiece(buf + 1024, 2048)); // Write new data. if (!GetQuicRestartFlag(quic_coalesce_stream_frames_2)) { @@ -142,10 +143,11 @@ } else { EXPECT_EQ(2, QuicStreamSendBufferPeer::write_index(&send_buffer_)); ASSERT_TRUE(send_buffer_.WriteStreamData(2048, 50, &writer)); - EXPECT_EQ(std::string(50, 'c'), QuicStringPiece(buf + 1024 + 2048, 50)); + EXPECT_EQ(std::string(50, 'c'), + quiche::QuicheStringPiece(buf + 1024 + 2048, 50)); EXPECT_EQ(2, QuicStreamSendBufferPeer::write_index(&send_buffer_)); ASSERT_TRUE(send_buffer_.WriteStreamData(2048, 1124, &writer)); - EXPECT_EQ(copy3, QuicStringPiece(buf + 1024 + 2048 + 50, 1124)); + EXPECT_EQ(copy3, quiche::QuicheStringPiece(buf + 1024 + 2048 + 50, 1124)); EXPECT_EQ(3, QuicStreamSendBufferPeer::write_index(&send_buffer_)); } }
diff --git a/quic/core/quic_stream_sequencer.cc b/quic/core/quic_stream_sequencer.cc index d797668..a5f8599 100644 --- a/quic/core/quic_stream_sequencer.cc +++ b/quic/core/quic_stream_sequencer.cc
@@ -19,8 +19,8 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_flag_utils.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_str_cat.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { @@ -80,10 +80,10 @@ size_t bytes_written; std::string error_details; QuicErrorCode result = buffered_frames_.OnStreamData( - byte_offset, QuicStringPiece(data_buffer, data_len), &bytes_written, - &error_details); + byte_offset, quiche::QuicheStringPiece(data_buffer, data_len), + &bytes_written, &error_details); if (result != QUIC_NO_ERROR) { - std::string details = QuicStrCat( + std::string details = quiche::QuicheStrCat( "Stream ", stream_->id(), ": ", QuicErrorCodeToString(result), ": ", error_details, "\nPeer Address: ", stream_->PeerAddressOfLatestPacket().ToString()); @@ -141,9 +141,9 @@ quic_close_connection_and_discard_data_on_wrong_offset, 2, 3); stream_->CloseConnectionWithDetails( QUIC_STREAM_SEQUENCER_INVALID_STATE, - QuicStrCat("Stream ", stream_->id(), - " received new final offset: ", offset, - ", which is different from close offset: ", close_offset_)); + quiche::QuicheStrCat( + "Stream ", stream_->id(), " received new final offset: ", offset, + ", which is different from close offset: ", close_offset_)); return false; } @@ -155,7 +155,7 @@ quic_close_connection_and_discard_data_on_wrong_offset, 3, 3); stream_->CloseConnectionWithDetails( QUIC_STREAM_SEQUENCER_INVALID_STATE, - QuicStrCat( + quiche::QuicheStrCat( "Stream ", stream_->id(), " received fin with offset: ", offset, ", which reduces current highest offset: ", highest_offset_)); return false; @@ -221,7 +221,7 @@ buffered_frames_.Readv(iov, iov_len, &bytes_read, &error_details); if (read_error != QUIC_NO_ERROR) { std::string details = - QuicStrCat("Stream ", stream_->id(), ": ", error_details); + quiche::QuicheStrCat("Stream ", stream_->id(), ": ", error_details); stream_->CloseConnectionWithDetails(read_error, details); return static_cast<int>(bytes_read); } @@ -304,7 +304,7 @@ const std::string QuicStreamSequencer::DebugString() const { // clang-format off - return QuicStrCat("QuicStreamSequencer:", + return quiche::QuicheStrCat("QuicStreamSequencer:", "\n bytes buffered: ", NumBytesBuffered(), "\n bytes consumed: ", NumBytesConsumed(), "\n has bytes to read: ", HasBytesToRead() ? "true" : "false",
diff --git a/quic/core/quic_stream_sequencer_buffer.cc b/quic/core/quic_stream_sequencer_buffer.cc index 89a6ad7..ec3b49f 100644 --- a/quic/core/quic_stream_sequencer_buffer.cc +++ b/quic/core/quic_stream_sequencer_buffer.cc
@@ -12,7 +12,8 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_flag_utils.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_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { namespace { @@ -67,7 +68,7 @@ QuicErrorCode QuicStreamSequencerBuffer::OnStreamData( QuicStreamOffset starting_offset, - QuicStringPiece data, + quiche::QuicheStringPiece data, size_t* const bytes_buffered, std::string* error_details) { *bytes_buffered = 0; @@ -134,7 +135,7 @@ } bool QuicStreamSequencerBuffer::CopyStreamData(QuicStreamOffset offset, - QuicStringPiece data, + quiche::QuicheStringPiece data, size_t* bytes_copy, std::string* error_details) { *bytes_copy = 0; @@ -168,7 +169,7 @@ } if (write_block_num >= blocks_count_) { - *error_details = QuicStrCat( + *error_details = quiche::QuicheStrCat( "QuicStreamSequencerBuffer error: OnStreamData() exceed array bounds." "write offset = ", offset, " write_block_num = ", write_block_num, @@ -193,7 +194,7 @@ << " length: " << bytes_to_copy; if (dest == nullptr || source == nullptr) { - *error_details = QuicStrCat( + *error_details = quiche::QuicheStrCat( "QuicStreamSequencerBuffer error: OnStreamData()" " dest == nullptr: ", (dest == nullptr), " source == nullptr: ", (source == nullptr), @@ -230,7 +231,7 @@ std::min<size_t>(bytes_available_in_block, dest_remaining); DCHECK_GT(bytes_to_copy, 0u); if (blocks_[block_idx] == nullptr || dest == nullptr) { - *error_details = QuicStrCat( + *error_details = quiche::QuicheStrCat( "QuicStreamSequencerBuffer error:" " Readv() dest == nullptr: ", (dest == nullptr), " blocks_[", block_idx, @@ -255,7 +256,7 @@ if (bytes_to_copy == bytes_available_in_block) { bool retire_successfully = RetireBlockIfEmpty(block_idx); if (!retire_successfully) { - *error_details = QuicStrCat( + *error_details = quiche::QuicheStrCat( "QuicStreamSequencerBuffer error: fail to retire block ", block_idx, " as the block is already released, total_bytes_read_ = ",
diff --git a/quic/core/quic_stream_sequencer_buffer.h b/quic/core/quic_stream_sequencer_buffer.h index 406cd92..babf3c8 100644 --- a/quic/core/quic_stream_sequencer_buffer.h +++ b/quic/core/quic_stream_sequencer_buffer.h
@@ -28,11 +28,11 @@ // Expected Use: // QuicStreamSequencerBuffer buffer(2.5 * 8 * 1024); // std::string source(1024, 'a'); -// QuicStringPiece string_piece(source.data(), source.size()); +// quiche::QuicheStringPiece string_piece(source.data(), source.size()); // size_t written = 0; // buffer.OnStreamData(800, string_piece, GetEpollClockNow(), &written); // source = std::string{800, 'b'}; -// QuicStringPiece string_piece1(source.data(), 800); +// quiche::QuicheStringPiece string_piece1(source.data(), 800); // // Try to write to [1, 801), but should fail due to overlapping, // // res should be QUIC_INVALID_STREAM_DATA // auto res = buffer.OnStreamData(1, string_piece1, &written)); @@ -69,7 +69,7 @@ #include "net/third_party/quiche/src/quic/core/quic_types.h" #include "net/third_party/quiche/src/quic/platform/api/quic_export.h" #include "net/third_party/quiche/src/quic/platform/api/quic_iovec.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { @@ -106,7 +106,7 @@ // successfully buffered, returns QUIC_NO_ERROR and stores the number of // bytes buffered in |bytes_buffered|. Returns an error otherwise. QuicErrorCode OnStreamData(QuicStreamOffset offset, - QuicStringPiece data, + quiche::QuicheStringPiece data, size_t* bytes_buffered, std::string* error_details); @@ -167,7 +167,7 @@ // Copies |data| to blocks_, sets |bytes_copy|. Returns true if the copy is // successful. Otherwise, sets |error_details| and returns false. bool CopyStreamData(QuicStreamOffset offset, - QuicStringPiece data, + quiche::QuicheStringPiece data, size_t* bytes_copy, std::string* error_details);
diff --git a/quic/core/quic_stream_sequencer_buffer_test.cc b/quic/core/quic_stream_sequencer_buffer_test.cc index b17dcc4..7341983 100644 --- a/quic/core/quic_stream_sequencer_buffer_test.cc +++ b/quic/core/quic_stream_sequencer_buffer_test.cc
@@ -12,18 +12,19 @@ #include <utility> #include "net/third_party/quiche/src/quic/platform/api/quic_logging.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.h" #include "net/third_party/quiche/src/quic/test_tools/quic_stream_sequencer_buffer_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { namespace test { -QuicStringPiece IovecToStringPiece(iovec iov) { - return QuicStringPiece(reinterpret_cast<const char*>(iov.iov_base), - iov.iov_len); +quiche::QuicheStringPiece IovecToStringPiece(iovec iov) { + return quiche::QuicheStringPiece(reinterpret_cast<const char*>(iov.iov_base), + iov.iov_len); } char GetCharFromIOVecs(size_t offset, iovec iov[], size_t count) { @@ -158,11 +159,11 @@ TEST_F(QuicStreamSequencerBufferTest, OnStreamDataInvalidSource) { // Pass in an invalid source, expects to return error. - QuicStringPiece source; - source = QuicStringPiece(nullptr, 1024); + quiche::QuicheStringPiece source; + source = quiche::QuicheStringPiece(nullptr, 1024); EXPECT_THAT(buffer_->OnStreamData(800, source, &written_, &error_details_), IsError(QUIC_STREAM_SEQUENCER_INVALID_STATE)); - EXPECT_EQ(0u, error_details_.find(QuicStrCat( + EXPECT_EQ(0u, error_details_.find(quiche::QuicheStrCat( "QuicStreamSequencerBuffer error: OnStreamData() " "dest == nullptr: ", false, " source == nullptr: ", true))); @@ -319,7 +320,7 @@ QUIC_LOG(ERROR) << error_details_; EXPECT_EQ(100u, read); EXPECT_EQ(100u, buffer_->BytesConsumed()); - EXPECT_EQ(source, QuicStringPiece(dest, read)); + EXPECT_EQ(source, quiche::QuicheStringPiece(dest, read)); // The first block should be released as its data has been read out. EXPECT_EQ(nullptr, helper_->GetBlock(0)); EXPECT_TRUE(helper_->CheckBufferInvariants()); @@ -609,7 +610,8 @@ // Peek at a different offset. EXPECT_TRUE(buffer_->PeekRegion(100, &iov)); - EXPECT_EQ(QuicStringPiece(source).substr(100), IovecToStringPiece(iov)); + EXPECT_EQ(quiche::QuicheStringPiece(source).substr(100), + IovecToStringPiece(iov)); // Peeking at or after FirstMissingByte() returns false. EXPECT_FALSE(buffer_->PeekRegion(kBlockSizeBytes, &iov)); @@ -636,15 +638,15 @@ // Peek with an offset inside the first write. const QuicStreamOffset offset1 = 500; EXPECT_TRUE(buffer_->PeekRegion(offset1, &iov)); - EXPECT_EQ(QuicStringPiece(source1).substr(offset1), + EXPECT_EQ(quiche::QuicheStringPiece(source1).substr(offset1), IovecToStringPiece(iov).substr(0, length1 - offset1)); - EXPECT_EQ(QuicStringPiece(source2), + EXPECT_EQ(quiche::QuicheStringPiece(source2), IovecToStringPiece(iov).substr(length1 - offset1)); // Peek with an offset inside the second write. const QuicStreamOffset offset2 = 1500; EXPECT_TRUE(buffer_->PeekRegion(offset2, &iov)); - EXPECT_EQ(QuicStringPiece(source2).substr(offset2 - length1), + EXPECT_EQ(quiche::QuicheStringPiece(source2).substr(offset2 - length1), IovecToStringPiece(iov)); // Peeking at or after FirstMissingByte() returns false. @@ -669,16 +671,19 @@ EXPECT_TRUE(buffer_->PeekRegion(0, &iov)); EXPECT_EQ(kBlockSizeBytes, iov.iov_len); EXPECT_EQ(source1, IovecToStringPiece(iov).substr(0, length1)); - EXPECT_EQ(QuicStringPiece(source2).substr(0, kBlockSizeBytes - length1), - IovecToStringPiece(iov).substr(length1)); + EXPECT_EQ( + quiche::QuicheStringPiece(source2).substr(0, kBlockSizeBytes - length1), + IovecToStringPiece(iov).substr(length1)); EXPECT_TRUE(buffer_->PeekRegion(length1, &iov)); - EXPECT_EQ(QuicStringPiece(source2).substr(0, kBlockSizeBytes - length1), - IovecToStringPiece(iov)); + EXPECT_EQ( + quiche::QuicheStringPiece(source2).substr(0, kBlockSizeBytes - length1), + IovecToStringPiece(iov)); EXPECT_TRUE(buffer_->PeekRegion(kBlockSizeBytes, &iov)); - EXPECT_EQ(QuicStringPiece(source2).substr(kBlockSizeBytes - length1), - IovecToStringPiece(iov)); + EXPECT_EQ( + quiche::QuicheStringPiece(source2).substr(kBlockSizeBytes - length1), + IovecToStringPiece(iov)); // Peeking at or after FirstMissingByte() returns false. EXPECT_FALSE(buffer_->PeekRegion(length1 + length2, &iov)); @@ -701,10 +706,12 @@ EXPECT_FALSE(buffer_->PeekRegion(512, &iov)); EXPECT_TRUE(buffer_->PeekRegion(1024, &iov)); - EXPECT_EQ(QuicStringPiece(source1).substr(1024), IovecToStringPiece(iov)); + EXPECT_EQ(quiche::QuicheStringPiece(source1).substr(1024), + IovecToStringPiece(iov)); EXPECT_TRUE(buffer_->PeekRegion(1500, &iov)); - EXPECT_EQ(QuicStringPiece(source1).substr(1500), IovecToStringPiece(iov)); + EXPECT_EQ(quiche::QuicheStringPiece(source1).substr(1500), + IovecToStringPiece(iov)); // Consume rest of block. EXPECT_TRUE(buffer_->MarkConsumed(kBlockSizeBytes - 1024)); @@ -718,7 +725,8 @@ EXPECT_EQ(source2, IovecToStringPiece(iov)); EXPECT_TRUE(buffer_->PeekRegion(kBlockSizeBytes + 128, &iov)); - EXPECT_EQ(QuicStringPiece(source2).substr(128), IovecToStringPiece(iov)); + EXPECT_EQ(quiche::QuicheStringPiece(source2).substr(128), + IovecToStringPiece(iov)); // Peeking into consumed data still fails. EXPECT_FALSE(buffer_->PeekRegion(0, &iov)); @@ -925,7 +933,7 @@ for (size_t i = 0; i < num_to_write; ++i) { write_buf[i] = (offset + i) % 256; } - QuicStringPiece string_piece_w(write_buf.get(), num_to_write); + quiche::QuicheStringPiece string_piece_w(write_buf.get(), num_to_write); auto result = buffer_->OnStreamData(offset, string_piece_w, &written_, &error_details_); if (result == QUIC_NO_ERROR) {
diff --git a/quic/core/quic_stream_sequencer_test.cc b/quic/core/quic_stream_sequencer_test.cc index cb6fb93..e31abc9 100644 --- a/quic/core/quic_stream_sequencer_test.cc +++ b/quic/core/quic_stream_sequencer_test.cc
@@ -17,10 +17,10 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_expect_bug.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_string_piece.h" #include "net/third_party/quiche/src/quic/platform/api/quic_test.h" #include "net/third_party/quiche/src/quic/test_tools/quic_stream_sequencer_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" using testing::_; using testing::AnyNumber; @@ -123,7 +123,7 @@ return true; } - bool VerifyIovec(const iovec& iovec, QuicStringPiece expected) { + bool VerifyIovec(const iovec& iovec, quiche::QuicheStringPiece expected) { if (iovec.iov_len != expected.length()) { QUIC_LOG(ERROR) << "Invalid length: " << iovec.iov_len << " vs " << expected.length(); @@ -613,10 +613,10 @@ // overlapping byte ranges - if they do, we close the connection. QuicStreamId id = 1; - QuicStreamFrame frame1(id, false, 1, QuicStringPiece("hello")); + QuicStreamFrame frame1(id, false, 1, quiche::QuicheStringPiece("hello")); sequencer_->OnStreamFrame(frame1); - QuicStreamFrame frame2(id, false, 2, QuicStringPiece("hello")); + QuicStreamFrame frame2(id, false, 2, quiche::QuicheStringPiece("hello")); EXPECT_CALL(stream_, CloseConnectionWithDetails(QUIC_OVERLAPPING_STREAM_DATA, _)) .Times(0); @@ -649,7 +649,7 @@ EXPECT_EQ(0u, sequencer_->NumBytesBuffered()); // Received [1498, 1503). - QuicStreamFrame frame3(id, false, 1498, QuicStringPiece("hello")); + QuicStreamFrame frame3(id, false, 1498, quiche::QuicheStringPiece("hello")); EXPECT_CALL(stream_, OnDataAvailable()); sequencer_->OnStreamFrame(frame3); EXPECT_CALL(stream_, AddBytesConsumed(3)); @@ -658,7 +658,7 @@ EXPECT_EQ(0u, sequencer_->NumBytesBuffered()); // Received [1000, 1005). - QuicStreamFrame frame4(id, false, 1000, QuicStringPiece("hello")); + QuicStreamFrame frame4(id, false, 1000, quiche::QuicheStringPiece("hello")); EXPECT_CALL(stream_, OnDataAvailable()).Times(0); sequencer_->OnStreamFrame(frame4); EXPECT_EQ(1503u, sequencer_->NumBytesConsumed());
diff --git a/quic/core/quic_stream_test.cc b/quic/core/quic_stream_test.cc index 9733f19..0a71787 100644 --- a/quic/core/quic_stream_test.cc +++ b/quic/core/quic_stream_test.cc
@@ -31,6 +31,7 @@ #include "net/third_party/quiche/src/quic/test_tools/quic_stream_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_stream_sequencer_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" using testing::_; using testing::AnyNumber; @@ -288,8 +289,9 @@ // Write no data and no fin. If we consume nothing we should not be write // blocked. - EXPECT_QUIC_BUG(stream_->WriteOrBufferData(QuicStringPiece(), false, nullptr), - ""); + EXPECT_QUIC_BUG( + stream_->WriteOrBufferData(quiche::QuicheStringPiece(), false, nullptr), + ""); EXPECT_FALSE(HasWriteBlockedStreams()); } @@ -303,7 +305,8 @@ return MockQuicSession::ConsumeData(stream_, stream_->id(), 1u, 0u, NO_FIN); })); - stream_->WriteOrBufferData(QuicStringPiece(kData1, 2), false, nullptr); + stream_->WriteOrBufferData(quiche::QuicheStringPiece(kData1, 2), false, + nullptr); EXPECT_TRUE(session_->HasUnackedStreamData()); ASSERT_EQ(1u, write_blocked_list_->NumBlockedStreams()); EXPECT_EQ(1u, stream_->BufferedDataBytes()); @@ -321,7 +324,8 @@ return MockQuicSession::ConsumeData(stream_, stream_->id(), 2u, 0u, NO_FIN); })); - stream_->WriteOrBufferData(QuicStringPiece(kData1, 2), true, nullptr); + stream_->WriteOrBufferData(quiche::QuicheStringPiece(kData1, 2), true, + nullptr); EXPECT_TRUE(session_->HasUnackedStreamData()); ASSERT_EQ(1u, write_blocked_list_->NumBlockedStreams()); } @@ -333,7 +337,7 @@ // as the fin was not consumed. EXPECT_CALL(*session_, WritevData(stream_, kTestStreamId, _, _, _)) .WillOnce(Return(QuicConsumedData(0, false))); - stream_->WriteOrBufferData(QuicStringPiece(), true, nullptr); + stream_->WriteOrBufferData(quiche::QuicheStringPiece(), true, nullptr); ASSERT_EQ(1u, write_blocked_list_->NumBlockedStreams()); } @@ -345,7 +349,8 @@ // crash with an unknown stream. EXPECT_CALL(*session_, WritevData(stream_, kTestStreamId, _, _, _)) .WillOnce(Invoke(this, &QuicStreamTest::CloseStreamOnWriteError)); - stream_->WriteOrBufferData(QuicStringPiece(kData1, 2), false, nullptr); + stream_->WriteOrBufferData(quiche::QuicheStringPiece(kData1, 2), false, + nullptr); ASSERT_EQ(0u, write_blocked_list_->NumBlockedStreams()); } @@ -440,7 +445,8 @@ return MockQuicSession::ConsumeData(stream_, stream_->id(), 1u, 0u, NO_FIN); })); - stream_->WriteOrBufferData(QuicStringPiece(kData1, 1), false, nullptr); + stream_->WriteOrBufferData(quiche::QuicheStringPiece(kData1, 1), false, + nullptr); EXPECT_TRUE(session_->HasUnackedStreamData()); EXPECT_FALSE(fin_sent()); EXPECT_FALSE(rst_sent()); @@ -468,7 +474,8 @@ return MockQuicSession::ConsumeData(stream_, stream_->id(), 1u, 0u, FIN); })); - stream_->WriteOrBufferData(QuicStringPiece(kData1, 1), true, nullptr); + stream_->WriteOrBufferData(quiche::QuicheStringPiece(kData1, 1), true, + nullptr); EXPECT_TRUE(fin_sent()); EXPECT_FALSE(rst_sent()); @@ -659,7 +666,7 @@ current_connection_flow_control_offset); QuicStreamFrame zero_length_stream_frame_with_fin( stream_->id(), /*fin=*/true, kByteOffsetExceedingFlowControlWindow, - QuicStringPiece()); + quiche::QuicheStringPiece()); EXPECT_EQ(0, zero_length_stream_frame_with_fin.data_length); EXPECT_CALL(*connection_, CloseConnection(_, _, _)).Times(0); @@ -708,9 +715,10 @@ EXPECT_CALL(*connection_, CloseConnection(QUIC_STREAM_LENGTH_OVERFLOW, _, _)) .Times(1); QuicStreamFrame stream_frame(stream_->id(), false, kMaxStreamLength, "."); - EXPECT_QUIC_PEER_BUG(stream_->OnStreamFrame(stream_frame), - QuicStrCat("Receive stream frame on stream ", - stream_->id(), " reaches max stream length")); + EXPECT_QUIC_PEER_BUG( + stream_->OnStreamFrame(stream_frame), + quiche::QuicheStrCat("Receive stream frame on stream ", stream_->id(), + " reaches max stream length")); } TEST_P(QuicStreamTest, SetDrainingIncomingOutgoing) { @@ -733,7 +741,8 @@ return MockQuicSession::ConsumeData(stream_, stream_->id(), 2u, 0u, FIN); })); - stream_->WriteOrBufferData(QuicStringPiece(kData1, 2), true, nullptr); + stream_->WriteOrBufferData(quiche::QuicheStringPiece(kData1, 2), true, + nullptr); EXPECT_TRUE(stream_->write_side_closed()); EXPECT_EQ(1u, QuicSessionPeer::GetDrainingStreams(session_.get()) @@ -751,7 +760,8 @@ return MockQuicSession::ConsumeData(stream_, stream_->id(), 2u, 0u, FIN); })); - stream_->WriteOrBufferData(QuicStringPiece(kData1, 2), true, nullptr); + stream_->WriteOrBufferData(quiche::QuicheStringPiece(kData1, 2), true, + nullptr); EXPECT_TRUE(stream_->write_side_closed()); EXPECT_EQ(1u, session_->GetNumOpenIncomingStreams());
diff --git a/quic/core/quic_tag.cc b/quic/core/quic_tag.cc index 3b6ba0d..bc0e28e 100644 --- a/quic/core/quic_tag.cc +++ b/quic/core/quic_tag.cc
@@ -10,7 +10,7 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_arraysize.h" #include "net/third_party/quiche/src/quic/platform/api/quic_flag_utils.h" #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_text_utils.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h" namespace quic { @@ -60,8 +60,8 @@ return std::string(chars, sizeof(chars)); } - return QuicTextUtils::HexEncode(reinterpret_cast<const char*>(&orig_tag), - sizeof(orig_tag)); + return quiche::QuicheTextUtils::HexEncode( + reinterpret_cast<const char*>(&orig_tag), sizeof(orig_tag)); } uint32_t MakeQuicTag(char a, char b, char c, char d) {
diff --git a/quic/core/quic_time.cc b/quic/core/quic_time.cc index ffc59da..b7a12fe 100644 --- a/quic/core/quic_time.cc +++ b/quic/core/quic_time.cc
@@ -9,7 +9,7 @@ #include <limits> #include <string> -#include "net/third_party/quiche/src/quic/platform/api/quic_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" namespace quic { @@ -22,12 +22,12 @@ // For debugging purposes, always display the value with the highest precision // available. if (absolute_value > one_s && absolute_value % one_s == 0) { - return QuicStringPrintf("%" PRId64 "s", time_offset_ / one_s); + return quiche::QuicheStringPrintf("%" PRId64 "s", time_offset_ / one_s); } if (absolute_value > one_ms && absolute_value % one_ms == 0) { - return QuicStringPrintf("%" PRId64 "ms", time_offset_ / one_ms); + return quiche::QuicheStringPrintf("%" PRId64 "ms", time_offset_ / one_ms); } - return QuicStringPrintf("%" PRId64 "us", time_offset_); + return quiche::QuicheStringPrintf("%" PRId64 "us", time_offset_); } uint64_t QuicWallTime::ToUNIXSeconds() const {
diff --git a/quic/core/quic_time_wait_list_manager.cc b/quic/core/quic_time_wait_list_manager.cc index 7058563..5131005 100644 --- a/quic/core/quic_time_wait_list_manager.cc +++ b/quic/core/quic_time_wait_list_manager.cc
@@ -22,7 +22,8 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h" #include "net/third_party/quiche/src/quic/platform/api/quic_map_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_text_utils.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h" namespace quic { @@ -220,7 +221,7 @@ << (ietf_quic ? "" : "!") << "ietf_quic, " << (use_length_prefix ? "" : "!") << "use_length_prefix:" << std::endl - << QuicTextUtils::HexDump(QuicStringPiece( + << quiche::QuicheTextUtils::HexDump(quiche::QuicheStringPiece( version_packet->data(), version_packet->length())); SendOrQueuePacket(std::make_unique<QueuedPacket>(self_address, peer_address, std::move(version_packet)), @@ -244,9 +245,9 @@ BuildIetfStatelessResetPacket(connection_id); QUIC_DVLOG(2) << "Dispatcher sending IETF reset packet for " << connection_id << std::endl - << QuicTextUtils::HexDump( - QuicStringPiece(ietf_reset_packet->data(), - ietf_reset_packet->length())); + << quiche::QuicheTextUtils::HexDump(quiche::QuicheStringPiece( + ietf_reset_packet->data(), + ietf_reset_packet->length())); SendOrQueuePacket( std::make_unique<QueuedPacket>(self_address, peer_address, std::move(ietf_reset_packet)), @@ -264,7 +265,7 @@ std::unique_ptr<QuicEncryptedPacket> reset_packet = BuildPublicReset(packet); QUIC_DVLOG(2) << "Dispatcher sending reset packet for " << connection_id << std::endl - << QuicTextUtils::HexDump(QuicStringPiece( + << quiche::QuicheTextUtils::HexDump(quiche::QuicheStringPiece( reset_packet->data(), reset_packet->length())); SendOrQueuePacket(std::make_unique<QueuedPacket>(self_address, peer_address, std::move(reset_packet)),
diff --git a/quic/core/quic_types.cc b/quic/core/quic_types.cc index 1cee9fe..709f89a 100644 --- a/quic/core/quic_types.cc +++ b/quic/core/quic_types.cc
@@ -7,7 +7,7 @@ #include <cstdint> #include "net/third_party/quiche/src/quic/core/quic_error_codes.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_str_cat.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" namespace quic { @@ -80,7 +80,7 @@ std::string QuicIetfTransportErrorCodeString(QuicIetfTransportErrorCodes c) { if (static_cast<uint16_t>(c) >= 0xff00u) { - return QuicStrCat("Private value: ", static_cast<uint16_t>(c)); + return quiche::QuicheStrCat("Private value: ", static_cast<uint16_t>(c)); } switch (c) { @@ -97,8 +97,8 @@ RETURN_STRING_LITERAL(PROTOCOL_VIOLATION); RETURN_STRING_LITERAL(INVALID_MIGRATION); default: - return QuicStrCat("Unknown Transport Error Code Value: ", - static_cast<uint16_t>(c)); + return quiche::QuicheStrCat("Unknown Transport Error Code Value: ", + static_cast<uint16_t>(c)); } } @@ -465,7 +465,7 @@ RETURN_STRING_LITERAL(IETF_EXTENSION_MESSAGE_NO_LENGTH_V99); RETURN_STRING_LITERAL(IETF_EXTENSION_MESSAGE_V99); default: - return QuicStrCat("Private value (", t, ")"); + return quiche::QuicheStrCat("Private value (", t, ")"); } } std::ostream& operator<<(std::ostream& os, const QuicIetfFrameType& c) { @@ -489,7 +489,8 @@ if (transmission_type == LAST_TRANSMISSION_TYPE + 1) { return "INVALID_TRANSMISSION_TYPE"; } - return QuicStrCat("Unknown(", static_cast<int>(transmission_type), ")"); + return quiche::QuicheStrCat("Unknown(", + static_cast<int>(transmission_type), ")"); break; } } @@ -500,7 +501,7 @@ RETURN_STRING_LITERAL(IETF_QUIC_SHORT_HEADER_PACKET); RETURN_STRING_LITERAL(GOOGLE_QUIC_PACKET); default: - return QuicStrCat("Unknown (", static_cast<int>(format), ")"); + return quiche::QuicheStrCat("Unknown (", static_cast<int>(format), ")"); } } @@ -513,7 +514,7 @@ RETURN_STRING_LITERAL(RETRY); RETURN_STRING_LITERAL(INVALID_PACKET_TYPE); default: - return QuicStrCat("Unknown (", static_cast<int>(type), ")"); + return quiche::QuicheStrCat("Unknown (", static_cast<int>(type), ")"); } } @@ -526,17 +527,19 @@ RETURN_STRING_LITERAL(MESSAGE_STATUS_TOO_LARGE); RETURN_STRING_LITERAL(MESSAGE_STATUS_INTERNAL_ERROR); default: - return QuicStrCat("Unknown(", static_cast<int>(message_status), ")"); + return quiche::QuicheStrCat("Unknown(", static_cast<int>(message_status), + ")"); break; } } std::string MessageResultToString(MessageResult message_result) { if (message_result.status != MESSAGE_STATUS_SUCCESS) { - return QuicStrCat("{", MessageStatusToString(message_result.status), "}"); + return quiche::QuicheStrCat( + "{", MessageStatusToString(message_result.status), "}"); } - return QuicStrCat("{MESSAGE_STATUS_SUCCESS,id=", message_result.message_id, - "}"); + return quiche::QuicheStrCat( + "{MESSAGE_STATUS_SUCCESS,id=", message_result.message_id, "}"); } std::ostream& operator<<(std::ostream& os, const MessageResult& mr) { @@ -550,7 +553,8 @@ RETURN_STRING_LITERAL(HANDSHAKE_DATA); RETURN_STRING_LITERAL(APPLICATION_DATA); default: - return QuicStrCat("Unknown(", static_cast<int>(packet_number_space), ")"); + return quiche::QuicheStrCat("Unknown(", + static_cast<int>(packet_number_space), ")"); break; } } @@ -562,7 +566,7 @@ RETURN_STRING_LITERAL(SEND_TO_WRITER); RETURN_STRING_LITERAL(FAILED_TO_WRITE_COALESCED_PACKET); default: - return QuicStrCat("Unknown(", static_cast<int>(fate), ")"); + return quiche::QuicheStrCat("Unknown(", static_cast<int>(fate), ")"); } } @@ -573,7 +577,7 @@ RETURN_STRING_LITERAL(ENCRYPTION_ZERO_RTT); RETURN_STRING_LITERAL(ENCRYPTION_FORWARD_SECURE); default: - return QuicStrCat("Unknown(", static_cast<int>(level), ")"); + return quiche::QuicheStrCat("Unknown(", static_cast<int>(level), ")"); break; } } @@ -584,7 +588,7 @@ RETURN_STRING_LITERAL(IETF_QUIC_TRANSPORT_CONNECTION_CLOSE); RETURN_STRING_LITERAL(IETF_QUIC_APPLICATION_CONNECTION_CLOSE); default: - return QuicStrCat("Unknown(", static_cast<int>(type), ")"); + return quiche::QuicheStrCat("Unknown(", static_cast<int>(type), ")"); break; } }
diff --git a/quic/core/quic_types_test.cc b/quic/core/quic_types_test.cc index c7e4316..d238c78 100644 --- a/quic/core/quic_types_test.cc +++ b/quic/core/quic_types_test.cc
@@ -6,8 +6,8 @@ #include <cstdint> -#include "net/third_party/quiche/src/quic/platform/api/quic_str_cat.h" #include "net/third_party/quiche/src/quic/platform/api/quic_test.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" namespace quic { namespace test { @@ -23,10 +23,10 @@ QuicErrorCodeToIetfMapping mapping = QuicErrorCodeToTransportErrorCode(error); if (mapping.is_transport_close_) { - EXPECT_EQ( - QuicIetfTransportErrorCodeString(mapping.transport_error_code_), - QuicStrCat("Unknown Transport Error Code Value: ", - static_cast<uint16_t>(mapping.transport_error_code_))); + EXPECT_EQ(QuicIetfTransportErrorCodeString(mapping.transport_error_code_), + quiche::QuicheStrCat( + "Unknown Transport Error Code Value: ", + static_cast<uint16_t>(mapping.transport_error_code_))); } } }
diff --git a/quic/core/quic_utils.cc b/quic/core/quic_utils.cc index 8529dca..ef3af54 100644 --- a/quic/core/quic_utils.cc +++ b/quic/core/quic_utils.cc
@@ -20,6 +20,7 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_prefetch.h" #include "net/third_party/quiche/src/quic/platform/api/quic_uint128.h" #include "net/third_party/quiche/src/common/platform/api/quiche_endian.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { namespace { @@ -34,7 +35,8 @@ #endif #ifdef QUIC_UTIL_HAS_UINT128 -QuicUint128 IncrementalHashFast(QuicUint128 uhash, QuicStringPiece data) { +QuicUint128 IncrementalHashFast(QuicUint128 uhash, + quiche::QuicheStringPiece data) { // This code ends up faster than the naive implementation for 2 reasons: // 1. QuicUint128 is sufficiently complicated that the compiler // cannot transform the multiplication by kPrime into a shift-multiply-add; @@ -57,7 +59,8 @@ #ifndef QUIC_UTIL_HAS_UINT128 // Slow implementation of IncrementalHash. In practice, only used by Chromium. -QuicUint128 IncrementalHashSlow(QuicUint128 hash, QuicStringPiece data) { +QuicUint128 IncrementalHashSlow(QuicUint128 hash, + quiche::QuicheStringPiece data) { // kPrime = 309485009821345068724781371 static const QuicUint128 kPrime = MakeQuicUint128(16777216, 315); const uint8_t* octets = reinterpret_cast<const uint8_t*>(data.data()); @@ -69,7 +72,7 @@ } #endif -QuicUint128 IncrementalHash(QuicUint128 hash, QuicStringPiece data) { +QuicUint128 IncrementalHash(QuicUint128 hash, quiche::QuicheStringPiece data) { #ifdef QUIC_UTIL_HAS_UINT128 return IncrementalHashFast(hash, data); #else @@ -80,7 +83,7 @@ } // namespace // static -uint64_t QuicUtils::FNV1a_64_Hash(QuicStringPiece data) { +uint64_t QuicUtils::FNV1a_64_Hash(quiche::QuicheStringPiece data) { static const uint64_t kOffset = UINT64_C(14695981039346656037); static const uint64_t kPrime = UINT64_C(1099511628211); @@ -97,20 +100,21 @@ } // static -QuicUint128 QuicUtils::FNV1a_128_Hash(QuicStringPiece data) { - return FNV1a_128_Hash_Three(data, QuicStringPiece(), QuicStringPiece()); +QuicUint128 QuicUtils::FNV1a_128_Hash(quiche::QuicheStringPiece data) { + return FNV1a_128_Hash_Three(data, quiche::QuicheStringPiece(), + quiche::QuicheStringPiece()); } // static -QuicUint128 QuicUtils::FNV1a_128_Hash_Two(QuicStringPiece data1, - QuicStringPiece data2) { - return FNV1a_128_Hash_Three(data1, data2, QuicStringPiece()); +QuicUint128 QuicUtils::FNV1a_128_Hash_Two(quiche::QuicheStringPiece data1, + quiche::QuicheStringPiece data2) { + return FNV1a_128_Hash_Three(data1, data2, quiche::QuicheStringPiece()); } // static -QuicUint128 QuicUtils::FNV1a_128_Hash_Three(QuicStringPiece data1, - QuicStringPiece data2, - QuicStringPiece data3) { +QuicUint128 QuicUtils::FNV1a_128_Hash_Three(quiche::QuicheStringPiece data1, + quiche::QuicheStringPiece data2, + quiche::QuicheStringPiece data3) { // The two constants are defined as part of the hash algorithm. // see http://www.isthe.com/chongo/tech/comp/fnv/ // kOffset = 144066263297769815596495629667062367629 @@ -281,7 +285,7 @@ } // static -struct iovec QuicUtils::MakeIovec(QuicStringPiece data) { +struct iovec QuicUtils::MakeIovec(quiche::QuicheStringPiece data) { struct iovec iov = {const_cast<char*>(data.data()), static_cast<size_t>(data.size())}; return iov; @@ -478,7 +482,7 @@ QuicConnectionId QuicUtils::CreateReplacementConnectionId( QuicConnectionId connection_id) { const uint64_t connection_id_hash = FNV1a_64_Hash( - QuicStringPiece(connection_id.data(), connection_id.length())); + quiche::QuicheStringPiece(connection_id.data(), connection_id.length())); return QuicConnectionId(reinterpret_cast<const char*>(&connection_id_hash), sizeof(connection_id_hash)); } @@ -569,7 +573,7 @@ QuicUint128 QuicUtils::GenerateStatelessResetToken( QuicConnectionId connection_id) { return FNV1a_128_Hash( - QuicStringPiece(connection_id.data(), connection_id.length())); + quiche::QuicheStringPiece(connection_id.data(), connection_id.length())); } // static
diff --git a/quic/core/quic_utils.h b/quic/core/quic_utils.h index f04dace..ab8d6af 100644 --- a/quic/core/quic_utils.h +++ b/quic/core/quic_utils.h
@@ -18,8 +18,8 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_export.h" #include "net/third_party/quiche/src/quic/platform/api/quic_iovec.h" #include "net/third_party/quiche/src/quic/platform/api/quic_socket_address.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" #include "net/third_party/quiche/src/quic/platform/api/quic_uint128.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { @@ -29,22 +29,22 @@ // Returns the 64 bit FNV1a hash of the data. See // http://www.isthe.com/chongo/tech/comp/fnv/index.html#FNV-param - static uint64_t FNV1a_64_Hash(QuicStringPiece data); + static uint64_t FNV1a_64_Hash(quiche::QuicheStringPiece data); // Returns the 128 bit FNV1a hash of the data. See // http://www.isthe.com/chongo/tech/comp/fnv/index.html#FNV-param - static QuicUint128 FNV1a_128_Hash(QuicStringPiece data); + static QuicUint128 FNV1a_128_Hash(quiche::QuicheStringPiece data); // Returns the 128 bit FNV1a hash of the two sequences of data. See // http://www.isthe.com/chongo/tech/comp/fnv/index.html#FNV-param - static QuicUint128 FNV1a_128_Hash_Two(QuicStringPiece data1, - QuicStringPiece data2); + static QuicUint128 FNV1a_128_Hash_Two(quiche::QuicheStringPiece data1, + quiche::QuicheStringPiece data2); // Returns the 128 bit FNV1a hash of the three sequences of data. See // http://www.isthe.com/chongo/tech/comp/fnv/index.html#FNV-param - static QuicUint128 FNV1a_128_Hash_Three(QuicStringPiece data1, - QuicStringPiece data2, - QuicStringPiece data3); + static QuicUint128 FNV1a_128_Hash_Three(quiche::QuicheStringPiece data1, + quiche::QuicheStringPiece data2, + quiche::QuicheStringPiece data3); // SerializeUint128 writes the first 96 bits of |v| in little-endian form // to |out|. @@ -78,7 +78,7 @@ char* buffer); // Creates an iovec pointing to the same data as |data|. - static struct iovec MakeIovec(QuicStringPiece data); + static struct iovec MakeIovec(quiche::QuicheStringPiece data); // Returns the opposite Perspective of the |perspective| passed in. static constexpr Perspective InvertPerspective(Perspective perspective) {
diff --git a/quic/core/quic_utils_test.cc b/quic/core/quic_utils_test.cc index 362c766..2633bab 100644 --- a/quic/core/quic_utils_test.cc +++ b/quic/core/quic_utils_test.cc
@@ -11,6 +11,7 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_arraysize.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/common/platform/api/quiche_string_piece.h" namespace quic { namespace test { @@ -99,7 +100,7 @@ data[i] = i % 255; } EXPECT_EQ(IncrementalHashReference(data.data(), data.size()), - QuicUtils::FNV1a_128_Hash(QuicStringPiece( + QuicUtils::FNV1a_128_Hash(quiche::QuicheStringPiece( reinterpret_cast<const char*>(data.data()), data.size()))); }
diff --git a/quic/core/quic_versions.cc b/quic/core/quic_versions.cc index b034b16..c387f3a 100644 --- a/quic/core/quic_versions.cc +++ b/quic/core/quic_versions.cc
@@ -14,8 +14,8 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_flag_utils.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_text_utils.h" #include "net/third_party/quiche/src/common/platform/api/quiche_endian.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h" namespace quic { namespace { @@ -170,7 +170,8 @@ return UnsupportedQuicVersion(); } int quic_version_number = 0; - if (QuicTextUtils::StringToInt(version_string, &quic_version_number) && + if (quiche::QuicheTextUtils::StringToInt(version_string, + &quic_version_number) && quic_version_number > 0) { return ParsedQuicVersion( PROTOCOL_QUIC_CRYPTO, @@ -448,7 +449,8 @@ std::string AlpnForVersion(ParsedQuicVersion parsed_version) { if (parsed_version.handshake_protocol == PROTOCOL_TLS1_3 && parsed_version.transport_version == QUIC_VERSION_99) { - return "h3-" + QuicTextUtils::Uint64ToString(kQuicIetfDraftVersion); + return "h3-" + + quiche::QuicheTextUtils::Uint64ToString(kQuicIetfDraftVersion); } return "h3-" + ParsedQuicVersionToString(parsed_version); }
diff --git a/quic/core/tls_client_handshaker.cc b/quic/core/tls_client_handshaker.cc index a222c20..b027004 100644 --- a/quic/core/tls_client_handshaker.cc +++ b/quic/core/tls_client_handshaker.cc
@@ -11,7 +11,8 @@ #include "net/third_party/quiche/src/quic/core/crypto/quic_encrypter.h" #include "net/third_party/quiche/src/quic/core/crypto/transport_parameters.h" #include "net/third_party/quiche/src/quic/core/quic_session.h" -#include "net/third_party/quiche/src/quic/platform/api/quic_text_utils.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h" namespace quic { @@ -133,8 +134,8 @@ success && (SSL_set_alpn_protos(ssl(), alpn, alpn_writer.length()) == 0); if (!success) { QUIC_BUG << "Failed to set ALPN: " - << QuicTextUtils::HexDump( - QuicStringPiece(alpn_writer.data(), alpn_writer.length())); + << quiche::QuicheTextUtils::HexDump(quiche::QuicheStringPiece( + alpn_writer.data(), alpn_writer.length())); return false; } QUIC_DLOG(INFO) << "Client using ALPN: '" << alpns[0] << "'"; @@ -415,7 +416,7 @@ } void TlsClientHandshaker::WriteMessage(EncryptionLevel level, - QuicStringPiece data) { + quiche::QuicheStringPiece data) { if (level == ENCRYPTION_HANDSHAKE && state_ < STATE_ENCRYPTION_HANDSHAKE_DATA_SENT) { state_ = STATE_ENCRYPTION_HANDSHAKE_DATA_SENT;
diff --git a/quic/core/tls_client_handshaker.h b/quic/core/tls_client_handshaker.h index 319cd17..0dd2320 100644 --- a/quic/core/tls_client_handshaker.h +++ b/quic/core/tls_client_handshaker.h
@@ -14,6 +14,7 @@ #include "net/third_party/quiche/src/quic/core/quic_crypto_stream.h" #include "net/third_party/quiche/src/quic/core/tls_handshaker.h" #include "net/third_party/quiche/src/quic/platform/api/quic_export.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { @@ -51,7 +52,8 @@ size_t BufferSizeLimitForLevel(EncryptionLevel level) const override; // Override to drop initial keys if trying to write ENCRYPTION_HANDSHAKE data. - void WriteMessage(EncryptionLevel level, QuicStringPiece data) override; + void WriteMessage(EncryptionLevel level, + quiche::QuicheStringPiece data) override; void AllowEmptyAlpnForTests() { allow_empty_alpn_for_tests_ = true; }
diff --git a/quic/core/tls_handshaker.cc b/quic/core/tls_handshaker.cc index bc09994..f937325 100644 --- a/quic/core/tls_handshaker.cc +++ b/quic/core/tls_handshaker.cc
@@ -10,6 +10,7 @@ #include "net/third_party/quiche/src/quic/core/tls_client_handshaker.h" #include "net/third_party/quiche/src/quic/platform/api/quic_arraysize.h" #include "net/third_party/quiche/src/quic/platform/api/quic_bug_tracker.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { @@ -21,7 +22,8 @@ TlsHandshaker::~TlsHandshaker() {} -bool TlsHandshaker::ProcessInput(QuicStringPiece input, EncryptionLevel level) { +bool TlsHandshaker::ProcessInput(quiche::QuicheStringPiece input, + EncryptionLevel level) { if (parser_error_ != QUIC_NO_ERROR) { return false; } @@ -80,7 +82,8 @@ std::move(encrypter)); } -void TlsHandshaker::WriteMessage(EncryptionLevel level, QuicStringPiece data) { +void TlsHandshaker::WriteMessage(EncryptionLevel level, + quiche::QuicheStringPiece data) { stream_->WriteCryptoData(level, data); }
diff --git a/quic/core/tls_handshaker.h b/quic/core/tls_handshaker.h index 14503cd..8fb5e38 100644 --- a/quic/core/tls_handshaker.h +++ b/quic/core/tls_handshaker.h
@@ -14,6 +14,7 @@ #include "net/third_party/quiche/src/quic/core/crypto/tls_connection.h" #include "net/third_party/quiche/src/quic/core/quic_session.h" #include "net/third_party/quiche/src/quic/platform/api/quic_export.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { @@ -37,7 +38,8 @@ ~TlsHandshaker() override; // From CryptoMessageParser - bool ProcessInput(QuicStringPiece input, EncryptionLevel level) override; + bool ProcessInput(quiche::QuicheStringPiece input, + EncryptionLevel level) override; size_t InputBytesRemaining() const override { return 0; } QuicErrorCode error() const override { return parser_error_; } const std::string& error_detail() const override { @@ -82,7 +84,8 @@ // WriteMessage is called when there is |data| from the TLS stack ready for // the QUIC stack to write in a crypto frame. The data must be transmitted at // encryption level |level|. - void WriteMessage(EncryptionLevel level, QuicStringPiece data) override; + void WriteMessage(EncryptionLevel level, + quiche::QuicheStringPiece data) override; // FlushFlight is called to signal that the current flight of // messages have all been written (via calls to WriteMessage) and can be
diff --git a/quic/core/tls_handshaker_test.cc b/quic/core/tls_handshaker_test.cc index a0a3b19..8d35e66 100644 --- a/quic/core/tls_handshaker_test.cc +++ b/quic/core/tls_handshaker_test.cc
@@ -18,6 +18,7 @@ #include "net/third_party/quiche/src/quic/test_tools/mock_quic_session_visitor.h" #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h" #include "net/third_party/quiche/src/quic/tools/fake_proof_verifier.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { namespace test { @@ -37,7 +38,7 @@ const uint16_t port, const std::string& server_config, QuicTransportVersion quic_version, - QuicStringPiece chlo_hash, + quiche::QuicheStringPiece chlo_hash, const std::vector<std::string>& certs, const std::string& cert_sct, const std::string& signature, @@ -174,7 +175,8 @@ return handshaker()->crypto_message_parser(); } - void WriteCryptoData(EncryptionLevel level, QuicStringPiece data) override { + void WriteCryptoData(EncryptionLevel level, + quiche::QuicheStringPiece data) override { pending_writes_.push_back(std::make_pair(std::string(data), level)); } @@ -334,7 +336,8 @@ .WillByDefault(Return(std::vector<std::string>({default_alpn}))); ON_CALL(server_session_, SelectAlpn(_)) .WillByDefault( - [default_alpn](const std::vector<QuicStringPiece>& alpns) { + [default_alpn]( + const std::vector<quiche::QuicheStringPiece>& alpns) { return std::find(alpns.begin(), alpns.end(), default_alpn); }); } @@ -493,8 +496,8 @@ }; server_stream_->WriteCryptoData( ENCRYPTION_INITIAL, - QuicStringPiece(bogus_handshake_message, - QUIC_ARRAYSIZE(bogus_handshake_message))); + quiche::QuicheStringPiece(bogus_handshake_message, + QUIC_ARRAYSIZE(bogus_handshake_message))); server_stream_->SendCryptoMessagesToPeer(client_stream_); EXPECT_FALSE(client_stream_->handshake_confirmed()); @@ -511,8 +514,8 @@ }; client_stream_->WriteCryptoData( ENCRYPTION_INITIAL, - QuicStringPiece(bogus_handshake_message, - QUIC_ARRAYSIZE(bogus_handshake_message))); + quiche::QuicheStringPiece(bogus_handshake_message, + QUIC_ARRAYSIZE(bogus_handshake_message))); client_stream_->SendCryptoMessagesToPeer(server_stream_); EXPECT_FALSE(server_stream_->handshake_confirmed()); @@ -573,9 +576,10 @@ TEST_F(TlsHandshakerTest, ServerRequiresCustomALPN) { const std::string kTestAlpn = "An ALPN That Client Did Not Offer"; EXPECT_CALL(server_session_, SelectAlpn(_)) - .WillOnce([kTestAlpn](const std::vector<QuicStringPiece>& alpns) { - return std::find(alpns.cbegin(), alpns.cend(), kTestAlpn); - }); + .WillOnce( + [kTestAlpn](const std::vector<quiche::QuicheStringPiece>& alpns) { + return std::find(alpns.cbegin(), alpns.cend(), kTestAlpn); + }); EXPECT_CALL(*client_conn_, CloseConnection(QUIC_HANDSHAKE_FAILED, "Server did not select ALPN", _)); EXPECT_CALL(*server_conn_, @@ -600,13 +604,15 @@ EXPECT_CALL(client_session_, GetAlpnsToOffer()) .WillRepeatedly(Return(kTestAlpns)); EXPECT_CALL(server_session_, SelectAlpn(_)) - .WillOnce( - [kTestAlpn, kTestAlpns](const std::vector<QuicStringPiece>& alpns) { - EXPECT_THAT(alpns, ElementsAreArray(kTestAlpns)); - return std::find(alpns.cbegin(), alpns.cend(), kTestAlpn); - }); - EXPECT_CALL(client_session_, OnAlpnSelected(QuicStringPiece(kTestAlpn))); - EXPECT_CALL(server_session_, OnAlpnSelected(QuicStringPiece(kTestAlpn))); + .WillOnce([kTestAlpn, kTestAlpns]( + const std::vector<quiche::QuicheStringPiece>& alpns) { + EXPECT_THAT(alpns, ElementsAreArray(kTestAlpns)); + return std::find(alpns.cbegin(), alpns.cend(), kTestAlpn); + }); + EXPECT_CALL(client_session_, + OnAlpnSelected(quiche::QuicheStringPiece(kTestAlpn))); + EXPECT_CALL(server_session_, + OnAlpnSelected(quiche::QuicheStringPiece(kTestAlpn))); client_stream_->CryptoConnect(); ExchangeHandshakeMessages(client_stream_, server_stream_);
diff --git a/quic/core/tls_server_handshaker.cc b/quic/core/tls_server_handshaker.cc index d9217c4..2d8cd79 100644 --- a/quic/core/tls_server_handshaker.cc +++ b/quic/core/tls_server_handshaker.cc
@@ -13,6 +13,7 @@ #include "net/third_party/quiche/src/quic/core/crypto/transport_parameters.h" #include "net/third_party/quiche/src/quic/platform/api/quic_hostname_utils.h" #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { @@ -282,7 +283,7 @@ size_t* out_len, size_t max_out, uint16_t sig_alg, - QuicStringPiece in) { + quiche::QuicheStringPiece in) { signature_callback_ = new SignatureCallback(this); proof_source_->ComputeTlsSignature( session()->connection()->self_address(), hostname_, sig_alg, in, @@ -369,7 +370,7 @@ CBS all_alpns; CBS_init(&all_alpns, in, in_len); - std::vector<QuicStringPiece> alpns; + std::vector<quiche::QuicheStringPiece> alpns; while (CBS_len(&all_alpns) > 0) { CBS alpn; if (!CBS_get_u8_length_prefixed(&all_alpns, &alpn)) {
diff --git a/quic/core/tls_server_handshaker.h b/quic/core/tls_server_handshaker.h index 507324b..7e65120 100644 --- a/quic/core/tls_server_handshaker.h +++ b/quic/core/tls_server_handshaker.h
@@ -15,6 +15,7 @@ #include "net/third_party/quiche/src/quic/core/quic_crypto_stream.h" #include "net/third_party/quiche/src/quic/core/tls_handshaker.h" #include "net/third_party/quiche/src/quic/platform/api/quic_export.h" +#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { @@ -74,11 +75,12 @@ uint8_t* out_len, const uint8_t* in, unsigned in_len) override; - ssl_private_key_result_t PrivateKeySign(uint8_t* out, - size_t* out_len, - size_t max_out, - uint16_t sig_alg, - QuicStringPiece in) override; + ssl_private_key_result_t PrivateKeySign( + uint8_t* out, + size_t* out_len, + size_t max_out, + uint16_t sig_alg, + quiche::QuicheStringPiece in) override; ssl_private_key_result_t PrivateKeyComplete(uint8_t* out, size_t* out_len, size_t max_out) override;