Clean up various cmap code.

- Fold CPDF_CID2UnicodeMap::Load() into ctor.
- Fix nits in CPDF_CID2UnicodeMap.
- Remove impossible check for GetPredefinedCMap() returning nullptr.
- Fold CPDF_CMapManager::LoadCID2UnicodeMap() into GetCID2UnicodeMap().
- Move CPDF_CMapManager::LoadPredefinedCMap() into anonymous namespace.
- Use |CIDSET_NUM_SETS| constant where appropriate.

Change-Id: Ic7d45de38f67d2ec1702844e1e77aef31529089d
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/59252
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/font/cpdf_cid2unicodemap.cpp b/core/fpdfapi/font/cpdf_cid2unicodemap.cpp
index af91f98..abb23ac 100644
--- a/core/fpdfapi/font/cpdf_cid2unicodemap.cpp
+++ b/core/fpdfapi/font/cpdf_cid2unicodemap.cpp
@@ -8,7 +8,10 @@
 
 #include "core/fpdfapi/font/cpdf_fontglobals.h"
 
-CPDF_CID2UnicodeMap::CPDF_CID2UnicodeMap() = default;
+CPDF_CID2UnicodeMap::CPDF_CID2UnicodeMap(CIDSet charset)
+    : m_Charset(charset),
+      m_pEmbeddedMap(
+          CPDF_FontGlobals::GetInstance()->GetEmbeddedToUnicode(m_Charset)) {}
 
 CPDF_CID2UnicodeMap::~CPDF_CID2UnicodeMap() = default;
 
@@ -16,18 +19,8 @@
   return !m_pEmbeddedMap.empty();
 }
 
-wchar_t CPDF_CID2UnicodeMap::UnicodeFromCID(uint16_t CID) const {
+wchar_t CPDF_CID2UnicodeMap::UnicodeFromCID(uint16_t cid) const {
   if (m_Charset == CIDSET_UNICODE)
-    return CID;
-
-  if (CID < m_pEmbeddedMap.size())
-    return m_pEmbeddedMap[CID];
-
-  return 0;
-}
-
-void CPDF_CID2UnicodeMap::Load(CIDSet charset) {
-  m_Charset = charset;
-  m_pEmbeddedMap =
-      CPDF_FontGlobals::GetInstance()->GetEmbeddedToUnicode(charset);
+    return cid;
+  return cid < m_pEmbeddedMap.size() ? m_pEmbeddedMap[cid] : 0;
 }
diff --git a/core/fpdfapi/font/cpdf_cid2unicodemap.h b/core/fpdfapi/font/cpdf_cid2unicodemap.h
index 0d0f1ec..e556917 100644
--- a/core/fpdfapi/font/cpdf_cid2unicodemap.h
+++ b/core/fpdfapi/font/cpdf_cid2unicodemap.h
@@ -12,16 +12,15 @@
 
 class CPDF_CID2UnicodeMap {
  public:
-  CPDF_CID2UnicodeMap();
+  explicit CPDF_CID2UnicodeMap(CIDSet charset);
   ~CPDF_CID2UnicodeMap();
 
   bool IsLoaded() const;
-  wchar_t UnicodeFromCID(uint16_t CID) const;
-  void Load(CIDSet charset);
+  wchar_t UnicodeFromCID(uint16_t cid) const;
 
  private:
-  CIDSet m_Charset;
-  pdfium::span<const uint16_t> m_pEmbeddedMap;
+  const CIDSet m_Charset;
+  const pdfium::span<const uint16_t> m_pEmbeddedMap;
 };
 
 #endif  // CORE_FPDFAPI_FONT_CPDF_CID2UNICODEMAP_H_
diff --git a/core/fpdfapi/font/cpdf_cidfont.cpp b/core/fpdfapi/font/cpdf_cidfont.cpp
index 2160d42..6a9e4fc 100644
--- a/core/fpdfapi/font/cpdf_cidfont.cpp
+++ b/core/fpdfapi/font/cpdf_cidfont.cpp
@@ -360,8 +360,6 @@
   if (pEncoding->IsName()) {
     ByteString cmap = pEncoding->GetString();
     m_pCMap = manager->GetPredefinedCMap(cmap);
-    if (!m_pCMap)
-      return false;
   } else if (CPDF_Stream* pStream = pEncoding->AsStream()) {
     auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pStream);
     pAcc->LoadAllDataFiltered();
diff --git a/core/fpdfapi/font/cpdf_cmapmanager.cpp b/core/fpdfapi/font/cpdf_cmapmanager.cpp
index bc47ad0..653af0c 100644
--- a/core/fpdfapi/font/cpdf_cmapmanager.cpp
+++ b/core/fpdfapi/font/cpdf_cmapmanager.cpp
@@ -12,6 +12,16 @@
 #include "core/fpdfapi/font/cpdf_cmap.h"
 #include "third_party/base/ptr_util.h"
 
+namespace {
+
+RetainPtr<const CPDF_CMap> LoadPredefinedCMap(ByteString name) {
+  if (!name.IsEmpty() && name[0] == '/')
+    name = name.Right(name.GetLength() - 1);
+  return pdfium::MakeRetain<CPDF_CMap>(name);
+}
+
+}  // namespace
+
 CPDF_CMapManager::CPDF_CMapManager() = default;
 
 CPDF_CMapManager::~CPDF_CMapManager() = default;
@@ -29,23 +39,10 @@
   return pCMap;
 }
 
