Use std::vector in cpdfxfa_context.h

Change-Id: I5166afa96ec3e7fb0232f94fc62020d3d051a64c
Reviewed-on: https://pdfium-review.googlesource.com/2450
Reviewed-by: Nicolás Peña <npm@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp
index 113a74e..88c88a1 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp
@@ -19,6 +19,7 @@
 #include "fpdfsdk/javascript/ijs_runtime.h"
 #include "public/fpdf_formfill.h"
 #include "third_party/base/ptr_util.h"
+#include "third_party/base/stl_util.h"
 #include "xfa/fxfa/cxfa_eventparam.h"
 #include "xfa/fxfa/xfa_ffapp.h"
 #include "xfa/fxfa/xfa_ffdoc.h"
@@ -82,11 +83,10 @@
 
 bool CPDFXFA_Context::LoadXFADoc() {
   m_nLoadStatus = FXFA_LOADSTATUS_LOADING;
-
   if (!m_pPDFDoc)
     return false;
 
-  m_XFAPageList.RemoveAll();
+  m_XFAPageList.clear();
 
   CXFA_FFApp* pApp = GetXFAApp();
   if (!pApp)
@@ -155,24 +155,27 @@
     return nullptr;
 
   CPDFXFA_Page* pPage = nullptr;
-  int nCount = m_XFAPageList.GetSize();
+  int nCount = pdfium::CollectionSize<int>(m_XFAPageList);
   if (nCount > 0 && page_index < nCount) {
-    pPage = m_XFAPageList.GetAt(page_index);
-    if (pPage)
+    pPage = m_XFAPageList[page_index];
+    if (pPage) {
       pPage->Retain();
+      return pPage;
+    }
   } else {
     m_nPageCount = GetPageCount();
-    m_XFAPageList.SetSize(m_nPageCount);
+    m_XFAPageList.resize(m_nPageCount);
   }
-  if (pPage)
-    return pPage;
 
   pPage = new CPDFXFA_Page(this, page_index);
   if (!pPage->LoadPage()) {
     pPage->Release();
     return nullptr;
   }
-  m_XFAPageList.SetAt(page_index, pPage);
+  if (page_index >= 0 &&
+      page_index < pdfium::CollectionSize<int>(m_XFAPageList)) {
+    m_XFAPageList[page_index] = pPage;
+  }
   return pPage;
 }
 
@@ -186,15 +189,10 @@
   if (m_iDocType != DOCTYPE_DYNAMIC_XFA)
     return nullptr;
 
-  int nSize = m_XFAPageList.GetSize();
-  for (int i = 0; i < nSize; i++) {
-    CPDFXFA_Page* pTempPage = m_XFAPageList.GetAt(i);
-    if (!pTempPage)
-      continue;
-    if (pTempPage->GetXFAPageView() && pTempPage->GetXFAPageView() == pPage)
+  for (CPDFXFA_Page* pTempPage : m_XFAPageList) {
+    if (pTempPage && pTempPage->GetXFAPageView() == pPage)
       return pTempPage;
   }
-
   return nullptr;
 }
 
@@ -205,15 +203,20 @@
   if (m_pPDFDoc)
     m_pPDFDoc->DeletePage(page_index);
 
-  if (page_index < 0 || page_index >= m_XFAPageList.GetSize())
+  if (page_index < 0 ||
+      page_index >= pdfium::CollectionSize<int>(m_XFAPageList)) {
     return;
-
-  if (CPDFXFA_Page* pPage = m_XFAPageList.GetAt(page_index))
+  }
+  if (CPDFXFA_Page* pPage = m_XFAPageList[page_index])
     pPage->Release();
 }
 
 void CPDFXFA_Context::RemovePage(CPDFXFA_Page* page) {
-  m_XFAPageList.SetAt(page->GetPageIndex(), nullptr);
+  int page_index = page->GetPageIndex();
+  if (page_index >= 0 &&
+      page_index < pdfium::CollectionSize<int>(m_XFAPageList)) {
+    m_XFAPageList[page_index] = nullptr;
+  }
 }
 
 void CPDFXFA_Context::ClearChangeMark() {
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_context.h b/fpdfsdk/fpdfxfa/cpdfxfa_context.h
index de3f39c..e1c357f 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_context.h
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_context.h
@@ -8,6 +8,7 @@
 #define FPDFSDK_FPDFXFA_CPDFXFA_CONTEXT_H_
 
 #include <memory>
+#include <vector>
 
 #include "fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.h"
 #include "xfa/fxfa/xfa_ffdoc.h"
@@ -88,12 +89,11 @@
   int GetOriginalPageCount() const { return m_nPageCount; }
   void SetOriginalPageCount(int count) {
     m_nPageCount = count;
-    m_XFAPageList.SetSize(count);
+    m_XFAPageList.resize(count);
   }
 
   LoadStatus GetLoadStatus() const { return m_nLoadStatus; }
-
-  CFX_ArrayTemplate<CPDFXFA_Page*>* GetXFAPageList() { return &m_XFAPageList; }
+  std::vector<CPDFXFA_Page*>* GetXFAPageList() { return &m_XFAPageList; }
 
  private:
   void CloseXFADoc();
@@ -106,7 +106,7 @@
   CXFA_FFDocView* m_pXFADocView;                // not owned.
   std::unique_ptr<CXFA_FFApp> m_pXFAApp;
   std::unique_ptr<CJS_Runtime> m_pRuntime;
-  CFX_ArrayTemplate<CPDFXFA_Page*> m_XFAPageList;
+  std::vector<CPDFXFA_Page*> m_XFAPageList;
   LoadStatus m_nLoadStatus;
   int m_nPageCount;
 
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
index 2b3368b..ec62927 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
@@ -277,7 +277,7 @@
 
   for (int iPageIter = 0; iPageIter < m_pContext->GetOriginalPageCount();
        iPageIter++) {
-    CPDFXFA_Page* pPage = m_pContext->GetXFAPageList()->GetAt(iPageIter);
+    CPDFXFA_Page* pPage = (*m_pContext->GetXFAPageList())[iPageIter];
     if (!pPage)
       continue;