Remove CFPF_SkiaFontDescriptor.

CFPF_SkiaFontDescriptor only has a single subclass. Merge it with the
subclass.

Change-Id: I26d19ee527c010d2d69acd820d8acc9634b12239
Reviewed-on: https://pdfium-review.googlesource.com/40551
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/BUILD.gn b/BUILD.gn
index ca240d2..73b4382 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -1004,8 +1004,6 @@
     "core/fxge/android/cfpf_skiadevicemodule.h",
     "core/fxge/android/cfpf_skiafont.cpp",
     "core/fxge/android/cfpf_skiafont.h",
-    "core/fxge/android/cfpf_skiafontdescriptor.cpp",
-    "core/fxge/android/cfpf_skiafontdescriptor.h",
     "core/fxge/android/cfpf_skiafontmgr.cpp",
     "core/fxge/android/cfpf_skiafontmgr.h",
     "core/fxge/android/cfpf_skiapathfont.cpp",
diff --git a/core/fxge/android/cfpf_skiafont.cpp b/core/fxge/android/cfpf_skiafont.cpp
index 6431f14..24984e8 100644
--- a/core/fxge/android/cfpf_skiafont.cpp
+++ b/core/fxge/android/cfpf_skiafont.cpp
@@ -9,20 +9,13 @@
 #include <algorithm>
 
 #include "core/fxcrt/fx_system.h"
-#include "core/fxge/android/cfpf_skiafontdescriptor.h"
 #include "core/fxge/android/cfpf_skiafontmgr.h"
 #include "core/fxge/android/cfpf_skiapathfont.h"
 #include "core/fxge/fx_freetype.h"
 
 #define FPF_EM_ADJUST(em, a) (em == 0 ? (a) : (a)*1000 / em)
 
-CFPF_SkiaFont::CFPF_SkiaFont()
-    : m_pFontMgr(nullptr),
-      m_pFontDes(nullptr),
-      m_Face(nullptr),
-      m_dwStyle(0),
-      m_uCharset(0),
-      m_dwRefCount(0) {}
+CFPF_SkiaFont::CFPF_SkiaFont() = default;
 
 CFPF_SkiaFont::~CFPF_SkiaFont() {
   if (m_Face)
@@ -178,29 +171,21 @@
 }
 
 bool CFPF_SkiaFont::InitFont(CFPF_SkiaFontMgr* pFontMgr,
-                             CFPF_SkiaFontDescriptor* pFontDes,
+                             CFPF_SkiaPathFont* pFont,
                              const ByteStringView& bsFamily,
                              uint32_t dwStyle,
                              uint8_t uCharset) {
-  if (!pFontMgr || !pFontDes)
+  if (!pFontMgr || !pFont)
     return false;
 
-  switch (pFontDes->GetType()) {
-    case FPF_SKIAFONTTYPE_Path: {
-      CFPF_SkiaPathFont* pFont = (CFPF_SkiaPathFont*)pFontDes;
-      m_Face = pFontMgr->GetFontFace(pFont->m_pPath, pFont->m_iFaceIndex);
-      break;
-    }
-    default:
-      return false;
-  }
+  m_Face = pFontMgr->GetFontFace(pFont->m_pPath, pFont->m_iFaceIndex);
   if (!m_Face)
     return false;
 
   m_dwStyle = dwStyle;
   m_uCharset = uCharset;
   m_pFontMgr = pFontMgr;
-  m_pFontDes = pFontDes;
+  m_pFont = pFont;
   m_dwRefCount = 1;
   return true;
 }
diff --git a/core/fxge/android/cfpf_skiafont.h b/core/fxge/android/cfpf_skiafont.h
index 1b2f605..260e422 100644
--- a/core/fxge/android/cfpf_skiafont.h
+++ b/core/fxge/android/cfpf_skiafont.h
@@ -11,8 +11,8 @@
 #include "core/fxcrt/unowned_ptr.h"
 #include "core/fxge/fx_font.h"
 
-class CFPF_SkiaFontDescriptor;
 class CFPF_SkiaFontMgr;
