Remove strings/hashes from element-atttribute table.

"Join" instead based on the attribute enum after looking it up
in the attribute table.

Change-Id: I28bb6e550703170c470e0d66159d4a3f09423623
Reviewed-on: https://pdfium-review.googlesource.com/c/47051
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fxfa/parser/xfa_basic_data.cpp b/xfa/fxfa/parser/xfa_basic_data.cpp
index 2042fb5..554490e 100644
--- a/xfa/fxfa/parser/xfa_basic_data.cpp
+++ b/xfa/fxfa/parser/xfa_basic_data.cpp
@@ -542,14 +542,12 @@
 static_assert(static_cast<int>(XFA_Element::Placeholder4) == 320, "320");
 
 struct ElementAttributeRecord {
-  uint32_t uHash;  // Hashed as wide string.
   XFA_Attribute attribute;
-  XFA_ScriptType eValueType;
   XFA_ATTRIBUTE_CALLBACK callback;
 };
 
 #undef ATTR
-#define ATTR(a, b, c, d, e) a, d, e, reinterpret_cast<XFA_ATTRIBUTE_CALLBACK>(c)
+#define ATTR(a, b, c, d, e) d, reinterpret_cast<XFA_ATTRIBUTE_CALLBACK>(c)
 
 const ElementAttributeRecord g_ElementAttributeTable[] = {
     /* ps */
@@ -6630,10 +6628,10 @@
 Optional<XFA_SCRIPTATTRIBUTEINFO> XFA_GetScriptAttributeByName(
     XFA_Element eElement,
     WideStringView wsAttributeName) {
-  if (wsAttributeName.IsEmpty())
+  Optional<XFA_ATTRIBUTEINFO> attr = XFA_GetAttributeByName(wsAttributeName);
+  if (!attr.has_value())
     return {};
 
-  uint32_t uHash = FX_HashCode_GetW(wsAttributeName, false);
   while (eElement != XFA_Element::Unknown) {
     const ScriptIndexRecord* scriptIndex =
         &g_ScriptIndexTable[static_cast<size_t>(eElement)];
@@ -6641,10 +6639,10 @@
     size_t iEnd = iStart + scriptIndex->wAttributeCount;
     for (size_t iter = iStart; iter < iEnd; ++iter) {
       const ElementAttributeRecord* pInfo = &g_ElementAttributeTable[iter];
-      if (uHash == pInfo->uHash) {
+      if (attr.value().attribute == pInfo->attribute) {
         XFA_SCRIPTATTRIBUTEINFO result;
-        result.attribute = pInfo->attribute;
-        result.eValueType = pInfo->eValueType;
+        result.attribute = attr.value().attribute;
+        result.eValueType = attr.value().eValueType;
         result.callback = pInfo->callback;
         return result;
       }