Fix remaining lint errors in CXFA_LayoutPageMgr.
Use either Optional or change non-const parameters to pointers.
Change-Id: I036741cfc22884dd1637622493c8c9c628c54fbf
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/49473
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp b/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp
index 53f276d..e571837 100644
--- a/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp
+++ b/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp
@@ -153,28 +153,28 @@
CXFA_Node* ResolveBreakTarget(CXFA_Node* pPageSetRoot,
bool bNewExprStyle,
- WideString& wsTargetAll) {
+ WideString* pTargetAll) {
if (!pPageSetRoot)
return nullptr;
CXFA_Document* pDocument = pPageSetRoot->GetDocument();
- if (wsTargetAll.IsEmpty())
+ if (pTargetAll->IsEmpty())
return nullptr;
- wsTargetAll.Trim();
+ pTargetAll->Trim();
int32_t iSplitIndex = 0;
bool bTargetAllFind = true;
while (iSplitIndex != -1) {
WideString wsExpr;
Optional<size_t> iSplitNextIndex = 0;
if (!bTargetAllFind) {
- iSplitNextIndex = wsTargetAll.Find(' ', iSplitIndex);
+ iSplitNextIndex = pTargetAll->Find(' ', iSplitIndex);
if (!iSplitNextIndex.has_value())
return nullptr;
wsExpr =
- wsTargetAll.Mid(iSplitIndex, iSplitNextIndex.value() - iSplitIndex);
+ pTargetAll->Mid(iSplitIndex, iSplitNextIndex.value() - iSplitIndex);
} else {
- wsExpr = wsTargetAll;
+ wsExpr = *pTargetAll;
}
if (wsExpr.IsEmpty())
return nullptr;
@@ -211,22 +211,20 @@
pNode->ClearFlag(XFA_NodeFlag_UnusedNode);
}
-bool CheckContentAreaNotUsed(
+// Note: Returning nullptr is not the same as returning pdfium::nullopt.
+Optional<CXFA_ContainerLayoutItem*> CheckContentAreaNotUsed(
CXFA_ContainerLayoutItem* pPageAreaLayoutItem,
- CXFA_Node* pContentArea,
- CXFA_ContainerLayoutItem*& pContentAreaLayoutItem) {
+ CXFA_Node* pContentArea) {
for (CXFA_LayoutItem* pChild = pPageAreaLayoutItem->GetFirstChild(); pChild;
pChild = pChild->GetNextSibling()) {
CXFA_ContainerLayoutItem* pLayoutItem = pChild->AsContainerLayoutItem();
if (pLayoutItem && pLayoutItem->GetFormNode() == pContentArea) {
- if (!pLayoutItem->GetFirstChild()) {
- pContentAreaLayoutItem = pLayoutItem;
- return true;
- }
- return false;
+ if (!pLayoutItem->GetFirstChild())
+ return pLayoutItem;
+ return pdfium::nullopt;
}
}
- return true;
+ return nullptr;
}
void SyncRemoveLayoutItem(CXFA_LayoutItem* pParentLayoutItem,
@@ -781,11 +779,11 @@
WideString wsTarget =
pCurNode->JSObject()->GetCData(XFA_Attribute::Target);
CXFA_Node* pTarget =
- ResolveBreakTarget(m_pTemplatePageSetRoot, true, wsTarget);
+ ResolveBreakTarget(m_pTemplatePageSetRoot, true, &wsTarget);
wsBreakTrailer = pCurNode->JSObject()->GetCData(XFA_Attribute::Trailer);
wsBreakLeader = pCurNode->JSObject()->GetCData(XFA_Attribute::Leader);
- ret.pLeader = ResolveBreakTarget(pContainer, true, wsBreakLeader);
- ret.pTrailer = ResolveBreakTarget(pContainer, true, wsBreakTrailer);
+ ret.pLeader = ResolveBreakTarget(pContainer, true, &wsBreakLeader);
+ ret.pTrailer = ResolveBreakTarget(pContainer, true, &wsBreakTrailer);
if (RunBreak(eType,
pCurNode->JSObject()->GetEnum(XFA_Attribute::TargetType),
pTarget, bStartNew)) {
@@ -815,7 +813,7 @@
WideString wsTarget = pCurNode->JSObject()->GetCData(
bBefore ? XFA_Attribute::BeforeTarget : XFA_Attribute::AfterTarget);
CXFA_Node* pTarget =
- ResolveBreakTarget(m_pTemplatePageSetRoot, true, wsTarget);
+ ResolveBreakTarget(m_pTemplatePageSetRoot, true, &wsTarget);
if (RunBreak(bBefore ? XFA_Element::BreakBefore : XFA_Element::BreakAfter,
pCurNode->JSObject()->GetEnum(
bBefore ? XFA_Attribute::Before : XFA_Attribute::After),
@@ -933,7 +931,7 @@
if (!wsOverflowTarget.IsEmpty() && bCreatePage && !m_bCreateOverFlowPage) {
CXFA_Node* pTarget =
- ResolveBreakTarget(m_pTemplatePageSetRoot, true, wsOverflowTarget);
+ ResolveBreakTarget(m_pTemplatePageSetRoot, true, &wsOverflowTarget);
if (pTarget) {
m_bCreateOverFlowPage = true;
switch (pTarget->GetElementType()) {
@@ -951,9 +949,10 @@
}
}
if (!bCreatePage) {
- *pLeaderTemplate = ResolveBreakTarget(pContainer, true, wsOverflowLeader);
+ *pLeaderTemplate =
+ ResolveBreakTarget(pContainer, true, &wsOverflowLeader);
*pTrailerTemplate =
- ResolveBreakTarget(pContainer, true, wsOverflowTrailer);
+ ResolveBreakTarget(pContainer, true, &wsOverflowTrailer);
}
return true;
}
@@ -965,7 +964,7 @@
pOverflowNode->JSObject()->GetCData(XFA_Attribute::Target);
if (!wsOverflowTarget.IsEmpty() && bCreatePage && !m_bCreateOverFlowPage) {
CXFA_Node* pTarget =
- ResolveBreakTarget(m_pTemplatePageSetRoot, true, wsOverflowTarget);
+ ResolveBreakTarget(m_pTemplatePageSetRoot, true, &wsOverflowTarget);
if (pTarget) {
m_bCreateOverFlowPage = true;
switch (pTarget->GetElementType()) {
@@ -987,8 +986,8 @@
pOverflowNode->JSObject()->GetCData(XFA_Attribute::Leader);
WideString wsTrailer =
pOverflowNode->JSObject()->GetCData(XFA_Attribute::Trailer);
- *pLeaderTemplate = ResolveBreakTarget(pContainer, true, wsLeader);
- *pTrailerTemplate = ResolveBreakTarget(pContainer, true, wsTrailer);
+ *pLeaderTemplate = ResolveBreakTarget(pContainer, true, &wsLeader);
+ *pTrailerTemplate = ResolveBreakTarget(pContainer, true, &wsTrailer);
}
return true;
}
@@ -1055,7 +1054,7 @@
bLeader ? XFA_Attribute::BookendLeader : XFA_Attribute::BookendTrailer);
if (leader.IsEmpty())
return nullptr;
- return ResolveBreakTarget(pContainer, false, leader);
+ return ResolveBreakTarget(pContainer, false, &leader);
}
if (pBookendNode->GetElementType() != XFA_Element::Bookend)
@@ -1063,7 +1062,7 @@
WideString leader = pBookendNode->JSObject()->GetCData(
bLeader ? XFA_Attribute::Leader : XFA_Attribute::Trailer);
- return ResolveBreakTarget(pContainer, true, leader);
+ return ResolveBreakTarget(pContainer, true, &leader);
}
bool CXFA_LayoutPageMgr::FindPageAreaFromPageSet(CXFA_Node* pPageSet,
@@ -1371,17 +1370,17 @@
if (pContentArea->GetParent() != m_pCurPageArea)
return false;
- CXFA_ContainerLayoutItem* pContentAreaLayout = nullptr;
- if (!CheckContentAreaNotUsed(GetCurrentContainerRecord()->pCurPageArea,
- pContentArea, pContentAreaLayout)) {
+ Optional<CXFA_ContainerLayoutItem*> pContentAreaLayout =
+ CheckContentAreaNotUsed(GetCurrentContainerRecord()->pCurPageArea,
+ pContentArea);
+ if (!pContentAreaLayout.has_value())
return false;
- }
- if (pContentAreaLayout) {
- if (pContentAreaLayout->GetFormNode() == pCurContentNode)
+ if (pContentAreaLayout.value()) {
+ if (pContentAreaLayout.value()->GetFormNode() == pCurContentNode)
return false;
CXFA_ContainerRecord* pNewRecord = CreateContainerRecord(nullptr, false);
- pNewRecord->pCurContentArea = pContentAreaLayout;
+ pNewRecord->pCurContentArea = pContentAreaLayout.value();
return true;
}
}