+class CFPF_SkiaPathFont;
 
 class CFPF_SkiaFont {
  public:
@@ -37,18 +37,18 @@
   uint32_t GetFontData(uint32_t dwTable, uint8_t* pBuffer, uint32_t dwSize);
 
   bool InitFont(CFPF_SkiaFontMgr* pFontMgr,
-                CFPF_SkiaFontDescriptor* pFontDes,
+                CFPF_SkiaPathFont* pFont,
                 const ByteStringView& bsFamily,
                 uint32_t dwStyle,
                 uint8_t uCharset);
 
  private:
   UnownedPtr<CFPF_SkiaFontMgr> m_pFontMgr;
-  UnownedPtr<CFPF_SkiaFontDescriptor> m_pFontDes;
-  FXFT_Face m_Face;
-  uint32_t m_dwStyle;
-  uint8_t m_uCharset;
-  uint32_t m_dwRefCount;
+  UnownedPtr<CFPF_SkiaPathFont> m_pFont;
+  FXFT_Face m_Face = nullptr;
+  uint32_t m_dwStyle = 0;
+  uint8_t m_uCharset = 0;
+  uint32_t m_dwRefCount = 0;
 };
 
 #endif  // CORE_FXGE_ANDROID_CFPF_SKIAFONT_H_
diff --git a/core/fxge/android/cfpf_skiafontdescriptor.cpp b/core/fxge/android/cfpf_skiafontdescriptor.cpp
deleted file mode 100644
index 8dd4481..0000000
--- a/core/fxge/android/cfpf_skiafontdescriptor.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "core/fxge/android/cfpf_skiafontdescriptor.h"
-
-#include "core/fxcrt/fx_memory.h"
-
-CFPF_SkiaFontDescriptor::CFPF_SkiaFontDescriptor()
-    : m_pFamily(nullptr),
-      m_dwStyle(0),
-      m_iFaceIndex(0),
-      m_dwCharsets(0),
-      m_iGlyphNum(0) {}
-
-CFPF_SkiaFontDescriptor::~CFPF_SkiaFontDescriptor() {
-  FX_Free(m_pFamily);
-}
-
-int32_t CFPF_SkiaFontDescriptor::GetType() const {
-  return FPF_SKIAFONTTYPE_Unknown;
-}
-
-void CFPF_SkiaFontDescriptor::SetFamily(const char* pFamily) {
-  FX_Free(m_pFamily);
-  int32_t iSize = strlen(pFamily);
-  m_pFamily = FX_Alloc(char, iSize + 1);
-  memcpy(m_pFamily, pFamily, iSize * sizeof(char));
-  m_pFamily[iSize] = 0;
-}
diff --git a/core/fxge/android/cfpf_skiafontdescriptor.h b/core/fxge/android/cfpf_skiafontdescriptor.h
deleted file mode 100644
index 00a19ec..0000000
--- a/core/fxge/android/cfpf_skiafontdescriptor.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_FXGE_ANDROID_CFPF_SKIAFONTDESCRIPTOR_H_
-#define CORE_FXGE_ANDROID_CFPF_SKIAFONTDESCRIPTOR_H_
-
-#include "core/fxcrt/fx_system.h"
-
-#define FPF_SKIAFONTTYPE_Unknown 0
-
-class CFPF_SkiaFontDescriptor {
- public:
-  CFPF_SkiaFontDescriptor();
-  virtual ~CFPF_SkiaFontDescriptor();
-
-  virtual int32_t GetType() const;
-
-  void SetFamily(const char* pFamily);
-
-  char* m_pFamily;
-  uint32_t m_dwStyle;
-  int32_t m_iFaceIndex;
-  uint32_t m_dwCharsets;
-  int32_t m_iGlyphNum;
-};
-
-#endif  // CORE_FXGE_ANDROID_CFPF_SKIAFONTDESCRIPTOR_H_
diff --git a/core/fxge/android/cfpf_skiafontmgr.cpp b/core/fxge/android/cfpf_skiafontmgr.cpp
index 32fe498..b091ae9 100644
--- a/core/fxge/android/cfpf_skiafontmgr.cpp
+++ b/core/fxge/android/cfpf_skiafontmgr.cpp
@@ -19,7 +19,6 @@
 #include "core/fxcrt/fx_stream.h"
 #include "core/fxcrt/fx_system.h"
 #include "core/fxge/android/cfpf_skiafont.h"
