Fold XFA_GetAttributeByName into CXFA_Node::NameToAttribute

This CL removes the xfa_utils helper and does the work directly in
CXFA_Node.

Change-Id: I4f7cac9cb6d2a53ac5627f50a2f066f79fc22a31
Reviewed-on: https://pdfium-review.googlesource.com/19290
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp
index 4402208..ee2a6df 100644
--- a/xfa/fxfa/parser/cxfa_node.cpp
+++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -145,10 +145,18 @@
 
 // static
 XFA_Attribute CXFA_Node::NameToAttribute(const WideStringView& name) {
-  const XFA_ATTRIBUTEINFO* attr = XFA_GetAttributeByName(name);
-  if (!attr)
+  if (name.IsEmpty())
     return XFA_Attribute::Unknown;
-  return attr->eName;
+
+  auto* it = std::lower_bound(g_XFAAttributeData,
+                              g_XFAAttributeData + g_iXFAAttributeCount,
+                              FX_HashCode_GetW(name, false),
+                              [](const XFA_ATTRIBUTEINFO& arg, uint32_t hash) {
+                                return arg.uHash < hash;
+                              });
+  if (it != g_XFAAttributeData + g_iXFAAttributeCount && name == it->pName)
+    return it->eName;
+  return XFA_Attribute::Unknown;
 }
 
 CXFA_Node::CXFA_Node(CXFA_Document* pDoc,
diff --git a/xfa/fxfa/parser/xfa_utils.cpp b/xfa/fxfa/parser/xfa_utils.cpp
index 03b8943..7fb5ff5 100644
--- a/xfa/fxfa/parser/xfa_utils.cpp
+++ b/xfa/fxfa/parser/xfa_utils.cpp
@@ -268,21 +268,6 @@
   return false;
 }
 
-const XFA_ATTRIBUTEINFO* XFA_GetAttributeByName(const WideStringView& wsName) {
-  if (wsName.IsEmpty())
-    return nullptr;
-
-  auto* it = std::lower_bound(g_XFAAttributeData,
-                              g_XFAAttributeData + g_iXFAAttributeCount,
-                              FX_HashCode_GetW(wsName, false),
-                              [](const XFA_ATTRIBUTEINFO& arg, uint32_t hash) {
-                                return arg.uHash < hash;
-                              });
-  if (it != g_XFAAttributeData + g_iXFAAttributeCount && wsName == it->pName)
-    return it;
-  return nullptr;
-}
-
 const XFA_ATTRIBUTEINFO* XFA_GetAttributeByID(XFA_Attribute eName) {
   ASSERT(static_cast<uint8_t>(eName) < g_iXFAAttributeCount);
   return g_XFAAttributeData + static_cast<uint8_t>(eName);
diff --git a/xfa/fxfa/parser/xfa_utils.h b/xfa/fxfa/parser/xfa_utils.h
index 0809256..afc1076 100644
--- a/xfa/fxfa/parser/xfa_utils.h
+++ b/xfa/fxfa/parser/xfa_utils.h
@@ -54,7 +54,6 @@
                                   XFA_Attribute eAttribute,
                                   XFA_AttributeType eType,
                                   uint32_t dwPacket);
-const XFA_ATTRIBUTEINFO* XFA_GetAttributeByName(const WideStringView& wsName);
 const XFA_ATTRIBUTEINFO* XFA_GetAttributeByID(XFA_Attribute eName);
 const XFA_ATTRIBUTEENUMINFO* XFA_GetAttributeEnumByName(
     const WideStringView& wsName);
diff --git a/xfa/fxfa/parser/xfa_utils_unittest.cpp b/xfa/fxfa/parser/xfa_utils_unittest.cpp
index bd2c89d..b27cdaa 100644
--- a/xfa/fxfa/parser/xfa_utils_unittest.cpp
+++ b/xfa/fxfa/parser/xfa_utils_unittest.cpp
@@ -23,15 +23,6 @@
   }
 }
 
-TEST(XFAUtilsTest, GetAttributeByName) {
-  EXPECT_EQ(nullptr, XFA_GetAttributeByName(L""));
-  EXPECT_EQ(nullptr, XFA_GetAttributeByName(L"nonesuch"));
-  EXPECT_EQ(XFA_Attribute::H, XFA_GetAttributeByName(L"h")->eName);
-  EXPECT_EQ(XFA_Attribute::Short, XFA_GetAttributeByName(L"short")->eName);
-  EXPECT_EQ(XFA_Attribute::DecipherOnly,
-            XFA_GetAttributeByName(L"decipherOnly")->eName);
-}
-
 TEST(XFAUtilsTest, GetAttributeEnumByName) {
   EXPECT_EQ(nullptr, XFA_GetAttributeEnumByName(L""));
   EXPECT_EQ(nullptr, XFA_GetAttributeEnumByName(L"nonesuch"));