summaryrefslogtreecommitdiff
path: root/fpdfsdk
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2018-06-04 18:26:07 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-06-04 18:26:07 +0000
commitf06ed6d3578fff9e1d2990e5757dc460e60e5dd3 (patch)
tree80a0b51c34053bcce961d43905afaef33b33c4da /fpdfsdk
parent168c763539e70bea450701470c47a8991f578336 (diff)
downloadpdfium-f06ed6d3578fff9e1d2990e5757dc460e60e5dd3.tar.xz
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 <tsepez@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'fpdfsdk')
-rw-r--r--fpdfsdk/fpdf_doc_embeddertest.cpp4
-rw-r--r--fpdfsdk/fpdf_editpage.cpp3
-rw-r--r--fpdfsdk/fpdf_flatten.cpp4
-rw-r--r--fpdfsdk/fpdf_ppo.cpp2
-rw-r--r--fpdfsdk/fpdf_view.cpp5
-rw-r--r--fpdfsdk/fpdfxfa/cpdfxfa_page.cpp11
6 files changed, 20 insertions, 9 deletions
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<CPDF_Page> pPage = pDoc->GetOrCreatePDFPage(pPageDict);
+ auto pPage = pdfium::MakeRetain<CPDF_Page>(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<CFX_FloatRect>* pRectArray) {
- RetainPtr<CPDF_Page> pPDFPage = pDoc->GetOrCreatePDFPage(pDict);
+ auto pPDFPage = pdfium::MakeRetain<CPDF_Page>(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<CPDF_Page> srcPage = src()->GetOrCreatePDFPage(pSrcPageDict);
+ auto srcPage = pdfium::MakeRetain<CPDF_Page>(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<CPDF_Page> pPage = pDoc->GetOrCreatePDFPage(pDict);
+ auto pPage = pdfium::MakeRetain<CPDF_Page>(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<CPDF_Page> page = pDoc->GetOrCreatePDFPage(pDict);
+ auto page = pdfium::MakeRetain<CPDF_Page>(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<CPDF_Page>(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<CPDF_Page>(m_pContext->GetPDFDoc(), pageDict, true);
+ m_pPDFPage->ParseContent();
return true;
}