Use std::unordered_map for CFDE_CSSStyleSheet::m_StringCache

Get rid of some LPC typedefs while we're at it.

Review-Url: https://codereview.chromium.org/1990363003
diff --git a/xfa/fde/css/fde_cssdatatable.cpp b/xfa/fde/css/fde_cssdatatable.cpp
index db4302b..4399053 100644
--- a/xfa/fde/css/fde_cssdatatable.cpp
+++ b/xfa/fde/css/fde_cssdatatable.cpp
@@ -565,7 +565,7 @@
   return (ePersudo < FDE_CSSPERSUDO_NONE) ? (g_FDE_CSSPersudoType + ePersudo)
                                           : NULL;
 }
-FDE_LPCCSSPROPERTYTABLE FDE_GetCSSPropertyByName(
+const FDE_CSSPROPERTYTABLE* FDE_GetCSSPropertyByName(
     const CFX_WideStringC& wsName) {
   ASSERT(!wsName.IsEmpty());
   uint32_t dwHash = FX_HashCode_GetW(wsName, true);
@@ -585,10 +585,10 @@
   } while (iStart <= iEnd);
   return NULL;
 }
-FDE_LPCCSSPROPERTYTABLE FDE_GetCSSPropertyByEnum(FDE_CSSPROPERTY eName) {
+const FDE_CSSPROPERTYTABLE* FDE_GetCSSPropertyByEnum(FDE_CSSPROPERTY eName) {
   return (eName < FDE_CSSPROPERTY_MAX) ? (g_FDE_CSSProperties + eName) : NULL;
 }
-FDE_LPCCSSPROPERTYVALUETABLE FDE_GetCSSPropertyValueByName(
+const FDE_CSSPROPERTYVALUETABLE* FDE_GetCSSPropertyValueByName(
     const CFX_WideStringC& wsName) {
   ASSERT(!wsName.IsEmpty());
   uint32_t dwHash = FX_HashCode_GetW(wsName, true);
@@ -608,7 +608,7 @@
   } while (iStart <= iEnd);
   return NULL;
 }
-FDE_LPCCSSPROPERTYVALUETABLE FDE_GetCSSPropertyValueByEnum(
+const FDE_CSSPROPERTYVALUETABLE* FDE_GetCSSPropertyValueByEnum(
     FDE_CSSPROPERTYVALUE eName) {
   return (eName < FDE_CSSPROPERTYVALUE_MAX) ? (g_FDE_CSSPropertyValues + eName)
                                             : NULL;
diff --git a/xfa/fde/css/fde_cssdatatable.h b/xfa/fde/css/fde_cssdatatable.h
index 30e7eb0..2cc6c48 100644
--- a/xfa/fde/css/fde_cssdatatable.h
+++ b/xfa/fde/css/fde_cssdatatable.h
@@ -129,27 +129,29 @@
 #define FDE_CSSVALUETYPE_MaybeFunction 0x2000
 #define FDE_IsOnlyValue(type, enum) \
   (((type) & ~(enum)) == FDE_CSSVALUETYPE_Primitive)
+
 struct FDE_CSSPROPERTYTABLE {
   FDE_CSSPROPERTY eName;
   const FX_WCHAR* pszName;
   uint32_t dwHash;
   uint32_t dwType;
 };
-typedef FDE_CSSPROPERTYTABLE const* FDE_LPCCSSPROPERTYTABLE;
 
-FDE_LPCCSSPROPERTYTABLE FDE_GetCSSPropertyByName(const CFX_WideStringC& wsName);
-FDE_LPCCSSPROPERTYTABLE FDE_GetCSSPropertyByEnum(FDE_CSSPROPERTY eName);
+const FDE_CSSPROPERTYTABLE* FDE_GetCSSPropertyByName(
+    const CFX_WideStringC& wsName);
+const FDE_CSSPROPERTYTABLE* FDE_GetCSSPropertyByEnum(FDE_CSSPROPERTY eName);
+
 struct FDE_CSSPROPERTYVALUETABLE {
   FDE_CSSPROPERTYVALUE eName;
   const FX_WCHAR* pszName;
   uint32_t dwHash;
 };
-typedef FDE_CSSPROPERTYVALUETABLE const* FDE_LPCCSSPROPERTYVALUETABLE;
 
-FDE_LPCCSSPROPERTYVALUETABLE FDE_GetCSSPropertyValueByName(
+const FDE_CSSPROPERTYVALUETABLE* FDE_GetCSSPropertyValueByName(
     const CFX_WideStringC& wsName);
-FDE_LPCCSSPROPERTYVALUETABLE FDE_GetCSSPropertyValueByEnum(
+const FDE_CSSPROPERTYVALUETABLE* FDE_GetCSSPropertyValueByEnum(
     FDE_CSSPROPERTYVALUE eName);
+
 struct FDE_CSSMEDIATYPETABLE {
   uint16_t wHash;
   uint16_t wValue;
diff --git a/xfa/fde/css/fde_cssdeclaration.cpp b/xfa/fde/css/fde_cssdeclaration.cpp
index f4f55fc..570b60c 100644
--- a/xfa/fde/css/fde_cssdeclaration.cpp
+++ b/xfa/fde/css/fde_cssdeclaration.cpp
@@ -53,26 +53,21 @@
     const FX_WCHAR* pszValue,
     int32_t iValueLen) {
   ASSERT(iValueLen > 0);
-  CFX_MapPtrToPtr* pCache = pArgs->pStringCache;
-  void* pKey = NULL;
+  std::unordered_map<uint32_t, FX_WCHAR*>* pCache = pArgs->pStringCache;
+  uint32_t key = 0;
   if (pCache) {
-    void* pszCached = NULL;
-    pKey = (void*)(uintptr_t)FX_HashCode_GetW(
-        CFX_WideStringC(pszValue, iValueLen), false);
-    if (pCache->Lookup(pKey, pszCached)) {
-      return (const FX_WCHAR*)pszCached;
-    }
+    key = FX_HashCode_GetW(CFX_WideStringC(pszValue, iValueLen), false);
+    auto it = pCache->find(key);
+    if (it != pCache->end())
+      return it->second;
   }
   FX_WCHAR* psz =
       (FX_WCHAR*)pArgs->pStaticStore->Alloc((iValueLen + 1) * sizeof(FX_WCHAR));
-  if (psz == NULL) {
-    return NULL;
-  }
   FXSYS_wcsncpy(psz, pszValue, iValueLen);
   psz[iValueLen] = '\0';
-  if (pCache) {
-    pCache->SetAt(pKey, psz);
-  }
+  if (pCache)
+    (*pCache)[key] = psz;
+
   return psz;
 }
 IFDE_CSSPrimitiveValue* CFDE_CSSDeclaration::NewNumberValue(
diff --git a/xfa/fde/css/fde_cssdeclaration.h b/xfa/fde/css/fde_cssdeclaration.h
index 4fa6858..d33e710 100644
--- a/xfa/fde/css/fde_cssdeclaration.h
+++ b/xfa/fde/css/fde_cssdeclaration.h
@@ -7,6 +7,8 @@
 #ifndef XFA_FDE_CSS_FDE_CSSDECLARATION_H_
 #define XFA_FDE_CSS_FDE_CSSDECLARATION_H_
 
+#include <unordered_map>
+
 #include "xfa/fde/css/fde_cssdatatable.h"
 
 class FDE_CSSPropertyHolder : public CFX_Target {
@@ -26,8 +28,8 @@
 
 struct FDE_CSSPROPERTYARGS {
   IFX_MemoryAllocator* pStaticStore;
-  CFX_MapPtrToPtr* pStringCache;
-  FDE_LPCCSSPROPERTYTABLE pProperty;
+  std::unordered_map<uint32_t, FX_WCHAR*>* pStringCache;
+  const FDE_CSSPROPERTYTABLE* pProperty;
 };
 
 class CFDE_CSSDeclaration : public CFX_Target {
diff --git a/xfa/fde/css/fde_cssstylesheet.cpp b/xfa/fde/css/fde_cssstylesheet.cpp
index b07031c..dcfd302 100644
--- a/xfa/fde/css/fde_cssstylesheet.cpp
+++ b/xfa/fde/css/fde_cssstylesheet.cpp
@@ -102,7 +102,7 @@
   }
   m_RuleArray.RemoveAll();
   m_Selectors.RemoveAll();
-  m_StringCache.RemoveAll();
+  m_StringCache.clear();
   delete m_pAllocator;
   m_pAllocator = nullptr;
 }
@@ -175,7 +175,7 @@
     }
   } while (eStatus >= FDE_CSSSYNTAXSTATUS_None);
   m_Selectors.RemoveAll();
-  m_StringCache.RemoveAll();
+  m_StringCache.clear();
   return eStatus != FDE_CSSSYNTAXSTATUS_Error;
 }
 FDE_CSSSYNTAXSTATUS CFDE_CSSStyleSheet::LoadMediaRule(
diff --git a/xfa/fde/css/fde_cssstylesheet.h b/xfa/fde/css/fde_cssstylesheet.h
index a78ae48..9362fb1 100644
--- a/xfa/fde/css/fde_cssstylesheet.h
+++ b/xfa/fde/css/fde_cssstylesheet.h
@@ -7,6 +7,8 @@
 #ifndef XFA_FDE_CSS_FDE_CSSSTYLESHEET_H_
 #define XFA_FDE_CSS_FDE_CSSSTYLESHEET_H_
 
+#include <unordered_map>
+
 #include "core/fxcrt/include/fx_ext.h"
 #include "xfa/fde/css/fde_cssdeclaration.h"
 
@@ -134,7 +136,7 @@
   CFDE_CSSRuleArray m_RuleArray;
   CFX_WideString m_szUrl;
   CFDE_CSSSelectorArray m_Selectors;
-  CFX_MapPtrToPtr m_StringCache;
+  std::unordered_map<uint32_t, FX_WCHAR*> m_StringCache;
 };
 
 #endif  // XFA_FDE_CSS_FDE_CSSSTYLESHEET_H_