Remove CFX_{Byte,Wide}String::ConvertFrom().

Use/add CFX_{Byte,Wide}String::FromFoo() instead.

R=tsepez@chromium.org

Review URL: https://codereview.chromium.org/1711893003 .
diff --git a/core/include/fxcrt/fx_string.h b/core/include/fxcrt/fx_string.h
index 36eba8d..c625bfa 100644
--- a/core/include/fxcrt/fx_string.h
+++ b/core/include/fxcrt/fx_string.h
@@ -289,8 +289,6 @@
 
   CFX_WideString UTF8Decode() const;
 
-  void ConvertFrom(const CFX_WideString& str, CFX_CharMap* pCharMap = NULL);
-
   FX_DWORD GetID(FX_STRSIZE start_pos = 0) const;
 
 #define FXFORMAT_SIGNED 1
@@ -561,7 +559,10 @@
 
   ~CFX_WideString();
 
-  static CFX_WideString FromLocal(const char* str, FX_STRSIZE len = -1);
+  static CFX_WideString FromLocal(const CFX_ByteString& str);
+
+  static CFX_WideString FromCodePage(const CFX_ByteString& str,
+                                     FX_WORD codepage);
 
   static CFX_WideString FromUTF8(const char* str, FX_STRSIZE len);
 
@@ -685,8 +686,6 @@
 
   CFX_ByteString UTF16LE_Encode() const;
 
