diff --git a/pc/ice_server_parsing.cc b/pc/ice_server_parsing.cc index a38e28cd66..d9b4c39943 100644 --- a/pc/ice_server_parsing.cc +++ b/pc/ice_server_parsing.cc @@ -171,12 +171,12 @@ static RTCErrorType ParseIceServerUrl( std::vector tokens; cricket::ProtocolType turn_transport_type = cricket::PROTO_UDP; RTC_DCHECK(!url.empty()); - rtc::tokenize_with_empty_tokens(url, '?', &tokens); + rtc::split(url, '?', &tokens); std::string uri_without_transport = tokens[0]; // Let's look into transport= param, if it exists. if (tokens.size() == kTurnTransportTokensNum) { // ?transport= is present. std::string uri_transport_param = tokens[1]; - rtc::tokenize_with_empty_tokens(uri_transport_param, '=', &tokens); + rtc::split(uri_transport_param, '=', &tokens); if (tokens[0] != kTransport) { RTC_LOG(LS_WARNING) << "Invalid transport parameter key."; return RTCErrorType::SYNTAX_ERROR; diff --git a/pc/sdp_serializer.cc b/pc/sdp_serializer.cc index e0847d6658..3f46db5bb0 100644 --- a/pc/sdp_serializer.cc +++ b/pc/sdp_serializer.cc @@ -102,7 +102,7 @@ rtc::StringBuilder& operator<<(rtc::StringBuilder& builder, // rid-id = 1*(alpha-numeric / "-" / "_") ; see: I-D.ietf-mmusic-rid RTCErrorOr ParseSimulcastLayerList(const std::string& str) { std::vector tokens; - rtc::tokenize_with_empty_tokens(str, kDelimiterSemicolonChar, &tokens); + rtc::split(str, kDelimiterSemicolonChar, &tokens); if (tokens.empty()) { return ParseError("Layer list cannot be empty."); } @@ -114,7 +114,7 @@ RTCErrorOr ParseSimulcastLayerList(const std::string& str) { } std::vector rid_tokens; - rtc::tokenize_with_empty_tokens(token, kDelimiterCommaChar, &rid_tokens); + rtc::split(token, kDelimiterCommaChar, &rid_tokens); if (rid_tokens.empty()) { return ParseError("Simulcast alternative layer list is malformed."); diff --git a/rtc_base/string_encode.cc b/rtc_base/string_encode.cc index f30eda2dc5..3b41076fd8 100644 --- a/rtc_base/string_encode.cc +++ b/rtc_base/string_encode.cc @@ -171,21 +171,6 @@ size_t tokenize(const std::string& source, return fields->size(); } -size_t tokenize_with_empty_tokens(const std::string& source, - char delimiter, - std::vector* fields) { - fields->clear(); - size_t last = 0; - for (size_t i = 0; i < source.length(); ++i) { - if (source[i] == delimiter) { - fields->push_back(source.substr(last, i - last)); - last = i + 1; - } - } - fields->push_back(source.substr(last, source.length() - last)); - return fields->size(); -} - bool tokenize_first(const std::string& source, const char delimiter, std::string* token, diff --git a/rtc_base/string_encode.h b/rtc_base/string_encode.h index fc48cac7d1..577c45f9f0 100644 --- a/rtc_base/string_encode.h +++ b/rtc_base/string_encode.h @@ -72,11 +72,6 @@ size_t tokenize(const std::string& source, char delimiter, std::vector* fields); -// Tokenize, including the empty tokens. -size_t tokenize_with_empty_tokens(const std::string& source, - char delimiter, - std::vector* fields); - // Extract the first token from source as separated by delimiter, with // duplicates of delimiter ignored. Return false if the delimiter could not be // found, otherwise return true. diff --git a/rtc_base/string_encode_unittest.cc b/rtc_base/string_encode_unittest.cc index 96b6445539..3dd79c954f 100644 --- a/rtc_base/string_encode_unittest.cc +++ b/rtc_base/string_encode_unittest.cc @@ -169,22 +169,6 @@ TEST(TokenizeTest, CompareSubstrings) { ASSERT_EQ(0ul, fields.size()); } -TEST(TokenizeTest, TokenizeWithEmptyTokens) { - std::vector fields; - EXPECT_EQ(3ul, tokenize_with_empty_tokens("a.b.c", '.', &fields)); - EXPECT_EQ("a", fields[0]); - EXPECT_EQ("b", fields[1]); - EXPECT_EQ("c", fields[2]); - - EXPECT_EQ(3ul, tokenize_with_empty_tokens("..c", '.', &fields)); - EXPECT_TRUE(fields[0].empty()); - EXPECT_TRUE(fields[1].empty()); - EXPECT_EQ("c", fields[2]); - - EXPECT_EQ(1ul, tokenize_with_empty_tokens("", '.', &fields)); - EXPECT_TRUE(fields[0].empty()); -} - TEST(TokenizeFirstTest, NoLeadingSpaces) { std::string token; std::string rest; @@ -267,6 +251,22 @@ TEST(SplitTest, CompareSubstrings) { ASSERT_STREQ("", fields.at(0).c_str()); } +TEST(SplitTest, EmptyTokens) { + std::vector fields; + EXPECT_EQ(3ul, split("a.b.c", '.', &fields)); + EXPECT_EQ("a", fields[0]); + EXPECT_EQ("b", fields[1]); + EXPECT_EQ("c", fields[2]); + + EXPECT_EQ(3ul, split("..c", '.', &fields)); + EXPECT_TRUE(fields[0].empty()); + EXPECT_TRUE(fields[1].empty()); + EXPECT_EQ("c", fields[2]); + + EXPECT_EQ(1ul, split("", '.', &fields)); + EXPECT_TRUE(fields[0].empty()); +} + TEST(ToString, SanityCheck) { EXPECT_EQ(ToString(true), "true"); EXPECT_EQ(ToString(false), "false");