Rename CPDF_ContentMark to CPDF_ContentMarks.

Also change variable names and member names of this type.

This better reflects the fact that this class contains all the marks
in a page objects, not just one mark.

Change-Id: I4fe3d2620e78cbe423f18634f19fa82530d7efe1
Reviewed-on: https://pdfium-review.googlesource.com/c/43813
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
diff --git a/BUILD.gn b/BUILD.gn
index da23f0b..e0762c0 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -521,10 +521,10 @@
     "core/fpdfapi/page/cpdf_colorspace.h",
     "core/fpdfapi/page/cpdf_colorstate.cpp",
     "core/fpdfapi/page/cpdf_colorstate.h",
-    "core/fpdfapi/page/cpdf_contentmark.cpp",
-    "core/fpdfapi/page/cpdf_contentmark.h",
     "core/fpdfapi/page/cpdf_contentmarkitem.cpp",
     "core/fpdfapi/page/cpdf_contentmarkitem.h",
+    "core/fpdfapi/page/cpdf_contentmarks.cpp",
+    "core/fpdfapi/page/cpdf_contentmarks.h",
     "core/fpdfapi/page/cpdf_contentparser.cpp",
     "core/fpdfapi/page/cpdf_contentparser.h",
     "core/fpdfapi/page/cpdf_countedobject.h",
diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
index 946364d..b0f0ca6 100644
--- a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
+++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
@@ -15,7 +15,7 @@
 #include "core/fpdfapi/edit/cpdf_pagecontentmanager.h"
 #include "core/fpdfapi/edit/cpdf_stringarchivestream.h"
 #include "core/fpdfapi/font/cpdf_font.h"
-#include "core/fpdfapi/page/cpdf_contentmark.h"
+#include "core/fpdfapi/page/cpdf_contentmarks.h"
 #include "core/fpdfapi/page/cpdf_docpagedata.h"
 #include "core/fpdfapi/page/cpdf_image.h"
 #include "core/fpdfapi/page/cpdf_imageobject.h"
@@ -97,9 +97,9 @@
   // Start regenerating dirty streams.
   std::map<int32_t, std::unique_ptr<std::ostringstream>> streams;
   std::set<int32_t> empty_streams;
-  std::unique_ptr<const CPDF_ContentMark> empty_content_mark =
-      pdfium::MakeUnique<CPDF_ContentMark>();
-  std::map<int32_t, const CPDF_ContentMark*> current_content_mark;
+  std::unique_ptr<const CPDF_ContentMarks> empty_content_marks =
+      pdfium::MakeUnique<CPDF_ContentMarks>();
+  std::map<int32_t, const CPDF_ContentMarks*> current_content_marks;
 
   for (int32_t dirty_stream : all_dirty_streams) {
     std::unique_ptr<std::ostringstream> buf =
@@ -114,7 +114,7 @@
 
     streams[dirty_stream] = std::move(buf);
     empty_streams.insert(dirty_stream);
-    current_content_mark[dirty_stream] = empty_content_mark.get();
+    current_content_marks[dirty_stream] = empty_content_marks.get();
   }
 
   // Process the page objects, write into each dirty stream.
@@ -126,8 +126,8 @@
 
     std::ostringstream* buf = it->second.get();
     empty_streams.erase(stream_index);
-    current_content_mark[stream_index] = ProcessContentMarks(
-        buf, pPageObj.Get(), current_content_mark[stream_index]);
+    current_content_marks[stream_index] = ProcessContentMarks(
+        buf, pPageObj.Get(), current_content_marks[stream_index]);
     ProcessPageObject(buf, pPageObj.Get());
   }
 
