Remove refcounting from CFPF_SkiaFont.

The refcounting is useless, since CFPF_SkiaFontMgr always has a
reference to the fonts anyway. Just make CFPF_SkiaFontMgr own the fonts,
like on other platforms.

Change-Id: Ifadb5c4e09f151ada4a0a68e0588166c2f2974d4
Reviewed-on: https://pdfium-review.googlesource.com/40610
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fxge/android/cfpf_skiafont.cpp b/core/fxge/android/cfpf_skiafont.cpp
index 2d9f274..2d4ff68 100644
--- a/core/fxge/android/cfpf_skiafont.cpp
+++ b/core/fxge/android/cfpf_skiafont.cpp
@@ -30,16 +30,6 @@
     FXFT_Done_Face(m_Face);
 }
 
-void CFPF_SkiaFont::Release() {
-  if (--m_dwRefCount == 0)
-    delete this;
-}
-
-CFPF_SkiaFont* CFPF_SkiaFont::Retain() {
-  m_dwRefCount++;
-  return this;
-}
-
 ByteString CFPF_SkiaFont::GetFamilyName() {
   if (!m_Face)
     return ByteString();
diff --git a/core/fxge/android/cfpf_skiafont.h b/core/fxge/android/cfpf_skiafont.h
index 4e3b02d..0dfb14b 100644
--- a/core/fxge/android/cfpf_skiafont.h
+++ b/core/fxge/android/cfpf_skiafont.h
@@ -20,9 +20,7 @@
                 const CFPF_SkiaPathFont* pFont,
                 uint32_t dwStyle,
                 uint8_t uCharset);
-
-  void Release();
-  CFPF_SkiaFont* Retain();
+  ~CFPF_SkiaFont();
 
   bool IsValid() const { return !!m_Face; }
 
@@ -41,14 +39,11 @@
   uint32_t GetFontData(uint32_t dwTable, uint8_t* pBuffer, uint32_t dwSize);
 
  private:
-  ~CFPF_SkiaFont();
-
   UnownedPtr<CFPF_SkiaFontMgr> const m_pFontMgr;
   UnownedPtr<const CFPF_SkiaPathFont> const m_pFont;
   const FXFT_Face m_Face;
   const uint32_t m_dwStyle;
   const uint8_t m_uCharset;
-  uint32_t m_dwRefCount = 0;
 };
 
 #endif  // CORE_FXGE_ANDROID_CFPF_SKIAFONT_H_
diff --git a/core/fxge/android/cfpf_skiafontmgr.cpp b/core/fxge/android/cfpf_skiafontmgr.cpp
index cd6aab1..f9afdab 100644
--- a/core/fxge/android/cfpf_skiafontmgr.cpp
+++ b/core/fxge/android/cfpf_skiafontmgr.cpp
@@ -7,6 +7,7 @@
 #include "core/fxge/android/cfpf_skiafontmgr.h"
 
 #include <algorithm>
+#include <utility>
 
 #include "core/fxcrt/fx_codepage.h"
 #include "core/fxcrt/fx_extension.h"
@@ -228,9 +229,6 @@
 CFPF_SkiaFontMgr::CFPF_SkiaFontMgr() = default;
 
 CFPF_SkiaFontMgr::~CFPF_SkiaFontMgr() {
-  for (const auto& pair : m_FamilyFonts)
-    pair.second->Release();
-
   m_FamilyFonts.clear();
   m_FontFaces.clear();
   if (m_FTLibrary)
@@ -256,7 +254,7 @@
   uint32_t dwHash = FPF_SKIAGetFamilyHash(bsFamilyname, dwStyle, uCharset);
   auto it = m_FamilyFonts.find(dwHash);
   if (it != m_FamilyFonts.end())
-    return it->second->Retain();
+    return it->second.get();
 
   uint32_t dwFaceName = FPF_SKIANormalizeFontName(bsFamilyname);
   uint32_t dwSubst = FPF_SkiaGetSubstFont(dwFaceName, g_SkiaFontmap,
@@ -319,17 +317,17 @@
       break;
     }
   }
-  if (pBestFont) {
-    CFPF_SkiaFont* pFont =
-        new CFPF_SkiaFont(this, pBestFont, dwStyle, uCharset);
-    pFont->Retain();
-    if (pFont->IsValid()) {
-      m_FamilyFonts[dwHash] = pFont;
-      return pFont;
-    }
-    pFont->Release();
-  }
-  return nullptr;
+  if (!pBestFont)
+    return nullptr;
+
+  auto pFont =
+      pdfium::MakeUnique<CFPF_SkiaFont>(this, pBestFont, dwStyle, uCharset);
+  if (!pFont->IsValid())
+    return nullptr;
+
+  CFPF_SkiaFont* pRet = pFont.get();
+  m_FamilyFonts[dwHash] = std::move(pFont);
+  return pRet;
 }
 
 FXFT_Face CFPF_SkiaFontMgr::GetFontFace(const ByteStringView& bsFile,
diff --git a/core/fxge/android/cfpf_skiafontmgr.h b/core/fxge/android/cfpf_skiafontmgr.h
index 2c7d867..a5ad5b4 100644
--- a/core/fxge/android/cfpf_skiafontmgr.h
+++ b/core/fxge/android/cfpf_skiafontmgr.h
@@ -39,7 +39,7 @@
   bool m_bLoaded = false;
   FXFT_Library m_FTLibrary = nullptr;
   std::vector<std::unique_ptr<CFPF_SkiaPathFont>> m_FontFaces;
-  std::map<uint32_t, CFPF_SkiaFont*> m_FamilyFonts;
+  std::map<uint32_t, std::unique_ptr<CFPF_SkiaFont>> m_FamilyFonts;
 };
 
 #endif  // CORE_FXGE_ANDROID_CFPF_SKIAFONTMGR_H_
diff --git a/core/fxge/android/cfx_androidfontinfo.cpp b/core/fxge/android/cfx_androidfontinfo.cpp
index 2077641..2b3b42c 100644
--- a/core/fxge/android/cfx_androidfontinfo.cpp
+++ b/core/fxge/android/cfx_androidfontinfo.cpp
@@ -77,9 +77,4 @@
   return false;
 }
 
-void CFX_AndroidFontInfo::DeleteFont(void* hFont) {
-  if (!hFont)
-    return;
-
-  static_cast<CFPF_SkiaFont*>(hFont)->Release();
-}
+void CFX_AndroidFontInfo::DeleteFont(void* hFont) {}