Remove unneeded vector implementations from cpwl_edit_impl

Change-Id: I98f3f1773b570dc525618ada997425000e1e4c58
Reviewed-on: https://pdfium-review.googlesource.com/22191
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: Nicolás Peña Moreno <npm@chromium.org>
diff --git a/fpdfsdk/pwl/cpwl_edit_impl.cpp b/fpdfsdk/pwl/cpwl_edit_impl.cpp
index 1b324dc..a2a7b1d 100644
--- a/fpdfsdk/pwl/cpwl_edit_impl.cpp
+++ b/fpdfsdk/pwl/cpwl_edit_impl.cpp
@@ -175,35 +175,38 @@
 CPWL_EditImpl_Refresh::~CPWL_EditImpl_Refresh() {}
 
 void CPWL_EditImpl_Refresh::BeginRefresh() {
-  m_RefreshRects.Clear();
+  m_RefreshRects.clear();
   m_OldLineRects = std::move(m_NewLineRects);
 }
 
 void CPWL_EditImpl_Refresh::Push(const CPVT_WordRange& linerange,
                                  const CFX_FloatRect& rect) {
-  m_NewLineRects.Add(linerange, rect);
+  m_NewLineRects.emplace_back(CPWL_EditImpl_LineRect(linerange, rect));
 }
 
 void CPWL_EditImpl_Refresh::NoAnalyse() {
-  {
-    for (int32_t i = 0, sz = m_OldLineRects.GetSize(); i < sz; i++)
-      if (CPWL_EditImpl_LineRect* pOldRect = m_OldLineRects.GetAt(i))
-        m_RefreshRects.Add(pOldRect->m_rcLine);
-  }
+  for (const auto& lineRect : m_OldLineRects)
+    Add(lineRect.m_rcLine);
 
-  {
-    for (int32_t i = 0, sz = m_NewLineRects.GetSize(); i < sz; i++)
-      if (CPWL_EditImpl_LineRect* pNewRect = m_NewLineRects.GetAt(i))
-        m_RefreshRects.Add(pNewRect->m_rcLine);
-  }
+  for (const auto& lineRect : m_NewLineRects)
+    Add(lineRect.m_rcLine);
 }
 
-const CPWL_EditImpl_RectArray* CPWL_EditImpl_Refresh::GetRefreshRects() const {
+std::vector<CFX_FloatRect>* CPWL_EditImpl_Refresh::GetRefreshRects() {
   return &m_RefreshRects;
 }
 
 void CPWL_EditImpl_Refresh::EndRefresh() {
-  m_RefreshRects.Clear();
+  m_RefreshRects.clear();
+}
+
+void CPWL_EditImpl_Refresh::Add(const CFX_FloatRect& new_rect) {
+  // Check for overlapped area.
+  for (const auto& rect : m_RefreshRects) {
+    if (rect.Contains(new_rect))
+      return;
+  }
+  m_RefreshRects.emplace_back(CFX_FloatRect(new_rect));
 }
 
 CPWL_EditImpl_Undo::CPWL_EditImpl_Undo()
@@ -1137,10 +1140,9 @@
       if (!m_bNotifyFlag) {
         AutoRestorer<bool> restorer(&m_bNotifyFlag);
         m_bNotifyFlag = true;
-        if (const CPWL_EditImpl_RectArray* pRects =
-                m_Refresh.GetRefreshRects()) {
-          for (int32_t i = 0, sz = pRects->GetSize(); i < sz; i++)
-            m_pNotify->InvalidateRect(pRects->GetAt(i));
+        if (std::vector<CFX_FloatRect>* pRects = m_Refresh.GetRefreshRects()) {
+          for (auto& rect : *pRects)
+            m_pNotify->InvalidateRect(&rect);
         }
       }
     }
@@ -1867,33 +1869,6 @@
   return sWord;
 }
 
