Remove CPDF_CMapManager.

Fold its functionality into the CPDF_FontGlobals.

Change-Id: I395e4224c62d6b7bbb15bd134419eb437ea9afd2
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/92450
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/font/BUILD.gn b/core/fpdfapi/font/BUILD.gn
index 27c0f9d..bc7d54a 100644
--- a/core/fpdfapi/font/BUILD.gn
+++ b/core/fpdfapi/font/BUILD.gn
@@ -17,8 +17,6 @@
     "cpdf_cidfont.h",
     "cpdf_cmap.cpp",
     "cpdf_cmap.h",
-    "cpdf_cmapmanager.cpp",
-    "cpdf_cmapmanager.h",
     "cpdf_cmapparser.cpp",
     "cpdf_cmapparser.h",
     "cpdf_font.cpp",
diff --git a/core/fpdfapi/font/cpdf_cidfont.cpp b/core/fpdfapi/font/cpdf_cidfont.cpp
index 9cb9932..134f245 100644
--- a/core/fpdfapi/font/cpdf_cidfont.cpp
+++ b/core/fpdfapi/font/cpdf_cidfont.cpp
@@ -431,7 +431,7 @@
   if (!pEncoding->IsName() && !pEncoding->IsStream())
     return false;
 
-  CPDF_CMapManager* manager = CPDF_FontGlobals::GetInstance()->GetCMapManager();
+  auto* pFontGlobals = CPDF_FontGlobals::GetInstance();
   const CPDF_Stream* pEncodingStream = pEncoding->AsStream();
   if (pEncodingStream) {
     auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pEncodingStream);
@@ -441,7 +441,7 @@
   } else {
     DCHECK(pEncoding->IsName());
     ByteString cmap = pEncoding->GetString();
-    m_pCMap = manager->GetPredefinedCMap(cmap);
+    m_pCMap = pFontGlobals->GetPredefinedCMap(cmap);
   }
 
   const CPDF_Dictionary* pFontDesc = pCIDFontDict->GetDictFor("FontDescriptor");
