Make sure ParseQuicTagVector returns an empty array on an empty string This CL makes ParseQuicTagVector match Chrome's net::ParseQuicConnectionOptions so we can remove that and use this instead. The only functional difference is that an empty string needs to return an empty vector. This function is currently only used in our test client so the change does not require flag protection. Test-only change PiperOrigin-RevId: 317945520 Change-Id: I29a2bec31ba39f37ff00f7352c288f9dcd51ea72
diff --git a/quic/core/quic_tag.cc b/quic/core/quic_tag.cc index e15787b..d6c2f6c 100644 --- a/quic/core/quic_tag.cc +++ b/quic/core/quic_tag.cc
@@ -94,10 +94,13 @@ QuicTagVector ParseQuicTagVector(quiche::QuicheStringPiece tags_string) { QuicTagVector tag_vector; - std::vector<quiche::QuicheStringPiece> tag_strings = - quiche::QuicheTextUtils::Split(tags_string, ','); - for (quiche::QuicheStringPiece tag_string : tag_strings) { - tag_vector.push_back(ParseQuicTag(tag_string)); + quiche::QuicheTextUtils::RemoveLeadingAndTrailingWhitespace(&tags_string); + if (!tags_string.empty()) { + std::vector<quiche::QuicheStringPiece> tag_strings = + quiche::QuicheTextUtils::Split(tags_string, ','); + for (quiche::QuicheStringPiece tag_string : tag_strings) { + tag_vector.push_back(ParseQuicTag(tag_string)); + } } return tag_vector; }
diff --git a/quic/core/quic_tag_test.cc b/quic/core/quic_tag_test.cc index fa031ac..13c899e 100644 --- a/quic/core/quic_tag_test.cc +++ b/quic/core/quic_tag_test.cc
@@ -36,6 +36,7 @@ TEST_F(QuicTagTest, ParseQuicTag) { QuicTag tag_abcd = MakeQuicTag('A', 'B', 'C', 'D'); EXPECT_EQ(ParseQuicTag("ABCD"), tag_abcd); + EXPECT_EQ(ParseQuicTag("ABCDE"), tag_abcd); QuicTag tag_efgh = MakeQuicTag('E', 'F', 'G', 'H'); EXPECT_EQ(ParseQuicTag("EFGH"), tag_efgh); QuicTag tag_ijk = MakeQuicTag('I', 'J', 'K', 0); @@ -45,9 +46,15 @@ QuicTag tag_hex = MakeQuicTag('M', 'N', 'O', static_cast<char>(255)); EXPECT_EQ(ParseQuicTag("4d4e4fff"), tag_hex); EXPECT_EQ(ParseQuicTag("4D4E4FFF"), tag_hex); + QuicTag tag_with_numbers = MakeQuicTag('P', 'Q', '1', '2'); + EXPECT_EQ(ParseQuicTag("PQ12"), tag_with_numbers); + QuicTag tag_with_custom_chars = MakeQuicTag('r', '$', '_', '7'); + EXPECT_EQ(ParseQuicTag("r$_7"), tag_with_custom_chars); QuicTag tag_zero = 0; EXPECT_EQ(ParseQuicTag(""), tag_zero); QuicTagVector tag_vector; + EXPECT_EQ(ParseQuicTagVector(""), tag_vector); + EXPECT_EQ(ParseQuicTagVector(" "), tag_vector); tag_vector.push_back(tag_abcd); EXPECT_EQ(ParseQuicTagVector("ABCD"), tag_vector); tag_vector.push_back(tag_efgh); @@ -58,8 +65,14 @@ EXPECT_EQ(ParseQuicTagVector("ABCD,EFGH,IJK,L"), tag_vector); tag_vector.push_back(tag_hex); EXPECT_EQ(ParseQuicTagVector("ABCD,EFGH,IJK,L,4d4e4fff"), tag_vector); + tag_vector.push_back(tag_with_numbers); + EXPECT_EQ(ParseQuicTagVector("ABCD,EFGH,IJK,L,4d4e4fff,PQ12"), tag_vector); + tag_vector.push_back(tag_with_custom_chars); + EXPECT_EQ(ParseQuicTagVector("ABCD,EFGH,IJK,L,4d4e4fff,PQ12,r$_7"), + tag_vector); tag_vector.push_back(tag_zero); - EXPECT_EQ(ParseQuicTagVector("ABCD,EFGH,IJK,L,4d4e4fff,"), tag_vector); + EXPECT_EQ(ParseQuicTagVector("ABCD,EFGH,IJK,L,4d4e4fff,PQ12,r$_7,"), + tag_vector); } } // namespace