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,