-#include "core/fxge/android/cfpf_skiafontdescriptor.h"
 #include "core/fxge/android/cfpf_skiapathfont.h"
 #include "core/fxge/fx_freetype.h"
 
@@ -277,29 +276,29 @@
   }
   int32_t nExpectVal = FPF_SKIAMATCHWEIGHT_NAME1 + FPF_SKIAMATCHWEIGHT_1 * 3 +
                        FPF_SKIAMATCHWEIGHT_2 * 2;
-  CFPF_SkiaFontDescriptor* pBestFontDes = nullptr;
+  CFPF_SkiaPathFont* pBestFont = nullptr;
   int32_t nMax = -1;
   int32_t nGlyphNum = 0;
   for (auto it = m_FontFaces.rbegin(); it != m_FontFaces.rend(); ++it) {
-    CFPF_SkiaPathFont* pFontDes = static_cast<CFPF_SkiaPathFont*>(*it);
-    if (!(pFontDes->m_dwCharsets & FPF_SkiaGetCharset(uCharset)))
+    CFPF_SkiaPathFont* pFont = *it;
+    if (!(pFont->m_dwCharsets & FPF_SkiaGetCharset(uCharset)))
       continue;
     int32_t nFind = 0;
-    uint32_t dwSysFontName = FPF_SKIANormalizeFontName(pFontDes->m_pFamily);
+    uint32_t dwSysFontName = FPF_SKIANormalizeFontName(pFont->m_pFamily);
     if (dwFaceName == dwSysFontName)
       nFind += FPF_SKIAMATCHWEIGHT_NAME1;
     bool bMatchedName = (nFind == FPF_SKIAMATCHWEIGHT_NAME1);
-    if (FontStyleIsBold(dwStyle) == FontStyleIsBold(pFontDes->m_dwStyle))
+    if (FontStyleIsBold(dwStyle) == FontStyleIsBold(pFont->m_dwStyle))
       nFind += FPF_SKIAMATCHWEIGHT_1;
-    if (FontStyleIsItalic(dwStyle) == FontStyleIsItalic(pFontDes->m_dwStyle))
+    if (FontStyleIsItalic(dwStyle) == FontStyleIsItalic(pFont->m_dwStyle))
       nFind += FPF_SKIAMATCHWEIGHT_1;
     if (FontStyleIsFixedPitch(dwStyle) ==
-        FontStyleIsFixedPitch(pFontDes->m_dwStyle)) {
+        FontStyleIsFixedPitch(pFont->m_dwStyle)) {
       nFind += FPF_SKIAMATCHWEIGHT_2;
     }
-    if (FontStyleIsSerif(dwStyle) == FontStyleIsSerif(pFontDes->m_dwStyle))
+    if (FontStyleIsSerif(dwStyle) == FontStyleIsSerif(pFont->m_dwStyle))
       nFind += FPF_SKIAMATCHWEIGHT_1;
-    if (FontStyleIsScript(dwStyle) == FontStyleIsScript(pFontDes->m_dwStyle))
+    if (FontStyleIsScript(dwStyle) == FontStyleIsScript(pFont->m_dwStyle))
       nFind += FPF_SKIAMATCHWEIGHT_2;
     if (dwSubst == dwSysFontName || dwSubstSans == dwSysFontName) {
       nFind += FPF_SKIAMATCHWEIGHT_NAME2;
@@ -308,25 +307,25 @@
     if (uCharset == FX_CHARSET_Default || bMaybeSymbol) {
       if (nFind > nMax && bMatchedName) {
         nMax = nFind;
-        pBestFontDes = *it;
+        pBestFont = *it;
       }
     } else if (FPF_SkiaIsCJK(uCharset)) {
-      if (bMatchedName || pFontDes->m_iGlyphNum > nGlyphNum) {
-        pBestFontDes = *it;
-        nGlyphNum = pFontDes->m_iGlyphNum;
+      if (bMatchedName || pFont->m_iGlyphNum > nGlyphNum) {
+        pBestFont = *it;
+        nGlyphNum = pFont->m_iGlyphNum;
       }
     } else if (nFind > nMax) {
       nMax = nFind;
-      pBestFontDes = *it;
+      pBestFont = *it;
     }
     if (nExpectVal <= nFind) {
-      pBestFontDes = *it;
+      pBestFont = *it;
       break;
     }
   }
-  if (pBestFontDes) {
+  if (pBestFont) {
     CFPF_SkiaFont* pFont = new CFPF_SkiaFont;
-    if (pFont->InitFont(this, pBestFontDes, bsFamilyname, dwStyle, uCharset)) {
+    if (pFont->InitFont(this, pBestFont, bsFamilyname, dwStyle, uCharset)) {
       m_FamilyFonts[dwHash] = pFont;
       return pFont->Retain();
     }
@@ -382,37 +381,36 @@
   FXFT_Face face = GetFontFace(file.AsStringView(), 0);
   if (!face)
     return;
-  CFPF_SkiaPathFont* pFontDesc = new CFPF_SkiaPathFont;
-  pFontDesc->SetPath(file.c_str());
-  ReportFace(face, pFontDesc);
-  m_FontFaces.push_back(pFontDesc);
+  CFPF_SkiaPathFont* pFont = new CFPF_SkiaPathFont;
+  pFont->SetPath(file.c_str());
+  ReportFace(face, pFont);
+  m_FontFaces.push_back(pFont);
   FXFT_Done_Face(face);
 }
 
-void CFPF_SkiaFontMgr::ReportFace(FXFT_Face face,
-                                  CFPF_SkiaFontDescriptor* pFontDesc) {
-  if (!face || !pFontDesc)
+void CFPF_SkiaFontMgr::ReportFace(FXFT_Face face, CFPF_SkiaPathFont* pFont) {
+  if (!face || !pFont)
     return;
-  pFontDesc->SetFamily(FXFT_Get_Face_Family_Name(face));
+  pFont->SetFamily(FXFT_Get_Face_Family_Name(face));
   if (FXFT_Is_Face_Bold(face))
-    pFontDesc->m_dwStyle |= FXFONT_BOLD;
+    pFont->m_dwStyle |= FXFONT_BOLD;
   if (FXFT_Is_Face_Italic(face))
-    pFontDesc->m_dwStyle |= FXFONT_ITALIC;
+    pFont->m_dwStyle |= FXFONT_ITALIC;
   if (FT_IS_FIXED_WIDTH(face))
-    pFontDesc->m_dwStyle |= FXFONT_FIXED_PITCH;
+    pFont->m_dwStyle |= FXFONT_FIXED_PITCH;
   TT_OS2* pOS2 = static_cast<TT_OS2*>(FT_Get_Sfnt_Table(face, ft_sfnt_os2));
   if (pOS2) {
     if (pOS2->ulCodePageRange1 & (1 << 31))
-      pFontDesc->m_dwStyle |= FXFONT_SYMBOLIC;
+      pFont->m_dwStyle |= FXFONT_SYMBOLIC;
     if (pOS2->panose[0] == 2) {
       uint8_t uSerif = pOS2->panose[1];
       if ((uSerif > 1 && uSerif < 10) || uSerif > 13)
-        pFontDesc->m_dwStyle |= FXFONT_SERIF;
+        pFont->m_dwStyle |= FXFONT_SERIF;
     }
   }
   if (pOS2 && (pOS2->ulCodePageRange1 & (1 << 31)))
-    pFontDesc->m_dwStyle |= FXFONT_SYMBOLIC;
-  pFontDesc->m_dwCharsets = FPF_SkiaGetFaceCharset(pOS2);
-  pFontDesc->m_iFaceIndex = face->face_index;
-  pFontDesc->m_iGlyphNum = face->num_glyphs;
+    pFont->m_dwStyle |= FXFONT_SYMBOLIC;
+  pFont->m_dwCharsets = FPF_SkiaGetFaceCharset(pOS2);
+  pFont->m_iFaceIndex = face->face_index;
+  pFont->m_iGlyphNum = face->num_glyphs;
 }
diff --git a/core/fxge/android/cfpf_skiafontmgr.h b/core/fxge/android/cfpf_skiafontmgr.h
index 3152a35..af2d3ac 100644
--- a/core/fxge/android/cfpf_skiafontmgr.h
+++ b/core/fxge/android/cfpf_skiafontmgr.h
@@ -16,7 +16,7 @@
 #define FPF_MATCHFONT_REPLACEANSI 1
 
 class CFPF_SkiaFont;
-class CFPF_SkiaFontDescriptor;
+class CFPF_SkiaPathFont;
 
 class CFPF_SkiaFontMgr {
  public:
@@ -35,11 +35,11 @@
  private:
   void ScanPath(const ByteString& path);
   void ScanFile(const ByteString& file);
-  void ReportFace(FXFT_Face face, CFPF_SkiaFontDescriptor* pFontDesc);
+  void ReportFace(FXFT_Face face, CFPF_SkiaPathFont* pFont);
 
   bool m_bLoaded = false;
   FXFT_Library m_FTLibrary = nullptr;
-  std::vector<CFPF_SkiaFontDescriptor*> m_FontFaces;
+  std::vector<CFPF_SkiaPathFont*> m_FontFaces;
   std::map<uint32_t, CFPF_SkiaFont*> m_FamilyFonts;
 };
 
diff --git a/core/fxge/android/cfpf_skiapathfont.cpp b/core/fxge/android/cfpf_skiapathfont.cpp
index 27f4fde..063729f 100644
--- a/core/fxge/android/cfpf_skiapathfont.cpp
+++ b/core/fxge/android/cfpf_skiapathfont.cpp
@@ -8,16 +8,13 @@
 
 #include "core/fxcrt/fx_memory.h"
 
-CFPF_SkiaPathFont::CFPF_SkiaPathFont() : m_pPath(nullptr) {}
+CFPF_SkiaPathFont::CFPF_SkiaPathFont() {}
 
 CFPF_SkiaPathFont::~CFPF_SkiaPathFont() {
+  FX_Free(m_pFamily);
   FX_Free(m_pPath);
 }
 
-int32_t CFPF_SkiaPathFont::GetType() const {
-  return FPF_SKIAFONTTYPE_Path;
-}
-
 void CFPF_SkiaPathFont::SetPath(const char* pPath) {
   FX_Free(m_pPath);
   int32_t iSize = strlen(pPath);
@@ -25,3 +22,11 @@
   memcpy(m_pPath, pPath, iSize * sizeof(char));
   m_pPath[iSize] = 0;
 }
+
+void CFPF_SkiaPathFont::SetFamily(const char* pFamily) {
+  FX_Free(m_pFamily);
+  int32_t iSize = strlen(pFamily);
+  m_pFamily = FX_Alloc(char, iSize + 1);
+  memcpy(m_pFamily, pFamily, iSize * sizeof(char));
+  m_pFamily[iSize] = 0;
+}
diff --git a/core/fxge/android/cfpf_skiapathfont.h b/core/fxge/android/cfpf_skiapathfont.h
index 6cba42a..e1d8994 100644
--- a/core/fxge/android/cfpf_skiapathfont.h
+++ b/core/fxge/android/cfpf_skiapathfont.h
@@ -8,21 +8,21 @@
 #define CORE_FXGE_ANDROID_CFPF_SKIAPATHFONT_H_
 
 #include "core/fxcrt/fx_system.h"
-#include "core/fxge/android/cfpf_skiafontdescriptor.h"
 
-#define FPF_SKIAFONTTYPE_Path 1
-
-class CFPF_SkiaPathFont : public CFPF_SkiaFontDescriptor {
+class CFPF_SkiaPathFont {
  public:
   CFPF_SkiaPathFont();
-  ~CFPF_SkiaPathFont() override;
-
-  // CFPF_SkiaFontDescriptor
-  int32_t GetType() const override;
+  ~CFPF_SkiaPathFont();
 
   void SetPath(const char* pPath);
+  void SetFamily(const char* pFamily);
 
-  char* m_pPath;
+  char* m_pPath = nullptr;
+  char* m_pFamily = nullptr;
+  uint32_t m_dwStyle = 0;
+  int32_t m_iFaceIndex = 0;
+  uint32_t m_dwCharsets = 0;
+  int32_t m_iGlyphNum = 0;
 };
 
 #endif  // CORE_FXGE_ANDROID_CFPF_SKIAPATHFONT_H_