Revert "Track indirect object holder in more CPDF_ objects."

This reverts commit 69f086d657df631598bf111543c10f226be3d689.

Reason for revert: presumably breaking roll into chromium, pdf_unittests.

Original change's description:
> Track indirect object holder in more CPDF_ objects.
> 
> Change-Id: I4aa177089fe289b34b6ad3b7edcf9a8ca8c53a38
> Reviewed-on: https://pdfium-review.googlesource.com/c/45430
> Reviewed-by: Lei Zhang <thestig@chromium.org>
> Commit-Queue: Tom Sepez <tsepez@chromium.org>

TBR=thestig@chromium.org,tsepez@chromium.org

Change-Id: Ib1c282566a6ec7b9cc3a84ea710e7204ab2542bf
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://pdfium-review.googlesource.com/c/45571
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/font/cpdf_fontencoding.cpp b/core/fpdfapi/font/cpdf_fontencoding.cpp
index b5e254a..22950f6 100644
--- a/core/fpdfapi/font/cpdf_fontencoding.cpp
+++ b/core/fpdfapi/font/cpdf_fontencoding.cpp
@@ -10,7 +10,6 @@
 
 #include "core/fpdfapi/parser/cpdf_array.h"
 #include "core/fpdfapi/parser/cpdf_dictionary.h"
-#include "core/fpdfapi/parser/cpdf_indirect_object_holder.h"
 #include "core/fpdfapi/parser/cpdf_name.h"
 #include "core/fpdfapi/parser/cpdf_number.h"
 #include "core/fpdfapi/parser/fpdf_parser_decode.h"
@@ -1682,7 +1681,7 @@
 }
 
 std::unique_ptr<CPDF_Object> CPDF_FontEncoding::Realize(
-    CPDF_IndirectObjectHolder* pHolder) {
+    WeakPtr<ByteStringPool> pPool) {
   int predefined = 0;
   for (int cs = PDFFONT_ENCODING_WINANSI; cs < PDFFONT_ENCODING_ZAPFDINGBATS;
        cs++) {
@@ -1700,18 +1699,13 @@
     }
   }
   if (predefined) {
-    if (predefined == PDFFONT_ENCODING_WINANSI) {
-      return pdfium::MakeUnique<CPDF_Name>(pHolder->GetByteStringPool(),
-                                           "WinAnsiEncoding");
-    }
-    if (predefined == PDFFONT_ENCODING_MACROMAN) {
-      return pdfium::MakeUnique<CPDF_Name>(pHolder->GetByteStringPool(),
-                                           "MacRomanEncoding");
-    }
-    if (predefined == PDFFONT_ENCODING_MACEXPERT) {
-      return pdfium::MakeUnique<CPDF_Name>(pHolder->GetByteStringPool(),
-                                           "MacExpertEncoding");
-    }
+    if (predefined == PDFFONT_ENCODING_WINANSI)
+      return pdfium::MakeUnique<CPDF_Name>(pPool, "WinAnsiEncoding");
+    if (predefined == PDFFONT_ENCODING_MACROMAN)
+      return pdfium::MakeUnique<CPDF_Name>(pPool, "MacRomanEncoding");
+    if (predefined == PDFFONT_ENCODING_MACEXPERT)
+      return pdfium::MakeUnique<CPDF_Name>(pPool, "MacExpertEncoding");
+
     return nullptr;
   }
   const uint16_t* pStandard =
@@ -1725,8 +1719,7 @@
     pDiff->AddNew<CPDF_Name>(PDF_AdobeNameFromUnicode(m_Unicodes[i]));
   }
 
-  auto pDict = pdfium::MakeUnique<CPDF_Dictionary>(pHolder->GetByteStringPool(),
-                                                   pHolder);
+  auto pDict = pdfium::MakeUnique<CPDF_Dictionary>(pPool);
   pDict->SetNewFor<CPDF_Name>("BaseEncoding", "WinAnsiEncoding");
   pDict->SetFor("Differences", std::move(pDiff));
   return std::move(pDict);
