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