diff --git a/fxjs/cfxjse_formcalc_context.cpp b/fxjs/cfxjse_formcalc_context.cpp
index a06e65a..7f488ed 100644
--- a/fxjs/cfxjse_formcalc_context.cpp
+++ b/fxjs/cfxjse_formcalc_context.cpp
@@ -5729,7 +5729,7 @@
             wsName = *ret;
         }
         if (wsName.IsEmpty())
-          wsName = L"#" + pNode->GetClassName();
+          wsName = L"#" + WideString::FromASCII(pNode->GetClassName());
 
         wsSomExpression = wsName + wsSomExpression;
         dFlags = XFA_RESOLVENODE_Siblings;
diff --git a/fxjs/xfa/cjx_node.cpp b/fxjs/xfa/cjx_node.cpp
index 4d706f9..d0ae0ea 100644
--- a/fxjs/xfa/cjx_node.cpp
+++ b/fxjs/xfa/cjx_node.cpp
@@ -292,7 +292,7 @@
       clone = pThisXMLRoot->Clone(top_xml_doc);
     } else {
       clone = top_xml_doc->CreateNode<CFX_XMLElement>(
-          WideString(GetXFANode()->GetClassName()));
+          WideString::FromASCII(GetXFANode()->GetClassName()));
     }
     pFakeXMLRoot = clone;
   }
diff --git a/fxjs/xfa/cjx_object.cpp b/fxjs/xfa/cjx_object.cpp
index a762027..7ecd25f 100644
--- a/fxjs/xfa/cjx_object.cpp
+++ b/fxjs/xfa/cjx_object.cpp
@@ -148,8 +148,7 @@
     ThrowInvalidPropertyException();
     return;
   }
-  pValue->SetString(
-      FX_UTF8Encode(GetXFAObject()->GetClassName()).AsStringView());
+  pValue->SetString(GetXFAObject()->GetClassName());
 }
 
 int32_t CJX_Object::Subform_and_SubformSet_InstanceIndex() {
diff --git a/fxjs/xfa/cjx_tree.cpp b/fxjs/xfa/cjx_tree.cpp
index c1dc937..3992127 100644
--- a/fxjs/xfa/cjx_tree.cpp
+++ b/fxjs/xfa/cjx_tree.cpp
@@ -123,7 +123,8 @@
     return;
   }
 
-  WideString wsExpression = L"#" + GetXFAObject()->GetClassName() + L"[*]";
+  WideString wsExpression =
+      L"#" + WideString::FromASCII(GetXFAObject()->GetClassName()) + L"[*]";
   ResolveNodeList(pValue, wsExpression,
                   XFA_RESOLVENODE_Siblings | XFA_RESOLVENODE_ALL, nullptr);
 }
diff --git a/xfa/fxfa/parser/cscript_datawindow.cpp b/xfa/fxfa/parser/cscript_datawindow.cpp
index 0bf17e5..1328dba 100644
--- a/xfa/fxfa/parser/cscript_datawindow.cpp
+++ b/xfa/fxfa/parser/cscript_datawindow.cpp
@@ -16,7 +16,6 @@
     : CXFA_Object(pDocument,
                   XFA_ObjectType::Object,
                   XFA_Element::DataWindow,
-                  WideStringView(L"dataWindow"),
                   pdfium::MakeUnique<CJX_DataWindow>(this)) {}
 
 CScript_DataWindow::~CScript_DataWindow() {}
diff --git a/xfa/fxfa/parser/cscript_eventpseudomodel.cpp b/xfa/fxfa/parser/cscript_eventpseudomodel.cpp
index ecab6cf..b4953af 100644
--- a/xfa/fxfa/parser/cscript_eventpseudomodel.cpp
+++ b/xfa/fxfa/parser/cscript_eventpseudomodel.cpp
@@ -13,7 +13,6 @@
     : CXFA_Object(pDocument,
                   XFA_ObjectType::Object,
                   XFA_Element::EventPseudoModel,
-                  WideStringView(L"eventPseudoModel"),
                   pdfium::MakeUnique<CJX_EventPseudoModel>(this)) {}
 
 CScript_EventPseudoModel::~CScript_EventPseudoModel() = default;
diff --git a/xfa/fxfa/parser/cscript_hostpseudomodel.cpp b/xfa/fxfa/parser/cscript_hostpseudomodel.cpp
index 75701bf..4501633 100644
--- a/xfa/fxfa/parser/cscript_hostpseudomodel.cpp
+++ b/xfa/fxfa/parser/cscript_hostpseudomodel.cpp
@@ -13,7 +13,6 @@
     : CXFA_Object(pDocument,
                   XFA_ObjectType::Object,
                   XFA_Element::HostPseudoModel,
-                  WideStringView(L"hostPseudoModel"),
                   pdfium::MakeUnique<CJX_HostPseudoModel>(this)) {}
 
 CScript_HostPseudoModel::~CScript_HostPseudoModel() = default;
diff --git a/xfa/fxfa/parser/cscript_layoutpseudomodel.cpp b/xfa/fxfa/parser/cscript_layoutpseudomodel.cpp
index 4e0a4a3..4dfad07 100644
--- a/xfa/fxfa/parser/cscript_layoutpseudomodel.cpp
+++ b/xfa/fxfa/parser/cscript_layoutpseudomodel.cpp
@@ -13,7 +13,6 @@
     : CXFA_Object(pDocument,
                   XFA_ObjectType::Object,
                   XFA_Element::LayoutPseudoModel,
-                  WideStringView(L"layoutPseudoModel"),
                   pdfium::MakeUnique<CJX_LayoutPseudoModel>(this)) {}
 
 CScript_LayoutPseudoModel::~CScript_LayoutPseudoModel() = default;
diff --git a/xfa/fxfa/parser/cscript_logpseudomodel.cpp b/xfa/fxfa/parser/cscript_logpseudomodel.cpp
index d99651c..185ac80 100644
--- a/xfa/fxfa/parser/cscript_logpseudomodel.cpp
+++ b/xfa/fxfa/parser/cscript_logpseudomodel.cpp
@@ -13,7 +13,6 @@
     : CXFA_Object(pDocument,
                   XFA_ObjectType::Object,
                   XFA_Element::LogPseudoModel,
-                  WideStringView(L"logPseudoModel"),
                   pdfium::MakeUnique<CJX_LogPseudoModel>(this)) {}
 
 CScript_LogPseudoModel::~CScript_LogPseudoModel() {}
diff --git a/xfa/fxfa/parser/cscript_signaturepseudomodel.cpp b/xfa/fxfa/parser/cscript_signaturepseudomodel.cpp
index 3a83c8e..1f92369 100644
--- a/xfa/fxfa/parser/cscript_signaturepseudomodel.cpp
+++ b/xfa/fxfa/parser/cscript_signaturepseudomodel.cpp
@@ -14,7 +14,6 @@
     : CXFA_Object(pDocument,
                   XFA_ObjectType::Object,
                   XFA_Element::SignaturePseudoModel,
-                  WideStringView(L"signaturePseudoModel"),
                   pdfium::MakeUnique<CJX_SignaturePseudoModel>(this)) {}
 
 CScript_SignaturePseudoModel::~CScript_SignaturePseudoModel() = default;
diff --git a/xfa/fxfa/parser/cxfa_accessiblecontent.cpp b/xfa/fxfa/parser/cxfa_accessiblecontent.cpp
index 4286b8e..72bd5f0 100644
--- a/xfa/fxfa/parser/cxfa_accessiblecontent.cpp
+++ b/xfa/fxfa/parser/cxfa_accessiblecontent.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kAccessibleContentName[] = L"accessibleContent";
-
 }  // namespace
 
 CXFA_AccessibleContent::CXFA_AccessibleContent(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::AccessibleContent,
                 nullptr,
-                kAccessibleContentAttributeData,
-                kAccessibleContentName) {}
+                kAccessibleContentAttributeData) {}
 
-CXFA_AccessibleContent::~CXFA_AccessibleContent() {}
+CXFA_AccessibleContent::~CXFA_AccessibleContent() = default;
diff --git a/xfa/fxfa/parser/cxfa_acrobat.cpp b/xfa/fxfa/parser/cxfa_acrobat.cpp
index 2f4be07..d12340c 100644
--- a/xfa/fxfa/parser/cxfa_acrobat.cpp
+++ b/xfa/fxfa/parser/cxfa_acrobat.cpp
@@ -15,13 +15,12 @@
     {XFA_Element::Acrobat7, 1, 0},
     {XFA_Element::Common, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kAcrobatAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kAcrobatName[] = L"acrobat";
-
 }  // namespace
 
 CXFA_Acrobat::CXFA_Acrobat(CXFA_Document* doc, XFA_PacketType packet)
@@ -31,7 +30,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Acrobat,
                 kAcrobatPropertyData,
-                kAcrobatAttributeData,
-                kAcrobatName) {}
+                kAcrobatAttributeData) {}
 
-CXFA_Acrobat::~CXFA_Acrobat() {}
+CXFA_Acrobat::~CXFA_Acrobat() = default;
diff --git a/xfa/fxfa/parser/cxfa_acrobat7.cpp b/xfa/fxfa/parser/cxfa_acrobat7.cpp
index 92eafb6..a68f9c4 100644
--- a/xfa/fxfa/parser/cxfa_acrobat7.cpp
+++ b/xfa/fxfa/parser/cxfa_acrobat7.cpp
@@ -11,13 +11,12 @@
 const CXFA_Node::PropertyData kAcrobat7PropertyData[] = {
     {XFA_Element::DynamicRender, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kAcrobat7AttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kAcrobat7Name[] = L"acrobat7";
-
 }  // namespace
 
 CXFA_Acrobat7::CXFA_Acrobat7(CXFA_Document* doc, XFA_PacketType packet)
@@ -27,7 +26,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Acrobat7,
                 kAcrobat7PropertyData,
-                kAcrobat7AttributeData,
-                kAcrobat7Name) {}
+                kAcrobat7AttributeData) {}
 
-CXFA_Acrobat7::~CXFA_Acrobat7() {}
+CXFA_Acrobat7::~CXFA_Acrobat7() = default;
diff --git a/xfa/fxfa/parser/cxfa_adbe_jsconsole.cpp b/xfa/fxfa/parser/cxfa_adbe_jsconsole.cpp
index a650683..b2581b2 100644
--- a/xfa/fxfa/parser/cxfa_adbe_jsconsole.cpp
+++ b/xfa/fxfa/parser/cxfa_adbe_jsconsole.cpp
@@ -8,16 +8,14 @@
 
 namespace {
 
-const CXFA_Node::AttributeData kaDBE_JSConsoleAttributeData[] = {
+const CXFA_Node::AttributeData kADBE_JSConsoleAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kaDBE_JSConsoleName[] = L"ADBE_JSConsole";
-
 }  // namespace
 
-CXFA_aDBE_JSConsole::CXFA_aDBE_JSConsole(CXFA_Document* doc,
+CXFA_ADBE_JSConsole::CXFA_ADBE_JSConsole(CXFA_Document* doc,
                                          XFA_PacketType packet)
     : CXFA_Node(doc,
                 packet,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::ADBE_JSConsole,
                 nullptr,
-                kaDBE_JSConsoleAttributeData,
-                kaDBE_JSConsoleName) {}
+                kADBE_JSConsoleAttributeData) {}
 
-CXFA_aDBE_JSConsole::~CXFA_aDBE_JSConsole() {}
+CXFA_ADBE_JSConsole::~CXFA_ADBE_JSConsole() = default;
diff --git a/xfa/fxfa/parser/cxfa_adbe_jsconsole.h b/xfa/fxfa/parser/cxfa_adbe_jsconsole.h
index e894479..2fef074 100644
--- a/xfa/fxfa/parser/cxfa_adbe_jsconsole.h
+++ b/xfa/fxfa/parser/cxfa_adbe_jsconsole.h
@@ -9,10 +9,10 @@
 
 #include "xfa/fxfa/parser/cxfa_node.h"
 
-class CXFA_aDBE_JSConsole final : public CXFA_Node {
+class CXFA_ADBE_JSConsole final : public CXFA_Node {
  public:
-  CXFA_aDBE_JSConsole(CXFA_Document* doc, XFA_PacketType packet);
-  ~CXFA_aDBE_JSConsole() override;
+  CXFA_ADBE_JSConsole(CXFA_Document* doc, XFA_PacketType packet);
+  ~CXFA_ADBE_JSConsole() override;
 };
 
 #endif  // XFA_FXFA_PARSER_CXFA_ADBE_JSCONSOLE_H_
diff --git a/xfa/fxfa/parser/cxfa_adbe_jsdebugger.cpp b/xfa/fxfa/parser/cxfa_adbe_jsdebugger.cpp
index b1737e3..db3b890 100644
--- a/xfa/fxfa/parser/cxfa_adbe_jsdebugger.cpp
+++ b/xfa/fxfa/parser/cxfa_adbe_jsdebugger.cpp
@@ -8,16 +8,14 @@
 
 namespace {
 
-const CXFA_Node::AttributeData kaDBE_JSDebuggerAttributeData[] = {
+const CXFA_Node::AttributeData kADBE_JSDebuggerAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kaDBE_JSDebuggerName[] = L"ADBE_JSDebugger";
-
 }  // namespace
 
-CXFA_aDBE_JSDebugger::CXFA_aDBE_JSDebugger(CXFA_Document* doc,
+CXFA_ADBE_JSDebugger::CXFA_ADBE_JSDebugger(CXFA_Document* doc,
                                            XFA_PacketType packet)
     : CXFA_Node(doc,
                 packet,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::ADBE_JSDebugger,
                 nullptr,
-                kaDBE_JSDebuggerAttributeData,
-                kaDBE_JSDebuggerName) {}
+                kADBE_JSDebuggerAttributeData) {}
 
-CXFA_aDBE_JSDebugger::~CXFA_aDBE_JSDebugger() {}
+CXFA_ADBE_JSDebugger::~CXFA_ADBE_JSDebugger() = default;
diff --git a/xfa/fxfa/parser/cxfa_adbe_jsdebugger.h b/xfa/fxfa/parser/cxfa_adbe_jsdebugger.h
index f7da535..34fcb0c 100644
--- a/xfa/fxfa/parser/cxfa_adbe_jsdebugger.h
+++ b/xfa/fxfa/parser/cxfa_adbe_jsdebugger.h
@@ -9,10 +9,10 @@
 
 #include "xfa/fxfa/parser/cxfa_node.h"
 
-class CXFA_aDBE_JSDebugger final : public CXFA_Node {
+class CXFA_ADBE_JSDebugger final : public CXFA_Node {
  public:
-  CXFA_aDBE_JSDebugger(CXFA_Document* doc, XFA_PacketType packet);
-  ~CXFA_aDBE_JSDebugger() override;
+  CXFA_ADBE_JSDebugger(CXFA_Document* doc, XFA_PacketType packet);
+  ~CXFA_ADBE_JSDebugger() override;
 };
 
 #endif  // XFA_FXFA_PARSER_CXFA_ADBE_JSDEBUGGER_H_
diff --git a/xfa/fxfa/parser/cxfa_addsilentprint.cpp b/xfa/fxfa/parser/cxfa_addsilentprint.cpp
index 74c3633..28d1918 100644
--- a/xfa/fxfa/parser/cxfa_addsilentprint.cpp
+++ b/xfa/fxfa/parser/cxfa_addsilentprint.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kAddSilentPrintName[] = L"addSilentPrint";
-
 }  // namespace
 
 CXFA_AddSilentPrint::CXFA_AddSilentPrint(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::AddSilentPrint,
                 nullptr,
-                kAddSilentPrintAttributeData,
-                kAddSilentPrintName) {}
+                kAddSilentPrintAttributeData) {}
 
-CXFA_AddSilentPrint::~CXFA_AddSilentPrint() {}
+CXFA_AddSilentPrint::~CXFA_AddSilentPrint() = default;
diff --git a/xfa/fxfa/parser/cxfa_addviewerpreferences.cpp b/xfa/fxfa/parser/cxfa_addviewerpreferences.cpp
index 7624410..3d98c73 100644
--- a/xfa/fxfa/parser/cxfa_addviewerpreferences.cpp
+++ b/xfa/fxfa/parser/cxfa_addviewerpreferences.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kAddViewerPreferencesName[] = L"addViewerPreferences";
-
 }  // namespace
 
 CXFA_AddViewerPreferences::CXFA_AddViewerPreferences(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::AddViewerPreferences,
                 nullptr,
-                kAddViewerPreferencesAttributeData,
-                kAddViewerPreferencesName) {}
+                kAddViewerPreferencesAttributeData) {}
 
-CXFA_AddViewerPreferences::~CXFA_AddViewerPreferences() {}
+CXFA_AddViewerPreferences::~CXFA_AddViewerPreferences() = default;
diff --git a/xfa/fxfa/parser/cxfa_adjustdata.cpp b/xfa/fxfa/parser/cxfa_adjustdata.cpp
index 18c72d9..e207ce9 100644
--- a/xfa/fxfa/parser/cxfa_adjustdata.cpp
+++ b/xfa/fxfa/parser/cxfa_adjustdata.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kAdjustDataName[] = L"adjustData";
-
 }  // namespace
 
 CXFA_AdjustData::CXFA_AdjustData(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::AdjustData,
                 nullptr,
-                kAdjustDataAttributeData,
-                kAdjustDataName) {}
+                kAdjustDataAttributeData) {}
 
-CXFA_AdjustData::~CXFA_AdjustData() {}
+CXFA_AdjustData::~CXFA_AdjustData() = default;
diff --git a/xfa/fxfa/parser/cxfa_adobeextensionlevel.cpp b/xfa/fxfa/parser/cxfa_adobeextensionlevel.cpp
index 593dd910..f29dc97 100644
--- a/xfa/fxfa/parser/cxfa_adobeextensionlevel.cpp
+++ b/xfa/fxfa/parser/cxfa_adobeextensionlevel.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kAdobeExtensionLevelName[] = L"adobeExtensionLevel";
-
 }  // namespace
 
 CXFA_AdobeExtensionLevel::CXFA_AdobeExtensionLevel(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::AdobeExtensionLevel,
                 nullptr,
-                kAdobeExtensionLevelAttributeData,
-                kAdobeExtensionLevelName) {}
+                kAdobeExtensionLevelAttributeData) {}
 
-CXFA_AdobeExtensionLevel::~CXFA_AdobeExtensionLevel() {}
+CXFA_AdobeExtensionLevel::~CXFA_AdobeExtensionLevel() = default;
diff --git a/xfa/fxfa/parser/cxfa_agent.cpp b/xfa/fxfa/parser/cxfa_agent.cpp
index 4643aa1..a70f63f 100644
--- a/xfa/fxfa/parser/cxfa_agent.cpp
+++ b/xfa/fxfa/parser/cxfa_agent.cpp
@@ -14,8 +14,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kAgentName[] = L"agent";
-
 }  // namespace
 
 CXFA_Agent::CXFA_Agent(CXFA_Document* doc, XFA_PacketType packet)
@@ -25,7 +23,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Agent,
                 nullptr,
-                kAgentAttributeData,
-                kAgentName) {}
+                kAgentAttributeData) {}
 
-CXFA_Agent::~CXFA_Agent() {}
+CXFA_Agent::~CXFA_Agent() = default;
diff --git a/xfa/fxfa/parser/cxfa_alwaysembed.cpp b/xfa/fxfa/parser/cxfa_alwaysembed.cpp
index d57dfb6..d8b50e3 100644
--- a/xfa/fxfa/parser/cxfa_alwaysembed.cpp
+++ b/xfa/fxfa/parser/cxfa_alwaysembed.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kAlwaysEmbedName[] = L"alwaysEmbed";
-
 }  // namespace
 
 CXFA_AlwaysEmbed::CXFA_AlwaysEmbed(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::AlwaysEmbed,
                 nullptr,
-                kAlwaysEmbedAttributeData,
-                kAlwaysEmbedName) {}
+                kAlwaysEmbedAttributeData) {}
 
-CXFA_AlwaysEmbed::~CXFA_AlwaysEmbed() {}
+CXFA_AlwaysEmbed::~CXFA_AlwaysEmbed() = default;
diff --git a/xfa/fxfa/parser/cxfa_amd.cpp b/xfa/fxfa/parser/cxfa_amd.cpp
index 539a41a..e26a261 100644
--- a/xfa/fxfa/parser/cxfa_amd.cpp
+++ b/xfa/fxfa/parser/cxfa_amd.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kAmdName[] = L"amd";
-
 }  // namespace
 
 CXFA_Amd::CXFA_Amd(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Amd,
                 nullptr,
-                kAmdAttributeData,
-                kAmdName) {}
+                kAmdAttributeData) {}
 
-CXFA_Amd::~CXFA_Amd() {}
+CXFA_Amd::~CXFA_Amd() = default;
diff --git a/xfa/fxfa/parser/cxfa_appearancefilter.cpp b/xfa/fxfa/parser/cxfa_appearancefilter.cpp
index 8561636..e78b633 100644
--- a/xfa/fxfa/parser/cxfa_appearancefilter.cpp
+++ b/xfa/fxfa/parser/cxfa_appearancefilter.cpp
@@ -16,8 +16,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kAppearanceFilterName[] = L"appearanceFilter";
-
 }  // namespace
 
 CXFA_AppearanceFilter::CXFA_AppearanceFilter(CXFA_Document* doc,
@@ -28,7 +26,6 @@
                 XFA_ObjectType::NodeC,
                 XFA_Element::AppearanceFilter,
                 nullptr,
-                kAppearanceFilterAttributeData,
-                kAppearanceFilterName) {}
+                kAppearanceFilterAttributeData) {}
 
-CXFA_AppearanceFilter::~CXFA_AppearanceFilter() {}
+CXFA_AppearanceFilter::~CXFA_AppearanceFilter() = default;
diff --git a/xfa/fxfa/parser/cxfa_arc.cpp b/xfa/fxfa/parser/cxfa_arc.cpp
index 81d7107..03c427c 100644
--- a/xfa/fxfa/parser/cxfa_arc.cpp
+++ b/xfa/fxfa/parser/cxfa_arc.cpp
@@ -15,6 +15,7 @@
     {XFA_Element::Edge, 1, 0},
     {XFA_Element::Fill, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kArcAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -26,7 +27,6 @@
      (void*)XFA_AttributeValue::Even},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kArcName[] = L"arc";
 
 }  // namespace
 
@@ -38,7 +38,6 @@
                XFA_Element::Arc,
                kArcPropertyData,
                kArcAttributeData,
-               kArcName,
                pdfium::MakeUnique<CJX_Arc>(this)) {}
 
-CXFA_Arc::~CXFA_Arc() {}
+CXFA_Arc::~CXFA_Arc() = default;
diff --git a/xfa/fxfa/parser/cxfa_area.cpp b/xfa/fxfa/parser/cxfa_area.cpp
index be8e832..54ca365 100644
--- a/xfa/fxfa/parser/cxfa_area.cpp
+++ b/xfa/fxfa/parser/cxfa_area.cpp
@@ -15,6 +15,7 @@
     {XFA_Element::Desc, 1, 0},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kAreaAttributeData[] = {
     {XFA_Attribute::X, XFA_AttributeType::Measure, (void*)L"0in"},
     {XFA_Attribute::Y, XFA_AttributeType::Measure, (void*)L"0in"},
@@ -28,8 +29,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kAreaName[] = L"area";
-
 }  // namespace
 
 CXFA_Area::CXFA_Area(CXFA_Document* doc, XFA_PacketType packet)
@@ -41,7 +40,6 @@
           XFA_Element::Area,
           kAreaPropertyData,
           kAreaAttributeData,
-          kAreaName,
           pdfium::MakeUnique<CJX_Area>(this)) {}
 
-CXFA_Area::~CXFA_Area() {}
+CXFA_Area::~CXFA_Area() = default;
diff --git a/xfa/fxfa/parser/cxfa_assist.cpp b/xfa/fxfa/parser/cxfa_assist.cpp
index 9ba1408..4119ec7 100644
--- a/xfa/fxfa/parser/cxfa_assist.cpp
+++ b/xfa/fxfa/parser/cxfa_assist.cpp
@@ -15,6 +15,7 @@
     {XFA_Element::ToolTip, 1, 0},
     {XFA_Element::Speak, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kAssistAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -22,8 +23,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kAssistName[] = L"assist";
-
 }  // namespace
 
 CXFA_Assist::CXFA_Assist(CXFA_Document* doc, XFA_PacketType packet)
@@ -34,7 +33,6 @@
                 XFA_Element::Assist,
                 kAssistPropertyData,
                 kAssistAttributeData,
-                kAssistName,
                 pdfium::MakeUnique<CJX_Assist>(this)) {}
 
-CXFA_Assist::~CXFA_Assist() {}
+CXFA_Assist::~CXFA_Assist() = default;
diff --git a/xfa/fxfa/parser/cxfa_attributes.cpp b/xfa/fxfa/parser/cxfa_attributes.cpp
index 7a9df6e..5bac73e 100644
--- a/xfa/fxfa/parser/cxfa_attributes.cpp
+++ b/xfa/fxfa/parser/cxfa_attributes.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kAttributesName[] = L"attributes";
-
 }  // namespace
 
 CXFA_Attributes::CXFA_Attributes(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::Attributes,
                 nullptr,
-                kAttributesAttributeData,
-                kAttributesName) {}
+                kAttributesAttributeData) {}
 
-CXFA_Attributes::~CXFA_Attributes() {}
+CXFA_Attributes::~CXFA_Attributes() = default;
diff --git a/xfa/fxfa/parser/cxfa_autosave.cpp b/xfa/fxfa/parser/cxfa_autosave.cpp
index d02fe20..01c5219 100644
--- a/xfa/fxfa/parser/cxfa_autosave.cpp
+++ b/xfa/fxfa/parser/cxfa_autosave.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kAutoSaveName[] = L"autoSave";
-
 }  // namespace
 
 CXFA_AutoSave::CXFA_AutoSave(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::AutoSave,
                 nullptr,
-                kAutoSaveAttributeData,
-                kAutoSaveName) {}
+                kAutoSaveAttributeData) {}
 
-CXFA_AutoSave::~CXFA_AutoSave() {}
+CXFA_AutoSave::~CXFA_AutoSave() = default;
diff --git a/xfa/fxfa/parser/cxfa_barcode.cpp b/xfa/fxfa/parser/cxfa_barcode.cpp
index cc8da5b..316b169 100644
--- a/xfa/fxfa/parser/cxfa_barcode.cpp
+++ b/xfa/fxfa/parser/cxfa_barcode.cpp
@@ -40,8 +40,6 @@
     {XFA_Attribute::EndChar, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kBarcodeName[] = L"barcode";
-
 }  // namespace
 
 CXFA_Barcode::CXFA_Barcode(CXFA_Document* doc, XFA_PacketType packet)
@@ -52,10 +50,9 @@
                 XFA_Element::Barcode,
                 nullptr,
                 kBarcodeAttributeData,
-                kBarcodeName,
                 pdfium::MakeUnique<CJX_Barcode>(this)) {}
 
-CXFA_Barcode::~CXFA_Barcode() {}
+CXFA_Barcode::~CXFA_Barcode() = default;
 
 XFA_FFWidgetType CXFA_Barcode::GetDefaultFFWidgetType() const {
   return XFA_FFWidgetType::kBarcode;
diff --git a/xfa/fxfa/parser/cxfa_base.cpp b/xfa/fxfa/parser/cxfa_base.cpp
index bc23a75..43fc66b 100644
--- a/xfa/fxfa/parser/cxfa_base.cpp
+++ b/xfa/fxfa/parser/cxfa_base.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kBaseName[] = L"base";
-
 }  // namespace
 
 CXFA_Base::CXFA_Base(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Base,
                 nullptr,
-                kBaseAttributeData,
-                kBaseName) {}
+                kBaseAttributeData) {}
 
-CXFA_Base::~CXFA_Base() {}
+CXFA_Base::~CXFA_Base() = default;
diff --git a/xfa/fxfa/parser/cxfa_batchoutput.cpp b/xfa/fxfa/parser/cxfa_batchoutput.cpp
index d274e87..c4b1c58 100644
--- a/xfa/fxfa/parser/cxfa_batchoutput.cpp
+++ b/xfa/fxfa/parser/cxfa_batchoutput.cpp
@@ -15,8 +15,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kBatchOutputName[] = L"batchOutput";
-
 }  // namespace
 
 CXFA_BatchOutput::CXFA_BatchOutput(CXFA_Document* doc, XFA_PacketType packet)
@@ -26,7 +24,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::BatchOutput,
                 nullptr,
-                kBatchOutputAttributeData,
-                kBatchOutputName) {}
+                kBatchOutputAttributeData) {}
 
-CXFA_BatchOutput::~CXFA_BatchOutput() {}
+CXFA_BatchOutput::~CXFA_BatchOutput() = default;
diff --git a/xfa/fxfa/parser/cxfa_behavioroverride.cpp b/xfa/fxfa/parser/cxfa_behavioroverride.cpp
index 14ee23b..adf709c 100644
--- a/xfa/fxfa/parser/cxfa_behavioroverride.cpp
+++ b/xfa/fxfa/parser/cxfa_behavioroverride.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kBehaviorOverrideName[] = L"behaviorOverride";
-
 }  // namespace
 
 CXFA_BehaviorOverride::CXFA_BehaviorOverride(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::BehaviorOverride,
                 nullptr,
-                kBehaviorOverrideAttributeData,
-                kBehaviorOverrideName) {}
+                kBehaviorOverrideAttributeData) {}
 
-CXFA_BehaviorOverride::~CXFA_BehaviorOverride() {}
+CXFA_BehaviorOverride::~CXFA_BehaviorOverride() = default;
diff --git a/xfa/fxfa/parser/cxfa_bind.cpp b/xfa/fxfa/parser/cxfa_bind.cpp
index 99a2a49..6315d88 100644
--- a/xfa/fxfa/parser/cxfa_bind.cpp
+++ b/xfa/fxfa/parser/cxfa_bind.cpp
@@ -16,6 +16,7 @@
 const CXFA_Node::PropertyData kBindPropertyData[] = {
     {XFA_Element::Picture, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kBindAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
@@ -29,8 +30,6 @@
      (void*)XFA_AttributeValue::Once},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kBindName[] = L"bind";
-
 }  // namespace
 
 CXFA_Bind::CXFA_Bind(CXFA_Document* doc, XFA_PacketType packet)
@@ -42,10 +41,9 @@
                 XFA_Element::Bind,
                 kBindPropertyData,
                 kBindAttributeData,
-                kBindName,
                 pdfium::MakeUnique<CJX_Bind>(this)) {}
 
-CXFA_Bind::~CXFA_Bind() {}
+CXFA_Bind::~CXFA_Bind() = default;
 
 WideString CXFA_Bind::GetPicture() {
   CXFA_Picture* pPicture =
diff --git a/xfa/fxfa/parser/cxfa_binditems.cpp b/xfa/fxfa/parser/cxfa_binditems.cpp
index 4116780..d29165b 100644
--- a/xfa/fxfa/parser/cxfa_binditems.cpp
+++ b/xfa/fxfa/parser/cxfa_binditems.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::ValueRef, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kBindItemsName[] = L"bindItems";
-
 }  // namespace
 
 CXFA_BindItems::CXFA_BindItems(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,10 +28,9 @@
                 XFA_Element::BindItems,
                 nullptr,
                 kBindItemsAttributeData,
-                kBindItemsName,
                 pdfium::MakeUnique<CJX_BindItems>(this)) {}
 
-CXFA_BindItems::~CXFA_BindItems() {}
+CXFA_BindItems::~CXFA_BindItems() = default;
 
 WideString CXFA_BindItems::GetLabelRef() {
   return JSObject()->GetCData(XFA_Attribute::LabelRef);
diff --git a/xfa/fxfa/parser/cxfa_bookend.cpp b/xfa/fxfa/parser/cxfa_bookend.cpp
index f6ea93b..6434478 100644
--- a/xfa/fxfa/parser/cxfa_bookend.cpp
+++ b/xfa/fxfa/parser/cxfa_bookend.cpp
@@ -19,7 +19,6 @@
     {XFA_Attribute::Leader, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kBookendName[] = L"bookend";
 
 }  // namespace
 
@@ -31,7 +30,6 @@
                 XFA_Element::Bookend,
                 nullptr,
                 kBookendAttributeData,
-                kBookendName,
                 pdfium::MakeUnique<CJX_Bookend>(this)) {}
 
-CXFA_Bookend::~CXFA_Bookend() {}
+CXFA_Bookend::~CXFA_Bookend() = default;
diff --git a/xfa/fxfa/parser/cxfa_boolean.cpp b/xfa/fxfa/parser/cxfa_boolean.cpp
index c3dbbaf..9012b02 100644
--- a/xfa/fxfa/parser/cxfa_boolean.cpp
+++ b/xfa/fxfa/parser/cxfa_boolean.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kBooleanName[] = L"boolean";
-
 }  // namespace
 
 CXFA_Boolean::CXFA_Boolean(CXFA_Document* doc, XFA_PacketType packet)
@@ -31,7 +29,6 @@
                 XFA_Element::Boolean,
                 nullptr,
                 kBooleanAttributeData,
-                kBooleanName,
                 pdfium::MakeUnique<CJX_Boolean>(this)) {}
 
 CXFA_Boolean::~CXFA_Boolean() {}
diff --git a/xfa/fxfa/parser/cxfa_border.cpp b/xfa/fxfa/parser/cxfa_border.cpp
index 0e99dfd..0e50a08 100644
--- a/xfa/fxfa/parser/cxfa_border.cpp
+++ b/xfa/fxfa/parser/cxfa_border.cpp
@@ -15,6 +15,7 @@
     {XFA_Element::Margin, 1, 0}, {XFA_Element::Edge, 4, 0},
     {XFA_Element::Corner, 4, 0}, {XFA_Element::Fill, 1, 0},
     {XFA_Element::Extras, 1, 0}, {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kBorderAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Break, XFA_AttributeType::Enum,
@@ -28,8 +29,6 @@
      (void*)XFA_AttributeValue::Even},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kBorderName[] = L"border";
-
 }  // namespace
 
 CXFA_Border::CXFA_Border(CXFA_Document* doc, XFA_PacketType packet)
@@ -40,7 +39,6 @@
                      XFA_Element::Border,
                      kBorderPropertyData,
                      kBorderAttributeData,
-                     kBorderName,
                      pdfium::MakeUnique<CJX_Border>(this)) {}
 
-CXFA_Border::~CXFA_Border() {}
+CXFA_Border::~CXFA_Border() = default;
diff --git a/xfa/fxfa/parser/cxfa_box.cpp b/xfa/fxfa/parser/cxfa_box.cpp
index b65e5b3..2ef2e82 100644
--- a/xfa/fxfa/parser/cxfa_box.cpp
+++ b/xfa/fxfa/parser/cxfa_box.cpp
@@ -64,7 +64,6 @@
                    XFA_Element eType,
                    const PropertyData* properties,
                    const AttributeData* attributes,
-                   const WideStringView& elementName,
                    std::unique_ptr<CJX_Object> js_node)
     : CXFA_Node(pDoc,
                 ePacket,
@@ -73,7 +72,6 @@
                 eType,
                 properties,
                 attributes,
-                elementName,
                 std::move(js_node)) {}
 
 CXFA_Box::~CXFA_Box() = default;
diff --git a/xfa/fxfa/parser/cxfa_box.h b/xfa/fxfa/parser/cxfa_box.h
index 12ac7a4..b882f66 100644
--- a/xfa/fxfa/parser/cxfa_box.h
+++ b/xfa/fxfa/parser/cxfa_box.h
@@ -47,7 +47,6 @@
            XFA_Element eType,
            const PropertyData* properties,
            const AttributeData* attributes,
-           const WideStringView& elementName,
            std::unique_ptr<CJX_Object> js_node);
 
   XFA_AttributeValue GetHand();
diff --git a/xfa/fxfa/parser/cxfa_break.cpp b/xfa/fxfa/parser/cxfa_break.cpp
index b7d030b..398d62b 100644
--- a/xfa/fxfa/parser/cxfa_break.cpp
+++ b/xfa/fxfa/parser/cxfa_break.cpp
@@ -14,6 +14,7 @@
 const CXFA_Node::PropertyData kBreakPropertyData[] = {
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kBreakAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::BeforeTarget, XFA_AttributeType::CData, nullptr},
@@ -32,8 +33,6 @@
      (void*)XFA_AttributeValue::Auto},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kBreakName[] = L"break";
-
 }  // namespace
 
 CXFA_Break::CXFA_Break(CXFA_Document* doc, XFA_PacketType packet)
@@ -44,7 +43,6 @@
                 XFA_Element::Break,
                 kBreakPropertyData,
                 kBreakAttributeData,
-                kBreakName,
                 pdfium::MakeUnique<CJX_Break>(this)) {}
 
