Add CXFA_LayoutPageMgr::HasCurrentViewRecord().

It makes the code more readable. Also add ResetToFirstViewRecord().

Change-Id: I46eb78290220249b42686721b15d67453a021fd5
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/53010
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp b/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp
index 572c0bd..558c526 100644
--- a/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp
+++ b/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp
@@ -498,7 +498,7 @@
   if (pBreakBeforeNode) {
     BreakData ret = ExecuteBreakBeforeOrAfter(pBreakBeforeNode, true);
     if (ret.bCreatePage) {
-      m_CurrentViewRecordIter = m_ProposedViewRecords.begin();
+      ResetToFirstViewRecord();
       return true;
     }
   }
@@ -513,11 +513,9 @@
   if (!pPageNode)
     return false;
 
-  if (bFirstTemPage && m_CurrentViewRecordIter == m_ProposedViewRecords.end()) {
-    m_CurrentViewRecordIter = m_ProposedViewRecords.begin();
-  }
-  return !bFirstTemPage ||
-         m_CurrentViewRecordIter != m_ProposedViewRecords.end();
+  if (bFirstTemPage && !HasCurrentViewRecord())
+    ResetToFirstViewRecord();
+  return !bFirstTemPage || HasCurrentViewRecord();
 }
 
 void CXFA_LayoutPageMgr::RemoveLayoutRecord(CXFA_ViewRecord* pNewRecord,
@@ -592,7 +590,7 @@
 CXFA_ViewRecord* CXFA_LayoutPageMgr::CreateViewRecord(CXFA_Node* pPageNode,
                                                       bool bCreateNew) {
   CXFA_ViewRecord* pNewRecord = new CXFA_ViewRecord();
-  if (m_CurrentViewRecordIter != m_ProposedViewRecords.end()) {
+  if (HasCurrentViewRecord()) {
     if (!IsPageSetRootOrderedOccurrence() || !pPageNode) {
       *pNewRecord = *GetCurrentViewRecord();
       m_ProposedViewRecords.push_back(pNewRecord);
@@ -737,7 +735,7 @@
     case XFA_AttributeValue::ContentArea:
       if (pTarget && pTarget->GetElementType() != XFA_Element::ContentArea)
         pTarget = nullptr;
-      if (!pTarget || m_CurrentViewRecordIter == m_ProposedViewRecords.end() ||
+      if (!pTarget || !HasCurrentViewRecord() ||
           pTarget != GetCurrentViewRecord()->pCurContentArea->GetFormNode() ||
           bStartNew) {
         CXFA_Node* pPageArea = nullptr;
@@ -751,7 +749,7 @@
     case XFA_AttributeValue::PageArea:
       if (pTarget && pTarget->GetElementType() != XFA_Element::PageArea)
         pTarget = nullptr;
-      if (!pTarget || m_CurrentViewRecordIter == m_ProposedViewRecords.end() ||
+      if (!pTarget || !HasCurrentViewRecord() ||
           pTarget != GetCurrentViewRecord()->pCurPageArea->GetFormNode() ||
           bStartNew) {
         CXFA_Node* pPageArea =
@@ -1096,10 +1094,9 @@
                                            pTargetPageArea, pTargetContentArea,
                                            bNewPage, bQuery);
   }
-  XFA_AttributeValue ePreferredPosition =
-      m_CurrentViewRecordIter != m_ProposedViewRecords.end()
-          ? XFA_AttributeValue::Rest
-          : XFA_AttributeValue::First;
+  XFA_AttributeValue ePreferredPosition = HasCurrentViewRecord()
+                                              ? XFA_AttributeValue::Rest
+                                              : XFA_AttributeValue::First;
   return FindPageAreaFromPageSet_SimplexDuplex(
       pPageSet, pStartChild, pTargetPageArea, pTargetContentArea, bNewPage,
       bQuery, ePreferredPosition);
diff --git a/xfa/fxfa/layout/cxfa_layoutpagemgr.h b/xfa/fxfa/layout/cxfa_layoutpagemgr.h
index 0b6caf2..81372b3 100644
--- a/xfa/fxfa/layout/cxfa_layoutpagemgr.h
+++ b/xfa/fxfa/layout/cxfa_layoutpagemgr.h
@@ -63,7 +63,13 @@
                                         CXFA_ViewRecord* pPrevRecord);
   void RemoveLayoutRecord(CXFA_ViewRecord* pNewRecord,
                           CXFA_ViewRecord* pPrevRecord);
+  bool HasCurrentViewRecord() const {
+    return m_CurrentViewRecordIter != m_ProposedViewRecords.end();
+  }
   CXFA_ViewRecord* GetCurrentViewRecord() { return *m_CurrentViewRecordIter; }
+  void ResetToFirstViewRecord() {
+    m_CurrentViewRecordIter = m_ProposedViewRecords.begin();
+  }
   std::list<CXFA_ViewRecord*>::iterator GetTailPosition() {
     auto iter = m_ProposedViewRecords.end();
     return !m_ProposedViewRecords.empty() ? std::prev(iter) : iter;