Encapsulate |CXFA_Document::m_pPendingPageSet|.

Also fix some nits in the caller.

Change-Id: I0584e420cf7547089a8030a8bb6f47c5f523729b
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/73152
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fxfa/layout/cxfa_viewlayoutprocessor.cpp b/xfa/fxfa/layout/cxfa_viewlayoutprocessor.cpp
index ae3ef5a..349d486 100644
--- a/xfa/fxfa/layout/cxfa_viewlayoutprocessor.cpp
+++ b/xfa/fxfa/layout/cxfa_viewlayoutprocessor.cpp
@@ -1673,7 +1673,7 @@
   auto* pDocLayout = CXFA_LayoutProcessor::FromDocument(pDocument);
   CXFA_ViewLayoutItem* pRootLayout = GetRootLayoutItem();
 
-  int32_t iIndex = 0;
+  size_t pending_index = 0;
   for (; pRootLayout;
        pRootLayout = ToViewLayoutItem(pRootLayout->GetNextSibling())) {
     CXFA_Node* pPendingPageSet = nullptr;
@@ -1681,10 +1681,9 @@
     CXFA_ViewLayoutItem* pRootPageSetViewItem = iterator.GetCurrent();
     ASSERT(pRootPageSetViewItem->GetFormNode()->GetElementType() ==
            XFA_Element::PageSet);
-    if (iIndex <
-        pdfium::CollectionSize<int32_t>(pDocument->m_pPendingPageSet)) {
-      pPendingPageSet = pDocument->m_pPendingPageSet[iIndex];
-      iIndex++;
+    if (pending_index < pDocument->GetPendingNodesCount()) {
+      pPendingPageSet = pDocument->GetPendingNodeAtIndex(pending_index);
+      ++pending_index;
     }
     if (!pPendingPageSet) {
       if (pRootPageSetViewItem->GetFormNode()->GetPacketType() ==
@@ -1928,8 +1927,10 @@
   CXFA_ViewLayoutItem* pRootLayoutItem = m_pPageSetRootLayoutItem;
   if (pRootLayoutItem &&
       pRootLayoutItem->GetFormNode()->GetPacketType() == XFA_PacketType::Form) {
+    CXFA_Document* const pRootDocument =
+        pRootLayoutItem->GetFormNode()->GetDocument();
     CXFA_Node* pPageSetFormNode = pRootLayoutItem->GetFormNode();
-    pRootLayoutItem->GetFormNode()->GetDocument()->m_pPendingPageSet.clear();
+    pRootDocument->ClearPendingNodes();
     if (pPageSetFormNode->HasRemovedChildren()) {
       XFA_ReleaseLayoutItem(pRootLayoutItem);
       m_pPageSetRootLayoutItem = nullptr;
@@ -1943,9 +1944,7 @@
               XFA_Element::PageSet);
       pPageSetFormNode->GetParent()->RemoveChildAndNotify(pPageSetFormNode,
                                                           false);
-      pRootLayoutItem->GetFormNode()
-          ->GetDocument()
-          ->m_pPendingPageSet.push_back(pPageSetFormNode);
+      pRootDocument->AppendPendingNode(pPageSetFormNode);
       pPageSetFormNode = pNextPageSet;
     }
   }
diff --git a/xfa/fxfa/parser/cxfa_document.cpp b/xfa/fxfa/parser/cxfa_document.cpp
index ff18694..e6e20fe 100644
--- a/xfa/fxfa/parser/cxfa_document.cpp
+++ b/xfa/fxfa/parser/cxfa_document.cpp
@@ -1838,6 +1838,22 @@
   m_rgGlobalBinding[dwNameHash] = pDataNode;
 }
 
+size_t CXFA_Document::GetPendingNodesCount() const {
+  return m_pPendingPageSet.size();
+}
+
+CXFA_Node* CXFA_Document::GetPendingNodeAtIndex(size_t index) const {
+  return m_pPendingPageSet[index];
+}
+
+void CXFA_Document::AppendPendingNode(CXFA_Node* node) {
+  m_pPendingPageSet.push_back(node);
+}
+
+void CXFA_Document::ClearPendingNodes() {
+  m_pPendingPageSet.clear();
+}
+
 void CXFA_Document::SetPendingNodesUnusedAndUnbound() {
   for (CXFA_Node* pPageNode : m_pPendingPageSet) {
     CXFA_NodeIterator sIterator(pPageNode);
diff --git a/xfa/fxfa/parser/cxfa_document.h b/xfa/fxfa/parser/cxfa_document.h
index 1cfe70e..bdc08cc 100644
--- a/xfa/fxfa/parser/cxfa_document.h
+++ b/xfa/fxfa/parser/cxfa_document.h
@@ -132,9 +132,12 @@
 
   CXFA_Node* GetGlobalBinding(uint32_t dwNameHash);
   void RegisterGlobalBinding(uint32_t dwNameHash, CXFA_Node* pDataNode);
-  void SetPendingNodesUnusedAndUnbound();
 
-  std::vector<CXFA_Node*> m_pPendingPageSet;
+  size_t GetPendingNodesCount() const;
+  CXFA_Node* GetPendingNodeAtIndex(size_t index) const;
+  void AppendPendingNode(CXFA_Node* node);
+  void ClearPendingNodes();
+  void SetPendingNodesUnusedAndUnbound();
 
  private:
   CXFA_Document(CXFA_FFNotify* notify,
@@ -155,6 +158,7 @@
   cppgc::Member<CScript_LogPseudoModel> m_pScriptLog;
   cppgc::Member<CScript_LayoutPseudoModel> m_pScriptLayout;
   cppgc::Member<CScript_SignaturePseudoModel> m_pScriptSignature;
+  std::vector<CXFA_Node*> m_pPendingPageSet;
   XFA_VERSION m_eCurVersionMode = XFA_VERSION_DEFAULT;
   Optional<bool> m_Interactive;
   bool m_bStrictScoping = false;