Remove cxfa_node_statics.cpp.
CXFA_Node::Create belongs in cxfa_node.cpp.
The other methods have nothing to do with nodes and belong in
xfa_basic_data.cpp.
Change-Id: I6b81b1e16dc3423f17a20d85f2d017beb2725c2c
Reviewed-on: https://pdfium-review.googlesource.com/c/47010
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fxjs/cfxjse_engine.cpp b/fxjs/cfxjse_engine.cpp
index ec492cb..633315f 100644
--- a/fxjs/cfxjse_engine.cpp
+++ b/fxjs/cfxjse_engine.cpp
@@ -383,7 +383,7 @@
CXFA_Node* pNode = ToNode(pObject);
CXFA_Node* pPropOrChild = nullptr;
- XFA_Element eType = CXFA_Node::NameToElement(wsPropName);
+ XFA_Element eType = XFA_GetElementByName(wsPropName);
if (eType != XFA_Element::Unknown) {
pPropOrChild =
pNode->JSObject()->GetOrCreateProperty<CXFA_Node>(0, eType);
diff --git a/fxjs/cfxjse_resolveprocessor.cpp b/fxjs/cfxjse_resolveprocessor.cpp
index a85df15..0bc7e0c 100644
--- a/fxjs/cfxjse_resolveprocessor.cpp
+++ b/fxjs/cfxjse_resolveprocessor.cpp
@@ -349,7 +349,7 @@
0, XFA_Element::Occur);
}
} else {
- XFA_Element eType = CXFA_Node::NameToElement(wsName);
+ XFA_Element eType = XFA_GetElementByName(wsName);
if (eType == XFA_Element::PageSet) {
pProp = curNode->AsNode()->JSObject()->GetProperty<CXFA_Node>(0, eType);
} else if (eType != XFA_Element::Unknown) {
diff --git a/fxjs/xfa/cjx_model.cpp b/fxjs/xfa/cjx_model.cpp
index 61004e2..c9b6519 100644
--- a/fxjs/xfa/cjx_model.cpp
+++ b/fxjs/xfa/cjx_model.cpp
@@ -13,6 +13,7 @@
#include "fxjs/js_resources.h"
#include "xfa/fxfa/parser/cxfa_delta.h"
#include "xfa/fxfa/parser/cxfa_document.h"
+#include "xfa/fxfa/parser/xfa_basic_data.h"
const CJX_MethodSpec CJX_Model::MethodSpecs[] = {
{"clearErrorList", clearErrorList_static},
@@ -46,7 +47,7 @@
nameSpace = runtime->ToWideString(params[2]);
WideString tagName = runtime->ToWideString(params[0]);
- XFA_Element eType = CXFA_Node::NameToElement(tagName);
+ XFA_Element eType = XFA_GetElementByName(tagName);
CXFA_Node* pNewNode = GetXFANode()->CreateSamePacketNode(eType);
if (!pNewNode)
return CJS_Result::Success(runtime->NewNull());
diff --git a/fxjs/xfa/cjx_node.cpp b/fxjs/xfa/cjx_node.cpp
index 623839d..25c3f69 100644
--- a/fxjs/xfa/cjx_node.cpp
+++ b/fxjs/xfa/cjx_node.cpp
@@ -24,6 +24,7 @@
#include "xfa/fxfa/parser/cxfa_document.h"
#include "xfa/fxfa/parser/cxfa_document_parser.h"
#include "xfa/fxfa/parser/cxfa_node.h"
+#include "xfa/fxfa/parser/xfa_basic_data.h"
#include "xfa/fxfa/parser/xfa_utils.h"
namespace {
@@ -205,8 +206,8 @@
WideString expression = runtime->ToWideString(params[0]);
int32_t iValue = params.size() >= 2 ? runtime->ToInt32(params[1]) : 0;
- CXFA_Node* pNode = GetOrCreateProperty<CXFA_Node>(
- iValue, CXFA_Node::NameToElement(expression));
+ CXFA_Node* pNode =
+ GetOrCreateProperty<CXFA_Node>(iValue, XFA_GetElementByName(expression));
if (!pNode)
return CJS_Result::Success(runtime->NewNull());
@@ -226,13 +227,13 @@
return CJS_Result::Failure(JSMessage::kParamError);
WideString expression = runtime->ToWideString(params[0]);
- XFA_Attribute attr = CXFA_Node::NameToAttribute(expression.AsStringView());
+ XFA_Attribute attr = XFA_GetAttributeByName(expression.AsStringView());
if (attr != XFA_Attribute::Unknown && HasAttribute(attr))
return CJS_Result::Success(runtime->NewBoolean(true));
bool bParent = params.size() < 2 || runtime->ToBoolean(params[1]);
int32_t iIndex = params.size() == 3 ? runtime->ToInt32(params[2]) : 0;
- XFA_Element eType = CXFA_Node::NameToElement(expression);
+ XFA_Element eType = XFA_GetElementByName(expression);
bool bHas = !!GetOrCreateProperty<CXFA_Node>(iIndex, eType);
if (!bHas && bParent && GetXFANode()->GetParent()) {
// Also check on the parent.
diff --git a/fxjs/xfa/cjx_object.cpp b/fxjs/xfa/cjx_object.cpp
index c59a6a5..a2311d4 100644
--- a/fxjs/xfa/cjx_object.cpp
+++ b/fxjs/xfa/cjx_object.cpp
@@ -255,7 +255,7 @@
void CJX_Object::SetAttribute(const WideStringView& wsAttr,
const WideStringView& wsValue,
bool bNotify) {
- XFA_Attribute attr = CXFA_Node::NameToAttribute(wsValue);
+ XFA_Attribute attr = XFA_GetAttributeByName(wsValue);
if (attr != XFA_Attribute::Unknown) {
SetAttribute(attr, wsValue, bNotify);
return;
@@ -313,7 +313,7 @@
Optional<WideString> CJX_Object::TryAttribute(const WideStringView& wsAttr,
bool bUseDefault) {
- XFA_Attribute attr = CXFA_Node::NameToAttribute(wsAttr);
+ XFA_Attribute attr = XFA_GetAttributeByName(wsAttr);
if (attr != XFA_Attribute::Unknown)
return TryAttribute(attr, bUseDefault);
@@ -346,7 +346,7 @@
CFX_XMLElement* elem = SetValue(eAttr, XFA_AttributeType::Boolean,
(void*)(uintptr_t)bValue, bNotify);
if (elem)
- elem->SetAttribute(CXFA_Node::AttributeToName(eAttr), bValue ? L"1" : L"0");
+ elem->SetAttribute(XFA_AttributeToName(eAttr), bValue ? L"1" : L"0");
}
bool CJX_Object::GetBoolean(XFA_Attribute eAttr) {
@@ -357,7 +357,7 @@
CFX_XMLElement* elem = SetValue(eAttr, XFA_AttributeType::Integer,
(void*)(uintptr_t)iValue, bNotify);
if (elem) {
- elem->SetAttribute(CXFA_Node::AttributeToName(eAttr),
+ elem->SetAttribute(XFA_AttributeToName(eAttr),
WideString::Format(L"%d", iValue));
}
}
@@ -398,7 +398,7 @@
CFX_XMLElement* elem = SetValue(eAttr, XFA_AttributeType::Enum,
(void*)(uintptr_t)eValue, bNotify);
if (elem) {
- elem->SetAttribute(CXFA_Node::AttributeToName(eAttr),
+ elem->SetAttribute(XFA_AttributeToName(eAttr),
WideString::FromASCII(XFA_AttributeValueToName(eValue)));
}
}
@@ -479,7 +479,7 @@
return;
}
- WideString wsAttrName = CXFA_Node::AttributeToName(eAttr);
+ WideString wsAttrName = XFA_AttributeToName(eAttr);
if (eAttr == XFA_Attribute::ContentType)
wsAttrName = L"xfa:" + wsAttrName;
diff --git a/xfa/fxfa/parser/BUILD.gn b/xfa/fxfa/parser/BUILD.gn
index 26c3fc5..e40497f 100644
--- a/xfa/fxfa/parser/BUILD.gn
+++ b/xfa/fxfa/parser/BUILD.gn
@@ -396,7 +396,6 @@
"cxfa_neverembed.h",
"cxfa_node.cpp",
"cxfa_node.h",
- "cxfa_node_statics.cpp",
"cxfa_nodehelper.cpp",
"cxfa_nodehelper.h",
"cxfa_nodeiteratortemplate.h",
diff --git a/xfa/fxfa/parser/cxfa_document_parser.cpp b/xfa/fxfa/parser/cxfa_document_parser.cpp
index 6ce215a..5157020 100644
--- a/xfa/fxfa/parser/cxfa_document_parser.cpp
+++ b/xfa/fxfa/parser/cxfa_document_parser.cpp
@@ -773,7 +773,7 @@
case FX_XMLNODE_Element: {
CFX_XMLElement* pXMLElement = static_cast<CFX_XMLElement*>(pXMLChild);
WideString wsTagName = pXMLElement->GetLocalTagName();
- XFA_Element eType = CXFA_Node::NameToElement(wsTagName);
+ XFA_Element eType = XFA_GetElementByName(wsTagName);
if (eType == XFA_Element::Unknown)
continue;
@@ -801,7 +801,7 @@
IsNeedValue = false;
XFA_Attribute attr =
- CXFA_Node::NameToAttribute(wsAttrName.AsStringView());
+ XFA_GetAttributeByName(wsAttrName.AsStringView());
if (attr == XFA_Attribute::Unknown)
continue;
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp
index f10926d..ba5f4c5 100644
--- a/xfa/fxfa/parser/cxfa_node.cpp
+++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -42,36 +42,320 @@
#include "xfa/fxfa/cxfa_ffwidget.h"
#include "xfa/fxfa/cxfa_fontmgr.h"
#include "xfa/fxfa/cxfa_textprovider.h"
+#include "xfa/fxfa/parser/cxfa_accessiblecontent.h"
+#include "xfa/fxfa/parser/cxfa_acrobat.h"
+#include "xfa/fxfa/parser/cxfa_acrobat7.h"
+#include "xfa/fxfa/parser/cxfa_adbe_jsconsole.h"
+#include "xfa/fxfa/parser/cxfa_adbe_jsdebugger.h"
+#include "xfa/fxfa/parser/cxfa_addsilentprint.h"
+#include "xfa/fxfa/parser/cxfa_addviewerpreferences.h"
+#include "xfa/fxfa/parser/cxfa_adjustdata.h"
+#include "xfa/fxfa/parser/cxfa_adobeextensionlevel.h"
+#include "xfa/fxfa/parser/cxfa_agent.h"
+#include "xfa/fxfa/parser/cxfa_alwaysembed.h"
+#include "xfa/fxfa/parser/cxfa_amd.h"
+#include "xfa/fxfa/parser/cxfa_appearancefilter.h"
+#include "xfa/fxfa/parser/cxfa_arc.h"
+#include "xfa/fxfa/parser/cxfa_area.h"
#include "xfa/fxfa/parser/cxfa_arraynodelist.h"
+#include "xfa/fxfa/parser/cxfa_assist.h"
#include "xfa/fxfa/parser/cxfa_attachnodelist.h"
+#include "xfa/fxfa/parser/cxfa_attributes.h"
+#include "xfa/fxfa/parser/cxfa_autosave.h"
+#include "xfa/fxfa/parser/cxfa_barcode.h"
+#include "xfa/fxfa/parser/cxfa_base.h"
+#include "xfa/fxfa/parser/cxfa_batchoutput.h"
+#include "xfa/fxfa/parser/cxfa_behavioroverride.h"
#include "xfa/fxfa/parser/cxfa_bind.h"
+#include "xfa/fxfa/parser/cxfa_binditems.h"
+#include "xfa/fxfa/parser/cxfa_bookend.h"
+#include "xfa/fxfa/parser/cxfa_boolean.h"
#include "xfa/fxfa/parser/cxfa_border.h"
+#include "xfa/fxfa/parser/cxfa_break.h"
+#include "xfa/fxfa/parser/cxfa_breakafter.h"
+#include "xfa/fxfa/parser/cxfa_breakbefore.h"
+#include "xfa/fxfa/parser/cxfa_button.h"
+#include "xfa/fxfa/parser/cxfa_cache.h"
#include "xfa/fxfa/parser/cxfa_calculate.h"
+#include "xfa/fxfa/parser/cxfa_calendarsymbols.h"
#include "xfa/fxfa/parser/cxfa_caption.h"
+#include "xfa/fxfa/parser/cxfa_certificate.h"
+#include "xfa/fxfa/parser/cxfa_certificates.h"
+#include "xfa/fxfa/parser/cxfa_change.h"
+#include "xfa/fxfa/parser/cxfa_checkbutton.h"
+#include "xfa/fxfa/parser/cxfa_choicelist.h"
+#include "xfa/fxfa/parser/cxfa_color.h"
#include "xfa/fxfa/parser/cxfa_comb.h"
+#include "xfa/fxfa/parser/cxfa_command.h"
+#include "xfa/fxfa/parser/cxfa_common.h"
+#include "xfa/fxfa/parser/cxfa_compress.h"
+#include "xfa/fxfa/parser/cxfa_compression.h"
+#include "xfa/fxfa/parser/cxfa_compresslogicalstructure.h"
+#include "xfa/fxfa/parser/cxfa_compressobjectstream.h"
+#include "xfa/fxfa/parser/cxfa_config.h"
+#include "xfa/fxfa/parser/cxfa_conformance.h"
+#include "xfa/fxfa/parser/cxfa_connect.h"
+#include "xfa/fxfa/parser/cxfa_connectionset.h"
+#include "xfa/fxfa/parser/cxfa_connectstring.h"
+#include "xfa/fxfa/parser/cxfa_contentarea.h"
+#include "xfa/fxfa/parser/cxfa_contentcopy.h"
+#include "xfa/fxfa/parser/cxfa_copies.h"
+#include "xfa/fxfa/parser/cxfa_corner.h"
+#include "xfa/fxfa/parser/cxfa_creator.h"
+#include "xfa/fxfa/parser/cxfa_currencysymbol.h"
+#include "xfa/fxfa/parser/cxfa_currencysymbols.h"
+#include "xfa/fxfa/parser/cxfa_currentpage.h"
+#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datagroup.h"
+#include "xfa/fxfa/parser/cxfa_datamodel.h"
+#include "xfa/fxfa/parser/cxfa_datavalue.h"
+#include "xfa/fxfa/parser/cxfa_date.h"
+#include "xfa/fxfa/parser/cxfa_datepattern.h"
+#include "xfa/fxfa/parser/cxfa_datepatterns.h"
+#include "xfa/fxfa/parser/cxfa_datetime.h"
+#include "xfa/fxfa/parser/cxfa_datetimeedit.h"
+#include "xfa/fxfa/parser/cxfa_datetimesymbols.h"
+#include "xfa/fxfa/parser/cxfa_day.h"
+#include "xfa/fxfa/parser/cxfa_daynames.h"
+#include "xfa/fxfa/parser/cxfa_debug.h"
#include "xfa/fxfa/parser/cxfa_decimal.h"
+#include "xfa/fxfa/parser/cxfa_defaulttypeface.h"
+#include "xfa/fxfa/parser/cxfa_defaultui.h"
+#include "xfa/fxfa/parser/cxfa_delete.h"
+#include "xfa/fxfa/parser/cxfa_delta.h"
+#include "xfa/fxfa/parser/cxfa_deltas.h"
+#include "xfa/fxfa/parser/cxfa_desc.h"
+#include "xfa/fxfa/parser/cxfa_destination.h"
+#include "xfa/fxfa/parser/cxfa_digestmethod.h"
+#include "xfa/fxfa/parser/cxfa_digestmethods.h"
#include "xfa/fxfa/parser/cxfa_document.h"
#include "xfa/fxfa/parser/cxfa_document_parser.h"
+#include "xfa/fxfa/parser/cxfa_documentassembly.h"
+#include "xfa/fxfa/parser/cxfa_draw.h"
+#include "xfa/fxfa/parser/cxfa_driver.h"
+#include "xfa/fxfa/parser/cxfa_dsigdata.h"
+#include "xfa/fxfa/parser/cxfa_duplexoption.h"
+#include "xfa/fxfa/parser/cxfa_dynamicrender.h"
+#include "xfa/fxfa/parser/cxfa_edge.h"
+#include "xfa/fxfa/parser/cxfa_effectiveinputpolicy.h"
+#include "xfa/fxfa/parser/cxfa_effectiveoutputpolicy.h"
+#include "xfa/fxfa/parser/cxfa_embed.h"
+#include "xfa/fxfa/parser/cxfa_encoding.h"
+#include "xfa/fxfa/parser/cxfa_encodings.h"
+#include "xfa/fxfa/parser/cxfa_encrypt.h"
+#include "xfa/fxfa/parser/cxfa_encryption.h"
+#include "xfa/fxfa/parser/cxfa_encryptionlevel.h"
+#include "xfa/fxfa/parser/cxfa_encryptionmethod.h"
+#include "xfa/fxfa/parser/cxfa_encryptionmethods.h"
+#include "xfa/fxfa/parser/cxfa_enforce.h"
+#include "xfa/fxfa/parser/cxfa_equate.h"
+#include "xfa/fxfa/parser/cxfa_equaterange.h"
+#include "xfa/fxfa/parser/cxfa_era.h"
+#include "xfa/fxfa/parser/cxfa_eranames.h"
#include "xfa/fxfa/parser/cxfa_event.h"
+#include "xfa/fxfa/parser/cxfa_exclgroup.h"
+#include "xfa/fxfa/parser/cxfa_exclude.h"
+#include "xfa/fxfa/parser/cxfa_excludens.h"
+#include "xfa/fxfa/parser/cxfa_exdata.h"
+#include "xfa/fxfa/parser/cxfa_execute.h"
+#include "xfa/fxfa/parser/cxfa_exobject.h"
+#include "xfa/fxfa/parser/cxfa_extras.h"
+#include "xfa/fxfa/parser/cxfa_field.h"
+#include "xfa/fxfa/parser/cxfa_fill.h"
+#include "xfa/fxfa/parser/cxfa_filter.h"
+#include "xfa/fxfa/parser/cxfa_fliplabel.h"
+#include "xfa/fxfa/parser/cxfa_float.h"
#include "xfa/fxfa/parser/cxfa_font.h"
+#include "xfa/fxfa/parser/cxfa_fontinfo.h"
+#include "xfa/fxfa/parser/cxfa_form.h"
#include "xfa/fxfa/parser/cxfa_format.h"
+#include "xfa/fxfa/parser/cxfa_formfieldfilling.h"
+#include "xfa/fxfa/parser/cxfa_groupparent.h"
+#include "xfa/fxfa/parser/cxfa_handler.h"
+#include "xfa/fxfa/parser/cxfa_hyphenation.h"
+#include "xfa/fxfa/parser/cxfa_ifempty.h"
#include "xfa/fxfa/parser/cxfa_image.h"
+#include "xfa/fxfa/parser/cxfa_imageedit.h"
+#include "xfa/fxfa/parser/cxfa_includexdpcontent.h"
+#include "xfa/fxfa/parser/cxfa_incrementalload.h"
+#include "xfa/fxfa/parser/cxfa_incrementalmerge.h"
+#include "xfa/fxfa/parser/cxfa_insert.h"
+#include "xfa/fxfa/parser/cxfa_instancemanager.h"
+#include "xfa/fxfa/parser/cxfa_integer.h"
+#include "xfa/fxfa/parser/cxfa_interactive.h"
+#include "xfa/fxfa/parser/cxfa_issuers.h"
#include "xfa/fxfa/parser/cxfa_items.h"
+#include "xfa/fxfa/parser/cxfa_jog.h"
#include "xfa/fxfa/parser/cxfa_keep.h"
+#include "xfa/fxfa/parser/cxfa_keyusage.h"
+#include "xfa/fxfa/parser/cxfa_labelprinter.h"
+#include "xfa/fxfa/parser/cxfa_layout.h"
#include "xfa/fxfa/parser/cxfa_layoutprocessor.h"
+#include "xfa/fxfa/parser/cxfa_level.h"
+#include "xfa/fxfa/parser/cxfa_line.h"
+#include "xfa/fxfa/parser/cxfa_linear.h"
+#include "xfa/fxfa/parser/cxfa_linearized.h"
+#include "xfa/fxfa/parser/cxfa_locale.h"
+#include "xfa/fxfa/parser/cxfa_localeset.h"
#include "xfa/fxfa/parser/cxfa_localevalue.h"
+#include "xfa/fxfa/parser/cxfa_lockdocument.h"
+#include "xfa/fxfa/parser/cxfa_log.h"
+#include "xfa/fxfa/parser/cxfa_manifest.h"
+#include "xfa/fxfa/parser/cxfa_map.h"
#include "xfa/fxfa/parser/cxfa_margin.h"
+#include "xfa/fxfa/parser/cxfa_mdp.h"
#include "xfa/fxfa/parser/cxfa_measurement.h"
+#include "xfa/fxfa/parser/cxfa_medium.h"
+#include "xfa/fxfa/parser/cxfa_mediuminfo.h"
+#include "xfa/fxfa/parser/cxfa_meridiem.h"
+#include "xfa/fxfa/parser/cxfa_meridiemnames.h"
+#include "xfa/fxfa/parser/cxfa_message.h"
+#include "xfa/fxfa/parser/cxfa_messaging.h"
+#include "xfa/fxfa/parser/cxfa_mode.h"
+#include "xfa/fxfa/parser/cxfa_modifyannots.h"
+#include "xfa/fxfa/parser/cxfa_month.h"
+#include "xfa/fxfa/parser/cxfa_monthnames.h"
+#include "xfa/fxfa/parser/cxfa_msgid.h"
+#include "xfa/fxfa/parser/cxfa_nameattr.h"
+#include "xfa/fxfa/parser/cxfa_neverembed.h"
#include "xfa/fxfa/parser/cxfa_nodeiteratortemplate.h"
+#include "xfa/fxfa/parser/cxfa_numberofcopies.h"
+#include "xfa/fxfa/parser/cxfa_numberpattern.h"
+#include "xfa/fxfa/parser/cxfa_numberpatterns.h"
+#include "xfa/fxfa/parser/cxfa_numbersymbol.h"
+#include "xfa/fxfa/parser/cxfa_numbersymbols.h"
+#include "xfa/fxfa/parser/cxfa_numericedit.h"
#include "xfa/fxfa/parser/cxfa_occur.h"
+#include "xfa/fxfa/parser/cxfa_oid.h"
+#include "xfa/fxfa/parser/cxfa_oids.h"
+#include "xfa/fxfa/parser/cxfa_openaction.h"
+#include "xfa/fxfa/parser/cxfa_operation.h"
+#include "xfa/fxfa/parser/cxfa_output.h"
+#include "xfa/fxfa/parser/cxfa_outputbin.h"
+#include "xfa/fxfa/parser/cxfa_outputxsl.h"
+#include "xfa/fxfa/parser/cxfa_overflow.h"
+#include "xfa/fxfa/parser/cxfa_overprint.h"
+#include "xfa/fxfa/parser/cxfa_packet.h"
+#include "xfa/fxfa/parser/cxfa_packets.h"
+#include "xfa/fxfa/parser/cxfa_pagearea.h"
+#include "xfa/fxfa/parser/cxfa_pageoffset.h"
+#include "xfa/fxfa/parser/cxfa_pagerange.h"
+#include "xfa/fxfa/parser/cxfa_pageset.h"
+#include "xfa/fxfa/parser/cxfa_pagination.h"
+#include "xfa/fxfa/parser/cxfa_paginationoverride.h"
#include "xfa/fxfa/parser/cxfa_para.h"
+#include "xfa/fxfa/parser/cxfa_part.h"
+#include "xfa/fxfa/parser/cxfa_password.h"
+#include "xfa/fxfa/parser/cxfa_passwordedit.h"
+#include "xfa/fxfa/parser/cxfa_pattern.h"
+#include "xfa/fxfa/parser/cxfa_pcl.h"
+#include "xfa/fxfa/parser/cxfa_pdf.h"
+#include "xfa/fxfa/parser/cxfa_pdfa.h"
+#include "xfa/fxfa/parser/cxfa_permissions.h"
+#include "xfa/fxfa/parser/cxfa_picktraybypdfsize.h"
#include "xfa/fxfa/parser/cxfa_picture.h"
+#include "xfa/fxfa/parser/cxfa_plaintextmetadata.h"
+#include "xfa/fxfa/parser/cxfa_presence.h"
+#include "xfa/fxfa/parser/cxfa_present.h"
+#include "xfa/fxfa/parser/cxfa_print.h"
+#include "xfa/fxfa/parser/cxfa_printername.h"
+#include "xfa/fxfa/parser/cxfa_printhighquality.h"
+#include "xfa/fxfa/parser/cxfa_printscaling.h"
+#include "xfa/fxfa/parser/cxfa_producer.h"
+#include "xfa/fxfa/parser/cxfa_proto.h"
+#include "xfa/fxfa/parser/cxfa_ps.h"
+#include "xfa/fxfa/parser/cxfa_psmap.h"
+#include "xfa/fxfa/parser/cxfa_query.h"
+#include "xfa/fxfa/parser/cxfa_radial.h"
+#include "xfa/fxfa/parser/cxfa_range.h"
+#include "xfa/fxfa/parser/cxfa_reason.h"
+#include "xfa/fxfa/parser/cxfa_reasons.h"
+#include "xfa/fxfa/parser/cxfa_record.h"
+#include "xfa/fxfa/parser/cxfa_recordset.h"
+#include "xfa/fxfa/parser/cxfa_rectangle.h"
+#include "xfa/fxfa/parser/cxfa_ref.h"
+#include "xfa/fxfa/parser/cxfa_relevant.h"
+#include "xfa/fxfa/parser/cxfa_rename.h"
+#include "xfa/fxfa/parser/cxfa_renderpolicy.h"
+#include "xfa/fxfa/parser/cxfa_rootelement.h"
+#include "xfa/fxfa/parser/cxfa_runscripts.h"
+#include "xfa/fxfa/parser/cxfa_script.h"
+#include "xfa/fxfa/parser/cxfa_scriptmodel.h"
+#include "xfa/fxfa/parser/cxfa_select.h"
+#include "xfa/fxfa/parser/cxfa_setproperty.h"
+#include "xfa/fxfa/parser/cxfa_severity.h"
+#include "xfa/fxfa/parser/cxfa_sharptext.h"
+#include "xfa/fxfa/parser/cxfa_sharpxhtml.h"
+#include "xfa/fxfa/parser/cxfa_sharpxml.h"
+#include "xfa/fxfa/parser/cxfa_signature.h"
+#include "xfa/fxfa/parser/cxfa_signatureproperties.h"
+#include "xfa/fxfa/parser/cxfa_signdata.h"
+#include "xfa/fxfa/parser/cxfa_signing.h"
+#include "xfa/fxfa/parser/cxfa_silentprint.h"
+#include "xfa/fxfa/parser/cxfa_soapaction.h"
+#include "xfa/fxfa/parser/cxfa_soapaddress.h"
+#include "xfa/fxfa/parser/cxfa_solid.h"
+#include "xfa/fxfa/parser/cxfa_source.h"
+#include "xfa/fxfa/parser/cxfa_sourceset.h"
+#include "xfa/fxfa/parser/cxfa_speak.h"
+#include "xfa/fxfa/parser/cxfa_staple.h"
+#include "xfa/fxfa/parser/cxfa_startnode.h"
+#include "xfa/fxfa/parser/cxfa_startpage.h"
+#include "xfa/fxfa/parser/cxfa_stipple.h"
#include "xfa/fxfa/parser/cxfa_stroke.h"
#include "xfa/fxfa/parser/cxfa_subform.h"
+#include "xfa/fxfa/parser/cxfa_subformset.h"
+#include "xfa/fxfa/parser/cxfa_subjectdn.h"
+#include "xfa/fxfa/parser/cxfa_subjectdns.h"
+#include "xfa/fxfa/parser/cxfa_submit.h"
+#include "xfa/fxfa/parser/cxfa_submitformat.h"
+#include "xfa/fxfa/parser/cxfa_submiturl.h"
+#include "xfa/fxfa/parser/cxfa_subsetbelow.h"
+#include "xfa/fxfa/parser/cxfa_suppressbanner.h"
+#include "xfa/fxfa/parser/cxfa_tagged.h"
+#include "xfa/fxfa/parser/cxfa_template.h"
+#include "xfa/fxfa/parser/cxfa_templatecache.h"
+#include "xfa/fxfa/parser/cxfa_text.h"
+#include "xfa/fxfa/parser/cxfa_textedit.h"
+#include "xfa/fxfa/parser/cxfa_threshold.h"
+#include "xfa/fxfa/parser/cxfa_time.h"
+#include "xfa/fxfa/parser/cxfa_timepattern.h"
+#include "xfa/fxfa/parser/cxfa_timepatterns.h"
+#include "xfa/fxfa/parser/cxfa_timestamp.h"
+#include "xfa/fxfa/parser/cxfa_to.h"
+#include "xfa/fxfa/parser/cxfa_tooltip.h"
+#include "xfa/fxfa/parser/cxfa_trace.h"
+#include "xfa/fxfa/parser/cxfa_transform.h"
+#include "xfa/fxfa/parser/cxfa_traversal.h"
+#include "xfa/fxfa/parser/cxfa_traverse.h"
#include "xfa/fxfa/parser/cxfa_traversestrategy_xfacontainernode.h"
+#include "xfa/fxfa/parser/cxfa_type.h"
+#include "xfa/fxfa/parser/cxfa_typeface.h"
+#include "xfa/fxfa/parser/cxfa_typefaces.h"
#include "xfa/fxfa/parser/cxfa_ui.h"
+#include "xfa/fxfa/parser/cxfa_update.h"
+#include "xfa/fxfa/parser/cxfa_uri.h"
+#include "xfa/fxfa/parser/cxfa_user.h"
#include "xfa/fxfa/parser/cxfa_validate.h"
+#include "xfa/fxfa/parser/cxfa_validateapprovalsignatures.h"
+#include "xfa/fxfa/parser/cxfa_validationmessaging.h"
#include "xfa/fxfa/parser/cxfa_value.h"
+#include "xfa/fxfa/parser/cxfa_variables.h"
+#include "xfa/fxfa/parser/cxfa_version.h"
+#include "xfa/fxfa/parser/cxfa_versioncontrol.h"
+#include "xfa/fxfa/parser/cxfa_viewerpreferences.h"
+#include "xfa/fxfa/parser/cxfa_webclient.h"
+#include "xfa/fxfa/parser/cxfa_whitespace.h"
+#include "xfa/fxfa/parser/cxfa_window.h"
+#include "xfa/fxfa/parser/cxfa_wsdladdress.h"
+#include "xfa/fxfa/parser/cxfa_wsdlconnection.h"
+#include "xfa/fxfa/parser/cxfa_xdc.h"
+#include "xfa/fxfa/parser/cxfa_xdp.h"
+#include "xfa/fxfa/parser/cxfa_xfa.h"
+#include "xfa/fxfa/parser/cxfa_xmlconnection.h"
+#include "xfa/fxfa/parser/cxfa_xsdconnection.h"
+#include "xfa/fxfa/parser/cxfa_xsl.h"
+#include "xfa/fxfa/parser/cxfa_zpl.h"
#include "xfa/fxfa/parser/xfa_basic_data.h"
#include "xfa/fxfa/parser/xfa_utils.h"
@@ -4691,3 +4975,927 @@
NOTREACHED();
}
}
+
+// static
+std::unique_ptr<CXFA_Node> CXFA_Node::Create(CXFA_Document* doc,
+ XFA_Element element,
+ XFA_PacketType packet) {
+ std::unique_ptr<CXFA_Node> node;
+ switch (element) {
+ case XFA_Element::Ps:
+ node = pdfium::MakeUnique<CXFA_Ps>(doc, packet);
+ break;
+ case XFA_Element::To:
+ node = pdfium::MakeUnique<CXFA_To>(doc, packet);
+ break;
+ case XFA_Element::Ui:
+ node = pdfium::MakeUnique<CXFA_Ui>(doc, packet);
+ break;
+ case XFA_Element::RecordSet:
+ node = pdfium::MakeUnique<CXFA_RecordSet>(doc, packet);
+ break;
+ case XFA_Element::SubsetBelow:
+ node = pdfium::MakeUnique<CXFA_SubsetBelow>(doc, packet);
+ break;
+ case XFA_Element::SubformSet:
+ node = pdfium::MakeUnique<CXFA_SubformSet>(doc, packet);
+ break;
+ case XFA_Element::AdobeExtensionLevel:
+ node = pdfium::MakeUnique<CXFA_AdobeExtensionLevel>(doc, packet);
+ break;
+ case XFA_Element::Typeface:
+ node = pdfium::MakeUnique<CXFA_Typeface>(doc, packet);
+ break;
+ case XFA_Element::Break:
+ node = pdfium::MakeUnique<CXFA_Break>(doc, packet);
+ break;
+ case XFA_Element::FontInfo:
+ node = pdfium::MakeUnique<CXFA_FontInfo>(doc, packet);
+ break;
+ case XFA_Element::NumberPattern:
+ node = pdfium::MakeUnique<CXFA_NumberPattern>(doc, packet);
+ break;
+ case XFA_Element::DynamicRender:
+ node = pdfium::MakeUnique<CXFA_DynamicRender>(doc, packet);
+ break;
+ case XFA_Element::PrintScaling:
+ node = pdfium::MakeUnique<CXFA_PrintScaling>(doc, packet);
+ break;
+ case XFA_Element::CheckButton:
+ node = pdfium::MakeUnique<CXFA_CheckButton>(doc, packet);
+ break;
+ case XFA_Element::DatePatterns:
+ node = pdfium::MakeUnique<CXFA_DatePatterns>(doc, packet);
+ break;
+ case XFA_Element::SourceSet:
+ node = pdfium::MakeUnique<CXFA_SourceSet>(doc, packet);
+ break;
+ case XFA_Element::Amd:
+ node = pdfium::MakeUnique<CXFA_Amd>(doc, packet);
+ break;
+ case XFA_Element::Arc:
+ node = pdfium::MakeUnique<CXFA_Arc>(doc, packet);
+ break;
+ case XFA_Element::Day:
+ node = pdfium::MakeUnique<CXFA_Day>(doc, packet);
+ break;
+ case XFA_Element::Era:
+ node = pdfium::MakeUnique<CXFA_Era>(doc, packet);
+ break;
+ case XFA_Element::Jog:
+ node = pdfium::MakeUnique<CXFA_Jog>(doc, packet);
+ break;
+ case XFA_Element::Log:
+ node = pdfium::MakeUnique<CXFA_Log>(doc, packet);
+ break;
+ case XFA_Element::Map:
+ node = pdfium::MakeUnique<CXFA_Map>(doc, packet);
+ break;
+ case XFA_Element::Mdp:
+ node = pdfium::MakeUnique<CXFA_Mdp>(doc, packet);
+ break;
+ case XFA_Element::BreakBefore:
+ node = pdfium::MakeUnique<CXFA_BreakBefore>(doc, packet);
+ break;
+ case XFA_Element::Oid:
+ node = pdfium::MakeUnique<CXFA_Oid>(doc, packet);
+ break;
+ case XFA_Element::Pcl:
+ node = pdfium::MakeUnique<CXFA_Pcl>(doc, packet);
+ break;
+ case XFA_Element::Pdf:
+ node = pdfium::MakeUnique<CXFA_Pdf>(doc, packet);
+ break;
+ case XFA_Element::Ref:
+ node = pdfium::MakeUnique<CXFA_Ref>(doc, packet);
+ break;
+ case XFA_Element::Uri:
+ node = pdfium::MakeUnique<CXFA_Uri>(doc, packet);
+ break;
+ case XFA_Element::Xdc:
+ node = pdfium::MakeUnique<CXFA_Xdc>(doc, packet);
+ break;
+ case XFA_Element::Xdp:
+ node = pdfium::MakeUnique<CXFA_Xdp>(doc, packet);
+ break;
+ case XFA_Element::Xfa:
+ node = pdfium::MakeUnique<CXFA_Xfa>(doc, packet);
+ break;
+ case XFA_Element::Xsl:
+ node = pdfium::MakeUnique<CXFA_Xsl>(doc, packet);
+ break;
+ case XFA_Element::Zpl:
+ node = pdfium::MakeUnique<CXFA_Zpl>(doc, packet);
+ break;
+ case XFA_Element::Cache:
+ node = pdfium::MakeUnique<CXFA_Cache>(doc, packet);
+ break;
+ case XFA_Element::Margin:
+ node = pdfium::MakeUnique<CXFA_Margin>(doc, packet);
+ break;
+ case XFA_Element::KeyUsage:
+ node = pdfium::MakeUnique<CXFA_KeyUsage>(doc, packet);
+ break;
+ case XFA_Element::Exclude:
+ node = pdfium::MakeUnique<CXFA_Exclude>(doc, packet);
+ break;
+ case XFA_Element::ChoiceList:
+ node = pdfium::MakeUnique<CXFA_ChoiceList>(doc, packet);
+ break;
+ case XFA_Element::Level:
+ node = pdfium::MakeUnique<CXFA_Level>(doc, packet);
+ break;
+ case XFA_Element::LabelPrinter:
+ node = pdfium::MakeUnique<CXFA_LabelPrinter>(doc, packet);
+ break;
+ case XFA_Element::CalendarSymbols:
+ node = pdfium::MakeUnique<CXFA_CalendarSymbols>(doc, packet);
+ break;
+ case XFA_Element::Para:
+ node = pdfium::MakeUnique<CXFA_Para>(doc, packet);
+ break;
+ case XFA_Element::Part:
+ node = pdfium::MakeUnique<CXFA_Part>(doc, packet);
+ break;
+ case XFA_Element::Pdfa:
+ node = pdfium::MakeUnique<CXFA_Pdfa>(doc, packet);
+ break;
+ case XFA_Element::Filter:
+ node = pdfium::MakeUnique<CXFA_Filter>(doc, packet);
+ break;
+ case XFA_Element::Present:
+ node = pdfium::MakeUnique<CXFA_Present>(doc, packet);
+ break;
+ case XFA_Element::Pagination:
+ node = pdfium::MakeUnique<CXFA_Pagination>(doc, packet);
+ break;
+ case XFA_Element::Encoding:
+ node = pdfium::MakeUnique<CXFA_Encoding>(doc, packet);
+ break;
+ case XFA_Element::Event:
+ node = pdfium::MakeUnique<CXFA_Event>(doc, packet);
+ break;
+ case XFA_Element::Whitespace:
+ node = pdfium::MakeUnique<CXFA_Whitespace>(doc, packet);
+ break;
+ case XFA_Element::DefaultUi:
+ node = pdfium::MakeUnique<CXFA_DefaultUi>(doc, packet);
+ break;
+ case XFA_Element::DataModel:
+ node = pdfium::MakeUnique<CXFA_DataModel>(doc, packet);
+ break;
+ case XFA_Element::Barcode:
+ node = pdfium::MakeUnique<CXFA_Barcode>(doc, packet);
+ break;
+ case XFA_Element::TimePattern:
+ node = pdfium::MakeUnique<CXFA_TimePattern>(doc, packet);
+ break;
+ case XFA_Element::BatchOutput:
+ node = pdfium::MakeUnique<CXFA_BatchOutput>(doc, packet);
+ break;
+ case XFA_Element::Enforce:
+ node = pdfium::MakeUnique<CXFA_Enforce>(doc, packet);
+ break;
+ case XFA_Element::CurrencySymbols:
+ node = pdfium::MakeUnique<CXFA_CurrencySymbols>(doc, packet);
+ break;
+ case XFA_Element::AddSilentPrint:
+ node = pdfium::MakeUnique<CXFA_AddSilentPrint>(doc, packet);
+ break;
+ case XFA_Element::Rename:
+ node = pdfium::MakeUnique<CXFA_Rename>(doc, packet);
+ break;
+ case XFA_Element::Operation:
+ node = pdfium::MakeUnique<CXFA_Operation>(doc, packet);
+ break;
+ case XFA_Element::Typefaces:
+ node = pdfium::MakeUnique<CXFA_Typefaces>(doc, packet);
+ break;
+ case XFA_Element::SubjectDNs:
+ node = pdfium::MakeUnique<CXFA_SubjectDNs>(doc, packet);
+ break;
+ case XFA_Element::Issuers:
+ node = pdfium::MakeUnique<CXFA_Issuers>(doc, packet);
+ break;
+ case XFA_Element::WsdlConnection:
+ node = pdfium::MakeUnique<CXFA_WsdlConnection>(doc, packet);
+ break;
+ case XFA_Element::Debug:
+ node = pdfium::MakeUnique<CXFA_Debug>(doc, packet);
+ break;
+ case XFA_Element::Delta:
+ node = pdfium::MakeUnique<CXFA_Delta>(doc, packet);
+ break;
+ case XFA_Element::EraNames:
+ node = pdfium::MakeUnique<CXFA_EraNames>(doc, packet);
+ break;
+ case XFA_Element::ModifyAnnots:
+ node = pdfium::MakeUnique<CXFA_ModifyAnnots>(doc, packet);
+ break;
+ case XFA_Element::StartNode:
+ node = pdfium::MakeUnique<CXFA_StartNode>(doc, packet);
+ break;
+ case XFA_Element::Button:
+ node = pdfium::MakeUnique<CXFA_Button>(doc, packet);
+ break;
+ case XFA_Element::Format:
+ node = pdfium::MakeUnique<CXFA_Format>(doc, packet);
+ break;
+ case XFA_Element::Border:
+ node = pdfium::MakeUnique<CXFA_Border>(doc, packet);
+ break;
+ case XFA_Element::Area:
+ node = pdfium::MakeUnique<CXFA_Area>(doc, packet);
+ break;
+ case XFA_Element::Hyphenation:
+ node = pdfium::MakeUnique<CXFA_Hyphenation>(doc, packet);
+ break;
+ case XFA_Element::Text:
+ node = pdfium::MakeUnique<CXFA_Text>(doc, packet);
+ break;
+ case XFA_Element::Time:
+ node = pdfium::MakeUnique<CXFA_Time>(doc, packet);
+ break;
+ case XFA_Element::Type:
+ node = pdfium::MakeUnique<CXFA_Type>(doc, packet);
+ break;
+ case XFA_Element::Overprint:
+ node = pdfium::MakeUnique<CXFA_Overprint>(doc, packet);
+ break;
+ case XFA_Element::Certificates:
+ node = pdfium::MakeUnique<CXFA_Certificates>(doc, packet);
+ break;
+ case XFA_Element::EncryptionMethods:
+ node = pdfium::MakeUnique<CXFA_EncryptionMethods>(doc, packet);
+ break;
+ case XFA_Element::SetProperty:
+ node = pdfium::MakeUnique<CXFA_SetProperty>(doc, packet);
+ break;
+ case XFA_Element::PrinterName:
+ node = pdfium::MakeUnique<CXFA_PrinterName>(doc, packet);
+ break;
+ case XFA_Element::StartPage:
+ node = pdfium::MakeUnique<CXFA_StartPage>(doc, packet);
+ break;
+ case XFA_Element::PageOffset:
+ node = pdfium::MakeUnique<CXFA_PageOffset>(doc, packet);
+ break;
+ case XFA_Element::DateTime:
+ node = pdfium::MakeUnique<CXFA_DateTime>(doc, packet);
+ break;
+ case XFA_Element::Comb:
+ node = pdfium::MakeUnique<CXFA_Comb>(doc, packet);
+ break;
+ case XFA_Element::Pattern:
+ node = pdfium::MakeUnique<CXFA_Pattern>(doc, packet);
+ break;
+ case XFA_Element::IfEmpty:
+ node = pdfium::MakeUnique<CXFA_IfEmpty>(doc, packet);
+ break;
+ case XFA_Element::SuppressBanner:
+ node = pdfium::MakeUnique<CXFA_SuppressBanner>(doc, packet);
+ break;
+ case XFA_Element::OutputBin:
+ node = pdfium::MakeUnique<CXFA_OutputBin>(doc, packet);
+ break;
+ case XFA_Element::Field:
+ node = pdfium::MakeUnique<CXFA_Field>(doc, packet);
+ break;
+ case XFA_Element::Agent:
+ node = pdfium::MakeUnique<CXFA_Agent>(doc, packet);
+ break;
+ case XFA_Element::OutputXSL:
+ node = pdfium::MakeUnique<CXFA_OutputXSL>(doc, packet);
+ break;
+ case XFA_Element::AdjustData:
+ node = pdfium::MakeUnique<CXFA_AdjustData>(doc, packet);
+ break;
+ case XFA_Element::AutoSave:
+ node = pdfium::MakeUnique<CXFA_AutoSave>(doc, packet);
+ break;
+ case XFA_Element::ContentArea:
+ node = pdfium::MakeUnique<CXFA_ContentArea>(doc, packet);
+ break;
+ case XFA_Element::WsdlAddress:
+ node = pdfium::MakeUnique<CXFA_WsdlAddress>(doc, packet);
+ break;
+ case XFA_Element::Solid:
+ node = pdfium::MakeUnique<CXFA_Solid>(doc, packet);
+ break;
+ case XFA_Element::DateTimeSymbols:
+ node = pdfium::MakeUnique<CXFA_DateTimeSymbols>(doc, packet);
+ break;
+ case XFA_Element::EncryptionLevel:
+ node = pdfium::MakeUnique<CXFA_EncryptionLevel>(doc, packet);
+ break;
+ case XFA_Element::Edge:
+ node = pdfium::MakeUnique<CXFA_Edge>(doc, packet);
+ break;
+ case XFA_Element::Stipple:
+ node = pdfium::MakeUnique<CXFA_Stipple>(doc, packet);
+ break;
+ case XFA_Element::Attributes:
+ node = pdfium::MakeUnique<CXFA_Attributes>(doc, packet);
+ break;
+ case XFA_Element::VersionControl:
+ node = pdfium::MakeUnique<CXFA_VersionControl>(doc, packet);
+ break;
+ case XFA_Element::Meridiem:
+ node = pdfium::MakeUnique<CXFA_Meridiem>(doc, packet);
+ break;
+ case XFA_Element::ExclGroup:
+ node = pdfium::MakeUnique<CXFA_ExclGroup>(doc, packet);
+ break;
+ case XFA_Element::ToolTip:
+ node = pdfium::MakeUnique<CXFA_ToolTip>(doc, packet);
+ break;
+ case XFA_Element::Compress:
+ node = pdfium::MakeUnique<CXFA_Compress>(doc, packet);
+ break;
+ case XFA_Element::Reason:
+ node = pdfium::MakeUnique<CXFA_Reason>(doc, packet);
+ break;
+ case XFA_Element::Execute:
+ node = pdfium::MakeUnique<CXFA_Execute>(doc, packet);
+ break;
+ case XFA_Element::ContentCopy:
+ node = pdfium::MakeUnique<CXFA_ContentCopy>(doc, packet);
+ break;
+ case XFA_Element::DateTimeEdit:
+ node = pdfium::MakeUnique<CXFA_DateTimeEdit>(doc, packet);
+ break;
+ case XFA_Element::Config:
+ node = pdfium::MakeUnique<CXFA_Config>(doc, packet);
+ break;
+ case XFA_Element::Image:
+ node = pdfium::MakeUnique<CXFA_Image>(doc, packet);
+ break;
+ case XFA_Element::SharpxHTML:
+ node = pdfium::MakeUnique<CXFA_SharpxHTML>(doc, packet);
+ break;
+ case XFA_Element::NumberOfCopies:
+ node = pdfium::MakeUnique<CXFA_NumberOfCopies>(doc, packet);
+ break;
+ case XFA_Element::BehaviorOverride:
+ node = pdfium::MakeUnique<CXFA_BehaviorOverride>(doc, packet);
+ break;
+ case XFA_Element::TimeStamp:
+ node = pdfium::MakeUnique<CXFA_TimeStamp>(doc, packet);
+ break;
+ case XFA_Element::Month:
+ node = pdfium::MakeUnique<CXFA_Month>(doc, packet);
+ break;
+ case XFA_Element::ViewerPreferences:
+ node = pdfium::MakeUnique<CXFA_ViewerPreferences>(doc, packet);
+ break;
+ case XFA_Element::ScriptModel:
+ node = pdfium::MakeUnique<CXFA_ScriptModel>(doc, packet);
+ break;
+ case XFA_Element::Decimal:
+ node = pdfium::MakeUnique<CXFA_Decimal>(doc, packet);
+ break;
+ case XFA_Element::Subform:
+ node = pdfium::MakeUnique<CXFA_Subform>(doc, packet);
+ break;
+ case XFA_Element::Select:
+ node = pdfium::MakeUnique<CXFA_Select>(doc, packet);
+ break;
+ case XFA_Element::Window:
+ node = pdfium::MakeUnique<CXFA_Window>(doc, packet);
+ break;
+ case XFA_Element::LocaleSet:
+ node = pdfium::MakeUnique<CXFA_LocaleSet>(doc, packet);
+ break;
+ case XFA_Element::Handler:
+ node = pdfium::MakeUnique<CXFA_Handler>(doc, packet);
+ break;
+ case XFA_Element::Presence:
+ node = pdfium::MakeUnique<CXFA_Presence>(doc, packet);
+ break;
+ case XFA_Element::Record:
+ node = pdfium::MakeUnique<CXFA_Record>(doc, packet);
+ break;
+ case XFA_Element::Embed:
+ node = pdfium::MakeUnique<CXFA_Embed>(doc, packet);
+ break;
+ case XFA_Element::Version:
+ node = pdfium::MakeUnique<CXFA_Version>(doc, packet);
+ break;
+ case XFA_Element::Command:
+ node = pdfium::MakeUnique<CXFA_Command>(doc, packet);
+ break;
+ case XFA_Element::Copies:
+ node = pdfium::MakeUnique<CXFA_Copies>(doc, packet);
+ break;
+ case XFA_Element::Staple:
+ node = pdfium::MakeUnique<CXFA_Staple>(doc, packet);
+ break;
+ case XFA_Element::SubmitFormat:
+ node = pdfium::MakeUnique<CXFA_SubmitFormat>(doc, packet);
+ break;
+ case XFA_Element::Boolean:
+ node = pdfium::MakeUnique<CXFA_Boolean>(doc, packet);
+ break;
+ case XFA_Element::Message:
+ node = pdfium::MakeUnique<CXFA_Message>(doc, packet);
+ break;
+ case XFA_Element::Output:
+ node = pdfium::MakeUnique<CXFA_Output>(doc, packet);
+ break;
+ case XFA_Element::PsMap:
+ node = pdfium::MakeUnique<CXFA_PsMap>(doc, packet);
+ break;
+ case XFA_Element::ExcludeNS:
+ node = pdfium::MakeUnique<CXFA_ExcludeNS>(doc, packet);
+ break;
+ case XFA_Element::Assist:
+ node = pdfium::MakeUnique<CXFA_Assist>(doc, packet);
+ break;
+ case XFA_Element::Picture:
+ node = pdfium::MakeUnique<CXFA_Picture>(doc, packet);
+ break;
+ case XFA_Element::Traversal:
+ node = pdfium::MakeUnique<CXFA_Traversal>(doc, packet);
+ break;
+ case XFA_Element::SilentPrint:
+ node = pdfium::MakeUnique<CXFA_SilentPrint>(doc, packet);
+ break;
+ case XFA_Element::WebClient:
+ node = pdfium::MakeUnique<CXFA_WebClient>(doc, packet);
+ break;
+ case XFA_Element::Producer:
+ node = pdfium::MakeUnique<CXFA_Producer>(doc, packet);
+ break;
+ case XFA_Element::Corner:
+ node = pdfium::MakeUnique<CXFA_Corner>(doc, packet);
+ break;
+ case XFA_Element::MsgId:
+ node = pdfium::MakeUnique<CXFA_MsgId>(doc, packet);
+ break;
+ case XFA_Element::Color:
+ node = pdfium::MakeUnique<CXFA_Color>(doc, packet);
+ break;
+ case XFA_Element::Keep:
+ node = pdfium::MakeUnique<CXFA_Keep>(doc, packet);
+ break;
+ case XFA_Element::Query:
+ node = pdfium::MakeUnique<CXFA_Query>(doc, packet);
+ break;
+ case XFA_Element::Insert:
+ node = pdfium::MakeUnique<CXFA_Insert>(doc, packet);
+ break;
+ case XFA_Element::ImageEdit:
+ node = pdfium::MakeUnique<CXFA_ImageEdit>(doc, packet);
+ break;
+ case XFA_Element::Validate:
+ node = pdfium::MakeUnique<CXFA_Validate>(doc, packet);
+ break;
+ case XFA_Element::DigestMethods:
+ node = pdfium::MakeUnique<CXFA_DigestMethods>(doc, packet);
+ break;
+ case XFA_Element::NumberPatterns:
+ node = pdfium::MakeUnique<CXFA_NumberPatterns>(doc, packet);
+ break;
+ case XFA_Element::PageSet:
+ node = pdfium::MakeUnique<CXFA_PageSet>(doc, packet);
+ break;
+ case XFA_Element::Integer:
+ node = pdfium::MakeUnique<CXFA_Integer>(doc, packet);
+ break;
+ case XFA_Element::SoapAddress:
+ node = pdfium::MakeUnique<CXFA_SoapAddress>(doc, packet);
+ break;
+ case XFA_Element::Equate:
+ node = pdfium::MakeUnique<CXFA_Equate>(doc, packet);
+ break;
+ case XFA_Element::FormFieldFilling:
+ node = pdfium::MakeUnique<CXFA_FormFieldFilling>(doc, packet);
+ break;
+ case XFA_Element::PageRange:
+ node = pdfium::MakeUnique<CXFA_PageRange>(doc, packet);
+ break;
+ case XFA_Element::Update:
+ node = pdfium::MakeUnique<CXFA_Update>(doc, packet);
+ break;
+ case XFA_Element::ConnectString:
+ node = pdfium::MakeUnique<CXFA_ConnectString>(doc, packet);
+ break;
+ case XFA_Element::Mode:
+ node = pdfium::MakeUnique<CXFA_Mode>(doc, packet);
+ break;
+ case XFA_Element::Layout:
+ node = pdfium::MakeUnique<CXFA_Layout>(doc, packet);
+ break;
+ case XFA_Element::Sharpxml:
+ node = pdfium::MakeUnique<CXFA_Sharpxml>(doc, packet);
+ break;
+ case XFA_Element::XsdConnection:
+ node = pdfium::MakeUnique<CXFA_XsdConnection>(doc, packet);
+ break;
+ case XFA_Element::Traverse:
+ node = pdfium::MakeUnique<CXFA_Traverse>(doc, packet);
+ break;
+ case XFA_Element::Encodings:
+ node = pdfium::MakeUnique<CXFA_Encodings>(doc, packet);
+ break;
+ case XFA_Element::Template:
+ node = pdfium::MakeUnique<CXFA_Template>(doc, packet);
+ break;
+ case XFA_Element::Acrobat:
+ node = pdfium::MakeUnique<CXFA_Acrobat>(doc, packet);
+ break;
+ case XFA_Element::ValidationMessaging:
+ node = pdfium::MakeUnique<CXFA_ValidationMessaging>(doc, packet);
+ break;
+ case XFA_Element::Signing:
+ node = pdfium::MakeUnique<CXFA_Signing>(doc, packet);
+ break;
+ case XFA_Element::Script:
+ node = pdfium::MakeUnique<CXFA_Script>(doc, packet);
+ break;
+ case XFA_Element::AddViewerPreferences:
+ node = pdfium::MakeUnique<CXFA_AddViewerPreferences>(doc, packet);
+ break;
+ case XFA_Element::AlwaysEmbed:
+ node = pdfium::MakeUnique<CXFA_AlwaysEmbed>(doc, packet);
+ break;
+ case XFA_Element::PasswordEdit:
+ node = pdfium::MakeUnique<CXFA_PasswordEdit>(doc, packet);
+ break;
+ case XFA_Element::NumericEdit:
+ node = pdfium::MakeUnique<CXFA_NumericEdit>(doc, packet);
+ break;
+ case XFA_Element::EncryptionMethod:
+ node = pdfium::MakeUnique<CXFA_EncryptionMethod>(doc, packet);
+ break;
+ case XFA_Element::Change:
+ node = pdfium::MakeUnique<CXFA_Change>(doc, packet);
+ break;
+ case XFA_Element::PageArea:
+ node = pdfium::MakeUnique<CXFA_PageArea>(doc, packet);
+ break;
+ case XFA_Element::SubmitUrl:
+ node = pdfium::MakeUnique<CXFA_SubmitUrl>(doc, packet);
+ break;
+ case XFA_Element::Oids:
+ node = pdfium::MakeUnique<CXFA_Oids>(doc, packet);
+ break;
+ case XFA_Element::Signature:
+ node = pdfium::MakeUnique<CXFA_Signature>(doc, packet);
+ break;
+ case XFA_Element::ADBE_JSConsole:
+ node = pdfium::MakeUnique<CXFA_aDBE_JSConsole>(doc, packet);
+ break;
+ case XFA_Element::Caption:
+ node = pdfium::MakeUnique<CXFA_Caption>(doc, packet);
+ break;
+ case XFA_Element::Relevant:
+ node = pdfium::MakeUnique<CXFA_Relevant>(doc, packet);
+ break;
+ case XFA_Element::FlipLabel:
+ node = pdfium::MakeUnique<CXFA_FlipLabel>(doc, packet);
+ break;
+ case XFA_Element::ExData:
+ node = pdfium::MakeUnique<CXFA_ExData>(doc, packet);
+ break;
+ case XFA_Element::DayNames:
+ node = pdfium::MakeUnique<CXFA_DayNames>(doc, packet);
+ break;
+ case XFA_Element::SoapAction:
+ node = pdfium::MakeUnique<CXFA_SoapAction>(doc, packet);
+ break;
+ case XFA_Element::DefaultTypeface:
+ node = pdfium::MakeUnique<CXFA_DefaultTypeface>(doc, packet);
+ break;
+ case XFA_Element::Manifest:
+ node = pdfium::MakeUnique<CXFA_Manifest>(doc, packet);
+ break;
+ case XFA_Element::Overflow:
+ node = pdfium::MakeUnique<CXFA_Overflow>(doc, packet);
+ break;
+ case XFA_Element::Linear:
+ node = pdfium::MakeUnique<CXFA_Linear>(doc, packet);
+ break;
+ case XFA_Element::CurrencySymbol:
+ node = pdfium::MakeUnique<CXFA_CurrencySymbol>(doc, packet);
+ break;
+ case XFA_Element::Delete:
+ node = pdfium::MakeUnique<CXFA_Delete>(doc, packet);
+ break;
+ case XFA_Element::DigestMethod:
+ node = pdfium::MakeUnique<CXFA_DigestMethod>(doc, packet);
+ break;
+ case XFA_Element::InstanceManager:
+ node = pdfium::MakeUnique<CXFA_InstanceManager>(doc, packet);
+ break;
+ case XFA_Element::EquateRange:
+ node = pdfium::MakeUnique<CXFA_EquateRange>(doc, packet);
+ break;
+ case XFA_Element::Medium:
+ node = pdfium::MakeUnique<CXFA_Medium>(doc, packet);
+ break;
+ case XFA_Element::TextEdit:
+ node = pdfium::MakeUnique<CXFA_TextEdit>(doc, packet);
+ break;
+ case XFA_Element::TemplateCache:
+ node = pdfium::MakeUnique<CXFA_TemplateCache>(doc, packet);
+ break;
+ case XFA_Element::CompressObjectStream:
+ node = pdfium::MakeUnique<CXFA_CompressObjectStream>(doc, packet);
+ break;
+ case XFA_Element::DataValue:
+ node = pdfium::MakeUnique<CXFA_DataValue>(doc, packet);
+ break;
+ case XFA_Element::AccessibleContent:
+ node = pdfium::MakeUnique<CXFA_AccessibleContent>(doc, packet);
+ break;
+ case XFA_Element::IncludeXDPContent:
+ node = pdfium::MakeUnique<CXFA_IncludeXDPContent>(doc, packet);
+ break;
+ case XFA_Element::XmlConnection:
+ node = pdfium::MakeUnique<CXFA_XmlConnection>(doc, packet);
+ break;
+ case XFA_Element::ValidateApprovalSignatures:
+ node = pdfium::MakeUnique<CXFA_ValidateApprovalSignatures>(doc, packet);
+ break;
+ case XFA_Element::SignData:
+ node = pdfium::MakeUnique<CXFA_SignData>(doc, packet);
+ break;
+ case XFA_Element::Packets:
+ node = pdfium::MakeUnique<CXFA_Packets>(doc, packet);
+ break;
+ case XFA_Element::DatePattern:
+ node = pdfium::MakeUnique<CXFA_DatePattern>(doc, packet);
+ break;
+ case XFA_Element::DuplexOption:
+ node = pdfium::MakeUnique<CXFA_DuplexOption>(doc, packet);
+ break;
+ case XFA_Element::Base:
+ node = pdfium::MakeUnique<CXFA_Base>(doc, packet);
+ break;
+ case XFA_Element::Bind:
+ node = pdfium::MakeUnique<CXFA_Bind>(doc, packet);
+ break;
+ case XFA_Element::Compression:
+ node = pdfium::MakeUnique<CXFA_Compression>(doc, packet);
+ break;
+ case XFA_Element::User:
+ node = pdfium::MakeUnique<CXFA_User>(doc, packet);
+ break;
+ case XFA_Element::Rectangle:
+ node = pdfium::MakeUnique<CXFA_Rectangle>(doc, packet);
+ break;
+ case XFA_Element::EffectiveOutputPolicy:
+ node = pdfium::MakeUnique<CXFA_EffectiveOutputPolicy>(doc, packet);
+ break;
+ case XFA_Element::ADBE_JSDebugger:
+ node = pdfium::MakeUnique<CXFA_aDBE_JSDebugger>(doc, packet);
+ break;
+ case XFA_Element::Acrobat7:
+ node = pdfium::MakeUnique<CXFA_Acrobat7>(doc, packet);
+ break;
+ case XFA_Element::Interactive:
+ node = pdfium::MakeUnique<CXFA_Interactive>(doc, packet);
+ break;
+ case XFA_Element::Locale:
+ node = pdfium::MakeUnique<CXFA_Locale>(doc, packet);
+ break;
+ case XFA_Element::CurrentPage:
+ node = pdfium::MakeUnique<CXFA_CurrentPage>(doc, packet);
+ break;
+ case XFA_Element::Data:
+ node = pdfium::MakeUnique<CXFA_Data>(doc, packet);
+ break;
+ case XFA_Element::Date:
+ node = pdfium::MakeUnique<CXFA_Date>(doc, packet);
+ break;
+ case XFA_Element::Desc:
+ node = pdfium::MakeUnique<CXFA_Desc>(doc, packet);
+ break;
+ case XFA_Element::Encrypt:
+ node = pdfium::MakeUnique<CXFA_Encrypt>(doc, packet);
+ break;
+ case XFA_Element::Draw:
+ node = pdfium::MakeUnique<CXFA_Draw>(doc, packet);
+ break;
+ case XFA_Element::Encryption:
+ node = pdfium::MakeUnique<CXFA_Encryption>(doc, packet);
+ break;
+ case XFA_Element::MeridiemNames:
+ node = pdfium::MakeUnique<CXFA_MeridiemNames>(doc, packet);
+ break;
+ case XFA_Element::Messaging:
+ node = pdfium::MakeUnique<CXFA_Messaging>(doc, packet);
+ break;
+ case XFA_Element::Speak:
+ node = pdfium::MakeUnique<CXFA_Speak>(doc, packet);
+ break;
+ case XFA_Element::DataGroup:
+ node = pdfium::MakeUnique<CXFA_DataGroup>(doc, packet);
+ break;
+ case XFA_Element::Common:
+ node = pdfium::MakeUnique<CXFA_Common>(doc, packet);
+ break;
+ case XFA_Element::Sharptext:
+ node = pdfium::MakeUnique<CXFA_Sharptext>(doc, packet);
+ break;
+ case XFA_Element::PaginationOverride:
+ node = pdfium::MakeUnique<CXFA_PaginationOverride>(doc, packet);
+ break;
+ case XFA_Element::Reasons:
+ node = pdfium::MakeUnique<CXFA_Reasons>(doc, packet);
+ break;
+ case XFA_Element::SignatureProperties:
+ node = pdfium::MakeUnique<CXFA_SignatureProperties>(doc, packet);
+ break;
+ case XFA_Element::Threshold:
+ node = pdfium::MakeUnique<CXFA_Threshold>(doc, packet);
+ break;
+ case XFA_Element::AppearanceFilter:
+ node = pdfium::MakeUnique<CXFA_AppearanceFilter>(doc, packet);
+ break;
+ case XFA_Element::Fill:
+ node = pdfium::MakeUnique<CXFA_Fill>(doc, packet);
+ break;
+ case XFA_Element::Font:
+ node = pdfium::MakeUnique<CXFA_Font>(doc, packet);
+ break;
+ case XFA_Element::Form:
+ node = pdfium::MakeUnique<CXFA_Form>(doc, packet);
+ break;
+ case XFA_Element::MediumInfo:
+ node = pdfium::MakeUnique<CXFA_MediumInfo>(doc, packet);
+ break;
+ case XFA_Element::Certificate:
+ node = pdfium::MakeUnique<CXFA_Certificate>(doc, packet);
+ break;
+ case XFA_Element::Password:
+ node = pdfium::MakeUnique<CXFA_Password>(doc, packet);
+ break;
+ case XFA_Element::RunScripts:
+ node = pdfium::MakeUnique<CXFA_RunScripts>(doc, packet);
+ break;
+ case XFA_Element::Trace:
+ node = pdfium::MakeUnique<CXFA_Trace>(doc, packet);
+ break;
+ case XFA_Element::Float:
+ node = pdfium::MakeUnique<CXFA_Float>(doc, packet);
+ break;
+ case XFA_Element::RenderPolicy:
+ node = pdfium::MakeUnique<CXFA_RenderPolicy>(doc, packet);
+ break;
+ case XFA_Element::Destination:
+ node = pdfium::MakeUnique<CXFA_Destination>(doc, packet);
+ break;
+ case XFA_Element::Value:
+ node = pdfium::MakeUnique<CXFA_Value>(doc, packet);
+ break;
+ case XFA_Element::Bookend:
+ node = pdfium::MakeUnique<CXFA_Bookend>(doc, packet);
+ break;
+ case XFA_Element::ExObject:
+ node = pdfium::MakeUnique<CXFA_ExObject>(doc, packet);
+ break;
+ case XFA_Element::OpenAction:
+ node = pdfium::MakeUnique<CXFA_OpenAction>(doc, packet);
+ break;
+ case XFA_Element::NeverEmbed:
+ node = pdfium::MakeUnique<CXFA_NeverEmbed>(doc, packet);
+ break;
+ case XFA_Element::BindItems:
+ node = pdfium::MakeUnique<CXFA_BindItems>(doc, packet);
+ break;
+ case XFA_Element::Calculate:
+ node = pdfium::MakeUnique<CXFA_Calculate>(doc, packet);
+ break;
+ case XFA_Element::Print:
+ node = pdfium::MakeUnique<CXFA_Print>(doc, packet);
+ break;
+ case XFA_Element::Extras:
+ node = pdfium::MakeUnique<CXFA_Extras>(doc, packet);
+ break;
+ case XFA_Element::Proto:
+ node = pdfium::MakeUnique<CXFA_Proto>(doc, packet);
+ break;
+ case XFA_Element::DSigData:
+ node = pdfium::MakeUnique<CXFA_DSigData>(doc, packet);
+ break;
+ case XFA_Element::Creator:
+ node = pdfium::MakeUnique<CXFA_Creator>(doc, packet);
+ break;
+ case XFA_Element::Connect:
+ node = pdfium::MakeUnique<CXFA_Connect>(doc, packet);
+ break;
+ case XFA_Element::Permissions:
+ node = pdfium::MakeUnique<CXFA_Permissions>(doc, packet);
+ break;
+ case XFA_Element::ConnectionSet:
+ node = pdfium::MakeUnique<CXFA_ConnectionSet>(doc, packet);
+ break;
+ case XFA_Element::Submit:
+ node = pdfium::MakeUnique<CXFA_Submit>(doc, packet);
+ break;
+ case XFA_Element::Range:
+ node = pdfium::MakeUnique<CXFA_Range>(doc, packet);
+ break;
+ case XFA_Element::Linearized:
+ node = pdfium::MakeUnique<CXFA_Linearized>(doc, packet);
+ break;
+ case XFA_Element::Packet:
+ node = pdfium::MakeUnique<CXFA_Packet>(doc, packet);
+ break;
+ case XFA_Element::RootElement:
+ node = pdfium::MakeUnique<CXFA_RootElement>(doc, packet);
+ break;
+ case XFA_Element::PlaintextMetadata:
+ node = pdfium::MakeUnique<CXFA_PlaintextMetadata>(doc, packet);
+ break;
+ case XFA_Element::NumberSymbols:
+ node = pdfium::MakeUnique<CXFA_NumberSymbols>(doc, packet);
+ break;
+ case XFA_Element::PrintHighQuality:
+ node = pdfium::MakeUnique<CXFA_PrintHighQuality>(doc, packet);
+ break;
+ case XFA_Element::Driver:
+ node = pdfium::MakeUnique<CXFA_Driver>(doc, packet);
+ break;
+ case XFA_Element::IncrementalLoad:
+ node = pdfium::MakeUnique<CXFA_IncrementalLoad>(doc, packet);
+ break;
+ case XFA_Element::SubjectDN:
+ node = pdfium::MakeUnique<CXFA_SubjectDN>(doc, packet);
+ break;
+ case XFA_Element::CompressLogicalStructure:
+ node = pdfium::MakeUnique<CXFA_CompressLogicalStructure>(doc, packet);
+ break;
+ case XFA_Element::IncrementalMerge:
+ node = pdfium::MakeUnique<CXFA_IncrementalMerge>(doc, packet);
+ break;
+ case XFA_Element::Radial:
+ node = pdfium::MakeUnique<CXFA_Radial>(doc, packet);
+ break;
+ case XFA_Element::Variables:
+ node = pdfium::MakeUnique<CXFA_Variables>(doc, packet);
+ break;
+ case XFA_Element::TimePatterns:
+ node = pdfium::MakeUnique<CXFA_TimePatterns>(doc, packet);
+ break;
+ case XFA_Element::EffectiveInputPolicy:
+ node = pdfium::MakeUnique<CXFA_EffectiveInputPolicy>(doc, packet);
+ break;
+ case XFA_Element::NameAttr:
+ node = pdfium::MakeUnique<CXFA_NameAttr>(doc, packet);
+ break;
+ case XFA_Element::Conformance:
+ node = pdfium::MakeUnique<CXFA_Conformance>(doc, packet);
+ break;
+ case XFA_Element::Transform:
+ node = pdfium::MakeUnique<CXFA_Transform>(doc, packet);
+ break;
+ case XFA_Element::LockDocument:
+ node = pdfium::MakeUnique<CXFA_LockDocument>(doc, packet);
+ break;
+ case XFA_Element::BreakAfter:
+ node = pdfium::MakeUnique<CXFA_BreakAfter>(doc, packet);
+ break;
+ case XFA_Element::Line:
+ node = pdfium::MakeUnique<CXFA_Line>(doc, packet);
+ break;
+ case XFA_Element::Source:
+ node = pdfium::MakeUnique<CXFA_Source>(doc, packet);
+ break;
+ case XFA_Element::Occur:
+ node = pdfium::MakeUnique<CXFA_Occur>(doc, packet);
+ break;
+ case XFA_Element::PickTrayByPDFSize:
+ node = pdfium::MakeUnique<CXFA_PickTrayByPDFSize>(doc, packet);
+ break;
+ case XFA_Element::MonthNames:
+ node = pdfium::MakeUnique<CXFA_MonthNames>(doc, packet);
+ break;
+ case XFA_Element::Severity:
+ node = pdfium::MakeUnique<CXFA_Severity>(doc, packet);
+ break;
+ case XFA_Element::GroupParent:
+ node = pdfium::MakeUnique<CXFA_GroupParent>(doc, packet);
+ break;
+ case XFA_Element::DocumentAssembly:
+ node = pdfium::MakeUnique<CXFA_DocumentAssembly>(doc, packet);
+ break;
+ case XFA_Element::NumberSymbol:
+ node = pdfium::MakeUnique<CXFA_NumberSymbol>(doc, packet);
+ break;
+ case XFA_Element::Tagged:
+ node = pdfium::MakeUnique<CXFA_Tagged>(doc, packet);
+ break;
+ case XFA_Element::Items:
+ node = pdfium::MakeUnique<CXFA_Items>(doc, packet);
+ break;
+ default:
+ NOTREACHED();
+ return nullptr;
+ }
+ if (!node || !node->IsValidInPacket(packet))
+ return nullptr;
+ return node;
+}
diff --git a/xfa/fxfa/parser/cxfa_node.h b/xfa/fxfa/parser/cxfa_node.h
index f713620..139587e 100644
--- a/xfa/fxfa/parser/cxfa_node.h
+++ b/xfa/fxfa/parser/cxfa_node.h
@@ -83,9 +83,6 @@
void* default_value;
};
- static XFA_Attribute NameToAttribute(const WideStringView& name);
- static WideString AttributeToName(XFA_Attribute attr);
- static XFA_Element NameToElement(const WideString& name);
static std::unique_ptr<CXFA_Node> Create(CXFA_Document* doc,
XFA_Element element,
XFA_PacketType packet);
diff --git a/xfa/fxfa/parser/cxfa_node_statics.cpp b/xfa/fxfa/parser/cxfa_node_statics.cpp
deleted file mode 100644
index dd71311..0000000
--- a/xfa/fxfa/parser/cxfa_node_statics.cpp
+++ /dev/null
@@ -1,1311 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include <memory>
-
-#include "third_party/base/ptr_util.h"
-#include "xfa/fxfa/parser/cxfa_accessiblecontent.h"
-#include "xfa/fxfa/parser/cxfa_acrobat.h"
-#include "xfa/fxfa/parser/cxfa_acrobat7.h"
-#include "xfa/fxfa/parser/cxfa_adbe_jsconsole.h"
-#include "xfa/fxfa/parser/cxfa_adbe_jsdebugger.h"
-#include "xfa/fxfa/parser/cxfa_addsilentprint.h"
-#include "xfa/fxfa/parser/cxfa_addviewerpreferences.h"
-#include "xfa/fxfa/parser/cxfa_adjustdata.h"
-#include "xfa/fxfa/parser/cxfa_adobeextensionlevel.h"
-#include "xfa/fxfa/parser/cxfa_agent.h"
-#include "xfa/fxfa/parser/cxfa_alwaysembed.h"
-#include "xfa/fxfa/parser/cxfa_amd.h"
-#include "xfa/fxfa/parser/cxfa_appearancefilter.h"
-#include "xfa/fxfa/parser/cxfa_arc.h"
-#include "xfa/fxfa/parser/cxfa_area.h"
-#include "xfa/fxfa/parser/cxfa_assist.h"
-#include "xfa/fxfa/parser/cxfa_attributes.h"
-#include "xfa/fxfa/parser/cxfa_autosave.h"
-#include "xfa/fxfa/parser/cxfa_barcode.h"
-#include "xfa/fxfa/parser/cxfa_base.h"
-#include "xfa/fxfa/parser/cxfa_batchoutput.h"
-#include "xfa/fxfa/parser/cxfa_behavioroverride.h"
-#include "xfa/fxfa/parser/cxfa_bind.h"
-#include "xfa/fxfa/parser/cxfa_binditems.h"
-#include "xfa/fxfa/parser/cxfa_bookend.h"
-#include "xfa/fxfa/parser/cxfa_boolean.h"
-#include "xfa/fxfa/parser/cxfa_border.h"
-#include "xfa/fxfa/parser/cxfa_break.h"
-#include "xfa/fxfa/parser/cxfa_breakafter.h"
-#include "xfa/fxfa/parser/cxfa_breakbefore.h"
-#include "xfa/fxfa/parser/cxfa_button.h"
-#include "xfa/fxfa/parser/cxfa_cache.h"
-#include "xfa/fxfa/parser/cxfa_calculate.h"
-#include "xfa/fxfa/parser/cxfa_calendarsymbols.h"
-#include "xfa/fxfa/parser/cxfa_caption.h"
-#include "xfa/fxfa/parser/cxfa_certificate.h"
-#include "xfa/fxfa/parser/cxfa_certificates.h"
-#include "xfa/fxfa/parser/cxfa_change.h"
-#include "xfa/fxfa/parser/cxfa_checkbutton.h"
-#include "xfa/fxfa/parser/cxfa_choicelist.h"
-#include "xfa/fxfa/parser/cxfa_color.h"
-#include "xfa/fxfa/parser/cxfa_comb.h"
-#include "xfa/fxfa/parser/cxfa_command.h"
-#include "xfa/fxfa/parser/cxfa_common.h"
-#include "xfa/fxfa/parser/cxfa_compress.h"
-#include "xfa/fxfa/parser/cxfa_compression.h"
-#include "xfa/fxfa/parser/cxfa_compresslogicalstructure.h"
-#include "xfa/fxfa/parser/cxfa_compressobjectstream.h"
-#include "xfa/fxfa/parser/cxfa_config.h"
-#include "xfa/fxfa/parser/cxfa_conformance.h"
-#include "xfa/fxfa/parser/cxfa_connect.h"
-#include "xfa/fxfa/parser/cxfa_connectionset.h"
-#include "xfa/fxfa/parser/cxfa_connectstring.h"
-#include "xfa/fxfa/parser/cxfa_contentarea.h"
-#include "xfa/fxfa/parser/cxfa_contentcopy.h"
-#include "xfa/fxfa/parser/cxfa_copies.h"
-#include "xfa/fxfa/parser/cxfa_corner.h"
-#include "xfa/fxfa/parser/cxfa_creator.h"
-#include "xfa/fxfa/parser/cxfa_currencysymbol.h"
-#include "xfa/fxfa/parser/cxfa_currencysymbols.h"
-#include "xfa/fxfa/parser/cxfa_currentpage.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
-#include "xfa/fxfa/parser/cxfa_datagroup.h"
-#include "xfa/fxfa/parser/cxfa_datamodel.h"
-#include "xfa/fxfa/parser/cxfa_datavalue.h"
-#include "xfa/fxfa/parser/cxfa_date.h"
-#include "xfa/fxfa/parser/cxfa_datepattern.h"
-#include "xfa/fxfa/parser/cxfa_datepatterns.h"
-#include "xfa/fxfa/parser/cxfa_datetime.h"
-#include "xfa/fxfa/parser/cxfa_datetimeedit.h"
-#include "xfa/fxfa/parser/cxfa_datetimesymbols.h"
-#include "xfa/fxfa/parser/cxfa_day.h"
-#include "xfa/fxfa/parser/cxfa_daynames.h"
-#include "xfa/fxfa/parser/cxfa_debug.h"
-#include "xfa/fxfa/parser/cxfa_decimal.h"
-#include "xfa/fxfa/parser/cxfa_defaulttypeface.h"
-#include "xfa/fxfa/parser/cxfa_defaultui.h"
-#include "xfa/fxfa/parser/cxfa_delete.h"
-#include "xfa/fxfa/parser/cxfa_delta.h"
-#include "xfa/fxfa/parser/cxfa_deltas.h"
-#include "xfa/fxfa/parser/cxfa_desc.h"
-#include "xfa/fxfa/parser/cxfa_destination.h"
-#include "xfa/fxfa/parser/cxfa_digestmethod.h"
-#include "xfa/fxfa/parser/cxfa_digestmethods.h"
-#include "xfa/fxfa/parser/cxfa_documentassembly.h"
-#include "xfa/fxfa/parser/cxfa_draw.h"
-#include "xfa/fxfa/parser/cxfa_driver.h"
-#include "xfa/fxfa/parser/cxfa_dsigdata.h"
-#include "xfa/fxfa/parser/cxfa_duplexoption.h"
-#include "xfa/fxfa/parser/cxfa_dynamicrender.h"
-#include "xfa/fxfa/parser/cxfa_edge.h"
-#include "xfa/fxfa/parser/cxfa_effectiveinputpolicy.h"
-#include "xfa/fxfa/parser/cxfa_effectiveoutputpolicy.h"
-#include "xfa/fxfa/parser/cxfa_embed.h"
-#include "xfa/fxfa/parser/cxfa_encoding.h"
-#include "xfa/fxfa/parser/cxfa_encodings.h"
-#include "xfa/fxfa/parser/cxfa_encrypt.h"
-#include "xfa/fxfa/parser/cxfa_encryption.h"
-#include "xfa/fxfa/parser/cxfa_encryptionlevel.h"
-#include "xfa/fxfa/parser/cxfa_encryptionmethod.h"
-#include "xfa/fxfa/parser/cxfa_encryptionmethods.h"
-#include "xfa/fxfa/parser/cxfa_enforce.h"
-#include "xfa/fxfa/parser/cxfa_equate.h"
-#include "xfa/fxfa/parser/cxfa_equaterange.h"
-#include "xfa/fxfa/parser/cxfa_era.h"
-#include "xfa/fxfa/parser/cxfa_eranames.h"
-#include "xfa/fxfa/parser/cxfa_event.h"
-#include "xfa/fxfa/parser/cxfa_exclgroup.h"
-#include "xfa/fxfa/parser/cxfa_exclude.h"
-#include "xfa/fxfa/parser/cxfa_excludens.h"
-#include "xfa/fxfa/parser/cxfa_exdata.h"
-#include "xfa/fxfa/parser/cxfa_execute.h"
-#include "xfa/fxfa/parser/cxfa_exobject.h"
-#include "xfa/fxfa/parser/cxfa_extras.h"
-#include "xfa/fxfa/parser/cxfa_field.h"
-#include "xfa/fxfa/parser/cxfa_fill.h"
-#include "xfa/fxfa/parser/cxfa_filter.h"
-#include "xfa/fxfa/parser/cxfa_fliplabel.h"
-#include "xfa/fxfa/parser/cxfa_float.h"
-#include "xfa/fxfa/parser/cxfa_font.h"
-#include "xfa/fxfa/parser/cxfa_fontinfo.h"
-#include "xfa/fxfa/parser/cxfa_form.h"
-#include "xfa/fxfa/parser/cxfa_format.h"
-#include "xfa/fxfa/parser/cxfa_formfieldfilling.h"
-#include "xfa/fxfa/parser/cxfa_groupparent.h"
-#include "xfa/fxfa/parser/cxfa_handler.h"
-#include "xfa/fxfa/parser/cxfa_hyphenation.h"
-#include "xfa/fxfa/parser/cxfa_ifempty.h"
-#include "xfa/fxfa/parser/cxfa_image.h"
-#include "xfa/fxfa/parser/cxfa_imageedit.h"
-#include "xfa/fxfa/parser/cxfa_includexdpcontent.h"
-#include "xfa/fxfa/parser/cxfa_incrementalload.h"
-#include "xfa/fxfa/parser/cxfa_incrementalmerge.h"
-#include "xfa/fxfa/parser/cxfa_insert.h"
-#include "xfa/fxfa/parser/cxfa_instancemanager.h"
-#include "xfa/fxfa/parser/cxfa_integer.h"
-#include "xfa/fxfa/parser/cxfa_interactive.h"
-#include "xfa/fxfa/parser/cxfa_issuers.h"
-#include "xfa/fxfa/parser/cxfa_items.h"
-#include "xfa/fxfa/parser/cxfa_jog.h"
-#include "xfa/fxfa/parser/cxfa_keep.h"
-#include "xfa/fxfa/parser/cxfa_keyusage.h"
-#include "xfa/fxfa/parser/cxfa_labelprinter.h"
-#include "xfa/fxfa/parser/cxfa_layout.h"
-#include "xfa/fxfa/parser/cxfa_level.h"
-#include "xfa/fxfa/parser/cxfa_line.h"
-#include "xfa/fxfa/parser/cxfa_linear.h"
-#include "xfa/fxfa/parser/cxfa_linearized.h"
-#include "xfa/fxfa/parser/cxfa_locale.h"
-#include "xfa/fxfa/parser/cxfa_localeset.h"
-#include "xfa/fxfa/parser/cxfa_lockdocument.h"
-#include "xfa/fxfa/parser/cxfa_log.h"
-#include "xfa/fxfa/parser/cxfa_manifest.h"
-#include "xfa/fxfa/parser/cxfa_map.h"
-#include "xfa/fxfa/parser/cxfa_margin.h"
-#include "xfa/fxfa/parser/cxfa_mdp.h"
-#include "xfa/fxfa/parser/cxfa_medium.h"
-#include "xfa/fxfa/parser/cxfa_mediuminfo.h"
-#include "xfa/fxfa/parser/cxfa_meridiem.h"
-#include "xfa/fxfa/parser/cxfa_meridiemnames.h"
-#include "xfa/fxfa/parser/cxfa_message.h"
-#include "xfa/fxfa/parser/cxfa_messaging.h"
-#include "xfa/fxfa/parser/cxfa_mode.h"
-#include "xfa/fxfa/parser/cxfa_modifyannots.h"
-#include "xfa/fxfa/parser/cxfa_month.h"
-#include "xfa/fxfa/parser/cxfa_monthnames.h"
-#include "xfa/fxfa/parser/cxfa_msgid.h"
-#include "xfa/fxfa/parser/cxfa_nameattr.h"
-#include "xfa/fxfa/parser/cxfa_neverembed.h"
-#include "xfa/fxfa/parser/cxfa_node.h"
-#include "xfa/fxfa/parser/cxfa_numberofcopies.h"
-#include "xfa/fxfa/parser/cxfa_numberpattern.h"
-#include "xfa/fxfa/parser/cxfa_numberpatterns.h"
-#include "xfa/fxfa/parser/cxfa_numbersymbol.h"
-#include "xfa/fxfa/parser/cxfa_numbersymbols.h"
-#include "xfa/fxfa/parser/cxfa_numericedit.h"
-#include "xfa/fxfa/parser/cxfa_occur.h"
-#include "xfa/fxfa/parser/cxfa_oid.h"
-#include "xfa/fxfa/parser/cxfa_oids.h"
-#include "xfa/fxfa/parser/cxfa_openaction.h"
-#include "xfa/fxfa/parser/cxfa_operation.h"
-#include "xfa/fxfa/parser/cxfa_output.h"
-#include "xfa/fxfa/parser/cxfa_outputbin.h"
-#include "xfa/fxfa/parser/cxfa_outputxsl.h"
-#include "xfa/fxfa/parser/cxfa_overflow.h"
-#include "xfa/fxfa/parser/cxfa_overprint.h"
-#include "xfa/fxfa/parser/cxfa_packet.h"
-#include "xfa/fxfa/parser/cxfa_packets.h"
-#include "xfa/fxfa/parser/cxfa_pagearea.h"
-#include "xfa/fxfa/parser/cxfa_pageoffset.h"
-#include "xfa/fxfa/parser/cxfa_pagerange.h"
-#include "xfa/fxfa/parser/cxfa_pageset.h"
-#include "xfa/fxfa/parser/cxfa_pagination.h"
-#include "xfa/fxfa/parser/cxfa_paginationoverride.h"
-#include "xfa/fxfa/parser/cxfa_para.h"
-#include "xfa/fxfa/parser/cxfa_part.h"
-#include "xfa/fxfa/parser/cxfa_password.h"
-#include "xfa/fxfa/parser/cxfa_passwordedit.h"
-#include "xfa/fxfa/parser/cxfa_pattern.h"
-#include "xfa/fxfa/parser/cxfa_pcl.h"
-#include "xfa/fxfa/parser/cxfa_pdf.h"
-#include "xfa/fxfa/parser/cxfa_pdfa.h"
-#include "xfa/fxfa/parser/cxfa_permissions.h"
-#include "xfa/fxfa/parser/cxfa_picktraybypdfsize.h"
-#include "xfa/fxfa/parser/cxfa_picture.h"
-#include "xfa/fxfa/parser/cxfa_plaintextmetadata.h"
-#include "xfa/fxfa/parser/cxfa_presence.h"
-#include "xfa/fxfa/parser/cxfa_present.h"
-#include "xfa/fxfa/parser/cxfa_print.h"
-#include "xfa/fxfa/parser/cxfa_printername.h"
-#include "xfa/fxfa/parser/cxfa_printhighquality.h"
-#include "xfa/fxfa/parser/cxfa_printscaling.h"
-#include "xfa/fxfa/parser/cxfa_producer.h"
-#include "xfa/fxfa/parser/cxfa_proto.h"
-#include "xfa/fxfa/parser/cxfa_ps.h"
-#include "xfa/fxfa/parser/cxfa_psmap.h"
-#include "xfa/fxfa/parser/cxfa_query.h"
-#include "xfa/fxfa/parser/cxfa_radial.h"
-#include "xfa/fxfa/parser/cxfa_range.h"
-#include "xfa/fxfa/parser/cxfa_reason.h"
-#include "xfa/fxfa/parser/cxfa_reasons.h"
-#include "xfa/fxfa/parser/cxfa_record.h"
-#include "xfa/fxfa/parser/cxfa_recordset.h"
-#include "xfa/fxfa/parser/cxfa_rectangle.h"
-#include "xfa/fxfa/parser/cxfa_ref.h"
-#include "xfa/fxfa/parser/cxfa_relevant.h"
-#include "xfa/fxfa/parser/cxfa_rename.h"
-#include "xfa/fxfa/parser/cxfa_renderpolicy.h"
-#include "xfa/fxfa/parser/cxfa_rootelement.h"
-#include "xfa/fxfa/parser/cxfa_runscripts.h"
-#include "xfa/fxfa/parser/cxfa_script.h"
-#include "xfa/fxfa/parser/cxfa_scriptmodel.h"
-#include "xfa/fxfa/parser/cxfa_select.h"
-#include "xfa/fxfa/parser/cxfa_setproperty.h"
-#include "xfa/fxfa/parser/cxfa_severity.h"
-#include "xfa/fxfa/parser/cxfa_sharptext.h"
-#include "xfa/fxfa/parser/cxfa_sharpxhtml.h"
-#include "xfa/fxfa/parser/cxfa_sharpxml.h"
-#include "xfa/fxfa/parser/cxfa_signature.h"
-#include "xfa/fxfa/parser/cxfa_signatureproperties.h"
-#include "xfa/fxfa/parser/cxfa_signdata.h"
-#include "xfa/fxfa/parser/cxfa_signing.h"
-#include "xfa/fxfa/parser/cxfa_silentprint.h"
-#include "xfa/fxfa/parser/cxfa_soapaction.h"
-#include "xfa/fxfa/parser/cxfa_soapaddress.h"
-#include "xfa/fxfa/parser/cxfa_solid.h"
-#include "xfa/fxfa/parser/cxfa_source.h"
-#include "xfa/fxfa/parser/cxfa_sourceset.h"
-#include "xfa/fxfa/parser/cxfa_speak.h"
-#include "xfa/fxfa/parser/cxfa_staple.h"
-#include "xfa/fxfa/parser/cxfa_startnode.h"
-#include "xfa/fxfa/parser/cxfa_startpage.h"
-#include "xfa/fxfa/parser/cxfa_stipple.h"
-#include "xfa/fxfa/parser/cxfa_subform.h"
-#include "xfa/fxfa/parser/cxfa_subformset.h"
-#include "xfa/fxfa/parser/cxfa_subjectdn.h"
-#include "xfa/fxfa/parser/cxfa_subjectdns.h"
-#include "xfa/fxfa/parser/cxfa_submit.h"
-#include "xfa/fxfa/parser/cxfa_submitformat.h"
-#include "xfa/fxfa/parser/cxfa_submiturl.h"
-#include "xfa/fxfa/parser/cxfa_subsetbelow.h"
-#include "xfa/fxfa/parser/cxfa_suppressbanner.h"
-#include "xfa/fxfa/parser/cxfa_tagged.h"
-#include "xfa/fxfa/parser/cxfa_template.h"
-#include "xfa/fxfa/parser/cxfa_templatecache.h"
-#include "xfa/fxfa/parser/cxfa_text.h"
-#include "xfa/fxfa/parser/cxfa_textedit.h"
-#include "xfa/fxfa/parser/cxfa_threshold.h"
-#include "xfa/fxfa/parser/cxfa_time.h"
-#include "xfa/fxfa/parser/cxfa_timepattern.h"
-#include "xfa/fxfa/parser/cxfa_timepatterns.h"
-#include "xfa/fxfa/parser/cxfa_timestamp.h"
-#include "xfa/fxfa/parser/cxfa_to.h"
-#include "xfa/fxfa/parser/cxfa_tooltip.h"
-#include "xfa/fxfa/parser/cxfa_trace.h"
-#include "xfa/fxfa/parser/cxfa_transform.h"
-#include "xfa/fxfa/parser/cxfa_traversal.h"
-#include "xfa/fxfa/parser/cxfa_traverse.h"
-#include "xfa/fxfa/parser/cxfa_type.h"
-#include "xfa/fxfa/parser/cxfa_typeface.h"
-#include "xfa/fxfa/parser/cxfa_typefaces.h"
-#include "xfa/fxfa/parser/cxfa_ui.h"
-#include "xfa/fxfa/parser/cxfa_update.h"
-#include "xfa/fxfa/parser/cxfa_uri.h"
-#include "xfa/fxfa/parser/cxfa_user.h"
-#include "xfa/fxfa/parser/cxfa_validate.h"
-#include "xfa/fxfa/parser/cxfa_validateapprovalsignatures.h"
-#include "xfa/fxfa/parser/cxfa_validationmessaging.h"
-#include "xfa/fxfa/parser/cxfa_value.h"
-#include "xfa/fxfa/parser/cxfa_variables.h"
-#include "xfa/fxfa/parser/cxfa_version.h"
-#include "xfa/fxfa/parser/cxfa_versioncontrol.h"
-#include "xfa/fxfa/parser/cxfa_viewerpreferences.h"
-#include "xfa/fxfa/parser/cxfa_webclient.h"
-#include "xfa/fxfa/parser/cxfa_whitespace.h"
-#include "xfa/fxfa/parser/cxfa_window.h"
-#include "xfa/fxfa/parser/cxfa_wsdladdress.h"
-#include "xfa/fxfa/parser/cxfa_wsdlconnection.h"
-#include "xfa/fxfa/parser/cxfa_xdc.h"
-#include "xfa/fxfa/parser/cxfa_xdp.h"
-#include "xfa/fxfa/parser/cxfa_xfa.h"
-#include "xfa/fxfa/parser/cxfa_xmlconnection.h"
-#include "xfa/fxfa/parser/cxfa_xsdconnection.h"
-#include "xfa/fxfa/parser/cxfa_xsl.h"
-#include "xfa/fxfa/parser/cxfa_zpl.h"
-
-namespace {
-
-struct ElementNameInfo {
- uint32_t hash; // Hashed as wide string.
- XFA_Element element;
-};
-
-const ElementNameInfo ElementNameToEnum[] = {
-#undef ELEM____
-#undef ELEM_HIDDEN____
-#define ELEM____(a, b, c, d) {a, XFA_Element::c},
-#define ELEM_HIDDEN____(a, b)
-#include "xfa/fxfa/parser/elements.inc"
-#undef ELEM____
-#undef ELEM_HIDDEN____
-};
-
-struct AttributeNameInfo {
- uint32_t hash; // Hashed as wide string.
- XFA_Attribute attribute;
-};
-
-const AttributeNameInfo AttributeNameInfoToEnum[] = {
-#undef ATTR____
-#define ATTR____(a, b, c) {a, XFA_Attribute::c},
-#include "xfa/fxfa/parser/attributes.inc"
-#undef ATTR____
-};
-
-const char* AttributeToNameASCII(XFA_Attribute attr) {
- switch (attr) {
-#undef ATTR____
-#define ATTR____(a, b, c) \
- case XFA_Attribute::c: \
- return b;
-#include "xfa/fxfa/parser/attributes.inc"
-#undef ATTR____
- default:
- NOTREACHED();
- return "";
- }
-}
-
-} // namespace
-
-// static
-XFA_Element CXFA_Node::NameToElement(const WideString& name) {
- uint32_t hash = FX_HashCode_GetW(name.AsStringView(), false);
- auto* elem = std::lower_bound(
- std::begin(ElementNameToEnum), std::end(ElementNameToEnum), hash,
- [](const ElementNameInfo& a, uint32_t hash) { return a.hash < hash; });
- if (elem != std::end(ElementNameToEnum) && elem->hash == hash)
- return elem->element;
- return XFA_Element::Unknown;
-}
-
-// static
-XFA_Attribute CXFA_Node::NameToAttribute(const WideStringView& name) {
- uint32_t hash = FX_HashCode_GetW(name, false);
- auto* elem = std::lower_bound(
- std::begin(AttributeNameInfoToEnum), std::end(AttributeNameInfoToEnum),
- hash,
- [](const AttributeNameInfo& a, uint32_t hash) { return a.hash < hash; });
- if (elem != std::end(AttributeNameInfoToEnum) && elem->hash == hash)
- return elem->attribute;
- return XFA_Attribute::Unknown;
-}
-
-// static
-std::unique_ptr<CXFA_Node> CXFA_Node::Create(CXFA_Document* doc,
- XFA_Element element,
- XFA_PacketType packet) {
- std::unique_ptr<CXFA_Node> node;
- switch (element) {
- case XFA_Element::Ps:
- node = pdfium::MakeUnique<CXFA_Ps>(doc, packet);
- break;
- case XFA_Element::To:
- node = pdfium::MakeUnique<CXFA_To>(doc, packet);
- break;
- case XFA_Element::Ui:
- node = pdfium::MakeUnique<CXFA_Ui>(doc, packet);
- break;
- case XFA_Element::RecordSet:
- node = pdfium::MakeUnique<CXFA_RecordSet>(doc, packet);
- break;
- case XFA_Element::SubsetBelow:
- node = pdfium::MakeUnique<CXFA_SubsetBelow>(doc, packet);
- break;
- case XFA_Element::SubformSet:
- node = pdfium::MakeUnique<CXFA_SubformSet>(doc, packet);
- break;
- case XFA_Element::AdobeExtensionLevel:
- node = pdfium::MakeUnique<CXFA_AdobeExtensionLevel>(doc, packet);
- break;
- case XFA_Element::Typeface:
- node = pdfium::MakeUnique<CXFA_Typeface>(doc, packet);
- break;
- case XFA_Element::Break:
- node = pdfium::MakeUnique<CXFA_Break>(doc, packet);
- break;
- case XFA_Element::FontInfo:
- node = pdfium::MakeUnique<CXFA_FontInfo>(doc, packet);
- break;
- case XFA_Element::NumberPattern:
- node = pdfium::MakeUnique<CXFA_NumberPattern>(doc, packet);
- break;
- case XFA_Element::DynamicRender:
- node = pdfium::MakeUnique<CXFA_DynamicRender>(doc, packet);
- break;
- case XFA_Element::PrintScaling:
- node = pdfium::MakeUnique<CXFA_PrintScaling>(doc, packet);
- break;
- case XFA_Element::CheckButton:
- node = pdfium::MakeUnique<CXFA_CheckButton>(doc, packet);
- break;
- case XFA_Element::DatePatterns:
- node = pdfium::MakeUnique<CXFA_DatePatterns>(doc, packet);
- break;
- case XFA_Element::SourceSet:
- node = pdfium::MakeUnique<CXFA_SourceSet>(doc, packet);
- break;
- case XFA_Element::Amd:
- node = pdfium::MakeUnique<CXFA_Amd>(doc, packet);
- break;
- case XFA_Element::Arc:
- node = pdfium::MakeUnique<CXFA_Arc>(doc, packet);
- break;
- case XFA_Element::Day:
- node = pdfium::MakeUnique<CXFA_Day>(doc, packet);
- break;
- case XFA_Element::Era:
- node = pdfium::MakeUnique<CXFA_Era>(doc, packet);
- break;
- case XFA_Element::Jog:
- node = pdfium::MakeUnique<CXFA_Jog>(doc, packet);
- break;
- case XFA_Element::Log:
- node = pdfium::MakeUnique<CXFA_Log>(doc, packet);
- break;
- case XFA_Element::Map:
- node = pdfium::MakeUnique<CXFA_Map>(doc, packet);
- break;
- case XFA_Element::Mdp:
- node = pdfium::MakeUnique<CXFA_Mdp>(doc, packet);
- break;
- case XFA_Element::BreakBefore:
- node = pdfium::MakeUnique<CXFA_BreakBefore>(doc, packet);
- break;
- case XFA_Element::Oid:
- node = pdfium::MakeUnique<CXFA_Oid>(doc, packet);
- break;
- case XFA_Element::Pcl:
- node = pdfium::MakeUnique<CXFA_Pcl>(doc, packet);
- break;
- case XFA_Element::Pdf:
- node = pdfium::MakeUnique<CXFA_Pdf>(doc, packet);
- break;
- case XFA_Element::Ref:
- node = pdfium::MakeUnique<CXFA_Ref>(doc, packet);
- break;
- case XFA_Element::Uri:
- node = pdfium::MakeUnique<CXFA_Uri>(doc, packet);
- break;
- case XFA_Element::Xdc:
- node = pdfium::MakeUnique<CXFA_Xdc>(doc, packet);
- break;
- case XFA_Element::Xdp:
- node = pdfium::MakeUnique<CXFA_Xdp>(doc, packet);
- break;
- case XFA_Element::Xfa:
- node = pdfium::MakeUnique<CXFA_Xfa>(doc, packet);
- break;
- case XFA_Element::Xsl:
- node = pdfium::MakeUnique<CXFA_Xsl>(doc, packet);
- break;
- case XFA_Element::Zpl:
- node = pdfium::MakeUnique<CXFA_Zpl>(doc, packet);
- break;
- case XFA_Element::Cache:
- node = pdfium::MakeUnique<CXFA_Cache>(doc, packet);
- break;
- case XFA_Element::Margin:
- node = pdfium::MakeUnique<CXFA_Margin>(doc, packet);
- break;
- case XFA_Element::KeyUsage:
- node = pdfium::MakeUnique<CXFA_KeyUsage>(doc, packet);
- break;
- case XFA_Element::Exclude:
- node = pdfium::MakeUnique<CXFA_Exclude>(doc, packet);
- break;
- case XFA_Element::ChoiceList:
- node = pdfium::MakeUnique<CXFA_ChoiceList>(doc, packet);
- break;
- case XFA_Element::Level:
- node = pdfium::MakeUnique<CXFA_Level>(doc, packet);
- break;
- case XFA_Element::LabelPrinter:
- node = pdfium::MakeUnique<CXFA_LabelPrinter>(doc, packet);
- break;
- case XFA_Element::CalendarSymbols:
- node = pdfium::MakeUnique<CXFA_CalendarSymbols>(doc, packet);
- break;
- case XFA_Element::Para:
- node = pdfium::MakeUnique<CXFA_Para>(doc, packet);
- break;
- case XFA_Element::Part:
- node = pdfium::MakeUnique<CXFA_Part>(doc, packet);
- break;
- case XFA_Element::Pdfa:
- node = pdfium::MakeUnique<CXFA_Pdfa>(doc, packet);
- break;
- case XFA_Element::Filter:
- node = pdfium::MakeUnique<CXFA_Filter>(doc, packet);
- break;
- case XFA_Element::Present:
- node = pdfium::MakeUnique<CXFA_Present>(doc, packet);
- break;
- case XFA_Element::Pagination:
- node = pdfium::MakeUnique<CXFA_Pagination>(doc, packet);
- break;
- case XFA_Element::Encoding:
- node = pdfium::MakeUnique<CXFA_Encoding>(doc, packet);
- break;
- case XFA_Element::Event:
- node = pdfium::MakeUnique<CXFA_Event>(doc, packet);
- break;
- case XFA_Element::Whitespace:
- node = pdfium::MakeUnique<CXFA_Whitespace>(doc, packet);
- break;
- case XFA_Element::DefaultUi:
- node = pdfium::MakeUnique<CXFA_DefaultUi>(doc, packet);
- break;
- case XFA_Element::DataModel:
- node = pdfium::MakeUnique<CXFA_DataModel>(doc, packet);
- break;
- case XFA_Element::Barcode:
- node = pdfium::MakeUnique<CXFA_Barcode>(doc, packet);
- break;
- case XFA_Element::TimePattern:
- node = pdfium::MakeUnique<CXFA_TimePattern>(doc, packet);
- break;
- case XFA_Element::BatchOutput:
- node = pdfium::MakeUnique<CXFA_BatchOutput>(doc, packet);
- break;
- case XFA_Element::Enforce:
- node = pdfium::MakeUnique<CXFA_Enforce>(doc, packet);
- break;
- case XFA_Element::CurrencySymbols:
- node = pdfium::MakeUnique<CXFA_CurrencySymbols>(doc, packet);
- break;
- case XFA_Element::AddSilentPrint:
- node = pdfium::MakeUnique<CXFA_AddSilentPrint>(doc, packet);
- break;
- case XFA_Element::Rename:
- node = pdfium::MakeUnique<CXFA_Rename>(doc, packet);
- break;
- case XFA_Element::Operation:
- node = pdfium::MakeUnique<CXFA_Operation>(doc, packet);
- break;
- case XFA_Element::Typefaces:
- node = pdfium::MakeUnique<CXFA_Typefaces>(doc, packet);
- break;
- case XFA_Element::SubjectDNs:
- node = pdfium::MakeUnique<CXFA_SubjectDNs>(doc, packet);
- break;
- case XFA_Element::Issuers:
- node = pdfium::MakeUnique<CXFA_Issuers>(doc, packet);
- break;
- case XFA_Element::WsdlConnection:
- node = pdfium::MakeUnique<CXFA_WsdlConnection>(doc, packet);
- break;
- case XFA_Element::Debug:
- node = pdfium::MakeUnique<CXFA_Debug>(doc, packet);
- break;
- case XFA_Element::Delta:
- node = pdfium::MakeUnique<CXFA_Delta>(doc, packet);
- break;
- case XFA_Element::EraNames:
- node = pdfium::MakeUnique<CXFA_EraNames>(doc, packet);
- break;
- case XFA_Element::ModifyAnnots:
- node = pdfium::MakeUnique<CXFA_ModifyAnnots>(doc, packet);
- break;
- case XFA_Element::StartNode:
- node = pdfium::MakeUnique<CXFA_StartNode>(doc, packet);
- break;
- case XFA_Element::Button:
- node = pdfium::MakeUnique<CXFA_Button>(doc, packet);
- break;
- case XFA_Element::Format:
- node = pdfium::MakeUnique<CXFA_Format>(doc, packet);
- break;
- case XFA_Element::Border:
- node = pdfium::MakeUnique<CXFA_Border>(doc, packet);
- break;
- case XFA_Element::Area:
- node = pdfium::MakeUnique<CXFA_Area>(doc, packet);
- break;
- case XFA_Element::Hyphenation:
- node = pdfium::MakeUnique<CXFA_Hyphenation>(doc, packet);
- break;
- case XFA_Element::Text:
- node = pdfium::MakeUnique<CXFA_Text>(doc, packet);
- break;
- case XFA_Element::Time:
- node = pdfium::MakeUnique<CXFA_Time>(doc, packet);
- break;
- case XFA_Element::Type:
- node = pdfium::MakeUnique<CXFA_Type>(doc, packet);
- break;
- case XFA_Element::Overprint:
- node = pdfium::MakeUnique<CXFA_Overprint>(doc, packet);
- break;
- case XFA_Element::Certificates:
- node = pdfium::MakeUnique<CXFA_Certificates>(doc, packet);
- break;
- case XFA_Element::EncryptionMethods:
- node = pdfium::MakeUnique<CXFA_EncryptionMethods>(doc, packet);
- break;
- case XFA_Element::SetProperty:
- node = pdfium::MakeUnique<CXFA_SetProperty>(doc, packet);
- break;
- case XFA_Element::PrinterName:
- node = pdfium::MakeUnique<CXFA_PrinterName>(doc, packet);
- break;
- case XFA_Element::StartPage:
- node = pdfium::MakeUnique<CXFA_StartPage>(doc, packet);
- break;
- case XFA_Element::PageOffset:
- node = pdfium::MakeUnique<CXFA_PageOffset>(doc, packet);
- break;
- case XFA_Element::DateTime:
- node = pdfium::MakeUnique<CXFA_DateTime>(doc, packet);
- break;
- case XFA_Element::Comb:
- node = pdfium::MakeUnique<CXFA_Comb>(doc, packet);
- break;
- case XFA_Element::Pattern:
- node = pdfium::MakeUnique<CXFA_Pattern>(doc, packet);
- break;
- case XFA_Element::IfEmpty:
- node = pdfium::MakeUnique<CXFA_IfEmpty>(doc, packet);
- break;
- case XFA_Element::SuppressBanner:
- node = pdfium::MakeUnique<CXFA_SuppressBanner>(doc, packet);
- break;
- case XFA_Element::OutputBin:
- node = pdfium::MakeUnique<CXFA_OutputBin>(doc, packet);
- break;
- case XFA_Element::Field:
- node = pdfium::MakeUnique<CXFA_Field>(doc, packet);
- break;
- case XFA_Element::Agent:
- node = pdfium::MakeUnique<CXFA_Agent>(doc, packet);
- break;
- case XFA_Element::OutputXSL:
- node = pdfium::MakeUnique<CXFA_OutputXSL>(doc, packet);
- break;
- case XFA_Element::AdjustData:
- node = pdfium::MakeUnique<CXFA_AdjustData>(doc, packet);
- break;
- case XFA_Element::AutoSave:
- node = pdfium::MakeUnique<CXFA_AutoSave>(doc, packet);
- break;
- case XFA_Element::ContentArea:
- node = pdfium::MakeUnique<CXFA_ContentArea>(doc, packet);
- break;
- case XFA_Element::WsdlAddress:
- node = pdfium::MakeUnique<CXFA_WsdlAddress>(doc, packet);
- break;
- case XFA_Element::Solid:
- node = pdfium::MakeUnique<CXFA_Solid>(doc, packet);
- break;
- case XFA_Element::DateTimeSymbols:
- node = pdfium::MakeUnique<CXFA_DateTimeSymbols>(doc, packet);
- break;
- case XFA_Element::EncryptionLevel:
- node = pdfium::MakeUnique<CXFA_EncryptionLevel>(doc, packet);
- break;
- case XFA_Element::Edge:
- node = pdfium::MakeUnique<CXFA_Edge>(doc, packet);
- break;
- case XFA_Element::Stipple:
- node = pdfium::MakeUnique<CXFA_Stipple>(doc, packet);
- break;
- case XFA_Element::Attributes:
- node = pdfium::MakeUnique<CXFA_Attributes>(doc, packet);
- break;
- case XFA_Element::VersionControl:
- node = pdfium::MakeUnique<CXFA_VersionControl>(doc, packet);
- break;
- case XFA_Element::Meridiem:
- node = pdfium::MakeUnique<CXFA_Meridiem>(doc, packet);
- break;
- case XFA_Element::ExclGroup:
- node = pdfium::MakeUnique<CXFA_ExclGroup>(doc, packet);
- break;
- case XFA_Element::ToolTip:
- node = pdfium::MakeUnique<CXFA_ToolTip>(doc, packet);
- break;
- case XFA_Element::Compress:
- node = pdfium::MakeUnique<CXFA_Compress>(doc, packet);
- break;
- case XFA_Element::Reason:
- node = pdfium::MakeUnique<CXFA_Reason>(doc, packet);
- break;
- case XFA_Element::Execute:
- node = pdfium::MakeUnique<CXFA_Execute>(doc, packet);
- break;
- case XFA_Element::ContentCopy:
- node = pdfium::MakeUnique<CXFA_ContentCopy>(doc, packet);
- break;
- case XFA_Element::DateTimeEdit:
- node = pdfium::MakeUnique<CXFA_DateTimeEdit>(doc, packet);
- break;
- case XFA_Element::Config:
- node = pdfium::MakeUnique<CXFA_Config>(doc, packet);
- break;
- case XFA_Element::Image:
- node = pdfium::MakeUnique<CXFA_Image>(doc, packet);
- break;
- case XFA_Element::SharpxHTML:
- node = pdfium::MakeUnique<CXFA_SharpxHTML>(doc, packet);
- break;
- case XFA_Element::NumberOfCopies:
- node = pdfium::MakeUnique<CXFA_NumberOfCopies>(doc, packet);
- break;
- case XFA_Element::BehaviorOverride:
- node = pdfium::MakeUnique<CXFA_BehaviorOverride>(doc, packet);
- break;
- case XFA_Element::TimeStamp:
- node = pdfium::MakeUnique<CXFA_TimeStamp>(doc, packet);
- break;
- case XFA_Element::Month:
- node = pdfium::MakeUnique<CXFA_Month>(doc, packet);
- break;
- case XFA_Element::ViewerPreferences:
- node = pdfium::MakeUnique<CXFA_ViewerPreferences>(doc, packet);
- break;
- case XFA_Element::ScriptModel:
- node = pdfium::MakeUnique<CXFA_ScriptModel>(doc, packet);
- break;
- case XFA_Element::Decimal:
- node = pdfium::MakeUnique<CXFA_Decimal>(doc, packet);
- break;
- case XFA_Element::Subform:
- node = pdfium::MakeUnique<CXFA_Subform>(doc, packet);
- break;
- case XFA_Element::Select:
- node = pdfium::MakeUnique<CXFA_Select>(doc, packet);
- break;
- case XFA_Element::Window:
- node = pdfium::MakeUnique<CXFA_Window>(doc, packet);
- break;
- case XFA_Element::LocaleSet:
- node = pdfium::MakeUnique<CXFA_LocaleSet>(doc, packet);
- break;
- case XFA_Element::Handler:
- node = pdfium::MakeUnique<CXFA_Handler>(doc, packet);
- break;
- case XFA_Element::Presence:
- node = pdfium::MakeUnique<CXFA_Presence>(doc, packet);
- break;
- case XFA_Element::Record:
- node = pdfium::MakeUnique<CXFA_Record>(doc, packet);
- break;
- case XFA_Element::Embed:
- node = pdfium::MakeUnique<CXFA_Embed>(doc, packet);
- break;
- case XFA_Element::Version:
- node = pdfium::MakeUnique<CXFA_Version>(doc, packet);
- break;
- case XFA_Element::Command:
- node = pdfium::MakeUnique<CXFA_Command>(doc, packet);
- break;
- case XFA_Element::Copies:
- node = pdfium::MakeUnique<CXFA_Copies>(doc, packet);
- break;
- case XFA_Element::Staple:
- node = pdfium::MakeUnique<CXFA_Staple>(doc, packet);
- break;
- case XFA_Element::SubmitFormat:
- node = pdfium::MakeUnique<CXFA_SubmitFormat>(doc, packet);
- break;
- case XFA_Element::Boolean:
- node = pdfium::MakeUnique<CXFA_Boolean>(doc, packet);
- break;
- case XFA_Element::Message:
- node = pdfium::MakeUnique<CXFA_Message>(doc, packet);
- break;
- case XFA_Element::Output:
- node = pdfium::MakeUnique<CXFA_Output>(doc, packet);
- break;
- case XFA_Element::PsMap:
- node = pdfium::MakeUnique<CXFA_PsMap>(doc, packet);
- break;
- case XFA_Element::ExcludeNS:
- node = pdfium::MakeUnique<CXFA_ExcludeNS>(doc, packet);
- break;
- case XFA_Element::Assist:
- node = pdfium::MakeUnique<CXFA_Assist>(doc, packet);
- break;
- case XFA_Element::Picture:
- node = pdfium::MakeUnique<CXFA_Picture>(doc, packet);
- break;
- case XFA_Element::Traversal:
- node = pdfium::MakeUnique<CXFA_Traversal>(doc, packet);
- break;
- case XFA_Element::SilentPrint:
- node = pdfium::MakeUnique<CXFA_SilentPrint>(doc, packet);
- break;
- case XFA_Element::WebClient:
- node = pdfium::MakeUnique<CXFA_WebClient>(doc, packet);
- break;
- case XFA_Element::Producer:
- node = pdfium::MakeUnique<CXFA_Producer>(doc, packet);
- break;
- case XFA_Element::Corner:
- node = pdfium::MakeUnique<CXFA_Corner>(doc, packet);
- break;
- case XFA_Element::MsgId:
- node = pdfium::MakeUnique<CXFA_MsgId>(doc, packet);
- break;
- case XFA_Element::Color:
- node = pdfium::MakeUnique<CXFA_Color>(doc, packet);
- break;
- case XFA_Element::Keep:
- node = pdfium::MakeUnique<CXFA_Keep>(doc, packet);
- break;
- case XFA_Element::Query:
- node = pdfium::MakeUnique<CXFA_Query>(doc, packet);
- break;
- case XFA_Element::Insert:
- node = pdfium::MakeUnique<CXFA_Insert>(doc, packet);
- break;
- case XFA_Element::ImageEdit:
- node = pdfium::MakeUnique<CXFA_ImageEdit>(doc, packet);
- break;
- case XFA_Element::Validate:
- node = pdfium::MakeUnique<CXFA_Validate>(doc, packet);
- break;
- case XFA_Element::DigestMethods:
- node = pdfium::MakeUnique<CXFA_DigestMethods>(doc, packet);
- break;
- case XFA_Element::NumberPatterns:
- node = pdfium::MakeUnique<CXFA_NumberPatterns>(doc, packet);
- break;
- case XFA_Element::PageSet:
- node = pdfium::MakeUnique<CXFA_PageSet>(doc, packet);
- break;
- case XFA_Element::Integer:
- node = pdfium::MakeUnique<CXFA_Integer>(doc, packet);
- break;
- case XFA_Element::SoapAddress:
- node = pdfium::MakeUnique<CXFA_SoapAddress>(doc, packet);
- break;
- case XFA_Element::Equate:
- node = pdfium::MakeUnique<CXFA_Equate>(doc, packet);
- break;
- case XFA_Element::FormFieldFilling:
- node = pdfium::MakeUnique<CXFA_FormFieldFilling>(doc, packet);
- break;
- case XFA_Element::PageRange:
- node = pdfium::MakeUnique<CXFA_PageRange>(doc, packet);
- break;
- case XFA_Element::Update:
- node = pdfium::MakeUnique<CXFA_Update>(doc, packet);
- break;
- case XFA_Element::ConnectString:
- node = pdfium::MakeUnique<CXFA_ConnectString>(doc, packet);
- break;
- case XFA_Element::Mode:
- node = pdfium::MakeUnique<CXFA_Mode>(doc, packet);
- break;
- case XFA_Element::Layout:
- node = pdfium::MakeUnique<CXFA_Layout>(doc, packet);
- break;
- case XFA_Element::Sharpxml:
- node = pdfium::MakeUnique<CXFA_Sharpxml>(doc, packet);
- break;
- case XFA_Element::XsdConnection:
- node = pdfium::MakeUnique<CXFA_XsdConnection>(doc, packet);
- break;
- case XFA_Element::Traverse:
- node = pdfium::MakeUnique<CXFA_Traverse>(doc, packet);
- break;
- case XFA_Element::Encodings:
- node = pdfium::MakeUnique<CXFA_Encodings>(doc, packet);
- break;
- case XFA_Element::Template:
- node = pdfium::MakeUnique<CXFA_Template>(doc, packet);
- break;
- case XFA_Element::Acrobat:
- node = pdfium::MakeUnique<CXFA_Acrobat>(doc, packet);
- break;
- case XFA_Element::ValidationMessaging:
- node = pdfium::MakeUnique<CXFA_ValidationMessaging>(doc, packet);
- break;
- case XFA_Element::Signing:
- node = pdfium::MakeUnique<CXFA_Signing>(doc, packet);
- break;
- case XFA_Element::Script:
- node = pdfium::MakeUnique<CXFA_Script>(doc, packet);
- break;
- case XFA_Element::AddViewerPreferences:
- node = pdfium::MakeUnique<CXFA_AddViewerPreferences>(doc, packet);
- break;
- case XFA_Element::AlwaysEmbed:
- node = pdfium::MakeUnique<CXFA_AlwaysEmbed>(doc, packet);
- break;
- case XFA_Element::PasswordEdit:
- node = pdfium::MakeUnique<CXFA_PasswordEdit>(doc, packet);
- break;
- case XFA_Element::NumericEdit:
- node = pdfium::MakeUnique<CXFA_NumericEdit>(doc, packet);
- break;
- case XFA_Element::EncryptionMethod:
- node = pdfium::MakeUnique<CXFA_EncryptionMethod>(doc, packet);
- break;
- case XFA_Element::Change:
- node = pdfium::MakeUnique<CXFA_Change>(doc, packet);
- break;
- case XFA_Element::PageArea:
- node = pdfium::MakeUnique<CXFA_PageArea>(doc, packet);
- break;
- case XFA_Element::SubmitUrl:
- node = pdfium::MakeUnique<CXFA_SubmitUrl>(doc, packet);
- break;
- case XFA_Element::Oids:
- node = pdfium::MakeUnique<CXFA_Oids>(doc, packet);
- break;
- case XFA_Element::Signature:
- node = pdfium::MakeUnique<CXFA_Signature>(doc, packet);
- break;
- case XFA_Element::ADBE_JSConsole:
- node = pdfium::MakeUnique<CXFA_aDBE_JSConsole>(doc, packet);
- break;
- case XFA_Element::Caption:
- node = pdfium::MakeUnique<CXFA_Caption>(doc, packet);
- break;
- case XFA_Element::Relevant:
- node = pdfium::MakeUnique<CXFA_Relevant>(doc, packet);
- break;
- case XFA_Element::FlipLabel:
- node = pdfium::MakeUnique<CXFA_FlipLabel>(doc, packet);
- break;
- case XFA_Element::ExData:
- node = pdfium::MakeUnique<CXFA_ExData>(doc, packet);
- break;
- case XFA_Element::DayNames:
- node = pdfium::MakeUnique<CXFA_DayNames>(doc, packet);
- break;
- case XFA_Element::SoapAction:
- node = pdfium::MakeUnique<CXFA_SoapAction>(doc, packet);
- break;
- case XFA_Element::DefaultTypeface:
- node = pdfium::MakeUnique<CXFA_DefaultTypeface>(doc, packet);
- break;
- case XFA_Element::Manifest:
- node = pdfium::MakeUnique<CXFA_Manifest>(doc, packet);
- break;
- case XFA_Element::Overflow:
- node = pdfium::MakeUnique<CXFA_Overflow>(doc, packet);
- break;
- case XFA_Element::Linear:
- node = pdfium::MakeUnique<CXFA_Linear>(doc, packet);
- break;
- case XFA_Element::CurrencySymbol:
- node = pdfium::MakeUnique<CXFA_CurrencySymbol>(doc, packet);
- break;
- case XFA_Element::Delete:
- node = pdfium::MakeUnique<CXFA_Delete>(doc, packet);
- break;
- case XFA_Element::DigestMethod:
- node = pdfium::MakeUnique<CXFA_DigestMethod>(doc, packet);
- break;
- case XFA_Element::InstanceManager:
- node = pdfium::MakeUnique<CXFA_InstanceManager>(doc, packet);
- break;
- case XFA_Element::EquateRange:
- node = pdfium::MakeUnique<CXFA_EquateRange>(doc, packet);
- break;
- case XFA_Element::Medium:
- node = pdfium::MakeUnique<CXFA_Medium>(doc, packet);
- break;
- case XFA_Element::TextEdit:
- node = pdfium::MakeUnique<CXFA_TextEdit>(doc, packet);
- break;
- case XFA_Element::TemplateCache:
- node = pdfium::MakeUnique<CXFA_TemplateCache>(doc, packet);
- break;
- case XFA_Element::CompressObjectStream:
- node = pdfium::MakeUnique<CXFA_CompressObjectStream>(doc, packet);
- break;
- case XFA_Element::DataValue:
- node = pdfium::MakeUnique<CXFA_DataValue>(doc, packet);
- break;
- case XFA_Element::AccessibleContent:
- node = pdfium::MakeUnique<CXFA_AccessibleContent>(doc, packet);
- break;
- case XFA_Element::IncludeXDPContent:
- node = pdfium::MakeUnique<CXFA_IncludeXDPContent>(doc, packet);
- break;
- case XFA_Element::XmlConnection:
- node = pdfium::MakeUnique<CXFA_XmlConnection>(doc, packet);
- break;
- case XFA_Element::ValidateApprovalSignatures:
- node = pdfium::MakeUnique<CXFA_ValidateApprovalSignatures>(doc, packet);
- break;
- case XFA_Element::SignData:
- node = pdfium::MakeUnique<CXFA_SignData>(doc, packet);
- break;
- case XFA_Element::Packets:
- node = pdfium::MakeUnique<CXFA_Packets>(doc, packet);
- break;
- case XFA_Element::DatePattern:
- node = pdfium::MakeUnique<CXFA_DatePattern>(doc, packet);
- break;
- case XFA_Element::DuplexOption:
- node = pdfium::MakeUnique<CXFA_DuplexOption>(doc, packet);
- break;
- case XFA_Element::Base:
- node = pdfium::MakeUnique<CXFA_Base>(doc, packet);
- break;
- case XFA_Element::Bind:
- node = pdfium::MakeUnique<CXFA_Bind>(doc, packet);
- break;
- case XFA_Element::Compression:
- node = pdfium::MakeUnique<CXFA_Compression>(doc, packet);
- break;
- case XFA_Element::User:
- node = pdfium::MakeUnique<CXFA_User>(doc, packet);
- break;
- case XFA_Element::Rectangle:
- node = pdfium::MakeUnique<CXFA_Rectangle>(doc, packet);
- break;
- case XFA_Element::EffectiveOutputPolicy:
- node = pdfium::MakeUnique<CXFA_EffectiveOutputPolicy>(doc, packet);
- break;
- case XFA_Element::ADBE_JSDebugger:
- node = pdfium::MakeUnique<CXFA_aDBE_JSDebugger>(doc, packet);
- break;
- case XFA_Element::Acrobat7:
- node = pdfium::MakeUnique<CXFA_Acrobat7>(doc, packet);
- break;
- case XFA_Element::Interactive:
- node = pdfium::MakeUnique<CXFA_Interactive>(doc, packet);
- break;
- case XFA_Element::Locale:
- node = pdfium::MakeUnique<CXFA_Locale>(doc, packet);
- break;
- case XFA_Element::CurrentPage:
- node = pdfium::MakeUnique<CXFA_CurrentPage>(doc, packet);
- break;
- case XFA_Element::Data:
- node = pdfium::MakeUnique<CXFA_Data>(doc, packet);
- break;
- case XFA_Element::Date:
- node = pdfium::MakeUnique<CXFA_Date>(doc, packet);
- break;
- case XFA_Element::Desc:
- node = pdfium::MakeUnique<CXFA_Desc>(doc, packet);
- break;
- case XFA_Element::Encrypt:
- node = pdfium::MakeUnique<CXFA_Encrypt>(doc, packet);
- break;
- case XFA_Element::Draw:
- node = pdfium::MakeUnique<CXFA_Draw>(doc, packet);
- break;
- case XFA_Element::Encryption:
- node = pdfium::MakeUnique<CXFA_Encryption>(doc, packet);
- break;
- case XFA_Element::MeridiemNames:
- node = pdfium::MakeUnique<CXFA_MeridiemNames>(doc, packet);
- break;
- case XFA_Element::Messaging:
- node = pdfium::MakeUnique<CXFA_Messaging>(doc, packet);
- break;
- case XFA_Element::Speak:
- node = pdfium::MakeUnique<CXFA_Speak>(doc, packet);
- break;
- case XFA_Element::DataGroup:
- node = pdfium::MakeUnique<CXFA_DataGroup>(doc, packet);
- break;
- case XFA_Element::Common:
- node = pdfium::MakeUnique<CXFA_Common>(doc, packet);
- break;
- case XFA_Element::Sharptext:
- node = pdfium::MakeUnique<CXFA_Sharptext>(doc, packet);
- break;
- case XFA_Element::PaginationOverride:
- node = pdfium::MakeUnique<CXFA_PaginationOverride>(doc, packet);
- break;
- case XFA_Element::Reasons:
- node = pdfium::MakeUnique<CXFA_Reasons>(doc, packet);
- break;
- case XFA_Element::SignatureProperties:
- node = pdfium::MakeUnique<CXFA_SignatureProperties>(doc, packet);
- break;
- case XFA_Element::Threshold:
- node = pdfium::MakeUnique<CXFA_Threshold>(doc, packet);
- break;
- case XFA_Element::AppearanceFilter:
- node = pdfium::MakeUnique<CXFA_AppearanceFilter>(doc, packet);
- break;
- case XFA_Element::Fill:
- node = pdfium::MakeUnique<CXFA_Fill>(doc, packet);
- break;
- case XFA_Element::Font:
- node = pdfium::MakeUnique<CXFA_Font>(doc, packet);
- break;
- case XFA_Element::Form:
- node = pdfium::MakeUnique<CXFA_Form>(doc, packet);
- break;
- case XFA_Element::MediumInfo:
- node = pdfium::MakeUnique<CXFA_MediumInfo>(doc, packet);
- break;
- case XFA_Element::Certificate:
- node = pdfium::MakeUnique<CXFA_Certificate>(doc, packet);
- break;
- case XFA_Element::Password:
- node = pdfium::MakeUnique<CXFA_Password>(doc, packet);
- break;
- case XFA_Element::RunScripts:
- node = pdfium::MakeUnique<CXFA_RunScripts>(doc, packet);
- break;
- case XFA_Element::Trace:
- node = pdfium::MakeUnique<CXFA_Trace>(doc, packet);
- break;
- case XFA_Element::Float:
- node = pdfium::MakeUnique<CXFA_Float>(doc, packet);
- break;
- case XFA_Element::RenderPolicy:
- node = pdfium::MakeUnique<CXFA_RenderPolicy>(doc, packet);
- break;
- case XFA_Element::Destination:
- node = pdfium::MakeUnique<CXFA_Destination>(doc, packet);
- break;
- case XFA_Element::Value:
- node = pdfium::MakeUnique<CXFA_Value>(doc, packet);
- break;
- case XFA_Element::Bookend:
- node = pdfium::MakeUnique<CXFA_Bookend>(doc, packet);
- break;
- case XFA_Element::ExObject:
- node = pdfium::MakeUnique<CXFA_ExObject>(doc, packet);
- break;
- case XFA_Element::OpenAction:
- node = pdfium::MakeUnique<CXFA_OpenAction>(doc, packet);
- break;
- case XFA_Element::NeverEmbed:
- node = pdfium::MakeUnique<CXFA_NeverEmbed>(doc, packet);
- break;
- case XFA_Element::BindItems:
- node = pdfium::MakeUnique<CXFA_BindItems>(doc, packet);
- break;
- case XFA_Element::Calculate:
- node = pdfium::MakeUnique<CXFA_Calculate>(doc, packet);
- break;
- case XFA_Element::Print:
- node = pdfium::MakeUnique<CXFA_Print>(doc, packet);
- break;
- case XFA_Element::Extras:
- node = pdfium::MakeUnique<CXFA_Extras>(doc, packet);
- break;
- case XFA_Element::Proto:
- node = pdfium::MakeUnique<CXFA_Proto>(doc, packet);
- break;
- case XFA_Element::DSigData:
- node = pdfium::MakeUnique<CXFA_DSigData>(doc, packet);
- break;
- case XFA_Element::Creator:
- node = pdfium::MakeUnique<CXFA_Creator>(doc, packet);
- break;
- case XFA_Element::Connect:
- node = pdfium::MakeUnique<CXFA_Connect>(doc, packet);
- break;
- case XFA_Element::Permissions:
- node = pdfium::MakeUnique<CXFA_Permissions>(doc, packet);
- break;
- case XFA_Element::ConnectionSet:
- node = pdfium::MakeUnique<CXFA_ConnectionSet>(doc, packet);
- break;
- case XFA_Element::Submit:
- node = pdfium::MakeUnique<CXFA_Submit>(doc, packet);
- break;
- case XFA_Element::Range:
- node = pdfium::MakeUnique<CXFA_Range>(doc, packet);
- break;
- case XFA_Element::Linearized:
- node = pdfium::MakeUnique<CXFA_Linearized>(doc, packet);
- break;
- case XFA_Element::Packet:
- node = pdfium::MakeUnique<CXFA_Packet>(doc, packet);
- break;
- case XFA_Element::RootElement:
- node = pdfium::MakeUnique<CXFA_RootElement>(doc, packet);
- break;
- case XFA_Element::PlaintextMetadata:
- node = pdfium::MakeUnique<CXFA_PlaintextMetadata>(doc, packet);
- break;
- case XFA_Element::NumberSymbols:
- node = pdfium::MakeUnique<CXFA_NumberSymbols>(doc, packet);
- break;
- case XFA_Element::PrintHighQuality:
- node = pdfium::MakeUnique<CXFA_PrintHighQuality>(doc, packet);
- break;
- case XFA_Element::Driver:
- node = pdfium::MakeUnique<CXFA_Driver>(doc, packet);
- break;
- case XFA_Element::IncrementalLoad:
- node = pdfium::MakeUnique<CXFA_IncrementalLoad>(doc, packet);
- break;
- case XFA_Element::SubjectDN:
- node = pdfium::MakeUnique<CXFA_SubjectDN>(doc, packet);
- break;
- case XFA_Element::CompressLogicalStructure:
- node = pdfium::MakeUnique<CXFA_CompressLogicalStructure>(doc, packet);
- break;
- case XFA_Element::IncrementalMerge:
- node = pdfium::MakeUnique<CXFA_IncrementalMerge>(doc, packet);
- break;
- case XFA_Element::Radial:
- node = pdfium::MakeUnique<CXFA_Radial>(doc, packet);
- break;
- case XFA_Element::Variables:
- node = pdfium::MakeUnique<CXFA_Variables>(doc, packet);
- break;
- case XFA_Element::TimePatterns:
- node = pdfium::MakeUnique<CXFA_TimePatterns>(doc, packet);
- break;
- case XFA_Element::EffectiveInputPolicy:
- node = pdfium::MakeUnique<CXFA_EffectiveInputPolicy>(doc, packet);
- break;
- case XFA_Element::NameAttr:
- node = pdfium::MakeUnique<CXFA_NameAttr>(doc, packet);
- break;
- case XFA_Element::Conformance:
- node = pdfium::MakeUnique<CXFA_Conformance>(doc, packet);
- break;
- case XFA_Element::Transform:
- node = pdfium::MakeUnique<CXFA_Transform>(doc, packet);
- break;
- case XFA_Element::LockDocument:
- node = pdfium::MakeUnique<CXFA_LockDocument>(doc, packet);
- break;
- case XFA_Element::BreakAfter:
- node = pdfium::MakeUnique<CXFA_BreakAfter>(doc, packet);
- break;
- case XFA_Element::Line:
- node = pdfium::MakeUnique<CXFA_Line>(doc, packet);
- break;
- case XFA_Element::Source:
- node = pdfium::MakeUnique<CXFA_Source>(doc, packet);
- break;
- case XFA_Element::Occur:
- node = pdfium::MakeUnique<CXFA_Occur>(doc, packet);
- break;
- case XFA_Element::PickTrayByPDFSize:
- node = pdfium::MakeUnique<CXFA_PickTrayByPDFSize>(doc, packet);
- break;
- case XFA_Element::MonthNames:
- node = pdfium::MakeUnique<CXFA_MonthNames>(doc, packet);
- break;
- case XFA_Element::Severity:
- node = pdfium::MakeUnique<CXFA_Severity>(doc, packet);
- break;
- case XFA_Element::GroupParent:
- node = pdfium::MakeUnique<CXFA_GroupParent>(doc, packet);
- break;
- case XFA_Element::DocumentAssembly:
- node = pdfium::MakeUnique<CXFA_DocumentAssembly>(doc, packet);
- break;
- case XFA_Element::NumberSymbol:
- node = pdfium::MakeUnique<CXFA_NumberSymbol>(doc, packet);
- break;
- case XFA_Element::Tagged:
- node = pdfium::MakeUnique<CXFA_Tagged>(doc, packet);
- break;
- case XFA_Element::Items:
- node = pdfium::MakeUnique<CXFA_Items>(doc, packet);
- break;
- default:
- NOTREACHED();
- return nullptr;
- }
- if (!node || !node->IsValidInPacket(packet))
- return nullptr;
- return node;
-}
-
-// static
-WideString CXFA_Node::AttributeToName(XFA_Attribute attr) {
- return WideString::FromASCII(AttributeToNameASCII(attr));
-}
diff --git a/xfa/fxfa/parser/cxfa_node_unittest.cpp b/xfa/fxfa/parser/cxfa_node_unittest.cpp
index bd62894..f65c237 100644
--- a/xfa/fxfa/parser/cxfa_node_unittest.cpp
+++ b/xfa/fxfa/parser/cxfa_node_unittest.cpp
@@ -47,15 +47,6 @@
std::unique_ptr<TestNode> node_;
};
-TEST_F(CXFANodeTest, NameToAttribute) {
- EXPECT_EQ(XFA_Attribute::Unknown, CXFA_Node::NameToAttribute(L""));
- EXPECT_EQ(XFA_Attribute::Unknown, CXFA_Node::NameToAttribute(L"nonesuch"));
- EXPECT_EQ(XFA_Attribute::H, CXFA_Node::NameToAttribute(L"h"));
- EXPECT_EQ(XFA_Attribute::Short, CXFA_Node::NameToAttribute(L"short"));
- EXPECT_EQ(XFA_Attribute::DecipherOnly,
- CXFA_Node::NameToAttribute(L"decipherOnly"));
-}
-
TEST_F(CXFANodeTest, InsertFirstChild) {
EXPECT_EQ(nullptr, GetNode()->GetFirstChild());
EXPECT_EQ(nullptr, GetNode()->GetLastChild());
diff --git a/xfa/fxfa/parser/cxfa_nodehelper.cpp b/xfa/fxfa/parser/cxfa_nodehelper.cpp
index 142b18a..b40572b 100644
--- a/xfa/fxfa/parser/cxfa_nodehelper.cpp
+++ b/xfa/fxfa/parser/cxfa_nodehelper.cpp
@@ -14,6 +14,7 @@
#include "xfa/fxfa/parser/cxfa_document.h"
#include "xfa/fxfa/parser/cxfa_localemgr.h"
#include "xfa/fxfa/parser/cxfa_node.h"
+#include "xfa/fxfa/parser/xfa_basic_data.h"
#include "xfa/fxfa/parser/xfa_resolvenode_rs.h"
#include "xfa/fxfa/parser/xfa_utils.h"
@@ -325,7 +326,7 @@
CreateNode_ForCondition(wsCondition);
}
if (bIsClassName) {
- XFA_Element eType = CXFA_Node::NameToElement(wsName);
+ XFA_Element eType = XFA_GetElementByName(wsName);
if (eType == XFA_Element::Unknown)
return false;
diff --git a/xfa/fxfa/parser/xfa_basic_data.cpp b/xfa/fxfa/parser/xfa_basic_data.cpp
index 0293e76..e0844a9 100644
--- a/xfa/fxfa/parser/xfa_basic_data.cpp
+++ b/xfa/fxfa/parser/xfa_basic_data.cpp
@@ -151,6 +151,47 @@
namespace {
+struct ElementNameInfo {
+ uint32_t hash; // Hashed as wide string.
+ XFA_Element element;
+};
+
+const ElementNameInfo ElementNameToEnum[] = {
+#undef ELEM____
+#undef ELEM_HIDDEN____
+#define ELEM____(a, b, c, d) {a, XFA_Element::c},
+#define ELEM_HIDDEN____(a, b)
+#include "xfa/fxfa/parser/elements.inc"
+#undef ELEM____
+#undef ELEM_HIDDEN____
+};
+
+struct AttributeNameInfo {
+ uint32_t hash; // Hashed as wide string.
+ XFA_Attribute attribute;
+};
+
+const AttributeNameInfo AttributeNameInfoToEnum[] = {
+#undef ATTR____
+#define ATTR____(a, b, c) {a, XFA_Attribute::c},
+#include "xfa/fxfa/parser/attributes.inc"
+#undef ATTR____
+};
+
+const char* AttributeToNameASCII(XFA_Attribute attr) {
+ switch (attr) {
+#undef ATTR____
+#define ATTR____(a, b, c) \
+ case XFA_Attribute::c: \
+ return b;
+#include "xfa/fxfa/parser/attributes.inc"
+#undef ATTR____
+ default:
+ NOTREACHED();
+ return "";
+ }
+}
+
const XFA_AttributeValueInfo g_XFAEnumData[] = {
#undef VALUE____
#define VALUE____(a, b, c) {a, XFA_AttributeValue::c, b},
@@ -6546,6 +6587,31 @@
} // namespace
+XFA_Element XFA_GetElementByName(const WideString& name) {
+ uint32_t hash = FX_HashCode_GetW(name.AsStringView(), false);
+ auto* elem = std::lower_bound(
+ std::begin(ElementNameToEnum), std::end(ElementNameToEnum), hash,
+ [](const ElementNameInfo& a, uint32_t hash) { return a.hash < hash; });
+ if (elem != std::end(ElementNameToEnum) && elem->hash == hash)
+ return elem->element;
+ return XFA_Element::Unknown;
+}
+
+WideString XFA_AttributeToName(XFA_Attribute attr) {
+ return WideString::FromASCII(AttributeToNameASCII(attr));
+}
+
+XFA_Attribute XFA_GetAttributeByName(const WideStringView& name) {
+ uint32_t hash = FX_HashCode_GetW(name, false);
+ auto* elem = std::lower_bound(
+ std::begin(AttributeNameInfoToEnum), std::end(AttributeNameInfoToEnum),
+ hash,
+ [](const AttributeNameInfo& a, uint32_t hash) { return a.hash < hash; });
+ if (elem != std::end(AttributeNameInfoToEnum) && elem->hash == hash)
+ return elem->attribute;
+ return XFA_Attribute::Unknown;
+}
+
ByteStringView XFA_AttributeValueToName(XFA_AttributeValue item) {
return g_XFAEnumData[static_cast<int32_t>(item)].pName;
}
diff --git a/xfa/fxfa/parser/xfa_basic_data.h b/xfa/fxfa/parser/xfa_basic_data.h
index 52768d5..cb62714 100644
--- a/xfa/fxfa/parser/xfa_basic_data.h
+++ b/xfa/fxfa/parser/xfa_basic_data.h
@@ -14,6 +14,11 @@
#include "third_party/base/optional.h"
#include "xfa/fxfa/fxfa_basic.h"
+XFA_Element XFA_GetElementByName(const WideString& name);
+
+WideString XFA_AttributeToName(XFA_Attribute attr);
+XFA_Attribute XFA_GetAttributeByName(const WideStringView& name);
+
ByteStringView XFA_AttributeValueToName(XFA_AttributeValue item);
Optional<XFA_AttributeValue> XFA_GetAttributeValueByName(
const WideStringView& name);
diff --git a/xfa/fxfa/parser/xfa_basic_data_unittest.cpp b/xfa/fxfa/parser/xfa_basic_data_unittest.cpp
index 199bda4..3348e82 100644
--- a/xfa/fxfa/parser/xfa_basic_data_unittest.cpp
+++ b/xfa/fxfa/parser/xfa_basic_data_unittest.cpp
@@ -6,6 +6,15 @@
#include "testing/gtest/include/gtest/gtest.h"
+TEST(XFABasicDataTest, GetAttributeByName) {
+ EXPECT_EQ(XFA_Attribute::Unknown, XFA_GetAttributeByName(L""));
+ EXPECT_EQ(XFA_Attribute::Unknown, XFA_GetAttributeByName(L"nonesuch"));
+ EXPECT_EQ(XFA_Attribute::H, XFA_GetAttributeByName(L"h"));
+ EXPECT_EQ(XFA_Attribute::Short, XFA_GetAttributeByName(L"short"));
+ EXPECT_EQ(XFA_Attribute::DecipherOnly,
+ XFA_GetAttributeByName(L"decipherOnly"));
+}
+
TEST(XFABasicDataTest, GetAttributeValueByName) {
EXPECT_FALSE(XFA_GetAttributeValueByName(L"").has_value());
EXPECT_FALSE(XFA_GetAttributeValueByName(L"nonesuch").has_value());
diff --git a/xfa/fxfa/parser/xfa_utils.cpp b/xfa/fxfa/parser/xfa_utils.cpp
index 747a1b4..6d6f9d3 100644
--- a/xfa/fxfa/parser/xfa_utils.cpp
+++ b/xfa/fxfa/parser/xfa_utils.cpp
@@ -166,8 +166,7 @@
continue;
}
WideString wsAttr;
- SaveAttribute(pNode, attr, CXFA_Node::AttributeToName(attr), bSaveXML,
- wsAttr);
+ SaveAttribute(pNode, attr, XFA_AttributeToName(attr), bSaveXML, wsAttr);
wsAttrs += wsAttr;
}
@@ -346,7 +345,7 @@
continue;
WideString wsAttr;
- SaveAttribute(pNode, attr, CXFA_Node::AttributeToName(attr), false, wsAttr);
+ SaveAttribute(pNode, attr, XFA_AttributeToName(attr), false, wsAttr);
wsOutput += wsAttr;
}