Give CXFA_ItemLayoutProcessor::GotoNextContainerNode() a return value.
Change an in/out-parameter to an in-parameter.
Change-Id: I746c87723a9bfc9df2a25cdf40f36a46d4261e82
Reviewed-on: https://pdfium-review.googlesource.com/c/50390
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fxfa/layout/cxfa_itemlayoutprocessor.cpp b/xfa/fxfa/layout/cxfa_itemlayoutprocessor.cpp
index a4e875c..7fe1fa5 100644
--- a/xfa/fxfa/layout/cxfa_itemlayoutprocessor.cpp
+++ b/xfa/fxfa/layout/cxfa_itemlayoutprocessor.cpp
@@ -828,17 +828,17 @@
}
void CXFA_ItemLayoutProcessor::GotoNextContainerNodeSimple(bool bUsePageBreak) {
- GotoNextContainerNode(bUsePageBreak, GetFormNode(), &m_pCurChildNode,
- &m_nCurChildNodeStage);
+ m_nCurChildNodeStage = GotoNextContainerNode(
+ m_nCurChildNodeStage, bUsePageBreak, GetFormNode(), &m_pCurChildNode);
}
-void CXFA_ItemLayoutProcessor::GotoNextContainerNode(
+XFA_ItemLayoutProcessorStages CXFA_ItemLayoutProcessor::GotoNextContainerNode(
+ XFA_ItemLayoutProcessorStages nCurStage,
bool bUsePageBreak,
CXFA_Node* pParentContainer,
- CXFA_Node** pCurActionNode,
- XFA_ItemLayoutProcessorStages* nCurStage) {
+ CXFA_Node** pCurActionNode) {
CXFA_Node* pChildContainer = nullptr;
- switch (*nCurStage) {
+ switch (nCurStage) {
case XFA_ItemLayoutProcessorStages::BreakBefore:
case XFA_ItemLayoutProcessorStages::BreakAfter: {
pChildContainer = (*pCurActionNode)->GetParent();
@@ -853,11 +853,11 @@
break;
}
- switch (*nCurStage) {
+ XFA_ItemLayoutProcessorStages ret;
+ switch (nCurStage) {
case XFA_ItemLayoutProcessorStages::Keep:
- if (HandleKeep(pChildContainer->GetFirstChild(), pCurActionNode,
- nCurStage)) {
- return;
+ if (HandleKeep(pChildContainer->GetFirstChild(), pCurActionNode, &ret)) {
+ return ret;
}
goto CheckNextChildContainer;
@@ -866,8 +866,8 @@
FALLTHROUGH;
case XFA_ItemLayoutProcessorStages::BookendLeader:
- if (HandleBookendLeader(pParentContainer, pCurActionNode, nCurStage))
- return;
+ if (HandleBookendLeader(pParentContainer, pCurActionNode, &ret))
+ return ret;
*pCurActionNode = nullptr;
FALLTHROUGH;
@@ -876,19 +876,18 @@
if (*pCurActionNode) {
CXFA_Node* pBreakBeforeNode = (*pCurActionNode)->GetNextSibling();
if (!m_bKeepBreakFinish &&
- FindBreakNode(pBreakBeforeNode, true, pCurActionNode, nCurStage)) {
- return;
+ FindBreakNode(pBreakBeforeNode, true, pCurActionNode, &ret)) {
+ return ret;
}
if (m_bIsProcessKeep) {
- if (ProcessKeepNodesForBreakBefore(pCurActionNode, nCurStage,
+ if (ProcessKeepNodesForBreakBefore(pCurActionNode, &ret,
pChildContainer)) {
- return;
+ return ret;
}
goto CheckNextChildContainer;
}
*pCurActionNode = pChildContainer;
- *nCurStage = XFA_ItemLayoutProcessorStages::Container;
- return;
+ return XFA_ItemLayoutProcessorStages::Container;
}
goto CheckNextChildContainer;
@@ -897,8 +896,8 @@
FALLTHROUGH;
case XFA_ItemLayoutProcessorStages::BreakAfter:
- if (HandleBreakAfter(pChildContainer, pCurActionNode, nCurStage))
- return;
+ if (HandleBreakAfter(pChildContainer, pCurActionNode, &ret))
+ return ret;
CheckNextChildContainer : {
CXFA_Node* pNextChildContainer =
@@ -915,33 +914,31 @@
goto NoMoreChildContainer;
bool bLastKeep = false;
- if (ProcessKeepNodesForCheckNext(pCurActionNode, nCurStage,
+ if (ProcessKeepNodesForCheckNext(pCurActionNode, &ret,
&pNextChildContainer, &bLastKeep)) {
- return;
+ return ret;
}
if (!m_bKeepBreakFinish && !bLastKeep &&
FindBreakNode(pNextChildContainer->GetFirstChild(), true,
- pCurActionNode, nCurStage)) {
- return;
+ pCurActionNode, &ret)) {
+ return ret;
}
*pCurActionNode = pNextChildContainer;
- *nCurStage = m_bIsProcessKeep ? XFA_ItemLayoutProcessorStages::Keep
- : XFA_ItemLayoutProcessorStages::Container;
- return;
+ return m_bIsProcessKeep ? XFA_ItemLayoutProcessorStages::Keep
+ : XFA_ItemLayoutProcessorStages::Container;
}
NoMoreChildContainer : {
*pCurActionNode = nullptr;
FALLTHROUGH;
case XFA_ItemLayoutProcessorStages::BookendTrailer:
- if (HandleBookendTrailer(pParentContainer, pCurActionNode, nCurStage))
- return;
+ if (HandleBookendTrailer(pParentContainer, pCurActionNode, &ret))
+ return ret;
}
FALLTHROUGH;
default:
*pCurActionNode = nullptr;
- *nCurStage = XFA_ItemLayoutProcessorStages::Done;
- break;
+ return XFA_ItemLayoutProcessorStages::Done;
}
}
@@ -1005,13 +1002,13 @@
CXFA_ContainerLayoutItem* pPageAreaLayoutItem) {
CXFA_Node* pFormNode = pPageAreaLayoutItem->GetFormNode();
CXFA_Node* pCurChildNode = nullptr;
- XFA_ItemLayoutProcessorStages nCurChildNodeStage =
- XFA_ItemLayoutProcessorStages::None;
CXFA_LayoutItem* pBeforeItem = nullptr;
- for (GotoNextContainerNode(false, pFormNode, &pCurChildNode,
- &nCurChildNodeStage);
- pCurChildNode; GotoNextContainerNode(false, pFormNode, &pCurChildNode,
- &nCurChildNodeStage)) {
+ for (XFA_ItemLayoutProcessorStages nCurChildNodeStage =
+ GotoNextContainerNode(XFA_ItemLayoutProcessorStages::None, false,
+ pFormNode, &pCurChildNode);
+ pCurChildNode;
+ nCurChildNodeStage = GotoNextContainerNode(nCurChildNodeStage, false,
+ pFormNode, &pCurChildNode)) {
if (nCurChildNodeStage != XFA_ItemLayoutProcessorStages::Container)
continue;
if (pCurChildNode->GetElementType() == XFA_Element::Variables)
diff --git a/xfa/fxfa/layout/cxfa_itemlayoutprocessor.h b/xfa/fxfa/layout/cxfa_itemlayoutprocessor.h
index 571a55e..172acd7 100644
--- a/xfa/fxfa/layout/cxfa_itemlayoutprocessor.h
+++ b/xfa/fxfa/layout/cxfa_itemlayoutprocessor.h
@@ -120,10 +120,11 @@
void DoLayoutField();
void GotoNextContainerNodeSimple(bool bUsePageBreak);
- void GotoNextContainerNode(bool bUsePageBreak,
- CXFA_Node* pParentContainer,
- CXFA_Node** pCurActionNode,
- XFA_ItemLayoutProcessorStages* nCurStage);
+ XFA_ItemLayoutProcessorStages GotoNextContainerNode(
+ XFA_ItemLayoutProcessorStages nCurStage,
+ bool bUsePageBreak,
+ CXFA_Node* pParentContainer,
+ CXFA_Node** pCurActionNode);
bool ProcessKeepNodesForCheckNext(CXFA_Node** pCurActionNode,
XFA_ItemLayoutProcessorStages* nCurStage,