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 --- core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp | 6 +++--- core/fpdfapi/page/cpdf_page.cpp | 4 ++-- core/fpdfapi/page/cpdf_page.h | 7 ++----- core/fpdfapi/parser/cpdf_document.cpp | 13 ------------- core/fpdfapi/parser/cpdf_document.h | 10 +--------- 5 files changed, 8 insertions(+), 32 deletions(-) (limited to 'core/fpdfapi') diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp index 859f5b3991..1244b12331 100644 --- a/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp +++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp @@ -129,7 +129,7 @@ TEST_F(CPDF_PageContentGeneratorTest, ProcessGraphics) { auto pDoc = pdfium::MakeUnique(nullptr); pDoc->CreateNewDoc(); CPDF_Dictionary* pPageDict = pDoc->CreateNewPage(0); - RetainPtr pTestPage = pDoc->GetOrCreatePDFPage(pPageDict); + auto pTestPage = pdfium::MakeRetain(pDoc.get(), pPageDict, false); CPDF_PageContentGenerator generator(pTestPage.Get()); std::ostringstream buf; TestProcessPath(&generator, &buf, pPathObj.get()); @@ -168,7 +168,7 @@ TEST_F(CPDF_PageContentGeneratorTest, ProcessStandardText) { auto pDoc = pdfium::MakeUnique(nullptr); pDoc->CreateNewDoc(); CPDF_Dictionary* pPageDict = pDoc->CreateNewPage(0); - RetainPtr pTestPage = pDoc->GetOrCreatePDFPage(pPageDict); + auto pTestPage = pdfium::MakeRetain(pDoc.get(), pPageDict, false); CPDF_PageContentGenerator generator(pTestPage.Get()); auto pTextObj = pdfium::MakeUnique(); CPDF_Font* pFont = CPDF_Font::GetStockFont(pDoc.get(), "Times-Roman"); @@ -231,7 +231,7 @@ TEST_F(CPDF_PageContentGeneratorTest, ProcessText) { auto pDoc = pdfium::MakeUnique(nullptr); pDoc->CreateNewDoc(); CPDF_Dictionary* pPageDict = pDoc->CreateNewPage(0); - RetainPtr pTestPage = pDoc->GetOrCreatePDFPage(pPageDict); + auto pTestPage = pdfium::MakeRetain(pDoc.get(), pPageDict, false); CPDF_PageContentGenerator generator(pTestPage.Get()); std::ostringstream buf; diff --git a/core/fpdfapi/page/cpdf_page.cpp b/core/fpdfapi/page/cpdf_page.cpp index c5c85635b2..7c0a3234c9 100644 --- a/core/fpdfapi/page/cpdf_page.cpp +++ b/core/fpdfapi/page/cpdf_page.cpp @@ -21,11 +21,11 @@ CPDF_Page::CPDF_Page(CPDF_Document* pDocument, CPDF_Dictionary* pPageDict, - bool bUseRenderCache) + bool bPageCache) : CPDF_PageObjectHolder(pDocument, pPageDict), m_PageSize(100, 100), m_pPDFDocument(pDocument) { - if (bUseRenderCache) + if (bPageCache) m_pPageRender = pdfium::MakeUnique(this); if (!pPageDict) return; diff --git a/core/fpdfapi/page/cpdf_page.h b/core/fpdfapi/page/cpdf_page.h index b94326e47b..0bb99b73f1 100644 --- a/core/fpdfapi/page/cpdf_page.h +++ b/core/fpdfapi/page/cpdf_page.h @@ -12,7 +12,6 @@ #include "core/fpdfapi/page/cpdf_pageobjectholder.h" #include "core/fxcrt/fx_coordinates.h" #include "core/fxcrt/fx_system.h" -#include "core/fxcrt/observable.h" #include "core/fxcrt/retain_ptr.h" #include "core/fxcrt/unowned_ptr.h" #include "third_party/base/optional.h" @@ -23,9 +22,7 @@ class CPDF_Object; class CPDF_PageRenderCache; class CPDF_PageRenderContext; -class CPDF_Page : public Retainable, - public Observable, - public CPDF_PageObjectHolder { +class CPDF_Page : public Retainable, public CPDF_PageObjectHolder { public: class View {}; // Caller implements as desired, empty here due to layering. class Extension : public Retainable {}; // XFA page parent class, layering. @@ -69,7 +66,7 @@ class CPDF_Page : public Retainable, private: CPDF_Page(CPDF_Document* pDocument, CPDF_Dictionary* pPageDict, - bool bUseRenderCache); + bool bPageCache); ~CPDF_Page() override; void StartParse(); diff --git a/core/fpdfapi/parser/cpdf_document.cpp b/core/fpdfapi/parser/cpdf_document.cpp index 412f726eca..995d7edaf9 100644 --- a/core/fpdfapi/parser/cpdf_document.cpp +++ b/core/fpdfapi/parser/cpdf_document.cpp @@ -602,19 +602,6 @@ bool CPDF_Document::InsertNewPage(int iPage, CPDF_Dictionary* pPageDict) { return true; } -RetainPtr CPDF_Document::GetOrCreatePDFPage( - CPDF_Dictionary* pPageDict) { - std::pair key = {pPageDict->GetObjNum(), - pPageDict->GetGenNum()}; - if (m_PageMap[key]) - return RetainPtr(m_PageMap[key].Get()); - - auto pPage = pdfium::MakeRetain(this, pPageDict, true); - pPage->ParseContent(); - m_PageMap[key].Reset(pPage.Get()); - return pPage; -} - void CPDF_Document::DeletePage(int iPage) { CPDF_Dictionary* pPages = GetPagesDict(); if (!pPages) diff --git a/core/fpdfapi/parser/cpdf_document.h b/core/fpdfapi/parser/cpdf_document.h index c096e89e28..fe3f170114 100644 --- a/core/fpdfapi/parser/cpdf_document.h +++ b/core/fpdfapi/parser/cpdf_document.h @@ -8,7 +8,6 @@ #define CORE_FPDFAPI_PARSER_CPDF_DOCUMENT_H_ #include -#include #include #include #include @@ -67,7 +66,6 @@ class CPDF_Document : public CPDF_IndirectObjectHolder { const CPDF_Dictionary* GetInfo() const { return m_pInfoDict.Get(); } CPDF_Dictionary* GetInfo() { return m_pInfoDict.Get(); } - RetainPtr GetOrCreatePDFPage(CPDF_Dictionary* pPageDict); void DeletePage(int iPage); int GetPageCount() const; bool IsPageLoaded(int iPage) const; @@ -171,13 +169,7 @@ class CPDF_Document : public CPDF_IndirectObjectHolder { std::unique_ptr m_pDocRender; std::unique_ptr m_pCodecContext; std::unique_ptr m_pLinksContext; - - // Page number (index) to page's dict objnum. - std::vector m_PageList; - - // Dict {objnum, gennum} to page mapping. - std::map, CPDF_Page::ObservedPtr> m_PageMap; - + std::vector m_PageList; // Page number to page's dict objnum. std::unique_ptr m_pExtension; }; -- cgit v1.2.3