Avoid another use of CPDF_Document::GetPageData().
Change-Id: I5837c5824c234362f41ef7cd53890eb0c85770cd
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/99694
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/page/cpdf_docpagedata.h b/core/fpdfapi/page/cpdf_docpagedata.h
index 9b34608..8003097 100644
--- a/core/fpdfapi/page/cpdf_docpagedata.h
+++ b/core/fpdfapi/page/cpdf_docpagedata.h
@@ -44,6 +44,7 @@
RetainPtr<const CPDF_Stream> pFontStream) override;
void MaybePurgeFontFileStreamAcc(
RetainPtr<CPDF_StreamAcc>&& pStreamAcc) override;
+ void MaybePurgeImage(uint32_t dwStreamObjNum) override;
// CPDF_Font::FormFactoryIFace:
std::unique_ptr<CPDF_Font::FormIface> CreateForm(
@@ -82,7 +83,6 @@
const CFX_Matrix& matrix);
RetainPtr<CPDF_Image> GetImage(uint32_t dwStreamObjNum);
- void MaybePurgeImage(uint32_t dwStreamObjNum);
RetainPtr<CPDF_IccProfile> GetIccProfile(
RetainPtr<const CPDF_Stream> pProfileStream);
diff --git a/core/fpdfapi/page/cpdf_imageobject.cpp b/core/fpdfapi/page/cpdf_imageobject.cpp
index 636f2cb..5c043c3 100644
--- a/core/fpdfapi/page/cpdf_imageobject.cpp
+++ b/core/fpdfapi/page/cpdf_imageobject.cpp
@@ -82,8 +82,8 @@
if (!m_pImage)
return;
- auto* pPageData = CPDF_DocPageData::FromDocument(m_pImage->GetDocument());
- if (!pPageData)
+ auto* pDoc = m_pImage->GetDocument();
+ if (!pDoc)
return;
RetainPtr<const CPDF_Stream> pStream = m_pImage->GetStream();
@@ -95,5 +95,5 @@
return;
m_pImage.Reset(); // Clear my reference before asking the cache.
- pPageData->MaybePurgeImage(objnum);
+ pDoc->MaybePurgeImage(objnum);
}
diff --git a/core/fpdfapi/parser/cpdf_document.cpp b/core/fpdfapi/parser/cpdf_document.cpp
index fad0688..547355a 100644
--- a/core/fpdfapi/parser/cpdf_document.cpp
+++ b/core/fpdfapi/parser/cpdf_document.cpp
@@ -400,6 +400,11 @@
m_pDocPage->MaybePurgeFontFileStreamAcc(std::move(pStreamAcc));
}
+void CPDF_Document::MaybePurgeImage(uint32_t objnum) {
+ if (m_pDocPage)
+ m_pDocPage->MaybePurgeImage(objnum);
+}
+
void CPDF_Document::CreateNewDoc() {
DCHECK(!m_pRootDict);
DCHECK(!m_pInfoDict);
diff --git a/core/fpdfapi/parser/cpdf_document.h b/core/fpdfapi/parser/cpdf_document.h
index ddae290..f67ecda 100644
--- a/core/fpdfapi/parser/cpdf_document.h
+++ b/core/fpdfapi/parser/cpdf_document.h
@@ -55,6 +55,7 @@
RetainPtr<const CPDF_Stream> pFontStream) = 0;
virtual void MaybePurgeFontFileStreamAcc(
RetainPtr<CPDF_StreamAcc>&& pStreamAcc) = 0;
+ virtual void MaybePurgeImage(uint32_t objnum) = 0;
void SetDocument(CPDF_Document* pDoc) { m_pDoc = pDoc; }
@@ -110,6 +111,7 @@
RetainPtr<CPDF_StreamAcc> GetFontFileStreamAcc(
RetainPtr<const CPDF_Stream> pFontStream);
void MaybePurgeFontFileStreamAcc(RetainPtr<CPDF_StreamAcc>&& pStreamAcc);
+ void MaybePurgeImage(uint32_t objnum);
// Returns a valid pointer, unless it is called during destruction.
PageDataIface* GetPageData() const { return m_pDocPage.get(); }