Remove some PDF_EncodeText() usage.

Oftentimes it is used to encode the text that goes into CPDF_String.
This is unnecessary, since CPDF_String can just take a WideString and
call PDF_EncodeText() internally.

Change-Id: Idca197924db3cd105d22025e0e9664686cd95762
Reviewed-on: https://pdfium-review.googlesource.com/c/47711
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfdoc/cpdf_filespec.cpp b/core/fpdfdoc/cpdf_filespec.cpp
index 2ea1e0f..64a482b 100644
--- a/core/fpdfdoc/cpdf_filespec.cpp
+++ b/core/fpdfdoc/cpdf_filespec.cpp
@@ -206,6 +206,6 @@
     m_pWritableObj->SetString(wsStr.ToDefANSI());
   } else if (CPDF_Dictionary* pDict = m_pWritableObj->AsDictionary()) {
     pDict->SetNewFor<CPDF_String>(pdfium::stream::kF, wsStr.ToDefANSI(), false);
-    pDict->SetNewFor<CPDF_String>("UF", PDF_EncodeText(wsStr), false);
+    pDict->SetNewFor<CPDF_String>("UF", wsStr);
   }
 }
diff --git a/core/fpdfdoc/cpdf_formfield.cpp b/core/fpdfdoc/cpdf_formfield.cpp
index d5a6530..d09a5b5 100644
--- a/core/fpdfdoc/cpdf_formfield.cpp
+++ b/core/fpdfdoc/cpdf_formfield.cpp
@@ -381,19 +381,16 @@
         return false;
       }
       ByteString key(bDefault ? "DV" : "V");
