Make some CPDF_Parser methods private or mark them as ForTesting

Encapsulate more code.

Change-Id: I8a7516028a2417d1fbee11fa01d796e3951786cd
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/122650
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Tom Sepez <tsepez@google.com>
diff --git a/core/fpdfapi/parser/cpdf_parser.h b/core/fpdfapi/parser/cpdf_parser.h
index d659c9b..9f8b985 100644
--- a/core/fpdfapi/parser/cpdf_parser.h
+++ b/core/fpdfapi/parser/cpdf_parser.h
@@ -67,7 +67,6 @@
   Error StartLinearizedParse(RetainPtr<CPDF_ReadValidator> validator,
                              const ByteString& password);
 
-  void SetPassword(const ByteString& password) { m_Password = password; }
   ByteString GetPassword() const { return m_Password; }
 
   // Take the GetPassword() value and encode it, if necessary, based on the
@@ -75,7 +74,6 @@
   ByteString GetEncodedPassword() const;
 
   const CPDF_Dictionary* GetTrailer() const;
-  CPDF_Dictionary* GetMutableTrailerForTesting();
   uint32_t GetTrailerObjectNumber() const;
 
   // Returns a new trailer which combines the last read trailer with the /Root
@@ -88,7 +86,6 @@
   uint32_t GetRootObjNum() const;
   uint32_t GetInfoObjNum() const;
   RetainPtr<const CPDF_Array> GetIDArray() const;
-  RetainPtr<const CPDF_Dictionary> GetRoot() const;
   RetainPtr<const CPDF_Dictionary> GetEncryptDict() const;
 
   RetainPtr<CPDF_Object> ParseIndirectObject(uint32_t objnum);
@@ -104,24 +101,27 @@
   int GetFileVersion() const { return m_FileVersion; }
   bool IsXRefStream() const { return m_bXRefStream; }
 
-  RetainPtr<CPDF_Object> ParseIndirectObjectAt(FX_FILESIZE pos,
-                                               uint32_t objnum);
-
   FX_FILESIZE GetDocumentSize() const;
   uint32_t GetFirstPageNo() const;
   const CPDF_LinearizedHeader* GetLinearizedHeader() const {
     return m_pLinearized.get();
   }
 
-  const CPDF_CrossRefTable* GetCrossRefTable() const {
-    return m_CrossRefTable.get();
-  }
-
   bool xref_table_rebuilt() const { return m_bXRefTableRebuilt; }
 
   std::vector<unsigned int> GetTrailerEnds();
   bool WriteToArchive(IFX_ArchiveStream* archive, FX_FILESIZE src_size);
 
+  const CPDF_CrossRefTable* GetCrossRefTableForTesting() const {
+    return m_CrossRefTable.get();
+  }
+
+  CPDF_Dictionary* GetMutableTrailerForTesting();
+
+  RetainPtr<CPDF_Object> ParseIndirectObjectAtForTesting(FX_FILESIZE pos) {
+    return ParseIndirectObjectAt(pos, 0);
+  }
+
   void SetLinearizedHeaderForTesting(
       std::unique_ptr<CPDF_LinearizedHeader> pLinearized);
 
@@ -157,11 +157,17 @@
   bool LoadLinearizedAllCrossRefTable(FX_FILESIZE main_xref_offset);
   bool LoadLinearizedAllCrossRefStream(FX_FILESIZE main_xref_offset);
   Error LoadLinearizedMainXRefTable();
+
   const CPDF_ObjectStream* GetObjectStream(uint32_t object_number);
+  RetainPtr<const CPDF_Dictionary> GetRoot() const;
+
   // A simple check whether the cross reference table matches with
   // the objects.
   bool VerifyCrossRefTable();
 