-CXFA_Break::~CXFA_Break() {}
+CXFA_Break::~CXFA_Break() = default;
diff --git a/xfa/fxfa/parser/cxfa_breakafter.cpp b/xfa/fxfa/parser/cxfa_breakafter.cpp
index 927f559..c55e5c0 100644
--- a/xfa/fxfa/parser/cxfa_breakafter.cpp
+++ b/xfa/fxfa/parser/cxfa_breakafter.cpp
@@ -14,6 +14,7 @@
 const CXFA_Node::PropertyData kBreakAfterPropertyData[] = {
     {XFA_Element::Script, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kBreakAfterAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -26,8 +27,6 @@
     {XFA_Attribute::Leader, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kBreakAfterName[] = L"breakAfter";
-
 }  // namespace
 
 CXFA_BreakAfter::CXFA_BreakAfter(CXFA_Document* doc, XFA_PacketType packet)
@@ -38,7 +37,6 @@
                 XFA_Element::BreakAfter,
                 kBreakAfterPropertyData,
                 kBreakAfterAttributeData,
-                kBreakAfterName,
                 pdfium::MakeUnique<CJX_BreakAfter>(this)) {}
 
-CXFA_BreakAfter::~CXFA_BreakAfter() {}
+CXFA_BreakAfter::~CXFA_BreakAfter() = default;
diff --git a/xfa/fxfa/parser/cxfa_breakbefore.cpp b/xfa/fxfa/parser/cxfa_breakbefore.cpp
index 36784c1..ff3e59e 100644
--- a/xfa/fxfa/parser/cxfa_breakbefore.cpp
+++ b/xfa/fxfa/parser/cxfa_breakbefore.cpp
@@ -14,6 +14,7 @@
 const CXFA_Node::PropertyData kBreakBeforePropertyData[] = {
     {XFA_Element::Script, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kBreakBeforeAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -26,8 +27,6 @@
     {XFA_Attribute::Leader, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kBreakBeforeName[] = L"breakBefore";
-
 }  // namespace
 
 CXFA_BreakBefore::CXFA_BreakBefore(CXFA_Document* doc, XFA_PacketType packet)
@@ -38,7 +37,6 @@
                 XFA_Element::BreakBefore,
                 kBreakBeforePropertyData,
                 kBreakBeforeAttributeData,
-                kBreakBeforeName,
                 pdfium::MakeUnique<CJX_BreakBefore>(this)) {}
 
-CXFA_BreakBefore::~CXFA_BreakBefore() {}
+CXFA_BreakBefore::~CXFA_BreakBefore() = default;
diff --git a/xfa/fxfa/parser/cxfa_button.cpp b/xfa/fxfa/parser/cxfa_button.cpp
index 15c2791..38a61bd 100644
--- a/xfa/fxfa/parser/cxfa_button.cpp
+++ b/xfa/fxfa/parser/cxfa_button.cpp
@@ -14,6 +14,7 @@
 const CXFA_Node::PropertyData kButtonPropertyData[] = {
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kButtonAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -22,8 +23,6 @@
      (void*)XFA_AttributeValue::Inverted},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kButtonName[] = L"button";
-
 }  // namespace
 
 CXFA_Button::CXFA_Button(CXFA_Document* doc, XFA_PacketType packet)
@@ -34,10 +33,9 @@
                 XFA_Element::Button,
                 kButtonPropertyData,
                 kButtonAttributeData,
-                kButtonName,
                 pdfium::MakeUnique<CJX_Button>(this)) {}
 
-CXFA_Button::~CXFA_Button() {}
+CXFA_Button::~CXFA_Button() = default;
 
 XFA_FFWidgetType CXFA_Button::GetDefaultFFWidgetType() const {
   return XFA_FFWidgetType::kButton;
diff --git a/xfa/fxfa/parser/cxfa_cache.cpp b/xfa/fxfa/parser/cxfa_cache.cpp
index 1c6d0a2..8553efe 100644
--- a/xfa/fxfa/parser/cxfa_cache.cpp
+++ b/xfa/fxfa/parser/cxfa_cache.cpp
@@ -11,13 +11,12 @@
 const CXFA_Node::PropertyData kCachePropertyData[] = {
     {XFA_Element::TemplateCache, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kCacheAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kCacheName[] = L"cache";
-
 }  // namespace
 
 CXFA_Cache::CXFA_Cache(CXFA_Document* doc, XFA_PacketType packet)
@@ -27,7 +26,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Cache,
                 kCachePropertyData,
-                kCacheAttributeData,
-                kCacheName) {}
+                kCacheAttributeData) {}
 
 CXFA_Cache::~CXFA_Cache() {}
diff --git a/xfa/fxfa/parser/cxfa_calculate.cpp b/xfa/fxfa/parser/cxfa_calculate.cpp
index 5b15bcc..0a34760 100644
--- a/xfa/fxfa/parser/cxfa_calculate.cpp
+++ b/xfa/fxfa/parser/cxfa_calculate.cpp
@@ -19,6 +19,7 @@
     {XFA_Element::Script, 1, 0},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kCalculateAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -27,8 +28,6 @@
      (void*)XFA_AttributeValue::Error},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kCalculateName[] = L"calculate";
-
 }  // namespace
 
 CXFA_Calculate::CXFA_Calculate(CXFA_Document* doc, XFA_PacketType packet)
@@ -39,10 +38,9 @@
                 XFA_Element::Calculate,
                 kCalculatePropertyData,
                 kCalculateAttributeData,
-                kCalculateName,
                 pdfium::MakeUnique<CJX_Calculate>(this)) {}
 
-CXFA_Calculate::~CXFA_Calculate() {}
+CXFA_Calculate::~CXFA_Calculate() = default;
 
 XFA_AttributeValue CXFA_Calculate::GetOverride() {
   return JSObject()
diff --git a/xfa/fxfa/parser/cxfa_calendarsymbols.cpp b/xfa/fxfa/parser/cxfa_calendarsymbols.cpp
index 507f1f8..a4fe532 100644
--- a/xfa/fxfa/parser/cxfa_calendarsymbols.cpp
+++ b/xfa/fxfa/parser/cxfa_calendarsymbols.cpp
@@ -14,13 +14,12 @@
     {XFA_Element::MeridiemNames, 1, 0},
     {XFA_Element::MonthNames, 2, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kCalendarSymbolsAttributeData[] = {
     {XFA_Attribute::Name, XFA_AttributeType::Enum,
      (void*)XFA_AttributeValue::Gregorian},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kCalendarSymbolsName[] = L"calendarSymbols";
-
 }  // namespace
 
 CXFA_CalendarSymbols::CXFA_CalendarSymbols(CXFA_Document* doc,
@@ -31,7 +30,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::CalendarSymbols,
                 kCalendarSymbolsPropertyData,
-                kCalendarSymbolsAttributeData,
-                kCalendarSymbolsName) {}
+                kCalendarSymbolsAttributeData) {}
 
-CXFA_CalendarSymbols::~CXFA_CalendarSymbols() {}
+CXFA_CalendarSymbols::~CXFA_CalendarSymbols() = default;
diff --git a/xfa/fxfa/parser/cxfa_caption.cpp b/xfa/fxfa/parser/cxfa_caption.cpp
index 22f1851..5b27b58 100644
--- a/xfa/fxfa/parser/cxfa_caption.cpp
+++ b/xfa/fxfa/parser/cxfa_caption.cpp
@@ -19,6 +19,7 @@
     {XFA_Element::Margin, 1, 0}, {XFA_Element::Para, 1, 0},
     {XFA_Element::Font, 1, 0},   {XFA_Element::Value, 1, 0},
     {XFA_Element::Extras, 1, 0}, {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kCaptionAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -30,8 +31,6 @@
      (void*)XFA_AttributeValue::Left},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kCaptionName[] = L"caption";
-
 }  // namespace
 
 CXFA_Caption::CXFA_Caption(CXFA_Document* doc, XFA_PacketType packet)
@@ -42,10 +41,9 @@
                 XFA_Element::Caption,
                 kCaptionPropertyData,
                 kCaptionAttributeData,
-                kCaptionName,
                 pdfium::MakeUnique<CJX_Caption>(this)) {}
 
-CXFA_Caption::~CXFA_Caption() {}
+CXFA_Caption::~CXFA_Caption() = default;
 
 bool CXFA_Caption::IsVisible() {
   return JSObject()
diff --git a/xfa/fxfa/parser/cxfa_certificate.cpp b/xfa/fxfa/parser/cxfa_certificate.cpp
index e7e203d..cf1200c 100644
--- a/xfa/fxfa/parser/cxfa_certificate.cpp
+++ b/xfa/fxfa/parser/cxfa_certificate.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kCertificateName[] = L"certificate";
-
 }  // namespace
 
 CXFA_Certificate::CXFA_Certificate(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::Certificate,
                 nullptr,
                 kCertificateAttributeData,
-                kCertificateName,
                 pdfium::MakeUnique<CJX_Certificate>(this)) {}
 
-CXFA_Certificate::~CXFA_Certificate() {}
+CXFA_Certificate::~CXFA_Certificate() = default;
diff --git a/xfa/fxfa/parser/cxfa_certificates.cpp b/xfa/fxfa/parser/cxfa_certificates.cpp
index 62aa428..b0d8add 100644
--- a/xfa/fxfa/parser/cxfa_certificates.cpp
+++ b/xfa/fxfa/parser/cxfa_certificates.cpp
@@ -15,6 +15,7 @@
     {XFA_Element::KeyUsage, 1, 0}, {XFA_Element::SubjectDNs, 1, 0},
     {XFA_Element::Issuers, 1, 0},  {XFA_Element::Signing, 1, 0},
     {XFA_Element::Oids, 1, 0},     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kCertificatesAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Url, XFA_AttributeType::CData, nullptr},
@@ -25,8 +26,6 @@
     {XFA_Attribute::UrlPolicy, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kCertificatesName[] = L"certificates";
-
 }  // namespace
 
 CXFA_Certificates::CXFA_Certificates(CXFA_Document* doc, XFA_PacketType packet)
@@ -37,7 +36,6 @@
                 XFA_Element::Certificates,
                 kCertificatesPropertyData,
                 kCertificatesAttributeData,
-                kCertificatesName,
                 pdfium::MakeUnique<CJX_Certificates>(this)) {}
 
-CXFA_Certificates::~CXFA_Certificates() {}
+CXFA_Certificates::~CXFA_Certificates() = default;
diff --git a/xfa/fxfa/parser/cxfa_change.cpp b/xfa/fxfa/parser/cxfa_change.cpp
index 2b968d4..1a02bf2 100644
--- a/xfa/fxfa/parser/cxfa_change.cpp
+++ b/xfa/fxfa/parser/cxfa_change.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kChangeName[] = L"change";
-
 }  // namespace
 
 CXFA_Change::CXFA_Change(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Change,
                 nullptr,
-                kChangeAttributeData,
-                kChangeName) {}
+                kChangeAttributeData) {}
 
-CXFA_Change::~CXFA_Change() {}
+CXFA_Change::~CXFA_Change() = default;
diff --git a/xfa/fxfa/parser/cxfa_checkbutton.cpp b/xfa/fxfa/parser/cxfa_checkbutton.cpp
index 1ef8c14..301a23c 100644
--- a/xfa/fxfa/parser/cxfa_checkbutton.cpp
+++ b/xfa/fxfa/parser/cxfa_checkbutton.cpp
@@ -16,6 +16,7 @@
     {XFA_Element::Border, 1, 0},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kCheckButtonAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -28,8 +29,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kCheckButtonName[] = L"checkButton";
-
 }  // namespace
 
 CXFA_CheckButton::CXFA_CheckButton(CXFA_Document* doc, XFA_PacketType packet)
@@ -40,10 +39,9 @@
                 XFA_Element::CheckButton,
                 kCheckButtonPropertyData,
                 kCheckButtonAttributeData,
-                kCheckButtonName,
                 pdfium::MakeUnique<CJX_CheckButton>(this)) {}
 
-CXFA_CheckButton::~CXFA_CheckButton() {}
+CXFA_CheckButton::~CXFA_CheckButton() = default;
 
 XFA_FFWidgetType CXFA_CheckButton::GetDefaultFFWidgetType() const {
   return XFA_FFWidgetType::kCheckButton;
diff --git a/xfa/fxfa/parser/cxfa_choicelist.cpp b/xfa/fxfa/parser/cxfa_choicelist.cpp
index 7815686..3d7b98c 100644
--- a/xfa/fxfa/parser/cxfa_choicelist.cpp
+++ b/xfa/fxfa/parser/cxfa_choicelist.cpp
@@ -16,6 +16,7 @@
     {XFA_Element::Border, 1, 0},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kChoiceListAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -27,8 +28,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kChoiceListName[] = L"choiceList";
-
 }  // namespace
 
 CXFA_ChoiceList::CXFA_ChoiceList(CXFA_Document* doc, XFA_PacketType packet)
@@ -39,10 +38,9 @@
                 XFA_Element::ChoiceList,
                 kChoiceListPropertyData,
                 kChoiceListAttributeData,
-                kChoiceListName,
                 pdfium::MakeUnique<CJX_ChoiceList>(this)) {}
 
-CXFA_ChoiceList::~CXFA_ChoiceList() {}
+CXFA_ChoiceList::~CXFA_ChoiceList() = default;
 
 XFA_Element CXFA_ChoiceList::GetValueNodeType() const {
   return JSObject()->GetEnum(XFA_Attribute::Open) ==
diff --git a/xfa/fxfa/parser/cxfa_color.cpp b/xfa/fxfa/parser/cxfa_color.cpp
index 6fc6397..3e52419 100644
--- a/xfa/fxfa/parser/cxfa_color.cpp
+++ b/xfa/fxfa/parser/cxfa_color.cpp
@@ -14,6 +14,7 @@
 const CXFA_Node::PropertyData kColorPropertyData[] = {
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kColorAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -22,8 +23,6 @@
     {XFA_Attribute::Value, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kColorName[] = L"color";
-
 }  // namespace
 
 CXFA_Color::CXFA_Color(CXFA_Document* doc, XFA_PacketType packet)
@@ -34,10 +33,9 @@
                 XFA_Element::Color,
                 kColorPropertyData,
                 kColorAttributeData,
-                kColorName,
                 pdfium::MakeUnique<CJX_Color>(this)) {}
 
-CXFA_Color::~CXFA_Color() {}
+CXFA_Color::~CXFA_Color() = default;
 
 FX_ARGB CXFA_Color::GetValue() {
   Optional<WideString> val = JSObject()->TryCData(XFA_Attribute::Value, false);
diff --git a/xfa/fxfa/parser/cxfa_comb.cpp b/xfa/fxfa/parser/cxfa_comb.cpp
index 1be4f56..5c85832 100644
--- a/xfa/fxfa/parser/cxfa_comb.cpp
+++ b/xfa/fxfa/parser/cxfa_comb.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kCombName[] = L"comb";
-
 }  // namespace
 
 CXFA_Comb::CXFA_Comb(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::Comb,
                 nullptr,
                 kCombAttributeData,
-                kCombName,
                 pdfium::MakeUnique<CJX_Comb>(this)) {}
 
 CXFA_Comb::~CXFA_Comb() {}
diff --git a/xfa/fxfa/parser/cxfa_command.cpp b/xfa/fxfa/parser/cxfa_command.cpp
index bf786e1..08929a7 100644
--- a/xfa/fxfa/parser/cxfa_command.cpp
+++ b/xfa/fxfa/parser/cxfa_command.cpp
@@ -17,6 +17,7 @@
     {XFA_Element::Update, 1, 0},
     {XFA_Element::Delete, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kCommandAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
@@ -25,8 +26,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kCommandName[] = L"command";
-
 }  // namespace
 
 CXFA_Command::CXFA_Command(CXFA_Document* doc, XFA_PacketType packet)
@@ -37,7 +36,6 @@
                 XFA_Element::Command,
                 kCommandPropertyData,
                 kCommandAttributeData,
-                kCommandName,
                 pdfium::MakeUnique<CJX_Command>(this)) {}
 
-CXFA_Command::~CXFA_Command() {}
+CXFA_Command::~CXFA_Command() = default;
diff --git a/xfa/fxfa/parser/cxfa_common.cpp b/xfa/fxfa/parser/cxfa_common.cpp
index 76c8f50..aea95cc 100644
--- a/xfa/fxfa/parser/cxfa_common.cpp
+++ b/xfa/fxfa/parser/cxfa_common.cpp
@@ -18,13 +18,12 @@
     {XFA_Element::Data, 1, 0},
     {XFA_Element::Messaging, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kCommonAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kCommonName[] = L"common";
-
 }  // namespace
 
 CXFA_Common::CXFA_Common(CXFA_Document* doc, XFA_PacketType packet)
@@ -34,7 +33,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Common,
                 kCommonPropertyData,
-                kCommonAttributeData,
-                kCommonName) {}
+                kCommonAttributeData) {}
 
-CXFA_Common::~CXFA_Common() {}
+CXFA_Common::~CXFA_Common() = default;
diff --git a/xfa/fxfa/parser/cxfa_compress.cpp b/xfa/fxfa/parser/cxfa_compress.cpp
index 672bced..991a40a 100644
--- a/xfa/fxfa/parser/cxfa_compress.cpp
+++ b/xfa/fxfa/parser/cxfa_compress.cpp
@@ -15,8 +15,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kCompressName[] = L"compress";
-
 }  // namespace
 
 CXFA_Compress::CXFA_Compress(CXFA_Document* doc, XFA_PacketType packet)
@@ -26,7 +24,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Compress,
                 nullptr,
-                kCompressAttributeData,
-                kCompressName) {}
+                kCompressAttributeData) {}
 
-CXFA_Compress::~CXFA_Compress() {}
+CXFA_Compress::~CXFA_Compress() = default;
diff --git a/xfa/fxfa/parser/cxfa_compression.cpp b/xfa/fxfa/parser/cxfa_compression.cpp
index 615b5e6..54caf77 100644
--- a/xfa/fxfa/parser/cxfa_compression.cpp
+++ b/xfa/fxfa/parser/cxfa_compression.cpp
@@ -14,13 +14,12 @@
     {XFA_Element::CompressObjectStream, 1, 0},
     {XFA_Element::CompressLogicalStructure, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kCompressionAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kCompressionName[] = L"compression";
-
 }  // namespace
 
 CXFA_Compression::CXFA_Compression(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +29,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Compression,
                 kCompressionPropertyData,
-                kCompressionAttributeData,
-                kCompressionName) {}
+                kCompressionAttributeData) {}
 
-CXFA_Compression::~CXFA_Compression() {}
+CXFA_Compression::~CXFA_Compression() = default;
diff --git a/xfa/fxfa/parser/cxfa_compresslogicalstructure.cpp b/xfa/fxfa/parser/cxfa_compresslogicalstructure.cpp
index 77ac93e..0cba778 100644
--- a/xfa/fxfa/parser/cxfa_compresslogicalstructure.cpp
+++ b/xfa/fxfa/parser/cxfa_compresslogicalstructure.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kCompressLogicalStructureName[] = L"compressLogicalStructure";
-
 }  // namespace
 
 CXFA_CompressLogicalStructure::CXFA_CompressLogicalStructure(
@@ -26,7 +24,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::CompressLogicalStructure,
                 nullptr,
-                kCompressLogicalStructureAttributeData,
-                kCompressLogicalStructureName) {}
+                kCompressLogicalStructureAttributeData) {}
 
-CXFA_CompressLogicalStructure::~CXFA_CompressLogicalStructure() {}
+CXFA_CompressLogicalStructure::~CXFA_CompressLogicalStructure() = default;
diff --git a/xfa/fxfa/parser/cxfa_compressobjectstream.cpp b/xfa/fxfa/parser/cxfa_compressobjectstream.cpp
index 9d3a0cf..1c9650d 100644
--- a/xfa/fxfa/parser/cxfa_compressobjectstream.cpp
+++ b/xfa/fxfa/parser/cxfa_compressobjectstream.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kCompressObjectStreamName[] = L"compressObjectStream";
-
 }  // namespace
 
 CXFA_CompressObjectStream::CXFA_CompressObjectStream(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::CompressObjectStream,
                 nullptr,
-                kCompressObjectStreamAttributeData,
-                kCompressObjectStreamName) {}
+                kCompressObjectStreamAttributeData) {}
 
-CXFA_CompressObjectStream::~CXFA_CompressObjectStream() {}
+CXFA_CompressObjectStream::~CXFA_CompressObjectStream() = default;
diff --git a/xfa/fxfa/parser/cxfa_config.cpp b/xfa/fxfa/parser/cxfa_config.cpp
index 8d23bc0..c864d71 100644
--- a/xfa/fxfa/parser/cxfa_config.cpp
+++ b/xfa/fxfa/parser/cxfa_config.cpp
@@ -13,13 +13,12 @@
     {XFA_Element::Acrobat, 1, 0},
     {XFA_Element::Trace, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kConfigAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kConfigName[] = L"config";
-
 }  // namespace
 
 CXFA_Config::CXFA_Config(CXFA_Document* doc, XFA_PacketType packet)
@@ -29,7 +28,6 @@
                 XFA_ObjectType::ModelNode,
                 XFA_Element::Config,
                 kConfigPropertyData,
-                kConfigAttributeData,
-                kConfigName) {}
+                kConfigAttributeData) {}
 
-CXFA_Config::~CXFA_Config() {}
+CXFA_Config::~CXFA_Config() = default;
diff --git a/xfa/fxfa/parser/cxfa_conformance.cpp b/xfa/fxfa/parser/cxfa_conformance.cpp
index 9b15fd9..a2343ac 100644
--- a/xfa/fxfa/parser/cxfa_conformance.cpp
+++ b/xfa/fxfa/parser/cxfa_conformance.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kConformanceName[] = L"conformance";
-
 }  // namespace
 
 CXFA_Conformance::CXFA_Conformance(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Conformance,
                 nullptr,
-                kConformanceAttributeData,
-                kConformanceName) {}
+                kConformanceAttributeData) {}
 
-CXFA_Conformance::~CXFA_Conformance() {}
+CXFA_Conformance::~CXFA_Conformance() = default;
diff --git a/xfa/fxfa/parser/cxfa_connect.cpp b/xfa/fxfa/parser/cxfa_connect.cpp
index 61971ed..088659e 100644
--- a/xfa/fxfa/parser/cxfa_connect.cpp
+++ b/xfa/fxfa/parser/cxfa_connect.cpp
@@ -17,6 +17,7 @@
     {XFA_Element::User, 1, 0},
     {XFA_Element::Password, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kConnectAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
@@ -30,8 +31,6 @@
     {XFA_Attribute::DelayedOpen, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kConnectName[] = L"connect";
-
 }  // namespace
 
 CXFA_Connect::CXFA_Connect(CXFA_Document* doc, XFA_PacketType packet)
@@ -43,7 +42,6 @@
                 XFA_Element::Connect,
                 kConnectPropertyData,
                 kConnectAttributeData,
-                kConnectName,
                 pdfium::MakeUnique<CJX_Connect>(this)) {}
 
-CXFA_Connect::~CXFA_Connect() {}
+CXFA_Connect::~CXFA_Connect() = default;
diff --git a/xfa/fxfa/parser/cxfa_connectionset.cpp b/xfa/fxfa/parser/cxfa_connectionset.cpp
index 65ca758..e46e91e 100644
--- a/xfa/fxfa/parser/cxfa_connectionset.cpp
+++ b/xfa/fxfa/parser/cxfa_connectionset.cpp
@@ -9,12 +9,6 @@
 #include "fxjs/xfa/cjx_model.h"
 #include "third_party/base/ptr_util.h"
 
-namespace {
-
-constexpr wchar_t kConnectionSetName[] = L"connectionSet";
-
-}  // namespace
-
 CXFA_ConnectionSet::CXFA_ConnectionSet(CXFA_Document* doc,
                                        XFA_PacketType packet)
     : CXFA_Node(doc,
@@ -24,7 +18,6 @@
                 XFA_Element::ConnectionSet,
                 nullptr,
                 nullptr,
-                kConnectionSetName,
                 pdfium::MakeUnique<CJX_Model>(this)) {}
 
-CXFA_ConnectionSet::~CXFA_ConnectionSet() {}
+CXFA_ConnectionSet::~CXFA_ConnectionSet() = default;
diff --git a/xfa/fxfa/parser/cxfa_connectstring.cpp b/xfa/fxfa/parser/cxfa_connectstring.cpp
index bf0c9e2..8658f0b 100644
--- a/xfa/fxfa/parser/cxfa_connectstring.cpp
+++ b/xfa/fxfa/parser/cxfa_connectstring.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kConnectStringName[] = L"connectString";
-
 }  // namespace
 
 CXFA_ConnectString::CXFA_ConnectString(CXFA_Document* doc,
@@ -31,7 +29,6 @@
                 XFA_Element::ConnectString,
                 nullptr,
                 kConnectStringAttributeData,
-                kConnectStringName,
                 pdfium::MakeUnique<CJX_ConnectString>(this)) {}
 
-CXFA_ConnectString::~CXFA_ConnectString() {}
+CXFA_ConnectString::~CXFA_ConnectString() = default;
diff --git a/xfa/fxfa/parser/cxfa_contentarea.cpp b/xfa/fxfa/parser/cxfa_contentarea.cpp
index 0883f46..4c002a4 100644
--- a/xfa/fxfa/parser/cxfa_contentarea.cpp
+++ b/xfa/fxfa/parser/cxfa_contentarea.cpp
@@ -15,6 +15,7 @@
     {XFA_Element::Desc, 1, 0},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kContentAreaAttributeData[] = {
     {XFA_Attribute::H, XFA_AttributeType::Measure, (void*)L"0in"},
     {XFA_Attribute::W, XFA_AttributeType::Measure, (void*)L"0in"},
@@ -27,8 +28,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kContentAreaName[] = L"contentArea";
-
 }  // namespace
 
 CXFA_ContentArea::CXFA_ContentArea(CXFA_Document* doc, XFA_PacketType packet)
@@ -39,7 +38,6 @@
                 XFA_Element::ContentArea,
                 kContentAreaPropertyData,
                 kContentAreaAttributeData,
-                kContentAreaName,
                 pdfium::MakeUnique<CJX_ContentArea>(this)) {}
 
-CXFA_ContentArea::~CXFA_ContentArea() {}
+CXFA_ContentArea::~CXFA_ContentArea() = default;
diff --git a/xfa/fxfa/parser/cxfa_contentcopy.cpp b/xfa/fxfa/parser/cxfa_contentcopy.cpp
index 5ae862a..a095350 100644
--- a/xfa/fxfa/parser/cxfa_contentcopy.cpp
+++ b/xfa/fxfa/parser/cxfa_contentcopy.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kContentCopyName[] = L"contentCopy";
-
 }  // namespace
 
 CXFA_ContentCopy::CXFA_ContentCopy(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::ContentCopy,
                 nullptr,
-                kContentCopyAttributeData,
-                kContentCopyName) {}
+                kContentCopyAttributeData) {}
 
-CXFA_ContentCopy::~CXFA_ContentCopy() {}
+CXFA_ContentCopy::~CXFA_ContentCopy() = default;
diff --git a/xfa/fxfa/parser/cxfa_copies.cpp b/xfa/fxfa/parser/cxfa_copies.cpp
index 5c0ddc9..dd96388 100644
--- a/xfa/fxfa/parser/cxfa_copies.cpp
+++ b/xfa/fxfa/parser/cxfa_copies.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kCopiesName[] = L"copies";
-
 }  // namespace
 
 CXFA_Copies::CXFA_Copies(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Copies,
                 nullptr,
-                kCopiesAttributeData,
-                kCopiesName) {}
+                kCopiesAttributeData) {}
 
-CXFA_Copies::~CXFA_Copies() {}
+CXFA_Copies::~CXFA_Copies() = default;
diff --git a/xfa/fxfa/parser/cxfa_corner.cpp b/xfa/fxfa/parser/cxfa_corner.cpp
index 16d4bff..1c29a10 100644
--- a/xfa/fxfa/parser/cxfa_corner.cpp
+++ b/xfa/fxfa/parser/cxfa_corner.cpp
@@ -15,6 +15,7 @@
     {XFA_Element::Color, 1, 0},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kCornerAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -30,8 +31,6 @@
     {XFA_Attribute::Radius, XFA_AttributeType::Measure, (void*)L"0in"},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kCornerName[] = L"corner";
-
 }  // namespace
 
 CXFA_Corner::CXFA_Corner(CXFA_Document* doc, XFA_PacketType packet)
@@ -42,7 +41,6 @@
                   XFA_Element::Corner,
                   kCornerPropertyData,
                   kCornerAttributeData,
-                  kCornerName,
                   pdfium::MakeUnique<CJX_Corner>(this)) {}
 
-CXFA_Corner::~CXFA_Corner() {}
+CXFA_Corner::~CXFA_Corner() = default;
diff --git a/xfa/fxfa/parser/cxfa_creator.cpp b/xfa/fxfa/parser/cxfa_creator.cpp
index bd09fd1..f30269b 100644
--- a/xfa/fxfa/parser/cxfa_creator.cpp
+++ b/xfa/fxfa/parser/cxfa_creator.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kCreatorName[] = L"creator";
-
 }  // namespace
 
 CXFA_Creator::CXFA_Creator(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Creator,
                 nullptr,
-                kCreatorAttributeData,
-                kCreatorName) {}
+                kCreatorAttributeData) {}
 
-CXFA_Creator::~CXFA_Creator() {}
+CXFA_Creator::~CXFA_Creator() = default;
diff --git a/xfa/fxfa/parser/cxfa_currencysymbol.cpp b/xfa/fxfa/parser/cxfa_currencysymbol.cpp
index d95df3f..e0bc064 100644
--- a/xfa/fxfa/parser/cxfa_currencysymbol.cpp
+++ b/xfa/fxfa/parser/cxfa_currencysymbol.cpp
@@ -13,8 +13,6 @@
      (void*)XFA_AttributeValue::Symbol},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kCurrencySymbolName[] = L"currencySymbol";
-
 }  // namespace
 
 CXFA_CurrencySymbol::CXFA_CurrencySymbol(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::CurrencySymbol,
                 nullptr,
-                kCurrencySymbolAttributeData,
-                kCurrencySymbolName) {}
+                kCurrencySymbolAttributeData) {}
 
-CXFA_CurrencySymbol::~CXFA_CurrencySymbol() {}
+CXFA_CurrencySymbol::~CXFA_CurrencySymbol() = default;
diff --git a/xfa/fxfa/parser/cxfa_currencysymbols.cpp b/xfa/fxfa/parser/cxfa_currencysymbols.cpp
index e82da2f..2198405 100644
--- a/xfa/fxfa/parser/cxfa_currencysymbols.cpp
+++ b/xfa/fxfa/parser/cxfa_currencysymbols.cpp
@@ -12,8 +12,6 @@
     {XFA_Element::CurrencySymbol, 3, 0},
     {XFA_Element::Unknown, 0, 0}};
 
-constexpr wchar_t kCurrencySymbolsName[] = L"currencySymbols";
-
 }  // namespace
 
 CXFA_CurrencySymbols::CXFA_CurrencySymbols(CXFA_Document* doc,
@@ -24,7 +22,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::CurrencySymbols,
                 kCurrencySymbolsPropertyData,
-                nullptr,
-                kCurrencySymbolsName) {}
+                nullptr) {}
 
-CXFA_CurrencySymbols::~CXFA_CurrencySymbols() {}
+CXFA_CurrencySymbols::~CXFA_CurrencySymbols() = default;
diff --git a/xfa/fxfa/parser/cxfa_currentpage.cpp b/xfa/fxfa/parser/cxfa_currentpage.cpp
index cab81de..131d2e5 100644
--- a/xfa/fxfa/parser/cxfa_currentpage.cpp
+++ b/xfa/fxfa/parser/cxfa_currentpage.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kCurrentPageName[] = L"currentPage";
-
 }  // namespace
 
 CXFA_CurrentPage::CXFA_CurrentPage(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::CurrentPage,
                 nullptr,
-                kCurrentPageAttributeData,
-                kCurrentPageName) {}
+                kCurrentPageAttributeData) {}
 
-CXFA_CurrentPage::~CXFA_CurrentPage() {}
+CXFA_CurrentPage::~CXFA_CurrentPage() = default;
diff --git a/xfa/fxfa/parser/cxfa_data.cpp b/xfa/fxfa/parser/cxfa_data.cpp
index 39df531..02843ad 100644
--- a/xfa/fxfa/parser/cxfa_data.cpp
+++ b/xfa/fxfa/parser/cxfa_data.cpp
@@ -15,13 +15,12 @@
     {XFA_Element::Window, 1, 0},     {XFA_Element::Record, 1, 0},
     {XFA_Element::Range, 1, 0},      {XFA_Element::IncrementalLoad, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kDataAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDataName[] = L"data";
-
 }  // namespace
 
 CXFA_Data::CXFA_Data(CXFA_Document* doc, XFA_PacketType packet)
@@ -31,7 +30,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Data,
                 kDataPropertyData,
-                kDataAttributeData,
-                kDataName) {}
+                kDataAttributeData) {}
 
-CXFA_Data::~CXFA_Data() {}
+CXFA_Data::~CXFA_Data() = default;
diff --git a/xfa/fxfa/parser/cxfa_datagroup.cpp b/xfa/fxfa/parser/cxfa_datagroup.cpp
index 6b59e55..baae42b 100644
--- a/xfa/fxfa/parser/cxfa_datagroup.cpp
+++ b/xfa/fxfa/parser/cxfa_datagroup.cpp
@@ -12,8 +12,6 @@
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDataGroupName[] = L"dataGroup";
-
 }  // namespace
 
 CXFA_DataGroup::CXFA_DataGroup(CXFA_Document* doc, XFA_PacketType packet)
@@ -23,7 +21,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::DataGroup,
                 nullptr,
-                kDataGroupAttributeData,
-                kDataGroupName) {}
+                kDataGroupAttributeData) {}
 
-CXFA_DataGroup::~CXFA_DataGroup() {}
+CXFA_DataGroup::~CXFA_DataGroup() = default;
diff --git a/xfa/fxfa/parser/cxfa_datamodel.cpp b/xfa/fxfa/parser/cxfa_datamodel.cpp
index dc040c7..d334903 100644
--- a/xfa/fxfa/parser/cxfa_datamodel.cpp
+++ b/xfa/fxfa/parser/cxfa_datamodel.cpp
@@ -9,12 +9,6 @@
 #include "fxjs/xfa/cjx_model.h"
 #include "third_party/base/ptr_util.h"
 
-namespace {
-
-constexpr wchar_t kDataModelName[] = L"dataModel";
-
-}  // namespace
-
 CXFA_DataModel::CXFA_DataModel(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
                 packet,
@@ -23,7 +17,6 @@
                 XFA_Element::DataModel,
                 nullptr,
                 nullptr,
-                kDataModelName,
                 pdfium::MakeUnique<CJX_Model>(this)) {}
 
-CXFA_DataModel::~CXFA_DataModel() {}
+CXFA_DataModel::~CXFA_DataModel() = default;
diff --git a/xfa/fxfa/parser/cxfa_datavalue.cpp b/xfa/fxfa/parser/cxfa_datavalue.cpp
index 5e18b44..53cb5db 100644
--- a/xfa/fxfa/parser/cxfa_datavalue.cpp
+++ b/xfa/fxfa/parser/cxfa_datavalue.cpp
@@ -20,8 +20,6 @@
     {XFA_Attribute::IsNull, XFA_AttributeType::Boolean, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDataValueName[] = L"dataValue";
-
 }  // namespace
 
 CXFA_DataValue::CXFA_DataValue(CXFA_Document* doc, XFA_PacketType packet)
@@ -32,7 +30,6 @@
                 XFA_Element::DataValue,
                 nullptr,
                 kDataValueAttributeData,
-                kDataValueName,
                 pdfium::MakeUnique<CJX_DataValue>(this)) {}
 
-CXFA_DataValue::~CXFA_DataValue() {}
+CXFA_DataValue::~CXFA_DataValue() = default;
diff --git a/xfa/fxfa/parser/cxfa_date.cpp b/xfa/fxfa/parser/cxfa_date.cpp
index 90f20b5..6abff28 100644
--- a/xfa/fxfa/parser/cxfa_date.cpp
+++ b/xfa/fxfa/parser/cxfa_date.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDateName[] = L"date";
-
 }  // namespace
 
 CXFA_Date::CXFA_Date(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::Date,
                 nullptr,
                 kDateAttributeData,
-                kDateName,
                 pdfium::MakeUnique<CJX_Date>(this)) {}
 
-CXFA_Date::~CXFA_Date() {}
+CXFA_Date::~CXFA_Date() = default;
diff --git a/xfa/fxfa/parser/cxfa_datepattern.cpp b/xfa/fxfa/parser/cxfa_datepattern.cpp
index 1fcfaf5..b4b8888 100644
--- a/xfa/fxfa/parser/cxfa_datepattern.cpp
+++ b/xfa/fxfa/parser/cxfa_datepattern.cpp
@@ -13,8 +13,6 @@
      (void*)XFA_AttributeValue::Med},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDatePatternName[] = L"datePattern";
-
 }  // namespace
 
 CXFA_DatePattern::CXFA_DatePattern(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::DatePattern,
                 nullptr,
-                kDatePatternAttributeData,
-                kDatePatternName) {}
+                kDatePatternAttributeData) {}
 
-CXFA_DatePattern::~CXFA_DatePattern() {}
+CXFA_DatePattern::~CXFA_DatePattern() = default;
diff --git a/xfa/fxfa/parser/cxfa_datepatterns.cpp b/xfa/fxfa/parser/cxfa_datepatterns.cpp
index 9678d1f..59c6b30 100644
--- a/xfa/fxfa/parser/cxfa_datepatterns.cpp
+++ b/xfa/fxfa/parser/cxfa_datepatterns.cpp
@@ -12,8 +12,6 @@
     {XFA_Element::DatePattern, 4, 0},
     {XFA_Element::Unknown, 0, 0}};
 
-constexpr wchar_t kDatePatternsName[] = L"datePatterns";
-
 }  // namespace
 
 CXFA_DatePatterns::CXFA_DatePatterns(CXFA_Document* doc, XFA_PacketType packet)
@@ -23,7 +21,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::DatePatterns,
                 kDatePatternsPropertyData,
-                nullptr,
-                kDatePatternsName) {}
+                nullptr) {}
 
-CXFA_DatePatterns::~CXFA_DatePatterns() {}
+CXFA_DatePatterns::~CXFA_DatePatterns() = default;
diff --git a/xfa/fxfa/parser/cxfa_datetime.cpp b/xfa/fxfa/parser/cxfa_datetime.cpp
index 564a57a..aa7dbf8 100644
--- a/xfa/fxfa/parser/cxfa_datetime.cpp
+++ b/xfa/fxfa/parser/cxfa_datetime.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDateTimeName[] = L"dateTime";
-
 }  // namespace
 
 CXFA_DateTime::CXFA_DateTime(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::DateTime,
                 nullptr,
                 kDateTimeAttributeData,
-                kDateTimeName,
                 pdfium::MakeUnique<CJX_DateTime>(this)) {}
 
-CXFA_DateTime::~CXFA_DateTime() {}
+CXFA_DateTime::~CXFA_DateTime() = default;
diff --git a/xfa/fxfa/parser/cxfa_datetimeedit.cpp b/xfa/fxfa/parser/cxfa_datetimeedit.cpp
index 56aedc5..e257b9d 100644
--- a/xfa/fxfa/parser/cxfa_datetimeedit.cpp
+++ b/xfa/fxfa/parser/cxfa_datetimeedit.cpp
@@ -17,6 +17,7 @@
     {XFA_Element::Comb, 1, 0},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kDateTimeEditAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -27,8 +28,6 @@
      (void*)XFA_AttributeValue::Auto},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDateTimeEditName[] = L"dateTimeEdit";