-RetainPtr<const CPDF_CMap> CPDF_CMapManager::LoadPredefinedCMap(
-    ByteString name) {
-  if (!name.IsEmpty() && name[0] == '/')
-    name = name.Right(name.GetLength() - 1);
-  return pdfium::MakeRetain<CPDF_CMap>(name);
-}
-
 CPDF_CID2UnicodeMap* CPDF_CMapManager::GetCID2UnicodeMap(CIDSet charset) {
-  if (!m_CID2UnicodeMaps[charset])
-    m_CID2UnicodeMaps[charset] = LoadCID2UnicodeMap(charset);
-
+  if (!m_CID2UnicodeMaps[charset]) {
+    m_CID2UnicodeMaps[charset] =
+        pdfium::MakeUnique<CPDF_CID2UnicodeMap>(charset);
+  }
   return m_CID2UnicodeMaps[charset].get();
 }
-
-std::unique_ptr<CPDF_CID2UnicodeMap> CPDF_CMapManager::LoadCID2UnicodeMap(
-    CIDSet charset) {
-  auto pMap = pdfium::MakeUnique<CPDF_CID2UnicodeMap>();
-  pMap->Load(charset);
-  return pMap;
-}
diff --git a/core/fpdfapi/font/cpdf_cmapmanager.h b/core/fpdfapi/font/cpdf_cmapmanager.h
index a4f451c..bc8d4e9 100644
--- a/core/fpdfapi/font/cpdf_cmapmanager.h
+++ b/core/fpdfapi/font/cpdf_cmapmanager.h
@@ -23,11 +23,8 @@
   CPDF_CID2UnicodeMap* GetCID2UnicodeMap(CIDSet charset);
 
  private:
-  RetainPtr<const CPDF_CMap> LoadPredefinedCMap(ByteString name);
-  std::unique_ptr<CPDF_CID2UnicodeMap> LoadCID2UnicodeMap(CIDSet charset);
-
   std::map<ByteString, RetainPtr<const CPDF_CMap>> m_CMaps;
-  std::unique_ptr<CPDF_CID2UnicodeMap> m_CID2UnicodeMaps[6];
+  std::unique_ptr<CPDF_CID2UnicodeMap> m_CID2UnicodeMaps[CIDSET_NUM_SETS];
 };
 
 #endif  // CORE_FPDFAPI_FONT_CPDF_CMAPMANAGER_H_