diff --git a/xfa/fxfa/app/xfa_ffdocview.cpp b/xfa/fxfa/app/xfa_ffdocview.cpp
index 3d81699..4a3465b 100644
--- a/xfa/fxfa/app/xfa_ffdocview.cpp
+++ b/xfa/fxfa/app/xfa_ffdocview.cpp
@@ -138,7 +138,7 @@
     ExecEventActivityByDeepFirst(pRootItem, XFA_EVENT_Ready, false, true,
                                  nullptr);
   }
-  m_CalculateAccs.RemoveAll();
+  m_CalculateAccs.clear();
   if (m_pFocusAcc && !m_pFocusWidget) {
     SetFocusWidgetAcc(m_pFocusAcc);
   }
@@ -171,31 +171,31 @@
   }
   m_arrNullTestMsg.clear();
 }
+
 void CXFA_FFDocView::UpdateDocView() {
-  if (IsUpdateLocked()) {
+  if (IsUpdateLocked())
     return;
-  }
+
   LockUpdate();
-  int32_t iNewAdds = m_NewAddedNodes.GetSize();
-  for (int32_t i = 0; i < iNewAdds; i++) {
-    CXFA_Node* pNode = m_NewAddedNodes[i];
+  for (CXFA_Node* pNode : m_NewAddedNodes) {
     InitCalculate(pNode);
     InitValidate(pNode);
     ExecEventActivityByDeepFirst(pNode, XFA_EVENT_Ready, true, true, nullptr);
   }
-  m_NewAddedNodes.RemoveAll();
+  m_NewAddedNodes.clear();
   RunSubformIndexChange();
   RunCalculateWidgets();
   RunValidate();
   ShowNullTestMsg();
-  if (RunLayout() && m_bLayoutEvent) {
+  if (RunLayout() && m_bLayoutEvent)
     RunEventLayoutReady();
-  }
+
   m_bLayoutEvent = false;
-  m_CalculateAccs.RemoveAll();
+  m_CalculateAccs.clear();
   RunInvalidate();
   UnlockUpdate();
 }
+
 int32_t CXFA_FFDocView::CountPageViews() {
   if (!m_pXFADocLayout) {
     return 0;
@@ -582,30 +582,32 @@
   UnlockUpdate();
   return false;
 }
+
 void CXFA_FFDocView::RunSubformIndexChange() {
-  int32_t iSubforms = m_IndexChangedSubforms.GetSize();
-  for (int32_t i = 0; i < iSubforms; i++) {
-    CXFA_Node* pSubformNode = m_IndexChangedSubforms[i];
+  for (CXFA_Node* pSubformNode : m_IndexChangedSubforms) {
     CXFA_WidgetAcc* pWidgetAcc =
         static_cast<CXFA_WidgetAcc*>(pSubformNode->GetWidgetData());
-    if (!pWidgetAcc) {
+    if (!pWidgetAcc)
       continue;
-    }
+
     CXFA_EventParam eParam;
     eParam.m_eType = XFA_EVENT_IndexChange;
     eParam.m_pTarget = pWidgetAcc;
     pWidgetAcc->ProcessEvent(XFA_ATTRIBUTEENUM_IndexChange, &eParam);
   }
-  m_IndexChangedSubforms.RemoveAll();
+  m_IndexChangedSubforms.clear();
 }
+
 void CXFA_FFDocView::AddNewFormNode(CXFA_Node* pNode) {
-  m_NewAddedNodes.Add(pNode);
+  m_NewAddedNodes.push_back(pNode);
   InitLayout(pNode);
 }
+
 void CXFA_FFDocView::AddIndexChangedSubform(CXFA_Node* pNode) {
   ASSERT(pNode->GetElementType() == XFA_Element::Subform);
-  m_IndexChangedSubforms.Add(pNode);
+  m_IndexChangedSubforms.push_back(pNode);
 }
+
 void CXFA_FFDocView::RunDocClose() {
   CXFA_Node* pRootItem =
       ToNode(m_pDoc->GetXFADoc()->GetXFAObject(XFA_HASHCODE_Form));
@@ -619,40 +621,34 @@
   ClearInvalidateList();
   m_iStatus = XFA_DOCVIEW_LAYOUTSTATUS_None;
   m_iLock = 0;
-  m_ValidateAccs.RemoveAll();
-  m_BindItems.RemoveAll();
-  m_CalculateAccs.RemoveAll();
+  m_ValidateAccs.clear();
+  m_BindItems.clear();
+  m_CalculateAccs.clear();
 }
 bool CXFA_FFDocView::IsStaticNotify() {
   return m_pDoc->GetDocType() == XFA_DOCTYPE_Static;
 }
+
 void CXFA_FFDocView::AddCalculateWidgetAcc(CXFA_WidgetAcc* pWidgetAcc) {
-  int32_t iAccs = m_CalculateAccs.GetSize();
   CXFA_WidgetAcc* pCurrentAcc =
-      iAccs > 0 ? m_CalculateAccs[iAccs - 1] : nullptr;
-  if (pCurrentAcc != pWidgetAcc) {
-    m_CalculateAccs.Add(pWidgetAcc);
-  }
+      !m_CalculateAccs.empty() ? m_CalculateAccs.back() : nullptr;
+  if (pCurrentAcc != pWidgetAcc)
+    m_CalculateAccs.push_back(pWidgetAcc);
 }
+
 void CXFA_FFDocView::AddCalculateNodeNotify(CXFA_Node* pNodeChange) {
   CXFA_CalcData* pGlobalData =
       (CXFA_CalcData*)pNodeChange->GetUserData(XFA_CalcData);
   int32_t iCount = pGlobalData ? pGlobalData->m_Globals.GetSize() : 0;
   for (int32_t i = 0; i < iCount; i++) {
     CXFA_WidgetAcc* pResultAcc = pGlobalData->m_Globals[i];
-    if (pResultAcc->GetNode()->HasRemovedChildren())
-      continue;
-
-    int32_t iAccs = m_CalculateAccs.GetSize();
-    CXFA_WidgetAcc* pCurrentAcc =
-        iAccs > 0 ? m_CalculateAccs[iAccs - 1] : nullptr;
-    if (pCurrentAcc != pResultAcc) {
-      m_CalculateAccs.Add(pResultAcc);
-    }
+    if (!pResultAcc->GetNode()->HasRemovedChildren())
+      AddCalculateWidgetAcc(pResultAcc);
   }
 }
+
 void CXFA_FFDocView::RunCalculateRecursive(int32_t& iIndex) {
-  while (iIndex < m_CalculateAccs.GetSize()) {
+  while (iIndex < pdfium::CollectionSize<int32_t>(m_CalculateAccs)) {
     CXFA_WidgetAcc* pCurAcc = m_CalculateAccs[iIndex];
     AddCalculateNodeNotify(pCurAcc->GetNode());
     int32_t iRefCount =
@@ -670,52 +666,52 @@
     RunCalculateRecursive(iIndex);
   }
 }
+
 int32_t CXFA_FFDocView::RunCalculateWidgets() {
   if (!m_pDoc->GetDocEnvironment()->IsCalculationsEnabled(m_pDoc)) {
     return XFA_EVENTERROR_Disabled;
   }
-  int32_t iCounts = m_CalculateAccs.GetSize();
+  int32_t iCounts = pdfium::CollectionSize<int32_t>(m_CalculateAccs);
   int32_t iIndex = 0;
-  if (iCounts > 0) {
+  if (iCounts > 0)
     RunCalculateRecursive(iIndex);
-  }
-  for (int32_t i = 0; i < m_CalculateAccs.GetSize(); i++) {
-    CXFA_WidgetAcc* pCurAcc = m_CalculateAccs[i];
+
+  for (CXFA_WidgetAcc* pCurAcc : m_CalculateAccs)
     pCurAcc->GetNode()->SetUserData(XFA_CalcRefCount, (void*)(uintptr_t)0);
-  }
-  m_CalculateAccs.RemoveAll();
+
+  m_CalculateAccs.clear();
   return XFA_EVENTERROR_Success;
 }
+
 void CXFA_FFDocView::AddValidateWidget(CXFA_WidgetAcc* pWidget) {
-  if (m_ValidateAccs.Find(pWidget) < 0)
-    m_ValidateAccs.Add(pWidget);
+  if (!pdfium::ContainsValue(m_ValidateAccs, pWidget))
+    m_ValidateAccs.push_back(pWidget);
 }
+
 bool CXFA_FFDocView::InitCalculate(CXFA_Node* pNode) {
   ExecEventActivityByDeepFirst(pNode, XFA_EVENT_InitCalculate, false, true,
                                nullptr);
   return true;
 }
+
 bool CXFA_FFDocView::InitValidate(CXFA_Node* pNode) {
-  if (!m_pDoc->GetDocEnvironment()->IsValidationsEnabled(m_pDoc)) {
+  if (!m_pDoc->GetDocEnvironment()->IsValidationsEnabled(m_pDoc))
     return false;
-  }
+
   ExecEventActivityByDeepFirst(pNode, XFA_EVENT_Validate, false, true, nullptr);
-  m_ValidateAccs.RemoveAll();
+  m_ValidateAccs.clear();
   return true;
 }
-bool CXFA_FFDocView::RunValidate() {
-  if (!m_pDoc->GetDocEnvironment()->IsValidationsEnabled(m_pDoc)) {
-    return false;
-  }
-  int32_t iCounts = m_ValidateAccs.GetSize();
-  for (int32_t i = 0; i < iCounts; i++) {
-    CXFA_WidgetAcc* pAcc = m_ValidateAccs[i];
-    if (pAcc->GetNode()->HasRemovedChildren())
-      continue;
 
-    pAcc->ProcessValidate();
+bool CXFA_FFDocView::RunValidate() {
+  if (!m_pDoc->GetDocEnvironment()->IsValidationsEnabled(m_pDoc))
+    return false;
+
+  for (CXFA_WidgetAcc* pAcc : m_ValidateAccs) {
+    if (!pAcc->GetNode()->HasRemovedChildren())
+      pAcc->ProcessValidate();
   }
-  m_ValidateAccs.RemoveAll();
+  m_ValidateAccs.clear();
   return true;
 }
 bool CXFA_FFDocView::RunEventLayoutReady() {
@@ -730,17 +726,17 @@
   return true;
 }
 void CXFA_FFDocView::RunBindItems() {
-  for (int32_t i = 0; i < m_BindItems.GetSize(); i++) {
-    if (m_BindItems[i]->HasRemovedChildren())
+  for (const auto& item : m_BindItems) {
+    if (item->HasRemovedChildren())
       continue;
 
-    CXFA_Node* pWidgetNode = m_BindItems[i]->GetNodeItem(XFA_NODEITEM_Parent);
+    CXFA_Node* pWidgetNode = item->GetNodeItem(XFA_NODEITEM_Parent);
     CXFA_WidgetAcc* pAcc =
         static_cast<CXFA_WidgetAcc*>(pWidgetNode->GetWidgetData());
     if (!pAcc)
       continue;
 
-    CXFA_BindItems binditems(m_BindItems[i]);
+    CXFA_BindItems binditems(item);
     CXFA_ScriptContext* pScriptContext =
         pWidgetNode->GetDocument()->GetScriptContext();
     CFX_WideStringC wsRef;
@@ -792,7 +788,7 @@
       pAcc->InsertItem(wsLabel, wsValue);
     }
   }
-  m_BindItems.RemoveAll();
+  m_BindItems.clear();
 }
 void CXFA_FFDocView::SetChangeMark() {
   if (m_iStatus < XFA_DOCVIEW_LAYOUTSTATUS_End) {
diff --git a/xfa/fxfa/app/xfa_ffnotify.cpp b/xfa/fxfa/app/xfa_ffnotify.cpp
index 4e14ab0..cb1964c 100644
--- a/xfa/fxfa/app/xfa_ffnotify.cpp
+++ b/xfa/fxfa/app/xfa_ffnotify.cpp
@@ -326,7 +326,7 @@
   }
   switch (eType) {
     case XFA_Element::BindItems:
-      pDocView->m_BindItems.Add(pNode);
+      pDocView->m_BindItems.push_back(pNode);
       break;
     case XFA_Element::Validate: {
       pNode->SetFlag(XFA_NodeFlag_NeedsInitApp, false);
diff --git a/xfa/fxfa/xfa_ffdocview.h b/xfa/fxfa/xfa_ffdocview.h
index 2c84de7..d8df8b4 100644
--- a/xfa/fxfa/xfa_ffdocview.h
+++ b/xfa/fxfa/xfa_ffdocview.h
@@ -120,11 +120,11 @@
   CXFA_FFWidget* m_pFocusWidget;          // not owned.
   CXFA_FFWidget* m_pOldFocusWidget;       // not owned.
   std::map<CXFA_FFPageView*, std::unique_ptr<CFX_RectF>> m_mapPageInvalidate;
-  CFX_ArrayTemplate<CXFA_WidgetAcc*> m_ValidateAccs;
-  CFX_ArrayTemplate<CXFA_WidgetAcc*> m_CalculateAccs;
-  CFX_ArrayTemplate<CXFA_Node*> m_BindItems;
-  CFX_ArrayTemplate<CXFA_Node*> m_NewAddedNodes;
-  CFX_ArrayTemplate<CXFA_Node*> m_IndexChangedSubforms;
+  std::vector<CXFA_WidgetAcc*> m_ValidateAccs;
+  std::vector<CXFA_WidgetAcc*> m_CalculateAccs;
+  std::vector<CXFA_Node*> m_BindItems;
+  std::vector<CXFA_Node*> m_NewAddedNodes;
+  std::vector<CXFA_Node*> m_IndexChangedSubforms;
   XFA_DOCVIEW_LAYOUTSTATUS m_iStatus;
   int32_t m_iLock;
   friend class CXFA_FFNotify;
