summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2018-05-07 20:25:46 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-05-07 20:25:46 +0000
commit8dcab3c246751763e044a5ba5378e55e2274cde6 (patch)
treeda833b1401cae0bab02cf7252e5dbc5d0f0192e6
parentcb391259aefd52f09352d35a1bb5b56c0db6db11 (diff)
downloadpdfium-8dcab3c246751763e044a5ba5378e55e2274cde6.tar.xz
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 <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
-rw-r--r--fpdfsdk/fpdf_doc_embeddertest.cpp19
1 files changed, 19 insertions, 0 deletions
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 <memory>
+#include <set>
#include <string>
+#include <vector>
#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<FPDF_PAGE> unique_pages;
+ std::vector<ScopedFPDFPage> 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"));