From f06ed6d3578fff9e1d2990e5757dc460e60e5dd3 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Mon, 4 Jun 2018 18:26:07 +0000 Subject: Revert "Make CPDF_Document cache CPDF_Pages" This reverts commit f0d9d28a034fe3650c3c2d662090c1e8687ddb16. Reason for revert: avoid parsing page. Change-Id: Id3478f7e38f1cbe95d098e00158b1d7d9dc6f76e Reviewed-on: https://pdfium-review.googlesource.com/33750 Reviewed-by: Tom Sepez Commit-Queue: Tom Sepez --- fpdfsdk/fpdf_doc_embeddertest.cpp | 4 ++++ fpdfsdk/fpdf_editpage.cpp | 3 ++- fpdfsdk/fpdf_flatten.cpp | 4 +++- fpdfsdk/fpdf_ppo.cpp | 2 +- fpdfsdk/fpdf_view.cpp | 5 +++-- fpdfsdk/fpdfxfa/cpdfxfa_page.cpp | 11 +++++++---- 6 files changed, 20 insertions(+), 9 deletions(-) (limited to 'fpdfsdk') diff --git a/fpdfsdk/fpdf_doc_embeddertest.cpp b/fpdfsdk/fpdf_doc_embeddertest.cpp index a9e4701e1d..c1f5e02ed6 100644 --- a/fpdfsdk/fpdf_doc_embeddertest.cpp +++ b/fpdfsdk/fpdf_doc_embeddertest.cpp @@ -27,7 +27,11 @@ TEST_F(FPDFDocEmbeddertest, MultipleSamePage) { ref.reset(FPDF_LoadPage(document(), 0)); unique_pages.insert(ref.get()); } +#ifdef PDF_ENABLE_XFA EXPECT_EQ(1u, unique_pages.size()); +#else // PDF_ENABLE_XFA + EXPECT_EQ(4u, unique_pages.size()); +#endif // PDF_ENABLE_XFA } TEST_F(FPDFDocEmbeddertest, DestGetPageIndex) { diff --git a/fpdfsdk/fpdf_editpage.cpp b/fpdfsdk/fpdf_editpage.cpp index b8ceea5724..094349f694 100644 --- a/fpdfsdk/fpdf_editpage.cpp +++ b/fpdfsdk/fpdf_editpage.cpp @@ -200,7 +200,8 @@ FPDF_EXPORT FPDF_PAGE FPDF_CALLCONV FPDFPage_New(FPDF_DOCUMENT document, // Eventually, fallthru into non-XFA case once page type is consistent. return nullptr; #else // PDF_ENABLE_XFA - RetainPtr pPage = pDoc->GetOrCreatePDFPage(pPageDict); + auto pPage = pdfium::MakeRetain(pDoc, pPageDict, true); + pPage->ParseContent(); return FPDFPageFromUnderlying(pPage.Leak()); // Caller takes ownership. #endif // PDF_ENABLE_XFA } diff --git a/fpdfsdk/fpdf_flatten.cpp b/fpdfsdk/fpdf_flatten.cpp index 2d81f1230e..720fa9ff55 100644 --- a/fpdfsdk/fpdf_flatten.cpp +++ b/fpdfsdk/fpdf_flatten.cpp @@ -47,7 +47,9 @@ bool IsValidRect(const CFX_FloatRect& rect, const CFX_FloatRect& rcPage) { void GetContentsRect(CPDF_Document* pDoc, CPDF_Dictionary* pDict, std::vector* pRectArray) { - RetainPtr pPDFPage = pDoc->GetOrCreatePDFPage(pDict); + auto pPDFPage = pdfium::MakeRetain(pDoc, pDict, false); + pPDFPage->ParseContent(); + for (const auto& pPageObject : *pPDFPage->GetPageObjectList()) { CFX_FloatRect rc; rc.left = pPageObject->m_Left; diff --git a/fpdfsdk/fpdf_ppo.cpp b/fpdfsdk/fpdf_ppo.cpp index 4ea3334b65..b73042466b 100644 --- a/fpdfsdk/fpdf_ppo.cpp +++ b/fpdfsdk/fpdf_ppo.cpp @@ -618,7 +618,7 @@ bool CPDF_NPageToOneExporter::ExportNPagesToOne( if (!pSrcPageDict) return false; - RetainPtr srcPage = src()->GetOrCreatePDFPage(pSrcPageDict); + auto srcPage = pdfium::MakeRetain(src(), pSrcPageDict, true); NupPageSettings settings = nupState.CalculateNewPagePosition(srcPage->GetPageSize()); AddSubPage(pSrcPageDict, settings, &objectNumberMap, &pageXObjectMap, diff --git a/fpdfsdk/fpdf_view.cpp b/fpdfsdk/fpdf_view.cpp index e38c651cbe..1b33952204 100644 --- a/fpdfsdk/fpdf_view.cpp +++ b/fpdfsdk/fpdf_view.cpp @@ -360,7 +360,8 @@ FPDF_EXPORT FPDF_PAGE FPDF_CALLCONV FPDF_LoadPage(FPDF_DOCUMENT document, if (!pDict) return nullptr; - RetainPtr pPage = pDoc->GetOrCreatePDFPage(pDict); + auto pPage = pdfium::MakeRetain(pDoc, pDict, true); + pPage->ParseContent(); return FPDFPageFromUnderlying(pPage.Leak()); #endif // PDF_ENABLE_XFA } @@ -958,7 +959,7 @@ FPDF_EXPORT int FPDF_CALLCONV FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document, if (!pDict) return false; - RetainPtr page = pDoc->GetOrCreatePDFPage(pDict); + auto page = pdfium::MakeRetain(pDoc, pDict, true); *width = page->GetPageWidth(); *height = page->GetPageHeight(); return true; diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp index f4120896a8..4d7e3bc222 100644 --- a/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp +++ b/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp @@ -34,9 +34,10 @@ bool CPDFXFA_Page::LoadPDFPage() { if (!pDict) return false; - if (!m_pPDFPage || m_pPDFPage->GetFormDict() != pDict) - m_pPDFPage = pPDFDoc->GetOrCreatePDFPage(pDict); - + if (!m_pPDFPage || m_pPDFPage->GetFormDict() != pDict) { + m_pPDFPage = pdfium::MakeRetain(pPDFDoc, pDict, true); + m_pPDFPage->ParseContent(); + } return true; } @@ -79,7 +80,9 @@ bool CPDFXFA_Page::LoadPDFPage(CPDF_Dictionary* pageDict) { if (!m_pContext || m_iPageIndex < 0 || !pageDict) return false; - m_pPDFPage = m_pContext->GetPDFDoc()->GetOrCreatePDFPage(pageDict); + m_pPDFPage = + pdfium::MakeRetain(m_pContext->GetPDFDoc(), pageDict, true); + m_pPDFPage->ParseContent(); return true; } -- cgit v1.2.3