Simplify some XFA font manager creation

For the cases where we always initialize the font managers, do it in the
constructor instead of as a secondary call.

Change-Id: Ic59b331d1eb357878cd5786b187b5b79bace4498
Reviewed-on: https://pdfium-review.googlesource.com/29291
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp
index 79599e1..18f5f99 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp
@@ -40,7 +40,6 @@
     : m_pPDFDoc(std::move(pPDFDoc)),
       m_pXFAApp(pdfium::MakeUnique<CXFA_FFApp>(this)),
       m_DocEnv(this) {
-  m_pXFAApp->SetDefaultFontMgr(pdfium::MakeUnique<CFGAS_DefaultFontManager>());
 }
 
 CPDFXFA_Context::~CPDFXFA_Context() {
diff --git a/xfa/fxfa/cxfa_ffapp.cpp b/xfa/fxfa/cxfa_ffapp.cpp
index 881d05d..21ac081 100644
--- a/xfa/fxfa/cxfa_ffapp.cpp
+++ b/xfa/fxfa/cxfa_ffapp.cpp
@@ -53,17 +53,6 @@
   return pDoc;
 }
 
-void CXFA_FFApp::SetDefaultFontMgr(
-    std::unique_ptr<CFGAS_DefaultFontManager> pFontMgr) {
-  if (!m_pFontMgr)
-    m_pFontMgr = pdfium::MakeUnique<CXFA_FontMgr>();
-  m_pFontMgr->SetDefFontMgr(std::move(pFontMgr));
-}
-
-CXFA_FontMgr* CXFA_FFApp::GetXFAFontMgr() const {
-  return m_pFontMgr.get();
-}
-
 CFGAS_FontMgr* CXFA_FFApp::GetFDEFontMgr() {
   if (!m_pFDEFontMgr) {
     m_pFDEFontMgr = pdfium::MakeUnique<CFGAS_FontMgr>();
diff --git a/xfa/fxfa/cxfa_ffapp.h b/xfa/fxfa/cxfa_ffapp.h
index b63f058..bd4cf36 100644
--- a/xfa/fxfa/cxfa_ffapp.h
+++ b/xfa/fxfa/cxfa_ffapp.h
@@ -15,6 +15,7 @@
 #include "core/fxcrt/retain_ptr.h"
 #include "core/fxcrt/unowned_ptr.h"
 #include "xfa/fwl/cfwl_app.h"
+#include "xfa/fxfa/cxfa_fontmgr.h"
 #include "xfa/fxfa/fxfa.h"
 
 class CFGAS_DefaultFontManager;
@@ -22,7 +23,6 @@
 class CFWL_WidgetMgr;
 class CPDF_Document;
 class CXFA_FFDocHandler;
-class CXFA_FontMgr;
 class CXFA_FWLAdapterWidgetMgr;
 class CXFA_FWLTheme;
 class IFWL_AdapterTimerMgr;
@@ -47,7 +47,7 @@
   IXFA_AppProvider* GetAppProvider() const { return m_pProvider.Get(); }
   const CFWL_App* GetFWLApp() const { return m_pFWLApp.get(); }
   IFWL_AdapterTimerMgr* GetTimerMgr() const;
-  CXFA_FontMgr* GetXFAFontMgr() const;
+  CXFA_FontMgr* GetXFAFontMgr() { return &m_pFontMgr; }
 
   void ClearEventTargets();
 
@@ -58,14 +58,14 @@
   // font manager. The GEFont::LoadFont call takes the manager as a param and
   // stores it internally. When you destroy the GEFont it tries to unregister
   // from the font manager and if the default font manager was destroyed first
-  // get get a use-after-free. The m_pFWLTheme can try to cleanup a GEFont
+  // you get a use-after-free. The m_pFWLTheme can try to cleanup a GEFont
   // when it frees, so make sure it gets cleaned up first. That requires
   // m_pFWLApp to be cleaned up as well.
   //
   // TODO(dsinclair): The GEFont should have the FontMgr as the pointer instead
   // of the DEFFontMgr so this goes away. Bug 561.
   std::unique_ptr<CFGAS_FontMgr> m_pFDEFontMgr;
-  std::unique_ptr<CXFA_FontMgr> m_pFontMgr;
+  CXFA_FontMgr m_pFontMgr;
 
   std::unique_ptr<CXFA_FWLAdapterWidgetMgr> m_pAdapterWidgetMgr;
 
diff --git a/xfa/fxfa/cxfa_fontmgr.cpp b/xfa/fxfa/cxfa_fontmgr.cpp
index 0956806..7770825 100644
--- a/xfa/fxfa/cxfa_fontmgr.cpp
+++ b/xfa/fxfa/cxfa_fontmgr.cpp
@@ -19,9 +19,9 @@
 #include "xfa/fxfa/cxfa_ffapp.h"
 #include "xfa/fxfa/cxfa_ffdoc.h"
 
-CXFA_FontMgr::CXFA_FontMgr() {}
+CXFA_FontMgr::CXFA_FontMgr() = default;
 
-CXFA_FontMgr::~CXFA_FontMgr() {}
+CXFA_FontMgr::~CXFA_FontMgr() = default;
 
 RetainPtr<CFGAS_GEFont> CXFA_FontMgr::GetFont(
     CXFA_FFDoc* hDoc,
@@ -44,9 +44,9 @@
     if (pFont)
       return pFont;
   }
-  if (!pFont && m_pDefFontMgr)
-    pFont = m_pDefFontMgr->GetFont(hDoc->GetApp()->GetFDEFontMgr(),
-                                   wsFontFamily, dwFontStyles);
+  if (!pFont)
+    pFont = m_pDefFontMgr.GetFont(hDoc->GetApp()->GetFDEFontMgr(), wsFontFamily,
+                                  dwFontStyles);
 
   if (!pFont && pMgr) {
     pPDFFont = nullptr;
@@ -55,9 +55,9 @@
     if (pFont)
       return pFont;
   }
-  if (!pFont && m_pDefFontMgr) {
-    pFont = m_pDefFontMgr->GetDefaultFont(hDoc->GetApp()->GetFDEFontMgr(),
-                                          wsFontFamily, dwFontStyles);
+  if (!pFont) {
+    pFont = m_pDefFontMgr.GetDefaultFont(hDoc->GetApp()->GetFDEFontMgr(),
+                                         wsFontFamily, dwFontStyles);
   }
 
   if (pFont) {
@@ -69,8 +69,3 @@
   }
   return pFont;
 }
-
-void CXFA_FontMgr::SetDefFontMgr(
-    std::unique_ptr<CFGAS_DefaultFontManager> pFontMgr) {
-  m_pDefFontMgr = std::move(pFontMgr);
-}
diff --git a/xfa/fxfa/cxfa_fontmgr.h b/xfa/fxfa/cxfa_fontmgr.h
index a940faf..7d067bd 100644
--- a/xfa/fxfa/cxfa_fontmgr.h
+++ b/xfa/fxfa/cxfa_fontmgr.h
@@ -29,10 +29,9 @@
   RetainPtr<CFGAS_GEFont> GetFont(CXFA_FFDoc* hDoc,
                                   const WideStringView& wsFontFamily,
                                   uint32_t dwFontStyles);
-  void SetDefFontMgr(std::unique_ptr<CFGAS_DefaultFontManager> pFontMgr);
 
  private:
-  std::unique_ptr<CFGAS_DefaultFontManager> m_pDefFontMgr;
+  CFGAS_DefaultFontManager m_pDefFontMgr;
   std::map<ByteString, RetainPtr<CFGAS_GEFont>> m_FontMap;
 };