diff --git a/core/fpdfapi/font/cpdf_fontencoding.h b/core/fpdfapi/font/cpdf_fontencoding.h
index 76cb7db..e9a2ee2 100644
--- a/core/fpdfapi/font/cpdf_fontencoding.h
+++ b/core/fpdfapi/font/cpdf_fontencoding.h
@@ -32,7 +32,6 @@
 const uint16_t* PDF_UnicodesForPredefinedCharSet(int encoding);
 const char* PDF_CharNameFromPredefinedCharSet(int encoding, uint8_t charcode);
 
-class CPDF_IndirectObjectHolder;
 class CPDF_Object;
 
 class CPDF_FontEncoding {
@@ -55,7 +54,7 @@
     m_Unicodes[charcode] = unicode;
   }
 
-  std::unique_ptr<CPDF_Object> Realize(CPDF_IndirectObjectHolder* pHolder);
+  std::unique_ptr<CPDF_Object> Realize(WeakPtr<ByteStringPool> pPool);
 
  public:
   wchar_t m_Unicodes[kEncodingTableSize];
diff --git a/core/fpdfapi/page/cpdf_docpagedata.cpp b/core/fpdfapi/page/cpdf_docpagedata.cpp
index 569dd46..7b62467 100644
--- a/core/fpdfapi/page/cpdf_docpagedata.cpp
+++ b/core/fpdfapi/page/cpdf_docpagedata.cpp
@@ -175,8 +175,10 @@
   pDict->SetNewFor<CPDF_Name>("Type", "Font");
   pDict->SetNewFor<CPDF_Name>("Subtype", "Type1");
   pDict->SetNewFor<CPDF_Name>("BaseFont", fontName);
-  if (pEncoding)
-    pDict->SetFor("Encoding", pEncoding->Realize(m_pPDFDoc.Get()));
+  if (pEncoding) {
+    pDict->SetFor("Encoding",
+                  pEncoding->Realize(m_pPDFDoc->GetByteStringPool()));
+  }
 
   std::unique_ptr<CPDF_Font> pFont = CPDF_Font::Create(m_pPDFDoc.Get(), pDict);
   if (!pFont)
diff --git a/core/fpdfapi/page/cpdf_streamcontentparser.cpp b/core/fpdfapi/page/cpdf_streamcontentparser.cpp
index 9e5512e..2799684 100644
--- a/core/fpdfapi/page/cpdf_streamcontentparser.cpp
+++ b/core/fpdfapi/page/cpdf_streamcontentparser.cpp
@@ -1519,7 +1519,7 @@
 
   uint32_t init_obj_count = m_pObjectHolder->GetPageObjectList()->size();
   CPDF_StreamParser syntax(pdfium::make_span(pDataStart, size_left),
-                           m_pDocument->GetByteStringPool(), m_pDocument.Get());
+                           m_pDocument->GetByteStringPool());
   CPDF_StreamParserAutoClearer auto_clearer(&m_pSyntax, &syntax);
   while (1) {
     uint32_t cost =
diff --git a/core/fpdfapi/page/cpdf_streamparser.cpp b/core/fpdfapi/page/cpdf_streamparser.cpp
index ed9c200..037e72c5 100644
--- a/core/fpdfapi/page/cpdf_streamparser.cpp
+++ b/core/fpdfapi/page/cpdf_streamparser.cpp
@@ -106,11 +106,10 @@
     : m_pBuf(span) {}
 
 CPDF_StreamParser::CPDF_StreamParser(pdfium::span<const uint8_t> span,
-                                     const WeakPtr<ByteStringPool>& pPool,
-                                     CPDF_IndirectObjectHolder* pHolder)
-    : m_pPool(pPool), m_pHolder(pHolder), m_pBuf(span) {}
+                                     const WeakPtr<ByteStringPool>& pPool)
+    : m_pPool(pPool), m_pBuf(span) {}
 