-
 }  // namespace
 
 CXFA_DateTimeEdit::CXFA_DateTimeEdit(CXFA_Document* doc, XFA_PacketType packet)
@@ -39,10 +38,9 @@
                 XFA_Element::DateTimeEdit,
                 kDateTimeEditPropertyData,
                 kDateTimeEditAttributeData,
-                kDateTimeEditName,
                 pdfium::MakeUnique<CJX_DateTimeEdit>(this)) {}
 
-CXFA_DateTimeEdit::~CXFA_DateTimeEdit() {}
+CXFA_DateTimeEdit::~CXFA_DateTimeEdit() = default;
 
 XFA_Element CXFA_DateTimeEdit::GetValueNodeType() const {
   return XFA_Element::DateTime;
diff --git a/xfa/fxfa/parser/cxfa_datetimesymbols.cpp b/xfa/fxfa/parser/cxfa_datetimesymbols.cpp
index 85d3f91..5946bbe 100644
--- a/xfa/fxfa/parser/cxfa_datetimesymbols.cpp
+++ b/xfa/fxfa/parser/cxfa_datetimesymbols.cpp
@@ -6,12 +6,6 @@
 
 #include "xfa/fxfa/parser/cxfa_datetimesymbols.h"
 
-namespace {
-
-constexpr wchar_t kDateTimeSymbolsName[] = L"dateTimeSymbols";
-
-}  // namespace
-
 CXFA_DateTimeSymbols::CXFA_DateTimeSymbols(CXFA_Document* doc,
                                            XFA_PacketType packet)
     : CXFA_Node(doc,
@@ -20,7 +14,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::DateTimeSymbols,
                 nullptr,
-                nullptr,
-                kDateTimeSymbolsName) {}
+                nullptr) {}
 
-CXFA_DateTimeSymbols::~CXFA_DateTimeSymbols() {}
+CXFA_DateTimeSymbols::~CXFA_DateTimeSymbols() = default;
diff --git a/xfa/fxfa/parser/cxfa_day.cpp b/xfa/fxfa/parser/cxfa_day.cpp
index 0b5b3a1..e3cd3a1 100644
--- a/xfa/fxfa/parser/cxfa_day.cpp
+++ b/xfa/fxfa/parser/cxfa_day.cpp
@@ -6,12 +6,6 @@
 
 #include "xfa/fxfa/parser/cxfa_day.h"
 
-namespace {
-
-constexpr wchar_t kDayName[] = L"day";
-
-}  // namespace
-
 CXFA_Day::CXFA_Day(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
                 packet,
@@ -19,7 +13,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Day,
                 nullptr,
-                nullptr,
-                kDayName) {}
+                nullptr) {}
 
-CXFA_Day::~CXFA_Day() {}
+CXFA_Day::~CXFA_Day() = default;
diff --git a/xfa/fxfa/parser/cxfa_daynames.cpp b/xfa/fxfa/parser/cxfa_daynames.cpp
index 0947fce..50daba9 100644
--- a/xfa/fxfa/parser/cxfa_daynames.cpp
+++ b/xfa/fxfa/parser/cxfa_daynames.cpp
@@ -11,12 +11,11 @@
 const CXFA_Node::PropertyData kDayNamesPropertyData[] = {
     {XFA_Element::Day, 7, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kDayNamesAttributeData[] = {
     {XFA_Attribute::Abbr, XFA_AttributeType::Boolean, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDayNamesName[] = L"dayNames";
-
 }  // namespace
 
 CXFA_DayNames::CXFA_DayNames(CXFA_Document* doc, XFA_PacketType packet)
@@ -26,7 +25,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::DayNames,
                 kDayNamesPropertyData,
-                kDayNamesAttributeData,
-                kDayNamesName) {}
+                kDayNamesAttributeData) {}
 
-CXFA_DayNames::~CXFA_DayNames() {}
+CXFA_DayNames::~CXFA_DayNames() = default;
diff --git a/xfa/fxfa/parser/cxfa_debug.cpp b/xfa/fxfa/parser/cxfa_debug.cpp
index 346cd11..1b2fe14 100644
--- a/xfa/fxfa/parser/cxfa_debug.cpp
+++ b/xfa/fxfa/parser/cxfa_debug.cpp
@@ -11,13 +11,12 @@
 const CXFA_Node::PropertyData kDebugPropertyData[] = {
     {XFA_Element::Uri, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kDebugAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDebugName[] = L"debug";
-
 }  // namespace
 
 CXFA_Debug::CXFA_Debug(CXFA_Document* doc, XFA_PacketType packet)
@@ -27,7 +26,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Debug,
                 kDebugPropertyData,
-                kDebugAttributeData,
-                kDebugName) {}
+                kDebugAttributeData) {}
 
-CXFA_Debug::~CXFA_Debug() {}
+CXFA_Debug::~CXFA_Debug() = default;
diff --git a/xfa/fxfa/parser/cxfa_decimal.cpp b/xfa/fxfa/parser/cxfa_decimal.cpp
index 6941d1c..6f96bad 100644
--- a/xfa/fxfa/parser/cxfa_decimal.cpp
+++ b/xfa/fxfa/parser/cxfa_decimal.cpp
@@ -20,8 +20,6 @@
     {XFA_Attribute::LeadDigits, XFA_AttributeType::Integer, (void*)-1},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDecimalName[] = L"decimal";
-
 }  // namespace
 
 CXFA_Decimal::CXFA_Decimal(CXFA_Document* doc, XFA_PacketType packet)
@@ -32,7 +30,6 @@
                 XFA_Element::Decimal,
                 nullptr,
                 kDecimalAttributeData,
-                kDecimalName,
                 pdfium::MakeUnique<CJX_Decimal>(this)) {}
 
-CXFA_Decimal::~CXFA_Decimal() {}
+CXFA_Decimal::~CXFA_Decimal() = default;
diff --git a/xfa/fxfa/parser/cxfa_defaulttypeface.cpp b/xfa/fxfa/parser/cxfa_defaulttypeface.cpp
index c0a8358..64e3651 100644
--- a/xfa/fxfa/parser/cxfa_defaulttypeface.cpp
+++ b/xfa/fxfa/parser/cxfa_defaulttypeface.cpp
@@ -15,8 +15,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDefaultTypefaceName[] = L"defaultTypeface";
-
 }  // namespace
 
 CXFA_DefaultTypeface::CXFA_DefaultTypeface(CXFA_Document* doc,
@@ -27,7 +25,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::DefaultTypeface,
                 nullptr,
-                kDefaultTypefaceAttributeData,
-                kDefaultTypefaceName) {}
+                kDefaultTypefaceAttributeData) {}
 
-CXFA_DefaultTypeface::~CXFA_DefaultTypeface() {}
+CXFA_DefaultTypeface::~CXFA_DefaultTypeface() = default;
diff --git a/xfa/fxfa/parser/cxfa_defaultui.cpp b/xfa/fxfa/parser/cxfa_defaultui.cpp
index c619d05..e132bee 100644
--- a/xfa/fxfa/parser/cxfa_defaultui.cpp
+++ b/xfa/fxfa/parser/cxfa_defaultui.cpp
@@ -13,14 +13,13 @@
 const CXFA_Node::PropertyData kDefaultUiPropertyData[] = {
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kDefaultUiAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDefaultUiName[] = L"defaultUi";
-
 }  // namespace
 
 CXFA_DefaultUi::CXFA_DefaultUi(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,10 +29,9 @@
                 XFA_ObjectType::Node,
                 XFA_Element::DefaultUi,
                 kDefaultUiPropertyData,
-                kDefaultUiAttributeData,
-                kDefaultUiName) {}
+                kDefaultUiAttributeData) {}
 
-CXFA_DefaultUi::~CXFA_DefaultUi() {}
+CXFA_DefaultUi::~CXFA_DefaultUi() = default;
 
 XFA_FFWidgetType CXFA_DefaultUi::GetDefaultFFWidgetType() const {
   return XFA_FFWidgetType::kTextEdit;
diff --git a/xfa/fxfa/parser/cxfa_delete.cpp b/xfa/fxfa/parser/cxfa_delete.cpp
index cd377e8..36c227d 100644
--- a/xfa/fxfa/parser/cxfa_delete.cpp
+++ b/xfa/fxfa/parser/cxfa_delete.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDeleteName[] = L"delete";
-
 }  // namespace
 
 CXFA_Delete::CXFA_Delete(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::Delete,
                 nullptr,
                 kDeleteAttributeData,
-                kDeleteName,
                 pdfium::MakeUnique<CJX_Delete>(this)) {}
 
-CXFA_Delete::~CXFA_Delete() {}
+CXFA_Delete::~CXFA_Delete() = default;
diff --git a/xfa/fxfa/parser/cxfa_delta.cpp b/xfa/fxfa/parser/cxfa_delta.cpp
index e50fd7f..24e4f42 100644
--- a/xfa/fxfa/parser/cxfa_delta.cpp
+++ b/xfa/fxfa/parser/cxfa_delta.cpp
@@ -9,12 +9,6 @@
 #include "fxjs/xfa/cjx_delta.h"
 #include "third_party/base/ptr_util.h"
 
-namespace {
-
-constexpr wchar_t kDeltaName[] = L"delta";
-
-}  // namespace
-
 CXFA_Delta::CXFA_Delta(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
                 packet,
@@ -23,7 +17,6 @@
                 XFA_Element::Delta,
                 nullptr,
                 nullptr,
-                kDeltaName,
                 pdfium::MakeUnique<CJX_Delta>(this)) {}
 
-CXFA_Delta::~CXFA_Delta() {}
+CXFA_Delta::~CXFA_Delta() = default;
diff --git a/xfa/fxfa/parser/cxfa_desc.cpp b/xfa/fxfa/parser/cxfa_desc.cpp
index 954da53..d509bfa 100644
--- a/xfa/fxfa/parser/cxfa_desc.cpp
+++ b/xfa/fxfa/parser/cxfa_desc.cpp
@@ -18,14 +18,13 @@
     {XFA_Element::Integer, 1, 0},  {XFA_Element::ExData, 1, 0},
     {XFA_Element::Date, 1, 0},     {XFA_Element::Float, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kDescAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDescName[] = L"desc";
-
 }  // namespace
 
 CXFA_Desc::CXFA_Desc(CXFA_Document* doc, XFA_PacketType packet)
@@ -36,7 +35,6 @@
                 XFA_Element::Desc,
                 kDescPropertyData,
                 kDescAttributeData,
-                kDescName,
                 pdfium::MakeUnique<CJX_Desc>(this)) {}
 
-CXFA_Desc::~CXFA_Desc() {}
+CXFA_Desc::~CXFA_Desc() = default;
diff --git a/xfa/fxfa/parser/cxfa_destination.cpp b/xfa/fxfa/parser/cxfa_destination.cpp
index 291ac5e..aeffa02 100644
--- a/xfa/fxfa/parser/cxfa_destination.cpp
+++ b/xfa/fxfa/parser/cxfa_destination.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDestinationName[] = L"destination";
-
 }  // namespace
 
 CXFA_Destination::CXFA_Destination(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Destination,
                 nullptr,
-                kDestinationAttributeData,
-                kDestinationName) {}
+                kDestinationAttributeData) {}
 
-CXFA_Destination::~CXFA_Destination() {}
+CXFA_Destination::~CXFA_Destination() = default;
diff --git a/xfa/fxfa/parser/cxfa_digestmethod.cpp b/xfa/fxfa/parser/cxfa_digestmethod.cpp
index 9c78635..ac4ed84 100644
--- a/xfa/fxfa/parser/cxfa_digestmethod.cpp
+++ b/xfa/fxfa/parser/cxfa_digestmethod.cpp
@@ -17,8 +17,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDigestMethodName[] = L"digestMethod";
-
 }  // namespace
 
 CXFA_DigestMethod::CXFA_DigestMethod(CXFA_Document* doc, XFA_PacketType packet)
@@ -29,7 +27,6 @@
                 XFA_Element::DigestMethod,
                 nullptr,
                 kDigestMethodAttributeData,
-                kDigestMethodName,
                 pdfium::MakeUnique<CJX_DigestMethod>(this)) {}
 
-CXFA_DigestMethod::~CXFA_DigestMethod() {}
+CXFA_DigestMethod::~CXFA_DigestMethod() = default;
diff --git a/xfa/fxfa/parser/cxfa_digestmethods.cpp b/xfa/fxfa/parser/cxfa_digestmethods.cpp
index 62c3422..0ee6fce 100644
--- a/xfa/fxfa/parser/cxfa_digestmethods.cpp
+++ b/xfa/fxfa/parser/cxfa_digestmethods.cpp
@@ -19,8 +19,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDigestMethodsName[] = L"digestMethods";
-
 }  // namespace
 
 CXFA_DigestMethods::CXFA_DigestMethods(CXFA_Document* doc,
@@ -32,7 +30,6 @@
                 XFA_Element::DigestMethods,
                 nullptr,
                 kDigestMethodsAttributeData,
-                kDigestMethodsName,
                 pdfium::MakeUnique<CJX_DigestMethods>(this)) {}
 
-CXFA_DigestMethods::~CXFA_DigestMethods() {}
+CXFA_DigestMethods::~CXFA_DigestMethods() = default;
diff --git a/xfa/fxfa/parser/cxfa_documentassembly.cpp b/xfa/fxfa/parser/cxfa_documentassembly.cpp
index f3cbc34..ee83ef4 100644
--- a/xfa/fxfa/parser/cxfa_documentassembly.cpp
+++ b/xfa/fxfa/parser/cxfa_documentassembly.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDocumentAssemblyName[] = L"documentAssembly";
-
 }  // namespace
 
 CXFA_DocumentAssembly::CXFA_DocumentAssembly(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::DocumentAssembly,
                 nullptr,
-                kDocumentAssemblyAttributeData,
-                kDocumentAssemblyName) {}
+                kDocumentAssemblyAttributeData) {}
 
-CXFA_DocumentAssembly::~CXFA_DocumentAssembly() {}
+CXFA_DocumentAssembly::~CXFA_DocumentAssembly() = default;
diff --git a/xfa/fxfa/parser/cxfa_draw.cpp b/xfa/fxfa/parser/cxfa_draw.cpp
index ce15428..d853651 100644
--- a/xfa/fxfa/parser/cxfa_draw.cpp
+++ b/xfa/fxfa/parser/cxfa_draw.cpp
@@ -19,6 +19,7 @@
     {XFA_Element::Desc, 1, 0},   {XFA_Element::Font, 1, 0},
     {XFA_Element::Value, 1, 0},  {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kDrawAttributeData[] = {
     {XFA_Attribute::H, XFA_AttributeType::Measure, (void*)L"0in"},
     {XFA_Attribute::W, XFA_AttributeType::Measure, (void*)L"0in"},
@@ -46,8 +47,6 @@
      (void*)XFA_AttributeValue::TopLeft},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDrawName[] = L"draw";
-
 }  // namespace
 
 CXFA_Draw::CXFA_Draw(CXFA_Document* doc, XFA_PacketType packet)
@@ -58,7 +57,6 @@
                 XFA_Element::Draw,
                 kDrawPropertyData,
                 kDrawAttributeData,
-                kDrawName,
                 pdfium::MakeUnique<CJX_Draw>(this)) {}
 
-CXFA_Draw::~CXFA_Draw() {}
+CXFA_Draw::~CXFA_Draw() = default;
diff --git a/xfa/fxfa/parser/cxfa_driver.cpp b/xfa/fxfa/parser/cxfa_driver.cpp
index 3a704f3..f49fa14 100644
--- a/xfa/fxfa/parser/cxfa_driver.cpp
+++ b/xfa/fxfa/parser/cxfa_driver.cpp
@@ -12,14 +12,13 @@
     {XFA_Element::FontInfo, 1, 0},
     {XFA_Element::Xdc, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kDriverAttributeData[] = {
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDriverName[] = L"driver";
-
 }  // namespace
 
 CXFA_Driver::CXFA_Driver(CXFA_Document* doc, XFA_PacketType packet)
@@ -29,7 +28,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Driver,
                 kDriverPropertyData,
-                kDriverAttributeData,
-                kDriverName) {}
+                kDriverAttributeData) {}
 
-CXFA_Driver::~CXFA_Driver() {}
+CXFA_Driver::~CXFA_Driver() = default;
diff --git a/xfa/fxfa/parser/cxfa_dsigdata.cpp b/xfa/fxfa/parser/cxfa_dsigdata.cpp
index b9a6ee9..3411d32 100644
--- a/xfa/fxfa/parser/cxfa_dsigdata.cpp
+++ b/xfa/fxfa/parser/cxfa_dsigdata.cpp
@@ -12,8 +12,6 @@
     {XFA_Attribute::Value, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDSigDataName[] = L"dSigData";
-
 }  // namespace
 
 CXFA_DSigData::CXFA_DSigData(CXFA_Document* doc, XFA_PacketType packet)
@@ -23,7 +21,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::DSigData,
                 nullptr,
-                kDSigDataAttributeData,
-                kDSigDataName) {}
+                kDSigDataAttributeData) {}
 
-CXFA_DSigData::~CXFA_DSigData() {}
+CXFA_DSigData::~CXFA_DSigData() = default;
diff --git a/xfa/fxfa/parser/cxfa_duplexoption.cpp b/xfa/fxfa/parser/cxfa_duplexoption.cpp
index baf07b9..2a3102b 100644
--- a/xfa/fxfa/parser/cxfa_duplexoption.cpp
+++ b/xfa/fxfa/parser/cxfa_duplexoption.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDuplexOptionName[] = L"duplexOption";
-
 }  // namespace
 
 CXFA_DuplexOption::CXFA_DuplexOption(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::DuplexOption,
                 nullptr,
-                kDuplexOptionAttributeData,
-                kDuplexOptionName) {}
+                kDuplexOptionAttributeData) {}
 
-CXFA_DuplexOption::~CXFA_DuplexOption() {}
+CXFA_DuplexOption::~CXFA_DuplexOption() = default;
diff --git a/xfa/fxfa/parser/cxfa_dynamicrender.cpp b/xfa/fxfa/parser/cxfa_dynamicrender.cpp
index 7120300..6de711a 100644
--- a/xfa/fxfa/parser/cxfa_dynamicrender.cpp
+++ b/xfa/fxfa/parser/cxfa_dynamicrender.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kDynamicRenderName[] = L"dynamicRender";
-
 }  // namespace
 
 CXFA_DynamicRender::CXFA_DynamicRender(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::DynamicRender,
                 nullptr,
-                kDynamicRenderAttributeData,
-                kDynamicRenderName) {}
+                kDynamicRenderAttributeData) {}
 
-CXFA_DynamicRender::~CXFA_DynamicRender() {}
+CXFA_DynamicRender::~CXFA_DynamicRender() = default;
diff --git a/xfa/fxfa/parser/cxfa_edge.cpp b/xfa/fxfa/parser/cxfa_edge.cpp
index 9671dc0..6afb6c1 100644
--- a/xfa/fxfa/parser/cxfa_edge.cpp
+++ b/xfa/fxfa/parser/cxfa_edge.cpp
@@ -15,6 +15,7 @@
     {XFA_Element::Color, 1, 0},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kEdgeAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Cap, XFA_AttributeType::Enum,
@@ -28,8 +29,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kEdgeName[] = L"edge";
-
 }  // namespace
 
 CXFA_Edge::CXFA_Edge(CXFA_Document* doc, XFA_PacketType packet)
@@ -40,7 +39,6 @@
                   XFA_Element::Edge,
                   kEdgePropertyData,
                   kEdgeAttributeData,
-                  kEdgeName,
                   pdfium::MakeUnique<CJX_Edge>(this)) {}
 
-CXFA_Edge::~CXFA_Edge() {}
+CXFA_Edge::~CXFA_Edge() = default;
diff --git a/xfa/fxfa/parser/cxfa_effectiveinputpolicy.cpp b/xfa/fxfa/parser/cxfa_effectiveinputpolicy.cpp
index 485fbdf..db48e89 100644
--- a/xfa/fxfa/parser/cxfa_effectiveinputpolicy.cpp
+++ b/xfa/fxfa/parser/cxfa_effectiveinputpolicy.cpp
@@ -15,8 +15,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kEffectiveInputPolicyName[] = L"effectiveInputPolicy";
-
 }  // namespace
 
 CXFA_EffectiveInputPolicy::CXFA_EffectiveInputPolicy(CXFA_Document* doc,
@@ -27,7 +25,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::EffectiveInputPolicy,
                 nullptr,
-                kEffectiveInputPolicyAttributeData,
-                kEffectiveInputPolicyName) {}
+                kEffectiveInputPolicyAttributeData) {}
 
-CXFA_EffectiveInputPolicy::~CXFA_EffectiveInputPolicy() {}
+CXFA_EffectiveInputPolicy::~CXFA_EffectiveInputPolicy() = default;
diff --git a/xfa/fxfa/parser/cxfa_effectiveoutputpolicy.cpp b/xfa/fxfa/parser/cxfa_effectiveoutputpolicy.cpp
index 5a657e3..ae16091 100644
--- a/xfa/fxfa/parser/cxfa_effectiveoutputpolicy.cpp
+++ b/xfa/fxfa/parser/cxfa_effectiveoutputpolicy.cpp
@@ -15,8 +15,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kEffectiveOutputPolicyName[] = L"effectiveOutputPolicy";
-
 }  // namespace
 
 CXFA_EffectiveOutputPolicy::CXFA_EffectiveOutputPolicy(CXFA_Document* doc,
@@ -27,7 +25,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::EffectiveOutputPolicy,
                 nullptr,
-                kEffectiveOutputPolicyAttributeData,
-                kEffectiveOutputPolicyName) {}
+                kEffectiveOutputPolicyAttributeData) {}
 
-CXFA_EffectiveOutputPolicy::~CXFA_EffectiveOutputPolicy() {}
+CXFA_EffectiveOutputPolicy::~CXFA_EffectiveOutputPolicy() = default;
diff --git a/xfa/fxfa/parser/cxfa_embed.cpp b/xfa/fxfa/parser/cxfa_embed.cpp
index 2039dad..f456c72 100644
--- a/xfa/fxfa/parser/cxfa_embed.cpp
+++ b/xfa/fxfa/parser/cxfa_embed.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kEmbedName[] = L"embed";
-
 }  // namespace
 
 CXFA_Embed::CXFA_Embed(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Embed,
                 nullptr,
-                kEmbedAttributeData,
-                kEmbedName) {}
+                kEmbedAttributeData) {}
 
-CXFA_Embed::~CXFA_Embed() {}
+CXFA_Embed::~CXFA_Embed() = default;
diff --git a/xfa/fxfa/parser/cxfa_encoding.cpp b/xfa/fxfa/parser/cxfa_encoding.cpp
index 90c6a30..818e654 100644
--- a/xfa/fxfa/parser/cxfa_encoding.cpp
+++ b/xfa/fxfa/parser/cxfa_encoding.cpp
@@ -17,8 +17,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kEncodingName[] = L"encoding";
-
 }  // namespace
 
 CXFA_Encoding::CXFA_Encoding(CXFA_Document* doc, XFA_PacketType packet)
@@ -29,7 +27,6 @@
                 XFA_Element::Encoding,
                 nullptr,
                 kEncodingAttributeData,
-                kEncodingName,
                 pdfium::MakeUnique<CJX_Encoding>(this)) {}
 
-CXFA_Encoding::~CXFA_Encoding() {}
+CXFA_Encoding::~CXFA_Encoding() = default;
diff --git a/xfa/fxfa/parser/cxfa_encodings.cpp b/xfa/fxfa/parser/cxfa_encodings.cpp
index 6b57803..b40c9b4 100644
--- a/xfa/fxfa/parser/cxfa_encodings.cpp
+++ b/xfa/fxfa/parser/cxfa_encodings.cpp
@@ -19,8 +19,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kEncodingsName[] = L"encodings";
-
 }  // namespace
 
 CXFA_Encodings::CXFA_Encodings(CXFA_Document* doc, XFA_PacketType packet)
@@ -31,7 +29,6 @@
                 XFA_Element::Encodings,
                 nullptr,
                 kEncodingsAttributeData,
-                kEncodingsName,
                 pdfium::MakeUnique<CJX_Encodings>(this)) {}
 
-CXFA_Encodings::~CXFA_Encodings() {}
+CXFA_Encodings::~CXFA_Encodings() = default;
diff --git a/xfa/fxfa/parser/cxfa_encrypt.cpp b/xfa/fxfa/parser/cxfa_encrypt.cpp
index 3c89341..9d0739c 100644
--- a/xfa/fxfa/parser/cxfa_encrypt.cpp
+++ b/xfa/fxfa/parser/cxfa_encrypt.cpp
@@ -14,6 +14,7 @@
 const CXFA_Node::PropertyData kEncryptPropertyData[] = {
     {XFA_Element::Certificate, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kEncryptAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -22,8 +23,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kEncryptName[] = L"encrypt";
-
 }  // namespace
 
 CXFA_Encrypt::CXFA_Encrypt(CXFA_Document* doc, XFA_PacketType packet)
@@ -35,7 +34,6 @@
           XFA_Element::Encrypt,
           kEncryptPropertyData,
           kEncryptAttributeData,
-          kEncryptName,
           pdfium::MakeUnique<CJX_Encrypt>(this)) {}
 
-CXFA_Encrypt::~CXFA_Encrypt() {}
+CXFA_Encrypt::~CXFA_Encrypt() = default;
diff --git a/xfa/fxfa/parser/cxfa_encryption.cpp b/xfa/fxfa/parser/cxfa_encryption.cpp
index 863f720..9b9c6d8 100644
--- a/xfa/fxfa/parser/cxfa_encryption.cpp
+++ b/xfa/fxfa/parser/cxfa_encryption.cpp
@@ -13,13 +13,12 @@
     {XFA_Element::Encrypt, 1, 0},
     {XFA_Element::Permissions, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kEncryptionAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kEncryptionName[] = L"encryption";
-
 }  // namespace
 
 CXFA_Encryption::CXFA_Encryption(CXFA_Document* doc, XFA_PacketType packet)
@@ -29,7 +28,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Encryption,
                 kEncryptionPropertyData,
-                kEncryptionAttributeData,
-                kEncryptionName) {}
+                kEncryptionAttributeData) {}
 
-CXFA_Encryption::~CXFA_Encryption() {}
+CXFA_Encryption::~CXFA_Encryption() = default;
diff --git a/xfa/fxfa/parser/cxfa_encryptionlevel.cpp b/xfa/fxfa/parser/cxfa_encryptionlevel.cpp
index 3c03372..b0d765b 100644
--- a/xfa/fxfa/parser/cxfa_encryptionlevel.cpp
+++ b/xfa/fxfa/parser/cxfa_encryptionlevel.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kEncryptionLevelName[] = L"encryptionLevel";
-
 }  // namespace
 
 CXFA_EncryptionLevel::CXFA_EncryptionLevel(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::EncryptionLevel,
                 nullptr,
-                kEncryptionLevelAttributeData,
-                kEncryptionLevelName) {}
+                kEncryptionLevelAttributeData) {}
 
-CXFA_EncryptionLevel::~CXFA_EncryptionLevel() {}
+CXFA_EncryptionLevel::~CXFA_EncryptionLevel() = default;
diff --git a/xfa/fxfa/parser/cxfa_encryptionmethod.cpp b/xfa/fxfa/parser/cxfa_encryptionmethod.cpp
index 748f0a3..19a723d 100644
--- a/xfa/fxfa/parser/cxfa_encryptionmethod.cpp
+++ b/xfa/fxfa/parser/cxfa_encryptionmethod.cpp
@@ -14,8 +14,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kEncryptionMethodName[] = L"encryptionMethod";
-
 }  // namespace
 
 CXFA_EncryptionMethod::CXFA_EncryptionMethod(CXFA_Document* doc,
@@ -26,7 +24,6 @@
                 XFA_ObjectType::NodeC,
                 XFA_Element::EncryptionMethod,
                 nullptr,
-                kEncryptionMethodAttributeData,
-                kEncryptionMethodName) {}
+                kEncryptionMethodAttributeData) {}
 
-CXFA_EncryptionMethod::~CXFA_EncryptionMethod() {}
+CXFA_EncryptionMethod::~CXFA_EncryptionMethod() = default;
diff --git a/xfa/fxfa/parser/cxfa_encryptionmethods.cpp b/xfa/fxfa/parser/cxfa_encryptionmethods.cpp
index ff87597..4c53c6c 100644
--- a/xfa/fxfa/parser/cxfa_encryptionmethods.cpp
+++ b/xfa/fxfa/parser/cxfa_encryptionmethods.cpp
@@ -16,8 +16,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kEncryptionMethodsName[] = L"encryptionMethods";
-
 }  // namespace
 
 CXFA_EncryptionMethods::CXFA_EncryptionMethods(CXFA_Document* doc,
@@ -28,7 +26,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::EncryptionMethods,
                 nullptr,
-                kEncryptionMethodsAttributeData,
-                kEncryptionMethodsName) {}
+                kEncryptionMethodsAttributeData) {}
 
-CXFA_EncryptionMethods::~CXFA_EncryptionMethods() {}
+CXFA_EncryptionMethods::~CXFA_EncryptionMethods() = default;
diff --git a/xfa/fxfa/parser/cxfa_enforce.cpp b/xfa/fxfa/parser/cxfa_enforce.cpp
index 5d67999..c7dc9fb 100644
--- a/xfa/fxfa/parser/cxfa_enforce.cpp
+++ b/xfa/fxfa/parser/cxfa_enforce.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kEnforceName[] = L"enforce";
-
 }  // namespace
 
 CXFA_Enforce::CXFA_Enforce(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Enforce,
                 nullptr,
-                kEnforceAttributeData,
-                kEnforceName) {}
+                kEnforceAttributeData) {}
 
-CXFA_Enforce::~CXFA_Enforce() {}
+CXFA_Enforce::~CXFA_Enforce() = default;
diff --git a/xfa/fxfa/parser/cxfa_equate.cpp b/xfa/fxfa/parser/cxfa_equate.cpp
index 12070f7..9b27349 100644
--- a/xfa/fxfa/parser/cxfa_equate.cpp
+++ b/xfa/fxfa/parser/cxfa_equate.cpp
@@ -16,8 +16,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kEquateName[] = L"equate";
-
 }  // namespace
 
 CXFA_Equate::CXFA_Equate(CXFA_Document* doc, XFA_PacketType packet)
@@ -27,7 +25,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::Equate,
                 nullptr,
-                kEquateAttributeData,
-                kEquateName) {}
+                kEquateAttributeData) {}
 
-CXFA_Equate::~CXFA_Equate() {}
+CXFA_Equate::~CXFA_Equate() = default;
diff --git a/xfa/fxfa/parser/cxfa_equaterange.cpp b/xfa/fxfa/parser/cxfa_equaterange.cpp
index 7871ea8..f1e6703 100644
--- a/xfa/fxfa/parser/cxfa_equaterange.cpp
+++ b/xfa/fxfa/parser/cxfa_equaterange.cpp
@@ -16,8 +16,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kEquateRangeName[] = L"equateRange";
-
 }  // namespace
 
 CXFA_EquateRange::CXFA_EquateRange(CXFA_Document* doc, XFA_PacketType packet)
@@ -27,7 +25,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::EquateRange,
                 nullptr,
-                kEquateRangeAttributeData,
-                kEquateRangeName) {}
+                kEquateRangeAttributeData) {}
 
-CXFA_EquateRange::~CXFA_EquateRange() {}
+CXFA_EquateRange::~CXFA_EquateRange() = default;
diff --git a/xfa/fxfa/parser/cxfa_era.cpp b/xfa/fxfa/parser/cxfa_era.cpp
index 3fe3aa4..b419644 100644
--- a/xfa/fxfa/parser/cxfa_era.cpp
+++ b/xfa/fxfa/parser/cxfa_era.cpp
@@ -6,12 +6,6 @@
 
 #include "xfa/fxfa/parser/cxfa_era.h"
 
-namespace {
-
-constexpr wchar_t kEraName[] = L"era";
-
-}  // namespace
-
 CXFA_Era::CXFA_Era(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
                 packet,
@@ -19,7 +13,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Era,
                 nullptr,
-                nullptr,
-                kEraName) {}
+                nullptr) {}
 
-CXFA_Era::~CXFA_Era() {}
+CXFA_Era::~CXFA_Era() = default;
diff --git a/xfa/fxfa/parser/cxfa_eranames.cpp b/xfa/fxfa/parser/cxfa_eranames.cpp
index 75ea37b..083dc2f 100644
--- a/xfa/fxfa/parser/cxfa_eranames.cpp
+++ b/xfa/fxfa/parser/cxfa_eranames.cpp
@@ -12,8 +12,6 @@
     {XFA_Element::Era, 2, 0},
     {XFA_Element::Unknown, 0, 0}};
 
-constexpr wchar_t kEraNamesName[] = L"eraNames";
-
 }  // namespace
 
 CXFA_EraNames::CXFA_EraNames(CXFA_Document* doc, XFA_PacketType packet)
@@ -23,7 +21,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::EraNames,
                 kEraNamesPropertyData,
-                nullptr,
-                kEraNamesName) {}
+                nullptr) {}
 
-CXFA_EraNames::~CXFA_EraNames() {}
+CXFA_EraNames::~CXFA_EraNames() = default;
diff --git a/xfa/fxfa/parser/cxfa_event.cpp b/xfa/fxfa/parser/cxfa_event.cpp
index bb963e5..5abf611 100644
--- a/xfa/fxfa/parser/cxfa_event.cpp
+++ b/xfa/fxfa/parser/cxfa_event.cpp
@@ -20,6 +20,7 @@
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Submit, 1, XFA_PROPERTYFLAG_OneOf},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kEventAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
@@ -32,8 +33,6 @@
      (void*)XFA_AttributeValue::Click},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kEventName[] = L"event";
-
 }  // namespace
 
 CXFA_Event::CXFA_Event(CXFA_Document* doc, XFA_PacketType packet)
@@ -44,10 +43,9 @@
                 XFA_Element::Event,
                 kEventPropertyData,
                 kEventAttributeData,
-                kEventName,
                 pdfium::MakeUnique<CJX_Event>(this)) {}
 
-CXFA_Event::~CXFA_Event() {}
+CXFA_Event::~CXFA_Event() = default;
 
 XFA_AttributeValue CXFA_Event::GetActivity() {
   return JSObject()->GetEnum(XFA_Attribute::Activity);
diff --git a/xfa/fxfa/parser/cxfa_exclgroup.cpp b/xfa/fxfa/parser/cxfa_exclgroup.cpp
index 71c0ce5..be2e21d 100644
--- a/xfa/fxfa/parser/cxfa_exclgroup.cpp
+++ b/xfa/fxfa/parser/cxfa_exclgroup.cpp
@@ -18,6 +18,7 @@
     {XFA_Element::Caption, 1, 0},   {XFA_Element::Bind, 1, 0},
     {XFA_Element::Desc, 1, 0},      {XFA_Element::Calculate, 1, 0},
     {XFA_Element::Extras, 1, 0},    {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kExclGroupAttributeData[] = {
     {XFA_Attribute::H, XFA_AttributeType::Measure, (void*)L"0in"},
     {XFA_Attribute::W, XFA_AttributeType::Measure, (void*)L"0in"},
@@ -48,8 +49,6 @@
     {XFA_Attribute::AccessKey, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kExclGroupName[] = L"exclGroup";
-
 }  // namespace
 
 CXFA_ExclGroup::CXFA_ExclGroup(CXFA_Document* doc, XFA_PacketType packet)
@@ -60,7 +59,6 @@
                 XFA_Element::ExclGroup,
                 kExclGroupPropertyData,
                 kExclGroupAttributeData,
-                kExclGroupName,
                 pdfium::MakeUnique<CJX_ExclGroup>(this)) {}
 
-CXFA_ExclGroup::~CXFA_ExclGroup() {}
+CXFA_ExclGroup::~CXFA_ExclGroup() = default;
diff --git a/xfa/fxfa/parser/cxfa_exclude.cpp b/xfa/fxfa/parser/cxfa_exclude.cpp
index 23b30b4..3a8b2e1 100644
--- a/xfa/fxfa/parser/cxfa_exclude.cpp
+++ b/xfa/fxfa/parser/cxfa_exclude.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kExcludeName[] = L"exclude";
-
 }  // namespace
 
 CXFA_Exclude::CXFA_Exclude(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Exclude,
                 nullptr,
-                kExcludeAttributeData,
-                kExcludeName) {}
+                kExcludeAttributeData) {}
 
-CXFA_Exclude::~CXFA_Exclude() {}
+CXFA_Exclude::~CXFA_Exclude() = default;
diff --git a/xfa/fxfa/parser/cxfa_excludens.cpp b/xfa/fxfa/parser/cxfa_excludens.cpp
index 2eacc76..b5a9031 100644
--- a/xfa/fxfa/parser/cxfa_excludens.cpp
+++ b/xfa/fxfa/parser/cxfa_excludens.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kExcludeNSName[] = L"excludeNS";
-
 }  // namespace
 
 CXFA_ExcludeNS::CXFA_ExcludeNS(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::ExcludeNS,
                 nullptr,
-                kExcludeNSAttributeData,
-                kExcludeNSName) {}
+                kExcludeNSAttributeData) {}
 
-CXFA_ExcludeNS::~CXFA_ExcludeNS() {}
+CXFA_ExcludeNS::~CXFA_ExcludeNS() = default;
diff --git a/xfa/fxfa/parser/cxfa_exdata.cpp b/xfa/fxfa/parser/cxfa_exdata.cpp
index 8cb89ab..000afd7 100644
--- a/xfa/fxfa/parser/cxfa_exdata.cpp
+++ b/xfa/fxfa/parser/cxfa_exdata.cpp
@@ -24,7 +24,6 @@
     {XFA_Attribute::Href, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kExDataName[] = L"exData";
 
 }  // namespace
 
@@ -36,10 +35,9 @@
                 XFA_Element::ExData,
                 nullptr,
                 kExDataAttributeData,
-                kExDataName,
                 pdfium::MakeUnique<CJX_ExData>(this)) {}
 
