Add CXFA_LayoutPageMgr::CreateViewRecordSimple().
Split the common use case for CreateViewRecord() into its own method,
and simplify both methods to remove impossible conditions.
Change-Id: I450093ec97e91c39051820b48ddabd7d936a8e4b
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/53030
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 2587b98..e2f4a74 100644
--- a/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp
+++ b/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp
@@ -589,9 +589,10 @@
CXFA_ViewRecord* CXFA_LayoutPageMgr::CreateViewRecord(CXFA_Node* pPageNode,
bool bCreateNew) {
+ ASSERT(pPageNode);
CXFA_ViewRecord* pNewRecord = new CXFA_ViewRecord();
if (HasCurrentViewRecord()) {
- if (!IsPageSetRootOrderedOccurrence() || !pPageNode) {
+ if (!IsPageSetRootOrderedOccurrence()) {
*pNewRecord = *GetCurrentViewRecord();
m_ProposedViewRecords.push_back(pNewRecord);
return pNewRecord;
@@ -632,25 +633,31 @@
pNewRecord->pCurPageSet = pPageSetLayoutItem;
}
} else {
- if (pPageNode) {
- CXFA_Node* pPageSet = pPageNode->GetParent();
- if (pPageSet == m_pTemplatePageSetRoot) {
- pNewRecord->pCurPageSet = m_pPageSetLayoutItemRoot;
- } else {
- CXFA_ViewLayoutItem* pPageSetLayoutItem =
- new CXFA_ViewLayoutItem(pPageSet);
- pPageSet->JSObject()->SetLayoutItem(pPageSetLayoutItem);
- m_pPageSetLayoutItemRoot->AddChild(pPageSetLayoutItem);
- pNewRecord->pCurPageSet = pPageSetLayoutItem;
- }
- } else {
+ CXFA_Node* pPageSet = pPageNode->GetParent();
+ if (pPageSet == m_pTemplatePageSetRoot) {
pNewRecord->pCurPageSet = m_pPageSetLayoutItemRoot;
+ } else {
+ CXFA_ViewLayoutItem* pPageSetLayoutItem =
+ new CXFA_ViewLayoutItem(pPageSet);
+ pPageSet->JSObject()->SetLayoutItem(pPageSetLayoutItem);
+ m_pPageSetLayoutItemRoot->AddChild(pPageSetLayoutItem);
+ pNewRecord->pCurPageSet = pPageSetLayoutItem;
}
}
m_ProposedViewRecords.push_back(pNewRecord);
return pNewRecord;
}
+CXFA_ViewRecord* CXFA_LayoutPageMgr::CreateViewRecordSimple() {
+ CXFA_ViewRecord* pNewRecord = new CXFA_ViewRecord();
+ if (HasCurrentViewRecord())
+ *pNewRecord = *GetCurrentViewRecord();
+ else
+ pNewRecord->pCurPageSet = m_pPageSetLayoutItemRoot;
+ m_ProposedViewRecords.push_back(pNewRecord);
+ return pNewRecord;
+}
+
void CXFA_LayoutPageMgr::AddPageAreaLayoutItem(CXFA_ViewRecord* pNewRecord,
CXFA_Node* pNewPageArea) {
CXFA_ViewLayoutItem* pNewPageAreaLayoutItem = nullptr;
@@ -1210,7 +1217,7 @@
pPreferredPageArea = pCurrentNode;
break;
}
- CXFA_ViewRecord* pNewRecord = CreateViewRecord(nullptr, false);
+ CXFA_ViewRecord* pNewRecord = CreateViewRecordSimple();
AddPageAreaLayoutItem(pNewRecord, pCurrentNode);
AddContentAreaLayoutItem(
pNewRecord, pCurrentNode->GetFirstChildByClass<CXFA_ContentArea>(
@@ -1232,7 +1239,7 @@
if (!pCurrentNode->GetFirstChildByClass<CXFA_ContentArea>(
XFA_Element::ContentArea)) {
if (pTargetPageArea == pCurrentNode) {
- CXFA_ViewRecord* pNewRecord = CreateViewRecord(nullptr, false);
+ CXFA_ViewRecord* pNewRecord = CreateViewRecordSimple();
AddPageAreaLayoutItem(pNewRecord, pCurrentNode);
pTargetPageArea = nullptr;
}
@@ -1248,7 +1255,7 @@
pFallbackPageArea = pCurrentNode;
}
} else if (pTargetPageArea && !MatchPageAreaOddOrEven(pTargetPageArea)) {
- CXFA_ViewRecord* pNewRecord = CreateViewRecord(nullptr, false);
+ CXFA_ViewRecord* pNewRecord = CreateViewRecordSimple();
AddPageAreaLayoutItem(pNewRecord, pCurrentNode);
AddContentAreaLayoutItem(
pNewRecord, pCurrentNode->GetFirstChildByClass<CXFA_ContentArea>(
@@ -1273,7 +1280,7 @@
return false;
if (!bQuery) {
- CXFA_ViewRecord* pNewRecord = CreateViewRecord(nullptr, false);
+ CXFA_ViewRecord* pNewRecord = CreateViewRecordSimple();
AddPageAreaLayoutItem(pNewRecord, pCurPageArea);
if (!pTargetContentArea) {
pTargetContentArea = pCurPageArea->GetFirstChildByClass<CXFA_ContentArea>(
@@ -1389,13 +1396,13 @@
if (pContentAreaLayout.value()->GetFormNode() == pCurContentNode)
return false;
- CXFA_ViewRecord* pNewRecord = CreateViewRecord(nullptr, false);
+ CXFA_ViewRecord* pNewRecord = CreateViewRecordSimple();
pNewRecord->pCurContentArea = pContentAreaLayout.value();
return true;
}
}
- CXFA_ViewRecord* pNewRecord = CreateViewRecord(nullptr, false);
+ CXFA_ViewRecord* pNewRecord = CreateViewRecordSimple();
AddContentAreaLayoutItem(pNewRecord, pContentArea);
return true;
}
@@ -1445,7 +1452,7 @@
i = m_nCurPageCount;
for (; i < iMin; i++) {
- CXFA_ViewRecord* pNewRecord = CreateViewRecord(nullptr, false);
+ CXFA_ViewRecord* pNewRecord = CreateViewRecordSimple();
AddPageAreaLayoutItem(pNewRecord, pPageArea);
AddContentAreaLayoutItem(pNewRecord, pContentArea);
}
@@ -2010,7 +2017,7 @@
XFA_Attribute::PagePosition);
if (eLastChoice == XFA_AttributeValue::First &&
(bIsSimplex || eOddOrEven != XFA_AttributeValue::Odd)) {
- CXFA_ViewRecord* pRecord = CreateViewRecord(nullptr, false);
+ CXFA_ViewRecord* pRecord = CreateViewRecordSimple();
AddPageAreaLayoutItem(pRecord, pNode);
return;
}
@@ -2042,7 +2049,7 @@
if (pNode->JSObject()->GetEnum(XFA_Attribute::PagePosition) ==
XFA_AttributeValue::Last) {
- CXFA_ViewRecord* pRecord = CreateViewRecord(nullptr, false);
+ CXFA_ViewRecord* pRecord = CreateViewRecordSimple();
AddPageAreaLayoutItem(pRecord, pNode);
}
}
diff --git a/xfa/fxfa/layout/cxfa_layoutpagemgr.h b/xfa/fxfa/layout/cxfa_layoutpagemgr.h
index 3ec9b9d..55aeb91 100644
--- a/xfa/fxfa/layout/cxfa_layoutpagemgr.h
+++ b/xfa/fxfa/layout/cxfa_layoutpagemgr.h
@@ -78,6 +78,7 @@
return !m_ProposedViewRecords.empty() ? std::prev(iter) : iter;
}
CXFA_ViewRecord* CreateViewRecord(CXFA_Node* pPageNode, bool bCreateNew);
+ CXFA_ViewRecord* CreateViewRecordSimple();
void AddPageAreaLayoutItem(CXFA_ViewRecord* pNewRecord,
CXFA_Node* pNewPageArea);
void AddContentAreaLayoutItem(CXFA_ViewRecord* pNewRecord,