Make FPDF_LoadPage return either page type at runtime.
Rely on strict use of IPDF_Page::As*() methods to prevent bad downcasts.
Change-Id: I92a146ffbe5d145ca4f4a5b8318f3599fd1d8431
Reviewed-on: https://pdfium-review.googlesource.com/33431
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/fpdf_view.cpp b/fpdfsdk/fpdf_view.cpp
index f0ceb1f..91072d2 100644
--- a/fpdfsdk/fpdf_view.cpp
+++ b/fpdfsdk/fpdf_view.cpp
@@ -352,17 +352,14 @@
auto* pContext = static_cast<CPDFXFA_Context*>(pDoc->GetExtension());
if (pContext)
return FPDFPageFromIPDFPage(pContext->GetXFAPage(page_index).Leak());
+#endif // PDF_ENABLE_XFA
- // Eventually, fallthrough into non-xfa case once page type made consistent.
- return nullptr;
-#else // PDF_ENABLE_XFA
CPDF_Dictionary* pDict = pDoc->GetPageDictionary(page_index);
if (!pDict)
return nullptr;
RetainPtr<CPDF_Page> pPage = pDoc->GetOrCreatePDFPage(pDict);
return FPDFPageFromIPDFPage(pPage.Leak());
-#endif // PDF_ENABLE_XFA
}
FPDF_EXPORT double FPDF_CALLCONV FPDF_GetPageWidth(FPDF_PAGE page) {