@@ -138,7 +138,7 @@
       // Clear to show that this stream needs to be deleted.
       buf->str("");
     } else {
-      FinishMarks(buf, current_content_mark[dirty_stream]);
+      FinishMarks(buf, current_content_marks[dirty_stream]);
 
       // Return graphics to original state
       *buf << "Q\n";
@@ -212,19 +212,19 @@
 
 bool CPDF_PageContentGenerator::ProcessPageObjects(std::ostringstream* buf) {
   bool bDirty = false;
-  std::unique_ptr<const CPDF_ContentMark> empty_content_mark =
-      pdfium::MakeUnique<CPDF_ContentMark>();
-  const CPDF_ContentMark* content_mark = empty_content_mark.get();
+  std::unique_ptr<const CPDF_ContentMarks> empty_content_marks =
+      pdfium::MakeUnique<CPDF_ContentMarks>();
+  const CPDF_ContentMarks* content_marks = empty_content_marks.get();
 
   for (auto& pPageObj : m_pageObjects) {
     if (m_pObjHolder->IsPage() && !pPageObj->IsDirty())
       continue;
 
     bDirty = true;
-    content_mark = ProcessContentMarks(buf, pPageObj.Get(), content_mark);
+    content_marks = ProcessContentMarks(buf, pPageObj.Get(), content_marks);
     ProcessPageObject(buf, pPageObj.Get());
   }
-  FinishMarks(buf, content_mark);
+  FinishMarks(buf, content_marks);
   return bDirty;
 }
 
@@ -236,11 +236,11 @@
   }
 }
 
