De-virtualize CFWL_FontManager and CFWL_FontData. They aren't subclassed. -- replace a static member variable with a global in the .cpp file's anonymous namespace. Change-Id: I64581f98d9bccec45928701f0c19a260c340a6ce Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/58232 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fwl/theme/cfwl_widgettp.cpp b/xfa/fwl/theme/cfwl_widgettp.cpp index e85994a..b8aa2a8 100644 --- a/xfa/fwl/theme/cfwl_widgettp.cpp +++ b/xfa/fwl/theme/cfwl_widgettp.cpp
@@ -24,6 +24,12 @@ #include "xfa/fxgraphics/cxfa_gepath.h" #include "xfa/fxgraphics/cxfa_geshading.h" +namespace { + +CFWL_FontManager* g_FontManager = nullptr; + +} // namespace + CFWL_WidgetTP::CFWL_WidgetTP() = default; CFWL_WidgetTP::~CFWL_WidgetTP() = default; @@ -261,21 +267,20 @@ return m_pFont; } -CFWL_FontManager* CFWL_FontManager::s_FontManager = nullptr; CFWL_FontManager* CFWL_FontManager::GetInstance() { - if (!s_FontManager) - s_FontManager = new CFWL_FontManager; - return s_FontManager; + if (!g_FontManager) + g_FontManager = new CFWL_FontManager; + return g_FontManager; } void CFWL_FontManager::DestroyInstance() { - delete s_FontManager; - s_FontManager = nullptr; + delete g_FontManager; + g_FontManager = nullptr; } -CFWL_FontManager::CFWL_FontManager() {} +CFWL_FontManager::CFWL_FontManager() = default; -CFWL_FontManager::~CFWL_FontManager() {} +CFWL_FontManager::~CFWL_FontManager() = default; RetainPtr<CFGAS_GEFont> CFWL_FontManager::FindFont(WideStringView wsFontFamily, uint32_t dwFontStyles,
diff --git a/xfa/fwl/theme/cfwl_widgettp.h b/xfa/fwl/theme/cfwl_widgettp.h index 6bb60ea..28e206f 100644 --- a/xfa/fwl/theme/cfwl_widgettp.h +++ b/xfa/fwl/theme/cfwl_widgettp.h
@@ -81,10 +81,10 @@ std::unique_ptr<CColorData> m_pColorData; }; -class CFWL_FontData { +class CFWL_FontData final { public: CFWL_FontData(); - virtual ~CFWL_FontData(); + ~CFWL_FontData(); bool Equal(WideStringView wsFontFamily, uint32_t dwFontStyles, @@ -102,7 +102,7 @@ RetainPtr<CFGAS_GEFont> m_pFont; }; -class CFWL_FontManager { +class CFWL_FontManager final { public: static CFWL_FontManager* GetInstance(); static void DestroyInstance(); @@ -111,11 +111,10 @@ uint32_t dwFontStyles, uint16_t dwCodePage); - protected: + private: CFWL_FontManager(); - virtual ~CFWL_FontManager(); + ~CFWL_FontManager(); - static CFWL_FontManager* s_FontManager; std::vector<std::unique_ptr<CFWL_FontData>> m_FontsArray; };