@@ -457,7 +457,7 @@
     }
   }
   if (m_Charset != CIDSET_UNKNOWN) {
-    m_pCID2UnicodeMap = manager->GetCID2UnicodeMap(m_Charset);
+    m_pCID2UnicodeMap = pFontGlobals->GetCID2UnicodeMap(m_Charset);
   }
   if (m_Font.GetFaceRec()) {
     if (m_FontType == CIDFontType::kType1)
@@ -852,9 +852,9 @@
   m_BaseFontName = m_pFontDict->GetStringFor("BaseFont");
   m_Charset = CIDSET_GB1;
 
-  CPDF_CMapManager* manager = CPDF_FontGlobals::GetInstance()->GetCMapManager();
-  m_pCMap = manager->GetPredefinedCMap("GBK-EUC-H");
-  m_pCID2UnicodeMap = manager->GetCID2UnicodeMap(m_Charset);
+  auto* pFontGlobals = CPDF_FontGlobals::GetInstance();
+  m_pCMap = pFontGlobals->GetPredefinedCMap("GBK-EUC-H");
+  m_pCID2UnicodeMap = pFontGlobals->GetCID2UnicodeMap(m_Charset);
   const CPDF_Dictionary* pFontDesc = m_pFontDict->GetDictFor("FontDescriptor");
   if (pFontDesc)
     LoadFontDescriptor(pFontDesc);
diff --git a/core/fpdfapi/font/cpdf_cmapmanager.cpp b/core/fpdfapi/font/cpdf_cmapmanager.cpp
deleted file mode 100644
index cefa594..0000000
--- a/core/fpdfapi/font/cpdf_cmapmanager.cpp
+++ /dev/null
@@ -1,46 +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/fpdfapi/font/cpdf_cmapmanager.h"
-
-#include <utility>
-
-#include "core/fpdfapi/font/cpdf_cid2unicodemap.h"
-#include "core/fpdfapi/font/cpdf_cmap.h"
-
-namespace {
-
-RetainPtr<const CPDF_CMap> LoadPredefinedCMap(ByteStringView name) {
-  if (!name.IsEmpty() && name[0] == '/')
-    name = name.Last(name.GetLength() - 1);
-  return pdfium::MakeRetain<CPDF_CMap>(name);
-}
-
-}  // namespace
-
-CPDF_CMapManager::CPDF_CMapManager() = default;
-
-CPDF_CMapManager::~CPDF_CMapManager() = default;
-
-RetainPtr<const CPDF_CMap> CPDF_CMapManager::GetPredefinedCMap(
-    const ByteString& name) {
-  auto it = m_CMaps.find(name);
-  if (it != m_CMaps.end())
-    return it->second;
-
-  RetainPtr<const CPDF_CMap> pCMap = LoadPredefinedCMap(name.AsStringView());
-  if (!name.IsEmpty())
-    m_CMaps[name] = pCMap;
-
-  return pCMap;
-}
-
-CPDF_CID2UnicodeMap* CPDF_CMapManager::GetCID2UnicodeMap(CIDSet charset) {
-  if (!m_CID2UnicodeMaps[charset]) {
-    m_CID2UnicodeMaps[charset] = std::make_unique<CPDF_CID2UnicodeMap>(charset);
-  }
-  return m_CID2UnicodeMaps[charset].get();
-}
diff --git a/core/fpdfapi/font/cpdf_cmapmanager.h b/core/fpdfapi/font/cpdf_cmapmanager.h
deleted file mode 100644
index bc8d4e9..0000000
--- a/core/fpdfapi/font/cpdf_cmapmanager.h
+++ /dev/null
@@ -1,30 +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
-
-#ifndef CORE_FPDFAPI_FONT_CPDF_CMAPMANAGER_H_
-#define CORE_FPDFAPI_FONT_CPDF_CMAPMANAGER_H_
-
-#include <map>
-#include <memory>
-
-#include "core/fpdfapi/font/cpdf_cidfont.h"
-#include "core/fxcrt/bytestring.h"
-#include "core/fxcrt/retain_ptr.h"
-
-class CPDF_CMapManager {
- public:
-  CPDF_CMapManager();
-  ~CPDF_CMapManager();
-
-  RetainPtr<const CPDF_CMap> GetPredefinedCMap(const ByteString& name);
-  CPDF_CID2UnicodeMap* GetCID2UnicodeMap(CIDSet charset);
-
- private:
-  std::map<ByteString, RetainPtr<const CPDF_CMap>> m_CMaps;
-  std::unique_ptr<CPDF_CID2UnicodeMap> m_CID2UnicodeMaps[CIDSET_NUM_SETS];
-};
-
-#endif  // CORE_FPDFAPI_FONT_CPDF_CMAPMANAGER_H_
diff --git a/core/fpdfapi/font/cpdf_fontglobals.cpp b/core/fpdfapi/font/cpdf_fontglobals.cpp
index c3065b9..0d5cb69 100644
--- a/core/fpdfapi/font/cpdf_fontglobals.cpp
+++ b/core/fpdfapi/font/cpdf_fontglobals.cpp
@@ -11,6 +11,8 @@
 #include "core/fpdfapi/cmaps/Japan1/cmaps_japan1.h"
 #include "core/fpdfapi/cmaps/Korea1/cmaps_korea1.h"
 #include "core/fpdfapi/font/cfx_stockfontarray.h"
+#include "core/fpdfapi/font/cpdf_cid2unicodemap.h"
+#include "core/fpdfapi/font/cpdf_cmap.h"
 #include "core/fpdfapi/parser/cpdf_document.h"
 #include "third_party/base/check.h"
 #include "third_party/base/containers/contains.h"
@@ -19,6 +21,12 @@
 
 CPDF_FontGlobals* g_FontGlobals = nullptr;
 
+RetainPtr<const CPDF_CMap> LoadPredefinedCMap(ByteStringView name) {
+  if (!name.IsEmpty() && name[0] == '/')
+    name = name.Last(name.GetLength() - 1);
+  return pdfium::MakeRetain<CPDF_CMap>(name);
+}
+
 }  // namespace
 
 // static
