Fix nits in CPDF_Document.

- Make most of the protected section private.
- Remove unneeded headers and forward declarations.

Change-Id: I963171a67c94da86ffb2df2acb99e95592e132b2
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/67595
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/parser/cpdf_document.cpp b/core/fpdfapi/parser/cpdf_document.cpp
index 9991e3a..467f8a5 100644
--- a/core/fpdfapi/parser/cpdf_document.cpp
+++ b/core/fpdfapi/parser/cpdf_document.cpp
@@ -6,11 +6,6 @@
 
 #include "core/fpdfapi/parser/cpdf_document.h"
 
-#include <set>
-#include <utility>
-#include <vector>
-
-#include "build/build_config.h"
 #include "core/fpdfapi/parser/cpdf_array.h"
 #include "core/fpdfapi/parser/cpdf_dictionary.h"
 #include "core/fpdfapi/parser/cpdf_linearized_header.h"
@@ -19,9 +14,6 @@
 #include "core/fpdfapi/parser/cpdf_parser.h"
 #include "core/fpdfapi/parser/cpdf_read_validator.h"
 #include "core/fpdfapi/parser/cpdf_reference.h"
-#include "core/fpdfapi/parser/cpdf_stream.h"
-#include "core/fpdfapi/parser/cpdf_stream_acc.h"
-#include "core/fpdfapi/parser/cpdf_string.h"
 #include "core/fxcodec/jbig2/JBig2_DocumentContext.h"
 #include "core/fxcrt/fx_codepage.h"
 #include "third_party/base/ptr_util.h"
@@ -67,9 +59,7 @@
     if (objnum == pNode->GetObjNum())
       return *index;
 
-    if (*skip_count)
-      (*skip_count)--;
-
+    (*skip_count)--;
     (*index)++;
     return -1;
   }
@@ -294,10 +284,9 @@
 }
 
 int CPDF_Document::GetPageIndex(uint32_t objnum) {
-  uint32_t nPages = m_PageList.size();
   uint32_t skip_count = 0;
   bool bSkipped = false;
-  for (uint32_t i = 0; i < nPages; i++) {
+  for (uint32_t i = 0; i < m_PageList.size(); ++i) {
     if (m_PageList[i] == objnum)
       return i;
 
@@ -473,6 +462,14 @@
   m_PageList.erase(m_PageList.begin() + iPage);
 }
 
+void CPDF_Document::SetRootForTesting(CPDF_Dictionary* root) {
+  m_pRootDict.Reset(root);
+}
+
+void CPDF_Document::ResizePageListForTesting(size_t size) {
+  m_PageList.resize(size);
+}
+
 CPDF_Document::StockFontClearer::StockFontClearer(
     CPDF_Document::PageDataIface* pPageData)
     : m_pPageData(pPageData) {}
diff --git a/core/fpdfapi/parser/cpdf_document.h b/core/fpdfapi/parser/cpdf_document.h
index 26be5ea..abffb81 100644
--- a/core/fpdfapi/parser/cpdf_document.h
+++ b/core/fpdfapi/parser/cpdf_document.h
@@ -7,22 +7,16 @@
 #ifndef CORE_FPDFAPI_PARSER_CPDF_DOCUMENT_H_
 #define CORE_FPDFAPI_PARSER_CPDF_DOCUMENT_H_
 
-#include <functional>
 #include <memory>
 #include <set>
 #include <utility>
 #include <vector>
 
-#include "build/build_config.h"
-#include "core/fpdfapi/parser/cpdf_object.h"
 #include "core/fpdfapi/parser/cpdf_parser.h"
 #include "core/fxcrt/observed_ptr.h"
 #include "core/fxcrt/retain_ptr.h"
 #include "core/fxcrt/unowned_ptr.h"
 
-class CFX_Matrix;
-class CPDF_LinearizedHeader;
-class CPDF_Object;
 class CPDF_ReadValidator;
 class CPDF_StreamAcc;
 class IFX_SeekableReadStream;
@@ -116,8 +110,9 @@
     m_pLinksContext = std::move(pContext);
   }
 
-  //  CPDF_Parser::ParsedObjectsHolder overrides:
+  // CPDF_Parser::ParsedObjectsHolder:
   bool TryInit() override;
+  RetainPtr<CPDF_Object> ParseIndirectObject(uint32_t objnum) override;
 
   CPDF_Parser::Error LoadDoc(
       const RetainPtr<IFX_SeekableReadStream>& pFileAccess,
@@ -137,6 +132,12 @@
   uint32_t GetParsedPageCountForTesting() { return m_ParsedPageCount; }
 
  protected:
+  void SetParser(std::unique_ptr<CPDF_Parser> pParser);
+
+  void SetRootForTesting(CPDF_Dictionary* root);
+  void ResizePageListForTesting(size_t size);
+
+ private:
   class StockFontClearer {
    public:
     explicit StockFontClearer(CPDF_Document::PageDataIface* pPageData);
@@ -150,9 +151,10 @@
   int RetrievePageCount();
   // When this method is called, m_pTreeTraversal[level] exists.
   CPDF_Dictionary* TraversePDFPages(int iPage, int* nPagesToGo, size_t level);
-  RetainPtr<CPDF_Object> ParseIndirectObject(uint32_t objnum) override;
+
   const CPDF_Dictionary* GetPagesDict() const;
   CPDF_Dictionary* GetPagesDict();
+
   bool InsertDeletePDFPage(CPDF_Dictionary* pPages,
                            int nPagesToGo,
                            CPDF_Dictionary* pPageDict,
@@ -160,7 +162,6 @@
                            std::set<CPDF_Dictionary*>* pVisited);
   bool InsertNewPage(int iPage, CPDF_Dictionary* pPageDict);
   void ResetTraversal();
-  void SetParser(std::unique_ptr<CPDF_Parser> pParser);
   CPDF_Parser::Error HandleLoadResult(CPDF_Parser::Error error);
 
   std::unique_ptr<CPDF_Parser> m_pParser;
diff --git a/core/fpdfapi/parser/cpdf_document_unittest.cpp b/core/fpdfapi/parser/cpdf_document_unittest.cpp
index 1c52e51..c49a77a 100644
--- a/core/fpdfapi/parser/cpdf_document_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_document_unittest.cpp
@@ -90,15 +90,14 @@
     CPDF_Dictionary* pagesDict =
         CreatePageTreeNode(std::move(allPages), this, kNumTestPages);
 
-    m_pRootDict.Reset(NewIndirect<CPDF_Dictionary>());
-    m_pRootDict->SetNewFor<CPDF_Reference>("Pages", this,
-                                           pagesDict->GetObjNum());
-    m_PageList.resize(kNumTestPages);
+    SetRootForTesting(NewIndirect<CPDF_Dictionary>());
+    GetRoot()->SetNewFor<CPDF_Reference>("Pages", this, pagesDict->GetObjNum());
+    ResizePageListForTesting(kNumTestPages);
   }
 
   void SetTreeSize(int size) {
-    m_pRootDict->SetNewFor<CPDF_Number>("Count", size);
-    m_PageList.resize(size);
+    GetRoot()->SetNewFor<CPDF_Number>("Count", size);
+    ResizePageListForTesting(size);
   }
 };
 
@@ -117,10 +116,9 @@
     inlined_page_ = allPages->Add(CreateNumberedPage(2));
     CPDF_Dictionary* pagesDict =
         CreatePageTreeNode(std::move(allPages), this, 3);
-    m_pRootDict.Reset(NewIndirect<CPDF_Dictionary>());
-    m_pRootDict->SetNewFor<CPDF_Reference>("Pages", this,
-                                           pagesDict->GetObjNum());
-    m_PageList.resize(3);
+    SetRootForTesting(NewIndirect<CPDF_Dictionary>());
+    GetRoot()->SetNewFor<CPDF_Reference>("Pages", this, pagesDict->GetObjNum());
+    ResizePageListForTesting(3);
   }
 
   const CPDF_Object* inlined_page() const { return inlined_page_; }