-const CPDF_ContentMark* CPDF_PageContentGenerator::ProcessContentMarks(
+const CPDF_ContentMarks* CPDF_PageContentGenerator::ProcessContentMarks(
     std::ostringstream* buf,
     const CPDF_PageObject* pPageObj,
-    const CPDF_ContentMark* pPrev) {
-  const CPDF_ContentMark* pNext = &pPageObj->m_ContentMark;
+    const CPDF_ContentMarks* pPrev) {
+  const CPDF_ContentMarks* pNext = &pPageObj->m_ContentMarks;
 
   size_t first_different = pPrev->FindFirstDifference(pNext);
 
@@ -290,11 +290,11 @@
 
 void CPDF_PageContentGenerator::FinishMarks(
     std::ostringstream* buf,
-    const CPDF_ContentMark* pContentMark) {
+    const CPDF_ContentMarks* pContentMarks) {
   // Technically we should iterate backwards to close from the top to the
   // bottom, but since the EMC operators do not identify which mark they are
   // closing, it does not matter.
-  for (size_t i = 0; i < pContentMark->CountItems(); ++i)
+  for (size_t i = 0; i < pContentMarks->CountItems(); ++i)
     *buf << "EMC\n";
 }
 
diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator.h b/core/fpdfapi/edit/cpdf_pagecontentgenerator.h
index 029a779..ead3950 100644
--- a/core/fpdfapi/edit/cpdf_pagecontentgenerator.h
+++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator.h
@@ -16,7 +16,7 @@
 #include "core/fxcrt/fx_system.h"
 #include "core/fxcrt/unowned_ptr.h"
 
-class CPDF_ContentMark;
+class CPDF_ContentMarks;
 class CPDF_Document;
 class CPDF_ImageObject;
 class CPDF_Object;
@@ -45,11 +45,11 @@
   ByteString GetOrCreateDefaultGraphics() const;
   ByteString RealizeResource(const CPDF_Object* pResource,
                              const ByteString& bsType) const;
-  const CPDF_ContentMark* ProcessContentMarks(std::ostringstream* buf,
-                                              const CPDF_PageObject* pPageObj,
-                                              const CPDF_ContentMark* pPrev);
+  const CPDF_ContentMarks* ProcessContentMarks(std::ostringstream* buf,
+                                               const CPDF_PageObject* pPageObj,
+                                               const CPDF_ContentMarks* pPrev);
   void FinishMarks(std::ostringstream* buf,
-                   const CPDF_ContentMark* pContentMark);
+                   const CPDF_ContentMarks* pContentMarks);
 
   // Returns a map from content stream index to new stream data. Unmodified
   // streams are not touched.
diff --git a/core/fpdfapi/page/cpdf_contentmark.cpp b/core/fpdfapi/page/cpdf_contentmark.cpp
deleted file mode 100644
index c1cdf39..0000000
--- a/core/fpdfapi/page/cpdf_contentmark.cpp
+++ /dev/null
@@ -1,171 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "core/fpdfapi/page/cpdf_contentmark.h"
-
-#include <algorithm>
-#include <utility>
-
-#include "core/fpdfapi/parser/cpdf_dictionary.h"
-#include "third_party/base/ptr_util.h"
-
-CPDF_ContentMark::CPDF_ContentMark() {}
-
-CPDF_ContentMark::~CPDF_ContentMark() {}
-
-std::unique_ptr<CPDF_ContentMark> CPDF_ContentMark::Clone() {
-  auto result = pdfium::MakeUnique<CPDF_ContentMark>();
-  if (m_pMarkData)
-    result->m_pMarkData = pdfium::MakeRetain<MarkData>(*m_pMarkData);
-  return result;
-}
-
-size_t CPDF_ContentMark::CountItems() const {
-  return m_pMarkData ? m_pMarkData->CountItems() : 0;
-}
-
-bool CPDF_ContentMark::ContainsItem(const CPDF_ContentMarkItem* pItem) const {
-  return m_pMarkData && m_pMarkData->ContainsItem(pItem);
-}
-
-CPDF_ContentMarkItem* CPDF_ContentMark::GetItem(size_t index) {
-  return const_cast<CPDF_ContentMarkItem*>(
-      static_cast<const CPDF_ContentMark*>(this)->GetItem(index));
-}
-
-const CPDF_ContentMarkItem* CPDF_ContentMark::GetItem(size_t index) const {
-  ASSERT(index < CountItems());
-  return m_pMarkData->GetItem(index);
-}
-
-int CPDF_ContentMark::GetMarkedContentID() const {
-  return m_pMarkData ? m_pMarkData->GetMarkedContentID() : -1;
-}
-
-void CPDF_ContentMark::AddMark(ByteString name) {
-  EnsureMarkDataExists();
-  m_pMarkData->AddMark(std::move(name));
-}
-
-void CPDF_ContentMark::AddMarkWithDirectDict(ByteString name,
-                                             CPDF_Dictionary* pDict) {
-  EnsureMarkDataExists();
-  m_pMarkData->AddMarkWithDirectDict(std::move(name), pDict);
-}
-
-void CPDF_ContentMark::AddMarkWithPropertiesDict(
-    ByteString name,
-    CPDF_Dictionary* pDict,
-    const ByteString& property_name) {
-  EnsureMarkDataExists();
-  m_pMarkData->AddMarkWithPropertiesDict(std::move(name), pDict, property_name);
-}
-
-bool CPDF_ContentMark::RemoveMark(CPDF_ContentMarkItem* pMarkItem) {
-  return m_pMarkData && m_pMarkData->RemoveMark(pMarkItem);
-}
-
-void CPDF_ContentMark::EnsureMarkDataExists() {
-  if (!m_pMarkData)
-    m_pMarkData = pdfium::MakeRetain<MarkData>();
-}
-
-void CPDF_ContentMark::DeleteLastMark() {
-  if (!m_pMarkData)
-    return;
-
-  m_pMarkData->DeleteLastMark();
-  if (CountItems() == 0)
-    m_pMarkData.Reset();
-}
-
-size_t CPDF_ContentMark::FindFirstDifference(
-    const CPDF_ContentMark* other) const {
-  if (m_pMarkData == other->m_pMarkData)
-    return CountItems();
-
-  size_t min_len = std::min(CountItems(), other->CountItems());
-
-  for (size_t i = 0; i < min_len; ++i) {
-    if (GetItem(i) != other->GetItem(i))
-      return i;
-  }
-  return min_len;
-}
-
-CPDF_ContentMark::MarkData::MarkData() {}
-
-CPDF_ContentMark::MarkData::MarkData(const MarkData& src)
-    : m_Marks(src.m_Marks) {}
-
-CPDF_ContentMark::MarkData::~MarkData() {}
-
-size_t CPDF_ContentMark::MarkData::CountItems() const {
-  return m_Marks.size();
-}
-
-bool CPDF_ContentMark::MarkData::ContainsItem(
-    const CPDF_ContentMarkItem* pItem) const {
-  for (const auto pMark : m_Marks) {
-    if (pMark.Get() == pItem)
-      return true;
-  }
-  return false;
-}
-
-CPDF_ContentMarkItem* CPDF_ContentMark::MarkData::GetItem(size_t index) {
-  return m_Marks[index].Get();
-}
-
-const CPDF_ContentMarkItem* CPDF_ContentMark::MarkData::GetItem(
-    size_t index) const {
-  return m_Marks[index].Get();
-}
-
-int CPDF_ContentMark::MarkData::GetMarkedContentID() const {
-  for (const auto pMark : m_Marks) {
-    const CPDF_Dictionary* pDict = pMark->GetParam();
-    if (pDict && pDict->KeyExist("MCID"))
-      return pDict->GetIntegerFor("MCID");
-  }
-  return -1;
-}
-
-void CPDF_ContentMark::MarkData::AddMark(ByteString name) {
-  auto pItem = pdfium::MakeRetain<CPDF_ContentMarkItem>(std::move(name));
-  m_Marks.push_back(pItem);
-}
-
-void CPDF_ContentMark::MarkData::AddMarkWithDirectDict(ByteString name,
-                                                       CPDF_Dictionary* pDict) {
-  auto pItem = pdfium::MakeRetain<CPDF_ContentMarkItem>(std::move(name));
-  pItem->SetDirectDict(ToDictionary(pDict->Clone()));
-  m_Marks.push_back(pItem);
-}
-
-void CPDF_ContentMark::MarkData::AddMarkWithPropertiesDict(
-    ByteString name,
-    CPDF_Dictionary* pDict,
-    const ByteString& property_name) {
-  auto pItem = pdfium::MakeRetain<CPDF_ContentMarkItem>(std::move(name));
-  pItem->SetPropertiesDict(pDict, property_name);
-  m_Marks.push_back(pItem);
-}
-
-bool CPDF_ContentMark::MarkData::RemoveMark(CPDF_ContentMarkItem* pMarkItem) {
-  for (auto it = m_Marks.begin(); it != m_Marks.end(); ++it) {
-    if (it->Get() == pMarkItem) {
-      m_Marks.erase(it);
-      return true;
-    }
-  }
-  return false;
-}
-
-void CPDF_ContentMark::MarkData::DeleteLastMark() {
-  if (!m_Marks.empty())
-    m_Marks.pop_back();
-}
diff --git a/core/fpdfapi/page/cpdf_contentmarks.cpp b/core/fpdfapi/page/cpdf_contentmarks.cpp
new file mode 100644
index 0000000..caaf6e3
--- /dev/null
+++ b/core/fpdfapi/page/cpdf_contentmarks.cpp
@@ -0,0 +1,172 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/page/cpdf_contentmarks.h"
+
+#include <algorithm>
+#include <utility>
+
+#include "core/fpdfapi/parser/cpdf_dictionary.h"
+#include "third_party/base/ptr_util.h"
+
+CPDF_ContentMarks::CPDF_ContentMarks() {}
+
+CPDF_ContentMarks::~CPDF_ContentMarks() {}
+
+std::unique_ptr<CPDF_ContentMarks> CPDF_ContentMarks::Clone() {
+  auto result = pdfium::MakeUnique<CPDF_ContentMarks>();
+  if (m_pMarkData)
+    result->m_pMarkData = pdfium::MakeRetain<MarkData>(*m_pMarkData);
+  return result;
+}
+
+size_t CPDF_ContentMarks::CountItems() const {
+  return m_pMarkData ? m_pMarkData->CountItems() : 0;
+}
+
+bool CPDF_ContentMarks::ContainsItem(const CPDF_ContentMarkItem* pItem) const {
+  return m_pMarkData && m_pMarkData->ContainsItem(pItem);
+}
+
+CPDF_ContentMarkItem* CPDF_ContentMarks::GetItem(size_t index) {
+  return const_cast<CPDF_ContentMarkItem*>(
+      static_cast<const CPDF_ContentMarks*>(this)->GetItem(index));
+}
+
+const CPDF_ContentMarkItem* CPDF_ContentMarks::GetItem(size_t index) const {
+  ASSERT(index < CountItems());
+  return m_pMarkData->GetItem(index);
+}
+
+int CPDF_ContentMarks::GetMarkedContentID() const {
+  return m_pMarkData ? m_pMarkData->GetMarkedContentID() : -1;
+}
+
+void CPDF_ContentMarks::AddMark(ByteString name) {
+  EnsureMarkDataExists();
+  m_pMarkData->AddMark(std::move(name));
+}
+
+void CPDF_ContentMarks::AddMarkWithDirectDict(ByteString name,
+                                              CPDF_Dictionary* pDict) {
+  EnsureMarkDataExists();
+  m_pMarkData->AddMarkWithDirectDict(std::move(name), pDict);
+}
+
+void CPDF_ContentMarks::AddMarkWithPropertiesDict(
+    ByteString name,
+    CPDF_Dictionary* pDict,
+    const ByteString& property_name) {
+  EnsureMarkDataExists();
+  m_pMarkData->AddMarkWithPropertiesDict(std::move(name), pDict, property_name);
+}
+
+bool CPDF_ContentMarks::RemoveMark(CPDF_ContentMarkItem* pMarkItem) {
+  return m_pMarkData && m_pMarkData->RemoveMark(pMarkItem);
+}
+
+void CPDF_ContentMarks::EnsureMarkDataExists() {
+  if (!m_pMarkData)
+    m_pMarkData = pdfium::MakeRetain<MarkData>();
+}
+
+void CPDF_ContentMarks::DeleteLastMark() {
+  if (!m_pMarkData)
+    return;
+
+  m_pMarkData->DeleteLastMark();
+  if (CountItems() == 0)
+    m_pMarkData.Reset();
+}
+
+size_t CPDF_ContentMarks::FindFirstDifference(
+    const CPDF_ContentMarks* other) const {
+  if (m_pMarkData == other->m_pMarkData)
+    return CountItems();
+
+  size_t min_len = std::min(CountItems(), other->CountItems());
+
+  for (size_t i = 0; i < min_len; ++i) {
+    if (GetItem(i) != other->GetItem(i))
+      return i;
+  }
+  return min_len;
+}
+
+CPDF_ContentMarks::MarkData::MarkData() {}
+
+CPDF_ContentMarks::MarkData::MarkData(const MarkData& src)
+    : m_Marks(src.m_Marks) {}
+
+CPDF_ContentMarks::MarkData::~MarkData() {}
+
+size_t CPDF_ContentMarks::MarkData::CountItems() const {
+  return m_Marks.size();
+}
+
+bool CPDF_ContentMarks::MarkData::ContainsItem(
+    const CPDF_ContentMarkItem* pItem) const {
+  for (const auto pMark : m_Marks) {
+    if (pMark.Get() == pItem)
+      return true;
+  }
+  return false;
+}
+
+CPDF_ContentMarkItem* CPDF_ContentMarks::MarkData::GetItem(size_t index) {
+  return m_Marks[index].Get();
+}
+
+const CPDF_ContentMarkItem* CPDF_ContentMarks::MarkData::GetItem(
+    size_t index) const {
+  return m_Marks[index].Get();
+}
+
+int CPDF_ContentMarks::MarkData::GetMarkedContentID() const {
+  for (const auto pMark : m_Marks) {
+    const CPDF_Dictionary* pDict = pMark->GetParam();
+    if (pDict && pDict->KeyExist("MCID"))
+      return pDict->GetIntegerFor("MCID");
+  }
+  return -1;
+}
+
+void CPDF_ContentMarks::MarkData::AddMark(ByteString name) {
+  auto pItem = pdfium::MakeRetain<CPDF_ContentMarkItem>(std::move(name));
+  m_Marks.push_back(pItem);
+}
+
+void CPDF_ContentMarks::MarkData::AddMarkWithDirectDict(
+    ByteString name,
+    CPDF_Dictionary* pDict) {
+  auto pItem = pdfium::MakeRetain<CPDF_ContentMarkItem>(std::move(name));
+  pItem->SetDirectDict(ToDictionary(pDict->Clone()));
+  m_Marks.push_back(pItem);
+}
+
+void CPDF_ContentMarks::MarkData::AddMarkWithPropertiesDict(
+    ByteString name,
+    CPDF_Dictionary* pDict,
+    const ByteString& property_name) {
+  auto pItem = pdfium::MakeRetain<CPDF_ContentMarkItem>(std::move(name));
+  pItem->SetPropertiesDict(pDict, property_name);
+  m_Marks.push_back(pItem);
+}
+
+bool CPDF_ContentMarks::MarkData::RemoveMark(CPDF_ContentMarkItem* pMarkItem) {
+  for (auto it = m_Marks.begin(); it != m_Marks.end(); ++it) {
+    if (it->Get() == pMarkItem) {
+      m_Marks.erase(it);
+      return true;
+    }
+  }
+  return false;
+}
+
+void CPDF_ContentMarks::MarkData::DeleteLastMark() {
+  if (!m_Marks.empty())
+    m_Marks.pop_back();
+}
diff --git a/core/fpdfapi/page/cpdf_contentmark.h b/core/fpdfapi/page/cpdf_contentmarks.h
similarity index 85%
rename from core/fpdfapi/page/cpdf_contentmark.h
rename to core/fpdfapi/page/cpdf_contentmarks.h
index 1395db1..335592b 100644
--- a/core/fpdfapi/page/cpdf_contentmark.h
+++ b/core/fpdfapi/page/cpdf_contentmarks.h
@@ -4,8 +4,8 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#ifndef CORE_FPDFAPI_PAGE_CPDF_CONTENTMARK_H_
-#define CORE_FPDFAPI_PAGE_CPDF_CONTENTMARK_H_
+#ifndef CORE_FPDFAPI_PAGE_CPDF_CONTENTMARKS_H_
+#define CORE_FPDFAPI_PAGE_CPDF_CONTENTMARKS_H_
 
 #include <memory>
 #include <vector>
@@ -16,12 +16,12 @@
 
 class CPDF_Dictionary;
 
-class CPDF_ContentMark {
+class CPDF_ContentMarks {
  public:
-  CPDF_ContentMark();
-  ~CPDF_ContentMark();
+  CPDF_ContentMarks();
+  ~CPDF_ContentMarks();
 
-  std::unique_ptr<CPDF_ContentMark> Clone();
+  std::unique_ptr<CPDF_ContentMarks> Clone();
   int GetMarkedContentID() const;
   size_t CountItems() const;
   bool ContainsItem(const CPDF_ContentMarkItem* pItem) const;
@@ -37,7 +37,7 @@
                                  const ByteString& property_name);
   bool RemoveMark(CPDF_ContentMarkItem* pMarkItem);
   void DeleteLastMark();
-  size_t FindFirstDifference(const CPDF_ContentMark* other) const;
+  size_t FindFirstDifference(const CPDF_ContentMarks* other) const;
 
  private:
   class MarkData final : public Retainable {
@@ -69,4 +69,4 @@
   RetainPtr<MarkData> m_pMarkData;
 };
 
-#endif  // CORE_FPDFAPI_PAGE_CPDF_CONTENTMARK_H_
+#endif  // CORE_FPDFAPI_PAGE_CPDF_CONTENTMARKS_H_
diff --git a/core/fpdfapi/page/cpdf_pageobject.h b/core/fpdfapi/page/cpdf_pageobject.h
index 013ef0d..6bbaff3 100644
--- a/core/fpdfapi/page/cpdf_pageobject.h
+++ b/core/fpdfapi/page/cpdf_pageobject.h
@@ -7,7 +7,7 @@
 #ifndef CORE_FPDFAPI_PAGE_CPDF_PAGEOBJECT_H_
 #define CORE_FPDFAPI_PAGE_CPDF_PAGEOBJECT_H_
 
-#include "core/fpdfapi/page/cpdf_contentmark.h"
+#include "core/fpdfapi/page/cpdf_contentmarks.h"
 #include "core/fpdfapi/page/cpdf_graphicstates.h"
 #include "core/fxcrt/fx_coordinates.h"
 #include "core/fxcrt/fx_system.h"
@@ -74,7 +74,7 @@
     m_ContentStream = new_content_stream;
   }
 
-  CPDF_ContentMark m_ContentMark;
+  CPDF_ContentMarks m_ContentMarks;
 
  protected:
   void CopyData(const CPDF_PageObject* pSrcObject);
diff --git a/core/fpdfapi/page/cpdf_streamcontentparser.cpp b/core/fpdfapi/page/cpdf_streamcontentparser.cpp
index b381705..d84d4d6 100644
--- a/core/fpdfapi/page/cpdf_streamcontentparser.cpp
+++ b/core/fpdfapi/page/cpdf_streamcontentparser.cpp
@@ -290,7 +290,7 @@
   }
 
   // Add the sentinel.
