Replace FX_LANG_* definitions with enumerated class

Change-Id: I30ccf7bead10d523dffd7cbeeb65abdd36ca29da
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/83512
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fxfa/parser/cxfa_localemgr.cpp b/xfa/fxfa/parser/cxfa_localemgr.cpp
index 3caec11..b870c45 100644
--- a/xfa/fxfa/parser/cxfa_localemgr.cpp
+++ b/xfa/fxfa/parser/cxfa_localemgr.cpp
@@ -25,22 +25,6 @@
 #include "xfa/fxfa/parser/cxfa_xmllocale.h"
 #include "xfa/fxfa/parser/xfa_utils.h"
 
-#define FX_LANG_zh_HK 0x0c04
-#define FX_LANG_zh_CN 0x0804
-#define FX_LANG_zh_TW 0x0404
-#define FX_LANG_nl_NL 0x0413
-#define FX_LANG_en_GB 0x0809
-#define FX_LANG_en_US 0x0409
-#define FX_LANG_fr_FR 0x040c
-#define FX_LANG_de_DE 0x0407
-#define FX_LANG_it_IT 0x0410
-#define FX_LANG_ja_JP 0x0411
-#define FX_LANG_ko_KR 0x0412
-#define FX_LANG_pt_BR 0x0416
-#define FX_LANG_ru_RU 0x0419
-#define FX_LANG_es_LA 0x080a
-#define FX_LANG_es_ES 0x0c0a
-
 namespace {
 
 // These arrays are the hex encoded XML strings which define the locale.
@@ -1081,9 +1065,9 @@
   return CXFA_XMLLocale::Create(heap, pdfium::make_span(output.get(), dwSize));
 }
 
-uint16_t GetLanguage(WideString wsLanguage) {
+CXFA_LocaleMgr::LangID GetLanguageID(WideString wsLanguage) {
   if (wsLanguage.GetLength() < 2)
-    return FX_LANG_en_US;
+    return CXFA_LocaleMgr::LangID::k_en_US;
 
   wsLanguage.MakeLower();
   uint32_t dwIDFirst = wsLanguage[0] << 8 | wsLanguage[1];
@@ -1092,36 +1076,38 @@
   switch (dwIDFirst) {
     case FXBSTR_ID(0, 0, 'z', 'h'):
       if (dwIDSecond == FXBSTR_ID(0, 0, 'c', 'n'))
-        return FX_LANG_zh_CN;
+        return CXFA_LocaleMgr::LangID::k_zh_CN;
       if (dwIDSecond == FXBSTR_ID(0, 0, 't', 'w'))
-        return FX_LANG_zh_TW;
+        return CXFA_LocaleMgr::LangID::k_zh_TW;
       if (dwIDSecond == FXBSTR_ID(0, 0, 'h', 'k'))
-        return FX_LANG_zh_HK;
+        return CXFA_LocaleMgr::LangID::k_zh_HK;
       break;
     case FXBSTR_ID(0, 0, 'j', 'a'):
-      return FX_LANG_ja_JP;
+      return CXFA_LocaleMgr::LangID::k_ja_JP;
     case FXBSTR_ID(0, 0, 'k', 'o'):
-      return FX_LANG_ko_KR;
+      return CXFA_LocaleMgr::LangID::k_ko_KR;
     case FXBSTR_ID(0, 0, 'e', 'n'):
-      return dwIDSecond == FXBSTR_ID(0, 0, 'g', 'b') ? FX_LANG_en_GB
-                                                     : FX_LANG_en_US;
+      return dwIDSecond == FXBSTR_ID(0, 0, 'g', 'b')
+                 ? CXFA_LocaleMgr::LangID::k_en_GB
+                 : CXFA_LocaleMgr::LangID::k_en_US;
     case FXBSTR_ID(0, 0, 'd', 'e'):
-      return FX_LANG_de_DE;
+      return CXFA_LocaleMgr::LangID::k_de_DE;
     case FXBSTR_ID(0, 0, 'f', 'r'):
-      return FX_LANG_fr_FR;
+      return CXFA_LocaleMgr::LangID::k_fr_FR;
     case FXBSTR_ID(0, 0, 'e', 's'):
-      return dwIDSecond == FXBSTR_ID(0, 0, 'e', 's') ? FX_LANG_es_ES
-                                                     : FX_LANG_es_LA;
+      return dwIDSecond == FXBSTR_ID(0, 0, 'e', 's')
+                 ? CXFA_LocaleMgr::LangID::k_es_ES
+                 : CXFA_LocaleMgr::LangID::k_es_LA;
     case FXBSTR_ID(0, 0, 'i', 't'):
-      return FX_LANG_it_IT;
+      return CXFA_LocaleMgr::LangID::k_it_IT;
     case FXBSTR_ID(0, 0, 'p', 't'):
-      return FX_LANG_pt_BR;
+      return CXFA_LocaleMgr::LangID::k_pt_BR;
     case FXBSTR_ID(0, 0, 'n', 'l'):
-      return FX_LANG_nl_NL;
+      return CXFA_LocaleMgr::LangID::k_nl_NL;
     case FXBSTR_ID(0, 0, 'r', 'u'):
-      return FX_LANG_ru_RU;
+      return CXFA_LocaleMgr::LangID::k_ru_RU;
   }
-  return FX_LANG_en_US;
+  return CXFA_LocaleMgr::LangID::k_en_US;
 }
 
 }  // namespace
@@ -1131,7 +1117,7 @@
                                WideString wsDeflcid)
     : m_pHeap(pHeap),
       m_pDefLocale(GetLocaleByName(wsDeflcid)),