-CXFA_ExData::~CXFA_ExData() {}
+CXFA_ExData::~CXFA_ExData() = default;
 
 void CXFA_ExData::SetContentType(const WideString& wsContentType) {
   JSObject()->SetCData(XFA_Attribute::ContentType, wsContentType, false, false);
diff --git a/xfa/fxfa/parser/cxfa_execute.cpp b/xfa/fxfa/parser/cxfa_execute.cpp
index 70d3589..2f40f7d 100644
--- a/xfa/fxfa/parser/cxfa_execute.cpp
+++ b/xfa/fxfa/parser/cxfa_execute.cpp
@@ -22,8 +22,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kExecuteName[] = L"execute";
-
 }  // namespace
 
 CXFA_Execute::CXFA_Execute(CXFA_Document* doc, XFA_PacketType packet)
@@ -34,7 +32,6 @@
                 XFA_Element::Execute,
                 nullptr,
                 kExecuteAttributeData,
-                kExecuteName,
                 pdfium::MakeUnique<CJX_Execute>(this)) {}
 
-CXFA_Execute::~CXFA_Execute() {}
+CXFA_Execute::~CXFA_Execute() = default;
diff --git a/xfa/fxfa/parser/cxfa_exobject.cpp b/xfa/fxfa/parser/cxfa_exobject.cpp
index 719399b..a43ed48 100644
--- a/xfa/fxfa/parser/cxfa_exobject.cpp
+++ b/xfa/fxfa/parser/cxfa_exobject.cpp
@@ -14,6 +14,7 @@
 const CXFA_Node::PropertyData kExObjectPropertyData[] = {
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kExObjectAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
@@ -25,8 +26,6 @@
     {XFA_Attribute::ClassId, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kExObjectName[] = L"exObject";
-
 }  // namespace
 
 CXFA_ExObject::CXFA_ExObject(CXFA_Document* doc, XFA_PacketType packet)
@@ -37,7 +36,6 @@
                 XFA_Element::ExObject,
                 kExObjectPropertyData,
                 kExObjectAttributeData,
-                kExObjectName,
                 pdfium::MakeUnique<CJX_ExObject>(this)) {}
 
-CXFA_ExObject::~CXFA_ExObject() {}
+CXFA_ExObject::~CXFA_ExObject() = default;
diff --git a/xfa/fxfa/parser/cxfa_extras.cpp b/xfa/fxfa/parser/cxfa_extras.cpp
index ff9ac9b..6f8360b 100644
--- a/xfa/fxfa/parser/cxfa_extras.cpp
+++ b/xfa/fxfa/parser/cxfa_extras.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kExtrasName[] = L"extras";
-
 }  // namespace
 
 CXFA_Extras::CXFA_Extras(CXFA_Document* doc, XFA_PacketType packet)
@@ -31,7 +29,6 @@
                 XFA_Element::Extras,
                 nullptr,
                 kExtrasAttributeData,
-                kExtrasName,
                 pdfium::MakeUnique<CJX_Extras>(this)) {}
 
-CXFA_Extras::~CXFA_Extras() {}
+CXFA_Extras::~CXFA_Extras() = default;
diff --git a/xfa/fxfa/parser/cxfa_field.cpp b/xfa/fxfa/parser/cxfa_field.cpp
index d9278c7..0be32e8 100644
--- a/xfa/fxfa/parser/cxfa_field.cpp
+++ b/xfa/fxfa/parser/cxfa_field.cpp
@@ -21,6 +21,7 @@
     {XFA_Element::Font, 1, 0},      {XFA_Element::Value, 1, 0},
     {XFA_Element::Calculate, 1, 0}, {XFA_Element::Extras, 1, 0},
     {XFA_Element::Items, 2, 0},     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kFieldAttributeData[] = {
     {XFA_Attribute::H, XFA_AttributeType::Measure, (void*)L"0in"},
     {XFA_Attribute::W, XFA_AttributeType::Measure, (void*)L"0in"},
@@ -51,8 +52,6 @@
     {XFA_Attribute::AccessKey, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kFieldName[] = L"field";
-
 }  // namespace
 
 CXFA_Field::CXFA_Field(CXFA_Document* doc, XFA_PacketType packet)
@@ -63,7 +62,6 @@
                 XFA_Element::Field,
                 kFieldPropertyData,
                 kFieldAttributeData,
-                kFieldName,
                 pdfium::MakeUnique<CJX_Field>(this)) {}
 
-CXFA_Field::~CXFA_Field() {}
+CXFA_Field::~CXFA_Field() = default;
diff --git a/xfa/fxfa/parser/cxfa_fill.cpp b/xfa/fxfa/parser/cxfa_fill.cpp
index cd84ef9..04972af 100644
--- a/xfa/fxfa/parser/cxfa_fill.cpp
+++ b/xfa/fxfa/parser/cxfa_fill.cpp
@@ -27,6 +27,7 @@
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Radial, 1, XFA_PROPERTYFLAG_OneOf},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kFillAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -35,8 +36,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kFillName[] = L"fill";
-
 }  // namespace
 
 CXFA_Fill::CXFA_Fill(CXFA_Document* doc, XFA_PacketType packet)
@@ -47,10 +46,9 @@
                 XFA_Element::Fill,
                 kFillPropertyData,
                 kFillAttributeData,
-                kFillName,
                 pdfium::MakeUnique<CJX_Fill>(this)) {}
 
-CXFA_Fill::~CXFA_Fill() {}
+CXFA_Fill::~CXFA_Fill() = default;
 
 bool CXFA_Fill::IsVisible() {
   return JSObject()
diff --git a/xfa/fxfa/parser/cxfa_filter.cpp b/xfa/fxfa/parser/cxfa_filter.cpp
index 28e9368..09483c6 100644
--- a/xfa/fxfa/parser/cxfa_filter.cpp
+++ b/xfa/fxfa/parser/cxfa_filter.cpp
@@ -17,6 +17,7 @@
     {XFA_Element::DigestMethods, 1, 0}, {XFA_Element::Encodings, 1, 0},
     {XFA_Element::Reasons, 1, 0},       {XFA_Element::AppearanceFilter, 1, 0},
     {XFA_Element::LockDocument, 1, 0},  {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kFilterAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
@@ -26,8 +27,6 @@
     {XFA_Attribute::AddRevocationInfo, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kFilterName[] = L"filter";
-
 }  // namespace
 
 CXFA_Filter::CXFA_Filter(CXFA_Document* doc, XFA_PacketType packet)
@@ -38,7 +37,6 @@
                 XFA_Element::Filter,
                 kFilterPropertyData,
                 kFilterAttributeData,
-                kFilterName,
                 pdfium::MakeUnique<CJX_Filter>(this)) {}
 
-CXFA_Filter::~CXFA_Filter() {}
+CXFA_Filter::~CXFA_Filter() = default;
diff --git a/xfa/fxfa/parser/cxfa_fliplabel.cpp b/xfa/fxfa/parser/cxfa_fliplabel.cpp
index bc5cb52..2834c40 100644
--- a/xfa/fxfa/parser/cxfa_fliplabel.cpp
+++ b/xfa/fxfa/parser/cxfa_fliplabel.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kFlipLabelName[] = L"flipLabel";
-
 }  // namespace
 
 CXFA_FlipLabel::CXFA_FlipLabel(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::FlipLabel,
                 nullptr,
-                kFlipLabelAttributeData,
-                kFlipLabelName) {}
+                kFlipLabelAttributeData) {}
 
-CXFA_FlipLabel::~CXFA_FlipLabel() {}
+CXFA_FlipLabel::~CXFA_FlipLabel() = default;
diff --git a/xfa/fxfa/parser/cxfa_float.cpp b/xfa/fxfa/parser/cxfa_float.cpp
index fdf0163..8b28d21 100644
--- a/xfa/fxfa/parser/cxfa_float.cpp
+++ b/xfa/fxfa/parser/cxfa_float.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kFloatName[] = L"float";
-
 }  // namespace
 
 CXFA_Float::CXFA_Float(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::Float,
                 nullptr,
                 kFloatAttributeData,
-                kFloatName,
                 pdfium::MakeUnique<CJX_Float>(this)) {}
 
-CXFA_Float::~CXFA_Float() {}
+CXFA_Float::~CXFA_Float() = default;
diff --git a/xfa/fxfa/parser/cxfa_font.cpp b/xfa/fxfa/parser/cxfa_font.cpp
index 42e7e17..fd10d76 100644
--- a/xfa/fxfa/parser/cxfa_font.cpp
+++ b/xfa/fxfa/parser/cxfa_font.cpp
@@ -17,6 +17,7 @@
     {XFA_Element::Fill, 1, 0},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kFontAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::LineThrough, XFA_AttributeType::Integer, (void*)0},
@@ -49,8 +50,6 @@
      (void*)XFA_AttributeValue::Serif},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kFontName[] = L"font";
-
 }  // namespace
 
 CXFA_Font::CXFA_Font(CXFA_Document* doc, XFA_PacketType packet)
@@ -62,10 +61,9 @@
           XFA_Element::Font,
           kFontPropertyData,
           kFontAttributeData,
-          kFontName,
           pdfium::MakeUnique<CJX_Font>(this)) {}
 
-CXFA_Font::~CXFA_Font() {}
+CXFA_Font::~CXFA_Font() = default;
 
 float CXFA_Font::GetBaselineShift() const {
   return JSObject()
diff --git a/xfa/fxfa/parser/cxfa_fontinfo.cpp b/xfa/fxfa/parser/cxfa_fontinfo.cpp
index c649798..4cca2c6 100644
--- a/xfa/fxfa/parser/cxfa_fontinfo.cpp
+++ b/xfa/fxfa/parser/cxfa_fontinfo.cpp
@@ -13,13 +13,12 @@
     {XFA_Element::Map, 1, 0},
     {XFA_Element::Embed, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kFontInfoAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kFontInfoName[] = L"fontInfo";
-
 }  // namespace
 
 CXFA_FontInfo::CXFA_FontInfo(CXFA_Document* doc, XFA_PacketType packet)
@@ -29,7 +28,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::FontInfo,
                 kFontInfoPropertyData,
-                kFontInfoAttributeData,
-                kFontInfoName) {}
+                kFontInfoAttributeData) {}
 
-CXFA_FontInfo::~CXFA_FontInfo() {}
+CXFA_FontInfo::~CXFA_FontInfo() = default;
diff --git a/xfa/fxfa/parser/cxfa_form.cpp b/xfa/fxfa/parser/cxfa_form.cpp
index 7dfdc83..30ebb02 100644
--- a/xfa/fxfa/parser/cxfa_form.cpp
+++ b/xfa/fxfa/parser/cxfa_form.cpp
@@ -15,8 +15,6 @@
     {XFA_Attribute::Checksum, XFA_AttributeType::CData, (void*)nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kFormName[] = L"form";
-
 }  // namespace
 
 CXFA_Form::CXFA_Form(CXFA_Document* doc, XFA_PacketType packet)
@@ -27,7 +25,6 @@
                 XFA_Element::Form,
                 nullptr,
                 kFormAttributeData,
-                kFormName,
                 pdfium::MakeUnique<CJX_Form>(this)) {}
 
-CXFA_Form::~CXFA_Form() {}
+CXFA_Form::~CXFA_Form() = default;
diff --git a/xfa/fxfa/parser/cxfa_format.cpp b/xfa/fxfa/parser/cxfa_format.cpp
index de06f10..c972c83 100644
--- a/xfa/fxfa/parser/cxfa_format.cpp
+++ b/xfa/fxfa/parser/cxfa_format.cpp
@@ -15,14 +15,13 @@
     {XFA_Element::Picture, 1, 0},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kFormatAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kFormatName[] = L"format";
-
 }  // namespace
 
 CXFA_Format::CXFA_Format(CXFA_Document* doc, XFA_PacketType packet)
@@ -33,7 +32,6 @@
                 XFA_Element::Format,
                 kFormatPropertyData,
                 kFormatAttributeData,
-                kFormatName,
                 pdfium::MakeUnique<CJX_Format>(this)) {}
 
-CXFA_Format::~CXFA_Format() {}
+CXFA_Format::~CXFA_Format() = default;
diff --git a/xfa/fxfa/parser/cxfa_formfieldfilling.cpp b/xfa/fxfa/parser/cxfa_formfieldfilling.cpp
index e1ccd3a..397280c 100644
--- a/xfa/fxfa/parser/cxfa_formfieldfilling.cpp
+++ b/xfa/fxfa/parser/cxfa_formfieldfilling.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kFormFieldFillingName[] = L"formFieldFilling";
-
 }  // namespace
 
 CXFA_FormFieldFilling::CXFA_FormFieldFilling(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::FormFieldFilling,
                 nullptr,
-                kFormFieldFillingAttributeData,
-                kFormFieldFillingName) {}
+                kFormFieldFillingAttributeData) {}
 
-CXFA_FormFieldFilling::~CXFA_FormFieldFilling() {}
+CXFA_FormFieldFilling::~CXFA_FormFieldFilling() = default;
diff --git a/xfa/fxfa/parser/cxfa_groupparent.cpp b/xfa/fxfa/parser/cxfa_groupparent.cpp
index 108877a..8c4ebb9 100644
--- a/xfa/fxfa/parser/cxfa_groupparent.cpp
+++ b/xfa/fxfa/parser/cxfa_groupparent.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kGroupParentName[] = L"groupParent";
-
 }  // namespace
 
 CXFA_GroupParent::CXFA_GroupParent(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::GroupParent,
                 nullptr,
-                kGroupParentAttributeData,
-                kGroupParentName) {}
+                kGroupParentAttributeData) {}
 
-CXFA_GroupParent::~CXFA_GroupParent() {}
+CXFA_GroupParent::~CXFA_GroupParent() = default;
diff --git a/xfa/fxfa/parser/cxfa_handler.cpp b/xfa/fxfa/parser/cxfa_handler.cpp
index 7877941..71e3b7d 100644
--- a/xfa/fxfa/parser/cxfa_handler.cpp
+++ b/xfa/fxfa/parser/cxfa_handler.cpp
@@ -19,8 +19,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kHandlerName[] = L"handler";
-
 }  // namespace
 
 CXFA_Handler::CXFA_Handler(CXFA_Document* doc, XFA_PacketType packet)
@@ -31,7 +29,6 @@
                 XFA_Element::Handler,
                 nullptr,
                 kHandlerAttributeData,
-                kHandlerName,
                 pdfium::MakeUnique<CJX_Handler>(this)) {}
 
-CXFA_Handler::~CXFA_Handler() {}
+CXFA_Handler::~CXFA_Handler() = default;
diff --git a/xfa/fxfa/parser/cxfa_hyphenation.cpp b/xfa/fxfa/parser/cxfa_hyphenation.cpp
index c885ae5..5c92e61 100644
--- a/xfa/fxfa/parser/cxfa_hyphenation.cpp
+++ b/xfa/fxfa/parser/cxfa_hyphenation.cpp
@@ -20,8 +20,6 @@
     {XFA_Attribute::ExcludeAllCaps, XFA_AttributeType::Boolean, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kHyphenationName[] = L"hyphenation";
-
 }  // namespace
 
 CXFA_Hyphenation::CXFA_Hyphenation(CXFA_Document* doc, XFA_PacketType packet)
@@ -31,7 +29,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Hyphenation,
                 nullptr,
-                kHyphenationAttributeData,
-                kHyphenationName) {}
+                kHyphenationAttributeData) {}
 
-CXFA_Hyphenation::~CXFA_Hyphenation() {}
+CXFA_Hyphenation::~CXFA_Hyphenation() = default;
diff --git a/xfa/fxfa/parser/cxfa_ifempty.cpp b/xfa/fxfa/parser/cxfa_ifempty.cpp
index bc7d4ba..74d9e28 100644
--- a/xfa/fxfa/parser/cxfa_ifempty.cpp
+++ b/xfa/fxfa/parser/cxfa_ifempty.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kIfEmptyName[] = L"ifEmpty";
-
 }  // namespace
 
 CXFA_IfEmpty::CXFA_IfEmpty(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::IfEmpty,
                 nullptr,
-                kIfEmptyAttributeData,
-                kIfEmptyName) {}
+                kIfEmptyAttributeData) {}
 
-CXFA_IfEmpty::~CXFA_IfEmpty() {}
+CXFA_IfEmpty::~CXFA_IfEmpty() = default;
diff --git a/xfa/fxfa/parser/cxfa_image.cpp b/xfa/fxfa/parser/cxfa_image.cpp
index c67bf3e..dc447ba 100644
--- a/xfa/fxfa/parser/cxfa_image.cpp
+++ b/xfa/fxfa/parser/cxfa_image.cpp
@@ -23,8 +23,6 @@
     {XFA_Attribute::Href, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kImageName[] = L"image";
-
 }  // namespace
 
 CXFA_Image::CXFA_Image(CXFA_Document* doc, XFA_PacketType packet)
@@ -34,10 +32,9 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Image,
                 nullptr,
-                kImageAttributeData,
-                kImageName) {}
+                kImageAttributeData) {}
 
-CXFA_Image::~CXFA_Image() {}
+CXFA_Image::~CXFA_Image() = default;
 
 XFA_AttributeValue CXFA_Image::GetAspect() {
   return JSObject()->GetEnum(XFA_Attribute::Aspect);
diff --git a/xfa/fxfa/parser/cxfa_imageedit.cpp b/xfa/fxfa/parser/cxfa_imageedit.cpp
index cd660f1..b90aee0 100644
--- a/xfa/fxfa/parser/cxfa_imageedit.cpp
+++ b/xfa/fxfa/parser/cxfa_imageedit.cpp
@@ -16,6 +16,7 @@
     {XFA_Element::Border, 1, 0},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kImageEditAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -24,8 +25,6 @@
      (void*)XFA_AttributeValue::Link},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kImageEditName[] = L"imageEdit";
-
 }  // namespace
 
 CXFA_ImageEdit::CXFA_ImageEdit(CXFA_Document* doc, XFA_PacketType packet)
@@ -36,10 +35,9 @@
                 XFA_Element::ImageEdit,
                 kImageEditPropertyData,
                 kImageEditAttributeData,
-                kImageEditName,
                 pdfium::MakeUnique<CJX_ImageEdit>(this)) {}
 
-CXFA_ImageEdit::~CXFA_ImageEdit() {}
+CXFA_ImageEdit::~CXFA_ImageEdit() = default;
 
 XFA_Element CXFA_ImageEdit::GetValueNodeType() const {
   return XFA_Element::Image;
diff --git a/xfa/fxfa/parser/cxfa_includexdpcontent.cpp b/xfa/fxfa/parser/cxfa_includexdpcontent.cpp
index b71bb00..b476d26 100644
--- a/xfa/fxfa/parser/cxfa_includexdpcontent.cpp
+++ b/xfa/fxfa/parser/cxfa_includexdpcontent.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kIncludeXDPContentName[] = L"includeXDPContent";
-
 }  // namespace
 
 CXFA_IncludeXDPContent::CXFA_IncludeXDPContent(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::IncludeXDPContent,
                 nullptr,
-                kIncludeXDPContentAttributeData,
-                kIncludeXDPContentName) {}
+                kIncludeXDPContentAttributeData) {}
 
-CXFA_IncludeXDPContent::~CXFA_IncludeXDPContent() {}
+CXFA_IncludeXDPContent::~CXFA_IncludeXDPContent() = default;
diff --git a/xfa/fxfa/parser/cxfa_incrementalload.cpp b/xfa/fxfa/parser/cxfa_incrementalload.cpp
index 5a1f345..8700231 100644
--- a/xfa/fxfa/parser/cxfa_incrementalload.cpp
+++ b/xfa/fxfa/parser/cxfa_incrementalload.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kIncrementalLoadName[] = L"incrementalLoad";
-
 }  // namespace
 
 CXFA_IncrementalLoad::CXFA_IncrementalLoad(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::IncrementalLoad,
                 nullptr,
-                kIncrementalLoadAttributeData,
-                kIncrementalLoadName) {}
+                kIncrementalLoadAttributeData) {}
 
-CXFA_IncrementalLoad::~CXFA_IncrementalLoad() {}
+CXFA_IncrementalLoad::~CXFA_IncrementalLoad() = default;
diff --git a/xfa/fxfa/parser/cxfa_incrementalmerge.cpp b/xfa/fxfa/parser/cxfa_incrementalmerge.cpp
index 000d86e..6fc247b 100644
--- a/xfa/fxfa/parser/cxfa_incrementalmerge.cpp
+++ b/xfa/fxfa/parser/cxfa_incrementalmerge.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kIncrementalMergeName[] = L"incrementalMerge";
-
 }  // namespace
 
 CXFA_IncrementalMerge::CXFA_IncrementalMerge(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::IncrementalMerge,
                 nullptr,
-                kIncrementalMergeAttributeData,
-                kIncrementalMergeName) {}
+                kIncrementalMergeAttributeData) {}
 
-CXFA_IncrementalMerge::~CXFA_IncrementalMerge() {}
+CXFA_IncrementalMerge::~CXFA_IncrementalMerge() = default;
diff --git a/xfa/fxfa/parser/cxfa_insert.cpp b/xfa/fxfa/parser/cxfa_insert.cpp
index efc80ee..759b301 100644
--- a/xfa/fxfa/parser/cxfa_insert.cpp
+++ b/xfa/fxfa/parser/cxfa_insert.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kInsertName[] = L"insert";
-
 }  // namespace
 
 CXFA_Insert::CXFA_Insert(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::Insert,
                 nullptr,
                 kInsertAttributeData,
-                kInsertName,
                 pdfium::MakeUnique<CJX_Insert>(this)) {}
 
-CXFA_Insert::~CXFA_Insert() {}
+CXFA_Insert::~CXFA_Insert() = default;
diff --git a/xfa/fxfa/parser/cxfa_instancemanager.cpp b/xfa/fxfa/parser/cxfa_instancemanager.cpp
index ac74a32..6e2129a 100644
--- a/xfa/fxfa/parser/cxfa_instancemanager.cpp
+++ b/xfa/fxfa/parser/cxfa_instancemanager.cpp
@@ -14,12 +14,11 @@
 const CXFA_Node::PropertyData kInstanceManagerPropertyData[] = {
     {XFA_Element::Occur, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kInstanceManagerAttributeData[] = {
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kInstanceManagerName[] = L"instanceManager";
-
 }  // namespace
 
 CXFA_InstanceManager::CXFA_InstanceManager(CXFA_Document* doc,
@@ -31,7 +30,6 @@
                 XFA_Element::InstanceManager,
                 kInstanceManagerPropertyData,
                 kInstanceManagerAttributeData,
-                kInstanceManagerName,
                 pdfium::MakeUnique<CJX_InstanceManager>(this)) {}
 
-CXFA_InstanceManager::~CXFA_InstanceManager() {}
+CXFA_InstanceManager::~CXFA_InstanceManager() = default;
diff --git a/xfa/fxfa/parser/cxfa_integer.cpp b/xfa/fxfa/parser/cxfa_integer.cpp
index 0e87fd3..b2938a1 100644
--- a/xfa/fxfa/parser/cxfa_integer.cpp
+++ b/xfa/fxfa/parser/cxfa_integer.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kIntegerName[] = L"integer";
-
 }  // namespace
 
 CXFA_Integer::CXFA_Integer(CXFA_Document* doc, XFA_PacketType packet)
@@ -31,7 +29,6 @@
                 XFA_Element::Integer,
                 nullptr,
                 kIntegerAttributeData,
-                kIntegerName,
                 pdfium::MakeUnique<CJX_Integer>(this)) {}
 
-CXFA_Integer::~CXFA_Integer() {}
+CXFA_Integer::~CXFA_Integer() = default;
diff --git a/xfa/fxfa/parser/cxfa_interactive.cpp b/xfa/fxfa/parser/cxfa_interactive.cpp
index 135ca01..bfc6ba9 100644
--- a/xfa/fxfa/parser/cxfa_interactive.cpp
+++ b/xfa/fxfa/parser/cxfa_interactive.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kInteractiveName[] = L"interactive";
-
 }  // namespace
 
 CXFA_Interactive::CXFA_Interactive(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Interactive,
                 nullptr,
-                kInteractiveAttributeData,
-                kInteractiveName) {}
+                kInteractiveAttributeData) {}
 
 CXFA_Interactive::~CXFA_Interactive() {}
diff --git a/xfa/fxfa/parser/cxfa_issuers.cpp b/xfa/fxfa/parser/cxfa_issuers.cpp
index dda1aa5..fb28215 100644
--- a/xfa/fxfa/parser/cxfa_issuers.cpp
+++ b/xfa/fxfa/parser/cxfa_issuers.cpp
@@ -19,8 +19,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kIssuersName[] = L"issuers";
-
 }  // namespace
 
 CXFA_Issuers::CXFA_Issuers(CXFA_Document* doc, XFA_PacketType packet)
@@ -31,7 +29,6 @@
                 XFA_Element::Issuers,
                 nullptr,
                 kIssuersAttributeData,
-                kIssuersName,
                 pdfium::MakeUnique<CJX_Issuers>(this)) {}
 
-CXFA_Issuers::~CXFA_Issuers() {}
+CXFA_Issuers::~CXFA_Issuers() = default;
diff --git a/xfa/fxfa/parser/cxfa_items.cpp b/xfa/fxfa/parser/cxfa_items.cpp
index ad2fe1d..6a7aa84 100644
--- a/xfa/fxfa/parser/cxfa_items.cpp
+++ b/xfa/fxfa/parser/cxfa_items.cpp
@@ -22,8 +22,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kItemsName[] = L"items";
-
 }  // namespace
 
 CXFA_Items::CXFA_Items(CXFA_Document* doc, XFA_PacketType packet)
@@ -34,7 +32,6 @@
                 XFA_Element::Items,
                 nullptr,
                 kItemsAttributeData,
-                kItemsName,
                 pdfium::MakeUnique<CJX_Items>(this)) {}
 
-CXFA_Items::~CXFA_Items() {}
+CXFA_Items::~CXFA_Items() = default;
diff --git a/xfa/fxfa/parser/cxfa_jog.cpp b/xfa/fxfa/parser/cxfa_jog.cpp
index 31673ad..be73760 100644
--- a/xfa/fxfa/parser/cxfa_jog.cpp
+++ b/xfa/fxfa/parser/cxfa_jog.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kJogName[] = L"jog";
-
 }  // namespace
 
 CXFA_Jog::CXFA_Jog(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Jog,
                 nullptr,
-                kJogAttributeData,
-                kJogName) {}
+                kJogAttributeData) {}
 
-CXFA_Jog::~CXFA_Jog() {}
+CXFA_Jog::~CXFA_Jog() = default;
diff --git a/xfa/fxfa/parser/cxfa_keep.cpp b/xfa/fxfa/parser/cxfa_keep.cpp
index e58fa2c..8135d97 100644
--- a/xfa/fxfa/parser/cxfa_keep.cpp
+++ b/xfa/fxfa/parser/cxfa_keep.cpp
@@ -14,6 +14,7 @@
 const CXFA_Node::PropertyData kKeepPropertyData[] = {
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kKeepAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Next, XFA_AttributeType::Enum,
@@ -26,8 +27,6 @@
      (void*)XFA_AttributeValue::None},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kKeepName[] = L"keep";
-
 }  // namespace
 
 CXFA_Keep::CXFA_Keep(CXFA_Document* doc, XFA_PacketType packet)
@@ -38,7 +37,6 @@
                 XFA_Element::Keep,
                 kKeepPropertyData,
                 kKeepAttributeData,
-                kKeepName,
                 pdfium::MakeUnique<CJX_Keep>(this)) {}
 
-CXFA_Keep::~CXFA_Keep() {}
+CXFA_Keep::~CXFA_Keep() = default;
diff --git a/xfa/fxfa/parser/cxfa_keyusage.cpp b/xfa/fxfa/parser/cxfa_keyusage.cpp
index 6f8ee25..62d11d2 100644
--- a/xfa/fxfa/parser/cxfa_keyusage.cpp
+++ b/xfa/fxfa/parser/cxfa_keyusage.cpp
@@ -28,8 +28,6 @@
     {XFA_Attribute::DecipherOnly, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kKeyUsageName[] = L"keyUsage";
-
 }  // namespace
 
 CXFA_KeyUsage::CXFA_KeyUsage(CXFA_Document* doc, XFA_PacketType packet)
@@ -40,7 +38,6 @@
                 XFA_Element::KeyUsage,
                 nullptr,
                 kKeyUsageAttributeData,
-                kKeyUsageName,
                 pdfium::MakeUnique<CJX_KeyUsage>(this)) {}
 
-CXFA_KeyUsage::~CXFA_KeyUsage() {}
+CXFA_KeyUsage::~CXFA_KeyUsage() = default;
diff --git a/xfa/fxfa/parser/cxfa_labelprinter.cpp b/xfa/fxfa/parser/cxfa_labelprinter.cpp
index fa2256d..4d80384 100644
--- a/xfa/fxfa/parser/cxfa_labelprinter.cpp
+++ b/xfa/fxfa/parser/cxfa_labelprinter.cpp
@@ -14,6 +14,7 @@
     {XFA_Element::BatchOutput, 1, 0},
     {XFA_Element::FlipLabel, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kLabelPrinterAttributeData[] = {
     {XFA_Attribute::Name, XFA_AttributeType::Enum,
      (void*)XFA_AttributeValue::Zpl},
@@ -21,8 +22,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kLabelPrinterName[] = L"labelPrinter";
-
 }  // namespace
 
 CXFA_LabelPrinter::CXFA_LabelPrinter(CXFA_Document* doc, XFA_PacketType packet)
@@ -32,7 +31,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::LabelPrinter,
                 kLabelPrinterPropertyData,
-                kLabelPrinterAttributeData,
-                kLabelPrinterName) {}
+                kLabelPrinterAttributeData) {}
 
-CXFA_LabelPrinter::~CXFA_LabelPrinter() {}
+CXFA_LabelPrinter::~CXFA_LabelPrinter() = default;
diff --git a/xfa/fxfa/parser/cxfa_layout.cpp b/xfa/fxfa/parser/cxfa_layout.cpp
index ef742da..b200c6d 100644
--- a/xfa/fxfa/parser/cxfa_layout.cpp
+++ b/xfa/fxfa/parser/cxfa_layout.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kLayoutName[] = L"layout";
-
 }  // namespace
 
 CXFA_Layout::CXFA_Layout(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Layout,
                 nullptr,
-                kLayoutAttributeData,
-                kLayoutName) {}
+                kLayoutAttributeData) {}
 
-CXFA_Layout::~CXFA_Layout() {}
+CXFA_Layout::~CXFA_Layout() = default;
diff --git a/xfa/fxfa/parser/cxfa_level.cpp b/xfa/fxfa/parser/cxfa_level.cpp
index fca705a..ee1747f 100644
--- a/xfa/fxfa/parser/cxfa_level.cpp
+++ b/xfa/fxfa/parser/cxfa_level.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kLevelName[] = L"level";
-
 }  // namespace
 
 CXFA_Level::CXFA_Level(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Level,
                 nullptr,
-                kLevelAttributeData,
-                kLevelName) {}
+                kLevelAttributeData) {}
 
-CXFA_Level::~CXFA_Level() {}
+CXFA_Level::~CXFA_Level() = default;
diff --git a/xfa/fxfa/parser/cxfa_line.cpp b/xfa/fxfa/parser/cxfa_line.cpp
index 2378557..65e4b08 100644
--- a/xfa/fxfa/parser/cxfa_line.cpp
+++ b/xfa/fxfa/parser/cxfa_line.cpp
@@ -16,6 +16,7 @@
 const CXFA_Node::PropertyData kLinePropertyData[] = {
     {XFA_Element::Edge, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kLineAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -26,8 +27,6 @@
      (void*)XFA_AttributeValue::Even},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kLineName[] = L"line";
-
 }  // namespace
 
 CXFA_Line::CXFA_Line(CXFA_Document* doc, XFA_PacketType packet)
@@ -38,10 +37,9 @@
                 XFA_Element::Line,
                 kLinePropertyData,
                 kLineAttributeData,
-                kLineName,
                 pdfium::MakeUnique<CJX_Line>(this)) {}
 
-CXFA_Line::~CXFA_Line() {}
+CXFA_Line::~CXFA_Line() = default;
 
 XFA_AttributeValue CXFA_Line::GetHand() {
   return JSObject()->GetEnum(XFA_Attribute::Hand);
diff --git a/xfa/fxfa/parser/cxfa_linear.cpp b/xfa/fxfa/parser/cxfa_linear.cpp
index 920aa47..0f79b49 100644
--- a/xfa/fxfa/parser/cxfa_linear.cpp
+++ b/xfa/fxfa/parser/cxfa_linear.cpp
@@ -17,6 +17,7 @@
     {XFA_Element::Color, 1, 0},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kLinearAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -25,8 +26,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kLinearName[] = L"linear";
-
 }  // namespace
 
 CXFA_Linear::CXFA_Linear(CXFA_Document* doc, XFA_PacketType packet)
@@ -37,10 +36,9 @@
                 XFA_Element::Linear,
                 kLinearPropertyData,
                 kLinearAttributeData,
-                kLinearName,
                 pdfium::MakeUnique<CJX_Linear>(this)) {}
 
-CXFA_Linear::~CXFA_Linear() {}
+CXFA_Linear::~CXFA_Linear() = default;
 
 XFA_AttributeValue CXFA_Linear::GetType() {
   return JSObject()
diff --git a/xfa/fxfa/parser/cxfa_linearized.cpp b/xfa/fxfa/parser/cxfa_linearized.cpp
index a16d8a3..fe2bd2c 100644
--- a/xfa/fxfa/parser/cxfa_linearized.cpp
+++ b/xfa/fxfa/parser/cxfa_linearized.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kLinearizedName[] = L"linearized";
-
 }  // namespace
 
 CXFA_Linearized::CXFA_Linearized(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Linearized,
                 nullptr,
-                kLinearizedAttributeData,
-                kLinearizedName) {}
+                kLinearizedAttributeData) {}
 
-CXFA_Linearized::~CXFA_Linearized() {}
+CXFA_Linearized::~CXFA_Linearized() = default;
diff --git a/xfa/fxfa/parser/cxfa_list.cpp b/xfa/fxfa/parser/cxfa_list.cpp
index 6f5fc29..e2e755c 100644
--- a/xfa/fxfa/parser/cxfa_list.cpp
+++ b/xfa/fxfa/parser/cxfa_list.cpp
@@ -18,15 +18,13 @@
     : CXFA_List(pDocument,
                 XFA_ObjectType::List,
                 XFA_Element::List,
-                WideStringView(L"list"),
                 std::move(obj)) {}
 
 CXFA_List::CXFA_List(CXFA_Document* pDocument,
                      XFA_ObjectType objectType,
                      XFA_Element eType,
-                     const WideStringView& elementName,
                      std::unique_ptr<CJX_Object> obj)
-    : CXFA_Object(pDocument, objectType, eType, elementName, std::move(obj)) {
+    : CXFA_Object(pDocument, objectType, eType, std::move(obj)) {
   m_pDocument->GetScriptContext()->AddToCacheList(
       std::unique_ptr<CXFA_List>(this));
 }
diff --git a/xfa/fxfa/parser/cxfa_list.h b/xfa/fxfa/parser/cxfa_list.h
index 66182863..bfe6508 100644
--- a/xfa/fxfa/parser/cxfa_list.h
+++ b/xfa/fxfa/parser/cxfa_list.h
@@ -28,7 +28,6 @@
   CXFA_List(CXFA_Document* pDocument,
             XFA_ObjectType objectType,
             XFA_Element eType,
-            const WideStringView& elementName,
             std::unique_ptr<CJX_Object> obj);
 };
 
diff --git a/xfa/fxfa/parser/cxfa_locale.cpp b/xfa/fxfa/parser/cxfa_locale.cpp
index d4af887..ec62397 100644
--- a/xfa/fxfa/parser/cxfa_locale.cpp
+++ b/xfa/fxfa/parser/cxfa_locale.cpp
@@ -14,14 +14,13 @@
     {XFA_Element::DateTimeSymbols, 1, 0}, {XFA_Element::NumberPatterns, 1, 0},
     {XFA_Element::NumberSymbols, 1, 0},   {XFA_Element::TimePatterns, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kLocaleAttributeData[] = {
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kLocaleName[] = L"locale";
-
 }  // namespace
 
 CXFA_Locale::CXFA_Locale(CXFA_Document* doc, XFA_PacketType packet)
@@ -31,7 +30,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Locale,
                 kLocalePropertyData,
-                kLocaleAttributeData,
-                kLocaleName) {}
+                kLocaleAttributeData) {}
 
-CXFA_Locale::~CXFA_Locale() {}
+CXFA_Locale::~CXFA_Locale() = default;
diff --git a/xfa/fxfa/parser/cxfa_localeset.cpp b/xfa/fxfa/parser/cxfa_localeset.cpp
index 6829284..95c7e18 100644
--- a/xfa/fxfa/parser/cxfa_localeset.cpp
+++ b/xfa/fxfa/parser/cxfa_localeset.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kLocaleSetName[] = L"localeSet";
-
 }  // namespace
 
 CXFA_LocaleSet::CXFA_LocaleSet(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ModelNode,
                 XFA_Element::LocaleSet,
                 nullptr,
-                kLocaleSetAttributeData,
-                kLocaleSetName) {}
+                kLocaleSetAttributeData) {}
 
-CXFA_LocaleSet::~CXFA_LocaleSet() {}
+CXFA_LocaleSet::~CXFA_LocaleSet() = default;
diff --git a/xfa/fxfa/parser/cxfa_lockdocument.cpp b/xfa/fxfa/parser/cxfa_lockdocument.cpp
index 3364f69..02ca6a0 100644
--- a/xfa/fxfa/parser/cxfa_lockdocument.cpp
+++ b/xfa/fxfa/parser/cxfa_lockdocument.cpp
@@ -16,8 +16,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kLockDocumentName[] = L"lockDocument";
-
 }  // namespace
 
 CXFA_LockDocument::CXFA_LockDocument(CXFA_Document* doc, XFA_PacketType packet)
@@ -27,7 +25,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::LockDocument,
                 nullptr,
-                kLockDocumentAttributeData,
-                kLockDocumentName) {}
+                kLockDocumentAttributeData) {}
 
