diff options
author | Tom Sepez <tsepez@chromium.org> | 2018-06-04 18:26:07 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-06-04 18:26:07 +0000 |
commit | f06ed6d3578fff9e1d2990e5757dc460e60e5dd3 (patch) | |
tree | 80a0b51c34053bcce961d43905afaef33b33c4da /core/fpdfapi | |
parent | 168c763539e70bea450701470c47a8991f578336 (diff) | |
download | pdfium-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 'core/fpdfapi')
-rw-r--r-- | core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp | 6 | ||||
-rw-r--r-- | core/fpdfapi/page/cpdf_page.cpp | 4 | ||||
-rw-r--r-- | core/fpdfapi/page/cpdf_page.h | 7 | ||||
-rw-r--r-- | core/fpdfapi/parser/cpdf_document.cpp | 13 | ||||
-rw-r--r-- | core/fpdfapi/parser/cpdf_document.h | 10 |
5 files changed, 8 insertions, 32 deletions
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<CPDF_Document>(nullptr); pDoc->CreateNewDoc(); CPDF_Dictionary* pPageDict = pDoc->CreateNewPage(0); - RetainPtr<CPDF_Page> pTestPage = pDoc->GetOrCreatePDFPage(pPageDict); + auto pTestPage = pdfium::MakeRetain<CPDF_Page>(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<CPDF_Document>(nullptr); pDoc->CreateNewDoc(); CPDF_Dictionary* pPageDict = pDoc->CreateNewPage(0); - RetainPtr<CPDF_Page> pTestPage = pDoc->GetOrCreatePDFPage(pPageDict); + auto pTestPage = pdfium::MakeRetain<CPDF_Page>(pDoc.get(), pPageDict, false); CPDF_PageContentGenerator generator(pTestPage.Get()); auto pTextObj = pdfium::MakeUnique<CPDF_TextObject>(); CPDF_Font* pFont = CPDF_Font::GetStockFont(pDoc.get(), "Times-Roman"); @@ -231,7 +231,7 @@ TEST_F(CPDF_PageContentGeneratorTest, ProcessText) { auto pDoc = pdfium::MakeUnique<CPDF_Document>(nullptr); pDoc->CreateNewDoc(); CPDF_Dictionary* pPageDict = pDoc->CreateNewPage(0); - RetainPtr<CPDF_Page> pTestPage = pDoc->GetOrCreatePDFPage(pPageDict); + auto pTestPage = pdfium::MakeRetain<CPDF_Page>(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<CPDF_PageRenderCache>(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<CPDF_Page>, - 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_Page> CPDF_Document::GetOrCreatePDFPage( - CPDF_Dictionary* pPageDict) { - std::pair<uint32_t, uint32_t> key = {pPageDict->GetObjNum(), - pPageDict->GetGenNum()}; - if (m_PageMap[key]) - return RetainPtr<CPDF_Page>(m_PageMap[key].Get()); - - auto pPage = pdfium::MakeRetain<CPDF_Page>(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 <functional> -#include <map> #include <memory> #include <set> #include <utility> @@ -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<CPDF_Page> 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<CPDF_DocRenderData> m_pDocRender; std::unique_ptr<JBig2_DocumentContext> m_pCodecContext; std::unique_ptr<CPDF_LinkList> m_pLinksContext; - - // Page number (index) to page's dict objnum. - std::vector<uint32_t> m_PageList; - - // Dict {objnum, gennum} to page mapping. - std::map<std::pair<uint32_t, uint32_t>, CPDF_Page::ObservedPtr> m_PageMap; - + std::vector<uint32_t> m_PageList; // Page number to page's dict objnum. std::unique_ptr<Extension> m_pExtension; }; |