-      m_dwDeflcid(GetLanguage(wsDeflcid)) {
+      m_eDeflcid(GetLanguageID(wsDeflcid)) {
   if (!pLocaleSet)
     return;
 
@@ -1160,7 +1146,7 @@
   if (!m_XMLLocaleArray.empty())
     return m_XMLLocaleArray[0];
 
-  CXFA_XMLLocale* pLocale = GetLocale(m_dwDeflcid);
+  CXFA_XMLLocale* pLocale = GetLocale(m_eDeflcid);
   if (pLocale)
     m_XMLLocaleArray.push_back(pLocale);
 
@@ -1168,37 +1154,37 @@
   return m_pDefLocale;
 }
 
-CXFA_XMLLocale* CXFA_LocaleMgr::GetLocale(uint16_t lcid) {
+CXFA_XMLLocale* CXFA_LocaleMgr::GetLocale(LangID lcid) {
   switch (lcid) {
-    case FX_LANG_zh_CN:
+    case LangID::k_zh_CN:
       return GetLocaleFromBuffer(m_pHeap, g_zhCN_Locale);
-    case FX_LANG_zh_TW:
+    case LangID::k_zh_TW:
       return GetLocaleFromBuffer(m_pHeap, g_zhTW_Locale);
-    case FX_LANG_zh_HK:
+    case LangID::k_zh_HK:
       return GetLocaleFromBuffer(m_pHeap, g_zhHK_Locale);
-    case FX_LANG_ja_JP:
+    case LangID::k_ja_JP:
       return GetLocaleFromBuffer(m_pHeap, g_jaJP_Locale);
-    case FX_LANG_ko_KR:
+    case LangID::k_ko_KR:
       return GetLocaleFromBuffer(m_pHeap, g_koKR_Locale);
-    case FX_LANG_en_GB:
+    case LangID::k_en_GB:
       return GetLocaleFromBuffer(m_pHeap, g_enGB_Locale);
-    case FX_LANG_es_LA:
+    case LangID::k_es_LA:
       return GetLocaleFromBuffer(m_pHeap, g_esLA_Locale);
-    case FX_LANG_es_ES:
+    case LangID::k_es_ES:
       return GetLocaleFromBuffer(m_pHeap, g_esES_Locale);
-    case FX_LANG_de_DE:
+    case LangID::k_de_DE:
       return GetLocaleFromBuffer(m_pHeap, g_deDE_Loacale);
-    case FX_LANG_fr_FR:
+    case LangID::k_fr_FR:
       return GetLocaleFromBuffer(m_pHeap, g_frFR_Locale);
-    case FX_LANG_it_IT:
+    case LangID::k_it_IT:
       return GetLocaleFromBuffer(m_pHeap, g_itIT_Locale);
-    case FX_LANG_pt_BR:
+    case LangID::k_pt_BR:
       return GetLocaleFromBuffer(m_pHeap, g_ptBR_Locale);
-    case FX_LANG_nl_NL:
+    case LangID::k_nl_NL:
       return GetLocaleFromBuffer(m_pHeap, g_nlNL_Locale);
-    case FX_LANG_ru_RU:
+    case LangID::k_ru_RU:
       return GetLocaleFromBuffer(m_pHeap, g_ruRU_Locale);
-    case FX_LANG_en_US:
+    case LangID::k_en_US:
     default:
       return GetLocaleFromBuffer(m_pHeap, g_enUS_Locale);
   }
@@ -1220,7 +1206,7 @@
       return pLocale;
   }
 
-  CXFA_XMLLocale* pLocale = GetLocale(GetLanguage(wsLocaleName));
+  CXFA_XMLLocale* pLocale = GetLocale(GetLanguageID(wsLocaleName));
   if (!pLocale)
     return nullptr;
 
diff --git a/xfa/fxfa/parser/cxfa_localemgr.h b/xfa/fxfa/parser/cxfa_localemgr.h
index e9fdf44..1f61f31 100644
--- a/xfa/fxfa/parser/cxfa_localemgr.h
+++ b/xfa/fxfa/parser/cxfa_localemgr.h
@@ -26,6 +26,24 @@
 class CXFA_LocaleMgr : public cppgc::GarbageCollected<CXFA_LocaleMgr>,
                        public LocaleMgrIface {
  public:
+  enum class LangID : uint16_t {
+    k_zh_HK = 0x0c04,
+    k_zh_CN = 0x0804,
+    k_zh_TW = 0x0404,
+    k_nl_NL = 0x0413,
+    k_en_GB = 0x0809,
+    k_en_US = 0x0409,
+    k_fr_FR = 0x040c,
+    k_de_DE = 0x0407,
+    k_it_IT = 0x0410,
+    k_ja_JP = 0x0411,
+    k_ko_KR = 0x0412,
+    k_pt_BR = 0x0416,
+    k_ru_RU = 0x0419,
+    k_es_LA = 0x080a,
+    k_es_ES = 0x0c0a,
+  };
+
   CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED;
   ~CXFA_LocaleMgr() override;
 
@@ -43,7 +61,7 @@
                  WideString wsDeflcid);
 
   // May allocate a new object on the cppgc heap.
-  CXFA_XMLLocale* GetLocale(uint16_t lcid);
+  CXFA_XMLLocale* GetLocale(LangID lcid);
 
   UnownedPtr<cppgc::Heap> m_pHeap;
   std::vector<cppgc::Member<CXFA_NodeLocale>> m_LocaleArray;
@@ -60,7 +78,7 @@
   mutable Optional<WideString> m_wsConfigLocale;
   mutable bool m_bConfigLocaleCached = false;
 
-  uint16_t m_dwDeflcid;
+  LangID m_eDeflcid;
 };
 
 #endif  // XFA_FXFA_PARSER_CXFA_LOCALEMGR_H_