-CXFA_LockDocument::~CXFA_LockDocument() {}
+CXFA_LockDocument::~CXFA_LockDocument() = default;
diff --git a/xfa/fxfa/parser/cxfa_log.cpp b/xfa/fxfa/parser/cxfa_log.cpp
index be68d70..0a71ad2 100644
--- a/xfa/fxfa/parser/cxfa_log.cpp
+++ b/xfa/fxfa/parser/cxfa_log.cpp
@@ -14,13 +14,12 @@
     {XFA_Element::Mode, 1, 0},
     {XFA_Element::Threshold, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kLogAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kLogName[] = L"log";
-
 }  // namespace
 
 CXFA_Log::CXFA_Log(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +29,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Log,
                 kLogPropertyData,
-                kLogAttributeData,
-                kLogName) {}
+                kLogAttributeData) {}
 
-CXFA_Log::~CXFA_Log() {}
+CXFA_Log::~CXFA_Log() = default;
diff --git a/xfa/fxfa/parser/cxfa_manifest.cpp b/xfa/fxfa/parser/cxfa_manifest.cpp
index 8d9a9fa..7442c13 100644
--- a/xfa/fxfa/parser/cxfa_manifest.cpp
+++ b/xfa/fxfa/parser/cxfa_manifest.cpp
@@ -14,6 +14,7 @@
 const CXFA_Node::PropertyData kManifestPropertyData[] = {
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kManifestAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
@@ -23,8 +24,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kManifestName[] = L"manifest";
-
 }  // namespace
 
 CXFA_Manifest::CXFA_Manifest(CXFA_Document* doc, XFA_PacketType packet)
@@ -35,7 +34,6 @@
                 XFA_Element::Manifest,
                 kManifestPropertyData,
                 kManifestAttributeData,
-                kManifestName,
                 pdfium::MakeUnique<CJX_Manifest>(this)) {}
 
-CXFA_Manifest::~CXFA_Manifest() {}
+CXFA_Manifest::~CXFA_Manifest() = default;
diff --git a/xfa/fxfa/parser/cxfa_map.cpp b/xfa/fxfa/parser/cxfa_map.cpp
index fb264a5..36909d0 100644
--- a/xfa/fxfa/parser/cxfa_map.cpp
+++ b/xfa/fxfa/parser/cxfa_map.cpp
@@ -22,8 +22,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kMapName[] = L"map";
-
 }  // namespace
 
 CXFA_Map::CXFA_Map(CXFA_Document* doc, XFA_PacketType packet)
@@ -34,7 +32,6 @@
                 XFA_Element::Map,
                 nullptr,
                 kMapAttributeData,
-                kMapName,
                 pdfium::MakeUnique<CJX_Map>(this)) {}
 
-CXFA_Map::~CXFA_Map() {}
+CXFA_Map::~CXFA_Map() = default;
diff --git a/xfa/fxfa/parser/cxfa_margin.cpp b/xfa/fxfa/parser/cxfa_margin.cpp
index 56bcc13..27277a9 100644
--- a/xfa/fxfa/parser/cxfa_margin.cpp
+++ b/xfa/fxfa/parser/cxfa_margin.cpp
@@ -14,6 +14,7 @@
 const CXFA_Node::PropertyData kMarginPropertyData[] = {
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kMarginAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -24,8 +25,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kMarginName[] = L"margin";
-
 }  // namespace
 
 CXFA_Margin::CXFA_Margin(CXFA_Document* doc, XFA_PacketType packet)
@@ -36,10 +35,9 @@
                 XFA_Element::Margin,
                 kMarginPropertyData,
                 kMarginAttributeData,
-                kMarginName,
                 pdfium::MakeUnique<CJX_Margin>(this)) {}
 
-CXFA_Margin::~CXFA_Margin() {}
+CXFA_Margin::~CXFA_Margin() = default;
 
 float CXFA_Margin::GetLeftInset() const {
   return TryLeftInset().value_or(0);
diff --git a/xfa/fxfa/parser/cxfa_mdp.cpp b/xfa/fxfa/parser/cxfa_mdp.cpp
index f64822f..ab3b0f7 100644
--- a/xfa/fxfa/parser/cxfa_mdp.cpp
+++ b/xfa/fxfa/parser/cxfa_mdp.cpp
@@ -20,8 +20,6 @@
     {XFA_Attribute::Permissions, XFA_AttributeType::Integer, (void*)2},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kMdpName[] = L"mdp";
-
 }  // namespace
 
 CXFA_Mdp::CXFA_Mdp(CXFA_Document* doc, XFA_PacketType packet)
@@ -32,7 +30,6 @@
                 XFA_Element::Mdp,
                 nullptr,
                 kMdpAttributeData,
-                kMdpName,
                 pdfium::MakeUnique<CJX_Mdp>(this)) {}
 
-CXFA_Mdp::~CXFA_Mdp() {}
+CXFA_Mdp::~CXFA_Mdp() = default;
diff --git a/xfa/fxfa/parser/cxfa_medium.cpp b/xfa/fxfa/parser/cxfa_medium.cpp
index 7e47e83..45c2a54 100644
--- a/xfa/fxfa/parser/cxfa_medium.cpp
+++ b/xfa/fxfa/parser/cxfa_medium.cpp
@@ -27,8 +27,6 @@
     {XFA_Attribute::Long, XFA_AttributeType::Measure, (void*)L"0in"},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kMediumName[] = L"medium";
-
 }  // namespace
 
 CXFA_Medium::CXFA_Medium(CXFA_Document* doc, XFA_PacketType packet)
@@ -39,7 +37,6 @@
                 XFA_Element::Medium,
                 nullptr,
                 kMediumAttributeData,
-                kMediumName,
                 pdfium::MakeUnique<CJX_Medium>(this)) {}
 
-CXFA_Medium::~CXFA_Medium() {}
+CXFA_Medium::~CXFA_Medium() = default;
diff --git a/xfa/fxfa/parser/cxfa_mediuminfo.cpp b/xfa/fxfa/parser/cxfa_mediuminfo.cpp
index b17bd6f..8725159 100644
--- a/xfa/fxfa/parser/cxfa_mediuminfo.cpp
+++ b/xfa/fxfa/parser/cxfa_mediuminfo.cpp
@@ -11,13 +11,12 @@
 const CXFA_Node::PropertyData kMediumInfoPropertyData[] = {
     {XFA_Element::Map, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kMediumInfoAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kMediumInfoName[] = L"mediumInfo";
-
 }  // namespace
 
 CXFA_MediumInfo::CXFA_MediumInfo(CXFA_Document* doc, XFA_PacketType packet)
@@ -27,7 +26,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::MediumInfo,
                 kMediumInfoPropertyData,
-                kMediumInfoAttributeData,
-                kMediumInfoName) {}
+                kMediumInfoAttributeData) {}
 
-CXFA_MediumInfo::~CXFA_MediumInfo() {}
+CXFA_MediumInfo::~CXFA_MediumInfo() = default;
diff --git a/xfa/fxfa/parser/cxfa_meridiem.cpp b/xfa/fxfa/parser/cxfa_meridiem.cpp
index 3e88b03..d4138e0 100644
--- a/xfa/fxfa/parser/cxfa_meridiem.cpp
+++ b/xfa/fxfa/parser/cxfa_meridiem.cpp
@@ -6,12 +6,6 @@
 
 #include "xfa/fxfa/parser/cxfa_meridiem.h"
 
-namespace {
-
-constexpr wchar_t kMeridiemName[] = L"meridiem";
-
-}  // namespace
-
 CXFA_Meridiem::CXFA_Meridiem(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
                 packet,
@@ -19,7 +13,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Meridiem,
                 nullptr,
-                nullptr,
-                kMeridiemName) {}
+                nullptr) {}
 
-CXFA_Meridiem::~CXFA_Meridiem() {}
+CXFA_Meridiem::~CXFA_Meridiem() = default;
diff --git a/xfa/fxfa/parser/cxfa_meridiemnames.cpp b/xfa/fxfa/parser/cxfa_meridiemnames.cpp
index a5f2e4d..6f6788e 100644
--- a/xfa/fxfa/parser/cxfa_meridiemnames.cpp
+++ b/xfa/fxfa/parser/cxfa_meridiemnames.cpp
@@ -12,8 +12,6 @@
     {XFA_Element::Meridiem, 2, 0},
     {XFA_Element::Unknown, 0, 0}};
 
-constexpr wchar_t kMeridiemNamesName[] = L"meridiemNames";
-
 }  // namespace
 
 CXFA_MeridiemNames::CXFA_MeridiemNames(CXFA_Document* doc,
@@ -24,7 +22,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::MeridiemNames,
                 kMeridiemNamesPropertyData,
-                nullptr,
-                kMeridiemNamesName) {}
+                nullptr) {}
 
-CXFA_MeridiemNames::~CXFA_MeridiemNames() {}
+CXFA_MeridiemNames::~CXFA_MeridiemNames() = default;
diff --git a/xfa/fxfa/parser/cxfa_message.cpp b/xfa/fxfa/parser/cxfa_message.cpp
index aa5a378..529ddf4 100644
--- a/xfa/fxfa/parser/cxfa_message.cpp
+++ b/xfa/fxfa/parser/cxfa_message.cpp
@@ -15,6 +15,7 @@
     {XFA_Element::MsgId, 1, 0},
     {XFA_Element::Severity, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kMessageAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -23,8 +24,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kMessageName[] = L"message";
-
 }  // namespace
 
 CXFA_Message::CXFA_Message(CXFA_Document* doc, XFA_PacketType packet)
@@ -36,7 +35,6 @@
           XFA_Element::Message,
           kMessagePropertyData,
           kMessageAttributeData,
-          kMessageName,
           pdfium::MakeUnique<CJX_Message>(this)) {}
 
-CXFA_Message::~CXFA_Message() {}
+CXFA_Message::~CXFA_Message() = default;
diff --git a/xfa/fxfa/parser/cxfa_messaging.cpp b/xfa/fxfa/parser/cxfa_messaging.cpp
index 68401b9..e97a165 100644
--- a/xfa/fxfa/parser/cxfa_messaging.cpp
+++ b/xfa/fxfa/parser/cxfa_messaging.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kMessagingName[] = L"messaging";
-
 }  // namespace
 
 CXFA_Messaging::CXFA_Messaging(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Messaging,
                 nullptr,
-                kMessagingAttributeData,
-                kMessagingName) {}
+                kMessagingAttributeData) {}
 
-CXFA_Messaging::~CXFA_Messaging() {}
+CXFA_Messaging::~CXFA_Messaging() = default;
diff --git a/xfa/fxfa/parser/cxfa_mode.cpp b/xfa/fxfa/parser/cxfa_mode.cpp
index bdca52e..b936b07 100644
--- a/xfa/fxfa/parser/cxfa_mode.cpp
+++ b/xfa/fxfa/parser/cxfa_mode.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kModeName[] = L"mode";
-
 }  // namespace
 
 CXFA_Mode::CXFA_Mode(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Mode,
                 nullptr,
-                kModeAttributeData,
-                kModeName) {}
+                kModeAttributeData) {}
 
-CXFA_Mode::~CXFA_Mode() {}
+CXFA_Mode::~CXFA_Mode() = default;
diff --git a/xfa/fxfa/parser/cxfa_modifyannots.cpp b/xfa/fxfa/parser/cxfa_modifyannots.cpp
index ca2c888..5d1296d 100644
--- a/xfa/fxfa/parser/cxfa_modifyannots.cpp
+++ b/xfa/fxfa/parser/cxfa_modifyannots.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kModifyAnnotsName[] = L"modifyAnnots";
-
 }  // namespace
 
 CXFA_ModifyAnnots::CXFA_ModifyAnnots(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::ModifyAnnots,
                 nullptr,
-                kModifyAnnotsAttributeData,
-                kModifyAnnotsName) {}
+                kModifyAnnotsAttributeData) {}
 
-CXFA_ModifyAnnots::~CXFA_ModifyAnnots() {}
+CXFA_ModifyAnnots::~CXFA_ModifyAnnots() = default;
diff --git a/xfa/fxfa/parser/cxfa_month.cpp b/xfa/fxfa/parser/cxfa_month.cpp
index 63be429..78704e3 100644
--- a/xfa/fxfa/parser/cxfa_month.cpp
+++ b/xfa/fxfa/parser/cxfa_month.cpp
@@ -6,12 +6,6 @@
 
 #include "xfa/fxfa/parser/cxfa_month.h"
 
-namespace {
-
-constexpr wchar_t kMonthName[] = L"month";
-
-}  // namespace
-
 CXFA_Month::CXFA_Month(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
                 packet,
@@ -19,7 +13,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Month,
                 nullptr,
-                nullptr,
-                kMonthName) {}
+                nullptr) {}
 
-CXFA_Month::~CXFA_Month() {}
+CXFA_Month::~CXFA_Month() = default;
diff --git a/xfa/fxfa/parser/cxfa_monthnames.cpp b/xfa/fxfa/parser/cxfa_monthnames.cpp
index 04fba6b..b8e586a 100644
--- a/xfa/fxfa/parser/cxfa_monthnames.cpp
+++ b/xfa/fxfa/parser/cxfa_monthnames.cpp
@@ -11,12 +11,11 @@
 const CXFA_Node::PropertyData kMonthNamesPropertyData[] = {
     {XFA_Element::Month, 12, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kMonthNamesAttributeData[] = {
     {XFA_Attribute::Abbr, XFA_AttributeType::Boolean, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kMonthNamesName[] = L"monthNames";
-
 }  // namespace
 
 CXFA_MonthNames::CXFA_MonthNames(CXFA_Document* doc, XFA_PacketType packet)
@@ -26,7 +25,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::MonthNames,
                 kMonthNamesPropertyData,
-                kMonthNamesAttributeData,
-                kMonthNamesName) {}
+                kMonthNamesAttributeData) {}
 
-CXFA_MonthNames::~CXFA_MonthNames() {}
+CXFA_MonthNames::~CXFA_MonthNames() = default;
diff --git a/xfa/fxfa/parser/cxfa_msgid.cpp b/xfa/fxfa/parser/cxfa_msgid.cpp
index b9a771e..51d678a 100644
--- a/xfa/fxfa/parser/cxfa_msgid.cpp
+++ b/xfa/fxfa/parser/cxfa_msgid.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kMsgIdName[] = L"msgId";
-
 }  // namespace
 
 CXFA_MsgId::CXFA_MsgId(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::MsgId,
                 nullptr,
-                kMsgIdAttributeData,
-                kMsgIdName) {}
+                kMsgIdAttributeData) {}
 
-CXFA_MsgId::~CXFA_MsgId() {}
+CXFA_MsgId::~CXFA_MsgId() = default;
diff --git a/xfa/fxfa/parser/cxfa_nameattr.cpp b/xfa/fxfa/parser/cxfa_nameattr.cpp
index 1bfb2f5..0df7a02 100644
--- a/xfa/fxfa/parser/cxfa_nameattr.cpp
+++ b/xfa/fxfa/parser/cxfa_nameattr.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kNameAttrName[] = L"nameAttr";
-
 }  // namespace
 
 CXFA_NameAttr::CXFA_NameAttr(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::NameAttr,
                 nullptr,
-                kNameAttrAttributeData,
-                kNameAttrName) {}
+                kNameAttrAttributeData) {}
 
-CXFA_NameAttr::~CXFA_NameAttr() {}
+CXFA_NameAttr::~CXFA_NameAttr() = default;
diff --git a/xfa/fxfa/parser/cxfa_neverembed.cpp b/xfa/fxfa/parser/cxfa_neverembed.cpp
index 7cc0526..4d2e8f3 100644
--- a/xfa/fxfa/parser/cxfa_neverembed.cpp
+++ b/xfa/fxfa/parser/cxfa_neverembed.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kNeverEmbedName[] = L"neverEmbed";
-
 }  // namespace
 
 CXFA_NeverEmbed::CXFA_NeverEmbed(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::NeverEmbed,
                 nullptr,
-                kNeverEmbedAttributeData,
-                kNeverEmbedName) {}
+                kNeverEmbedAttributeData) {}
 
-CXFA_NeverEmbed::~CXFA_NeverEmbed() {}
+CXFA_NeverEmbed::~CXFA_NeverEmbed() = default;
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp
index 8ec8da1..73e6be7 100644
--- a/xfa/fxfa/parser/cxfa_node.cpp
+++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -837,9 +837,8 @@
                      XFA_Element eType,
                      const PropertyData* properties,
                      const AttributeData* attributes,
-                     const WideStringView& elementName,
                      std::unique_ptr<CJX_Object> js_node)
-    : CXFA_Object(pDoc, oType, eType, elementName, std::move(js_node)),
+    : CXFA_Object(pDoc, oType, eType, std::move(js_node)),
       m_Properties(properties),
       m_Attributes(attributes),
       m_ValidPackets(validPackets),
@@ -853,8 +852,7 @@
                      XFA_ObjectType oType,
                      XFA_Element eType,
                      const PropertyData* properties,
-                     const AttributeData* attributes,
-                     const WideStringView& elementName)
+                     const AttributeData* attributes)
     : CXFA_Node(pDoc,
                 ePacket,
                 validPackets,
@@ -862,7 +860,6 @@
                 eType,
                 properties,
                 attributes,
-                elementName,
                 pdfium::MakeUnique<CJX_Node>(this)) {}
 
 CXFA_Node::~CXFA_Node() = default;
@@ -5545,7 +5542,7 @@
       node = pdfium::MakeUnique<CXFA_Signature>(doc, packet);
       break;
     case XFA_Element::ADBE_JSConsole:
-      node = pdfium::MakeUnique<CXFA_aDBE_JSConsole>(doc, packet);
+      node = pdfium::MakeUnique<CXFA_ADBE_JSConsole>(doc, packet);
       break;
     case XFA_Element::Caption:
       node = pdfium::MakeUnique<CXFA_Caption>(doc, packet);
@@ -5650,7 +5647,7 @@
       node = pdfium::MakeUnique<CXFA_EffectiveOutputPolicy>(doc, packet);
       break;
     case XFA_Element::ADBE_JSDebugger:
-      node = pdfium::MakeUnique<CXFA_aDBE_JSDebugger>(doc, packet);
+      node = pdfium::MakeUnique<CXFA_ADBE_JSDebugger>(doc, packet);
       break;
     case XFA_Element::Acrobat7:
       node = pdfium::MakeUnique<CXFA_Acrobat7>(doc, packet);
diff --git a/xfa/fxfa/parser/cxfa_node.h b/xfa/fxfa/parser/cxfa_node.h
index 139587e..0f02e50 100644
--- a/xfa/fxfa/parser/cxfa_node.h
+++ b/xfa/fxfa/parser/cxfa_node.h
@@ -380,7 +380,6 @@
             XFA_Element eType,
             const PropertyData* properties,
             const AttributeData* attributes,
-            const WideStringView& elementName,
             std::unique_ptr<CJX_Object> js_node);
   CXFA_Node(CXFA_Document* pDoc,
             XFA_PacketType ePacket,
@@ -388,8 +387,7 @@
             XFA_ObjectType oType,
             XFA_Element eType,
             const PropertyData* properties,
-            const AttributeData* attributes,
-            const WideStringView& elementName);
+            const AttributeData* attributes);
 
  private:
   void ProcessScriptTestValidate(CXFA_FFDocView* docView,
diff --git a/xfa/fxfa/parser/cxfa_node_unittest.cpp b/xfa/fxfa/parser/cxfa_node_unittest.cpp
index f65c237..d1e016c 100644
--- a/xfa/fxfa/parser/cxfa_node_unittest.cpp
+++ b/xfa/fxfa/parser/cxfa_node_unittest.cpp
@@ -17,10 +17,9 @@
                   XFA_PacketType::Form,
                   (XFA_XDPPACKET_Template | XFA_XDPPACKET_Form),
                   XFA_ObjectType::Node,
-                  XFA_Element::Unknown,
+                  XFA_Element::Node,
                   nullptr,
-                  nullptr,
-                  L"TestNode") {}
+                  nullptr) {}
 
   ~TestNode() override = default;
 };
diff --git a/xfa/fxfa/parser/cxfa_nodehelper.cpp b/xfa/fxfa/parser/cxfa_nodehelper.cpp
index b40572b..2bf1f70 100644
--- a/xfa/fxfa/parser/cxfa_nodehelper.cpp
+++ b/xfa/fxfa/parser/cxfa_nodehelper.cpp
@@ -249,7 +249,7 @@
   bool bIsProperty = NodeIsProperty(refNode);
   if (refNode->IsUnnamed() ||
       (bIsProperty && refNode->GetElementType() != XFA_Element::PageSet)) {
-    ws = refNode->GetClassName();
+    ws = WideString::FromASCII(refNode->GetClassName());
     return WideString::Format(
         L"#%ls[%d]", ws.c_str(),
         GetIndex(refNode, XFA_LOGIC_Transparent, bIsProperty, true));
diff --git a/xfa/fxfa/parser/cxfa_numberofcopies.cpp b/xfa/fxfa/parser/cxfa_numberofcopies.cpp
index fdf2374..66739cf 100644
--- a/xfa/fxfa/parser/cxfa_numberofcopies.cpp
+++ b/xfa/fxfa/parser/cxfa_numberofcopies.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kNumberOfCopiesName[] = L"numberOfCopies";
-
 }  // namespace
 
 CXFA_NumberOfCopies::CXFA_NumberOfCopies(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::NumberOfCopies,
                 nullptr,
-                kNumberOfCopiesAttributeData,
-                kNumberOfCopiesName) {}
+                kNumberOfCopiesAttributeData) {}
 
-CXFA_NumberOfCopies::~CXFA_NumberOfCopies() {}
+CXFA_NumberOfCopies::~CXFA_NumberOfCopies() = default;
diff --git a/xfa/fxfa/parser/cxfa_numberpattern.cpp b/xfa/fxfa/parser/cxfa_numberpattern.cpp
index 4d8ca1b..1968341 100644
--- a/xfa/fxfa/parser/cxfa_numberpattern.cpp
+++ b/xfa/fxfa/parser/cxfa_numberpattern.cpp
@@ -13,8 +13,6 @@
      (void*)XFA_AttributeValue::Numeric},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kNumberPatternName[] = L"numberPattern";
-
 }  // namespace
 
 CXFA_NumberPattern::CXFA_NumberPattern(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::NumberPattern,
                 nullptr,
-                kNumberPatternAttributeData,
-                kNumberPatternName) {}
+                kNumberPatternAttributeData) {}
 
-CXFA_NumberPattern::~CXFA_NumberPattern() {}
+CXFA_NumberPattern::~CXFA_NumberPattern() = default;
diff --git a/xfa/fxfa/parser/cxfa_numberpatterns.cpp b/xfa/fxfa/parser/cxfa_numberpatterns.cpp
index 28dab94..6f448c0 100644
--- a/xfa/fxfa/parser/cxfa_numberpatterns.cpp
+++ b/xfa/fxfa/parser/cxfa_numberpatterns.cpp
@@ -12,8 +12,6 @@
     {XFA_Element::NumberPattern, 4, 0},
     {XFA_Element::Unknown, 0, 0}};
 
-constexpr wchar_t kNumberPatternsName[] = L"numberPatterns";
-
 }  // namespace
 
 CXFA_NumberPatterns::CXFA_NumberPatterns(CXFA_Document* doc,
@@ -24,7 +22,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::NumberPatterns,
                 kNumberPatternsPropertyData,
-                nullptr,
-                kNumberPatternsName) {}
+                nullptr) {}
 
-CXFA_NumberPatterns::~CXFA_NumberPatterns() {}
+CXFA_NumberPatterns::~CXFA_NumberPatterns() = default;
diff --git a/xfa/fxfa/parser/cxfa_numbersymbol.cpp b/xfa/fxfa/parser/cxfa_numbersymbol.cpp
index 582b12b..c65b7db 100644
--- a/xfa/fxfa/parser/cxfa_numbersymbol.cpp
+++ b/xfa/fxfa/parser/cxfa_numbersymbol.cpp
@@ -13,8 +13,6 @@
      (void*)XFA_AttributeValue::Decimal},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kNumberSymbolName[] = L"numberSymbol";
-
 }  // namespace
 
 CXFA_NumberSymbol::CXFA_NumberSymbol(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::NumberSymbol,
                 nullptr,
-                kNumberSymbolAttributeData,
-                kNumberSymbolName) {}
+                kNumberSymbolAttributeData) {}
 
-CXFA_NumberSymbol::~CXFA_NumberSymbol() {}
+CXFA_NumberSymbol::~CXFA_NumberSymbol() = default;
diff --git a/xfa/fxfa/parser/cxfa_numbersymbols.cpp b/xfa/fxfa/parser/cxfa_numbersymbols.cpp
index 959877a..20e1dc0 100644
--- a/xfa/fxfa/parser/cxfa_numbersymbols.cpp
+++ b/xfa/fxfa/parser/cxfa_numbersymbols.cpp
@@ -12,8 +12,6 @@
     {XFA_Element::NumberSymbol, 5, 0},
     {XFA_Element::Unknown, 0, 0}};
 
-constexpr wchar_t kNumberSymbolsName[] = L"numberSymbols";
-
 }  // namespace
 
 CXFA_NumberSymbols::CXFA_NumberSymbols(CXFA_Document* doc,
@@ -24,7 +22,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::NumberSymbols,
                 kNumberSymbolsPropertyData,
-                nullptr,
-                kNumberSymbolsName) {}
+                nullptr) {}
 
-CXFA_NumberSymbols::~CXFA_NumberSymbols() {}
+CXFA_NumberSymbols::~CXFA_NumberSymbols() = default;
diff --git a/xfa/fxfa/parser/cxfa_numericedit.cpp b/xfa/fxfa/parser/cxfa_numericedit.cpp
index 20e0e41..6914594 100644
--- a/xfa/fxfa/parser/cxfa_numericedit.cpp
+++ b/xfa/fxfa/parser/cxfa_numericedit.cpp
@@ -17,6 +17,7 @@
     {XFA_Element::Comb, 1, 0},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kNumericEditAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -25,8 +26,6 @@
      (void*)XFA_AttributeValue::Auto},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kNumericEditName[] = L"numericEdit";
-
 }  // namespace
 
 CXFA_NumericEdit::CXFA_NumericEdit(CXFA_Document* doc, XFA_PacketType packet)
@@ -37,10 +36,9 @@
                 XFA_Element::NumericEdit,
                 kNumericEditPropertyData,
                 kNumericEditAttributeData,
-                kNumericEditName,
                 pdfium::MakeUnique<CJX_NumericEdit>(this)) {}
 
-CXFA_NumericEdit::~CXFA_NumericEdit() {}
+CXFA_NumericEdit::~CXFA_NumericEdit() = default;
 
 XFA_Element CXFA_NumericEdit::GetValueNodeType() const {
   return XFA_Element::Float;
diff --git a/xfa/fxfa/parser/cxfa_object.cpp b/xfa/fxfa/parser/cxfa_object.cpp
index 024dba2..b898f7a 100644
--- a/xfa/fxfa/parser/cxfa_object.cpp
+++ b/xfa/fxfa/parser/cxfa_object.cpp
@@ -17,17 +17,17 @@
 #include "xfa/fxfa/parser/cxfa_node.h"
 #include "xfa/fxfa/parser/cxfa_thisproxy.h"
 #include "xfa/fxfa/parser/cxfa_treelist.h"
+#include "xfa/fxfa/parser/xfa_basic_data.h"
 
 CXFA_Object::CXFA_Object(CXFA_Document* pDocument,
                          XFA_ObjectType objectType,
                          XFA_Element elementType,
-                         const WideStringView& elementName,
                          std::unique_ptr<CJX_Object> jsObject)
     : m_pDocument(pDocument),
       m_objectType(objectType),
       m_elementType(elementType),
-      m_elementNameHash(FX_HashCode_GetW(elementName, false)),
-      m_elementName(elementName),
+      m_elementName(XFA_ElementToName(elementType)),
+      m_elementNameHash(FX_HashCode_GetAsIfW(m_elementName, false)),
       m_pJSObject(std::move(jsObject)) {}
 
 CXFA_Object::~CXFA_Object() = default;
diff --git a/xfa/fxfa/parser/cxfa_object.h b/xfa/fxfa/parser/cxfa_object.h
index 173bf23..71a2d1d 100644
--- a/xfa/fxfa/parser/cxfa_object.h
+++ b/xfa/fxfa/parser/cxfa_object.h
@@ -85,7 +85,7 @@
   }
 
   XFA_Element GetElementType() const { return m_elementType; }
-  WideStringView GetClassName() const { return m_elementName; }
+  ByteStringView GetClassName() const { return m_elementName; }
   uint32_t GetClassHashCode() const { return m_elementNameHash; }
 
   WideString GetSOMExpression();
@@ -94,14 +94,13 @@
   CXFA_Object(CXFA_Document* pDocument,
               XFA_ObjectType objectType,
               XFA_Element eType,
-              const WideStringView& elementName,
               std::unique_ptr<CJX_Object> jsObject);
 
   UnownedPtr<CXFA_Document> const m_pDocument;
   const XFA_ObjectType m_objectType;
   const XFA_Element m_elementType;
+  const ByteStringView m_elementName;
   const uint32_t m_elementNameHash;
-  const WideStringView m_elementName;
   std::unique_ptr<CJX_Object> m_pJSObject;
 };
 
diff --git a/xfa/fxfa/parser/cxfa_occur.cpp b/xfa/fxfa/parser/cxfa_occur.cpp
index 0e16ef2..b5b3149 100644
--- a/xfa/fxfa/parser/cxfa_occur.cpp
+++ b/xfa/fxfa/parser/cxfa_occur.cpp
@@ -14,6 +14,7 @@
 const CXFA_Node::PropertyData kOccurPropertyData[] = {
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kOccurAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Max, XFA_AttributeType::Integer, (void*)1},
@@ -23,8 +24,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kOccurName[] = L"occur";
-
 }  // namespace
 
 CXFA_Occur::CXFA_Occur(CXFA_Document* doc, XFA_PacketType packet)
@@ -35,10 +34,9 @@
                 XFA_Element::Occur,
                 kOccurPropertyData,
                 kOccurAttributeData,
-                kOccurName,
                 pdfium::MakeUnique<CJX_Occur>(this)) {}
 
-CXFA_Occur::~CXFA_Occur() {}
+CXFA_Occur::~CXFA_Occur() = default;
 
 int32_t CXFA_Occur::GetMax() {
   Optional<int32_t> max = JSObject()->TryInteger(XFA_Attribute::Max, true);
diff --git a/xfa/fxfa/parser/cxfa_oid.cpp b/xfa/fxfa/parser/cxfa_oid.cpp
index ca457aa..a27f182 100644
--- a/xfa/fxfa/parser/cxfa_oid.cpp
+++ b/xfa/fxfa/parser/cxfa_oid.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kOidName[] = L"oid";
-
 }  // namespace
 
 CXFA_Oid::CXFA_Oid(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::Oid,
                 nullptr,
                 kOidAttributeData,
-                kOidName,
                 pdfium::MakeUnique<CJX_Oid>(this)) {}
 
-CXFA_Oid::~CXFA_Oid() {}
+CXFA_Oid::~CXFA_Oid() = default;
diff --git a/xfa/fxfa/parser/cxfa_oids.cpp b/xfa/fxfa/parser/cxfa_oids.cpp
index 4d76434..46c419f 100644
--- a/xfa/fxfa/parser/cxfa_oids.cpp
+++ b/xfa/fxfa/parser/cxfa_oids.cpp
@@ -19,8 +19,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kOidsName[] = L"oids";
-
 }  // namespace
 
 CXFA_Oids::CXFA_Oids(CXFA_Document* doc, XFA_PacketType packet)
@@ -31,7 +29,6 @@
                 XFA_Element::Oids,
                 nullptr,
                 kOidsAttributeData,
-                kOidsName,
                 pdfium::MakeUnique<CJX_Oids>(this)) {}
 
-CXFA_Oids::~CXFA_Oids() {}
+CXFA_Oids::~CXFA_Oids() = default;
diff --git a/xfa/fxfa/parser/cxfa_openaction.cpp b/xfa/fxfa/parser/cxfa_openaction.cpp
index 5a322e7..b50c89c 100644
--- a/xfa/fxfa/parser/cxfa_openaction.cpp
+++ b/xfa/fxfa/parser/cxfa_openaction.cpp
@@ -11,13 +11,12 @@
 const CXFA_Node::PropertyData kOpenActionPropertyData[] = {
     {XFA_Element::Destination, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kOpenActionAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kOpenActionName[] = L"openAction";
-
 }  // namespace
 
 CXFA_OpenAction::CXFA_OpenAction(CXFA_Document* doc, XFA_PacketType packet)
@@ -27,7 +26,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::OpenAction,
                 kOpenActionPropertyData,
-                kOpenActionAttributeData,
-                kOpenActionName) {}
+                kOpenActionAttributeData) {}
 
-CXFA_OpenAction::~CXFA_OpenAction() {}
+CXFA_OpenAction::~CXFA_OpenAction() = default;
diff --git a/xfa/fxfa/parser/cxfa_operation.cpp b/xfa/fxfa/parser/cxfa_operation.cpp
index 39bba1a..2bf5b17 100644
--- a/xfa/fxfa/parser/cxfa_operation.cpp
+++ b/xfa/fxfa/parser/cxfa_operation.cpp
@@ -20,8 +20,6 @@
     {XFA_Attribute::Input, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kOperationName[] = L"operation";
-
 }  // namespace
 
 CXFA_Operation::CXFA_Operation(CXFA_Document* doc, XFA_PacketType packet)
@@ -32,7 +30,6 @@
                 XFA_Element::Operation,
                 nullptr,
                 kOperationAttributeData,
-                kOperationName,
                 pdfium::MakeUnique<CJX_Operation>(this)) {}
 
-CXFA_Operation::~CXFA_Operation() {}
+CXFA_Operation::~CXFA_Operation() = default;
diff --git a/xfa/fxfa/parser/cxfa_output.cpp b/xfa/fxfa/parser/cxfa_output.cpp
index dfd297d..798eda6 100644
--- a/xfa/fxfa/parser/cxfa_output.cpp
+++ b/xfa/fxfa/parser/cxfa_output.cpp
@@ -13,13 +13,12 @@
     {XFA_Element::Uri, 1, 0},
     {XFA_Element::Type, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kOutputAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kOutputName[] = L"output";
-
 }  // namespace
 
 CXFA_Output::CXFA_Output(CXFA_Document* doc, XFA_PacketType packet)
@@ -29,7 +28,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Output,
                 kOutputPropertyData,
-                kOutputAttributeData,
-                kOutputName) {}
+                kOutputAttributeData) {}
 
-CXFA_Output::~CXFA_Output() {}
+CXFA_Output::~CXFA_Output() = default;
diff --git a/xfa/fxfa/parser/cxfa_outputbin.cpp b/xfa/fxfa/parser/cxfa_outputbin.cpp
index 9864a1d..ac5dd1f 100644
--- a/xfa/fxfa/parser/cxfa_outputbin.cpp
+++ b/xfa/fxfa/parser/cxfa_outputbin.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kOutputBinName[] = L"outputBin";
-
 }  // namespace
 
 CXFA_OutputBin::CXFA_OutputBin(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::OutputBin,
                 nullptr,
-                kOutputBinAttributeData,
-                kOutputBinName) {}
+                kOutputBinAttributeData) {}
 
-CXFA_OutputBin::~CXFA_OutputBin() {}
+CXFA_OutputBin::~CXFA_OutputBin() = default;
diff --git a/xfa/fxfa/parser/cxfa_outputxsl.cpp b/xfa/fxfa/parser/cxfa_outputxsl.cpp
index 5791907..509b562 100644
--- a/xfa/fxfa/parser/cxfa_outputxsl.cpp
+++ b/xfa/fxfa/parser/cxfa_outputxsl.cpp
@@ -11,13 +11,12 @@
 const CXFA_Node::PropertyData kOutputXSLPropertyData[] = {
     {XFA_Element::Uri, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kOutputXSLAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kOutputXSLName[] = L"outputXSL";
-
 }  // namespace
 
 CXFA_OutputXSL::CXFA_OutputXSL(CXFA_Document* doc, XFA_PacketType packet)
@@ -27,7 +26,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::OutputXSL,
                 kOutputXSLPropertyData,
-                kOutputXSLAttributeData,
-                kOutputXSLName) {}
+                kOutputXSLAttributeData) {}
 
-CXFA_OutputXSL::~CXFA_OutputXSL() {}
+CXFA_OutputXSL::~CXFA_OutputXSL() = default;
diff --git a/xfa/fxfa/parser/cxfa_overflow.cpp b/xfa/fxfa/parser/cxfa_overflow.cpp
index bc47698..5686595 100644
--- a/xfa/fxfa/parser/cxfa_overflow.cpp
+++ b/xfa/fxfa/parser/cxfa_overflow.cpp
@@ -20,8 +20,6 @@
     {XFA_Attribute::Leader, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kOverflowName[] = L"overflow";
-
 }  // namespace
 
 CXFA_Overflow::CXFA_Overflow(CXFA_Document* doc, XFA_PacketType packet)
@@ -32,7 +30,6 @@
                 XFA_Element::Overflow,
                 nullptr,
                 kOverflowAttributeData,
-                kOverflowName,
                 pdfium::MakeUnique<CJX_Overflow>(this)) {}
 
-CXFA_Overflow::~CXFA_Overflow() {}
+CXFA_Overflow::~CXFA_Overflow() = default;
diff --git a/xfa/fxfa/parser/cxfa_overprint.cpp b/xfa/fxfa/parser/cxfa_overprint.cpp
index 7ade64c..e2e9f37 100644
--- a/xfa/fxfa/parser/cxfa_overprint.cpp
+++ b/xfa/fxfa/parser/cxfa_overprint.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kOverprintName[] = L"overprint";
-
 }  // namespace
 
 CXFA_Overprint::CXFA_Overprint(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Overprint,
                 nullptr,
-                kOverprintAttributeData,
-                kOverprintName) {}
+                kOverprintAttributeData) {}
 
-CXFA_Overprint::~CXFA_Overprint() {}
+CXFA_Overprint::~CXFA_Overprint() = default;
diff --git a/xfa/fxfa/parser/cxfa_packet.cpp b/xfa/fxfa/parser/cxfa_packet.cpp
index 3280186..5b09f95 100644
--- a/xfa/fxfa/parser/cxfa_packet.cpp
+++ b/xfa/fxfa/parser/cxfa_packet.cpp
@@ -9,12 +9,6 @@
 #include "fxjs/xfa/cjx_packet.h"
 #include "third_party/base/ptr_util.h"
 