-  m_ContentMarksStack.push(pdfium::MakeUnique<CPDF_ContentMark>());
+  m_ContentMarksStack.push(pdfium::MakeUnique<CPDF_ContentMarks>());
 }
 
 CPDF_StreamContentParser::~CPDF_StreamContentParser() {
@@ -428,7 +428,7 @@
                                                 bool bGraph) {
   pObj->m_GeneralState = m_pCurStates->m_GeneralState;
   pObj->m_ClipPath = m_pCurStates->m_ClipPath;
-  pObj->m_ContentMark = *m_ContentMarksStack.top();
+  pObj->m_ContentMarks = *m_ContentMarksStack.top();
   if (bColor) {
     pObj->m_ColorState = m_pCurStates->m_ColorState;
   }
@@ -602,7 +602,7 @@
       return;
   }
   if (CPDF_Dictionary* pDict = pProperty->AsDictionary()) {
-    std::unique_ptr<CPDF_ContentMark> new_marks =
+    std::unique_ptr<CPDF_ContentMarks> new_marks =
         m_ContentMarksStack.top()->Clone();
     if (bIndirect) {
       new_marks->AddMarkWithPropertiesDict(std::move(tag), pDict,
@@ -675,7 +675,7 @@
 }
 
 void CPDF_StreamContentParser::Handle_BeginMarkedContent() {
-  std::unique_ptr<CPDF_ContentMark> new_marks =
+  std::unique_ptr<CPDF_ContentMarks> new_marks =
       m_ContentMarksStack.top()->Clone();
   new_marks->AddMark(GetString(0));
   m_ContentMarksStack.push(std::move(new_marks));
diff --git a/core/fpdfapi/page/cpdf_streamcontentparser.h b/core/fpdfapi/page/cpdf_streamcontentparser.h
index d9239fd..05556ff 100644
--- a/core/fpdfapi/page/cpdf_streamcontentparser.h
+++ b/core/fpdfapi/page/cpdf_streamcontentparser.h
@@ -13,7 +13,7 @@
 #include <stack>
 #include <vector>
 
-#include "core/fpdfapi/page/cpdf_contentmark.h"
+#include "core/fpdfapi/page/cpdf_contentmarks.h"
 #include "core/fpdfapi/parser/cpdf_stream.h"
 #include "core/fxcrt/fx_number.h"
 #include "core/fxcrt/fx_string.h"
@@ -213,7 +213,7 @@
   uint32_t m_ParamCount;
   UnownedPtr<CPDF_StreamParser> m_pSyntax;
   std::unique_ptr<CPDF_AllStates> m_pCurStates;
-  std::stack<std::unique_ptr<CPDF_ContentMark>> m_ContentMarksStack;
+  std::stack<std::unique_ptr<CPDF_ContentMarks>> m_ContentMarksStack;
   std::vector<std::unique_ptr<CPDF_TextObject>> m_ClipTextList;
   UnownedPtr<CPDF_TextObject> m_pLastTextObject;
   float m_DefFontSize;
diff --git a/core/fpdfdoc/cpdf_occontext.cpp b/core/fpdfdoc/cpdf_occontext.cpp
index f1a83b0..4116fdb 100644
--- a/core/fpdfdoc/cpdf_occontext.cpp
+++ b/core/fpdfdoc/cpdf_occontext.cpp
@@ -182,8 +182,8 @@
 }
 
 bool CPDF_OCContext::CheckObjectVisible(const CPDF_PageObject* pObj) {
-  for (size_t i = 0; i < pObj->m_ContentMark.CountItems(); ++i) {
-    const CPDF_ContentMarkItem* item = pObj->m_ContentMark.GetItem(i);
+  for (size_t i = 0; i < pObj->m_ContentMarks.CountItems(); ++i) {
+    const CPDF_ContentMarkItem* item = pObj->m_ContentMarks.GetItem(i);
     if (item->GetName() == "OC" &&
         item->GetParamType() == CPDF_ContentMarkItem::PropertiesDict &&
         !CheckOCGVisible(item->GetParam())) {
diff --git a/core/fpdftext/cpdf_textpage.cpp b/core/fpdftext/cpdf_textpage.cpp
index 77eae4d..259167b 100644
--- a/core/fpdftext/cpdf_textpage.cpp
+++ b/core/fpdftext/cpdf_textpage.cpp
@@ -820,15 +820,15 @@
 
 FPDFText_MarkedContent CPDF_TextPage::PreMarkedContent(PDFTEXT_Obj Obj) {
   CPDF_TextObject* pTextObj = Obj.m_pTextObj.Get();
-  size_t nContentMark = pTextObj->m_ContentMark.CountItems();
-  if (nContentMark == 0)
+  size_t nContentMarks = pTextObj->m_ContentMarks.CountItems();
+  if (nContentMarks == 0)
     return FPDFText_MarkedContent::Pass;
 
   WideString actText;
   bool bExist = false;
   const CPDF_Dictionary* pDict = nullptr;
-  for (size_t i = 0; i < nContentMark; ++i) {
-    const CPDF_ContentMarkItem* item = pTextObj->m_ContentMark.GetItem(i);
+  for (size_t i = 0; i < nContentMarks; ++i) {
+    const CPDF_ContentMarkItem* item = pTextObj->m_ContentMarks.GetItem(i);
     pDict = item->GetParam();
     if (!pDict)
       continue;
@@ -842,9 +842,9 @@
     return FPDFText_MarkedContent::Pass;
 
   if (m_pPreTextObj) {
-    const CPDF_ContentMark& mark = m_pPreTextObj->m_ContentMark;
-    if (mark.CountItems() == nContentMark &&
-        mark.GetItem(nContentMark - 1)->GetParam() == pDict) {
+    const CPDF_ContentMarks& marks = m_pPreTextObj->m_ContentMarks;
+    if (marks.CountItems() == nContentMarks &&
+        marks.GetItem(nContentMarks - 1)->GetParam() == pDict) {
       return FPDFText_MarkedContent::Done;
     }
   }
@@ -880,13 +880,13 @@
 void CPDF_TextPage::ProcessMarkedContent(PDFTEXT_Obj Obj) {
   CPDF_TextObject* pTextObj = Obj.m_pTextObj.Get();
 
-  size_t nContentMark = pTextObj->m_ContentMark.CountItems();
-  if (nContentMark == 0)
+  size_t nContentMarks = pTextObj->m_ContentMarks.CountItems();
+  if (nContentMarks == 0)
     return;
 
   WideString actText;
-  for (size_t n = 0; n < nContentMark; ++n) {
-    const CPDF_ContentMarkItem* item = pTextObj->m_ContentMark.GetItem(n);
+  for (size_t n = 0; n < nContentMarks; ++n) {
+    const CPDF_ContentMarkItem* item = pTextObj->m_ContentMarks.GetItem(n);
     const CPDF_Dictionary* pDict = item->GetParam();
     if (pDict)
       actText = pDict->GetUnicodeTextFor("ActualText");
diff --git a/fpdfsdk/fpdf_editimg.cpp b/fpdfsdk/fpdf_editimg.cpp
index 231ec6d..aaa1c46 100644
--- a/fpdfsdk/fpdf_editimg.cpp
+++ b/fpdfsdk/fpdf_editimg.cpp
@@ -292,7 +292,7 @@
   if (!pImg)
     return false;
 
-  metadata->marked_content_id = pObj->m_ContentMark.GetMarkedContentID();
+  metadata->marked_content_id = pObj->m_ContentMarks.GetMarkedContentID();
 
   const int nPixelWidth = pImg->GetPixelWidth();
   const int nPixelHeight = pImg->GetPixelHeight();
diff --git a/fpdfsdk/fpdf_editpage.cpp b/fpdfsdk/fpdf_editpage.cpp
index 17a6b63..77d0305 100644
--- a/fpdfsdk/fpdf_editpage.cpp
+++ b/fpdfsdk/fpdf_editpage.cpp
@@ -130,7 +130,7 @@
                             FPDF_PAGEOBJECTMARK mark) {
   const CPDF_ContentMarkItem* pMarkItem =
       CPDFContentMarkItemFromFPDFPageObjectMark(mark);
-  return pMarkItem && pPageObj->m_ContentMark.ContainsItem(pMarkItem);
+  return pMarkItem && pPageObj->m_ContentMarks.ContainsItem(pMarkItem);
 }
 
 unsigned int GetUnsignedAlpha(float alpha) {
@@ -301,7 +301,7 @@
     return -1;
 
   const auto& mark =
-      CPDFPageObjectFromFPDFPageObject(page_object)->m_ContentMark;
+      CPDFPageObjectFromFPDFPageObject(page_object)->m_ContentMarks;
   return mark.CountItems();
 }
 
@@ -310,7 +310,7 @@
   if (!page_object)
     return nullptr;
 
-  auto* mark = &CPDFPageObjectFromFPDFPageObject(page_object)->m_ContentMark;
+  auto* mark = &CPDFPageObjectFromFPDFPageObject(page_object)->m_ContentMarks;
   if (index >= mark->CountItems())
     return nullptr;
 
@@ -323,7 +323,7 @@
   if (!pPageObj)
     return nullptr;
 
-  auto* mark = &pPageObj->m_ContentMark;
+  auto* mark = &pPageObj->m_ContentMarks;
   mark->AddMark(name);
   unsigned long index = mark->CountItems() - 1;
 
@@ -340,7 +340,7 @@
   if (!pPageObj || !pMarkItem)
     return false;
 
-  bool result = pPageObj->m_ContentMark.RemoveMark(pMarkItem);
+  bool result = pPageObj->m_ContentMarks.RemoveMark(pMarkItem);
   if (result)
     pPageObj->SetDirty(true);