-CPWL_EditImpl_LineRectArray::CPWL_EditImpl_LineRectArray() {}
-
-CPWL_EditImpl_LineRectArray::~CPWL_EditImpl_LineRectArray() {}
-
-void CPWL_EditImpl_LineRectArray::operator=(
-    CPWL_EditImpl_LineRectArray&& that) {
-  m_LineRects = std::move(that.m_LineRects);
-}
-
-void CPWL_EditImpl_LineRectArray::Add(const CPVT_WordRange& wrLine,
-                                      const CFX_FloatRect& rcLine) {
-  m_LineRects.push_back(
-      pdfium::MakeUnique<CPWL_EditImpl_LineRect>(wrLine, rcLine));
-}
-
-int32_t CPWL_EditImpl_LineRectArray::GetSize() const {
-  return pdfium::CollectionSize<int32_t>(m_LineRects);
-}
-
-CPWL_EditImpl_LineRect* CPWL_EditImpl_LineRectArray::GetAt(
-    int32_t nIndex) const {
-  if (nIndex < 0 || nIndex >= GetSize())
-    return nullptr;
-
-  return m_LineRects[nIndex].get();
-}
-
 CPWL_EditImpl_Select::CPWL_EditImpl_Select() {}
 
 CPWL_EditImpl_Select::CPWL_EditImpl_Select(const CPVT_WordRange& range) {
@@ -1922,31 +1897,3 @@
 bool CPWL_EditImpl_Select::IsEmpty() const {
   return BeginPos == EndPos;
 }
-
-CPWL_EditImpl_RectArray::CPWL_EditImpl_RectArray() {}
-
-CPWL_EditImpl_RectArray::~CPWL_EditImpl_RectArray() {}
-
-void CPWL_EditImpl_RectArray::Clear() {
-  m_Rects.clear();
-}
-
-void CPWL_EditImpl_RectArray::Add(const CFX_FloatRect& rect) {
-  // check for overlapped area
-  for (const auto& pRect : m_Rects) {
-    if (pRect && pRect->Contains(rect))
-      return;
-  }
-  m_Rects.push_back(pdfium::MakeUnique<CFX_FloatRect>(rect));
-}
-
-int32_t CPWL_EditImpl_RectArray::GetSize() const {
-  return pdfium::CollectionSize<int32_t>(m_Rects);
-}
-
-CFX_FloatRect* CPWL_EditImpl_RectArray::GetAt(int32_t nIndex) const {
-  if (nIndex < 0 || nIndex >= GetSize())
-    return nullptr;
-
-  return m_Rects[nIndex].get();
-}
diff --git a/fpdfsdk/pwl/cpwl_edit_impl.h b/fpdfsdk/pwl/cpwl_edit_impl.h
index 387f6e7..e0d8324 100644
--- a/fpdfsdk/pwl/cpwl_edit_impl.h
+++ b/fpdfsdk/pwl/cpwl_edit_impl.h
@@ -38,36 +38,6 @@
   CFX_FloatRect m_rcLine;
 };
 
-class CPWL_EditImpl_LineRectArray {
- public:
-  CPWL_EditImpl_LineRectArray();
-  ~CPWL_EditImpl_LineRectArray();
-
-  void operator=(CPWL_EditImpl_LineRectArray&& rects);
-  void Add(const CPVT_WordRange& wrLine, const CFX_FloatRect& rcLine);
-
-  int32_t GetSize() const;
-  CPWL_EditImpl_LineRect* GetAt(int32_t nIndex) const;
-
- private:
-  std::vector<std::unique_ptr<CPWL_EditImpl_LineRect>> m_LineRects;
-};
-
-class CPWL_EditImpl_RectArray {
- public:
-  CPWL_EditImpl_RectArray();
-  ~CPWL_EditImpl_RectArray();
-
-  void Clear();
-  void Add(const CFX_FloatRect& rect);
-
-  int32_t GetSize() const;
-  CFX_FloatRect* GetAt(int32_t nIndex) const;
-
- private:
-  std::vector<std::unique_ptr<CFX_FloatRect>> m_Rects;
-};
-
 class CPWL_EditImpl_Refresh {
  public:
   CPWL_EditImpl_Refresh();
@@ -76,13 +46,15 @@
   void BeginRefresh();
   void Push(const CPVT_WordRange& linerange, const CFX_FloatRect& rect);
   void NoAnalyse();
-  const CPWL_EditImpl_RectArray* GetRefreshRects() const;
+  std::vector<CFX_FloatRect>* GetRefreshRects();
   void EndRefresh();
 
  private:
-  CPWL_EditImpl_LineRectArray m_NewLineRects;
-  CPWL_EditImpl_LineRectArray m_OldLineRects;
-  CPWL_EditImpl_RectArray m_RefreshRects;
+  void Add(const CFX_FloatRect& new_rect);
+
+  std::vector<CPWL_EditImpl_LineRect> m_NewLineRects;
+  std::vector<CPWL_EditImpl_LineRect> m_OldLineRects;
+  std::vector<CFX_FloatRect> m_RefreshRects;
 };
 
 class CPWL_EditImpl_Select {