-namespace {
-
-constexpr wchar_t kPacketName[] = L"packet";
-
-}  // namespace
-
 CXFA_Packet::CXFA_Packet(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
                 packet,
@@ -23,7 +17,6 @@
                 XFA_Element::Packet,
                 nullptr,
                 nullptr,
-                kPacketName,
                 pdfium::MakeUnique<CJX_Packet>(this)) {}
 
-CXFA_Packet::~CXFA_Packet() {}
+CXFA_Packet::~CXFA_Packet() = default;
diff --git a/xfa/fxfa/parser/cxfa_packets.cpp b/xfa/fxfa/parser/cxfa_packets.cpp
index b641f2e..2ec1e3d 100644
--- a/xfa/fxfa/parser/cxfa_packets.cpp
+++ b/xfa/fxfa/parser/cxfa_packets.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPacketsName[] = L"packets";
-
 }  // namespace
 
 CXFA_Packets::CXFA_Packets(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Packets,
                 nullptr,
-                kPacketsAttributeData,
-                kPacketsName) {}
+                kPacketsAttributeData) {}
 
-CXFA_Packets::~CXFA_Packets() {}
+CXFA_Packets::~CXFA_Packets() = default;
diff --git a/xfa/fxfa/parser/cxfa_pagearea.cpp b/xfa/fxfa/parser/cxfa_pagearea.cpp
index 9462f29..09f37e9 100644
--- a/xfa/fxfa/parser/cxfa_pagearea.cpp
+++ b/xfa/fxfa/parser/cxfa_pagearea.cpp
@@ -17,6 +17,7 @@
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Occur, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kPageAreaAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
@@ -33,8 +34,6 @@
      (void*)XFA_AttributeValue::Any},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPageAreaName[] = L"pageArea";
-
 }  // namespace
 
 CXFA_PageArea::CXFA_PageArea(CXFA_Document* doc, XFA_PacketType packet)
@@ -45,7 +44,6 @@
                 XFA_Element::PageArea,
                 kPageAreaPropertyData,
                 kPageAreaAttributeData,
-                kPageAreaName,
                 pdfium::MakeUnique<CJX_PageArea>(this)) {}
 
-CXFA_PageArea::~CXFA_PageArea() {}
+CXFA_PageArea::~CXFA_PageArea() = default;
diff --git a/xfa/fxfa/parser/cxfa_pageoffset.cpp b/xfa/fxfa/parser/cxfa_pageoffset.cpp
index 864b89d..8d3e19e 100644
--- a/xfa/fxfa/parser/cxfa_pageoffset.cpp
+++ b/xfa/fxfa/parser/cxfa_pageoffset.cpp
@@ -15,8 +15,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPageOffsetName[] = L"pageOffset";
-
 }  // namespace
 
 CXFA_PageOffset::CXFA_PageOffset(CXFA_Document* doc, XFA_PacketType packet)
@@ -26,7 +24,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::PageOffset,
                 nullptr,
-                kPageOffsetAttributeData,
-                kPageOffsetName) {}
+                kPageOffsetAttributeData) {}
 
-CXFA_PageOffset::~CXFA_PageOffset() {}
+CXFA_PageOffset::~CXFA_PageOffset() = default;
diff --git a/xfa/fxfa/parser/cxfa_pagerange.cpp b/xfa/fxfa/parser/cxfa_pagerange.cpp
index 6136d8c..f0419ac 100644
--- a/xfa/fxfa/parser/cxfa_pagerange.cpp
+++ b/xfa/fxfa/parser/cxfa_pagerange.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPageRangeName[] = L"pageRange";
-
 }  // namespace
 
 CXFA_PageRange::CXFA_PageRange(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::PageRange,
                 nullptr,
-                kPageRangeAttributeData,
-                kPageRangeName) {}
+                kPageRangeAttributeData) {}
 
-CXFA_PageRange::~CXFA_PageRange() {}
+CXFA_PageRange::~CXFA_PageRange() = default;
diff --git a/xfa/fxfa/parser/cxfa_pageset.cpp b/xfa/fxfa/parser/cxfa_pageset.cpp
index 350651e..8909693 100644
--- a/xfa/fxfa/parser/cxfa_pageset.cpp
+++ b/xfa/fxfa/parser/cxfa_pageset.cpp
@@ -15,6 +15,7 @@
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Occur, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kPageSetAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
@@ -27,8 +28,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPageSetName[] = L"pageSet";
-
 }  // namespace
 
 CXFA_PageSet::CXFA_PageSet(CXFA_Document* doc, XFA_PacketType packet)
@@ -39,7 +38,6 @@
                 XFA_Element::PageSet,
                 kPageSetPropertyData,
                 kPageSetAttributeData,
-                kPageSetName,
                 pdfium::MakeUnique<CJX_PageSet>(this)) {}
 
-CXFA_PageSet::~CXFA_PageSet() {}
+CXFA_PageSet::~CXFA_PageSet() = default;
diff --git a/xfa/fxfa/parser/cxfa_pagination.cpp b/xfa/fxfa/parser/cxfa_pagination.cpp
index d6870fd..8c0d39d 100644
--- a/xfa/fxfa/parser/cxfa_pagination.cpp
+++ b/xfa/fxfa/parser/cxfa_pagination.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPaginationName[] = L"pagination";
-
 }  // namespace
 
 CXFA_Pagination::CXFA_Pagination(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Pagination,
                 nullptr,
-                kPaginationAttributeData,
-                kPaginationName) {}
+                kPaginationAttributeData) {}
 
-CXFA_Pagination::~CXFA_Pagination() {}
+CXFA_Pagination::~CXFA_Pagination() = default;
diff --git a/xfa/fxfa/parser/cxfa_paginationoverride.cpp b/xfa/fxfa/parser/cxfa_paginationoverride.cpp
index 05158dd..f627263 100644
--- a/xfa/fxfa/parser/cxfa_paginationoverride.cpp
+++ b/xfa/fxfa/parser/cxfa_paginationoverride.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPaginationOverrideName[] = L"paginationOverride";
-
 }  // namespace
 
 CXFA_PaginationOverride::CXFA_PaginationOverride(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::PaginationOverride,
                 nullptr,
-                kPaginationOverrideAttributeData,
-                kPaginationOverrideName) {}
+                kPaginationOverrideAttributeData) {}
 
-CXFA_PaginationOverride::~CXFA_PaginationOverride() {}
+CXFA_PaginationOverride::~CXFA_PaginationOverride() = default;
diff --git a/xfa/fxfa/parser/cxfa_para.cpp b/xfa/fxfa/parser/cxfa_para.cpp
index 9c7243b..5ed6a51 100644
--- a/xfa/fxfa/parser/cxfa_para.cpp
+++ b/xfa/fxfa/parser/cxfa_para.cpp
@@ -15,6 +15,7 @@
 const CXFA_Node::PropertyData kParaPropertyData[] = {
     {XFA_Element::Hyphenation, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kParaAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::HAlign, XFA_AttributeType::Enum,
@@ -37,8 +38,6 @@
     {XFA_Attribute::SpaceAbove, XFA_AttributeType::Measure, (void*)L"0in"},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kParaName[] = L"para";
-
 }  // namespace
 
 CXFA_Para::CXFA_Para(CXFA_Document* doc, XFA_PacketType packet)
@@ -49,10 +48,9 @@
                 XFA_Element::Para,
                 kParaPropertyData,
                 kParaAttributeData,
-                kParaName,
                 pdfium::MakeUnique<CJX_Para>(this)) {}
 
-CXFA_Para::~CXFA_Para() {}
+CXFA_Para::~CXFA_Para() = default;
 
 XFA_AttributeValue CXFA_Para::GetHorizontalAlign() {
   return JSObject()
diff --git a/xfa/fxfa/parser/cxfa_part.cpp b/xfa/fxfa/parser/cxfa_part.cpp
index e725845..e4aa06d 100644
--- a/xfa/fxfa/parser/cxfa_part.cpp
+++ b/xfa/fxfa/parser/cxfa_part.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPartName[] = L"part";
-
 }  // namespace
 
 CXFA_Part::CXFA_Part(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Part,
                 nullptr,
-                kPartAttributeData,
-                kPartName) {}
+                kPartAttributeData) {}
 
-CXFA_Part::~CXFA_Part() {}
+CXFA_Part::~CXFA_Part() = default;
diff --git a/xfa/fxfa/parser/cxfa_password.cpp b/xfa/fxfa/parser/cxfa_password.cpp
index d1145e4..2197623 100644
--- a/xfa/fxfa/parser/cxfa_password.cpp
+++ b/xfa/fxfa/parser/cxfa_password.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPasswordName[] = L"password";
-
 }  // namespace
 
 CXFA_Password::CXFA_Password(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::Password,
                 nullptr,
                 kPasswordAttributeData,
-                kPasswordName,
                 pdfium::MakeUnique<CJX_Password>(this)) {}
 
-CXFA_Password::~CXFA_Password() {}
+CXFA_Password::~CXFA_Password() = default;
diff --git a/xfa/fxfa/parser/cxfa_passwordedit.cpp b/xfa/fxfa/parser/cxfa_passwordedit.cpp
index 35612f6..475cc16 100644
--- a/xfa/fxfa/parser/cxfa_passwordedit.cpp
+++ b/xfa/fxfa/parser/cxfa_passwordedit.cpp
@@ -15,6 +15,7 @@
     {XFA_Element::Border, 1, 0},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kPasswordEditAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -24,8 +25,6 @@
      (void*)XFA_AttributeValue::Auto},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPasswordEditName[] = L"passwordEdit";
-
 }  // namespace
 
 CXFA_PasswordEdit::CXFA_PasswordEdit(CXFA_Document* doc, XFA_PacketType packet)
@@ -35,10 +34,9 @@
                 XFA_ObjectType::Node,
                 XFA_Element::PasswordEdit,
                 kPasswordEditPropertyData,
-                kPasswordEditAttributeData,
-                kPasswordEditName) {}
+                kPasswordEditAttributeData) {}
 
-CXFA_PasswordEdit::~CXFA_PasswordEdit() {}
+CXFA_PasswordEdit::~CXFA_PasswordEdit() = default;
 
 XFA_FFWidgetType CXFA_PasswordEdit::GetDefaultFFWidgetType() const {
   return XFA_FFWidgetType::kPasswordEdit;
diff --git a/xfa/fxfa/parser/cxfa_pattern.cpp b/xfa/fxfa/parser/cxfa_pattern.cpp
index f5c2e78..9b0a995 100644
--- a/xfa/fxfa/parser/cxfa_pattern.cpp
+++ b/xfa/fxfa/parser/cxfa_pattern.cpp
@@ -17,6 +17,7 @@
     {XFA_Element::Color, 1, 0},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kPatternAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -25,8 +26,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPatternName[] = L"pattern";
-
 }  // namespace
 
 CXFA_Pattern::CXFA_Pattern(CXFA_Document* doc, XFA_PacketType packet)
@@ -37,10 +36,9 @@
                 XFA_Element::Pattern,
                 kPatternPropertyData,
                 kPatternAttributeData,
-                kPatternName,
                 pdfium::MakeUnique<CJX_Pattern>(this)) {}
 
-CXFA_Pattern::~CXFA_Pattern() {}
+CXFA_Pattern::~CXFA_Pattern() = default;
 
 CXFA_Color* CXFA_Pattern::GetColorIfExists() {
   return GetChild<CXFA_Color>(0, XFA_Element::Color, false);
diff --git a/xfa/fxfa/parser/cxfa_pcl.cpp b/xfa/fxfa/parser/cxfa_pcl.cpp
index 00b68e8..c3fbb1b 100644
--- a/xfa/fxfa/parser/cxfa_pcl.cpp
+++ b/xfa/fxfa/parser/cxfa_pcl.cpp
@@ -14,14 +14,13 @@
     {XFA_Element::PageOffset, 1, 0}, {XFA_Element::OutputBin, 1, 0},
     {XFA_Element::Staple, 1, 0},     {XFA_Element::MediumInfo, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kPclAttributeData[] = {
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPclName[] = L"pcl";
-
 }  // namespace
 
 CXFA_Pcl::CXFA_Pcl(CXFA_Document* doc, XFA_PacketType packet)
@@ -31,7 +30,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Pcl,
                 kPclPropertyData,
-                kPclAttributeData,
-                kPclName) {}
+                kPclAttributeData) {}
 
-CXFA_Pcl::~CXFA_Pcl() {}
+CXFA_Pcl::~CXFA_Pcl() = default;
diff --git a/xfa/fxfa/parser/cxfa_pdf.cpp b/xfa/fxfa/parser/cxfa_pdf.cpp
index 5a257bd..96a22c6 100644
--- a/xfa/fxfa/parser/cxfa_pdf.cpp
+++ b/xfa/fxfa/parser/cxfa_pdf.cpp
@@ -29,14 +29,13 @@
     {XFA_Element::Linearized, 1, 0},
     {XFA_Element::Tagged, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kPdfAttributeData[] = {
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPdfName[] = L"pdf";
-
 }  // namespace
 
 CXFA_Pdf::CXFA_Pdf(CXFA_Document* doc, XFA_PacketType packet)
@@ -46,7 +45,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Pdf,
                 kPdfPropertyData,
-                kPdfAttributeData,
-                kPdfName) {}
+                kPdfAttributeData) {}
 
-CXFA_Pdf::~CXFA_Pdf() {}
+CXFA_Pdf::~CXFA_Pdf() = default;
diff --git a/xfa/fxfa/parser/cxfa_pdfa.cpp b/xfa/fxfa/parser/cxfa_pdfa.cpp
index b954488..d41417d 100644
--- a/xfa/fxfa/parser/cxfa_pdfa.cpp
+++ b/xfa/fxfa/parser/cxfa_pdfa.cpp
@@ -14,13 +14,12 @@
     {XFA_Element::IncludeXDPContent, 1, 0},
     {XFA_Element::Conformance, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kPdfaAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPdfaName[] = L"pdfa";
-
 }  // namespace
 
 CXFA_Pdfa::CXFA_Pdfa(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +29,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Pdfa,
                 kPdfaPropertyData,
-                kPdfaAttributeData,
-                kPdfaName) {}
+                kPdfaAttributeData) {}
 
-CXFA_Pdfa::~CXFA_Pdfa() {}
+CXFA_Pdfa::~CXFA_Pdfa() = default;
diff --git a/xfa/fxfa/parser/cxfa_permissions.cpp b/xfa/fxfa/parser/cxfa_permissions.cpp
index 3ae215c..499a0d7 100644
--- a/xfa/fxfa/parser/cxfa_permissions.cpp
+++ b/xfa/fxfa/parser/cxfa_permissions.cpp
@@ -19,13 +19,12 @@
     {XFA_Element::PrintHighQuality, 1, 0},
     {XFA_Element::DocumentAssembly, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kPermissionsAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPermissionsName[] = L"permissions";
-
 }  // namespace
 
 CXFA_Permissions::CXFA_Permissions(CXFA_Document* doc, XFA_PacketType packet)
@@ -35,7 +34,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Permissions,
                 kPermissionsPropertyData,
-                kPermissionsAttributeData,
-                kPermissionsName) {}
+                kPermissionsAttributeData) {}
 
-CXFA_Permissions::~CXFA_Permissions() {}
+CXFA_Permissions::~CXFA_Permissions() = default;
diff --git a/xfa/fxfa/parser/cxfa_picktraybypdfsize.cpp b/xfa/fxfa/parser/cxfa_picktraybypdfsize.cpp
index a2e58c2..c536b1d 100644
--- a/xfa/fxfa/parser/cxfa_picktraybypdfsize.cpp
+++ b/xfa/fxfa/parser/cxfa_picktraybypdfsize.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPickTrayByPDFSizeName[] = L"pickTrayByPDFSize";
-
 }  // namespace
 
 CXFA_PickTrayByPDFSize::CXFA_PickTrayByPDFSize(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::PickTrayByPDFSize,
                 nullptr,
-                kPickTrayByPDFSizeAttributeData,
-                kPickTrayByPDFSizeName) {}
+                kPickTrayByPDFSizeAttributeData) {}
 
-CXFA_PickTrayByPDFSize::~CXFA_PickTrayByPDFSize() {}
+CXFA_PickTrayByPDFSize::~CXFA_PickTrayByPDFSize() = default;
diff --git a/xfa/fxfa/parser/cxfa_picture.cpp b/xfa/fxfa/parser/cxfa_picture.cpp
index 8b366d9..c1099e9 100644
--- a/xfa/fxfa/parser/cxfa_picture.cpp
+++ b/xfa/fxfa/parser/cxfa_picture.cpp
@@ -19,8 +19,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPictureName[] = L"picture";
-
 }  // namespace
 
 CXFA_Picture::CXFA_Picture(CXFA_Document* doc, XFA_PacketType packet)
@@ -32,7 +30,6 @@
           XFA_Element::Picture,
           nullptr,
           kPictureAttributeData,
-          kPictureName,
           pdfium::MakeUnique<CJX_Picture>(this)) {}
 
-CXFA_Picture::~CXFA_Picture() {}
+CXFA_Picture::~CXFA_Picture() = default;
diff --git a/xfa/fxfa/parser/cxfa_plaintextmetadata.cpp b/xfa/fxfa/parser/cxfa_plaintextmetadata.cpp
index 723499c..71e7c76 100644
--- a/xfa/fxfa/parser/cxfa_plaintextmetadata.cpp
+++ b/xfa/fxfa/parser/cxfa_plaintextmetadata.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPlaintextMetadataName[] = L"plaintextMetadata";
-
 }  // namespace
 
 CXFA_PlaintextMetadata::CXFA_PlaintextMetadata(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::PlaintextMetadata,
                 nullptr,
-                kPlaintextMetadataAttributeData,
-                kPlaintextMetadataName) {}
+                kPlaintextMetadataAttributeData) {}
 
-CXFA_PlaintextMetadata::~CXFA_PlaintextMetadata() {}
+CXFA_PlaintextMetadata::~CXFA_PlaintextMetadata() = default;
diff --git a/xfa/fxfa/parser/cxfa_presence.cpp b/xfa/fxfa/parser/cxfa_presence.cpp
index e37a7aa..66bc8fa 100644
--- a/xfa/fxfa/parser/cxfa_presence.cpp
+++ b/xfa/fxfa/parser/cxfa_presence.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPresenceName[] = L"presence";
-
 }  // namespace
 
 CXFA_Presence::CXFA_Presence(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::Presence,
                 nullptr,
-                kPresenceAttributeData,
-                kPresenceName) {}
+                kPresenceAttributeData) {}
 
-CXFA_Presence::~CXFA_Presence() {}
+CXFA_Presence::~CXFA_Presence() = default;
diff --git a/xfa/fxfa/parser/cxfa_present.cpp b/xfa/fxfa/parser/cxfa_present.cpp
index 9eebbbf..21fed2a 100644
--- a/xfa/fxfa/parser/cxfa_present.cpp
+++ b/xfa/fxfa/parser/cxfa_present.cpp
@@ -24,13 +24,12 @@
     {XFA_Element::Destination, 1, 0},
     {XFA_Element::IncrementalMerge, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kPresentAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPresentName[] = L"present";
-
 }  // namespace
 
 CXFA_Present::CXFA_Present(CXFA_Document* doc, XFA_PacketType packet)
@@ -40,7 +39,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Present,
                 kPresentPropertyData,
-                kPresentAttributeData,
-                kPresentName) {}
+                kPresentAttributeData) {}
 
-CXFA_Present::~CXFA_Present() {}
+CXFA_Present::~CXFA_Present() = default;
diff --git a/xfa/fxfa/parser/cxfa_print.cpp b/xfa/fxfa/parser/cxfa_print.cpp
index cf09ccd..b99485e 100644
--- a/xfa/fxfa/parser/cxfa_print.cpp
+++ b/xfa/fxfa/parser/cxfa_print.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPrintName[] = L"print";
-
 }  // namespace
 
 CXFA_Print::CXFA_Print(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Print,
                 nullptr,
-                kPrintAttributeData,
-                kPrintName) {}
+                kPrintAttributeData) {}
 
-CXFA_Print::~CXFA_Print() {}
+CXFA_Print::~CXFA_Print() = default;
diff --git a/xfa/fxfa/parser/cxfa_printername.cpp b/xfa/fxfa/parser/cxfa_printername.cpp
index 6acda51..2f0a7d9 100644
--- a/xfa/fxfa/parser/cxfa_printername.cpp
+++ b/xfa/fxfa/parser/cxfa_printername.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPrinterNameName[] = L"printerName";
-
 }  // namespace
 
 CXFA_PrinterName::CXFA_PrinterName(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::PrinterName,
                 nullptr,
-                kPrinterNameAttributeData,
-                kPrinterNameName) {}
+                kPrinterNameAttributeData) {}
 
-CXFA_PrinterName::~CXFA_PrinterName() {}
+CXFA_PrinterName::~CXFA_PrinterName() = default;
diff --git a/xfa/fxfa/parser/cxfa_printhighquality.cpp b/xfa/fxfa/parser/cxfa_printhighquality.cpp
index c88767d..f7a1c7e 100644
--- a/xfa/fxfa/parser/cxfa_printhighquality.cpp
+++ b/xfa/fxfa/parser/cxfa_printhighquality.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPrintHighQualityName[] = L"printHighQuality";
-
 }  // namespace
 
 CXFA_PrintHighQuality::CXFA_PrintHighQuality(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::PrintHighQuality,
                 nullptr,
-                kPrintHighQualityAttributeData,
-                kPrintHighQualityName) {}
+                kPrintHighQualityAttributeData) {}
 
-CXFA_PrintHighQuality::~CXFA_PrintHighQuality() {}
+CXFA_PrintHighQuality::~CXFA_PrintHighQuality() = default;
diff --git a/xfa/fxfa/parser/cxfa_printscaling.cpp b/xfa/fxfa/parser/cxfa_printscaling.cpp
index a995eda..583701e 100644
--- a/xfa/fxfa/parser/cxfa_printscaling.cpp
+++ b/xfa/fxfa/parser/cxfa_printscaling.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPrintScalingName[] = L"printScaling";
-
 }  // namespace
 
 CXFA_PrintScaling::CXFA_PrintScaling(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::PrintScaling,
                 nullptr,
-                kPrintScalingAttributeData,
-                kPrintScalingName) {}
+                kPrintScalingAttributeData) {}
 
-CXFA_PrintScaling::~CXFA_PrintScaling() {}
+CXFA_PrintScaling::~CXFA_PrintScaling() = default;
diff --git a/xfa/fxfa/parser/cxfa_producer.cpp b/xfa/fxfa/parser/cxfa_producer.cpp
index 0bdbbcf..8735e2a 100644
--- a/xfa/fxfa/parser/cxfa_producer.cpp
+++ b/xfa/fxfa/parser/cxfa_producer.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kProducerName[] = L"producer";
-
 }  // namespace
 
 CXFA_Producer::CXFA_Producer(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Producer,
                 nullptr,
-                kProducerAttributeData,
-                kProducerName) {}
+                kProducerAttributeData) {}
 
-CXFA_Producer::~CXFA_Producer() {}
+CXFA_Producer::~CXFA_Producer() = default;
diff --git a/xfa/fxfa/parser/cxfa_proto.cpp b/xfa/fxfa/parser/cxfa_proto.cpp
index eb98047..40c8fff 100644
--- a/xfa/fxfa/parser/cxfa_proto.cpp
+++ b/xfa/fxfa/parser/cxfa_proto.cpp
@@ -6,12 +6,6 @@
 
 #include "xfa/fxfa/parser/cxfa_proto.h"
 
-namespace {
-
-constexpr wchar_t kProtoName[] = L"proto";
-
-}  // namespace
-
 CXFA_Proto::CXFA_Proto(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
                 packet,
@@ -19,7 +13,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Proto,
                 nullptr,
-                nullptr,
-                kProtoName) {}
+                nullptr) {}
 
-CXFA_Proto::~CXFA_Proto() {}
+CXFA_Proto::~CXFA_Proto() = default;
diff --git a/xfa/fxfa/parser/cxfa_ps.cpp b/xfa/fxfa/parser/cxfa_ps.cpp
index e4408a1..0f10b90 100644
--- a/xfa/fxfa/parser/cxfa_ps.cpp
+++ b/xfa/fxfa/parser/cxfa_ps.cpp
@@ -14,14 +14,13 @@
     {XFA_Element::OutputBin, 1, 0}, {XFA_Element::Compress, 1, 0},
     {XFA_Element::Staple, 1, 0},    {XFA_Element::MediumInfo, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kPsAttributeData[] = {
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kPsName[] = L"ps";
-
 }  // namespace
 
 CXFA_Ps::CXFA_Ps(CXFA_Document* doc, XFA_PacketType packet)
@@ -31,7 +30,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Ps,
                 kPsPropertyData,
-                kPsAttributeData,
-                kPsName) {}
+                kPsAttributeData) {}
 
-CXFA_Ps::~CXFA_Ps() {}
+CXFA_Ps::~CXFA_Ps() = default;
diff --git a/xfa/fxfa/parser/cxfa_psmap.cpp b/xfa/fxfa/parser/cxfa_psmap.cpp
index 9421432..d83c534 100644
--- a/xfa/fxfa/parser/cxfa_psmap.cpp
+++ b/xfa/fxfa/parser/cxfa_psmap.cpp
@@ -6,12 +6,6 @@
 
 #include "xfa/fxfa/parser/cxfa_psmap.h"
 
-namespace {
-
-constexpr wchar_t kPsMapName[] = L"psMap";
-
-}  // namespace
-
 CXFA_PsMap::CXFA_PsMap(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
                 packet,
@@ -19,7 +13,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::PsMap,
                 nullptr,
-                nullptr,
-                kPsMapName) {}
+                nullptr) {}
 
-CXFA_PsMap::~CXFA_PsMap() {}
+CXFA_PsMap::~CXFA_PsMap() = default;
diff --git a/xfa/fxfa/parser/cxfa_query.cpp b/xfa/fxfa/parser/cxfa_query.cpp
index dd0c617..3f6444b 100644
--- a/xfa/fxfa/parser/cxfa_query.cpp
+++ b/xfa/fxfa/parser/cxfa_query.cpp
@@ -15,6 +15,7 @@
     {XFA_Element::RecordSet, 1, 0},
     {XFA_Element::Select, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kQueryAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
@@ -24,8 +25,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kQueryName[] = L"query";
-
 }  // namespace
 
 CXFA_Query::CXFA_Query(CXFA_Document* doc, XFA_PacketType packet)
@@ -36,7 +35,6 @@
                 XFA_Element::Query,
                 kQueryPropertyData,
                 kQueryAttributeData,
-                kQueryName,
                 pdfium::MakeUnique<CJX_Query>(this)) {}
 
-CXFA_Query::~CXFA_Query() {}
+CXFA_Query::~CXFA_Query() = default;
diff --git a/xfa/fxfa/parser/cxfa_radial.cpp b/xfa/fxfa/parser/cxfa_radial.cpp
index 0543b07..c85beb8 100644
--- a/xfa/fxfa/parser/cxfa_radial.cpp
+++ b/xfa/fxfa/parser/cxfa_radial.cpp
@@ -19,6 +19,7 @@
     {XFA_Element::Color, 1, 0},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kRadialAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -27,8 +28,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kRadialName[] = L"radial";
-
 }  // namespace
 
 CXFA_Radial::CXFA_Radial(CXFA_Document* doc, XFA_PacketType packet)
@@ -39,10 +38,9 @@
                 XFA_Element::Radial,
                 kRadialPropertyData,
                 kRadialAttributeData,
-                kRadialName,
                 pdfium::MakeUnique<CJX_Radial>(this)) {}
 
-CXFA_Radial::~CXFA_Radial() {}
+CXFA_Radial::~CXFA_Radial() = default;
 
 bool CXFA_Radial::IsToEdge() {
   return JSObject()
diff --git a/xfa/fxfa/parser/cxfa_range.cpp b/xfa/fxfa/parser/cxfa_range.cpp
index 9dec94e..76b3fc2 100644
--- a/xfa/fxfa/parser/cxfa_range.cpp
+++ b/xfa/fxfa/parser/cxfa_range.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kRangeName[] = L"range";
-
 }  // namespace
 
 CXFA_Range::CXFA_Range(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::Range,
                 nullptr,
-                kRangeAttributeData,
-                kRangeName) {}
+                kRangeAttributeData) {}
 
-CXFA_Range::~CXFA_Range() {}
+CXFA_Range::~CXFA_Range() = default;
diff --git a/xfa/fxfa/parser/cxfa_reason.cpp b/xfa/fxfa/parser/cxfa_reason.cpp
index 6578f7d..4551f7c 100644
--- a/xfa/fxfa/parser/cxfa_reason.cpp
+++ b/xfa/fxfa/parser/cxfa_reason.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kReasonName[] = L"reason";
-
 }  // namespace
 
 CXFA_Reason::CXFA_Reason(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::Reason,
                 nullptr,
                 kReasonAttributeData,
-                kReasonName,
                 pdfium::MakeUnique<CJX_Reason>(this)) {}
 
-CXFA_Reason::~CXFA_Reason() {}
+CXFA_Reason::~CXFA_Reason() = default;
diff --git a/xfa/fxfa/parser/cxfa_reasons.cpp b/xfa/fxfa/parser/cxfa_reasons.cpp
index 63ca32b..67c7516 100644
--- a/xfa/fxfa/parser/cxfa_reasons.cpp
+++ b/xfa/fxfa/parser/cxfa_reasons.cpp
@@ -19,8 +19,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kReasonsName[] = L"reasons";
-
 }  // namespace
 
 CXFA_Reasons::CXFA_Reasons(CXFA_Document* doc, XFA_PacketType packet)
@@ -31,7 +29,6 @@
                 XFA_Element::Reasons,
                 nullptr,
                 kReasonsAttributeData,
-                kReasonsName,
                 pdfium::MakeUnique<CJX_Reasons>(this)) {}
 
-CXFA_Reasons::~CXFA_Reasons() {}
+CXFA_Reasons::~CXFA_Reasons() = default;
diff --git a/xfa/fxfa/parser/cxfa_record.cpp b/xfa/fxfa/parser/cxfa_record.cpp
index af09f8a..75a8daf 100644
--- a/xfa/fxfa/parser/cxfa_record.cpp
+++ b/xfa/fxfa/parser/cxfa_record.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kRecordName[] = L"record";
-
 }  // namespace
 
 CXFA_Record::CXFA_Record(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::Record,
                 nullptr,
-                kRecordAttributeData,
-                kRecordName) {}
+                kRecordAttributeData) {}
 
-CXFA_Record::~CXFA_Record() {}
+CXFA_Record::~CXFA_Record() = default;
diff --git a/xfa/fxfa/parser/cxfa_recordset.cpp b/xfa/fxfa/parser/cxfa_recordset.cpp
index a16af23..7a5cbec 100644
--- a/xfa/fxfa/parser/cxfa_recordset.cpp
+++ b/xfa/fxfa/parser/cxfa_recordset.cpp
@@ -29,8 +29,6 @@
      (void*)XFA_AttributeValue::Client},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kRecordSetName[] = L"recordSet";
-
 }  // namespace
 
 CXFA_RecordSet::CXFA_RecordSet(CXFA_Document* doc, XFA_PacketType packet)
@@ -41,7 +39,6 @@
                 XFA_Element::RecordSet,
                 nullptr,
                 kRecordSetAttributeData,
-                kRecordSetName,
                 pdfium::MakeUnique<CJX_RecordSet>(this)) {}
 
-CXFA_RecordSet::~CXFA_RecordSet() {}
+CXFA_RecordSet::~CXFA_RecordSet() = default;
diff --git a/xfa/fxfa/parser/cxfa_rectangle.cpp b/xfa/fxfa/parser/cxfa_rectangle.cpp
index 7f07097..93bae1e 100644
--- a/xfa/fxfa/parser/cxfa_rectangle.cpp
+++ b/xfa/fxfa/parser/cxfa_rectangle.cpp
@@ -20,6 +20,7 @@
     {XFA_Element::Corner, 4, 0},
     {XFA_Element::Fill, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kRectangleAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -28,8 +29,6 @@
      (void*)XFA_AttributeValue::Even},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kRectangleName[] = L"rectangle";
-
 }  // namespace
 
 CXFA_Rectangle::CXFA_Rectangle(CXFA_Document* doc, XFA_PacketType packet)
@@ -40,7 +39,6 @@
                XFA_Element::Rectangle,
                kRectanglePropertyData,
                kRectangleAttributeData,
-               kRectangleName,
                pdfium::MakeUnique<CJX_Rectangle>(this)) {}
 
 CXFA_Rectangle::CXFA_Rectangle(CXFA_Document* pDoc,
@@ -50,7 +48,6 @@
                                XFA_Element eType,
                                const PropertyData* properties,
                                const AttributeData* attributes,
-                               const WideStringView& elementName,
                                std::unique_ptr<CJX_Object> js_node)
     : CXFA_Box(pDoc,
                ePacket,
@@ -59,7 +56,6 @@
                eType,
                properties,
                attributes,
-               elementName,
                std::move(js_node)) {}
 
 CXFA_Rectangle::~CXFA_Rectangle() {}
diff --git a/xfa/fxfa/parser/cxfa_rectangle.h b/xfa/fxfa/parser/cxfa_rectangle.h
index b117e66..e2405a0 100644
--- a/xfa/fxfa/parser/cxfa_rectangle.h
+++ b/xfa/fxfa/parser/cxfa_rectangle.h
@@ -34,7 +34,6 @@
                  XFA_Element eType,
                  const PropertyData* properties,
                  const AttributeData* attributes,
-                 const WideStringView& elementName,
                  std::unique_ptr<CJX_Object> js_node);
 
  private:
diff --git a/xfa/fxfa/parser/cxfa_ref.cpp b/xfa/fxfa/parser/cxfa_ref.cpp
index 951c830..adb4c81 100644
--- a/xfa/fxfa/parser/cxfa_ref.cpp
+++ b/xfa/fxfa/parser/cxfa_ref.cpp
@@ -17,8 +17,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kRefName[] = L"ref";
-
 }  // namespace
 
 CXFA_Ref::CXFA_Ref(CXFA_Document* doc, XFA_PacketType packet)
@@ -29,7 +27,6 @@
                 XFA_Element::Ref,
                 nullptr,
                 kRefAttributeData,
-                kRefName,
                 pdfium::MakeUnique<CJX_Ref>(this)) {}
 
-CXFA_Ref::~CXFA_Ref() {}
+CXFA_Ref::~CXFA_Ref() = default;
diff --git a/xfa/fxfa/parser/cxfa_relevant.cpp b/xfa/fxfa/parser/cxfa_relevant.cpp
index 95f907a..9894244 100644
--- a/xfa/fxfa/parser/cxfa_relevant.cpp
+++ b/xfa/fxfa/parser/cxfa_relevant.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kRelevantName[] = L"relevant";
-
 }  // namespace
 
 CXFA_Relevant::CXFA_Relevant(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::Relevant,
                 nullptr,
-                kRelevantAttributeData,
-                kRelevantName) {}
+                kRelevantAttributeData) {}
 
-CXFA_Relevant::~CXFA_Relevant() {}
+CXFA_Relevant::~CXFA_Relevant() = default;
diff --git a/xfa/fxfa/parser/cxfa_rename.cpp b/xfa/fxfa/parser/cxfa_rename.cpp
index 32a6e0d..bd133a7 100644
--- a/xfa/fxfa/parser/cxfa_rename.cpp
+++ b/xfa/fxfa/parser/cxfa_rename.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kRenameName[] = L"rename";
-
 }  // namespace
 
 CXFA_Rename::CXFA_Rename(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::Rename,
                 nullptr,
-                kRenameAttributeData,
-                kRenameName) {}
+                kRenameAttributeData) {}
 
-CXFA_Rename::~CXFA_Rename() {}
+CXFA_Rename::~CXFA_Rename() = default;
diff --git a/xfa/fxfa/parser/cxfa_renderpolicy.cpp b/xfa/fxfa/parser/cxfa_renderpolicy.cpp
index 19c1302..50d9bfa 100644
--- a/xfa/fxfa/parser/cxfa_renderpolicy.cpp
+++ b/xfa/fxfa/parser/cxfa_renderpolicy.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kRenderPolicyName[] = L"renderPolicy";
-
 }  // namespace
 
 CXFA_RenderPolicy::CXFA_RenderPolicy(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::RenderPolicy,
                 nullptr,
-                kRenderPolicyAttributeData,
-                kRenderPolicyName) {}
+                kRenderPolicyAttributeData) {}
 
-CXFA_RenderPolicy::~CXFA_RenderPolicy() {}
+CXFA_RenderPolicy::~CXFA_RenderPolicy() = default;
diff --git a/xfa/fxfa/parser/cxfa_rootelement.cpp b/xfa/fxfa/parser/cxfa_rootelement.cpp
index 031f8b0..451f065 100644
--- a/xfa/fxfa/parser/cxfa_rootelement.cpp
+++ b/xfa/fxfa/parser/cxfa_rootelement.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kRootElementName[] = L"rootElement";
-
 }  // namespace
 
 CXFA_RootElement::CXFA_RootElement(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::RootElement,
                 nullptr,
                 kRootElementAttributeData,
-                kRootElementName,
                 pdfium::MakeUnique<CJX_RootElement>(this)) {}
 
-CXFA_RootElement::~CXFA_RootElement() {}
+CXFA_RootElement::~CXFA_RootElement() = default;
diff --git a/xfa/fxfa/parser/cxfa_runscripts.cpp b/xfa/fxfa/parser/cxfa_runscripts.cpp
index 204bdeb..7f25513 100644
--- a/xfa/fxfa/parser/cxfa_runscripts.cpp
+++ b/xfa/fxfa/parser/cxfa_runscripts.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kRunScriptsName[] = L"runScripts";
-
 }  // namespace
 
 CXFA_RunScripts::CXFA_RunScripts(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::RunScripts,
                 nullptr,
-                kRunScriptsAttributeData,
-                kRunScriptsName) {}
+                kRunScriptsAttributeData) {}
 
