Shuffle code around in CPDF_InteractiveForm.

- Make standalone AddNativeInteractiveFormFont() a static method.
- Fix some nits in its only caller.
- Merge AddNativeInteractiveFormFont() with its implementation.
- Similarly, merge CPDF_InteractiveForm::GetFont() with its impl.

Change-Id: I8ab4c958294676853b078e5379e5451430972f88
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/73072
Reviewed-by: Hui Yingst <nigi@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfdoc/cpdf_interactiveform.cpp b/core/fpdfdoc/cpdf_interactiveform.cpp
index 136a48e..70b181a 100644
--- a/core/fpdfdoc/cpdf_interactiveform.cpp
+++ b/core/fpdfdoc/cpdf_interactiveform.cpp
@@ -117,28 +117,6 @@
     pFormDict->SetNewFor<CPDF_String>("DA", csDA, false);
 }
 
-RetainPtr<CPDF_Font> GetFont(CPDF_Dictionary* pFormDict,
-                             CPDF_Document* pDocument,
-                             const ByteString& csNameTag) {
-  ByteString csAlias = PDF_NameDecode(csNameTag.AsStringView());
-  if (!pFormDict || csAlias.IsEmpty())
-    return nullptr;
-
-  CPDF_Dictionary* pDR = pFormDict->GetDictFor("DR");
-  if (!pDR)
-    return nullptr;
-
-  CPDF_Dictionary* pFonts = pDR->GetDictFor("Font");
-  if (!ValidateFontResourceDict(pFonts))
-    return nullptr;
-
-  CPDF_Dictionary* pElement = pFonts->GetDictFor(csAlias);
-  if (!pElement || pElement->GetNameFor("Type") != "Font")
-    return nullptr;
-
-  return CPDF_DocPageData::FromDocument(pDocument)->GetFont(pElement);
-}
-
 RetainPtr<CPDF_Font> GetNativeFont(CPDF_Dictionary* pFormDict,
                                    CPDF_Document* pDocument,
                                    uint8_t charSet,
@@ -290,34 +268,6 @@
                                     pFont->GetFontDict()->GetObjNum());
 }
 
-RetainPtr<CPDF_Font> AddNativeFont(CPDF_Dictionary*& pFormDict,
-                                   CPDF_Document* pDocument,
-                                   uint8_t charSet,
-                                   ByteString* csNameTag) {
-  if (!pFormDict)
-    InitDict(pFormDict, pDocument);
-
-  ByteString csTemp;
-  RetainPtr<CPDF_Font> pFont =
-      GetNativeFont(pFormDict, pDocument, charSet, &csTemp);
-  if (pFont) {
-    *csNameTag = std::move(csTemp);
-    return pFont;
-  }
-  ByteString csFontName =
-      CPDF_InteractiveForm::GetNativeFontName(charSet, nullptr);
-  if (!csFontName.IsEmpty() &&
-      FindFont(pFormDict, pDocument, csFontName, pFont, csNameTag)) {
-    return pFont;
-  }
-  pFont = CPDF_InteractiveForm::AddNativeFont(charSet, pDocument);
-  if (!pFont)
-    return nullptr;
-
-  AddFont(pFormDict, pDocument, pFont, csNameTag);
-  return pFont;
-}
-
 class CFieldNameExtractor {
  public:
   explicit CFieldNameExtractor(const WideString& full_name)
@@ -558,11 +508,34 @@
   return pNode;
 }
 