+      m_pForm->GetDocument()->AddOrphan(m_pDict->RemoveFor(key));
+      m_pDict->SetNewFor<CPDF_String>(key, csValue);
       int iIndex = FindOptionValue(csValue);
       if (iIndex < 0) {
-        ByteString bsEncodeText = PDF_EncodeText(csValue);
-        m_pForm->GetDocument()->AddOrphan(m_pDict->RemoveFor(key));
-        m_pDict->SetNewFor<CPDF_String>(key, bsEncodeText, false);
         if (m_Type == kRichText && !bDefault) {
           m_pForm->GetDocument()->AddOrphan(m_pDict->RemoveFor("RV"));
-          m_pDict->SetNewFor<CPDF_String>("RV", bsEncodeText, false);
+          m_pDict->SetFor("RV", m_pDict->GetObjectFor(key)->Clone());
         }
         m_pForm->GetDocument()->AddOrphan(m_pDict->RemoveFor("I"));
       } else {
-        m_pForm->GetDocument()->AddOrphan(m_pDict->RemoveFor(key));
-        m_pDict->SetNewFor<CPDF_String>(key, PDF_EncodeText(csValue), false);
         if (!bDefault) {
           ClearSelection(NotificationOption::kDoNotNotify);
           SetItemSelection(iIndex, true, NotificationOption::kDoNotNotify);
@@ -574,18 +571,16 @@
     if (GetType() == kListBox) {
       SelectOption(index, true, NotificationOption::kDoNotNotify);
       if (!(m_Flags & kFormListMultiSelect)) {
-        m_pDict->SetNewFor<CPDF_String>("V", PDF_EncodeText(opt_value), false);
+        m_pDict->SetNewFor<CPDF_String>("V", opt_value);
       } else {
         CPDF_Array* pArray = m_pDict->SetNewFor<CPDF_Array>("V");
         for (int i = 0; i < CountOptions(); i++) {
-          if (i == index || IsItemSelected(i)) {
-            opt_value = GetOptionValue(i);
-            pArray->AddNew<CPDF_String>(PDF_EncodeText(opt_value), false);
-          }
+          if (i == index || IsItemSelected(i))
+            pArray->AddNew<CPDF_String>(GetOptionValue(i));
         }
       }
     } else {
-      m_pDict->SetNewFor<CPDF_String>("V", PDF_EncodeText(opt_value), false);
+      m_pDict->SetNewFor<CPDF_String>("V", opt_value);
       CPDF_Array* pI = m_pDict->SetNewFor<CPDF_Array>("I");
       pI->AddNew<CPDF_Number>(index);
     }
@@ -600,10 +595,8 @@
         } else if (pValue->IsArray()) {
           auto pArray = pdfium::MakeUnique<CPDF_Array>();
           for (int i = 0; i < CountOptions(); i++) {
-            if (i != index && IsItemSelected(i)) {
-              opt_value = GetOptionValue(i);
-              pArray->AddNew<CPDF_String>(PDF_EncodeText(opt_value), false);
-            }
+            if (i != index && IsItemSelected(i))
+              pArray->AddNew<CPDF_String>(GetOptionValue(i));
           }
           if (pArray->size() > 0) {
             m_pForm->GetDocument()->AddOrphan(m_pDict->RemoveFor("V"));
@@ -698,8 +691,7 @@
   if (!bChecked && pControl->IsChecked() == bChecked)
     return false;
 
-  WideString csWExport = pControl->GetExportValue();
-  ByteString csBExport = PDF_EncodeText(csWExport);
+  const WideString csWExport = pControl->GetExportValue();
   int iCount = CountControls();
   bool bUnison = IsUnison(this);
   for (int i = 0; i < iCount; i++) {
@@ -724,6 +716,7 @@
 
   const CPDF_Object* pOpt = FPDF_GetFieldAttr(m_pDict.Get(), "Opt");
   if (!ToArray(pOpt)) {
+    ByteString csBExport = PDF_EncodeText(csWExport);
     if (bChecked) {
       m_pDict->SetNewFor<CPDF_Name>("V", csBExport);
     } else {
diff --git a/core/fpdfdoc/cpdf_interactiveform.cpp b/core/fpdfdoc/cpdf_interactiveform.cpp
index a148ac4..5555904 100644
--- a/core/fpdfdoc/cpdf_interactiveform.cpp
+++ b/core/fpdfdoc/cpdf_interactiveform.cpp
@@ -1022,8 +1022,7 @@
       WideString wsFilePath = CPDF_FileSpec::EncodeFileName(pdf_path);
       pMainDict->SetNewFor<CPDF_String>(pdfium::stream::kF,
                                         wsFilePath.ToDefANSI(), false);
-      pMainDict->SetNewFor<CPDF_String>("UF", PDF_EncodeText(wsFilePath),
-                                        false);
+      pMainDict->SetNewFor<CPDF_String>("UF", wsFilePath);
     } else {
       auto pNewDict = pDoc->New<CPDF_Dictionary>();
       pNewDict->SetNewFor<CPDF_Name>("Type", "Filespec");
diff --git a/fpdfsdk/cpdfsdk_baannot.cpp b/fpdfsdk/cpdfsdk_baannot.cpp
index 1c9e5bc..c1f16a3 100644
--- a/fpdfsdk/cpdfsdk_baannot.cpp
+++ b/fpdfsdk/cpdfsdk_baannot.cpp
@@ -100,7 +100,7 @@
   CPDF_Dictionary* pDict = GetAnnotDict();
   m_pAnnot->GetDocument()->AddOrphan(pDict->RemoveFor("NM"));
   if (!sName.IsEmpty())
-    pDict->SetNewFor<CPDF_String>("NM", PDF_EncodeText(sName), false);
+    pDict->SetNewFor<CPDF_String>("NM", sName);
 }
 
 WideString CPDFSDK_BAAnnot::GetAnnotName() const {
diff --git a/fxjs/cjs_document.cpp b/fxjs/cjs_document.cpp
index 336e9ea..4dac07e 100644
--- a/fxjs/cjs_document.cpp
+++ b/fxjs/cjs_document.cpp
@@ -795,9 +795,7 @@
   if (!m_pFormFillEnv->GetPermissions(FPDFPERM_MODIFY))
     return CJS_Result::Failure(JSMessage::kPermissionError);
 
-  WideString csProperty = pRuntime->ToWideString(vp);
-  pDictionary->SetNewFor<CPDF_String>(propName, PDF_EncodeText(csProperty),
-                                      false);
+  pDictionary->SetNewFor<CPDF_String>(propName, pRuntime->ToWideString(vp));
   m_pFormFillEnv->SetChangeMark();
   return CJS_Result::Success();
 }