-CXFA_RunScripts::~CXFA_RunScripts() {}
+CXFA_RunScripts::~CXFA_RunScripts() = default;
diff --git a/xfa/fxfa/parser/cxfa_script.cpp b/xfa/fxfa/parser/cxfa_script.cpp
index 3f40c36..e24741d 100644
--- a/xfa/fxfa/parser/cxfa_script.cpp
+++ b/xfa/fxfa/parser/cxfa_script.cpp
@@ -16,6 +16,7 @@
     {XFA_Element::CurrentPage, 1, 0},
     {XFA_Element::RunScripts, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kScriptAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
@@ -29,8 +30,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kScriptName[] = L"script";
-
 }  // namespace
 
 CXFA_Script::CXFA_Script(CXFA_Document* doc, XFA_PacketType packet)
@@ -42,10 +41,9 @@
           XFA_Element::Script,
           kScriptPropertyData,
           kScriptAttributeData,
-          kScriptName,
           pdfium::MakeUnique<CJX_Script>(this)) {}
 
-CXFA_Script::~CXFA_Script() {}
+CXFA_Script::~CXFA_Script() = default;
 
 CXFA_Script::Type CXFA_Script::GetContentType() {
   Optional<WideString> cData =
diff --git a/xfa/fxfa/parser/cxfa_scriptmodel.cpp b/xfa/fxfa/parser/cxfa_scriptmodel.cpp
index e52db25..5109541 100644
--- a/xfa/fxfa/parser/cxfa_scriptmodel.cpp
+++ b/xfa/fxfa/parser/cxfa_scriptmodel.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kScriptModelName[] = L"scriptModel";
-
 }  // namespace
 
 CXFA_ScriptModel::CXFA_ScriptModel(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::ScriptModel,
                 nullptr,
-                kScriptModelAttributeData,
-                kScriptModelName) {}
+                kScriptModelAttributeData) {}
 
-CXFA_ScriptModel::~CXFA_ScriptModel() {}
+CXFA_ScriptModel::~CXFA_ScriptModel() = default;
diff --git a/xfa/fxfa/parser/cxfa_select.cpp b/xfa/fxfa/parser/cxfa_select.cpp
index 8b8feb8..dcff379 100644
--- a/xfa/fxfa/parser/cxfa_select.cpp
+++ b/xfa/fxfa/parser/cxfa_select.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSelectName[] = L"select";
-
 }  // namespace
 
 CXFA_Select::CXFA_Select(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::Select,
                 nullptr,
                 kSelectAttributeData,
-                kSelectName,
                 pdfium::MakeUnique<CJX_Select>(this)) {}
 
-CXFA_Select::~CXFA_Select() {}
+CXFA_Select::~CXFA_Select() = default;
diff --git a/xfa/fxfa/parser/cxfa_setproperty.cpp b/xfa/fxfa/parser/cxfa_setproperty.cpp
index c583869..6a5fc05 100644
--- a/xfa/fxfa/parser/cxfa_setproperty.cpp
+++ b/xfa/fxfa/parser/cxfa_setproperty.cpp
@@ -17,8 +17,6 @@
     {XFA_Attribute::Target, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSetPropertyName[] = L"setProperty";
-
 }  // namespace
 
 CXFA_SetProperty::CXFA_SetProperty(CXFA_Document* doc, XFA_PacketType packet)
@@ -29,7 +27,6 @@
                 XFA_Element::SetProperty,
                 nullptr,
                 kSetPropertyAttributeData,
-                kSetPropertyName,
                 pdfium::MakeUnique<CJX_SetProperty>(this)) {}
 
-CXFA_SetProperty::~CXFA_SetProperty() {}
+CXFA_SetProperty::~CXFA_SetProperty() = default;
diff --git a/xfa/fxfa/parser/cxfa_severity.cpp b/xfa/fxfa/parser/cxfa_severity.cpp
index d8b85de..8241f65 100644
--- a/xfa/fxfa/parser/cxfa_severity.cpp
+++ b/xfa/fxfa/parser/cxfa_severity.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSeverityName[] = L"severity";
-
 }  // namespace
 
 CXFA_Severity::CXFA_Severity(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::Severity,
                 nullptr,
-                kSeverityAttributeData,
-                kSeverityName) {}
+                kSeverityAttributeData) {}
 
-CXFA_Severity::~CXFA_Severity() {}
+CXFA_Severity::~CXFA_Severity() = default;
diff --git a/xfa/fxfa/parser/cxfa_sharptext.cpp b/xfa/fxfa/parser/cxfa_sharptext.cpp
index 077c7ce..61e7499 100644
--- a/xfa/fxfa/parser/cxfa_sharptext.cpp
+++ b/xfa/fxfa/parser/cxfa_sharptext.cpp
@@ -12,8 +12,6 @@
     {XFA_Attribute::Value, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSharptextName[] = L"#text";
-
 }  // namespace
 
 CXFA_Sharptext::CXFA_Sharptext(CXFA_Document* doc, XFA_PacketType packet)
@@ -25,7 +23,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::Sharptext,
                 nullptr,
-                kSharptextAttributeData,
-                kSharptextName) {}
+                kSharptextAttributeData) {}
 
-CXFA_Sharptext::~CXFA_Sharptext() {}
+CXFA_Sharptext::~CXFA_Sharptext() = default;
diff --git a/xfa/fxfa/parser/cxfa_sharpxhtml.cpp b/xfa/fxfa/parser/cxfa_sharpxhtml.cpp
index eb2d83d..9eaaa2d 100644
--- a/xfa/fxfa/parser/cxfa_sharpxhtml.cpp
+++ b/xfa/fxfa/parser/cxfa_sharpxhtml.cpp
@@ -12,8 +12,6 @@
     {XFA_Attribute::Value, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSharpxHTMLName[] = L"#xHTML";
-
 }  // namespace
 
 CXFA_SharpxHTML::CXFA_SharpxHTML(CXFA_Document* doc, XFA_PacketType packet)
@@ -25,7 +23,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::SharpxHTML,
                 nullptr,
-                kSharpxHTMLAttributeData,
-                kSharpxHTMLName) {}
+                kSharpxHTMLAttributeData) {}
 
-CXFA_SharpxHTML::~CXFA_SharpxHTML() {}
+CXFA_SharpxHTML::~CXFA_SharpxHTML() = default;
diff --git a/xfa/fxfa/parser/cxfa_sharpxml.cpp b/xfa/fxfa/parser/cxfa_sharpxml.cpp
index 2485795..a953474 100644
--- a/xfa/fxfa/parser/cxfa_sharpxml.cpp
+++ b/xfa/fxfa/parser/cxfa_sharpxml.cpp
@@ -12,8 +12,6 @@
     {XFA_Attribute::Value, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSharpxmlName[] = L"#xml";
-
 }  // namespace
 
 CXFA_Sharpxml::CXFA_Sharpxml(CXFA_Document* doc, XFA_PacketType packet)
@@ -23,7 +21,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::Sharpxml,
                 nullptr,
-                kSharpxmlAttributeData,
-                kSharpxmlName) {}
+                kSharpxmlAttributeData) {}
 
-CXFA_Sharpxml::~CXFA_Sharpxml() {}
+CXFA_Sharpxml::~CXFA_Sharpxml() = default;
diff --git a/xfa/fxfa/parser/cxfa_signature.cpp b/xfa/fxfa/parser/cxfa_signature.cpp
index 626755a..ce50d61 100644
--- a/xfa/fxfa/parser/cxfa_signature.cpp
+++ b/xfa/fxfa/parser/cxfa_signature.cpp
@@ -15,6 +15,7 @@
     {XFA_Element::Margin, 1, 0}, {XFA_Element::Filter, 1, 0},
     {XFA_Element::Border, 1, 0}, {XFA_Element::Manifest, 1, 0},
     {XFA_Element::Extras, 1, 0}, {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kSignatureAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -23,8 +24,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSignatureName[] = L"signature";
-
 }  // namespace
 
 CXFA_Signature::CXFA_Signature(CXFA_Document* doc, XFA_PacketType packet)
@@ -35,10 +34,9 @@
                 XFA_Element::Signature,
                 kSignaturePropertyData,
                 kSignatureAttributeData,
-                kSignatureName,
                 pdfium::MakeUnique<CJX_Signature>(this)) {}
 
-CXFA_Signature::~CXFA_Signature() {}
+CXFA_Signature::~CXFA_Signature() = default;
 
 XFA_FFWidgetType CXFA_Signature::GetDefaultFFWidgetType() const {
   return XFA_FFWidgetType::kSignature;
diff --git a/xfa/fxfa/parser/cxfa_signatureproperties.cpp b/xfa/fxfa/parser/cxfa_signatureproperties.cpp
index 0f2ca87..27844e9 100644
--- a/xfa/fxfa/parser/cxfa_signatureproperties.cpp
+++ b/xfa/fxfa/parser/cxfa_signatureproperties.cpp
@@ -16,8 +16,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSignaturePropertiesName[] = L"signatureProperties";
-
 }  // namespace
 
 CXFA_SignatureProperties::CXFA_SignatureProperties(CXFA_Document* doc,
@@ -29,7 +27,6 @@
                 XFA_Element::SignatureProperties,
                 nullptr,
                 kSignaturePropertiesAttributeData,
-                kSignaturePropertiesName,
                 pdfium::MakeUnique<CJX_SignatureProperties>(this)) {}
 
-CXFA_SignatureProperties::~CXFA_SignatureProperties() {}
+CXFA_SignatureProperties::~CXFA_SignatureProperties() = default;
diff --git a/xfa/fxfa/parser/cxfa_signdata.cpp b/xfa/fxfa/parser/cxfa_signdata.cpp
index 74966d5..183db3d 100644
--- a/xfa/fxfa/parser/cxfa_signdata.cpp
+++ b/xfa/fxfa/parser/cxfa_signdata.cpp
@@ -15,6 +15,7 @@
     {XFA_Element::Filter, 1, 0},
     {XFA_Element::Manifest, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kSignDataAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Ref, XFA_AttributeType::CData, nullptr},
@@ -25,8 +26,6 @@
     {XFA_Attribute::Target, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSignDataName[] = L"signData";
-
 }  // namespace
 
 CXFA_SignData::CXFA_SignData(CXFA_Document* doc, XFA_PacketType packet)
@@ -37,7 +36,6 @@
                 XFA_Element::SignData,
                 kSignDataPropertyData,
                 kSignDataAttributeData,
-                kSignDataName,
                 pdfium::MakeUnique<CJX_SignData>(this)) {}
 
-CXFA_SignData::~CXFA_SignData() {}
+CXFA_SignData::~CXFA_SignData() = default;
diff --git a/xfa/fxfa/parser/cxfa_signing.cpp b/xfa/fxfa/parser/cxfa_signing.cpp
index a4b4df7..a96de6f 100644
--- a/xfa/fxfa/parser/cxfa_signing.cpp
+++ b/xfa/fxfa/parser/cxfa_signing.cpp
@@ -19,8 +19,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSigningName[] = L"signing";
-
 }  // namespace
 
 CXFA_Signing::CXFA_Signing(CXFA_Document* doc, XFA_PacketType packet)
@@ -31,7 +29,6 @@
                 XFA_Element::Signing,
                 nullptr,
                 kSigningAttributeData,
-                kSigningName,
                 pdfium::MakeUnique<CJX_Signing>(this)) {}
 
-CXFA_Signing::~CXFA_Signing() {}
+CXFA_Signing::~CXFA_Signing() = default;
diff --git a/xfa/fxfa/parser/cxfa_silentprint.cpp b/xfa/fxfa/parser/cxfa_silentprint.cpp
index f7a2e7c..1c41e50 100644
--- a/xfa/fxfa/parser/cxfa_silentprint.cpp
+++ b/xfa/fxfa/parser/cxfa_silentprint.cpp
@@ -12,13 +12,12 @@
     {XFA_Element::AddSilentPrint, 1, 0},
     {XFA_Element::PrinterName, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kSilentPrintAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSilentPrintName[] = L"silentPrint";
-
 }  // namespace
 
 CXFA_SilentPrint::CXFA_SilentPrint(CXFA_Document* doc, XFA_PacketType packet)
@@ -28,7 +27,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::SilentPrint,
                 kSilentPrintPropertyData,
-                kSilentPrintAttributeData,
-                kSilentPrintName) {}
+                kSilentPrintAttributeData) {}
 
-CXFA_SilentPrint::~CXFA_SilentPrint() {}
+CXFA_SilentPrint::~CXFA_SilentPrint() = default;
diff --git a/xfa/fxfa/parser/cxfa_soapaction.cpp b/xfa/fxfa/parser/cxfa_soapaction.cpp
index 0ec62e3..a8e8b49 100644
--- a/xfa/fxfa/parser/cxfa_soapaction.cpp
+++ b/xfa/fxfa/parser/cxfa_soapaction.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSoapActionName[] = L"soapAction";
-
 }  // namespace
 
 CXFA_SoapAction::CXFA_SoapAction(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::SoapAction,
                 nullptr,
                 kSoapActionAttributeData,
-                kSoapActionName,
                 pdfium::MakeUnique<CJX_SoapAction>(this)) {}
 
-CXFA_SoapAction::~CXFA_SoapAction() {}
+CXFA_SoapAction::~CXFA_SoapAction() = default;
diff --git a/xfa/fxfa/parser/cxfa_soapaddress.cpp b/xfa/fxfa/parser/cxfa_soapaddress.cpp
index 24d9634..aded887 100644
--- a/xfa/fxfa/parser/cxfa_soapaddress.cpp
+++ b/xfa/fxfa/parser/cxfa_soapaddress.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSoapAddressName[] = L"soapAddress";
-
 }  // namespace
 
 CXFA_SoapAddress::CXFA_SoapAddress(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::SoapAddress,
                 nullptr,
                 kSoapAddressAttributeData,
-                kSoapAddressName,
                 pdfium::MakeUnique<CJX_SoapAddress>(this)) {}
 
-CXFA_SoapAddress::~CXFA_SoapAddress() {}
+CXFA_SoapAddress::~CXFA_SoapAddress() = default;
diff --git a/xfa/fxfa/parser/cxfa_solid.cpp b/xfa/fxfa/parser/cxfa_solid.cpp
index 9dc1636..0d06a63 100644
--- a/xfa/fxfa/parser/cxfa_solid.cpp
+++ b/xfa/fxfa/parser/cxfa_solid.cpp
@@ -14,14 +14,13 @@
 const CXFA_Node::PropertyData kSolidPropertyData[] = {
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kSolidAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSolidName[] = L"solid";
-
 }  // namespace
 
 CXFA_Solid::CXFA_Solid(CXFA_Document* doc, XFA_PacketType packet)
@@ -32,7 +31,6 @@
                 XFA_Element::Solid,
                 kSolidPropertyData,
                 kSolidAttributeData,
-                kSolidName,
                 pdfium::MakeUnique<CJX_Solid>(this)) {}
 
-CXFA_Solid::~CXFA_Solid() {}
+CXFA_Solid::~CXFA_Solid() = default;
diff --git a/xfa/fxfa/parser/cxfa_source.cpp b/xfa/fxfa/parser/cxfa_source.cpp
index 3f7dcec..05fdb1c 100644
--- a/xfa/fxfa/parser/cxfa_source.cpp
+++ b/xfa/fxfa/parser/cxfa_source.cpp
@@ -14,6 +14,7 @@
 const CXFA_Node::PropertyData kSourcePropertyData[] = {
     {XFA_Element::Connect, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kSourceAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
@@ -21,8 +22,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSourceName[] = L"source";
-
 }  // namespace
 
 CXFA_Source::CXFA_Source(CXFA_Document* doc, XFA_PacketType packet)
@@ -33,7 +32,6 @@
                 XFA_Element::Source,
                 kSourcePropertyData,
                 kSourceAttributeData,
-                kSourceName,
                 pdfium::MakeUnique<CJX_Source>(this)) {}
 
-CXFA_Source::~CXFA_Source() {}
+CXFA_Source::~CXFA_Source() = default;
diff --git a/xfa/fxfa/parser/cxfa_sourceset.cpp b/xfa/fxfa/parser/cxfa_sourceset.cpp
index cbc54b6..a968e4e 100644
--- a/xfa/fxfa/parser/cxfa_sourceset.cpp
+++ b/xfa/fxfa/parser/cxfa_sourceset.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSourceSetName[] = L"sourceSet";
-
 }  // namespace
 
 CXFA_SourceSet::CXFA_SourceSet(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::SourceSet,
                 nullptr,
                 kSourceSetAttributeData,
-                kSourceSetName,
                 pdfium::MakeUnique<CJX_SourceSet>(this)) {}
 
-CXFA_SourceSet::~CXFA_SourceSet() {}
+CXFA_SourceSet::~CXFA_SourceSet() = default;
diff --git a/xfa/fxfa/parser/cxfa_speak.cpp b/xfa/fxfa/parser/cxfa_speak.cpp
index 3043789..f72cd4b 100644
--- a/xfa/fxfa/parser/cxfa_speak.cpp
+++ b/xfa/fxfa/parser/cxfa_speak.cpp
@@ -21,8 +21,6 @@
     {XFA_Attribute::Disable, XFA_AttributeType::Boolean, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSpeakName[] = L"speak";
-
 }  // namespace
 
 CXFA_Speak::CXFA_Speak(CXFA_Document* doc, XFA_PacketType packet)
@@ -33,7 +31,6 @@
                 XFA_Element::Speak,
                 nullptr,
                 kSpeakAttributeData,
-                kSpeakName,
                 pdfium::MakeUnique<CJX_Speak>(this)) {}
 
-CXFA_Speak::~CXFA_Speak() {}
+CXFA_Speak::~CXFA_Speak() = default;
diff --git a/xfa/fxfa/parser/cxfa_staple.cpp b/xfa/fxfa/parser/cxfa_staple.cpp
index d2efc17..94f6c71 100644
--- a/xfa/fxfa/parser/cxfa_staple.cpp
+++ b/xfa/fxfa/parser/cxfa_staple.cpp
@@ -15,8 +15,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kStapleName[] = L"staple";
-
 }  // namespace
 
 CXFA_Staple::CXFA_Staple(CXFA_Document* doc, XFA_PacketType packet)
@@ -26,7 +24,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Staple,
                 nullptr,
-                kStapleAttributeData,
-                kStapleName) {}
+                kStapleAttributeData) {}
 
-CXFA_Staple::~CXFA_Staple() {}
+CXFA_Staple::~CXFA_Staple() = default;
diff --git a/xfa/fxfa/parser/cxfa_startnode.cpp b/xfa/fxfa/parser/cxfa_startnode.cpp
index 8d9573f..fa522f3 100644
--- a/xfa/fxfa/parser/cxfa_startnode.cpp
+++ b/xfa/fxfa/parser/cxfa_startnode.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kStartNodeName[] = L"startNode";
-
 }  // namespace
 
 CXFA_StartNode::CXFA_StartNode(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::StartNode,
                 nullptr,
-                kStartNodeAttributeData,
-                kStartNodeName) {}
+                kStartNodeAttributeData) {}
 
-CXFA_StartNode::~CXFA_StartNode() {}
+CXFA_StartNode::~CXFA_StartNode() = default;
diff --git a/xfa/fxfa/parser/cxfa_startpage.cpp b/xfa/fxfa/parser/cxfa_startpage.cpp
index 45f804a..dad34a7 100644
--- a/xfa/fxfa/parser/cxfa_startpage.cpp
+++ b/xfa/fxfa/parser/cxfa_startpage.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kStartPageName[] = L"startPage";
-
 }  // namespace
 
 CXFA_StartPage::CXFA_StartPage(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::StartPage,
                 nullptr,
-                kStartPageAttributeData,
-                kStartPageName) {}
+                kStartPageAttributeData) {}
 
-CXFA_StartPage::~CXFA_StartPage() {}
+CXFA_StartPage::~CXFA_StartPage() = default;
diff --git a/xfa/fxfa/parser/cxfa_stipple.cpp b/xfa/fxfa/parser/cxfa_stipple.cpp
index 19ca0ca..9d14146 100644
--- a/xfa/fxfa/parser/cxfa_stipple.cpp
+++ b/xfa/fxfa/parser/cxfa_stipple.cpp
@@ -16,6 +16,7 @@
     {XFA_Element::Color, 1, 0},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kStippleAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -23,8 +24,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kStippleName[] = L"stipple";
-
 }  // namespace
 
 CXFA_Stipple::CXFA_Stipple(CXFA_Document* doc, XFA_PacketType packet)
@@ -35,10 +34,9 @@
                 XFA_Element::Stipple,
                 kStipplePropertyData,
                 kStippleAttributeData,
-                kStippleName,
                 pdfium::MakeUnique<CJX_Stipple>(this)) {}
 
-CXFA_Stipple::~CXFA_Stipple() {}
+CXFA_Stipple::~CXFA_Stipple() = default;
 
 CXFA_Color* CXFA_Stipple::GetColorIfExists() {
   return GetChild<CXFA_Color>(0, XFA_Element::Color, false);
diff --git a/xfa/fxfa/parser/cxfa_stroke.cpp b/xfa/fxfa/parser/cxfa_stroke.cpp
index a85442f..cfce0ff 100644
--- a/xfa/fxfa/parser/cxfa_stroke.cpp
+++ b/xfa/fxfa/parser/cxfa_stroke.cpp
@@ -68,7 +68,6 @@
                          XFA_Element eType,
                          const PropertyData* properties,
                          const AttributeData* attributes,
-                         const WideStringView& elementName,
                          std::unique_ptr<CJX_Object> js_node)
     : CXFA_Node(pDoc,
                 ePacket,
@@ -77,7 +76,6 @@
                 eType,
                 properties,
                 attributes,
-                elementName,
                 std::move(js_node)) {}
 
 CXFA_Stroke::~CXFA_Stroke() = default;
diff --git a/xfa/fxfa/parser/cxfa_stroke.h b/xfa/fxfa/parser/cxfa_stroke.h
index 4c4036c..3854673 100644
--- a/xfa/fxfa/parser/cxfa_stroke.h
+++ b/xfa/fxfa/parser/cxfa_stroke.h
@@ -58,7 +58,6 @@
               XFA_Element eType,
               const PropertyData* properties,
               const AttributeData* attributes,
-              const WideStringView& elementName,
               std::unique_ptr<CJX_Object> js_node);
 };
 
diff --git a/xfa/fxfa/parser/cxfa_subform.cpp b/xfa/fxfa/parser/cxfa_subform.cpp
index 0a9b9ca..2d699d7 100644
--- a/xfa/fxfa/parser/cxfa_subform.cpp
+++ b/xfa/fxfa/parser/cxfa_subform.cpp
@@ -21,6 +21,7 @@
     {XFA_Element::Bookend, 1, 0}, {XFA_Element::Calculate, 1, 0},
     {XFA_Element::Extras, 1, 0},  {XFA_Element::Variables, 1, 0},
     {XFA_Element::Occur, 1, 0},   {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kSubformAttributeData[] = {
     {XFA_Attribute::H, XFA_AttributeType::Measure, (void*)L"0in"},
     {XFA_Attribute::W, XFA_AttributeType::Measure, (void*)L"0in"},
@@ -59,8 +60,6 @@
      (void*)XFA_AttributeValue::Name},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSubformName[] = L"subform";
-
 }  // namespace
 
 CXFA_Subform::CXFA_Subform(CXFA_Document* doc, XFA_PacketType packet)
@@ -71,7 +70,6 @@
                 XFA_Element::Subform,
                 kSubformPropertyData,
                 kSubformAttributeData,
-                kSubformName,
                 pdfium::MakeUnique<CJX_Subform>(this)) {}
 
-CXFA_Subform::~CXFA_Subform() {}
+CXFA_Subform::~CXFA_Subform() = default;
diff --git a/xfa/fxfa/parser/cxfa_subformset.cpp b/xfa/fxfa/parser/cxfa_subformset.cpp
index 1f61346..a292632 100644
--- a/xfa/fxfa/parser/cxfa_subformset.cpp
+++ b/xfa/fxfa/parser/cxfa_subformset.cpp
@@ -16,6 +16,7 @@
     {XFA_Element::Desc, 1, 0},   {XFA_Element::Bookend, 1, 0},
     {XFA_Element::Extras, 1, 0}, {XFA_Element::Occur, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kSubformSetAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
@@ -26,8 +27,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSubformSetName[] = L"subformSet";
-
 }  // namespace
 
 CXFA_SubformSet::CXFA_SubformSet(CXFA_Document* doc, XFA_PacketType packet)
@@ -38,7 +37,6 @@
                 XFA_Element::SubformSet,
                 kSubformSetPropertyData,
                 kSubformSetAttributeData,
-                kSubformSetName,
                 pdfium::MakeUnique<CJX_SubformSet>(this)) {}
 
-CXFA_SubformSet::~CXFA_SubformSet() {}
+CXFA_SubformSet::~CXFA_SubformSet() = default;
diff --git a/xfa/fxfa/parser/cxfa_subjectdn.cpp b/xfa/fxfa/parser/cxfa_subjectdn.cpp
index 15572ee..0698823 100644
--- a/xfa/fxfa/parser/cxfa_subjectdn.cpp
+++ b/xfa/fxfa/parser/cxfa_subjectdn.cpp
@@ -19,8 +19,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSubjectDNName[] = L"subjectDN";
-
 }  // namespace
 
 CXFA_SubjectDN::CXFA_SubjectDN(CXFA_Document* doc, XFA_PacketType packet)
@@ -31,7 +29,6 @@
                 XFA_Element::SubjectDN,
                 nullptr,
                 kSubjectDNAttributeData,
-                kSubjectDNName,
                 pdfium::MakeUnique<CJX_SubjectDN>(this)) {}
 
-CXFA_SubjectDN::~CXFA_SubjectDN() {}
+CXFA_SubjectDN::~CXFA_SubjectDN() = default;
diff --git a/xfa/fxfa/parser/cxfa_subjectdns.cpp b/xfa/fxfa/parser/cxfa_subjectdns.cpp
index a99662e..c927c94 100644
--- a/xfa/fxfa/parser/cxfa_subjectdns.cpp
+++ b/xfa/fxfa/parser/cxfa_subjectdns.cpp
@@ -19,8 +19,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSubjectDNsName[] = L"subjectDNs";
-
 }  // namespace
 
 CXFA_SubjectDNs::CXFA_SubjectDNs(CXFA_Document* doc, XFA_PacketType packet)
@@ -31,7 +29,6 @@
                 XFA_Element::SubjectDNs,
                 nullptr,
                 kSubjectDNsAttributeData,
-                kSubjectDNsName,
                 pdfium::MakeUnique<CJX_SubjectDNs>(this)) {}
 
-CXFA_SubjectDNs::~CXFA_SubjectDNs() {}
+CXFA_SubjectDNs::~CXFA_SubjectDNs() = default;
diff --git a/xfa/fxfa/parser/cxfa_submit.cpp b/xfa/fxfa/parser/cxfa_submit.cpp
index 9d9c816..6b77df7 100644
--- a/xfa/fxfa/parser/cxfa_submit.cpp
+++ b/xfa/fxfa/parser/cxfa_submit.cpp
@@ -14,6 +14,7 @@
 const CXFA_Node::PropertyData kSubmitPropertyData[] = {
     {XFA_Element::Encrypt, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kSubmitAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -26,8 +27,6 @@
     {XFA_Attribute::XdpContent, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSubmitName[] = L"submit";
-
 }  // namespace
 
 CXFA_Submit::CXFA_Submit(CXFA_Document* doc, XFA_PacketType packet)
@@ -38,10 +37,9 @@
                 XFA_Element::Submit,
                 kSubmitPropertyData,
                 kSubmitAttributeData,
-                kSubmitName,
                 pdfium::MakeUnique<CJX_Submit>(this)) {}
 
-CXFA_Submit::~CXFA_Submit() {}
+CXFA_Submit::~CXFA_Submit() = default;
 
 bool CXFA_Submit::IsSubmitEmbedPDF() {
   return JSObject()->GetBoolean(XFA_Attribute::EmbedPDF);
diff --git a/xfa/fxfa/parser/cxfa_submitformat.cpp b/xfa/fxfa/parser/cxfa_submitformat.cpp
index 68fa882..b175936 100644
--- a/xfa/fxfa/parser/cxfa_submitformat.cpp
+++ b/xfa/fxfa/parser/cxfa_submitformat.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSubmitFormatName[] = L"submitFormat";
-
 }  // namespace
 
 CXFA_SubmitFormat::CXFA_SubmitFormat(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::SubmitFormat,
                 nullptr,
-                kSubmitFormatAttributeData,
-                kSubmitFormatName) {}
+                kSubmitFormatAttributeData) {}
 
-CXFA_SubmitFormat::~CXFA_SubmitFormat() {}
+CXFA_SubmitFormat::~CXFA_SubmitFormat() = default;
diff --git a/xfa/fxfa/parser/cxfa_submiturl.cpp b/xfa/fxfa/parser/cxfa_submiturl.cpp
index 4d5181d..a0dcece 100644
--- a/xfa/fxfa/parser/cxfa_submiturl.cpp
+++ b/xfa/fxfa/parser/cxfa_submiturl.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSubmitUrlName[] = L"submitUrl";
-
 }  // namespace
 
 CXFA_SubmitUrl::CXFA_SubmitUrl(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::SubmitUrl,
                 nullptr,
-                kSubmitUrlAttributeData,
-                kSubmitUrlName) {}
+                kSubmitUrlAttributeData) {}
 
-CXFA_SubmitUrl::~CXFA_SubmitUrl() {}
+CXFA_SubmitUrl::~CXFA_SubmitUrl() = default;
diff --git a/xfa/fxfa/parser/cxfa_subsetbelow.cpp b/xfa/fxfa/parser/cxfa_subsetbelow.cpp
index a2ba9d6..a33c504 100644
--- a/xfa/fxfa/parser/cxfa_subsetbelow.cpp
+++ b/xfa/fxfa/parser/cxfa_subsetbelow.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSubsetBelowName[] = L"subsetBelow";
-
 }  // namespace
 
 CXFA_SubsetBelow::CXFA_SubsetBelow(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::SubsetBelow,
                 nullptr,
-                kSubsetBelowAttributeData,
-                kSubsetBelowName) {}
+                kSubsetBelowAttributeData) {}
 
-CXFA_SubsetBelow::~CXFA_SubsetBelow() {}
+CXFA_SubsetBelow::~CXFA_SubsetBelow() = default;
diff --git a/xfa/fxfa/parser/cxfa_suppressbanner.cpp b/xfa/fxfa/parser/cxfa_suppressbanner.cpp
index 2656ba9..b72cea1 100644
--- a/xfa/fxfa/parser/cxfa_suppressbanner.cpp
+++ b/xfa/fxfa/parser/cxfa_suppressbanner.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kSuppressBannerName[] = L"suppressBanner";
-
 }  // namespace
 
 CXFA_SuppressBanner::CXFA_SuppressBanner(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::SuppressBanner,
                 nullptr,
-                kSuppressBannerAttributeData,
-                kSuppressBannerName) {}
+                kSuppressBannerAttributeData) {}
 
-CXFA_SuppressBanner::~CXFA_SuppressBanner() {}
+CXFA_SuppressBanner::~CXFA_SuppressBanner() = default;
diff --git a/xfa/fxfa/parser/cxfa_tagged.cpp b/xfa/fxfa/parser/cxfa_tagged.cpp
index eac328e..7a8884d 100644
--- a/xfa/fxfa/parser/cxfa_tagged.cpp
+++ b/xfa/fxfa/parser/cxfa_tagged.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kTaggedName[] = L"tagged";
-
 }  // namespace
 
 CXFA_Tagged::CXFA_Tagged(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Tagged,
                 nullptr,
-                kTaggedAttributeData,
-                kTaggedName) {}
+                kTaggedAttributeData) {}
 
-CXFA_Tagged::~CXFA_Tagged() {}
+CXFA_Tagged::~CXFA_Tagged() = default;
diff --git a/xfa/fxfa/parser/cxfa_template.cpp b/xfa/fxfa/parser/cxfa_template.cpp
index fe0609e..eefd755 100644
--- a/xfa/fxfa/parser/cxfa_template.cpp
+++ b/xfa/fxfa/parser/cxfa_template.cpp
@@ -16,6 +16,7 @@
     {XFA_Element::StartPage, 1, 0}, {XFA_Element::Relevant, 1, 0},
     {XFA_Element::Base, 1, 0},      {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kTemplateAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::BaseProfile, XFA_AttributeType::Enum,
@@ -23,8 +24,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kTemplateName[] = L"template";
-
 }  // namespace
 
 CXFA_Template::CXFA_Template(CXFA_Document* doc, XFA_PacketType packet)
@@ -36,7 +35,6 @@
           XFA_Element::Template,
           kTemplatePropertyData,
           kTemplateAttributeData,
-          kTemplateName,
           pdfium::MakeUnique<CJX_Template>(this)) {}
 
-CXFA_Template::~CXFA_Template() {}
+CXFA_Template::~CXFA_Template() = default;
diff --git a/xfa/fxfa/parser/cxfa_templatecache.cpp b/xfa/fxfa/parser/cxfa_templatecache.cpp
index e66223b..31aaeea 100644
--- a/xfa/fxfa/parser/cxfa_templatecache.cpp
+++ b/xfa/fxfa/parser/cxfa_templatecache.cpp
@@ -14,8 +14,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kTemplateCacheName[] = L"templateCache";
-
 }  // namespace
 
 CXFA_TemplateCache::CXFA_TemplateCache(CXFA_Document* doc,
@@ -26,7 +24,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::TemplateCache,
                 nullptr,
-                kTemplateCacheAttributeData,
-                kTemplateCacheName) {}
+                kTemplateCacheAttributeData) {}
 
-CXFA_TemplateCache::~CXFA_TemplateCache() {}
+CXFA_TemplateCache::~CXFA_TemplateCache() = default;
diff --git a/xfa/fxfa/parser/cxfa_text.cpp b/xfa/fxfa/parser/cxfa_text.cpp
index 818fb22..6b882ef 100644
--- a/xfa/fxfa/parser/cxfa_text.cpp
+++ b/xfa/fxfa/parser/cxfa_text.cpp
@@ -20,8 +20,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kTextName[] = L"text";
-
 }  // namespace
 
 CXFA_Text::CXFA_Text(CXFA_Document* doc, XFA_PacketType packet)
@@ -33,10 +31,9 @@
                 XFA_Element::Text,
                 nullptr,
                 kTextAttributeData,
-                kTextName,
                 pdfium::MakeUnique<CJX_Text>(this)) {}
 
-CXFA_Text::~CXFA_Text() {}
+CXFA_Text::~CXFA_Text() = default;
 
 WideString CXFA_Text::GetContent() {
   return JSObject()->GetContent(false);
diff --git a/xfa/fxfa/parser/cxfa_textedit.cpp b/xfa/fxfa/parser/cxfa_textedit.cpp
index 881c194..0f64dc1 100644
--- a/xfa/fxfa/parser/cxfa_textedit.cpp
+++ b/xfa/fxfa/parser/cxfa_textedit.cpp
@@ -17,6 +17,7 @@
     {XFA_Element::Comb, 1, 0},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kTextEditAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::VScrollPolicy, XFA_AttributeType::Enum,
@@ -29,8 +30,6 @@
      (void*)XFA_AttributeValue::Auto},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kTextEditName[] = L"textEdit";
-
 }  // namespace
 
 CXFA_TextEdit::CXFA_TextEdit(CXFA_Document* doc, XFA_PacketType packet)
@@ -41,10 +40,9 @@
                 XFA_Element::TextEdit,
                 kTextEditPropertyData,
                 kTextEditAttributeData,
-                kTextEditName,
                 pdfium::MakeUnique<CJX_TextEdit>(this)) {}
 
-CXFA_TextEdit::~CXFA_TextEdit() {}
+CXFA_TextEdit::~CXFA_TextEdit() = default;
 
 XFA_FFWidgetType CXFA_TextEdit::GetDefaultFFWidgetType() const {
   return XFA_FFWidgetType::kTextEdit;
diff --git a/xfa/fxfa/parser/cxfa_thisproxy.cpp b/xfa/fxfa/parser/cxfa_thisproxy.cpp
index 60a90b0..3654409 100644
--- a/xfa/fxfa/parser/cxfa_thisproxy.cpp
+++ b/xfa/fxfa/parser/cxfa_thisproxy.cpp
@@ -13,8 +13,7 @@
 CXFA_ThisProxy::CXFA_ThisProxy(CXFA_Node* pThisNode, CXFA_Node* pScriptNode)
     : CXFA_Object(pThisNode->GetDocument(),
                   XFA_ObjectType::ThisProxy,
-                  XFA_Element::Unknown,
-                  WideStringView(),
+                  XFA_Element::Object,
                   pdfium::MakeUnique<CJX_Object>(this)),
       m_pThisNode(pThisNode),
       m_pScriptNode(pScriptNode) {}
diff --git a/xfa/fxfa/parser/cxfa_threshold.cpp b/xfa/fxfa/parser/cxfa_threshold.cpp
index dc41c53..a7f05b0 100644
--- a/xfa/fxfa/parser/cxfa_threshold.cpp
+++ b/xfa/fxfa/parser/cxfa_threshold.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kThresholdName[] = L"threshold";
-
 }  // namespace
 
 CXFA_Threshold::CXFA_Threshold(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::Threshold,
                 nullptr,
-                kThresholdAttributeData,
-                kThresholdName) {}
+                kThresholdAttributeData) {}
 
-CXFA_Threshold::~CXFA_Threshold() {}
+CXFA_Threshold::~CXFA_Threshold() = default;
diff --git a/xfa/fxfa/parser/cxfa_time.cpp b/xfa/fxfa/parser/cxfa_time.cpp
index 15f0478..41cd86a 100644
--- a/xfa/fxfa/parser/cxfa_time.cpp
+++ b/xfa/fxfa/parser/cxfa_time.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kTimeName[] = L"time";
-
 }  // namespace
 
 CXFA_Time::CXFA_Time(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::Time,
                 nullptr,
                 kTimeAttributeData,
-                kTimeName,
                 pdfium::MakeUnique<CJX_Time>(this)) {}
 
-CXFA_Time::~CXFA_Time() {}
+CXFA_Time::~CXFA_Time() = default;
diff --git a/xfa/fxfa/parser/cxfa_timepattern.cpp b/xfa/fxfa/parser/cxfa_timepattern.cpp
index f8cb7cf..2a5617f 100644
--- a/xfa/fxfa/parser/cxfa_timepattern.cpp
+++ b/xfa/fxfa/parser/cxfa_timepattern.cpp
@@ -13,8 +13,6 @@
      (void*)XFA_AttributeValue::Med},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kTimePatternName[] = L"timePattern";