@@ -101,3 +109,23 @@
       pdfium::make_span(kFXCMAP_Korea1_cmaps, kFXCMAP_Korea1_cmaps_size));
   SetEmbeddedToUnicode(CIDSET_KOREA1, kFXCMAP_Korea1CID2Unicode_2);
 }
+
+RetainPtr<const CPDF_CMap> CPDF_FontGlobals::GetPredefinedCMap(
+    const ByteString& name) {
+  auto it = m_CMaps.find(name);
+  if (it != m_CMaps.end())
+    return it->second;
+
+  RetainPtr<const CPDF_CMap> pCMap = LoadPredefinedCMap(name.AsStringView());
+  if (!name.IsEmpty())
+    m_CMaps[name] = pCMap;
+
+  return pCMap;
+}
+
+CPDF_CID2UnicodeMap* CPDF_FontGlobals::GetCID2UnicodeMap(CIDSet charset) {
+  if (!m_CID2UnicodeMaps[charset]) {
+    m_CID2UnicodeMaps[charset] = std::make_unique<CPDF_CID2UnicodeMap>(charset);
+  }
+  return m_CID2UnicodeMaps[charset].get();
+}
diff --git a/core/fpdfapi/font/cpdf_fontglobals.h b/core/fpdfapi/font/cpdf_fontglobals.h
index 0879829..8d66122 100644
--- a/core/fpdfapi/font/cpdf_fontglobals.h
+++ b/core/fpdfapi/font/cpdf_fontglobals.h
@@ -11,12 +11,13 @@
 #include <memory>
 
 #include "core/fpdfapi/cmaps/fpdf_cmaps.h"
-#include "core/fpdfapi/font/cpdf_cmapmanager.h"
+#include "core/fpdfapi/font/cpdf_cidfont.h"
 #include "core/fxcrt/retain_ptr.h"
 #include "core/fxge/cfx_fontmapper.h"
 #include "third_party/base/span.h"
 
 class CFX_StockFontArray;
+class CPDF_Font;
 
 class CPDF_FontGlobals {
  public:
@@ -48,7 +49,8 @@
     return m_EmbeddedToUnicodes[idx];
   }
 
-  CPDF_CMapManager* GetCMapManager() { return &m_CMapManager; }
+  RetainPtr<const CPDF_CMap> GetPredefinedCMap(const ByteString& name);
+  CPDF_CID2UnicodeMap* GetCID2UnicodeMap(CIDSet charset);
 
  private:
   CPDF_FontGlobals();
@@ -59,7 +61,8 @@
   void LoadEmbeddedJapan1CMaps();
   void LoadEmbeddedKorea1CMaps();
 
-  CPDF_CMapManager m_CMapManager;
+  std::map<ByteString, RetainPtr<const CPDF_CMap>> m_CMaps;
+  std::unique_ptr<CPDF_CID2UnicodeMap> m_CID2UnicodeMaps[CIDSET_NUM_SETS];
   pdfium::span<const FXCMAP_CMap> m_EmbeddedCharsets[CIDSET_NUM_SETS];
   pdfium::span<const uint16_t> m_EmbeddedToUnicodes[CIDSET_NUM_SETS];
   std::map<CPDF_Document*, std::unique_ptr<CFX_StockFontArray>> m_StockMap;
diff --git a/core/fpdfapi/font/cpdf_tounicodemap.cpp b/core/fpdfapi/font/cpdf_tounicodemap.cpp
index 25736b3..4fa92bf 100644
--- a/core/fpdfapi/font/cpdf_tounicodemap.cpp
+++ b/core/fpdfapi/font/cpdf_tounicodemap.cpp
@@ -135,8 +135,7 @@
       cid_set = CIDSET_GB1;
   }
   if (cid_set != CIDSET_UNKNOWN) {
-    auto* manager = CPDF_FontGlobals::GetInstance()->GetCMapManager();
-    m_pBaseMap = manager->GetCID2UnicodeMap(cid_set);
+    m_pBaseMap = CPDF_FontGlobals::GetInstance()->GetCID2UnicodeMap(cid_set);
   }
 }