+  RetainPtr<CPDF_Object> ParseIndirectObjectAt(FX_FILESIZE pos,
+                                               uint32_t objnum);
+
   // If out_objects is null, the parser position will be moved to end subsection
   // without additional validation.
   bool ParseAndAppendCrossRefSubsectionData(
@@ -173,6 +179,7 @@
 
   bool InitSyntaxParser(RetainPtr<CPDF_ReadValidator> validator);
   bool ParseFileVersion();
+  void SetPassword(const ByteString& password) { m_Password = password; }
 
   std::unique_ptr<CPDF_SyntaxParser> m_pSyntax;
   std::unique_ptr<ParsedObjectsHolder> m_pOwnedObjectsHolder;
diff --git a/core/fpdfapi/parser/cpdf_parser_unittest.cpp b/core/fpdfapi/parser/cpdf_parser_unittest.cpp
index f915e26..5af3e9f 100644
--- a/core/fpdfapi/parser/cpdf_parser_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_parser_unittest.cpp
@@ -38,7 +38,8 @@
 
 CPDF_CrossRefTable::ObjectInfo GetObjInfo(const CPDF_Parser& parser,
                                           uint32_t obj_num) {
-  const auto* info = parser.GetCrossRefTable()->GetObjectInfo(obj_num);
+  const auto* info =
+      parser.GetCrossRefTableForTesting()->GetObjectInfo(obj_num);
   return info ? *info : CPDF_CrossRefTable::ObjectInfo();
 }
 
@@ -159,7 +160,9 @@
   for (size_t i = 0; i < std::size(versions); ++i) {
     EXPECT_EQ(versions[i], GetObjInfo(parser, i).gennum);
   }
-  const CPDF_CrossRefTable* cross_ref_table = parser.GetCrossRefTable();
+
+  const CPDF_CrossRefTable* cross_ref_table =
+      parser.GetCrossRefTableForTesting();
   ASSERT_TRUE(cross_ref_table);
   EXPECT_EQ(0u, cross_ref_table->trailer_object_number());
 }
@@ -336,7 +339,7 @@
 
   EXPECT_EQ(100940, parser.ParseStartXRef());
   RetainPtr<CPDF_Object> cross_ref_stream_obj =
-      parser.ParseIndirectObjectAt(100940, 0);
+      parser.ParseIndirectObjectAtForTesting(100940);
   ASSERT_TRUE(cross_ref_stream_obj);
   EXPECT_EQ(75u, cross_ref_stream_obj->GetObjNum());
 }
@@ -358,7 +361,7 @@
 
   EXPECT_EQ(100940, parser.ParseStartXRef());
   RetainPtr<CPDF_Object> cross_ref_stream_obj =
-      parser.ParseIndirectObjectAt(100940, 0);
+      parser.ParseIndirectObjectAtForTesting(100940);
   ASSERT_TRUE(cross_ref_stream_obj);
   EXPECT_EQ(75u, cross_ref_stream_obj->GetObjNum());
 }
@@ -379,7 +382,8 @@
   parser.InitTestFromBufferWithOffset(data, kTestHeaderOffset);
   EXPECT_TRUE(parser.ParseLinearizedHeader());
 
-  const CPDF_CrossRefTable* cross_ref_table = parser.GetCrossRefTable();
+  const CPDF_CrossRefTable* cross_ref_table =
+      parser.GetCrossRefTableForTesting();
   ASSERT_TRUE(cross_ref_table);
   EXPECT_EQ(0u, cross_ref_table->trailer_object_number());
 }
@@ -397,8 +401,8 @@
   CPDF_TestParser parser;
   ASSERT_TRUE(parser.InitTestFromBuffer(kData));
   EXPECT_EQ(CPDF_Parser::FORMAT_ERROR, parser.StartParseInternal());
