summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2018-05-01 21:24:14 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-05-01 21:24:14 +0000
commit2e118e8f73f939fa93d144470e7fa31228e7e74d (patch)
tree002d889a771caded90403a50b6a16a3b6015ea02
parentbbcbc72765ea6d95d3f6ff6989c0d6477f3f929c (diff)
downloadpdfium-2e118e8f73f939fa93d144470e7fa31228e7e74d.tar.xz
Add CPDF_Document::Extension::DeletePage()
Replaces one compile-time #ifdef XFA with a dynamic check and a call through a virtual API that prevents the CPDF code from knowing anything about the XFA code. Change-Id: If0ff9b6918b908b3eac824fe1d525c6d4f7316e7 Reviewed-on: https://pdfium-review.googlesource.com/31890 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
-rw-r--r--core/fpdfapi/parser/cpdf_document.h1
-rw-r--r--fpdfsdk/fpdf_editpage.cpp9
-rw-r--r--fpdfsdk/fpdfxfa/cpdfxfa_context.h4
3 files changed, 7 insertions, 7 deletions
diff --git a/core/fpdfapi/parser/cpdf_document.h b/core/fpdfapi/parser/cpdf_document.h
index 4466df640e..82af1cfd82 100644
--- a/core/fpdfapi/parser/cpdf_document.h
+++ b/core/fpdfapi/parser/cpdf_document.h
@@ -45,6 +45,7 @@ class CPDF_Document : public CPDF_IndirectObjectHolder {
class Extension {
public:
virtual ~Extension() {}
+ virtual void DeletePage(int page_index) = 0;
};
explicit CPDF_Document(std::unique_ptr<CPDF_Parser> pParser);
diff --git a/fpdfsdk/fpdf_editpage.cpp b/fpdfsdk/fpdf_editpage.cpp
index 19a61bcdc6..944dbdc576 100644
--- a/fpdfsdk/fpdf_editpage.cpp
+++ b/fpdfsdk/fpdf_editpage.cpp
@@ -157,14 +157,11 @@ FPDF_EXPORT void FPDF_CALLCONV FPDFPage_Delete(FPDF_DOCUMENT document,
if (!pDoc)
return;
-#ifdef PDF_ENABLE_XFA
- CPDFXFA_Context* pContext =
- static_cast<CPDFXFA_Context*>(pDoc->GetExtension());
- if (pContext) {
- pContext->DeletePage(page_index);
+ CPDF_Document::Extension* pExtension = pDoc->GetExtension();
+ if (pExtension) {
+ pExtension->DeletePage(page_index);
return;
}
-#endif // PDF_ENABLE_XFA
pDoc->DeletePage(page_index);
}
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_context.h b/fpdfsdk/fpdfxfa/cpdfxfa_context.h
index cb42de0576..8491282d75 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_context.h
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_context.h
@@ -57,11 +57,13 @@ class CPDFXFA_Context : public CPDF_Document::Extension,
void SetFormFillEnv(CPDFSDK_FormFillEnvironment* pFormFillEnv);
int GetPageCount() const;
- void DeletePage(int page_index);
RetainPtr<CPDFXFA_Page> GetXFAPage(int page_index);
RetainPtr<CPDFXFA_Page> GetXFAPage(CXFA_FFPageView* pPage) const;
void ClearChangeMark();
+ // CPDF_Document::Extension:
+ void DeletePage(int page_index) override;
+
// IFXA_AppProvider:
WideString GetLanguage() override;
WideString GetPlatform() override;