-RetainPtr<CPDF_Font> AddNativeInteractiveFormFont(CPDF_Dictionary*& pFormDict,
-                                                  CPDF_Document* pDocument,
-                                                  ByteString* csNameTag) {
+// static
+RetainPtr<CPDF_Font> CPDF_InteractiveForm::AddNativeInteractiveFormFont(
+    CPDF_Dictionary*& pFormDict,
+    CPDF_Document* pDocument,
+    ByteString* csNameTag) {
+  if (!pFormDict)
+    InitDict(pFormDict, pDocument);
+
   uint8_t charSet = CPDF_InteractiveForm::GetNativeCharSet();
-  return AddNativeFont(pFormDict, pDocument, charSet, csNameTag);
+  ByteString csTemp;
+  RetainPtr<CPDF_Font> pFont =
+      GetNativeFont(pFormDict, pDocument, charSet, &csTemp);
+  if (pFont) {
+    *csNameTag = std::move(csTemp);
+    return pFont;
+  }
+  ByteString csFontName =
+      CPDF_InteractiveForm::GetNativeFontName(charSet, nullptr);
+  if (!csFontName.IsEmpty() &&
+      FindFont(pFormDict, pDocument, csFontName, pFont, csNameTag)) {
+    return pFont;
+  }
+  pFont = CPDF_InteractiveForm::AddNativeFont(charSet, pDocument);
+  if (!pFont)
+    return nullptr;
+
+  AddFont(pFormDict, pDocument, pFont, csNameTag);
+  return pFont;
 }
 
 // static
@@ -774,7 +747,23 @@
 
 RetainPtr<CPDF_Font> CPDF_InteractiveForm::GetFormFont(
     ByteString csNameTag) const {
-  return GetFont(m_pFormDict.Get(), m_pDocument.Get(), csNameTag);
+  ByteString csAlias = PDF_NameDecode(csNameTag.AsStringView());
+  if (!m_pFormDict || csAlias.IsEmpty())
+    return nullptr;
+
+  CPDF_Dictionary* pDR = m_pFormDict->GetDictFor("DR");
+  if (!pDR)
+    return nullptr;
+
+  CPDF_Dictionary* pFonts = pDR->GetDictFor("Font");
+  if (!ValidateFontResourceDict(pFonts))
+    return nullptr;
+
+  CPDF_Dictionary* pElement = pFonts->GetDictFor(csAlias);
+  if (!pElement || pElement->GetNameFor("Type") != "Font")
+    return nullptr;
+
+  return CPDF_DocPageData::FromDocument(m_pDocument)->GetFont(pElement);
 }
 
 CPDF_DefaultAppearance CPDF_InteractiveForm::GetDefaultAppearance() const {
diff --git a/core/fpdfdoc/cpdf_interactiveform.h b/core/fpdfdoc/cpdf_interactiveform.h
index eaf7fba..ab307a1 100644
--- a/core/fpdfdoc/cpdf_interactiveform.h
+++ b/core/fpdfdoc/cpdf_interactiveform.h
@@ -28,10 +28,6 @@
 class CPDF_Object;
 class CPDF_Page;
 
-RetainPtr<CPDF_Font> AddNativeInteractiveFormFont(CPDF_Dictionary*& pFormDict,
-                                                  CPDF_Document* pDocument,
-                                                  ByteString* csNameTag);
-
 class CPDF_InteractiveForm {
  public:
   class NotifierIface {
@@ -60,6 +56,10 @@
   static RetainPtr<CPDF_Font> AddNativeFont(uint8_t iCharSet,
                                             CPDF_Document* pDocument);
   static RetainPtr<CPDF_Font> AddNativeFont(CPDF_Document* pDocument);
+  static RetainPtr<CPDF_Font> AddNativeInteractiveFormFont(
+      CPDF_Dictionary*& pFormDict,
+      CPDF_Document* pDocument,
+      ByteString* csNameTag);
 
   size_t CountFields(const WideString& csFieldName) const;
   CPDF_FormField* GetField(uint32_t index, const WideString& csFieldName) const;
diff --git a/core/fpdfdoc/cpvt_fontmap.cpp b/core/fpdfdoc/cpvt_fontmap.cpp
index c098fb6..5ef42e9 100644
--- a/core/fpdfdoc/cpvt_fontmap.cpp
+++ b/core/fpdfdoc/cpvt_fontmap.cpp
@@ -30,20 +30,22 @@
 RetainPtr<CPDF_Font> CPVT_FontMap::GetAnnotSysPDFFont(
     CPDF_Document* pDoc,
     CPDF_Dictionary* pResDict,
-    ByteString* sSysFontAlias) {
+    ByteString* pSysFontAlias) {
+  ASSERT(pSysFontAlias);
   if (!pDoc || !pResDict)
     return nullptr;
 
   CPDF_Dictionary* pFormDict = pDoc->GetRoot()->GetDictFor("AcroForm");
   RetainPtr<CPDF_Font> pPDFFont =
-      AddNativeInteractiveFormFont(pFormDict, pDoc, sSysFontAlias);
+      CPDF_InteractiveForm::AddNativeInteractiveFormFont(pFormDict, pDoc,
+                                                         pSysFontAlias);
   if (!pPDFFont)
     return nullptr;
 
   CPDF_Dictionary* pFontList = pResDict->GetDictFor("Font");
   if (ValidateFontResourceDict(pFontList) &&
-      !pFontList->KeyExist(*sSysFontAlias)) {
-    pFontList->SetNewFor<CPDF_Reference>(*sSysFontAlias, pDoc,
+      !pFontList->KeyExist(*pSysFontAlias)) {
+    pFontList->SetNewFor<CPDF_Reference>(*pSysFontAlias, pDoc,
                                          pPDFFont->GetFontDict()->GetObjNum());
   }
   return pPDFFont;
diff --git a/core/fpdfdoc/cpvt_fontmap.h b/core/fpdfdoc/cpvt_fontmap.h
index a85afcf..93429b6 100644
--- a/core/fpdfdoc/cpvt_fontmap.h
+++ b/core/fpdfdoc/cpvt_fontmap.h
@@ -37,7 +37,7 @@
 
   static RetainPtr<CPDF_Font> GetAnnotSysPDFFont(CPDF_Document* pDoc,
                                                  CPDF_Dictionary* pResDict,
-                                                 ByteString* sSysFontAlias);
+                                                 ByteString* pSysFontAlias);
 
  private:
   UnownedPtr<CPDF_Document> const m_pDocument;