diff options
44 files changed, 260 insertions, 336 deletions
diff --git a/base/strings/string_util.cc b/base/strings/string_util.cc index e2b7311..380d455 100644 --- a/base/strings/string_util.cc +++ b/base/strings/string_util.cc @@ -810,30 +810,6 @@ void ReplaceSubstringsAfterOffset(std::string* str, } // namespace base -size_t Tokenize(const base::string16& str, - const base::string16& delimiters, - std::vector<base::string16>* tokens) { - *tokens = base::SplitString( - str, delimiters, base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); - return tokens->size(); -} - -size_t Tokenize(const std::string& str, - const std::string& delimiters, - std::vector<std::string>* tokens) { - *tokens = base::SplitString( - str, delimiters, base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); - return tokens->size(); -} - -size_t Tokenize(const base::StringPiece& str, - const base::StringPiece& delimiters, - std::vector<base::StringPiece>* tokens) { - *tokens = base::SplitStringPiece( - str, delimiters, base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); - return tokens->size(); -} - template<typename STR> static STR JoinStringT(const std::vector<STR>& parts, const STR& sep) { if (parts.empty()) diff --git a/base/strings/string_util.h b/base/strings/string_util.h index f5cf0b3..c231609 100644 --- a/base/strings/string_util.h +++ b/base/strings/string_util.h @@ -492,22 +492,6 @@ inline typename string_type::value_type* WriteInto(string_type* str, //----------------------------------------------------------------------------- -// Splits a string into its fields delimited by any of the characters in -// |delimiters|. Each field is added to the |tokens| vector. Returns the -// number of tokens found. -// -// DEPRECATED. Use base::SplitString for new code (these just forward). -// TODO(brettw) convert callers and delete these forwarders. -BASE_EXPORT size_t Tokenize(const base::string16& str, - const base::string16& delimiters, - std::vector<base::string16>* tokens); -BASE_EXPORT size_t Tokenize(const std::string& str, - const std::string& delimiters, - std::vector<std::string>* tokens); -BASE_EXPORT size_t Tokenize(const base::StringPiece& str, - const base::StringPiece& delimiters, - std::vector<base::StringPiece>* tokens); - // Does the opposite of SplitString(). BASE_EXPORT base::string16 JoinString(const std::vector<base::string16>& parts, base::char16 s); diff --git a/base/strings/string_util_unittest.cc b/base/strings/string_util_unittest.cc index ad7ff24..02b184c 100644 --- a/base/strings/string_util_unittest.cc +++ b/base/strings/string_util_unittest.cc @@ -669,108 +669,6 @@ TEST(StringUtilTest, HexDigitToInt) { EXPECT_EQ(15, HexDigitToInt('f')); } -// Test for Tokenize -template <typename STR> -void TokenizeTest() { - std::vector<STR> r; - size_t size; - - size = Tokenize(STR("This is a string"), STR(" "), &r); - EXPECT_EQ(4U, size); - ASSERT_EQ(4U, r.size()); - EXPECT_EQ(r[0], STR("This")); - EXPECT_EQ(r[1], STR("is")); - EXPECT_EQ(r[2], STR("a")); - EXPECT_EQ(r[3], STR("string")); - r.clear(); - - size = Tokenize(STR("one,two,three"), STR(","), &r); - EXPECT_EQ(3U, size); - ASSERT_EQ(3U, r.size()); - EXPECT_EQ(r[0], STR("one")); - EXPECT_EQ(r[1], STR("two")); - EXPECT_EQ(r[2], STR("three")); - r.clear(); - - size = Tokenize(STR("one,two:three;four"), STR(",:"), &r); - EXPECT_EQ(3U, size); - ASSERT_EQ(3U, r.size()); - EXPECT_EQ(r[0], STR("one")); - EXPECT_EQ(r[1], STR("two")); - EXPECT_EQ(r[2], STR("three;four")); - r.clear(); - - size = Tokenize(STR("one,two:three;four"), STR(";,:"), &r); - EXPECT_EQ(4U, size); - ASSERT_EQ(4U, r.size()); - EXPECT_EQ(r[0], STR("one")); - EXPECT_EQ(r[1], STR("two")); - EXPECT_EQ(r[2], STR("three")); - EXPECT_EQ(r[3], STR("four")); - r.clear(); - - size = Tokenize(STR("one, two, three"), STR(","), &r); - EXPECT_EQ(3U, size); - ASSERT_EQ(3U, r.size()); - EXPECT_EQ(r[0], STR("one")); - EXPECT_EQ(r[1], STR(" two")); - EXPECT_EQ(r[2], STR(" three")); - r.clear(); - - size = Tokenize(STR("one, two, three, "), STR(","), &r); - EXPECT_EQ(4U, size); - ASSERT_EQ(4U, r.size()); - EXPECT_EQ(r[0], STR("one")); - EXPECT_EQ(r[1], STR(" two")); - EXPECT_EQ(r[2], STR(" three")); - EXPECT_EQ(r[3], STR(" ")); - r.clear(); - - size = Tokenize(STR("one, two, three,"), STR(","), &r); - EXPECT_EQ(3U, size); - ASSERT_EQ(3U, r.size()); - EXPECT_EQ(r[0], STR("one")); - EXPECT_EQ(r[1], STR(" two")); - EXPECT_EQ(r[2], STR(" three")); - r.clear(); - - size = Tokenize(STR(), STR(","), &r); - EXPECT_EQ(0U, size); - ASSERT_EQ(0U, r.size()); - r.clear(); - - size = Tokenize(STR(","), STR(","), &r); - EXPECT_EQ(0U, size); - ASSERT_EQ(0U, r.size()); - r.clear(); - - size = Tokenize(STR(",;:."), STR(".:;,"), &r); - EXPECT_EQ(0U, size); - ASSERT_EQ(0U, r.size()); - r.clear(); - - size = Tokenize(STR("\t\ta\t"), STR("\t"), &r); - EXPECT_EQ(1U, size); - ASSERT_EQ(1U, r.size()); - EXPECT_EQ(r[0], STR("a")); - r.clear(); - - size = Tokenize(STR("\ta\t\nb\tcc"), STR("\n"), &r); - EXPECT_EQ(2U, size); - ASSERT_EQ(2U, r.size()); - EXPECT_EQ(r[0], STR("\ta\t")); - EXPECT_EQ(r[1], STR("b\tcc")); - r.clear(); -} - -TEST(StringUtilTest, TokenizeStdString) { - TokenizeTest<std::string>(); -} - -TEST(StringUtilTest, TokenizeStringPiece) { - TokenizeTest<StringPiece>(); -} - // Test for JoinString TEST(StringUtilTest, JoinString) { std::vector<std::string> in; diff --git a/base/trace_event/trace_event_memory.cc b/base/trace_event/trace_event_memory.cc index b173838..73c8536 100644 --- a/base/trace_event/trace_event_memory.cc +++ b/base/trace_event/trace_event_memory.cc @@ -347,8 +347,8 @@ void AppendHeapProfileTotalsAsTraceFormat(const std::string& line, // 55227 = Outstanding bytes (malloc bytes - free bytes) // 14653 = Total allocations (mallocs) // 2624014 = Total bytes (malloc bytes) - std::vector<std::string> tokens; - Tokenize(line, " :[]@", &tokens); + std::vector<std::string> tokens = base::SplitString( + line, " :[]@", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); if (tokens.size() < 4) { DLOG(WARNING) << "Invalid totals line " << line; return; @@ -377,8 +377,8 @@ bool AppendHeapProfileLineAsTraceFormat(const std::string& line, // 0x7fa7fa9b9ba0 0x7fa7f4b3be13 = Stack trace represented as pointers to // static strings from trace event categories // and names. - std::vector<std::string> tokens; - Tokenize(line, " :[]@", &tokens); + std::vector<std::string> tokens = base::SplitString( + line, " :[]@", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); // It's valid to have no stack addresses, so only require 4 tokens. if (tokens.size() < 4) { DLOG(WARNING) << "Invalid line " << line; diff --git a/chrome/browser/devtools/devtools_protocol_constants_generator.py b/chrome/browser/devtools/devtools_protocol_constants_generator.py index 372874d..7e53ac1 100755 --- a/chrome/browser/devtools/devtools_protocol_constants_generator.py +++ b/chrome/browser/devtools/devtools_protocol_constants_generator.py @@ -57,6 +57,7 @@ template_cc = string.Template("""\ // content/browser/devtools/browser_protocol.json #include "base/strings/string_number_conversions.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "$package/browser/devtools/devtools_protocol_constants.h" @@ -66,8 +67,8 @@ namespace devtools { const char kProtocolVersion[] = "$major.$minor"; bool IsSupportedProtocolVersion(const std::string& version) { - std::vector<std::string> tokens; - Tokenize(version, ".", &tokens); + std::vector<base::StringPiece> tokens = base::SplitStringPiece( + version, ".", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); int major, minor; return tokens.size() == 2 && base::StringToInt(tokens[0], &major) && major == $major && diff --git a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc index b138380..62ce4a2 100644 --- a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc +++ b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc @@ -9,6 +9,7 @@ #include "base/command_line.h" #include "base/path_service.h" #include "base/strings/string16.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "content/browser/accessibility/accessibility_tree_formatter.h" @@ -94,9 +95,9 @@ class DumpAccessibilityTreeTest : public DumpAccessibilityTestBase { base::string16 actual_contents_utf16; formatter.FormatAccessibilityTree(&actual_contents_utf16); std::string actual_contents = base::UTF16ToUTF8(actual_contents_utf16); - std::vector<std::string> actual_lines; - Tokenize(actual_contents, "\n", &actual_lines); - return actual_lines; + return base::SplitString( + actual_contents, "\n", + base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); } }; diff --git a/content/browser/appcache/view_appcache_internals_job.cc b/content/browser/appcache/view_appcache_internals_job.cc index 3ef6f81..f7a814a 100644 --- a/content/browser/appcache/view_appcache_internals_job.cc +++ b/content/browser/appcache/view_appcache_internals_job.cc @@ -276,7 +276,7 @@ void EmitHexDump(const char *buf, size_t buf_len, size_t total_len, out->append("</pre>"); } -GURL DecodeBase64URL(const std::string& base64) { +GURL DecodeBase64URL(base::StringPiece base64) { std::string url; base::Base64Decode(base64, &url); return GURL(url); @@ -647,16 +647,19 @@ net::URLRequestJob* ViewAppCacheInternalsJobFactory::CreateJobForRequest( return new ViewAppCacheJob(request, network_delegate, service, DecodeBase64URL(param)); - std::vector<std::string> tokens; - int64 response_id = 0; - int64 group_id = 0; - if (command == kViewEntryCommand && Tokenize(param, "|", &tokens) == 4u && - base::StringToInt64(tokens[2], &response_id) && - base::StringToInt64(tokens[3], &group_id)) { - return new ViewEntryJob(request, network_delegate, service, - DecodeBase64URL(tokens[0]), // manifest url - DecodeBase64URL(tokens[1]), // entry url - response_id, group_id); + if (command == kViewEntryCommand) { + std::vector<base::StringPiece> tokens = base::SplitStringPiece( + param, "|", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + int64 response_id = 0; + int64 group_id = 0; + if (tokens.size() == 4u && + base::StringToInt64(tokens[2], &response_id) && + base::StringToInt64(tokens[3], &group_id)) { + return new ViewEntryJob(request, network_delegate, service, + DecodeBase64URL(tokens[0]), // manifest url + DecodeBase64URL(tokens[1]), // entry url + response_id, group_id); + } } return new RedirectToMainPageJob(request, network_delegate, service); diff --git a/content/browser/cache_storage/cache_storage_cache.cc b/content/browser/cache_storage/cache_storage_cache.cc index 31a5129..2755666 100644 --- a/content/browser/cache_storage/cache_storage_cache.cc +++ b/content/browser/cache_storage/cache_storage_cache.cc @@ -10,6 +10,7 @@ #include "base/files/file_path.h" #include "base/guid.h" #include "base/metrics/histogram_macros.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "content/browser/cache_storage/cache_storage.pb.h" #include "content/browser/cache_storage/cache_storage_blob_to_disk_cache.h" @@ -114,12 +115,9 @@ bool VaryMatches(const ServiceWorkerHeaderMap& request, if (vary_iter == response.end()) return true; - std::vector<std::string> vary_keys; - Tokenize(vary_iter->second, ",", &vary_keys); - for (std::vector<std::string>::const_iterator it = vary_keys.begin(); - it != vary_keys.end(); ++it) { - std::string trimmed; - base::TrimWhitespaceASCII(*it, base::TRIM_ALL, &trimmed); + for (const std::string& trimmed : + base::SplitString(vary_iter->second, ",", + base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY)) { if (trimmed == "*") return false; diff --git a/content/browser/devtools/protocol/devtools_protocol_handler_generator.py b/content/browser/devtools/protocol/devtools_protocol_handler_generator.py index 0ba7415..da98468 100755 --- a/content/browser/devtools/protocol/devtools_protocol_handler_generator.py +++ b/content/browser/devtools/protocol/devtools_protocol_handler_generator.py @@ -244,6 +244,7 @@ template_cc = string.Template(header + """\ #include "base/bind.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_split.h" ${includes}\ namespace content { @@ -271,8 +272,8 @@ namespace devtools { const char kProtocolVersion[] = "${major}.${minor}"; bool IsSupportedProtocolVersion(const std::string& version) { - std::vector<std::string> tokens; - Tokenize(version, ".", &tokens); + std::vector<base::StringPiece> tokens = base::SplitStringPiece( + version, ".", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); int major, minor; return tokens.size() == 2 && base::StringToInt(tokens[0], &major) && major == ${major} && diff --git a/content/common/sandbox_mac.mm b/content/common/sandbox_mac.mm index a13aaf7..2da81a9 100644 --- a/content/common/sandbox_mac.mm +++ b/content/common/sandbox_mac.mm @@ -27,6 +27,7 @@ extern "C" { #include "base/rand_util.h" #include "base/strings/string16.h" #include "base/strings/string_piece.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/strings/sys_string_conversions.h" @@ -456,8 +457,10 @@ bool Sandbox::PostProcessSandboxProfile( } // Split string on "@" characters. - std::vector<std::string> raw_sandbox_pieces; - if (Tokenize([sandbox_data UTF8String], "@", &raw_sandbox_pieces) == 0) { + std::vector<std::string> raw_sandbox_pieces = base::SplitString( + [sandbox_data UTF8String], "@", base::KEEP_WHITESPACE, + base::SPLIT_WANT_NONEMPTY); + if (raw_sandbox_pieces.empty()) { DLOG(FATAL) << "Bad Sandbox profile, should contain at least one token (" << [sandbox_data UTF8String] << ")"; diff --git a/content/test/mock_google_streaming_server.cc b/content/test/mock_google_streaming_server.cc index 5d8b846..ad9937aa 100644 --- a/content/test/mock_google_streaming_server.cc +++ b/content/test/mock_google_streaming_server.cc @@ -6,6 +6,7 @@ #include "base/bind.h" #include "base/numerics/safe_conversions.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/sys_byteorder.h" @@ -41,17 +42,16 @@ void MockGoogleStreamingServer::OnRequestStart(int fetcher_id) { // Extract request argument from the the request URI. std::string query = GetURLFetcher(true)->GetOriginalURL().query(); - std::vector<std::string> query_params; - Tokenize(query, "&", &query_params); const net::UnescapeRule::Type kUnescapeAll = net::UnescapeRule::NORMAL | net::UnescapeRule::SPACES | net::UnescapeRule::URL_SPECIAL_CHARS | net::UnescapeRule::REPLACE_PLUS_WITH_SPACE; - for (size_t i = 0; i < query_params.size(); ++i) { - const std::string query_param = query_params[i]; - std::vector<std::string> param_parts; - Tokenize(query_param, "=", ¶m_parts); + for (const base::StringPiece& query_param : + base::SplitStringPiece(query, "&", base::KEEP_WHITESPACE, + base::SPLIT_WANT_NONEMPTY)) { + std::vector<std::string> param_parts = base::SplitString( + query_param, "=", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); if (param_parts.size() != 2) continue; std::string param_key = net::UnescapeURLComponent(param_parts[0], diff --git a/extensions/browser/api/vpn_provider/vpn_provider_api.cc b/extensions/browser/api/vpn_provider/vpn_provider_api.cc index fb82aab..069f171 100644 --- a/extensions/browser/api/vpn_provider/vpn_provider_api.cc +++ b/extensions/browser/api/vpn_provider/vpn_provider_api.cc @@ -9,6 +9,7 @@ #include "base/bind.h" #include "base/logging.h" #include "base/memory/scoped_ptr.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/values.h" #include "extensions/browser/api/vpn_provider/vpn_service.h" @@ -100,8 +101,10 @@ void ConvertParameters(const api_vpn::Parameters& parameters, return; } - std::vector<std::string> cidr_parts; - CHECK(Tokenize(parameters.address, kCIDRSeperator, &cidr_parts) == 2); + std::vector<std::string> cidr_parts = base::SplitString( + parameters.address, kCIDRSeperator, base::KEEP_WHITESPACE, + base::SPLIT_WANT_NONEMPTY); + CHECK_EQ(2u, cidr_parts.size()); parameter_value->SetStringWithoutPathExpansion( shill::kAddressParameterThirdPartyVpn, cidr_parts[0]); diff --git a/extensions/common/manifest_handlers/shared_module_info.cc b/extensions/common/manifest_handlers/shared_module_info.cc index 70f6ea9..99efe88 100644 --- a/extensions/common/manifest_handlers/shared_module_info.cc +++ b/extensions/common/manifest_handlers/shared_module_info.cc @@ -7,6 +7,7 @@ #include "base/lazy_instance.h" #include "base/memory/scoped_ptr.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/version.h" @@ -50,8 +51,8 @@ SharedModuleInfo::~SharedModuleInfo() { void SharedModuleInfo::ParseImportedPath(const std::string& path, std::string* import_id, std::string* import_relative_path) { - std::vector<std::string> tokens; - Tokenize(path, std::string("/"), &tokens); + std::vector<std::string> tokens = base::SplitString( + path, "/", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); if (tokens.size() > 2 && tokens[0] == kModulesDir && crx_file::id_util::IdIsValid(tokens[1])) { *import_id = tokens[1]; @@ -63,8 +64,8 @@ void SharedModuleInfo::ParseImportedPath(const std::string& path, // static bool SharedModuleInfo::IsImportedPath(const std::string& path) { - std::vector<std::string> tokens; - Tokenize(path, std::string("/"), &tokens); + std::vector<std::string> tokens = base::SplitString( + path, "/", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); if (tokens.size() > 2 && tokens[0] == kModulesDir && crx_file::id_util::IdIsValid(tokens[1])) { return true; diff --git a/google_apis/drive/time_util.cc b/google_apis/drive/time_util.cc index 6ac55e9..cf2b453 100644 --- a/google_apis/drive/time_util.cc +++ b/google_apis/drive/time_util.cc @@ -8,6 +8,7 @@ #include <vector> #include "base/strings/string_number_conversions.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/time/time.h" @@ -24,15 +25,15 @@ bool ParseTimezone(const base::StringPiece& timezone, int* out_offset_to_utc_in_minutes) { DCHECK(out_offset_to_utc_in_minutes); - std::vector<base::StringPiece> parts; - int num_of_token = Tokenize(timezone, ":", &parts); + std::vector<base::StringPiece> parts = base::SplitStringPiece( + timezone, ":", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); int hour = 0; - if (!base::StringToInt(parts[0], &hour)) + if (parts.empty() || !base::StringToInt(parts[0], &hour)) return false; int minute = 0; - if (num_of_token > 1 && !base::StringToInt(parts[1], &minute)) + if (parts.size() > 1 && !base::StringToInt(parts[1], &minute)) return false; *out_offset_to_utc_in_minutes = (hour * 60 + minute) * (ahead ? +1 : -1); @@ -52,8 +53,9 @@ bool GetTimeFromString(const base::StringPiece& raw_value, // Splits the string into "date" part and "time" part. { - std::vector<base::StringPiece> parts; - if (Tokenize(raw_value, "T", &parts) != 2) + std::vector<base::StringPiece> parts = base::SplitStringPiece( + raw_value, "T", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + if (parts.size() != 2) return false; date = parts[0]; time_and_tz = parts[1]; @@ -68,28 +70,37 @@ bool GetTimeFromString(const base::StringPiece& raw_value, offset_to_utc_in_minutes = 0; time = time_and_tz; time.remove_suffix(1); - } else if (Tokenize(time_and_tz, "+", &parts) == 2) { - // Timezone is "+hh:mm" format - if (!ParseTimezone(parts[1], true, &offset_to_utc_in_minutes)) - return false; - has_timezone = true; - time = parts[0]; - } else if (Tokenize(time_and_tz, "-", &parts) == 2) { - // Timezone is "-hh:mm" format - if (!ParseTimezone(parts[1], false, &offset_to_utc_in_minutes)) - return false; - has_timezone = true; - time = parts[0]; } else { - // No timezone (uses local timezone) - time = time_and_tz; + parts = base::SplitStringPiece( + time_and_tz, "+", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + if (parts.size() == 2) { + // Timezone is "+hh:mm" format + if (!ParseTimezone(parts[1], true, &offset_to_utc_in_minutes)) + return false; + has_timezone = true; + time = parts[0]; + } else { + parts = base::SplitStringPiece( + time_and_tz, "-", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + if (parts.size() == 2) { + // Timezone is "-hh:mm" format + if (!ParseTimezone(parts[1], false, &offset_to_utc_in_minutes)) + return false; + has_timezone = true; + time = parts[0]; + } else { + // No timezone (uses local timezone) + time = time_and_tz; + } + } } } // Parses the date part. { - std::vector<base::StringPiece> parts; - if (Tokenize(date, "-", &parts) != 3) + std::vector<base::StringPiece> parts = base::SplitStringPiece( + date, "-", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + if (parts.size() != 3) return false; if (!base::StringToInt(parts[0], &exploded.year) || @@ -101,9 +112,9 @@ bool GetTimeFromString(const base::StringPiece& raw_value, // Parses the time part. { - std::vector<base::StringPiece> parts; - int num_of_token = Tokenize(time, ":", &parts); - if (num_of_token != 3) + std::vector<base::StringPiece> parts = base::SplitStringPiece( + time, ":", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + if (parts.size() != 3) return false; if (!base::StringToInt(parts[0], &exploded.hour) || @@ -111,16 +122,16 @@ bool GetTimeFromString(const base::StringPiece& raw_value, return false; } - std::vector<base::StringPiece> seconds_parts; - int num_of_seconds_token = Tokenize(parts[2], ".", &seconds_parts); - if (num_of_seconds_token >= 3) + std::vector<base::StringPiece> seconds_parts = base::SplitStringPiece( + parts[2], ".", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + if (seconds_parts.size() >= 3) return false; if (!base::StringToInt(seconds_parts[0], &exploded.second)) - return false; + return false; // Only accept milli-seconds (3-digits). - if (num_of_seconds_token > 1 && + if (seconds_parts.size() > 1 && seconds_parts[1].length() == 3 && !base::StringToInt(seconds_parts[1], &exploded.millisecond)) { return false; diff --git a/google_apis/gaia/oauth2_mint_token_flow.cc b/google_apis/gaia/oauth2_mint_token_flow.cc index 9818f08..0316c63 100644 --- a/google_apis/gaia/oauth2_mint_token_flow.cc +++ b/google_apis/gaia/oauth2_mint_token_flow.cc @@ -13,6 +13,7 @@ #include "base/json/json_reader.h" #include "base/message_loop/message_loop.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" @@ -262,11 +263,9 @@ bool OAuth2MintTokenFlow::ParseIssueAdviceResponse( } base::TrimWhitespace(entry.description, base::TRIM_ALL, &entry.description); - static const base::string16 detail_separators = - base::ASCIIToUTF16(kDetailSeparators); - Tokenize(detail, detail_separators, &entry.details); - for (size_t i = 0; i < entry.details.size(); i++) - base::TrimWhitespace(entry.details[i], base::TRIM_ALL, &entry.details[i]); + entry.details = base::SplitString( + detail, base::ASCIIToUTF16(kDetailSeparators), + base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY); issue_advice->push_back(entry); } diff --git a/google_apis/gcm/engine/account_mapping.cc b/google_apis/gcm/engine/account_mapping.cc index db7b3a1..7b0bfb0 100644 --- a/google_apis/gcm/engine/account_mapping.cc +++ b/google_apis/gcm/engine/account_mapping.cc @@ -5,6 +5,7 @@ #include "google_apis/gcm/engine/account_mapping.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" namespace gcm { @@ -80,8 +81,8 @@ std::string AccountMapping::SerializeAsString() const { } bool AccountMapping::ParseFromString(const std::string& value) { - std::vector<std::string> values; - Tokenize(value, kSeparator, &values); + std::vector<std::string> values = base::SplitString( + value, kSeparator, base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); if (values.size() != kSizeWithNoMessage && values.size() != kSizeWithMessage) { return false; diff --git a/gpu/command_buffer/service/feature_info.cc b/gpu/command_buffer/service/feature_info.cc index c747383..0ce9980 100644 --- a/gpu/command_buffer/service/feature_info.cc +++ b/gpu/command_buffer/service/feature_info.cc @@ -56,8 +56,8 @@ class StringSet { } void Init(const std::string& str) { - std::vector<std::string> tokens; - Tokenize(str, " ", &tokens); + std::vector<std::string> tokens = base::SplitString( + str, " ", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); string_set_.insert(tokens.begin(), tokens.end()); } diff --git a/gpu/command_buffer/service/test_helper.cc b/gpu/command_buffer/service/test_helper.cc index a0f144b..308ab8e8 100644 --- a/gpu/command_buffer/service/test_helper.cc +++ b/gpu/command_buffer/service/test_helper.cc @@ -8,6 +8,7 @@ #include <string> #include "base/strings/string_number_conversions.h" +#include "base/strings/string_split.h" #include "base/strings/string_tokenizer.h" #include "gpu/command_buffer/service/buffer_manager.h" #include "gpu/command_buffer/service/error_state_mock.h" @@ -364,7 +365,8 @@ void TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion( // Persistent storage is needed for the split extension string. split_extensions_.clear(); if (extensions) { - Tokenize(extensions, " ", &split_extensions_); + split_extensions_ = base::SplitString( + extensions, " ", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); } gfx::GLVersionInfo gl_info(gl_version, gl_renderer, extensions); diff --git a/media/blink/cache_util_unittest.cc b/media/blink/cache_util_unittest.cc index 7ea2f13..56dc49e 100644 --- a/media/blink/cache_util_unittest.cc +++ b/media/blink/cache_util_unittest.cc @@ -8,6 +8,7 @@ #include "base/format_macros.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "testing/gtest/include/gtest/gtest.h" @@ -33,13 +34,13 @@ static WebURLResponse CreateResponse(const GRFUTestCase& test) { response.initialize(); response.setHTTPVersion(test.version); response.setHTTPStatusCode(test.status_code); - std::vector<std::string> lines; - Tokenize(test.headers, "\n", &lines); - for (size_t i = 0; i < lines.size(); ++i) { - size_t colon = lines[i].find(": "); + for (const std::string& line : + base::SplitString(test.headers, "\n", base::KEEP_WHITESPACE, + base::SPLIT_WANT_NONEMPTY)) { + size_t colon = line.find(": "); response.addHTTPHeaderField( - WebString::fromUTF8(lines[i].substr(0, colon)), - WebString::fromUTF8(lines[i].substr(colon + 2))); + WebString::fromUTF8(line.substr(0, colon)), + WebString::fromUTF8(line.substr(colon + 2))); } return response; } diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc index 25f6ed4..cb806c7 100644 --- a/media/ffmpeg/ffmpeg_common.cc +++ b/media/ffmpeg/ffmpeg_common.cc @@ -8,6 +8,7 @@ #include "base/logging.h" #include "base/metrics/histogram.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "media/base/decoder_buffer.h" #include "media/base/video_util.h" @@ -563,23 +564,30 @@ PixelFormat VideoFormatToPixelFormat(VideoFrame::Format video_format) { return PIX_FMT_NONE; } -bool FFmpegUTCDateToTime(const char* date_utc, - base::Time* out) { +bool FFmpegUTCDateToTime(const char* date_utc, base::Time* out) { DCHECK(date_utc); DCHECK(out); - std::vector<std::string> fields; - std::vector<std::string> date_fields; - std::vector<std::string> time_fields; - base::Time::Exploded exploded; - exploded.millisecond = 0; + std::vector<base::StringPiece> fields = base::SplitStringPiece( + date_utc, " ", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + if (fields.size() != 2) + return false; + + std::vector<base::StringPiece> date_fields = base::SplitStringPiece( + fields[0], "-", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + if (date_fields.size() != 3) + return false; // TODO(acolwell): Update this parsing code when FFmpeg returns sub-second // information. - if ((Tokenize(date_utc, " ", &fields) == 2) && - (Tokenize(fields[0], "-", &date_fields) == 3) && - (Tokenize(fields[1], ":", &time_fields) == 3) && - base::StringToInt(date_fields[0], &exploded.year) && + std::vector<base::StringPiece> time_fields = base::SplitStringPiece( + fields[1], ":", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + if (time_fields.size() != 3) + return false; + + base::Time::Exploded exploded; + exploded.millisecond = 0; + if (base::StringToInt(date_fields[0], &exploded.year) && base::StringToInt(date_fields[1], &exploded.month) && base::StringToInt(date_fields[2], &exploded.day_of_month) && base::StringToInt(time_fields[0], &exploded.hour) && diff --git a/media/filters/stream_parser_factory.cc b/media/filters/stream_parser_factory.cc index cac29e1..9ea2b0e 100644 --- a/media/filters/stream_parser_factory.cc +++ b/media/filters/stream_parser_factory.cc @@ -8,6 +8,7 @@ #include "base/metrics/histogram.h" #include "base/strings/pattern.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "media/base/media_switches.h" #include "media/formats/mpeg/adts_stream_parser.h" @@ -111,9 +112,9 @@ static int GetMP4AudioObjectType(const std::string& codec_id, // the second element is a hexadecimal representation of the MP4 Registration // Authority ObjectTypeIndication (OTI). Note that MP4RA uses a leading "0x" // with these values, which is omitted here and hence implied. - std::vector<std::string> tokens; - if (Tokenize(codec_id, ".", &tokens) == 3 && - tokens[0] == "mp4a" && tokens[1] == "40") { + std::vector<base::StringPiece> tokens = base::SplitStringPiece( + codec_id, ".", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + if (tokens.size() == 3 && tokens[0] == "mp4a" && tokens[1] == "40") { // From RFC 6381 section 3.3: // One of the OTI values for 'mp4a' is 40 (identifying MPEG-4 audio). For // this value, the third element identifies the audio ObjectTypeIndication diff --git a/media/formats/mp4/avc_unittest.cc b/media/formats/mp4/avc_unittest.cc index b0aa976..e9ec17b 100644 --- a/media/formats/mp4/avc_unittest.cc +++ b/media/formats/mp4/avc_unittest.cc @@ -5,6 +5,7 @@ #include <string.h> #include "base/basictypes.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "media/base/decrypt_config.h" #include "media/base/stream_parser_buffer.h" @@ -134,16 +135,19 @@ void StringToAnnexB(const std::string& str, std::vector<uint8>* buffer, std::vector<SubsampleEntry>* subsamples) { DCHECK(!str.empty()); - std::vector<std::string> subsample_specs; - EXPECT_GT(Tokenize(str, " ", &subsample_specs), 0u); + std::vector<std::string> subsample_specs = base::SplitString( + str, " ", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + EXPECT_GT(subsample_specs.size(), 0u); buffer->clear(); for (size_t i = 0; i < subsample_specs.size(); ++i) { SubsampleEntry entry; size_t start = buffer->size(); - std::vector<std::string> subsample_nalus; - EXPECT_GT(Tokenize(subsample_specs[i], ",", &subsample_nalus), 0u); + std::vector<std::string> subsample_nalus = base::SplitString( + subsample_specs[i], ",", base::KEEP_WHITESPACE, + base::SPLIT_WANT_NONEMPTY); + EXPECT_GT(subsample_nalus.size(), 0u); for (size_t j = 0; j < subsample_nalus.size(); ++j) { WriteStartCodeAndNALUType(buffer, subsample_nalus[j]); diff --git a/media/test/pipeline_integration_test.cc b/media/test/pipeline_integration_test.cc index 71d0f3c..766afae 100644 --- a/media/test/pipeline_integration_test.cc +++ b/media/test/pipeline_integration_test.cc @@ -6,6 +6,7 @@ #include "base/command_line.h" #include "base/memory/scoped_ptr.h" #include "base/stl_util.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "build/build_config.h" #include "media/base/cdm_callback_promise.h" @@ -566,7 +567,8 @@ class MockMediaSource { std::string codecs_param = mimetype_.substr(codecs_param_start, codecs_param_end - codecs_param_start); - Tokenize(codecs_param, ",", &codecs); + codecs = base::SplitString( + codecs_param, ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); } CHECK_EQ(chunk_demuxer_->AddId(kSourceId, type, codecs), ChunkDemuxer::kOk); diff --git a/net/proxy/proxy_config_service_linux.cc b/net/proxy/proxy_config_service_linux.cc index de4d472..c26c0e1 100644 --- a/net/proxy/proxy_config_service_linux.cc +++ b/net/proxy/proxy_config_service_linux.cc @@ -29,6 +29,7 @@ #include "base/nix/xdg_util.h" #include "base/single_thread_task_runner.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_split.h" #include "base/strings/string_tokenizer.h" #include "base/strings/string_util.h" #include "base/threading/thread_restrictions.h" @@ -836,10 +837,10 @@ bool SettingGetterImplGSettings::LoadAndCheckVersion( // need them now, and to figure out where to get them, we have to check // for this binary. See http://crbug.com/69057 for additional details. base::ThreadRestrictions::ScopedAllowIO allow_io; - std::vector<std::string> paths; - Tokenize(path, ":", &paths); - for (size_t i = 0; i < paths.size(); ++i) { - base::FilePath file(paths[i]); + + for (const base::StringPiece& path_str : base::SplitStringPiece( + path, ":", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY)) { + base::FilePath file(path_str); if (base::PathExists(file.Append("gnome-network-properties"))) { VLOG(1) << "Found gnome-network-properties. Will fall back to gconf."; return false; diff --git a/net/server/http_server_request_info.cc b/net/server/http_server_request_info.cc index 23729b2..df5cff6 100644 --- a/net/server/http_server_request_info.cc +++ b/net/server/http_server_request_info.cc @@ -4,6 +4,7 @@ #include "net/server/http_server_request_info.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" namespace net { @@ -28,12 +29,11 @@ bool HttpServerRequestInfo::HasHeaderValue( DCHECK_EQ(base::StringToLowerASCII(header_value), header_value); std::string complete_value = GetHeaderValue(header_name); base::StringToLowerASCII(&complete_value); - std::vector<std::string> value_items; - Tokenize(complete_value, ",", &value_items); - for (std::vector<std::string>::iterator it = value_items.begin(); - it != value_items.end(); ++it) { - base::TrimString(*it, " \t", &*it); - if (*it == header_value) + + for (const base::StringPiece& cur : + base::SplitString(complete_value, ",", base::KEEP_WHITESPACE, + base::SPLIT_WANT_NONEMPTY)) { + if (base::TrimString(cur, " \t", base::TRIM_ALL) == header_value) return true; } return false; diff --git a/net/tools/dump_cache/url_to_filename_encoder_unittest.cc b/net/tools/dump_cache/url_to_filename_encoder_unittest.cc index a1a9665..e4d866f 100644 --- a/net/tools/dump_cache/url_to_filename_encoder_unittest.cc +++ b/net/tools/dump_cache/url_to_filename_encoder_unittest.cc @@ -7,6 +7,7 @@ #include <string> #include <vector> +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/strings/string_piece.h" @@ -32,11 +33,11 @@ class UrlToFilenameEncoderTest : public ::testing::Test { } void CheckSegmentLength(const StringPiece& escaped_word) { - std::vector<StringPiece> components; - Tokenize(escaped_word, StringPiece("/"), &components); - for (size_t i = 0; i < components.size(); ++i) { + for (const base::StringPiece& component : + base::SplitStringPiece(escaped_word, "/", base::KEEP_WHITESPACE, + base::SPLIT_WANT_NONEMPTY)) { EXPECT_GE(UrlToFilenameEncoder::kMaximumSubdirectoryLength, - components[i].size()); + component.size()); } } diff --git a/net/tools/quic/quic_client_bin.cc b/net/tools/quic/quic_client_bin.cc index 3fc8be1..e14843e 100644 --- a/net/tools/quic/quic_client_bin.cc +++ b/net/tools/quic/quic_client_bin.cc @@ -234,11 +234,11 @@ int main(int argc, char *argv[]) { FLAGS_body.empty() ? "GET" : "POST", url.spec(), "HTTP/1.1"); // Append any additional headers supplied on the command line. - vector<string> headers_tokenized; - Tokenize(FLAGS_headers, ";", &headers_tokenized); - for (size_t i = 0; i < headers_tokenized.size(); ++i) { + for (const std::string& header : + base::SplitString(FLAGS_headers, ";", base::KEEP_WHITESPACE, + base::SPLIT_WANT_NONEMPTY)) { string sp; - base::TrimWhitespaceASCII(headers_tokenized[i], base::TRIM_ALL, &sp); + base::TrimWhitespaceASCII(header, base::TRIM_ALL, &sp); if (sp.empty()) { continue; } diff --git a/net/tools/quic/quic_simple_client_bin.cc b/net/tools/quic/quic_simple_client_bin.cc index 824521d..827e685 100644 --- a/net/tools/quic/quic_simple_client_bin.cc +++ b/net/tools/quic/quic_simple_client_bin.cc @@ -234,11 +234,11 @@ int main(int argc, char *argv[]) { request.url = url; // Append any additional headers supplied on the command line. - vector<string> headers_tokenized; - Tokenize(FLAGS_headers, ";", &headers_tokenized); - for (size_t i = 0; i < headers_tokenized.size(); ++i) { + for (const std::string& header : + base::SplitString(FLAGS_headers, ";", base::KEEP_WHITESPACE, + base::SPLIT_WANT_NONEMPTY)) { string sp; - base::TrimWhitespaceASCII(headers_tokenized[i], base::TRIM_ALL, &sp); + base::TrimWhitespaceASCII(header, base::TRIM_ALL, &sp); if (sp.empty()) { continue; } diff --git a/net/url_request/url_request_http_job_unittest.cc b/net/url_request/url_request_http_job_unittest.cc index 5ca046f..fde6568 100644 --- a/net/url_request/url_request_http_job_unittest.cc +++ b/net/url_request/url_request_http_job_unittest.cc @@ -10,6 +10,7 @@ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/run_loop.h" +#include "base/strings/string_split.h" #include "net/base/auth.h" #include "net/base/request_priority.h" #include "net/http/http_transaction_factory.h" @@ -73,10 +74,10 @@ class URLRequestHttpJobTest : public ::testing::Test { // This check isn't wrapped with EXPECT* macros because different // results from this function may be expected in different tests. - std::vector<std::string> tokens; - size_t num_tokens = Tokenize(encoding_headers, ", ", &tokens); - for (size_t i = 0; i < num_tokens; i++) { - if (!base::strncasecmp(tokens[i].data(), "sdch", tokens[i].length())) + for (const std::string& token : + base::SplitString(encoding_headers, ", ", base::KEEP_WHITESPACE, + base::SPLIT_WANT_NONEMPTY)) { + if (!base::strncasecmp(token.data(), "sdch", token.length())) return true; } return false; diff --git a/remoting/base/capabilities.cc b/remoting/base/capabilities.cc index 4e52ef8..1226492 100644 --- a/remoting/base/capabilities.cc +++ b/remoting/base/capabilities.cc @@ -8,24 +8,28 @@ #include <vector> #include "base/stl_util.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" namespace remoting { bool HasCapability(const std::string& capabilities, const std::string& key) { - std::vector<std::string> caps; - Tokenize(capabilities, " ", &caps); - return std::find(caps.begin(), caps.end(), key) != caps.end(); + std::vector<base::StringPiece> caps = base::SplitStringPiece( + capabilities, " ", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + return std::find(caps.begin(), caps.end(), base::StringPiece(key)) != + caps.end(); } std::string IntersectCapabilities(const std::string& client_capabilities, const std::string& host_capabilities) { - std::vector<std::string> client_caps; - Tokenize(client_capabilities, " ", &client_caps); + std::vector<std::string> client_caps = base::SplitString( + client_capabilities, " ", base::KEEP_WHITESPACE, + base::SPLIT_WANT_NONEMPTY); std::sort(client_caps.begin(), client_caps.end()); - std::vector<std::string> host_caps; - Tokenize(host_capabilities, " ", &host_caps); + std::vector<std::string> host_caps = base::SplitString( + host_capabilities, " ", base::KEEP_WHITESPACE, + base::SPLIT_WANT_NONEMPTY); std::sort(host_caps.begin(), host_caps.end()); std::vector<std::string> result = diff --git a/remoting/base/capabilities_unittest.cc b/remoting/base/capabilities_unittest.cc index 162c96d..71dbd56 100644 --- a/remoting/base/capabilities_unittest.cc +++ b/remoting/base/capabilities_unittest.cc @@ -5,6 +5,7 @@ #include <algorithm> #include <vector> +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "remoting/base/capabilities.h" #include "testing/gtest/include/gtest/gtest.h" @@ -61,9 +62,9 @@ TEST(CapabilitiesTest, HasCapability) { // Verify that HasCapability(|capabilities|, |key|) returns |result|. // |result|. for (size_t i = 0; i < arraysize(data); ++i) { - std::vector<std::string> caps; - Tokenize(data[i].capabilities, " ", &caps); - + std::vector<std::string> caps = base::SplitString( + data[i].capabilities, " ", base::KEEP_WHITESPACE, + base::SPLIT_WANT_NONEMPTY); do { EXPECT_EQ(data[i].result, HasCapability(JoinString(caps, " "), data[i].key)); @@ -93,9 +94,8 @@ TEST(CapabilitiesTest, Intersect) { // Verify that intersection of |right| with all permutations of |left| yields // |result|. for (size_t i = 0; i < arraysize(data); ++i) { - std::vector<std::string> caps; - Tokenize(data[i].left, " ", &caps); - + std::vector<std::string> caps = base::SplitString( + data[i].left, " ", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); do { EXPECT_EQ(data[i].result, IntersectCapabilities(JoinString(caps, " "), data[i].right)); diff --git a/remoting/host/client_session_unittest.cc b/remoting/host/client_session_unittest.cc index 4ce6319..696f83f 100644 --- a/remoting/host/client_session_unittest.cc +++ b/remoting/host/client_session_unittest.cc @@ -8,6 +8,7 @@ #include "base/message_loop/message_loop.h" #include "base/run_loop.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/test/test_simple_task_runner.h" #include "remoting/base/auto_thread_task_runner.h" @@ -100,10 +101,12 @@ MATCHER_P(EqCapabilities, expected_capabilities, "") { if (!arg.has_capabilities()) return false; - std::vector<std::string> words_args; - std::vector<std::string> words_expected; - Tokenize(arg.capabilities(), " ", &words_args); - Tokenize(expected_capabilities, " ", &words_expected); + std::vector<std::string> words_args = base::SplitString( + arg.capabilities(), " ", base::KEEP_WHITESPACE, + base::SPLIT_WANT_NONEMPTY); + std::vector<std::string> words_expected = base::SplitString( + expected_capabilities, " ", base::KEEP_WHITESPACE, + base::SPLIT_WANT_NONEMPTY); std::sort(words_args.begin(), words_args.end()); std::sort(words_expected.begin(), words_expected.end()); return words_args == words_expected; diff --git a/remoting/host/host_extension_session_manager_unittest.cc b/remoting/host/host_extension_session_manager_unittest.cc index 25e18c4..5be438b 100644 --- a/remoting/host/host_extension_session_manager_unittest.cc +++ b/remoting/host/host_extension_session_manager_unittest.cc @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "remoting/codec/video_encoder.h" #include "remoting/host/fake_host_extension.h" @@ -79,8 +80,9 @@ TEST_F(HostExtensionSessionManagerTest, ExtensionCapabilities_AreReported) { HostExtensionSessionManager extension_manager(extensions_, &client_session_control_); - std::vector<std::string> reported_caps; - Tokenize(extension_manager.GetCapabilities(), " ", &reported_caps); + std::vector<std::string> reported_caps = base::SplitString( + extension_manager.GetCapabilities(), " ", base::KEEP_WHITESPACE, + base::SPLIT_WANT_NONEMPTY); std::sort(reported_caps.begin(), reported_caps.end()); ASSERT_EQ(2U, reported_caps.size()); diff --git a/sync/test/fake_server/fake_server_entity.cc b/sync/test/fake_server/fake_server_entity.cc index 4dd8411..784eeb5 100644 --- a/sync/test/fake_server/fake_server_entity.cc +++ b/sync/test/fake_server/fake_server_entity.cc @@ -14,6 +14,7 @@ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "net/base/net_errors.h" @@ -81,11 +82,11 @@ std::string FakeServerEntity::GetTopLevelId(const ModelType& model_type) { // static ModelType FakeServerEntity::GetModelTypeFromId(const string& id) { - vector<string> tokens; - size_t token_count = Tokenize(id, kIdSeparator, &tokens); + vector<base::StringPiece> tokens = base::SplitStringPiece( + id, kIdSeparator, base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); int field_number; - if (token_count != 2 || !base::StringToInt(tokens[0], &field_number)) { + if (tokens.size() != 2 || !base::StringToInt(tokens[0], &field_number)) { return syncer::UNSPECIFIED; } diff --git a/ui/aura/window_tree_host_x11.cc b/ui/aura/window_tree_host_x11.cc index 65fbc49..8059d90 100644 --- a/ui/aura/window_tree_host_x11.cc +++ b/ui/aura/window_tree_host_x11.cc @@ -20,6 +20,7 @@ #include "base/command_line.h" #include "base/stl_util.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/sys_info.h" @@ -115,10 +116,11 @@ class TouchEventCalibrate : public ui::PlatformEventObserver { TouchEventCalibrate() : left_(0), right_(0), top_(0), bottom_(0) { if (ui::PlatformEventSource::GetInstance()) ui::PlatformEventSource::GetInstance()->AddPlatformEventObserver(this); - std::vector<std::string> parts; - if (Tokenize(base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( + std::vector<std::string> parts = base::SplitString( + base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( switches::kTouchCalibration), - ",", &parts) >= 4) { + ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + if (parts.size() >= 4) { if (!base::StringToInt(parts[0], &left_)) DLOG(ERROR) << "Incorrect left border calibration value passed."; if (!base::StringToInt(parts[1], &right_)) diff --git a/ui/base/dragdrop/os_exchange_data_provider_aurax11.cc b/ui/base/dragdrop/os_exchange_data_provider_aurax11.cc index c9285a0..e7a815c4 100644 --- a/ui/base/dragdrop/os_exchange_data_provider_aurax11.cc +++ b/ui/base/dragdrop/os_exchange_data_provider_aurax11.cc @@ -6,6 +6,7 @@ #include "base/logging.h" #include "base/memory/ref_counted_memory.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "net/base/filename_util.h" @@ -259,10 +260,11 @@ bool OSExchangeDataProviderAuraX11::GetURLAndTitle( base::string16 unparsed; data.AssignTo(&unparsed); - std::vector<base::string16> tokens; - size_t num_tokens = Tokenize(unparsed, base::ASCIIToUTF16("\n"), &tokens); - if (num_tokens > 0) { - if (num_tokens > 1) + std::vector<base::string16> tokens = base::SplitString( + unparsed, base::ASCIIToUTF16("\n"), + base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + if (tokens.size() > 0) { + if (tokens.size() > 1) *title = tokens[1]; else *title = base::string16(); diff --git a/ui/base/ime/chromeos/input_method_whitelist.cc b/ui/base/ime/chromeos/input_method_whitelist.cc index 568e91c..8086ef9 100644 --- a/ui/base/ime/chromeos/input_method_whitelist.cc +++ b/ui/base/ime/chromeos/input_method_whitelist.cc @@ -6,6 +6,7 @@ #include <vector> +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "chromeos/ime/input_methods.h" #include "ui/base/ime/chromeos/extension_ime_util.h" @@ -38,8 +39,9 @@ InputMethodWhitelist::GetSupportedInputMethods() const { std::vector<std::string> layouts; layouts.push_back(kInputMethods[i].xkb_layout_id); - std::vector<std::string> languages; - Tokenize(kInputMethods[i].language_code, kLanguageDelimiter, &languages); + std::vector<std::string> languages = base::SplitString( + kInputMethods[i].language_code, kLanguageDelimiter, + base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); DCHECK(!languages.empty()); input_methods->push_back(InputMethodDescriptor( diff --git a/ui/base/x/selection_utils.cc b/ui/base/x/selection_utils.cc index d5ce1c0..cc9afbe 100644 --- a/ui/base/x/selection_utils.cc +++ b/ui/base/x/selection_utils.cc @@ -8,6 +8,7 @@ #include "base/i18n/icu_string_conversions.h" #include "base/logging.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "ui/base/clipboard/clipboard.h" @@ -79,10 +80,8 @@ std::vector<std::string> ParseURIList(const SelectionData& data) { // uri-lists are newline separated file lists in URL encoding. std::string unparsed; data.AssignTo(&unparsed); - - std::vector<std::string> tokens; - Tokenize(unparsed, "\n", &tokens); - return tokens; + return base::SplitString( + unparsed, "\n", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); } std::string RefCountedMemoryToString( diff --git a/ui/events/ozone/evdev/libgestures_glue/gesture_property_provider.cc b/ui/events/ozone/evdev/libgestures_glue/gesture_property_provider.cc index 3adb358..45cd381 100644 --- a/ui/events/ozone/evdev/libgestures_glue/gesture_property_provider.cc +++ b/ui/events/ozone/evdev/libgestures_glue/gesture_property_provider.cc @@ -721,7 +721,8 @@ struct ConfigurationSection { MatchCriteria::MatchCriteria(const std::string& arg) { // TODO(sheckylin): Should we trim all tokens here? - Tokenize(arg, "|", &args_); + args_ = base::SplitString( + arg, "|", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); if (args_.empty()) { LOG(ERROR) << "Empty match pattern found, will evaluate to the default " "value (true): \"" << arg << "\""; diff --git a/ui/events/ozone/evdev/touch_event_converter_evdev.cc b/ui/events/ozone/evdev/touch_event_converter_evdev.cc index 7596242..4a46de3 100644 --- a/ui/events/ozone/evdev/touch_event_converter_evdev.cc +++ b/ui/events/ozone/evdev/touch_event_converter_evdev.cc @@ -21,6 +21,7 @@ #include "base/memory/scoped_vector.h" #include "base/message_loop/message_loop.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/trace_event/trace_event.h" @@ -48,10 +49,11 @@ struct TouchCalibration { }; void GetTouchCalibration(TouchCalibration* cal) { - std::vector<std::string> parts; - if (Tokenize(base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( - switches::kTouchCalibration), - ",", &parts) >= 4) { + std::vector<std::string> parts = base::SplitString( + base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( + switches::kTouchCalibration), + ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + if (parts.size() >= 4) { if (!base::StringToInt(parts[0], &cal->bezel_left)) LOG(ERROR) << "Incorrect left border calibration value passed."; if (!base::StringToInt(parts[1], &cal->bezel_right)) diff --git a/ui/gl/gl_egl_api_implementation.cc b/ui/gl/gl_egl_api_implementation.cc index 792fdc5..cfdd026 100644 --- a/ui/gl/gl_egl_api_implementation.cc +++ b/ui/gl/gl_egl_api_implementation.cc @@ -11,13 +11,14 @@ #include "ui/gl/gl_implementation.h" namespace { + std::string FilterExtensionList( const char* extensions, const std::vector<std::string>& disabled_extensions) { if (extensions == NULL) return ""; - std::vector<std::string> extension_vec; - base::SplitString(extensions, ' ', &extension_vec); + std::vector<std::string> extension_vec = base::SplitString( + extensions, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); extension_vec.erase(std::remove_if( extension_vec.begin(), extension_vec.end(), [&disabled_extensions](const std::string& ext) { @@ -26,7 +27,8 @@ std::string FilterExtensionList( }), extension_vec.end()); return JoinString(extension_vec, " "); } -} + +} // namespace namespace gfx { @@ -92,7 +94,9 @@ void RealEGLApi::InitializeWithCommandLine(DriverEGL* driver, disabled_exts_.clear(); filtered_exts_.clear(); if (!disabled_extensions.empty()) { - Tokenize(disabled_extensions, ", ;", &disabled_exts_); + disabled_exts_ = base::SplitString( + disabled_extensions, ", ;", + base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); } } diff --git a/ui/gl/gl_gl_api_implementation.cc b/ui/gl/gl_gl_api_implementation.cc index a8d4dbe..1d6fcb1 100644 --- a/ui/gl/gl_gl_api_implementation.cc +++ b/ui/gl/gl_gl_api_implementation.cc @@ -417,7 +417,9 @@ void RealGLApi::InitializeWithCommandLine(DriverGL* driver, const std::string disabled_extensions = command_line->GetSwitchValueASCII( switches::kDisableGLExtensions); if (!disabled_extensions.empty()) { - Tokenize(disabled_extensions, ", ;", &disabled_exts_); + disabled_exts_ = base::SplitString( + disabled_extensions, ", ;", + base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); } } @@ -466,8 +468,10 @@ void RealGLApi::InitializeFilteredExtensions() { gfx::kGLImplementationDesktopGLCoreProfile) { const char* gl_extensions = reinterpret_cast<const char*>( GLApiBase::glGetStringFn(GL_EXTENSIONS)); - if (gl_extensions) - base::SplitString(gl_extensions, ' ', &filtered_exts_); + if (gl_extensions) { + filtered_exts_ = base::SplitString( + gl_extensions, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); + } } else { GLint num_extensions = 0; GLApiBase::glGetIntegervFn(GL_NUM_EXTENSIONS, &num_extensions); @@ -515,8 +519,8 @@ void VirtualGLApi::Initialize(DriverGL* driver, GLContext* real_context) { DCHECK(real_context->IsCurrent(NULL)); std::string ext_string = real_context->GetExtensions(); - std::vector<std::string> ext; - Tokenize(ext_string, " ", &ext); + std::vector<std::string> ext = base::SplitString( + ext_string, " ", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); std::vector<std::string>::iterator it; // We can't support GL_EXT_occlusion_query_boolean which is diff --git a/win8/metro_driver/file_picker.cc b/win8/metro_driver/file_picker.cc index 1ccfbb9..b41e6be 100644 --- a/win8/metro_driver/file_picker.cc +++ b/win8/metro_driver/file_picker.cc @@ -305,9 +305,8 @@ HRESULT OpenFilePickerSession::StartFilePicker() { break; // There can be a single extension, or a list of semicolon-separated ones. - std::vector<base::string16> extensions_win32_style; - size_t extension_count = Tokenize(walk, L";", &extensions_win32_style); - DCHECK_EQ(extension_count, extensions_win32_style.size()); + std::vector<base::string16> extensions_win32_style = base::SplitString( + walk, L";", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); // Metro wants suffixes only, not patterns. mswrw::HString extension; @@ -476,9 +475,8 @@ HRESULT SaveFilePickerSession::StartFilePicker() { break; // There can be a single extension, or a list of semicolon-separated ones. - std::vector<base::string16> extensions_win32_style; - size_t extension_count = Tokenize(walk, L";", &extensions_win32_style); - DCHECK_EQ(extension_count, extensions_win32_style.size()); + std::vector<base::string16> extensions_win32_style = base::SplitString( + walk, L";", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); // Metro wants suffixes only, not patterns. Also, metro does not support // the all files ("*") pattern in the save picker. diff --git a/win8/metro_driver/file_picker_ash.cc b/win8/metro_driver/file_picker_ash.cc index e45301c..a420b53 100644 --- a/win8/metro_driver/file_picker_ash.cc +++ b/win8/metro_driver/file_picker_ash.cc @@ -8,6 +8,7 @@ #include "base/bind.h" #include "base/logging.h" #include "base/message_loop/message_loop.h" +#include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/synchronization/waitable_event.h" #include "base/win/metro.h" @@ -239,9 +240,8 @@ HRESULT OpenFilePickerSession::StartFilePicker() { break; // There can be a single extension, or a list of semicolon-separated ones. - std::vector<base::string16> extensions_win32_style; - size_t extension_count = Tokenize(walk, L";", &extensions_win32_style); - DCHECK_EQ(extension_count, extensions_win32_style.size()); + std::vector<base::string16> extensions_win32_style = base::SplitString( + walk, L";", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); // Metro wants suffixes only, not patterns. mswrw::HString extension; @@ -421,9 +421,8 @@ HRESULT SaveFilePickerSession::StartFilePicker() { break; // There can be a single extension, or a list of semicolon-separated ones. - std::vector<base::string16> extensions_win32_style; - size_t extension_count = Tokenize(walk, L";", &extensions_win32_style); - DCHECK_EQ(extension_count, extensions_win32_style.size()); + std::vector<base::string16> extensions_win32_style = base::SplitString( + walk, L";", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); // Metro wants suffixes only, not patterns. Also, metro does not support // the all files ("*") pattern in the save picker. |