From c30a6232df03e1efbd9f3b226777b07e087a1122 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Mon, 12 Oct 2020 14:27:29 +0200 Subject: BASELINE: Update Chromium to 85.0.4183.140 Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057 Reviewed-by: Allan Sandfeld Jensen --- chromium/base/strings/string_split.cc | 145 ++++------------------------------ 1 file changed, 17 insertions(+), 128 deletions(-) (limited to 'chromium/base/strings/string_split.cc') diff --git a/chromium/base/strings/string_split.cc b/chromium/base/strings/string_split.cc index a968e802e8c..4ba0412cc2c 100644 --- a/chromium/base/strings/string_split.cc +++ b/chromium/base/strings/string_split.cc @@ -7,6 +7,7 @@ #include #include "base/logging.h" +#include "base/strings/string_split_internal.h" #include "base/strings/string_util.h" #include "base/third_party/icu/icu_utf.h" @@ -14,56 +15,6 @@ namespace base { namespace { -// Returns either the ASCII or UTF-16 whitespace. -template BasicStringPiece WhitespaceForType(); -#if defined(OS_WIN) && defined(BASE_STRING16_IS_STD_U16STRING) -template <> -WStringPiece WhitespaceForType() { - return kWhitespaceWide; -} -#endif - -template<> StringPiece16 WhitespaceForType() { - return kWhitespaceUTF16; -} -template<> StringPiece WhitespaceForType() { - return kWhitespaceASCII; -} - -// General string splitter template. Can take 8- or 16-bit input, can produce -// the corresponding string or StringPiece output. -template -static std::vector SplitStringT( - BasicStringPiece str, - BasicStringPiece delimiter, - WhitespaceHandling whitespace, - SplitResult result_type) { - std::vector result; - if (str.empty()) - return result; - - size_t start = 0; - while (start != Str::npos) { - size_t end = str.find_first_of(delimiter, start); - - BasicStringPiece piece; - if (end == Str::npos) { - piece = str.substr(start); - start = Str::npos; - } else { - piece = str.substr(start, end - start); - start = end + 1; - } - - if (whitespace == TRIM_WHITESPACE) - piece = TrimString(piece, WhitespaceForType(), TRIM_ALL); - - if (result_type == SPLIT_WANT_ALL || !piece.empty()) - result.emplace_back(piece); - } - return result; -} - bool AppendStringKeyValue(StringPiece input, char delimiter, StringPairs* result) { @@ -94,67 +45,38 @@ bool AppendStringKeyValue(StringPiece input, return true; } -template -std::vector SplitStringUsingSubstrT( - BasicStringPiece input, - BasicStringPiece delimiter, - WhitespaceHandling whitespace, - SplitResult result_type) { - using Piece = BasicStringPiece; - using size_type = typename Piece::size_type; - - std::vector result; - if (delimiter.size() == 0) { - result.emplace_back(input); - return result; - } - - for (size_type begin_index = 0, end_index = 0; end_index != Piece::npos; - begin_index = end_index + delimiter.size()) { - end_index = input.find(delimiter, begin_index); - Piece term = end_index == Piece::npos - ? input.substr(begin_index) - : input.substr(begin_index, end_index - begin_index); - - if (whitespace == TRIM_WHITESPACE) - term = TrimString(term, WhitespaceForType(), TRIM_ALL); - - if (result_type == SPLIT_WANT_ALL || !term.empty()) - result.emplace_back(term); - } - - return result; -} - } // namespace std::vector SplitString(StringPiece input, StringPiece separators, WhitespaceHandling whitespace, SplitResult result_type) { - return SplitStringT(input, separators, whitespace, result_type); + return internal::SplitStringT(input, separators, whitespace, + result_type); } std::vector SplitString(StringPiece16 input, StringPiece16 separators, WhitespaceHandling whitespace, SplitResult result_type) { - return SplitStringT(input, separators, whitespace, result_type); + return internal::SplitStringT(input, separators, whitespace, + result_type); } std::vector SplitStringPiece(StringPiece input, StringPiece separators, WhitespaceHandling whitespace, SplitResult result_type) { - return SplitStringT(input, separators, whitespace, result_type); + return internal::SplitStringT(input, separators, whitespace, + result_type); } std::vector SplitStringPiece(StringPiece16 input, StringPiece16 separators, WhitespaceHandling whitespace, SplitResult result_type) { - return SplitStringT(input, separators, whitespace, - result_type); + return internal::SplitStringT(input, separators, whitespace, + result_type); } bool SplitStringIntoKeyValuePairs(StringPiece input, @@ -192,16 +114,16 @@ std::vector SplitStringUsingSubstr(StringPiece16 input, StringPiece16 delimiter, WhitespaceHandling whitespace, SplitResult result_type) { - return SplitStringUsingSubstrT(input, delimiter, whitespace, - result_type); + return internal::SplitStringUsingSubstrT(input, delimiter, + whitespace, result_type); } std::vector SplitStringUsingSubstr(StringPiece input, StringPiece delimiter, WhitespaceHandling whitespace, SplitResult result_type) { - return SplitStringUsingSubstrT(input, delimiter, whitespace, - result_type); + return internal::SplitStringUsingSubstrT( + input, delimiter, whitespace, result_type); } std::vector SplitStringPieceUsingSubstr( @@ -210,8 +132,8 @@ std::vector SplitStringPieceUsingSubstr( WhitespaceHandling whitespace, SplitResult result_type) { std::vector result; - return SplitStringUsingSubstrT(input, delimiter, whitespace, - result_type); + return internal::SplitStringUsingSubstrT( + input, delimiter, whitespace, result_type); } std::vector SplitStringPieceUsingSubstr( @@ -219,41 +141,8 @@ std::vector SplitStringPieceUsingSubstr( StringPiece delimiter, WhitespaceHandling whitespace, SplitResult result_type) { - return SplitStringUsingSubstrT(input, delimiter, whitespace, - result_type); -} - -#if defined(OS_WIN) && defined(BASE_STRING16_IS_STD_U16STRING) -std::vector SplitString(WStringPiece input, - WStringPiece separators, - WhitespaceHandling whitespace, - SplitResult result_type) { - return SplitStringT(input, separators, whitespace, result_type); -} - -std::vector SplitStringPiece(WStringPiece input, - WStringPiece separators, - WhitespaceHandling whitespace, - SplitResult result_type) { - return SplitStringT(input, separators, whitespace, result_type); -} - -std::vector SplitStringUsingSubstr(WStringPiece input, - WStringPiece delimiter, - WhitespaceHandling whitespace, - SplitResult result_type) { - return SplitStringUsingSubstrT(input, delimiter, whitespace, - result_type); -} - -std::vector SplitStringPieceUsingSubstr( - WStringPiece input, - WStringPiece delimiter, - WhitespaceHandling whitespace, - SplitResult result_type) { - return SplitStringUsingSubstrT(input, delimiter, whitespace, - result_type); + return internal::SplitStringUsingSubstrT( + input, delimiter, whitespace, result_type); } -#endif } // namespace base -- cgit v1.2.1