-  void ConvertFrom(const CFX_ByteString& str, CFX_CharMap* pCharMap = NULL);
-
  protected:
   class StringData {
    public:
diff --git a/core/src/fpdfdoc/doc_basic_unittest.cpp b/core/src/fpdfdoc/doc_basic_unittest.cpp
index ecc603a..c2fd3ff 100644
--- a/core/src/fpdfdoc/doc_basic_unittest.cpp
+++ b/core/src/fpdfdoc/doc_basic_unittest.cpp
@@ -145,8 +145,7 @@
   CPDF_FileSpec file_spec1(str_obj.get());
   file_spec1.SetFileName(test_data.input);
   // Check internal object value.
-  CFX_ByteString str;
-  str.ConvertFrom(test_data.expected);
+  CFX_ByteString str = CFX_ByteString::FromUnicode(test_data.expected);
   EXPECT_TRUE(str == str_obj->GetString());
   // Check we can get the file name back.
   CFX_WideString file_name;
diff --git a/core/src/fpdfdoc/doc_form.cpp b/core/src/fpdfdoc/doc_form.cpp
index 460a44a..9252e07 100644
--- a/core/src/fpdfdoc/doc_form.cpp
+++ b/core/src/fpdfdoc/doc_form.cpp
@@ -8,8 +8,35 @@
 #include "core/src/fpdfdoc/doc_utils.h"
 #include "third_party/base/stl_util.h"
 
+namespace {
+
 const int nMaxRecursion = 32;
 
+const struct SupportFieldEncoding {
+  const FX_CHAR* m_name;
+  FX_WORD m_codePage;
+} g_fieldEncoding[] = {
+    {"BigFive", 950},
+    {"GBK", 936},
+    {"Shift-JIS", 932},
+    {"UHC", 949},
+};
+
+CFX_WideString FPDFDOC_FDF_GetFieldValue(const CPDF_Dictionary& pFieldDict,
+                                         const CFX_ByteString& bsEncoding) {
+  const CFX_ByteString csBValue = pFieldDict.GetStringBy("V");
+  for (const auto& encoding : g_fieldEncoding) {
+    if (bsEncoding == encoding.m_name)
+      return CFX_WideString::FromCodePage(csBValue, encoding.m_codePage);
+  }
+  CFX_ByteString csTemp = csBValue.Left(2);
+  if (csTemp == "\xFF\xFE" || csTemp == "\xFE\xFF")
+    return PDF_DecodeText(csBValue);
+  return CFX_WideString::FromLocal(csBValue);
+}
+
+}  // namespace
+
 class CFieldNameExtractor {
  public:
   explicit CFieldNameExtractor(const CFX_WideString& full_name) {
@@ -1088,39 +1115,7 @@
   }
   return pDoc;
 }
-const struct _SupportFieldEncoding {
-  const FX_CHAR* m_name;
-  int32_t m_codePage;
-} g_fieldEncoding[] = {
-    {"BigFive", 950},
-    {"GBK", 936},
-    {"Shift-JIS", 932},
-    {"UHC", 949},
-};
-static void FPDFDOC_FDF_GetFieldValue(CPDF_Dictionary* pFieldDict,
-                                      CFX_WideString& csValue,
-                                      CFX_ByteString& bsEncoding) {
-  CFX_ByteString csBValue = pFieldDict->GetStringBy("V");
-  int32_t iCount = sizeof(g_fieldEncoding) / sizeof(g_fieldEncoding[0]);
-  int32_t i = 0;
-  for (; i < iCount; ++i)
-    if (bsEncoding == g_fieldEncoding[i].m_name) {
-      break;
-    }
-  if (i < iCount) {
-    CFX_CharMap* pCharMap =
-        CFX_CharMap::GetDefaultMapper(g_fieldEncoding[i].m_codePage);
-    FXSYS_assert(pCharMap);
-    csValue.ConvertFrom(csBValue, pCharMap);
-    return;
-  }
-  CFX_ByteString csTemp = csBValue.Left(2);
-  if (csTemp == "\xFF\xFE" || csTemp == "\xFE\xFF") {
-    csValue = PDF_DecodeText(csBValue);
-  } else {
-    csValue = CFX_WideString::FromLocal(csBValue);
-  }
-}
+
 void CPDF_InterForm::FDF_ImportField(CPDF_Dictionary* pFieldDict,
                                      const CFX_WideString& parent_name,
                                      FX_BOOL bNotify,
@@ -1150,8 +1145,8 @@
   if (!pField) {
     return;
   }
-  CFX_WideString csWValue;
-  FPDFDOC_FDF_GetFieldValue(pFieldDict, csWValue, m_bsEncoding);
+  CFX_WideString csWValue =
+      FPDFDOC_FDF_GetFieldValue(*pFieldDict, m_bsEncoding);
   int iType = pField->GetFieldType();
   if (bNotify && m_pFormNotify) {
     int iRet = 0;
diff --git a/core/src/fxcrt/fx_basic_bstring.cpp b/core/src/fxcrt/fx_basic_bstring.cpp
index e0d1146..85e5041 100644
--- a/core/src/fxcrt/fx_basic_bstring.cpp
+++ b/core/src/fxcrt/fx_basic_bstring.cpp
@@ -910,25 +910,20 @@
   }
   return decoder.GetResult();
 }
+
+// static
 CFX_ByteString CFX_ByteString::FromUnicode(const FX_WCHAR* str,
                                            FX_STRSIZE len) {
-  if (len < 0) {
-    len = FXSYS_wcslen(str);
-  }
-  CFX_ByteString bstr;
-  bstr.ConvertFrom(CFX_WideString(str, len));
-  return bstr;
+  FX_STRSIZE str_len = len >= 0 ? len : FXSYS_wcslen(str);
+  return FromUnicode(CFX_WideString(str, str_len));
 }
+
+// static
 CFX_ByteString CFX_ByteString::FromUnicode(const CFX_WideString& str) {
-  return FromUnicode(str.c_str(), str.GetLength());
+  CFX_CharMap* pCharMap = CFX_CharMap::GetDefaultMapper();
+  return (*pCharMap->m_GetByteString)(pCharMap, str);
 }
-void CFX_ByteString::ConvertFrom(const CFX_WideString& str,
-                                 CFX_CharMap* pCharMap) {
-  if (!pCharMap) {
-    pCharMap = CFX_CharMap::GetDefaultMapper();
-  }
-  *this = (*pCharMap->m_GetByteString)(pCharMap, str);
-}
+
 int CFX_ByteString::Compare(const CFX_ByteStringC& str) const {
   if (!m_pData) {
     return str.IsEmpty() ? 0 : -1;
diff --git a/core/src/fxcrt/fx_basic_wstring.cpp b/core/src/fxcrt/fx_basic_wstring.cpp
index 2370c87..d83aa85 100644
--- a/core/src/fxcrt/fx_basic_wstring.cpp
+++ b/core/src/fxcrt/fx_basic_wstring.cpp
@@ -303,13 +303,7 @@
   result.ReleaseBuffer(len * 2 + 2);
   return result;
 }
-void CFX_WideString::ConvertFrom(const CFX_ByteString& str,
-                                 CFX_CharMap* pCharMap) {
-  if (!pCharMap) {
-    pCharMap = CFX_CharMap::GetDefaultMapper();
-  }
-  *this = pCharMap->m_GetWideString(pCharMap, str);
-}
+
 void CFX_WideString::Reserve(FX_STRSIZE len) {
   GetBuffer(len);
   ReleaseBuffer(GetLength());
@@ -346,11 +340,20 @@
   pOldData->Release();
   return m_pData->m_String;
 }
-CFX_WideString CFX_WideString::FromLocal(const char* str, FX_STRSIZE len) {
-  CFX_WideString result;
-  result.ConvertFrom(CFX_ByteString(str, len));
-  return result;
+
+// static
+CFX_WideString CFX_WideString::FromLocal(const CFX_ByteString& str) {
+  return FromCodePage(str, 0);
 }
+
+// static
+CFX_WideString CFX_WideString::FromCodePage(const CFX_ByteString& str,
+                                            FX_WORD codepage) {
+  CFX_CharMap* pCharMap = CFX_CharMap::GetDefaultMapper(codepage);
+  return pCharMap->m_GetWideString(pCharMap, str);
+}
+
+// static
 CFX_WideString CFX_WideString::FromUTF8(const char* str, FX_STRSIZE len) {
   if (!str || 0 == len) {
     return CFX_WideString();
@@ -362,6 +365,8 @@
   }
   return decoder.GetResult();
 }
+
+// static
 CFX_WideString CFX_WideString::FromUTF16LE(const unsigned short* wstr,
                                            FX_STRSIZE wlen) {
   if (!wstr || 0 == wlen) {
@@ -376,6 +381,7 @@
   result.ReleaseBuffer(wlen);
   return result;
 }
+
 FX_STRSIZE CFX_WideString::WStringLength(const unsigned short* str) {
   FX_STRSIZE len = 0;
   if (str)
diff --git a/core/src/fxcrt/fx_extension.cpp b/core/src/fxcrt/fx_extension.cpp
index fa6245c..cae1763 100644
--- a/core/src/fxcrt/fx_extension.cpp
+++ b/core/src/fxcrt/fx_extension.cpp
@@ -133,7 +133,8 @@
   if (iLength < 0) {
     iLength = (int32_t)FXSYS_strlen(pcsStr);
   }
-  CFX_WideString ws = CFX_WideString::FromLocal(pcsStr, iLength);
+  CFX_WideString ws =
+      CFX_WideString::FromLocal(CFX_ByteString(pcsStr, iLength));
   return FXSYS_wcstof(ws.c_str(), iLength, pUsedLen);
 }
 FX_FLOAT FXSYS_wcstof(const FX_WCHAR* pwsStr,
diff --git a/xfa/src/fgas/src/crt/fx_system.cpp b/xfa/src/fgas/src/crt/fx_system.cpp
index b08236b..b11fcd2 100644
--- a/xfa/src/fgas/src/crt/fx_system.cpp
+++ b/xfa/src/fgas/src/crt/fx_system.cpp
@@ -86,8 +86,8 @@
   if (iLength < 0) {
     iLength = FXSYS_strlen(pcsStr);
   }
-  return FX_wcstof(CFX_WideString::FromLocal(pcsStr, iLength), iLength,
-                   pUsedLen);
+  return FX_wcstof(CFX_WideString::FromLocal(CFX_ByteString(pcsStr, iLength)),
+                   iLength, pUsedLen);
 }
 FX_FLOAT FX_wcstof(const FX_WCHAR* pwsStr, int32_t iLength, int32_t* pUsedLen) {
   FXSYS_assert(pwsStr != NULL);
diff --git a/xfa/src/fgas/src/localization/fx_locale.cpp b/xfa/src/fgas/src/localization/fx_locale.cpp
index 4b69a5b..072d351 100644
--- a/xfa/src/fgas/src/localization/fx_locale.cpp
+++ b/xfa/src/fgas/src/localization/fx_locale.cpp
@@ -4828,11 +4828,11 @@
   }
   m_uFlags = FXMATH_DECIMAL_MAKEFLAGS(negmet && IsNotZero(), scale);
 }
+
 CFX_Decimal::CFX_Decimal(const CFX_ByteStringC& strObj) {
-  CFX_WideString wstrObj;
-  wstrObj.ConvertFrom(strObj);
-  *this = CFX_Decimal(wstrObj);
+  *this = CFX_Decimal(CFX_WideString::FromLocal(strObj));
 }
+
 CFX_Decimal::operator CFX_WideString() const {
   CFX_WideString retString;
   CFX_WideString tmpbuf;
diff --git a/xfa/src/fxbarcode/BC_UtilCodingConvert.cpp b/xfa/src/fxbarcode/BC_UtilCodingConvert.cpp
index 8b01512..280d3a7 100644
--- a/xfa/src/fxbarcode/BC_UtilCodingConvert.cpp
+++ b/xfa/src/fxbarcode/BC_UtilCodingConvert.cpp
@@ -6,25 +6,31 @@
 
 #include "barcode.h"
 #include "BC_UtilCodingConvert.h"
+
 CBC_UtilCodingConvert::CBC_UtilCodingConvert() {}
+
 CBC_UtilCodingConvert::~CBC_UtilCodingConvert() {}
+
 void CBC_UtilCodingConvert::UnicodeToLocale(const CFX_WideString& src,
                                             CFX_ByteString& dst) {
-  dst.ConvertFrom(src);
+  dst = CFX_ByteString::FromUnicode(src);
 }
+
 void CBC_UtilCodingConvert::LocaleToUtf8(const CFX_ByteString& src,
                                          CFX_ByteString& dst) {
-  CFX_WideString unicode = CFX_WideString::FromLocal(src, src.GetLength());
+  CFX_WideString unicode = CFX_WideString::FromLocal(src);
   dst = unicode.UTF8Encode();
 }
+
 void CBC_UtilCodingConvert::LocaleToUtf8(const CFX_ByteString& src,
                                          CFX_ByteArray& dst) {
-  CFX_WideString unicode = CFX_WideString::FromLocal(src, src.GetLength());
+  CFX_WideString unicode = CFX_WideString::FromLocal(src);
   CFX_ByteString utf8 = unicode.UTF8Encode();
   for (int32_t i = 0; i < utf8.GetLength(); i++) {
     dst.Add(utf8[i]);
   }
 }
+
 void CBC_UtilCodingConvert::Utf8ToLocale(const CFX_ByteArray& src,
                                          CFX_ByteString& dst) {
   CFX_ByteString utf8;
@@ -32,14 +38,16 @@
     utf8 += src[i];
   }
   CFX_WideString unicode = CFX_WideString::FromUTF8(utf8, utf8.GetLength());
-  dst.ConvertFrom(unicode);
+  dst = CFX_ByteString::FromUnicode(unicode);
 }
+
 void CBC_UtilCodingConvert::Utf8ToLocale(const uint8_t* src,
                                          int32_t count,
                                          CFX_ByteString& dst) {
   CFX_WideString unicode = CFX_WideString::FromUTF8((const char*)src, count);
-  dst.ConvertFrom(unicode);
+  dst = CFX_ByteString::FromUnicode(unicode);
 }
+
 void CBC_UtilCodingConvert::UnicodeToUTF8(const CFX_WideString& src,
                                           CFX_ByteString& dst) {
   dst = src.UTF8Encode();