Move UTF16ToASCII, remove WideToASCII.
This removes WideToASCII and changes all callers to use UTF16ToASCII instead.
Moves UTF16ToASCII from base/strings/string_util.h to base/strings/utf_string_conversions.h and into the base namespace.
Convert a few related string_util functions to take a StringPiece16 instead of a string16. Remove IsStringASCII(std::wstring) which was unused.
Updates callers' includes and namespace usage accordingly.
TBR=sky
Review URL: https://codereview.chromium.org/176843022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@257200 0039d316-1c4b-4281-b951-d872f2087c98
CrOS-Libchrome-Original-Commit: 74f778ee567a5e18ae6766416711b92fc6e7f39a
diff --git a/base/command_line.cc b/base/command_line.cc
index eb3da4b..be6b4f2 100644
--- a/base/command_line.cc
+++ b/base/command_line.cc
@@ -81,7 +81,8 @@
parse_switches &= (arg != kSwitchTerminator);
if (parse_switches && IsSwitch(arg, &switch_string, &switch_value)) {
#if defined(OS_WIN)
- command_line.AppendSwitchNative(WideToASCII(switch_string), switch_value);
+ command_line.AppendSwitchNative(base::UTF16ToASCII(switch_string),
+ switch_value);
#elif defined(OS_POSIX)
command_line.AppendSwitchNative(switch_string, switch_value);
#endif
@@ -308,7 +309,7 @@
return std::string();
}
#if defined(OS_WIN)
- return WideToASCII(value);
+ return base::UTF16ToASCII(value);
#else
return value;
#endif
diff --git a/base/files/file_path.cc b/base/files/file_path.cc
index 3ea5856..d47becb 100644
--- a/base/files/file_path.cc
+++ b/base/files/file_path.cc
@@ -633,8 +633,8 @@
std::string FilePath::MaybeAsASCII() const {
if (IsStringASCII(path_))
- return WideToASCII(path_);
- return "";
+ return UTF16ToASCII(path_);
+ return std::string();
}
std::string FilePath::AsUTF8Unsafe() const {
diff --git a/base/strings/string_util.cc b/base/strings/string_util.cc
index eb9f315..e514ac1 100644
--- a/base/strings/string_util.cc
+++ b/base/strings/string_util.cc
@@ -326,20 +326,6 @@
} // namespace base
-#if !defined(WCHAR_T_IS_UTF16)
-bool IsStringASCII(const std::wstring& str);
-#endif
-
-std::string WideToASCII(const std::wstring& wide) {
- DCHECK(IsStringASCII(wide)) << wide;
- return std::string(wide.begin(), wide.end());
-}
-
-std::string UTF16ToASCII(const string16& utf16) {
- DCHECK(IsStringASCII(utf16)) << utf16;
- return std::string(utf16.begin(), utf16.end());
-}
-
template<class STR>
static bool DoIsStringASCII(const STR& str) {
for (size_t i = 0; i < str.length(); i++) {
@@ -350,20 +336,14 @@
return true;
}
-#if !defined(WCHAR_T_IS_UTF16)
-bool IsStringASCII(const std::wstring& str) {
- return DoIsStringASCII(str);
-}
-#endif
-
-bool IsStringASCII(const string16& str) {
- return DoIsStringASCII(str);
-}
-
bool IsStringASCII(const base::StringPiece& str) {
return DoIsStringASCII(str);
}
+bool IsStringASCII(const base::string16& str) {
+ return DoIsStringASCII(str);
+}
+
bool IsStringUTF8(const std::string& str) {
const char *src = str.data();
int32 src_len = static_cast<int32>(str.length());
diff --git a/base/strings/string_util.h b/base/strings/string_util.h
index c6fe14a..473deae 100644
--- a/base/strings/string_util.h
+++ b/base/strings/string_util.h
@@ -19,8 +19,6 @@
#include "base/strings/string16.h"
#include "base/strings/string_piece.h" // For implicit conversions.
-// Safe standard library wrappers for all platforms.
-
namespace base {
// C standard-library functions like "strncasecmp" and "snprintf" that aren't
@@ -246,11 +244,6 @@
#error Define string operations appropriately for your platform
#endif
-// Converts to 7-bit ASCII by truncating. The result must be known to be ASCII
-// beforehand.
-BASE_EXPORT std::string WideToASCII(const std::wstring& wide);
-BASE_EXPORT std::string UTF16ToASCII(const base::string16& utf16);
-
// Returns true if the specified string matches the criteria. How can a wide
// string be 8-bit or UTF8? It contains only characters that are < 256 (in the
// first case) or characters that use only 8-bits and whose 8-bit
diff --git a/base/strings/string_util_unittest.cc b/base/strings/string_util_unittest.cc
index 3434e11..e447cdc 100644
--- a/base/strings/string_util_unittest.cc
+++ b/base/strings/string_util_unittest.cc
@@ -400,20 +400,20 @@
for (size_t i = 0; i < arraysize(char_cases); ++i) {
EXPECT_TRUE(IsStringASCII(char_cases[i]));
- std::wstring wide = ASCIIToWide(char_cases[i]);
- EXPECT_EQ(wchar_cases[i], wide);
+ string16 utf16 = ASCIIToUTF16(char_cases[i]);
+ EXPECT_EQ(WideToUTF16(wchar_cases[i]), utf16);
- std::string ascii = WideToASCII(wchar_cases[i]);
+ std::string ascii = UTF16ToASCII(WideToUTF16(wchar_cases[i]));
EXPECT_EQ(char_cases[i], ascii);
}
EXPECT_FALSE(IsStringASCII("Google \x80Video"));
// Convert empty strings.
- std::wstring wempty;
+ string16 empty16;
std::string empty;
- EXPECT_EQ(empty, WideToASCII(wempty));
- EXPECT_EQ(wempty, ASCIIToWide(empty));
+ EXPECT_EQ(empty, UTF16ToASCII(empty16));
+ EXPECT_EQ(empty16, ASCIIToUTF16(empty));
// Convert strings with an embedded NUL character.
const char chars_with_nul[] = "test\0string";
@@ -422,7 +422,7 @@
std::wstring wide_with_nul = ASCIIToWide(string_with_nul);
EXPECT_EQ(static_cast<std::wstring::size_type>(length_with_nul),
wide_with_nul.length());
- std::string narrow_with_nul = WideToASCII(wide_with_nul);
+ std::string narrow_with_nul = UTF16ToASCII(WideToUTF16(wide_with_nul));
EXPECT_EQ(static_cast<std::string::size_type>(length_with_nul),
narrow_with_nul.length());
EXPECT_EQ(0, string_with_nul.compare(narrow_with_nul));
diff --git a/base/strings/utf_string_conversions.cc b/base/strings/utf_string_conversions.cc
index c3ea4f2..f13ed1b 100644
--- a/base/strings/utf_string_conversions.cc
+++ b/base/strings/utf_string_conversions.cc
@@ -182,4 +182,9 @@
return string16(ascii.begin(), ascii.end());
}
+std::string UTF16ToASCII(const string16& utf16) {
+ DCHECK(IsStringASCII(utf16)) << UTF16ToUTF8(utf16);
+ return std::string(utf16.begin(), utf16.end());
+}
+
} // namespace base
diff --git a/base/strings/utf_string_conversions.h b/base/strings/utf_string_conversions.h
index fa245ea..242cd66 100644
--- a/base/strings/utf_string_conversions.h
+++ b/base/strings/utf_string_conversions.h
@@ -44,6 +44,10 @@
BASE_EXPORT std::wstring ASCIIToWide(const StringPiece& ascii);
BASE_EXPORT string16 ASCIIToUTF16(const StringPiece& ascii);
+// Converts to 7-bit ASCII by truncating. The result must be known to be ASCII
+// beforehand.
+BASE_EXPORT std::string UTF16ToASCII(const string16& utf16);
+
} // namespace base
// We are trying to get rid of wstring as much as possible, but it's too big a