summaryrefslogtreecommitdiff
path: root/fpdfsdk
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2018-06-05 13:57:29 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-06-05 13:57:29 +0000
commitfbcc5d9afb4506eea1003d024a5fac5d601cc196 (patch)
tree5ae5371f5216b1c6d9623534e1261ac606337280 /fpdfsdk
parentac42dd2d4b5bfefcbdd023b196db45bff94a1a7c (diff)
downloadpdfium-fbcc5d9afb4506eea1003d024a5fac5d601cc196.tar.xz
Add test for FPDF_GetPageSizeByIndex()
Ensure that FPDF_GetPageSizeByIndex() doesn't do a full page parse. Issue was noticed on CL https://pdfium-review.googlesource.com/32830 Change-Id: I51966e0b91e1a002d33ee51f00c0428fa1cda04d Reviewed-on: https://pdfium-review.googlesource.com/33792 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'fpdfsdk')
-rw-r--r--fpdfsdk/fpdf_doc_embeddertest.cpp5
-rw-r--r--fpdfsdk/fpdf_view_embeddertest.cpp36
2 files changed, 41 insertions, 0 deletions
diff --git a/fpdfsdk/fpdf_doc_embeddertest.cpp b/fpdfsdk/fpdf_doc_embeddertest.cpp
index c1f5e02ed6..a9eb4b8cb7 100644
--- a/fpdfsdk/fpdf_doc_embeddertest.cpp
+++ b/fpdfsdk/fpdf_doc_embeddertest.cpp
@@ -7,7 +7,9 @@
#include <string>
#include <vector>
+#include "core/fpdfapi/parser/cpdf_document.h"
#include "core/fxcrt/fx_string.h"
+#include "fpdfsdk/cpdfsdk_helpers.h"
#include "public/cpp/fpdf_scopers.h"
#include "public/fpdf_doc.h"
#include "public/fpdf_edit.h"
@@ -20,6 +22,7 @@ class FPDFDocEmbeddertest : public EmbedderTest {};
TEST_F(FPDFDocEmbeddertest, MultipleSamePage) {
EXPECT_TRUE(OpenDocument("hello_world.pdf"));
+ CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document());
std::set<FPDF_PAGE> unique_pages;
std::vector<ScopedFPDFPage> owned_pages(4);
@@ -29,8 +32,10 @@ TEST_F(FPDFDocEmbeddertest, MultipleSamePage) {
}
#ifdef PDF_ENABLE_XFA
EXPECT_EQ(1u, unique_pages.size());
+ EXPECT_EQ(1u, pDoc->GetParsedPageCountForTesting());
#else // PDF_ENABLE_XFA
EXPECT_EQ(4u, unique_pages.size());
+ EXPECT_EQ(4u, pDoc->GetParsedPageCountForTesting());
#endif // PDF_ENABLE_XFA
}
diff --git a/fpdfsdk/fpdf_view_embeddertest.cpp b/fpdfsdk/fpdf_view_embeddertest.cpp
index 7cc5478808..cef5e9a0d4 100644
--- a/fpdfsdk/fpdf_view_embeddertest.cpp
+++ b/fpdfsdk/fpdf_view_embeddertest.cpp
@@ -7,6 +7,8 @@
#include <memory>
#include <string>
+#include "core/fpdfapi/parser/cpdf_document.h"
+#include "fpdfsdk/cpdfsdk_helpers.h"
#include "fpdfsdk/fpdf_view_c_api_test.h"
#include "public/cpp/fpdf_scopers.h"
#include "public/fpdfview.h"
@@ -589,6 +591,40 @@ TEST_F(FPDFViewEmbeddertest, FPDF_RenderPageBitmapWithMatrix) {
UnloadPage(page);
}
+TEST_F(FPDFViewEmbeddertest, FPDF_GetPageSizeByIndex) {
+ EXPECT_TRUE(OpenDocument("rectangles.pdf"));
+ CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document());
+
+ double width = 0;
+ double height = 0;
+
+ // Page -1 doesn't exist.
+ EXPECT_FALSE(FPDF_GetPageSizeByIndex(document(), -1, &width, &height));
+
+ // Page 1 doesn't exist.
+ EXPECT_FALSE(FPDF_GetPageSizeByIndex(document(), 1, &width, &height));
+
+ // Page 0 exists.
+ EXPECT_TRUE(FPDF_GetPageSizeByIndex(document(), 0, &width, &height));
+ EXPECT_EQ(200.0, width);
+ EXPECT_EQ(300.0, height);
+
+#ifdef PDF_ENABLE_XFA
+ // TODO(tsepez): XFA must obtain this size without parsing.
+ EXPECT_EQ(1u, pDoc->GetParsedPageCountForTesting());
+#else // PDF_ENABLE_XFA
+ EXPECT_EQ(0u, pDoc->GetParsedPageCountForTesting());
+#endif // PDF_ENABLE_XFA
+
+ // Double-check against values from when page is actually parsed.
+ FPDF_PAGE page = LoadPage(0);
+ ASSERT_TRUE(page);
+ EXPECT_EQ(width, FPDF_GetPageWidth(page));
+ EXPECT_EQ(height, FPDF_GetPageHeight(page));
+ EXPECT_EQ(1u, pDoc->GetParsedPageCountForTesting());
+ UnloadPage(page);
+}
+
class UnSupRecordDelegate : public EmbedderTest::Delegate {
public:
UnSupRecordDelegate() : type_(-1) {}