diff options
author | dsinclair <dsinclair@chromium.org> | 2016-06-20 11:11:12 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-06-20 11:11:12 -0700 |
commit | c5a8f217fedc1224104b34f7577044776a9d83d8 (patch) | |
tree | 0b457b9ccc3511ad45f75fe0f385425af8d6272d /xfa/fxfa/parser/xfa_document_datamerger_imp.cpp | |
parent | 950e68f14aa6db5022919c55ce80f346a94a762e (diff) | |
download | pdfium-c5a8f217fedc1224104b34f7577044776a9d83d8.tar.xz |
Split the XFA_OBJECTTYPE enum into two parts.
Currently the object type and the node flags are both mixed into the single
XFA_OBJECTTYPE_* enum. These two things are un-related and should not share
a single type. This Cl creates an XFA_ObjectType enum class and a
XFA_NodeFlag enum to hold the two types.
Accessors are added to determine if the flags are set (or called where they
already existed.
Review-Url: https://codereview.chromium.org/2083453003
Diffstat (limited to 'xfa/fxfa/parser/xfa_document_datamerger_imp.cpp')
-rw-r--r-- | xfa/fxfa/parser/xfa_document_datamerger_imp.cpp | 70 |
1 files changed, 30 insertions, 40 deletions
diff --git a/xfa/fxfa/parser/xfa_document_datamerger_imp.cpp b/xfa/fxfa/parser/xfa_document_datamerger_imp.cpp index 7d7b50fb3f..91e5086d3d 100644 --- a/xfa/fxfa/parser/xfa_document_datamerger_imp.cpp +++ b/xfa/fxfa/parser/xfa_document_datamerger_imp.cpp @@ -64,12 +64,11 @@ static FX_BOOL XFA_DataMerge_FormValueNode_SetChildContent( ASSERT(pValueNode->GetPacketID() == XFA_XDPPACKET_Form); CXFA_Node* pChildNode = XFA_DataMerge_FormValueNode_CreateChild(pValueNode, iType); - if (!pChildNode) { + if (!pChildNode) return FALSE; - } - XFA_OBJECTTYPE objectType = pChildNode->GetObjectType(); - switch (objectType) { - case XFA_OBJECTTYPE_ContentNode: { + + switch (pChildNode->GetObjectType()) { + case XFA_ObjectType::ContentNode: { CXFA_Node* pContentRawDataNode = pChildNode->GetNodeItem(XFA_NODEITEM_FirstChild); if (!pContentRawDataNode) { @@ -89,9 +88,9 @@ static FX_BOOL XFA_DataMerge_FormValueNode_SetChildContent( } pContentRawDataNode->SetCData(XFA_ATTRIBUTE_Value, wsContent); } break; - case XFA_OBJECTTYPE_NodeC: - case XFA_OBJECTTYPE_TextNode: - case XFA_OBJECTTYPE_NodeV: { + case XFA_ObjectType::NodeC: + case XFA_ObjectType::TextNode: + case XFA_ObjectType::NodeV: { pChildNode->SetCData(XFA_ATTRIBUTE_Value, wsContent); } break; default: @@ -473,8 +472,7 @@ CXFA_Node* XFA_DataMerge_FindFormDOMInstance(CXFA_Document* pDocument, for (; pFormChild; pFormChild = pFormChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { if (pFormChild->GetClassID() == eClassID && - pFormChild->GetNameHash() == dwNameHash && - pFormChild->HasFlag(XFA_NODEFLAG_UnusedNode)) { + pFormChild->GetNameHash() == dwNameHash && pFormChild->IsUnusedNode()) { return pFormChild; } } @@ -486,7 +484,7 @@ static FX_BOOL XFA_NeedGenerateForm(CXFA_Node* pTemplateChild, if (eType == XFA_ELEMENT_Variables) { return TRUE; } - if (pTemplateChild->GetObjectType() == XFA_OBJECTTYPE_ContainerNode) { + if (pTemplateChild->IsContainerNode()) { return FALSE; } if (eType == XFA_ELEMENT_Proto || @@ -516,7 +514,7 @@ CXFA_Node* XFA_NodeMerge_CloneOrMergeContainer(CXFA_Document* pDocument, pFormParent->RemoveChild(pExistingNode); pFormParent->InsertChild(pExistingNode); } - pExistingNode->ClearFlag(XFA_NODEFLAG_UnusedNode); + pExistingNode->ClearFlag(XFA_NodeFlag_UnusedNode); pExistingNode->SetTemplateNode(pTemplateNode); if (bRecursive && pExistingNode->GetClassID() != XFA_ELEMENT_Items) { for (CXFA_Node* pTemplateChild = @@ -529,7 +527,7 @@ CXFA_Node* XFA_NodeMerge_CloneOrMergeContainer(CXFA_Document* pDocument, } } } - pExistingNode->SetFlag(XFA_NODEFLAG_Initialized, true); + pExistingNode->SetFlag(XFA_NodeFlag_Initialized, true); return pExistingNode; } CXFA_Node* pNewNode = pTemplateNode->CloneTemplateToForm(FALSE); @@ -582,7 +580,7 @@ static CXFA_Node* XFA_NodeMerge_CloneOrMergeInstanceManager( } pFormParent->RemoveChild(pExistingNode); pFormParent->InsertChild(pExistingNode); - pExistingNode->ClearFlag(XFA_NODEFLAG_UnusedNode); + pExistingNode->ClearFlag(XFA_NodeFlag_UnusedNode); pExistingNode->SetTemplateNode(pTemplateNode); return pExistingNode; } @@ -776,11 +774,11 @@ static CXFA_Node* XFA_DataMerge_CopyContainer_SubformSet( } else if (pInstMgrNode) { pOccurNode = pInstMgrNode->GetFirstChildByClass(XFA_ELEMENT_Occur); if (pOccurNode) { - pOccurNode->ClearFlag(XFA_NODEFLAG_UnusedNode); + pOccurNode->ClearFlag(XFA_NodeFlag_UnusedNode); } } if (pInstMgrNode) { - pInstMgrNode->SetFlag(XFA_NODEFLAG_Initialized, true); + pInstMgrNode->SetFlag(XFA_NodeFlag_Initialized, true); pSearchArray = &subformArray; if (pFormParentNode->GetClassID() == XFA_ELEMENT_PageArea) { bOneInstance = TRUE; @@ -844,8 +842,7 @@ static CXFA_Node* XFA_DataMerge_CopyContainer_SubformSet( if (XFA_NeedGenerateForm(pTemplateChild, bUseInstanceManager)) { XFA_NodeMerge_CloneOrMergeContainer(pDocument, pSubform, pTemplateChild, TRUE); - } else if (pTemplateChild->GetObjectType() == - XFA_OBJECTTYPE_ContainerNode) { + } else if (pTemplateChild->IsContainerNode()) { pDocument->DataMerge_CopyContainer(pTemplateChild, pSubform, pDataNode, FALSE, TRUE, FALSE); } @@ -882,8 +879,7 @@ static CXFA_Node* XFA_DataMerge_CopyContainer_SubformSet( if (XFA_NeedGenerateForm(pTemplateChild, bUseInstanceManager)) { XFA_NodeMerge_CloneOrMergeContainer(pDocument, pSubformSetNode, pTemplateChild, TRUE); - } else if (pTemplateChild->GetObjectType() == - XFA_OBJECTTYPE_ContainerNode) { + } else if (pTemplateChild->IsContainerNode()) { bSelfMatch = FALSE; eBindMatch = XFA_ATTRIBUTEENUM_None; CXFA_Node* pDataMatch; @@ -943,8 +939,7 @@ static CXFA_Node* XFA_DataMerge_CopyContainer_SubformSet( if (XFA_NeedGenerateForm(pTemplateChild, bUseInstanceManager)) { XFA_NodeMerge_CloneOrMergeContainer(pDocument, pSubformSetNode, pTemplateChild, TRUE); - } else if (pTemplateChild->GetObjectType() == - XFA_OBJECTTYPE_ContainerNode) { + } else if (pTemplateChild->IsContainerNode()) { pDocument->DataMerge_CopyContainer(pTemplateChild, pSubformSetNode, pDataScope); } @@ -985,8 +980,7 @@ static CXFA_Node* XFA_DataMerge_CopyContainer_SubformSet( if (XFA_NeedGenerateForm(pTemplateChild, bUseInstanceManager)) { XFA_NodeMerge_CloneOrMergeContainer(pDocument, pSubformNode, pTemplateChild, TRUE); - } else if (pTemplateChild->GetObjectType() == - XFA_OBJECTTYPE_ContainerNode) { + } else if (pTemplateChild->IsContainerNode()) { pDocument->DataMerge_CopyContainer(pTemplateChild, pSubformNode, pDataScope); } @@ -1010,8 +1004,7 @@ static CXFA_Node* XFA_DataMerge_CopyContainer_SubformSet( if (XFA_NeedGenerateForm(pTemplateChild, bUseInstanceManager)) { XFA_NodeMerge_CloneOrMergeContainer(pDocument, pSubformSetNode, pTemplateChild, TRUE); - } else if (pTemplateChild->GetObjectType() == - XFA_OBJECTTYPE_ContainerNode) { + } else if (pTemplateChild->IsContainerNode()) { if (bFound && eRelation == XFA_ATTRIBUTEENUM_Choice) { continue; } @@ -1209,12 +1202,11 @@ static void XFA_DataMerge_UpdateBindingRelations(CXFA_Document* pDocument, pFormNode->GetNodeItem(XFA_NODEITEM_FirstChild); pFormChild; pFormChild = pFormChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { - if (pFormChild->GetObjectType() != XFA_OBJECTTYPE_ContainerNode) { + if (!pFormChild->IsContainerNode()) continue; - } - if (pFormChild->HasFlag(XFA_NODEFLAG_UnusedNode)) { + if (pFormChild->IsUnusedNode()) continue; - } + XFA_DataMerge_UpdateBindingRelations(pDocument, pFormChild, pDataNode ? pDataNode : pDataScope, bDataRef, bParentDataRef); @@ -1223,8 +1215,7 @@ static void XFA_DataMerge_UpdateBindingRelations(CXFA_Document* pDocument, } CXFA_Node* XFA_DataMerge_FindDataScope(CXFA_Node* pParentFormNode) { for (CXFA_Node* pRootBoundNode = pParentFormNode; - pRootBoundNode && - pRootBoundNode->GetObjectType() == XFA_OBJECTTYPE_ContainerNode; + pRootBoundNode && pRootBoundNode->IsContainerNode(); pRootBoundNode = pRootBoundNode->GetNodeItem(XFA_NODEITEM_Parent)) { CXFA_Node* pDataScope = pRootBoundNode->GetBindData(); if (pDataScope) { @@ -1334,7 +1325,7 @@ void CXFA_Document::DoDataMerge() { sIterator(pFormRoot); for (CXFA_Node* pNode = sIterator.MoveToNext(); pNode; pNode = sIterator.MoveToNext()) { - pNode->SetFlag(XFA_NODEFLAG_UnusedNode, true); + pNode->SetFlag(XFA_NodeFlag_UnusedNode, true); } } CXFA_Node* pSubformSetNode = XFA_NodeMerge_CloneOrMergeContainer( @@ -1362,8 +1353,7 @@ void CXFA_Document::DoDataMerge() { if (XFA_NeedGenerateForm(pTemplateChild)) { XFA_NodeMerge_CloneOrMergeContainer(this, pSubformSetNode, pTemplateChild, TRUE); - } else if (pTemplateChild->GetObjectType() == - XFA_OBJECTTYPE_ContainerNode) { + } else if (pTemplateChild->IsContainerNode()) { DataMerge_CopyContainer(pTemplateChild, pSubformSetNode, pDataTopLevel); } } @@ -1385,19 +1375,19 @@ void CXFA_Document::DoDataMerge() { sIterator(pFormRoot); CXFA_Node* pNode = sIterator.MoveToNext(); while (pNode) { - if (pNode->HasFlag(XFA_NODEFLAG_UnusedNode)) { - if (pNode->GetObjectType() == XFA_OBJECTTYPE_ContainerNode || + if (pNode->IsUnusedNode()) { + if (pNode->IsContainerNode() || pNode->GetClassID() == XFA_ELEMENT_InstanceManager) { CXFA_Node* pNext = sIterator.SkipChildrenAndMoveToNext(); pNode->GetNodeItem(XFA_NODEITEM_Parent)->RemoveChild(pNode); pNode = pNext; } else { - pNode->ClearFlag(XFA_NODEFLAG_UnusedNode); - pNode->SetFlag(XFA_NODEFLAG_Initialized, true); + pNode->ClearFlag(XFA_NodeFlag_UnusedNode); + pNode->SetFlag(XFA_NodeFlag_Initialized, true); pNode = sIterator.MoveToNext(); } } else { - pNode->SetFlag(XFA_NODEFLAG_Initialized, true); + pNode->SetFlag(XFA_NodeFlag_Initialized, true); pNode = sIterator.MoveToNext(); } } |