summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/fpdfapi/parser/cpdf_document.cpp2
-rw-r--r--core/fpdfdoc/cpdf_filespec.cpp5
-rw-r--r--core/fpdfdoc/cpdf_interform.cpp4
-rw-r--r--core/fxcrt/bytestring.cpp20
-rw-r--r--core/fxcrt/bytestring.h2
-rw-r--r--core/fxcrt/widestring.cpp19
-rw-r--r--core/fxcrt/widestring.h1
-rw-r--r--core/fxcrt/widestring_unittest.cpp26
-rw-r--r--core/fxge/win32/fx_win32_print.cpp2
-rw-r--r--fpdfsdk/cpdfsdk_interform.cpp4
-rw-r--r--fxbarcode/BC_UtilCodingConvert.cpp8
-rw-r--r--fxjs/cfxjse_class.cpp3
-rw-r--r--fxjs/cjs_field.cpp4
-rw-r--r--fxjs/cjs_global.cpp18
-rw-r--r--fxjs/cjs_publicmethods.cpp8
-rw-r--r--fxjs/cjs_runtime.cpp2
-rw-r--r--xfa/fgas/font/cfgas_fontmgr.cpp3
-rw-r--r--xfa/fgas/font/cfgas_gefont.cpp2
-rw-r--r--xfa/fgas/font/cfgas_pdffontmgr.cpp2
-rw-r--r--xfa/fxfa/parser/cxfa_node.cpp2
20 files changed, 77 insertions, 60 deletions
diff --git a/core/fpdfapi/parser/cpdf_document.cpp b/core/fpdfapi/parser/cpdf_document.cpp
index 7641dbd702..2a432623ff 100644
--- a/core/fpdfapi/parser/cpdf_document.cpp
+++ b/core/fpdfapi/parser/cpdf_document.cpp
@@ -814,7 +814,7 @@ CPDF_Font* CPDF_Document::AddWindowsFont(LOGFONTW* pLogFont,
bool bTranslateName) {
LOGFONTA lfa;
memcpy(&lfa, pLogFont, (char*)lfa.lfFaceName - (char*)&lfa);
- ByteString face = ByteString::FromUnicode(pLogFont->lfFaceName);
+ ByteString face = WideString(pLogFont->lfFaceName).ToDefANSI();
if (face.GetLength() >= LF_FACESIZE)
return nullptr;
diff --git a/core/fpdfdoc/cpdf_filespec.cpp b/core/fpdfdoc/cpdf_filespec.cpp
index 2cc51e33d3..aa93b91a94 100644
--- a/core/fpdfdoc/cpdf_filespec.cpp
+++ b/core/fpdfdoc/cpdf_filespec.cpp
@@ -203,10 +203,9 @@ void CPDF_FileSpec::SetFileName(const WideString& wsFileName) {
WideString wsStr = EncodeFileName(wsFileName);
if (m_pObj->IsString()) {
- m_pWritableObj->SetString(ByteString::FromUnicode(wsStr));
+ m_pWritableObj->SetString(wsStr.ToDefANSI());
} else if (CPDF_Dictionary* pDict = m_pWritableObj->AsDictionary()) {
- pDict->SetNewFor<CPDF_String>(pdfium::stream::kF,
- ByteString::FromUnicode(wsStr), false);
+ pDict->SetNewFor<CPDF_String>(pdfium::stream::kF, wsStr.ToDefANSI(), false);
pDict->SetNewFor<CPDF_String>("UF", PDF_EncodeText(wsStr), false);
}
}
diff --git a/core/fpdfdoc/cpdf_interform.cpp b/core/fpdfdoc/cpdf_interform.cpp
index d7cee35704..26dfbc17f0 100644
--- a/core/fpdfdoc/cpdf_interform.cpp
+++ b/core/fpdfdoc/cpdf_interform.cpp
@@ -1030,8 +1030,8 @@ std::unique_ptr<CFDF_Document> CPDF_InterForm::ExportToFDF(
if (!pdf_path.IsEmpty()) {
if (bSimpleFileSpec) {
WideString wsFilePath = CPDF_FileSpec::EncodeFileName(pdf_path);
- pMainDict->SetNewFor<CPDF_String>(
- pdfium::stream::kF, ByteString::FromUnicode(wsFilePath), false);
+ pMainDict->SetNewFor<CPDF_String>(pdfium::stream::kF,
+ wsFilePath.ToDefANSI(), false);
pMainDict->SetNewFor<CPDF_String>("UF", PDF_EncodeText(wsFilePath),
false);
} else {
diff --git a/core/fxcrt/bytestring.cpp b/core/fxcrt/bytestring.cpp
index 4d55c98912..b6c1ce7bbd 100644
--- a/core/fxcrt/bytestring.cpp
+++ b/core/fxcrt/bytestring.cpp
@@ -676,26 +676,6 @@ WideString ByteString::UTF8Decode() const {
return WideString(decoder.GetResult());
}
-// static
-ByteString ByteString::FromUnicode(const WideString& wstr) {
- int src_len = wstr.GetLength();
- int dest_len =
- FXSYS_WideCharToMultiByte(FX_CODEPAGE_DefANSI, 0, wstr.c_str(), src_len,
- nullptr, 0, nullptr, nullptr);
- if (!dest_len)
- return ByteString();
-
- ByteString bstr;
- {
- // Span's lifetime must end before ReleaseBuffer() below.
- pdfium::span<char> dest_buf = bstr.GetBuffer(dest_len);
- FXSYS_WideCharToMultiByte(FX_CODEPAGE_DefANSI, 0, wstr.c_str(), src_len,
- dest_buf.data(), dest_len, nullptr, nullptr);
- }
- bstr.ReleaseBuffer(dest_len);
- return bstr;
-}
-
int ByteString::Compare(const ByteStringView& str) const {
if (!m_pData)
return str.IsEmpty() ? 0 : -1;
diff --git a/core/fxcrt/bytestring.h b/core/fxcrt/bytestring.h
index 5722c4925d..5975acbddd 100644
--- a/core/fxcrt/bytestring.h
+++ b/core/fxcrt/bytestring.h
@@ -66,8 +66,6 @@ class ByteString {
void clear() { m_pData.Reset(); }
- static ByteString FromUnicode(const WideString& str) WARN_UNUSED_RESULT;
-
// Explicit conversion to C-style string.
// Note: Any subsequent modification of |this| will invalidate the result.
const char* c_str() const { return m_pData ? m_pData->m_String : ""; }
diff --git a/core/fxcrt/widestring.cpp b/core/fxcrt/widestring.cpp
index cde1973d26..7dd1c30eb0 100644
--- a/core/fxcrt/widestring.cpp
+++ b/core/fxcrt/widestring.cpp
@@ -673,6 +673,25 @@ intptr_t WideString::ReferenceCountForTesting() const {
return m_pData ? m_pData->m_nRefs : 0;
}
+// static
+ByteString WideString::ToDefANSI() const {
+ int src_len = GetLength();
+ int dest_len = FXSYS_WideCharToMultiByte(
+ FX_CODEPAGE_DefANSI, 0, c_str(), src_len, nullptr, 0, nullptr, nullptr);
+ if (!dest_len)
+ return ByteString();
+
+ ByteString bstr;
+ {
+ // Span's lifetime must end before ReleaseBuffer() below.
+ pdfium::span<char> dest_buf = bstr.GetBuffer(dest_len);
+ FXSYS_WideCharToMultiByte(FX_CODEPAGE_DefANSI, 0, c_str(), src_len,
+ dest_buf.data(), dest_len, nullptr, nullptr);
+ }
+ bstr.ReleaseBuffer(dest_len);
+ return bstr;
+}
+
ByteString WideString::UTF8Encode() const {
return FX_UTF8Encode(AsStringView());
}
diff --git a/core/fxcrt/widestring.h b/core/fxcrt/widestring.h
index b531292c57..dc5dd23428 100644
--- a/core/fxcrt/widestring.h
+++ b/core/fxcrt/widestring.h
@@ -195,6 +195,7 @@ class WideString {
size_t Replace(const WideStringView& pOld, const WideStringView& pNew);
size_t Remove(wchar_t ch);
+ ByteString ToDefANSI() const;
ByteString UTF8Encode() const;
// This method will add \0\0 to the end of the string to represent the
diff --git a/core/fxcrt/widestring_unittest.cpp b/core/fxcrt/widestring_unittest.cpp
index 9017fe0c54..9d38aa45e9 100644
--- a/core/fxcrt/widestring_unittest.cpp
+++ b/core/fxcrt/widestring_unittest.cpp
@@ -999,6 +999,32 @@ TEST(WideString, UTF16LE_Encode) {
}
}
+TEST(WideString, ToDefANSI) {
+ EXPECT_EQ("", WideString().ToDefANSI());
+#if _FX_PLATFORM_ == _FX_PLATFORM_WINDOWS_
+ const char* kResult =
+ "x"
+ "?"
+ "\xff"
+ "A"
+ "?"
+ "y";
+#else
+ const char* kResult =
+ "x"
+ "\x80"
+ "\xff"
+ "y";
+#endif
+ EXPECT_EQ(kResult, WideString(L"x"
+ L"\u0080"
+ L"\u00ff"
+ L"\u0100"
+ L"\u208c"
+ L"y")
+ .ToDefANSI());
+}
+
TEST(WideStringView, FromVector) {
std::vector<WideStringView::UnsignedType> null_vec;
WideStringView null_string(null_vec);
diff --git a/core/fxge/win32/fx_win32_print.cpp b/core/fxge/win32/fx_win32_print.cpp
index f36fa84364..1e2b2d4e9a 100644
--- a/core/fxge/win32/fx_win32_print.cpp
+++ b/core/fxge/win32/fx_win32_print.cpp
@@ -650,7 +650,7 @@ bool CTextOnlyPrinterDriver::DrawDeviceText(int nChars,
wsText += charpos.m_Unicode;
}
size_t len = totalLength;
- ByteString text = ByteString::FromUnicode(wsText);
+ ByteString text = wsText.ToDefANSI();
while (len > 0) {
char buffer[1026];
size_t send_len = std::min(len, static_cast<size_t>(1024));
diff --git a/fpdfsdk/cpdfsdk_interform.cpp b/fpdfsdk/cpdfsdk_interform.cpp
index 3cfc84dfd9..6a4b591ed0 100644
--- a/fpdfsdk/cpdfsdk_interform.cpp
+++ b/fpdfsdk/cpdfsdk_interform.cpp
@@ -506,10 +506,10 @@ bool CPDFSDK_InterForm::FDFToURLEncodedData(uint8_t*& pBuf, size_t& nBufSize) {
continue;
WideString name;
name = pField->GetUnicodeTextFor("T");
- ByteString name_b = ByteString::FromUnicode(name);
+ ByteString name_b = name.ToDefANSI();
ByteString csBValue = pField->GetStringFor("V");
WideString csWValue = PDF_DecodeText(csBValue);
- ByteString csValue_b = ByteString::FromUnicode(csWValue);
+ ByteString csValue_b = csWValue.ToDefANSI();
fdfEncodedData << name_b << "=" << csValue_b;
if (i != pFields->GetCount() - 1)
fdfEncodedData << "&";
diff --git a/fxbarcode/BC_UtilCodingConvert.cpp b/fxbarcode/BC_UtilCodingConvert.cpp
index 77c52f2074..96aeaddb7c 100644
--- a/fxbarcode/BC_UtilCodingConvert.cpp
+++ b/fxbarcode/BC_UtilCodingConvert.cpp
@@ -12,7 +12,7 @@ CBC_UtilCodingConvert::~CBC_UtilCodingConvert() {}
void CBC_UtilCodingConvert::UnicodeToLocale(const WideString& src,
ByteString& dst) {
- dst = ByteString::FromUnicode(src);
+ dst = src.ToDefANSI();
}
void CBC_UtilCodingConvert::LocaleToUtf8(const ByteString& src,
@@ -34,15 +34,13 @@ void CBC_UtilCodingConvert::Utf8ToLocale(const std::vector<uint8_t>& src,
for (uint8_t value : src)
utf8 += value;
- WideString unicode = WideString::FromUTF8(utf8.AsStringView());
- dst = ByteString::FromUnicode(unicode);
+ dst = WideString::FromUTF8(utf8.AsStringView()).ToDefANSI();
}
void CBC_UtilCodingConvert::Utf8ToLocale(const uint8_t* src,
int32_t count,
ByteString& dst) {
- WideString unicode = WideString::FromUTF8(ByteStringView(src, count));
- dst = ByteString::FromUnicode(unicode);
+ dst = WideString::FromUTF8(ByteStringView(src, count)).ToDefANSI();
}
void CBC_UtilCodingConvert::UnicodeToUTF8(const WideString& src,
diff --git a/fxjs/cfxjse_class.cpp b/fxjs/cfxjse_class.cpp
index e7e54c8867..9207fd5094 100644
--- a/fxjs/cfxjse_class.cpp
+++ b/fxjs/cfxjse_class.cpp
@@ -112,8 +112,7 @@ void DynPropGetterAdapter_MethodCallback(
WideString err = JSFormatErrorString(pClassDescriptor->name, *szPropName,
result.Error());
v8::MaybeLocal<v8::String> str = v8::String::NewFromUtf8(
- info.GetIsolate(), ByteString::FromUnicode(err).c_str(),
- v8::NewStringType::kNormal);
+ info.GetIsolate(), err.ToDefANSI().c_str(), v8::NewStringType::kNormal);
info.GetIsolate()->ThrowException(str.ToLocalChecked());
return;
}
diff --git a/fxjs/cjs_field.cpp b/fxjs/cjs_field.cpp
index 19e6712f2a..cd97372ad0 100644
--- a/fxjs/cjs_field.cpp
+++ b/fxjs/cjs_field.cpp
@@ -731,7 +731,7 @@ CJS_Return CJS_Field::set_border_style(CJS_Runtime* pRuntime,
if (!m_bCanSet)
return CJS_Return(JSMessage::kReadOnlyError);
- ByteString byte_str = ByteString::FromUnicode(pRuntime->ToWideString(vp));
+ ByteString byte_str = pRuntime->ToWideString(vp).ToDefANSI();
if (m_bDelay) {
AddDelay_String(FP_BORDERSTYLE, byte_str);
} else {
@@ -2002,7 +2002,7 @@ CJS_Return CJS_Field::set_text_font(CJS_Runtime* pRuntime,
if (!m_bCanSet)
return CJS_Return(JSMessage::kReadOnlyError);
- if (ByteString::FromUnicode(pRuntime->ToWideString(vp)).IsEmpty())
+ if (pRuntime->ToWideString(vp).ToDefANSI().IsEmpty())
return CJS_Return(JSMessage::kValueError);
return CJS_Return();
}
diff --git a/fxjs/cjs_global.cpp b/fxjs/cjs_global.cpp
index 567d54853c..1865f57ddb 100644
--- a/fxjs/cjs_global.cpp
+++ b/fxjs/cjs_global.cpp
@@ -232,7 +232,7 @@ CJS_Return CJS_Global::QueryProperty(const wchar_t* propname) {
CJS_Return CJS_Global::DelProperty(CJS_Runtime* pRuntime,
const wchar_t* propname) {
- auto it = m_MapGlobal.find(ByteString::FromUnicode(propname));
+ auto it = m_MapGlobal.find(WideString(propname).ToDefANSI());
if (it == m_MapGlobal.end())
return CJS_Return(JSMessage::kUnknownProperty);
@@ -242,7 +242,7 @@ CJS_Return CJS_Global::DelProperty(CJS_Runtime* pRuntime,
CJS_Return CJS_Global::GetProperty(CJS_Runtime* pRuntime,
const wchar_t* propname) {
- auto it = m_MapGlobal.find(ByteString::FromUnicode(propname));
+ auto it = m_MapGlobal.find(WideString(propname).ToDefANSI());
if (it == m_MapGlobal.end())
return CJS_Return();
@@ -272,7 +272,7 @@ CJS_Return CJS_Global::GetProperty(CJS_Runtime* pRuntime,
CJS_Return CJS_Global::SetProperty(CJS_Runtime* pRuntime,
const wchar_t* propname,
v8::Local<v8::Value> vp) {
- ByteString sPropName = ByteString::FromUnicode(propname);
+ ByteString sPropName = WideString(propname).ToDefANSI();
if (vp->IsNumber()) {
return SetGlobalVariables(sPropName, JS_GlobalDataType::NUMBER,
pRuntime->ToDouble(vp), false, "",
@@ -284,10 +284,9 @@ CJS_Return CJS_Global::SetProperty(CJS_Runtime* pRuntime,
v8::Local<v8::Object>(), false);
}
if (vp->IsString()) {
- return SetGlobalVariables(
- sPropName, JS_GlobalDataType::STRING, 0, false,
- ByteString::FromUnicode(pRuntime->ToWideString(vp)),
- v8::Local<v8::Object>(), false);
+ return SetGlobalVariables(sPropName, JS_GlobalDataType::STRING, 0, false,
+ pRuntime->ToWideString(vp).ToDefANSI(),
+ v8::Local<v8::Object>(), false);
}
if (vp->IsObject()) {
return SetGlobalVariables(sPropName, JS_GlobalDataType::OBJECT, 0, false,
@@ -310,8 +309,7 @@ CJS_Return CJS_Global::setPersistent(
if (params.size() != 2)
return CJS_Return(JSMessage::kParamError);
- auto it = m_MapGlobal.find(
- ByteString::FromUnicode(pRuntime->ToWideString(params[0])));
+ auto it = m_MapGlobal.find(pRuntime->ToWideString(params[0]).ToDefANSI());
if (it == m_MapGlobal.end() || it->second->bDeleted)
return CJS_Return(JSMessage::kGlobalNotFoundError);
@@ -432,7 +430,7 @@ void CJS_Global::ObjectToArray(CJS_Runtime* pRuntime,
continue;
}
if (v->IsString()) {
- ByteString sValue = ByteString::FromUnicode(pRuntime->ToWideString(v));
+ ByteString sValue = pRuntime->ToWideString(v).ToDefANSI();
CJS_KeyValue* pObjElement = new CJS_KeyValue;
pObjElement->nType = JS_GlobalDataType::STRING;
pObjElement->sKey = sKey;
diff --git a/fxjs/cjs_publicmethods.cpp b/fxjs/cjs_publicmethods.cpp
index a86ece3461..f2cd3ff7c1 100644
--- a/fxjs/cjs_publicmethods.cpp
+++ b/fxjs/cjs_publicmethods.cpp
@@ -327,7 +327,7 @@ v8::Local<v8::Array> CJS_PublicMethods::AF_MakeArrayFromList(
return pRuntime->ToArray(val);
WideString wsStr = pRuntime->ToWideString(val);
- ByteString t = ByteString::FromUnicode(wsStr);
+ ByteString t = wsStr.ToDefANSI();
const char* p = t.c_str();
int nIndex = 0;
@@ -882,7 +882,7 @@ CJS_Return CJS_PublicMethods::AFNumber_Format(
return CJS_Return(L"No event handler");
WideString& Value = pEvent->Value();
- ByteString strValue = StrTrim(ByteString::FromUnicode(Value));
+ ByteString strValue = StrTrim(Value.ToDefANSI());
if (strValue.IsEmpty())
return CJS_Return();
@@ -1078,7 +1078,7 @@ CJS_Return CJS_PublicMethods::AFPercent_Format(
return CJS_Return(JSMessage::kBadObjectError);
WideString& Value = pEvent->Value();
- ByteString strValue = StrTrim(ByteString::FromUnicode(Value));
+ ByteString strValue = StrTrim(Value.ToDefANSI());
if (strValue.IsEmpty())
return CJS_Return();
@@ -1683,7 +1683,7 @@ CJS_Return CJS_PublicMethods::AFRange_Validate(
if (pEvent->Value().IsEmpty())
return CJS_Return();
- double dEentValue = atof(ByteString::FromUnicode(pEvent->Value()).c_str());
+ double dEentValue = atof(pEvent->Value().ToDefANSI().c_str());
bool bGreaterThan = pRuntime->ToBoolean(params[0]);
double dGreaterThan = pRuntime->ToDouble(params[1]);
bool bLessThan = pRuntime->ToBoolean(params[2]);
diff --git a/fxjs/cjs_runtime.cpp b/fxjs/cjs_runtime.cpp
index 9329a483f4..6042538e30 100644
--- a/fxjs/cjs_runtime.cpp
+++ b/fxjs/cjs_runtime.cpp
@@ -234,7 +234,7 @@ v8::Local<v8::Value> CJS_Runtime::MaybeCoerceToNumber(
v8::Local<v8::Value> value) {
bool bAllowNaN = false;
if (value->IsString()) {
- ByteString bstr = ByteString::FromUnicode(ToWideString(value));
+ ByteString bstr = ToWideString(value).ToDefANSI();
if (bstr.GetLength() == 0)
return value;
if (bstr == "NaN")
diff --git a/xfa/fgas/font/cfgas_fontmgr.cpp b/xfa/fgas/font/cfgas_fontmgr.cpp
index 5ab91b3cc6..f173bf24ae 100644
--- a/xfa/fgas/font/cfgas_fontmgr.cpp
+++ b/xfa/fgas/font/cfgas_fontmgr.cpp
@@ -416,8 +416,7 @@ ByteString CFX_FontSourceEnum_File::GetNextFile() {
}
ByteString bsName;
bool bFolder;
- ByteString bsFolderSeparator =
- ByteString::FromUnicode(WideString(kFolderSeparator));
+ ByteString bsFolderSeparator = WideString(kFolderSeparator).ToDefANSI();
while (true) {
if (!FX_GetNextFile(pCurHandle, &bsName, &bFolder)) {
FX_CloseFolder(pCurHandle);
diff --git a/xfa/fgas/font/cfgas_gefont.cpp b/xfa/fgas/font/cfgas_gefont.cpp
index 740504f088..b5cb7962af 100644
--- a/xfa/fgas/font/cfgas_gefont.cpp
+++ b/xfa/fgas/font/cfgas_gefont.cpp
@@ -76,7 +76,7 @@ bool CFGAS_GEFont::LoadFontInternal(const wchar_t* pszFontFamily,
return false;
ByteString csFontFamily;
if (pszFontFamily)
- csFontFamily = ByteString::FromUnicode(pszFontFamily);
+ csFontFamily = WideString(pszFontFamily).ToDefANSI();
int32_t iWeight =
FontStyleIsBold(dwFontStyles) ? FXFONT_FW_BOLD : FXFONT_FW_NORMAL;
diff --git a/xfa/fgas/font/cfgas_pdffontmgr.cpp b/xfa/fgas/font/cfgas_pdffontmgr.cpp
index 80d6196d4e..4220d4d6c5 100644
--- a/xfa/fgas/font/cfgas_pdffontmgr.cpp
+++ b/xfa/fgas/font/cfgas_pdffontmgr.cpp
@@ -80,7 +80,7 @@ RetainPtr<CFGAS_GEFont> CFGAS_PDFFontMgr::GetFont(
if (it != m_FontMap.end())
return it->second;
- ByteString bsPsName = ByteString::FromUnicode(WideString(wsFontFamily));
+ ByteString bsPsName = WideString(wsFontFamily).ToDefANSI();
bool bBold = FontStyleIsBold(dwFontStyles);
bool bItalic = FontStyleIsItalic(dwFontStyles);
ByteString strFontName = PsNameToFontName(bsPsName, bBold, bItalic);
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp
index 7ff205c6f4..8babe45ef3 100644
--- a/xfa/fxfa/parser/cxfa_node.cpp
+++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -214,7 +214,7 @@ RetainPtr<CFX_DIBitmap> XFA_LoadImageData(CXFA_FFDoc* pDoc,
pdfium::MakeRetain<CFX_MemoryStream>(pImageBuffer, iRead, false);
}
} else {
- bsContent = ByteString::FromUnicode(wsImage);
+ bsContent = wsImage.ToDefANSI();
pImageFileRead = pdfium::MakeRetain<CFX_MemoryStream>(
const_cast<uint8_t*>(bsContent.raw_str()), bsContent.GetLength(),
false);