-
 }  // namespace
 
 CXFA_TimePattern::CXFA_TimePattern(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::TimePattern,
                 nullptr,
-                kTimePatternAttributeData,
-                kTimePatternName) {}
+                kTimePatternAttributeData) {}
 
-CXFA_TimePattern::~CXFA_TimePattern() {}
+CXFA_TimePattern::~CXFA_TimePattern() = default;
diff --git a/xfa/fxfa/parser/cxfa_timepatterns.cpp b/xfa/fxfa/parser/cxfa_timepatterns.cpp
index da4e187..3cce7b3 100644
--- a/xfa/fxfa/parser/cxfa_timepatterns.cpp
+++ b/xfa/fxfa/parser/cxfa_timepatterns.cpp
@@ -12,8 +12,6 @@
     {XFA_Element::TimePattern, 4, 0},
     {XFA_Element::Unknown, 0, 0}};
 
-constexpr wchar_t kTimePatternsName[] = L"timePatterns";
-
 }  // namespace
 
 CXFA_TimePatterns::CXFA_TimePatterns(CXFA_Document* doc, XFA_PacketType packet)
@@ -23,7 +21,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::TimePatterns,
                 kTimePatternsPropertyData,
-                nullptr,
-                kTimePatternsName) {}
+                nullptr) {}
 
-CXFA_TimePatterns::~CXFA_TimePatterns() {}
+CXFA_TimePatterns::~CXFA_TimePatterns() = default;
diff --git a/xfa/fxfa/parser/cxfa_timestamp.cpp b/xfa/fxfa/parser/cxfa_timestamp.cpp
index 3258abc..3bfef61 100644
--- a/xfa/fxfa/parser/cxfa_timestamp.cpp
+++ b/xfa/fxfa/parser/cxfa_timestamp.cpp
@@ -19,8 +19,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kTimeStampName[] = L"timeStamp";
-
 }  // namespace
 
 CXFA_TimeStamp::CXFA_TimeStamp(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::TimeStamp,
                 nullptr,
-                kTimeStampAttributeData,
-                kTimeStampName) {}
+                kTimeStampAttributeData) {}
 
-CXFA_TimeStamp::~CXFA_TimeStamp() {}
+CXFA_TimeStamp::~CXFA_TimeStamp() = default;
diff --git a/xfa/fxfa/parser/cxfa_to.cpp b/xfa/fxfa/parser/cxfa_to.cpp
index 745f015..9836ea8 100644
--- a/xfa/fxfa/parser/cxfa_to.cpp
+++ b/xfa/fxfa/parser/cxfa_to.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kToName[] = L"to";
-
 }  // namespace
 
 CXFA_To::CXFA_To(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::To,
                 nullptr,
-                kToAttributeData,
-                kToName) {}
+                kToAttributeData) {}
 
-CXFA_To::~CXFA_To() {}
+CXFA_To::~CXFA_To() = default;
diff --git a/xfa/fxfa/parser/cxfa_tooltip.cpp b/xfa/fxfa/parser/cxfa_tooltip.cpp
index 85ebb2b..c721626 100644
--- a/xfa/fxfa/parser/cxfa_tooltip.cpp
+++ b/xfa/fxfa/parser/cxfa_tooltip.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kToolTipName[] = L"toolTip";
-
 }  // namespace
 
 CXFA_ToolTip::CXFA_ToolTip(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::ToolTip,
                 nullptr,
                 kToolTipAttributeData,
-                kToolTipName,
                 pdfium::MakeUnique<CJX_ToolTip>(this)) {}
 
-CXFA_ToolTip::~CXFA_ToolTip() {}
+CXFA_ToolTip::~CXFA_ToolTip() = default;
diff --git a/xfa/fxfa/parser/cxfa_trace.cpp b/xfa/fxfa/parser/cxfa_trace.cpp
index 8503816..955d55b 100644
--- a/xfa/fxfa/parser/cxfa_trace.cpp
+++ b/xfa/fxfa/parser/cxfa_trace.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kTraceName[] = L"trace";
-
 }  // namespace
 
 CXFA_Trace::CXFA_Trace(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Trace,
                 nullptr,
-                kTraceAttributeData,
-                kTraceName) {}
+                kTraceAttributeData) {}
 
-CXFA_Trace::~CXFA_Trace() {}
+CXFA_Trace::~CXFA_Trace() = default;
diff --git a/xfa/fxfa/parser/cxfa_transform.cpp b/xfa/fxfa/parser/cxfa_transform.cpp
index 03c5178..a3de7df 100644
--- a/xfa/fxfa/parser/cxfa_transform.cpp
+++ b/xfa/fxfa/parser/cxfa_transform.cpp
@@ -13,14 +13,13 @@
     {XFA_Element::IfEmpty, 1, 0},     {XFA_Element::Presence, 1, 0},
     {XFA_Element::Picture, 1, 0},     {XFA_Element::NameAttr, 1, 0},
     {XFA_Element::GroupParent, 1, 0}, {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kTransformAttributeData[] = {
     {XFA_Attribute::Ref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kTransformName[] = L"transform";
-
 }  // namespace
 
 CXFA_Transform::CXFA_Transform(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +29,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Transform,
                 kTransformPropertyData,
-                kTransformAttributeData,
-                kTransformName) {}
+                kTransformAttributeData) {}
 
-CXFA_Transform::~CXFA_Transform() {}
+CXFA_Transform::~CXFA_Transform() = default;
diff --git a/xfa/fxfa/parser/cxfa_traversal.cpp b/xfa/fxfa/parser/cxfa_traversal.cpp
index cb327a0..158d346 100644
--- a/xfa/fxfa/parser/cxfa_traversal.cpp
+++ b/xfa/fxfa/parser/cxfa_traversal.cpp
@@ -14,14 +14,13 @@
 const CXFA_Node::PropertyData kTraversalPropertyData[] = {
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kTraversalAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kTraversalName[] = L"traversal";
-
 }  // namespace
 
 CXFA_Traversal::CXFA_Traversal(CXFA_Document* doc, XFA_PacketType packet)
@@ -32,7 +31,6 @@
                 XFA_Element::Traversal,
                 kTraversalPropertyData,
                 kTraversalAttributeData,
-                kTraversalName,
                 pdfium::MakeUnique<CJX_Traversal>(this)) {}
 
-CXFA_Traversal::~CXFA_Traversal() {}
+CXFA_Traversal::~CXFA_Traversal() = default;
diff --git a/xfa/fxfa/parser/cxfa_traverse.cpp b/xfa/fxfa/parser/cxfa_traverse.cpp
index 3325ef8..59f0415 100644
--- a/xfa/fxfa/parser/cxfa_traverse.cpp
+++ b/xfa/fxfa/parser/cxfa_traverse.cpp
@@ -15,6 +15,7 @@
     {XFA_Element::Script, 1, 0},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kTraverseAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Ref, XFA_AttributeType::CData, nullptr},
@@ -24,8 +25,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kTraverseName[] = L"traverse";
-
 }  // namespace
 
 CXFA_Traverse::CXFA_Traverse(CXFA_Document* doc, XFA_PacketType packet)
@@ -36,7 +35,6 @@
                 XFA_Element::Traverse,
                 kTraversePropertyData,
                 kTraverseAttributeData,
-                kTraverseName,
                 pdfium::MakeUnique<CJX_Traverse>(this)) {}
 
 CXFA_Traverse::~CXFA_Traverse() {}
diff --git a/xfa/fxfa/parser/cxfa_treelist.cpp b/xfa/fxfa/parser/cxfa_treelist.cpp
index 1c1ab2d..3d0f748 100644
--- a/xfa/fxfa/parser/cxfa_treelist.cpp
+++ b/xfa/fxfa/parser/cxfa_treelist.cpp
@@ -17,7 +17,6 @@
     : CXFA_List(pDocument,
                 XFA_ObjectType::TreeList,
                 XFA_Element::TreeList,
-                WideStringView(L"treeList"),
                 pdfium::MakeUnique<CJX_TreeList>(this)) {}
 
 CXFA_TreeList::~CXFA_TreeList() = default;
diff --git a/xfa/fxfa/parser/cxfa_type.cpp b/xfa/fxfa/parser/cxfa_type.cpp
index 56274ce..bfaa66c 100644
--- a/xfa/fxfa/parser/cxfa_type.cpp
+++ b/xfa/fxfa/parser/cxfa_type.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kTypeName[] = L"type";
-
 }  // namespace
 
 CXFA_Type::CXFA_Type(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Type,
                 nullptr,
-                kTypeAttributeData,
-                kTypeName) {}
+                kTypeAttributeData) {}
 
-CXFA_Type::~CXFA_Type() {}
+CXFA_Type::~CXFA_Type() = default;
diff --git a/xfa/fxfa/parser/cxfa_typeface.cpp b/xfa/fxfa/parser/cxfa_typeface.cpp
index 0e480eb..80e674b 100644
--- a/xfa/fxfa/parser/cxfa_typeface.cpp
+++ b/xfa/fxfa/parser/cxfa_typeface.cpp
@@ -12,8 +12,6 @@
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kTypefaceName[] = L"typeface";
-
 }  // namespace
 
 CXFA_Typeface::CXFA_Typeface(CXFA_Document* doc, XFA_PacketType packet)
@@ -23,7 +21,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Typeface,
                 nullptr,
-                kTypefaceAttributeData,
-                kTypefaceName) {}
+                kTypefaceAttributeData) {}
 
-CXFA_Typeface::~CXFA_Typeface() {}
+CXFA_Typeface::~CXFA_Typeface() = default;
diff --git a/xfa/fxfa/parser/cxfa_typefaces.cpp b/xfa/fxfa/parser/cxfa_typefaces.cpp
index 13d2e85..562e254 100644
--- a/xfa/fxfa/parser/cxfa_typefaces.cpp
+++ b/xfa/fxfa/parser/cxfa_typefaces.cpp
@@ -6,12 +6,6 @@
 
 #include "xfa/fxfa/parser/cxfa_typefaces.h"
 
-namespace {
-
-constexpr wchar_t kTypefacesName[] = L"typefaces";
-
-}  // namespace
-
 CXFA_Typefaces::CXFA_Typefaces(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
                 packet,
@@ -19,7 +13,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Typefaces,
                 nullptr,
-                nullptr,
-                kTypefacesName) {}
+                nullptr) {}
 
-CXFA_Typefaces::~CXFA_Typefaces() {}
+CXFA_Typefaces::~CXFA_Typefaces() = default;
diff --git a/xfa/fxfa/parser/cxfa_ui.cpp b/xfa/fxfa/parser/cxfa_ui.cpp
index 8729b92..134703f 100644
--- a/xfa/fxfa/parser/cxfa_ui.cpp
+++ b/xfa/fxfa/parser/cxfa_ui.cpp
@@ -26,14 +26,13 @@
     {XFA_Element::TextEdit, 1, XFA_PROPERTYFLAG_OneOf},
     {XFA_Element::Extras, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kUiAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kUiName[] = L"ui";
-
 }  // namespace
 
 CXFA_Ui::CXFA_Ui(CXFA_Document* doc, XFA_PacketType packet)
@@ -44,10 +43,9 @@
                 XFA_Element::Ui,
                 kUiPropertyData,
                 kUiAttributeData,
-                kUiName,
                 pdfium::MakeUnique<CJX_Ui>(this)) {}
 
-CXFA_Ui::~CXFA_Ui() {}
+CXFA_Ui::~CXFA_Ui() = default;
 
 bool CXFA_Ui::IsAOneOfChild(CXFA_Node* child) const {
   for (auto& prop : kUiPropertyData) {
diff --git a/xfa/fxfa/parser/cxfa_update.cpp b/xfa/fxfa/parser/cxfa_update.cpp
index 78378d0..c7a9169 100644
--- a/xfa/fxfa/parser/cxfa_update.cpp
+++ b/xfa/fxfa/parser/cxfa_update.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kUpdateName[] = L"update";
-
 }  // namespace
 
 CXFA_Update::CXFA_Update(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::Update,
                 nullptr,
                 kUpdateAttributeData,
-                kUpdateName,
                 pdfium::MakeUnique<CJX_Update>(this)) {}
 
-CXFA_Update::~CXFA_Update() {}
+CXFA_Update::~CXFA_Update() = default;
diff --git a/xfa/fxfa/parser/cxfa_uri.cpp b/xfa/fxfa/parser/cxfa_uri.cpp
index 74b3b87..186e676 100644
--- a/xfa/fxfa/parser/cxfa_uri.cpp
+++ b/xfa/fxfa/parser/cxfa_uri.cpp
@@ -20,8 +20,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kUriName[] = L"uri";
-
 }  // namespace
 
 CXFA_Uri::CXFA_Uri(CXFA_Document* doc, XFA_PacketType packet)
@@ -32,7 +30,6 @@
                 XFA_Element::Uri,
                 nullptr,
                 kUriAttributeData,
-                kUriName,
                 pdfium::MakeUnique<CJX_Uri>(this)) {}
 
-CXFA_Uri::~CXFA_Uri() {}
+CXFA_Uri::~CXFA_Uri() = default;
diff --git a/xfa/fxfa/parser/cxfa_user.cpp b/xfa/fxfa/parser/cxfa_user.cpp
index b0f9778..bd608c4 100644
--- a/xfa/fxfa/parser/cxfa_user.cpp
+++ b/xfa/fxfa/parser/cxfa_user.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kUserName[] = L"user";
-
 }  // namespace
 
 CXFA_User::CXFA_User(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::User,
                 nullptr,
                 kUserAttributeData,
-                kUserName,
                 pdfium::MakeUnique<CJX_User>(this)) {}
 
-CXFA_User::~CXFA_User() {}
+CXFA_User::~CXFA_User() = default;
diff --git a/xfa/fxfa/parser/cxfa_validate.cpp b/xfa/fxfa/parser/cxfa_validate.cpp
index 2514c49..7b3f611 100644
--- a/xfa/fxfa/parser/cxfa_validate.cpp
+++ b/xfa/fxfa/parser/cxfa_validate.cpp
@@ -36,7 +36,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kValidateName[] = L"validate";
 constexpr wchar_t kFormatTest[] = L"formatTest";
 constexpr wchar_t kNullTest[] = L"nullTest";
 constexpr wchar_t kScriptTest[] = L"scriptTest";
@@ -52,10 +51,9 @@
           XFA_Element::Validate,
           kValidatePropertyData,
           kValidateAttributeData,
-          kValidateName,
           pdfium::MakeUnique<CJX_Validate>(this)) {}
 
-CXFA_Validate::~CXFA_Validate() {}
+CXFA_Validate::~CXFA_Validate() = default;
 
 XFA_AttributeValue CXFA_Validate::GetFormatTest() {
   return JSObject()->GetEnum(XFA_Attribute::FormatTest);
diff --git a/xfa/fxfa/parser/cxfa_validateapprovalsignatures.cpp b/xfa/fxfa/parser/cxfa_validateapprovalsignatures.cpp
index b86fa64..e196e35 100644
--- a/xfa/fxfa/parser/cxfa_validateapprovalsignatures.cpp
+++ b/xfa/fxfa/parser/cxfa_validateapprovalsignatures.cpp
@@ -13,9 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kValidateApprovalSignaturesName[] =
-    L"validateApprovalSignatures";
-
 }  // namespace
 
 CXFA_ValidateApprovalSignatures::CXFA_ValidateApprovalSignatures(
@@ -27,7 +24,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::ValidateApprovalSignatures,
                 nullptr,
-                kValidateApprovalSignaturesAttributeData,
-                kValidateApprovalSignaturesName) {}
+                kValidateApprovalSignaturesAttributeData) {}
 
-CXFA_ValidateApprovalSignatures::~CXFA_ValidateApprovalSignatures() {}
+CXFA_ValidateApprovalSignatures::~CXFA_ValidateApprovalSignatures() = default;
diff --git a/xfa/fxfa/parser/cxfa_validationmessaging.cpp b/xfa/fxfa/parser/cxfa_validationmessaging.cpp
index 75267a0..6f44da7 100644
--- a/xfa/fxfa/parser/cxfa_validationmessaging.cpp
+++ b/xfa/fxfa/parser/cxfa_validationmessaging.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kValidationMessagingName[] = L"validationMessaging";
-
 }  // namespace
 
 CXFA_ValidationMessaging::CXFA_ValidationMessaging(CXFA_Document* doc,
@@ -25,7 +23,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::ValidationMessaging,
                 nullptr,
-                kValidationMessagingAttributeData,
-                kValidationMessagingName) {}
+                kValidationMessagingAttributeData) {}
 
-CXFA_ValidationMessaging::~CXFA_ValidationMessaging() {}
+CXFA_ValidationMessaging::~CXFA_ValidationMessaging() = default;
diff --git a/xfa/fxfa/parser/cxfa_value.cpp b/xfa/fxfa/parser/cxfa_value.cpp
index b06eebf..97344b0 100644
--- a/xfa/fxfa/parser/cxfa_value.cpp
+++ b/xfa/fxfa/parser/cxfa_value.cpp
@@ -32,6 +32,7 @@
     {XFA_Element::Float, 1, XFA_PROPERTYFLAG_OneOf},
     {XFA_Element::Line, 1, XFA_PROPERTYFLAG_OneOf},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kValueAttributeData[] = {
     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
@@ -40,8 +41,6 @@
     {XFA_Attribute::Override, XFA_AttributeType::Boolean, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kValueName[] = L"value";
-
 }  // namespace
 
 CXFA_Value::CXFA_Value(CXFA_Document* doc, XFA_PacketType packet)
@@ -52,10 +51,9 @@
                 XFA_Element::Value,
                 kValuePropertyData,
                 kValueAttributeData,
-                kValueName,
                 pdfium::MakeUnique<CJX_Value>(this)) {}
 
-CXFA_Value::~CXFA_Value() {}
+CXFA_Value::~CXFA_Value() = default;
 
 XFA_Element CXFA_Value::GetChildValueClassID() const {
   CXFA_Node* pNode = GetFirstChild();
diff --git a/xfa/fxfa/parser/cxfa_variables.cpp b/xfa/fxfa/parser/cxfa_variables.cpp
index 7dee73c..58340c8 100644
--- a/xfa/fxfa/parser/cxfa_variables.cpp
+++ b/xfa/fxfa/parser/cxfa_variables.cpp
@@ -17,8 +17,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kVariablesName[] = L"variables";
-
 }  // namespace
 
 CXFA_Variables::CXFA_Variables(CXFA_Document* doc, XFA_PacketType packet)
@@ -29,7 +27,6 @@
                 XFA_Element::Variables,
                 nullptr,
                 kVariablesAttributeData,
-                kVariablesName,
                 pdfium::MakeUnique<CJX_Variables>(this)) {}
 
-CXFA_Variables::~CXFA_Variables() {}
+CXFA_Variables::~CXFA_Variables() = default;
diff --git a/xfa/fxfa/parser/cxfa_version.cpp b/xfa/fxfa/parser/cxfa_version.cpp
index ca16548..9e07a86 100644
--- a/xfa/fxfa/parser/cxfa_version.cpp
+++ b/xfa/fxfa/parser/cxfa_version.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kVersionName[] = L"version";
-
 }  // namespace
 
 CXFA_Version::CXFA_Version(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::ContentNode,
                 XFA_Element::Version,
                 nullptr,
-                kVersionAttributeData,
-                kVersionName) {}
+                kVersionAttributeData) {}
 
-CXFA_Version::~CXFA_Version() {}
+CXFA_Version::~CXFA_Version() = default;
diff --git a/xfa/fxfa/parser/cxfa_versioncontrol.cpp b/xfa/fxfa/parser/cxfa_versioncontrol.cpp
index 78db73c..46db99d 100644
--- a/xfa/fxfa/parser/cxfa_versioncontrol.cpp
+++ b/xfa/fxfa/parser/cxfa_versioncontrol.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kVersionControlName[] = L"versionControl";
-
 }  // namespace
 
 CXFA_VersionControl::CXFA_VersionControl(CXFA_Document* doc,
@@ -30,7 +28,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::VersionControl,
                 nullptr,
-                kVersionControlAttributeData,
-                kVersionControlName) {}
+                kVersionControlAttributeData) {}
 
-CXFA_VersionControl::~CXFA_VersionControl() {}
+CXFA_VersionControl::~CXFA_VersionControl() = default;
diff --git a/xfa/fxfa/parser/cxfa_viewerpreferences.cpp b/xfa/fxfa/parser/cxfa_viewerpreferences.cpp
index 3efb1c5..f861355 100644
--- a/xfa/fxfa/parser/cxfa_viewerpreferences.cpp
+++ b/xfa/fxfa/parser/cxfa_viewerpreferences.cpp
@@ -19,13 +19,12 @@
     {XFA_Element::ADBE_JSDebugger, 1, 0},
     {XFA_Element::PickTrayByPDFSize, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kViewerPreferencesAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kViewerPreferencesName[] = L"viewerPreferences";
-
 }  // namespace
 
 CXFA_ViewerPreferences::CXFA_ViewerPreferences(CXFA_Document* doc,
@@ -36,7 +35,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::ViewerPreferences,
                 kViewerPreferencesPropertyData,
-                kViewerPreferencesAttributeData,
-                kViewerPreferencesName) {}
+                kViewerPreferencesAttributeData) {}
 
-CXFA_ViewerPreferences::~CXFA_ViewerPreferences() {}
+CXFA_ViewerPreferences::~CXFA_ViewerPreferences() = default;
diff --git a/xfa/fxfa/parser/cxfa_webclient.cpp b/xfa/fxfa/parser/cxfa_webclient.cpp
index 8c8f987..8441c5d 100644
--- a/xfa/fxfa/parser/cxfa_webclient.cpp
+++ b/xfa/fxfa/parser/cxfa_webclient.cpp
@@ -12,14 +12,13 @@
     {XFA_Element::FontInfo, 1, 0},
     {XFA_Element::Xdc, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kWebClientAttributeData[] = {
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kWebClientName[] = L"webClient";
-
 }  // namespace
 
 CXFA_WebClient::CXFA_WebClient(CXFA_Document* doc, XFA_PacketType packet)
@@ -29,7 +28,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::WebClient,
                 kWebClientPropertyData,
-                kWebClientAttributeData,
-                kWebClientName) {}
+                kWebClientAttributeData) {}
 
-CXFA_WebClient::~CXFA_WebClient() {}
+CXFA_WebClient::~CXFA_WebClient() = default;
diff --git a/xfa/fxfa/parser/cxfa_whitespace.cpp b/xfa/fxfa/parser/cxfa_whitespace.cpp
index f4fa7de..9b20749 100644
--- a/xfa/fxfa/parser/cxfa_whitespace.cpp
+++ b/xfa/fxfa/parser/cxfa_whitespace.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kWhitespaceName[] = L"whitespace";
-
 }  // namespace
 
 CXFA_Whitespace::CXFA_Whitespace(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::Whitespace,
                 nullptr,
-                kWhitespaceAttributeData,
-                kWhitespaceName) {}
+                kWhitespaceAttributeData) {}
 
-CXFA_Whitespace::~CXFA_Whitespace() {}
+CXFA_Whitespace::~CXFA_Whitespace() = default;
diff --git a/xfa/fxfa/parser/cxfa_window.cpp b/xfa/fxfa/parser/cxfa_window.cpp
index 4aded52..5793033 100644
--- a/xfa/fxfa/parser/cxfa_window.cpp
+++ b/xfa/fxfa/parser/cxfa_window.cpp
@@ -13,8 +13,6 @@
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kWindowName[] = L"window";
-
 }  // namespace
 
 CXFA_Window::CXFA_Window(CXFA_Document* doc, XFA_PacketType packet)
@@ -24,7 +22,6 @@
                 XFA_ObjectType::NodeV,
                 XFA_Element::Window,
                 nullptr,
-                kWindowAttributeData,
-                kWindowName) {}
+                kWindowAttributeData) {}
 
-CXFA_Window::~CXFA_Window() {}
+CXFA_Window::~CXFA_Window() = default;
diff --git a/xfa/fxfa/parser/cxfa_wsdladdress.cpp b/xfa/fxfa/parser/cxfa_wsdladdress.cpp
index abe35c8..47b8bc4 100644
--- a/xfa/fxfa/parser/cxfa_wsdladdress.cpp
+++ b/xfa/fxfa/parser/cxfa_wsdladdress.cpp
@@ -18,8 +18,6 @@
     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kWsdlAddressName[] = L"wsdlAddress";
-
 }  // namespace
 
 CXFA_WsdlAddress::CXFA_WsdlAddress(CXFA_Document* doc, XFA_PacketType packet)
@@ -30,7 +28,6 @@
                 XFA_Element::WsdlAddress,
                 nullptr,
                 kWsdlAddressAttributeData,
-                kWsdlAddressName,
                 pdfium::MakeUnique<CJX_WsdlAddress>(this)) {}
 
-CXFA_WsdlAddress::~CXFA_WsdlAddress() {}
+CXFA_WsdlAddress::~CXFA_WsdlAddress() = default;
diff --git a/xfa/fxfa/parser/cxfa_wsdlconnection.cpp b/xfa/fxfa/parser/cxfa_wsdlconnection.cpp
index 1073f4f..d70d529 100644
--- a/xfa/fxfa/parser/cxfa_wsdlconnection.cpp
+++ b/xfa/fxfa/parser/cxfa_wsdlconnection.cpp
@@ -19,13 +19,12 @@
     {XFA_Element::EffectiveOutputPolicy, 1, 0},
     {XFA_Element::EffectiveInputPolicy, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kWsdlConnectionAttributeData[] = {
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::DataDescription, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kWsdlConnectionName[] = L"wsdlConnection";
-
 }  // namespace
 
 CXFA_WsdlConnection::CXFA_WsdlConnection(CXFA_Document* doc,
@@ -37,7 +36,6 @@
                 XFA_Element::WsdlConnection,
                 kWsdlConnectionPropertyData,
                 kWsdlConnectionAttributeData,
-                kWsdlConnectionName,
                 pdfium::MakeUnique<CJX_WsdlConnection>(this)) {}
 
-CXFA_WsdlConnection::~CXFA_WsdlConnection() {}
+CXFA_WsdlConnection::~CXFA_WsdlConnection() = default;
diff --git a/xfa/fxfa/parser/cxfa_xdc.cpp b/xfa/fxfa/parser/cxfa_xdc.cpp
index 7701cd4..8bb9b3e 100644
--- a/xfa/fxfa/parser/cxfa_xdc.cpp
+++ b/xfa/fxfa/parser/cxfa_xdc.cpp
@@ -12,13 +12,12 @@
     {XFA_Element::Uri, 1, 0},
     {XFA_Element::Xsl, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kXdcAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kXdcName[] = L"xdc";
-
 }  // namespace
 
 CXFA_Xdc::CXFA_Xdc(CXFA_Document* doc, XFA_PacketType packet)
@@ -28,7 +27,6 @@
                 XFA_ObjectType::ModelNode,
                 XFA_Element::Xdc,
                 kXdcPropertyData,
-                kXdcAttributeData,
-                kXdcName) {}
+                kXdcAttributeData) {}
 
-CXFA_Xdc::~CXFA_Xdc() {}
+CXFA_Xdc::~CXFA_Xdc() = default;
diff --git a/xfa/fxfa/parser/cxfa_xdp.cpp b/xfa/fxfa/parser/cxfa_xdp.cpp
index 5f01dfd..8395b8d 100644
--- a/xfa/fxfa/parser/cxfa_xdp.cpp
+++ b/xfa/fxfa/parser/cxfa_xdp.cpp
@@ -11,13 +11,12 @@
 const CXFA_Node::PropertyData kXdpPropertyData[] = {
     {XFA_Element::Packets, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kXdpAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kXdpName[] = L"xdp";
-
 }  // namespace
 
 CXFA_Xdp::CXFA_Xdp(CXFA_Document* doc, XFA_PacketType packet)
@@ -27,7 +26,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Xdp,
                 kXdpPropertyData,
-                kXdpAttributeData,
-                kXdpName) {}
+                kXdpAttributeData) {}
 
-CXFA_Xdp::~CXFA_Xdp() {}
+CXFA_Xdp::~CXFA_Xdp() = default;
diff --git a/xfa/fxfa/parser/cxfa_xfa.cpp b/xfa/fxfa/parser/cxfa_xfa.cpp
index 1eb658e..00b2320 100644
--- a/xfa/fxfa/parser/cxfa_xfa.cpp
+++ b/xfa/fxfa/parser/cxfa_xfa.cpp
@@ -16,8 +16,6 @@
     {XFA_Attribute::Uuid, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kXfaName[] = L"xfa";
-
 }  // namespace
 
 CXFA_Xfa::CXFA_Xfa(CXFA_Document* doc, XFA_PacketType packet)
@@ -28,7 +26,6 @@
                 XFA_Element::Xfa,
                 nullptr,
                 kXfaAttributeData,
-                kXfaName,
                 pdfium::MakeUnique<CJX_Xfa>(this)) {}
 
-CXFA_Xfa::~CXFA_Xfa() {}
+CXFA_Xfa::~CXFA_Xfa() = default;
diff --git a/xfa/fxfa/parser/cxfa_xmlconnection.cpp b/xfa/fxfa/parser/cxfa_xmlconnection.cpp
index 31a1e41..41e1816 100644
--- a/xfa/fxfa/parser/cxfa_xmlconnection.cpp
+++ b/xfa/fxfa/parser/cxfa_xmlconnection.cpp
@@ -14,13 +14,12 @@
 const CXFA_Node::PropertyData kXmlConnectionPropertyData[] = {
     {XFA_Element::Uri, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kXmlConnectionAttributeData[] = {
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::DataDescription, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kXmlConnectionName[] = L"xmlConnection";
-
 }  // namespace
 
 CXFA_XmlConnection::CXFA_XmlConnection(CXFA_Document* doc,
@@ -32,7 +31,6 @@
                 XFA_Element::XmlConnection,
                 kXmlConnectionPropertyData,
                 kXmlConnectionAttributeData,
-                kXmlConnectionName,
                 pdfium::MakeUnique<CJX_XmlConnection>(this)) {}
 
-CXFA_XmlConnection::~CXFA_XmlConnection() {}
+CXFA_XmlConnection::~CXFA_XmlConnection() = default;
diff --git a/xfa/fxfa/parser/cxfa_xsdconnection.cpp b/xfa/fxfa/parser/cxfa_xsdconnection.cpp
index 06d8bd7..68c3319 100644
--- a/xfa/fxfa/parser/cxfa_xsdconnection.cpp
+++ b/xfa/fxfa/parser/cxfa_xsdconnection.cpp
@@ -15,13 +15,12 @@
     {XFA_Element::Uri, 1, 0},
     {XFA_Element::RootElement, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kXsdConnectionAttributeData[] = {
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::DataDescription, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kXsdConnectionName[] = L"xsdConnection";
-
 }  // namespace
 
 CXFA_XsdConnection::CXFA_XsdConnection(CXFA_Document* doc,
@@ -33,7 +32,6 @@
                 XFA_Element::XsdConnection,
                 kXsdConnectionPropertyData,
                 kXsdConnectionAttributeData,
-                kXsdConnectionName,
                 pdfium::MakeUnique<CJX_XsdConnection>(this)) {}
 
-CXFA_XsdConnection::~CXFA_XsdConnection() {}
+CXFA_XsdConnection::~CXFA_XsdConnection() = default;
diff --git a/xfa/fxfa/parser/cxfa_xsl.cpp b/xfa/fxfa/parser/cxfa_xsl.cpp
index 651250c..fc47a339 100644
--- a/xfa/fxfa/parser/cxfa_xsl.cpp
+++ b/xfa/fxfa/parser/cxfa_xsl.cpp
@@ -12,13 +12,12 @@
     {XFA_Element::Uri, 1, 0},
     {XFA_Element::Debug, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kXslAttributeData[] = {
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kXslName[] = L"xsl";
-
 }  // namespace
 
 CXFA_Xsl::CXFA_Xsl(CXFA_Document* doc, XFA_PacketType packet)
@@ -28,7 +27,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Xsl,
                 kXslPropertyData,
-                kXslAttributeData,
-                kXslName) {}
+                kXslAttributeData) {}
 
-CXFA_Xsl::~CXFA_Xsl() {}
+CXFA_Xsl::~CXFA_Xsl() = default;
diff --git a/xfa/fxfa/parser/cxfa_zpl.cpp b/xfa/fxfa/parser/cxfa_zpl.cpp
index 76fb44b..2f2f8fd 100644
--- a/xfa/fxfa/parser/cxfa_zpl.cpp
+++ b/xfa/fxfa/parser/cxfa_zpl.cpp
@@ -14,14 +14,13 @@
     {XFA_Element::BatchOutput, 1, 0},
     {XFA_Element::FlipLabel, 1, 0},
     {XFA_Element::Unknown, 0, 0}};
+
 const CXFA_Node::AttributeData kZplAttributeData[] = {
     {XFA_Attribute::Name, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Desc, XFA_AttributeType::CData, nullptr},
     {XFA_Attribute::Lock, XFA_AttributeType::Integer, (void*)0},
     {XFA_Attribute::Unknown, XFA_AttributeType::Integer, nullptr}};
 
-constexpr wchar_t kZplName[] = L"zpl";
-
 }  // namespace
 
 CXFA_Zpl::CXFA_Zpl(CXFA_Document* doc, XFA_PacketType packet)
@@ -31,7 +30,6 @@
                 XFA_ObjectType::Node,
                 XFA_Element::Zpl,
                 kZplPropertyData,
-                kZplAttributeData,
-                kZplName) {}
+                kZplAttributeData) {}
 
-CXFA_Zpl::~CXFA_Zpl() {}
+CXFA_Zpl::~CXFA_Zpl() = default;
diff --git a/xfa/fxfa/parser/elements.inc b/xfa/fxfa/parser/elements.inc
index c7689e4..76457e2 100644
--- a/xfa/fxfa/parser/elements.inc
+++ b/xfa/fxfa/parser/elements.inc
@@ -311,20 +311,20 @@
 ELEM____(0xfc78159fu, "numberSymbol", NumberSymbol, Node)
 ELEM____(0xfcbd606cu, "tagged", Tagged, Node)
 ELEM____(0xff063802u, "items", Items, Node)
-ELEM____(0xffffffffu, "******", SignaturePseudoModel, Object)
-ELEM____(0xffffffffu, "******", EventPseudoModel, Object)
-ELEM____(0xffffffffu, "******", HostPseudoModel, Object)
-ELEM____(0xffffffffu, "******", LayoutPseudoModel, Object)
-ELEM____(0xffffffffu, "******", DataWindow, Object)
-ELEM____(0xffffffffu, "******", TreeList, Placeholder1)
-ELEM____(0xffffffffu, "******", LogPseudoModel, Object)
-ELEM____(0xffffffffu, "******", List, ListDuplicate)
-ELEM____(0xffffffffu, "******", Object, Unknown)
+ELEM____(0xffffffffu, "signaturePseudoModel", SignaturePseudoModel, Object)
+ELEM____(0xffffffffu, "eventPseudoModel", EventPseudoModel, Object)
+ELEM____(0xffffffffu, "hostPseudoModel", HostPseudoModel, Object)
+ELEM____(0xffffffffu, "layoutPseudoModel", LayoutPseudoModel, Object)
+ELEM____(0xffffffffu, "dataWindow", DataWindow, Object)
+ELEM____(0xffffffffu, "treeList,", TreeList, Placeholder1)
+ELEM____(0xffffffffu, "logPseudoModel", LogPseudoModel, Object)
+ELEM____(0xffffffffu, "list", List, ListDuplicate)
+ELEM____(0xffffffffu, "object", Object, Unknown)
 ELEM____(0xffffffffu, "******", ListDuplicate, Object)
 ELEM____(0xffffffffu, "******", Placeholder1, ListDuplicate)
-ELEM____(0xffffffffu, "******", Tree, Object)
-ELEM____(0xffffffffu, "******", Node, Tree)
+ELEM____(0xffffffffu, "tree", Tree, Object)
+ELEM____(0xffffffffu, "node", Node, Tree)
 ELEM____(0xffffffffu, "******", Placeholder2, Node)
 ELEM____(0xffffffffu, "******", Placeholder3, Node)
-ELEM____(0xffffffffu, "******", Model, Node)
+ELEM____(0xffffffffu, "model", Model, Node)
 ELEM____(0xffffffffu, "******", Placeholder4, Node)
diff --git a/xfa/fxfa/parser/xfa_basic_data_unittest.cpp b/xfa/fxfa/parser/xfa_basic_data_unittest.cpp
index d0abe64..d2a2872 100644
--- a/xfa/fxfa/parser/xfa_basic_data_unittest.cpp
+++ b/xfa/fxfa/parser/xfa_basic_data_unittest.cpp
@@ -22,8 +22,8 @@
   EXPECT_EQ("conformance", XFA_ElementToName(XFA_Element::Conformance));
   EXPECT_EQ("tagged", XFA_ElementToName(XFA_Element::Tagged));
 
-  // Internal elements resolve to some sort of name.
-  EXPECT_EQ("******", XFA_ElementToName(XFA_Element::Node));
+  // Internal elements resolve back to real names.
+  EXPECT_EQ("node", XFA_ElementToName(XFA_Element::Node));
 }
 
 TEST(XFABasicDataTest, GetAttributeByName) {
diff --git a/xfa/fxfa/parser/xfa_utils.cpp b/xfa/fxfa/parser/xfa_utils.cpp
index 566556e..15fbd6f 100644
--- a/xfa/fxfa/parser/xfa_utils.cpp
+++ b/xfa/fxfa/parser/xfa_utils.cpp
@@ -297,7 +297,7 @@
 
   if (!wsChildren.IsEmpty() || !wsAttrs.IsEmpty() ||
       pNode->JSObject()->HasAttribute(XFA_Attribute::Name)) {
-    WideStringView wsElement = pNode->GetClassName();
+    WideString wsElement = WideString::FromASCII(pNode->GetClassName());
     WideString wsName;
     SaveAttribute(pNode, XFA_Attribute::Name, L"name", true, wsName);
     buf << "<";
@@ -330,7 +330,7 @@
     return;
   }
 
-  WideString wsElement(pNode->GetClassName());
+  WideString wsElement = WideString::FromASCII(pNode->GetClassName());
   pStream->WriteString("<");
   pStream->WriteString(wsElement.ToUTF8().AsStringView());
 
