diff --git a/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp b/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp
index 558c526..2587b98 100644
--- a/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp
+++ b/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp
@@ -735,9 +735,7 @@
     case XFA_AttributeValue::ContentArea:
       if (pTarget && pTarget->GetElementType() != XFA_Element::ContentArea)
         pTarget = nullptr;
-      if (!pTarget || !HasCurrentViewRecord() ||
-          pTarget != GetCurrentViewRecord()->pCurContentArea->GetFormNode() ||
-          bStartNew) {
+      if (ShouldGetNextPageArea(pTarget, bStartNew)) {
         CXFA_Node* pPageArea = nullptr;
         if (pTarget)
           pPageArea = pTarget->GetParent();
@@ -749,9 +747,7 @@
     case XFA_AttributeValue::PageArea:
       if (pTarget && pTarget->GetElementType() != XFA_Element::PageArea)
         pTarget = nullptr;
-      if (!pTarget || !HasCurrentViewRecord() ||
-          pTarget != GetCurrentViewRecord()->pCurPageArea->GetFormNode() ||
-          bStartNew) {
+      if (ShouldGetNextPageArea(pTarget, bStartNew)) {
         CXFA_Node* pPageArea =
             GetNextAvailPageArea(pTarget, nullptr, true, false);
         bRet = !!pPageArea;
@@ -772,6 +768,12 @@
   return bRet;
 }
 
+bool CXFA_LayoutPageMgr::ShouldGetNextPageArea(CXFA_Node* pTarget,
+                                               bool bStartNew) const {
+  return bStartNew || !pTarget || !HasCurrentViewRecord() ||
+         pTarget != GetCurrentViewRecord()->pCurPageArea->GetFormNode();
+}
+
 CXFA_LayoutPageMgr::BreakData CXFA_LayoutPageMgr::ExecuteBreakBeforeOrAfter(
     const CXFA_Node* pCurNode,
     bool bBefore) {
diff --git a/xfa/fxfa/layout/cxfa_layoutpagemgr.h b/xfa/fxfa/layout/cxfa_layoutpagemgr.h
index 81372b3..3ec9b9d 100644
--- a/xfa/fxfa/layout/cxfa_layoutpagemgr.h
+++ b/xfa/fxfa/layout/cxfa_layoutpagemgr.h
@@ -67,6 +67,9 @@
     return m_CurrentViewRecordIter != m_ProposedViewRecords.end();
   }
   CXFA_ViewRecord* GetCurrentViewRecord() { return *m_CurrentViewRecordIter; }
+  const CXFA_ViewRecord* GetCurrentViewRecord() const {
+    return *m_CurrentViewRecordIter;
+  }
   void ResetToFirstViewRecord() {
     m_CurrentViewRecordIter = m_ProposedViewRecords.begin();
   }
@@ -83,6 +86,7 @@
                 XFA_AttributeValue eTargetType,
                 CXFA_Node* pTarget,
                 bool bStartNew);
+  bool ShouldGetNextPageArea(CXFA_Node* pTarget, bool bStartNew) const;
   bool BreakOverflow(const CXFA_Node* pOverflowNode,
                      bool bCreatePage,
                      CXFA_Node** pLeaderTemplate,
