From 8dcab3c246751763e044a5ba5378e55e2274cde6 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Mon, 7 May 2018 20:25:46 +0000 Subject: Add test for mutltiple copies of same PDF page. Shows that under non-XFA, we hand out a new FPDF_PAGE on each call, but under XFA we hand out the same FPDF_PAGE and ref-count it under the covers. Change-Id: I47cd28c65faed90cf425bbc920e1b56b1e4676a8 Reviewed-on: https://pdfium-review.googlesource.com/32057 Reviewed-by: Lei Zhang Commit-Queue: Tom Sepez --- fpdfsdk/fpdf_doc_embeddertest.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/fpdfsdk/fpdf_doc_embeddertest.cpp b/fpdfsdk/fpdf_doc_embeddertest.cpp index 07b83263be..43af5f26c7 100644 --- a/fpdfsdk/fpdf_doc_embeddertest.cpp +++ b/fpdfsdk/fpdf_doc_embeddertest.cpp @@ -3,9 +3,12 @@ // found in the LICENSE file. #include +#include #include +#include #include "core/fxcrt/fx_string.h" +#include "public/cpp/fpdf_scopers.h" #include "public/fpdf_doc.h" #include "public/fpdf_edit.h" #include "public/fpdfview.h" @@ -15,6 +18,22 @@ class FPDFDocEmbeddertest : public EmbedderTest {}; +TEST_F(FPDFDocEmbeddertest, MultipleSamePage) { + EXPECT_TRUE(OpenDocument("hello_world.pdf")); + + std::set unique_pages; + std::vector owned_pages(4); + for (auto& ref : owned_pages) { + 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) { EXPECT_TRUE(OpenDocument("named_dests.pdf")); -- cgit v1.2.3