-  ASSERT_TRUE(parser.GetCrossRefTable());
-  EXPECT_EQ(0u, parser.GetCrossRefTable()->objects_info().size());
+  ASSERT_TRUE(parser.GetCrossRefTableForTesting());
+  EXPECT_EQ(0u, parser.GetCrossRefTableForTesting()->objects_info().size());
 }
 
 class ParserXRefTest : public testing::Test {
@@ -448,8 +452,9 @@
   ASSERT_TRUE(parser().InitTestFromBuffer(kData));
   EXPECT_EQ(CPDF_Parser::SUCCESS, parser().StartParseInternal());
   EXPECT_FALSE(parser().xref_table_rebuilt());
-  ASSERT_TRUE(parser().GetCrossRefTable());
-  const auto& objects_info = parser().GetCrossRefTable()->objects_info();
+  ASSERT_TRUE(parser().GetCrossRefTableForTesting());
+  const auto& objects_info =
+      parser().GetCrossRefTableForTesting()->objects_info();
 
   // This should be the only object from table. Subsequent objects have object
   // numbers that are too big.
@@ -489,7 +494,8 @@
   EXPECT_EQ(CPDF_Parser::SUCCESS, parser().StartParseInternal());
   EXPECT_FALSE(parser().xref_table_rebuilt());
 
-  const CPDF_CrossRefTable* cross_ref_table = parser().GetCrossRefTable();
+  const CPDF_CrossRefTable* cross_ref_table =
+      parser().GetCrossRefTableForTesting();
   ASSERT_TRUE(cross_ref_table);
   EXPECT_EQ(7u, cross_ref_table->trailer_object_number());
   const auto& objects_info = cross_ref_table->objects_info();
@@ -626,8 +632,9 @@
   ASSERT_TRUE(parser().InitTestFromBuffer(kData));
   EXPECT_EQ(CPDF_Parser::SUCCESS, parser().StartParseInternal());
   EXPECT_FALSE(parser().xref_table_rebuilt());
-  ASSERT_TRUE(parser().GetCrossRefTable());
-  const auto& objects_info = parser().GetCrossRefTable()->objects_info();
+  ASSERT_TRUE(parser().GetCrossRefTableForTesting());
+  const auto& objects_info =
+      parser().GetCrossRefTableForTesting()->objects_info();
 
   CPDF_CrossRefTable::ObjectInfo expected_result[2] = {
       {.type = CPDF_CrossRefTable::ObjectType::kNormal, .pos = 15},
@@ -664,8 +671,9 @@
   ASSERT_TRUE(parser().InitTestFromBuffer(kData));
   EXPECT_EQ(CPDF_Parser::SUCCESS, parser().StartParseInternal());
   EXPECT_FALSE(parser().xref_table_rebuilt());
-  ASSERT_TRUE(parser().GetCrossRefTable());
-  const auto& objects_info = parser().GetCrossRefTable()->objects_info();
+  ASSERT_TRUE(parser().GetCrossRefTableForTesting());
+  const auto& objects_info =
+      parser().GetCrossRefTableForTesting()->objects_info();
 
   CPDF_CrossRefTable::ObjectInfo expected_result[6] = {
       {.type = CPDF_CrossRefTable::ObjectType::kNormal, .pos = 0},
@@ -706,8 +714,9 @@
   ASSERT_TRUE(parser().InitTestFromBuffer(kData));
   EXPECT_EQ(CPDF_Parser::SUCCESS, parser().StartParseInternal());
   EXPECT_FALSE(parser().xref_table_rebuilt());
-  ASSERT_TRUE(parser().GetCrossRefTable());
-  const auto& objects_info = parser().GetCrossRefTable()->objects_info();
+  ASSERT_TRUE(parser().GetCrossRefTableForTesting());
+  const auto& objects_info =
+      parser().GetCrossRefTableForTesting()->objects_info();
 
   CPDF_CrossRefTable::ObjectInfo expected_result[2] = {
       {.type = CPDF_CrossRefTable::ObjectType::kNormal, .pos = 0},
@@ -743,8 +752,9 @@
   ASSERT_TRUE(parser().InitTestFromBuffer(kData));
   EXPECT_EQ(CPDF_Parser::SUCCESS, parser().StartParseInternal());
   EXPECT_FALSE(parser().xref_table_rebuilt());
-  ASSERT_TRUE(parser().GetCrossRefTable());
-  const auto& objects_info = parser().GetCrossRefTable()->objects_info();
+  ASSERT_TRUE(parser().GetCrossRefTableForTesting());
+  const auto& objects_info =
+      parser().GetCrossRefTableForTesting()->objects_info();
 
   // Although the /Index does not follow the spec, the parser tolerates it.
   CPDF_CrossRefTable::ObjectInfo expected_result[3] = {
@@ -782,8 +792,9 @@
   ASSERT_TRUE(parser().InitTestFromBuffer(kData));
   EXPECT_EQ(CPDF_Parser::SUCCESS, parser().StartParseInternal());
   EXPECT_FALSE(parser().xref_table_rebuilt());
-  ASSERT_TRUE(parser().GetCrossRefTable());
-  const auto& objects_info = parser().GetCrossRefTable()->objects_info();
+  ASSERT_TRUE(parser().GetCrossRefTableForTesting());
+  const auto& objects_info =
+      parser().GetCrossRefTableForTesting()->objects_info();
 
   const CPDF_CrossRefTable::ObjectInfo expected_result[3] = {
       {.type = CPDF_CrossRefTable::ObjectType::kNormal, .pos = 0},