-CPDF_StreamParser::~CPDF_StreamParser() = default;
+CPDF_StreamParser::~CPDF_StreamParser() {}
 
 std::unique_ptr<CPDF_Stream> CPDF_StreamParser::ReadInlineStream(
     CPDF_Document* pDoc,
@@ -329,7 +328,7 @@
     if (m_WordSize == 1)
       return pdfium::MakeUnique<CPDF_String>(m_pPool, ReadHexString(), true);
 
-    auto pDict = pdfium::MakeUnique<CPDF_Dictionary>(m_pPool, m_pHolder.Get());
+    auto pDict = pdfium::MakeUnique<CPDF_Dictionary>(m_pPool);
     while (1) {
       GetNextWord(bIsNumber);
       if (m_WordSize == 2 && m_WordBuffer[0] == '>')
diff --git a/core/fpdfapi/page/cpdf_streamparser.h b/core/fpdfapi/page/cpdf_streamparser.h
index afbb0a5..af181ff 100644
--- a/core/fpdfapi/page/cpdf_streamparser.h
+++ b/core/fpdfapi/page/cpdf_streamparser.h
@@ -18,7 +18,6 @@
 #include "third_party/base/span.h"
 
 class CPDF_Dictionary;
-class CPDF_IndirectObjectHolder;
 
 class CPDF_StreamParser {
  public:
@@ -26,9 +25,7 @@
 
   explicit CPDF_StreamParser(pdfium::span<const uint8_t> span);
   CPDF_StreamParser(pdfium::span<const uint8_t> span,
-                    const WeakPtr<ByteStringPool>& pPool,
-                    CPDF_IndirectObjectHolder* pHolder);
-
+                    const WeakPtr<ByteStringPool>& pPool);
   ~CPDF_StreamParser();
 
   SyntaxType ParseNextElement();
@@ -58,7 +55,6 @@
   uint32_t m_Pos = 0;       // Current byte position within m_pBuf.
   uint32_t m_WordSize = 0;  // Current byte position within m_WordBuffer.
   WeakPtr<ByteStringPool> m_pPool;
-  UnownedPtr<CPDF_IndirectObjectHolder> m_pHolder;
   std::unique_ptr<CPDF_Object> m_pLastObj;
   pdfium::span<const uint8_t> m_pBuf;
   uint8_t m_WordBuffer[kMaxWordLength + 1];  // Include space for NUL.
diff --git a/core/fpdfapi/parser/cpdf_array.cpp b/core/fpdfapi/parser/cpdf_array.cpp
index 357c88c..78a52f9 100644
--- a/core/fpdfapi/parser/cpdf_array.cpp
+++ b/core/fpdfapi/parser/cpdf_array.cpp
@@ -21,9 +21,7 @@
 
 CPDF_Array::CPDF_Array() {}
 
-CPDF_Array::CPDF_Array(const WeakPtr<ByteStringPool>& pPool,
-                       CPDF_IndirectObjectHolder* pHolder)
-    : m_pPool(pPool), m_pHolder(pHolder) {}
+CPDF_Array::CPDF_Array(const WeakPtr<ByteStringPool>& pPool) : m_pPool(pPool) {}
 
 CPDF_Array::~CPDF_Array() {
   // Break cycles for cyclic references.
diff --git a/core/fpdfapi/parser/cpdf_array.h b/core/fpdfapi/parser/cpdf_array.h
index 6e86968..f7b4a1f 100644
--- a/core/fpdfapi/parser/cpdf_array.h
+++ b/core/fpdfapi/parser/cpdf_array.h
@@ -18,17 +18,13 @@
 #include "core/fxcrt/fx_coordinates.h"
 #include "third_party/base/ptr_util.h"
 
-class CPDF_IndirectObjectHolder;
-
 class CPDF_Array final : public CPDF_Object {
  public:
   using const_iterator =
       std::vector<std::unique_ptr<CPDF_Object>>::const_iterator;
 
   CPDF_Array();
-  CPDF_Array(const WeakPtr<ByteStringPool>& pPool,
-             CPDF_IndirectObjectHolder* pHolder);
-
+  explicit CPDF_Array(const WeakPtr<ByteStringPool>& pPool);
   ~CPDF_Array() override;
 
   // CPDF_Object:
@@ -67,8 +63,7 @@
 
   // Creates object owned by the array, returns unowned pointer to it.
   // We have special cases for objects that can intern strings from
-  // a ByteStringPool, and for those that can return children back to
-  // an IndirectObjectHolder.
+  // a ByteStringPool.
   template <typename T, typename... Args>
   typename std::enable_if<!CanInternStrings<T>::value, T*>::type AddNew(
       Args&&... args) {
@@ -76,23 +71,12 @@
         Add(pdfium::MakeUnique<T>(std::forward<Args>(args)...)));
   }
   template <typename T, typename... Args>
-  typename std::enable_if<CanInternStrings<T>::value &&
-                              !CanOrphanChildren<T>::value,
-                          T*>::type
-  AddNew(Args&&... args) {
+  typename std::enable_if<CanInternStrings<T>::value, T*>::type AddNew(
+      Args&&... args) {
     return static_cast<T*>(
         Add(pdfium::MakeUnique<T>(m_pPool, std::forward<Args>(args)...)));
   }
   template <typename T, typename... Args>
-  typename std::enable_if<CanInternStrings<T>::value &&
-                              CanOrphanChildren<T>::value,
-                          T*>::type
-  AddNew(Args&&... args) {
-    return static_cast<T*>(Add(pdfium::MakeUnique<T>(
-        m_pPool, m_pHolder.Get(), std::forward<Args>(args)...)));
-  }
-
-  template <typename T, typename... Args>
   typename std::enable_if<!CanInternStrings<T>::value, T*>::type SetNewAt(
       size_t index,
       Args&&... args) {
@@ -100,24 +84,13 @@
         SetAt(index, pdfium::MakeUnique<T>(std::forward<Args>(args)...)));
   }
   template <typename T, typename... Args>
-  typename std::enable_if<CanInternStrings<T>::value &&
-                              !CanOrphanChildren<T>::value,
-                          T*>::type
-  SetNewAt(size_t index, Args&&... args) {
+  typename std::enable_if<CanInternStrings<T>::value, T*>::type SetNewAt(
+      size_t index,
+      Args&&... args) {
     return static_cast<T*>(SetAt(
         index, pdfium::MakeUnique<T>(m_pPool, std::forward<Args>(args)...)));
   }
   template <typename T, typename... Args>
-  typename std::enable_if<CanInternStrings<T>::value &&
-                              CanOrphanChildren<T>::value,
-                          T*>::type
-  SetNewAt(size_t index, Args&&... args) {
-    return static_cast<T*>(
-        SetAt(index, pdfium::MakeUnique<T>(m_pPool, m_pHolder.Get(),
-                                           std::forward<Args>(args)...)));
-  }
-
-  template <typename T, typename... Args>
   typename std::enable_if<!CanInternStrings<T>::value, T*>::type InsertNewAt(
       size_t index,
       Args&&... args) {
@@ -125,22 +98,12 @@
         InsertAt(index, pdfium::MakeUnique<T>(std::forward<Args>(args)...)));
   }
   template <typename T, typename... Args>
-  typename std::enable_if<CanInternStrings<T>::value &&
-                              !CanOrphanChildren<T>::value,
-                          T*>::type
-  InsertNewAt(size_t index, Args&&... args) {
+  typename std::enable_if<CanInternStrings<T>::value, T*>::type InsertNewAt(
+      size_t index,
+      Args&&... args) {
     return static_cast<T*>(InsertAt(
         index, pdfium::MakeUnique<T>(m_pPool, std::forward<Args>(args)...)));
   }
-  template <typename T, typename... Args>
-  typename std::enable_if<CanInternStrings<T>::value &&
-                              CanOrphanChildren<T>::value,
-                          T*>::type
-  InsertNewAt(size_t index, Args&&... args) {
-    return static_cast<T*>(
-        InsertAt(index, pdfium::MakeUnique<T>(m_pPool, m_pHolder.Get(),
-                                              std::forward<Args>(args)...)));
-  }
 
   void Clear();
   void RemoveAt(size_t index);
@@ -156,7 +119,6 @@
 
   std::vector<std::unique_ptr<CPDF_Object>> m_Objects;
   WeakPtr<ByteStringPool> m_pPool;
-  UnownedPtr<CPDF_IndirectObjectHolder> m_pHolder;
   mutable uint32_t m_LockCount = 0;
 };
 
diff --git a/core/fpdfapi/parser/cpdf_dictionary.cpp b/core/fpdfapi/parser/cpdf_dictionary.cpp
index d1d2410..c514e79 100644
--- a/core/fpdfapi/parser/cpdf_dictionary.cpp
+++ b/core/fpdfapi/parser/cpdf_dictionary.cpp
@@ -23,11 +23,11 @@
 #include "third_party/base/ptr_util.h"
 #include "third_party/base/stl_util.h"
 
-CPDF_Dictionary::CPDF_Dictionary() = default;
+CPDF_Dictionary::CPDF_Dictionary()
+    : CPDF_Dictionary(WeakPtr<ByteStringPool>()) {}
 
-CPDF_Dictionary::CPDF_Dictionary(const WeakPtr<ByteStringPool>& pPool,
-                                 CPDF_IndirectObjectHolder* pHolder)
-    : m_pPool(pPool), m_pHolder(pHolder) {}
+CPDF_Dictionary::CPDF_Dictionary(const WeakPtr<ByteStringPool>& pPool)
+    : m_pPool(pPool) {}
 
 CPDF_Dictionary::~CPDF_Dictionary() {
   // Mark the object as deleted so that it will not be deleted again,
@@ -71,7 +71,7 @@
     bool bDirect,
     std::set<const CPDF_Object*>* pVisited) const {
   pVisited->insert(this);
-  auto pCopy = pdfium::MakeUnique<CPDF_Dictionary>(m_pPool, m_pHolder.Get());
+  auto pCopy = pdfium::MakeUnique<CPDF_Dictionary>(m_pPool);
   CPDF_DictionaryLocker locker(this);
   for (const auto& it : locker) {
     if (!pdfium::ContainsKey(*pVisited, it.second.get())) {
diff --git a/core/fpdfapi/parser/cpdf_dictionary.h b/core/fpdfapi/parser/cpdf_dictionary.h
index d3ca8a6..e6abd26 100644
--- a/core/fpdfapi/parser/cpdf_dictionary.h
+++ b/core/fpdfapi/parser/cpdf_dictionary.h
@@ -29,9 +29,7 @@
       std::map<ByteString, std::unique_ptr<CPDF_Object>>::const_iterator;
 
   CPDF_Dictionary();
-  CPDF_Dictionary(const WeakPtr<ByteStringPool>& pPool,
-                  CPDF_IndirectObjectHolder* pHolder);
-
+  explicit CPDF_Dictionary(const WeakPtr<ByteStringPool>& pPool);
   ~CPDF_Dictionary() override;
 
   // CPDF_Object:
@@ -88,24 +86,13 @@
         SetFor(key, pdfium::MakeUnique<T>(std::forward<Args>(args)...)));
   }
   template <typename T, typename... Args>
-  typename std::enable_if<CanInternStrings<T>::value &&
-                              !CanOrphanChildren<T>::value,
-                          T*>::type
-  SetNewFor(const ByteString& key, Args&&... args) {
+  typename std::enable_if<CanInternStrings<T>::value, T*>::type SetNewFor(
+      const ByteString& key,
+      Args&&... args) {
     CHECK(!IsLocked());
     return static_cast<T*>(SetFor(
         key, pdfium::MakeUnique<T>(m_pPool, std::forward<Args>(args)...)));
   }
-  template <typename T, typename... Args>
-  typename std::enable_if<CanInternStrings<T>::value &&
-                              CanOrphanChildren<T>::value,
-                          T*>::type
-  SetNewFor(const ByteString& key, Args&&... args) {
-    CHECK(!IsLocked());
-    return static_cast<T*>(
-        SetFor(key, pdfium::MakeUnique<T>(m_pPool, m_pHolder.Get(),
-                                          std::forward<Args>(args)...)));
-  }
 
   // Convenience functions to convert native objects to array form.
   void SetRectFor(const ByteString& key, const CFX_FloatRect& rect);
@@ -121,9 +108,6 @@
   void ReplaceKey(const ByteString& oldkey, const ByteString& newkey);
 
   WeakPtr<ByteStringPool> GetByteStringPool() const { return m_pPool; }
-  CPDF_IndirectObjectHolder* GetIndirectObjectHolder() const {
-    return m_pHolder.Get();
-  }
 
  private:
   friend class CPDF_DictionaryLocker;
@@ -135,7 +119,6 @@
 
   mutable uint32_t m_LockCount = 0;
   WeakPtr<ByteStringPool> m_pPool;
-  UnownedPtr<CPDF_IndirectObjectHolder> m_pHolder;
   std::map<ByteString, std::unique_ptr<CPDF_Object>> m_Map;
 };
 
diff --git a/core/fpdfapi/parser/cpdf_indirect_object_holder.h b/core/fpdfapi/parser/cpdf_indirect_object_holder.h
index 96140e0..e812044 100644
--- a/core/fpdfapi/parser/cpdf_indirect_object_holder.h
+++ b/core/fpdfapi/parser/cpdf_indirect_object_holder.h
@@ -33,8 +33,7 @@
 
   // Creates and adds a new object owned by the indirect object holder,
   // and returns an unowned pointer to it.  We have a special case to
-  // handle objects that can intern strings from our ByteStringPool, and
-  // for those that can return objects back to the indirect object holder.
+  // handle objects that can intern strings from our ByteStringPool.
   template <typename T, typename... Args>
   typename std::enable_if<!CanInternStrings<T>::value, T*>::type NewIndirect(
       Args&&... args) {
@@ -42,42 +41,21 @@
         AddIndirectObject(pdfium::MakeUnique<T>(std::forward<Args>(args)...)));
   }
   template <typename T, typename... Args>
-  typename std::enable_if<CanInternStrings<T>::value &&
-                              !CanOrphanChildren<T>::value,
-                          T*>::type
-  NewIndirect(Args&&... args) {
+  typename std::enable_if<CanInternStrings<T>::value, T*>::type NewIndirect(
+      Args&&... args) {
     return static_cast<T*>(AddIndirectObject(
         pdfium::MakeUnique<T>(m_pByteStringPool, std::forward<Args>(args)...)));
   }
-  template <typename T, typename... Args>
-  typename std::enable_if<CanInternStrings<T>::value &&
-                              CanOrphanChildren<T>::value,
-                          T*>::type
-  NewIndirect(Args&&... args) {
-    return static_cast<T*>(AddIndirectObject(pdfium::MakeUnique<T>(
-        m_pByteStringPool, this, std::forward<Args>(args)...)));
-  }
 
   // Creates and adds a new object not owned by the indirect object holder,
   // but which can intern strings from it.
   template <typename T, typename... Args>
-  typename std::enable_if<CanInternStrings<T>::value &&
-                              !CanOrphanChildren<T>::value,
-                          std::unique_ptr<T>>::type
+  typename std::enable_if<CanInternStrings<T>::value, std::unique_ptr<T>>::type
   New(Args&&... args) {
     return pdfium::MakeUnique<T>(m_pByteStringPool,
                                  std::forward<Args>(args)...);
   }
 
-  template <typename T, typename... Args>
-  typename std::enable_if<CanInternStrings<T>::value &&
-                              CanOrphanChildren<T>::value,
-                          std::unique_ptr<T>>::type
-  New(Args&&... args) {
-    return pdfium::MakeUnique<T>(m_pByteStringPool, this,
-                                 std::forward<Args>(args)...);
-  }
-
   // Takes ownership of |pObj|, returns unowned pointer to it.
   CPDF_Object* AddIndirectObject(std::unique_ptr<CPDF_Object> pObj);
 
diff --git a/core/fpdfapi/parser/cpdf_object.h b/core/fpdfapi/parser/cpdf_object.h
index 88cf0f9..9404ad2 100644
--- a/core/fpdfapi/parser/cpdf_object.h
+++ b/core/fpdfapi/parser/cpdf_object.h
@@ -132,10 +132,4 @@
                             std::is_same<T, CPDF_String>::value;
 };
 
-template <typename T>
-struct CanOrphanChildren {
-  static const bool value = std::is_same<T, CPDF_Array>::value ||
-                            std::is_same<T, CPDF_Dictionary>::value;
-};
-
 #endif  // CORE_FPDFAPI_PARSER_CPDF_OBJECT_H_
diff --git a/core/fpdfapi/parser/cpdf_syntax_parser.cpp b/core/fpdfapi/parser/cpdf_syntax_parser.cpp
index d4f65a3..45e0f17 100644
--- a/core/fpdfapi/parser/cpdf_syntax_parser.cpp
+++ b/core/fpdfapi/parser/cpdf_syntax_parser.cpp
@@ -478,7 +478,7 @@
   }
   if (word == "<<") {
     std::unique_ptr<CPDF_Dictionary> pDict =
-        pdfium::MakeUnique<CPDF_Dictionary>(m_pPool, pObjList);
+        pdfium::MakeUnique<CPDF_Dictionary>(m_pPool);
     while (1) {
       ByteString inner_word = GetNextWord(nullptr);
       if (inner_word.IsEmpty())
diff --git a/core/fpdfdoc/cpvt_generateap.cpp b/core/fpdfdoc/cpvt_generateap.cpp
index 70a2072..2dc491b 100644
--- a/core/fpdfdoc/cpvt_generateap.cpp
+++ b/core/fpdfdoc/cpvt_generateap.cpp
@@ -467,8 +467,8 @@
     const CPDF_Dictionary& pAnnotDict,
     const ByteString& sExtGSDictName,
     const ByteString& sBlendMode) {
-  auto pGSDict = pdfium::MakeUnique<CPDF_Dictionary>(
-      pAnnotDict.GetByteStringPool(), pAnnotDict.GetIndirectObjectHolder());
+  auto pGSDict =
+      pdfium::MakeUnique<CPDF_Dictionary>(pAnnotDict.GetByteStringPool());
   pGSDict->SetNewFor<CPDF_Name>("Type", "ExtGState");
 
   float fOpacity =
@@ -478,8 +478,8 @@
   pGSDict->SetNewFor<CPDF_Boolean>("AIS", false);
   pGSDict->SetNewFor<CPDF_Name>("BM", sBlendMode);
 
-  auto pExtGStateDict = pdfium::MakeUnique<CPDF_Dictionary>(
-      pAnnotDict.GetByteStringPool(), pAnnotDict.GetIndirectObjectHolder());
+  auto pExtGStateDict =
+      pdfium::MakeUnique<CPDF_Dictionary>(pAnnotDict.GetByteStringPool());
   pExtGStateDict->SetFor(sExtGSDictName, std::move(pGSDict));
   return pExtGStateDict;
 }