@@ -143,10 +141,9 @@
     CPDF_Dictionary* pagesDict = NewIndirect<CPDF_Dictionary>();
     pagesDict->SetNewFor<CPDF_Name>("Type", "Pages");
     pagesDict->SetNewFor<CPDF_Number>("Count", 3);
-    m_PageList.resize(10);
-    m_pRootDict.Reset(NewIndirect<CPDF_Dictionary>());
-    m_pRootDict->SetNewFor<CPDF_Reference>("Pages", this,
-                                           pagesDict->GetObjNum());
+    ResizePageListForTesting(10);
+    SetRootForTesting(NewIndirect<CPDF_Dictionary>());
+    GetRoot()->SetNewFor<CPDF_Reference>("Pages", this, pagesDict->GetObjNum());
   }
 };
 
diff --git a/fpdfsdk/fpdf_catalog_unittest.cpp b/fpdfsdk/fpdf_catalog_unittest.cpp
index 68655da..1ae35b2 100644
--- a/fpdfsdk/fpdf_catalog_unittest.cpp
+++ b/fpdfsdk/fpdf_catalog_unittest.cpp
@@ -25,7 +25,7 @@
       : CPDF_Document(pdfium::MakeUnique<CPDF_DocRenderData>(),
                       pdfium::MakeUnique<CPDF_DocPageData>()) {}
 
-  void SetRoot(CPDF_Dictionary* root) { m_pRootDict.Reset(root); }
+  void SetRoot(CPDF_Dictionary* root) { SetRootForTesting(root); }
 };
 
 class PDFCatalogTest : public testing::Test {
diff --git a/fpdfsdk/fpdf_doc_unittest.cpp b/fpdfsdk/fpdf_doc_unittest.cpp
index 2beadd4..1c673df 100644
--- a/fpdfsdk/fpdf_doc_unittest.cpp
+++ b/fpdfsdk/fpdf_doc_unittest.cpp
@@ -32,7 +32,7 @@
       : CPDF_Document(pdfium::MakeUnique<CPDF_DocRenderData>(),
                       pdfium::MakeUnique<CPDF_DocPageData>()) {}
 
-  void SetRoot(CPDF_Dictionary* root) { m_pRootDict.Reset(root); }
+  void SetRoot(CPDF_Dictionary* root) { SetRootForTesting(root); }
   CPDF_IndirectObjectHolder* GetHolder() { return this; }
 };