Remove some CXFA_FFWidget usage from fpdfsdk.
Start to confine this class below fpdfsdk/fpdfxfa. Doing so
requires making some methods specific to the XFA widget handler
implementation, rather than part of the generic interface implemented
by both xfa and non-xfa handlers. In turn, this allows removing some
stubs from the non-xfa handlers.
Change-Id: I97a775217b7edf0b2fb85b5997e0d3ce511f7487
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/59256
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/cpdfsdk_annothandlermgr.cpp b/fpdfsdk/cpdfsdk_annothandlermgr.cpp
index d72d39e..42cb5f0 100644
--- a/fpdfsdk/cpdfsdk_annothandlermgr.cpp
+++ b/fpdfsdk/cpdfsdk_annothandlermgr.cpp
@@ -53,9 +53,9 @@
CPDFSDK_PageView* pPageView) {
ASSERT(pAnnot);
ASSERT(pPageView);
-
- return GetAnnotHandler(CPDF_Annot::Subtype::XFAWIDGET)
- ->NewAnnot(pAnnot, pPageView);
+ auto* pHandler = static_cast<CPDFXFA_WidgetHandler*>(
+ GetAnnotHandler(CPDF_Annot::Subtype::XFAWIDGET));
+ return pHandler->NewAnnotForXFA(pAnnot, pPageView);
}
#endif // PDF_ENABLE_XFA
@@ -282,11 +282,11 @@
(*pKillAnnot && (*pKillAnnot)->GetXFAWidget());
if (bXFA) {
- if (IPDFSDK_AnnotHandler* pXFAAnnotHandler =
- GetAnnotHandler(CPDF_Annot::Subtype::XFAWIDGET))
+ auto* pXFAAnnotHandler = static_cast<CPDFXFA_WidgetHandler*>(
+ GetAnnotHandler(CPDF_Annot::Subtype::XFAWIDGET));
+ if (pXFAAnnotHandler)
return pXFAAnnotHandler->OnXFAChangedFocus(pKillAnnot, pSetAnnot);
}
-
return true;
}
#endif // PDF_ENABLE_XFA
diff --git a/fpdfsdk/cpdfsdk_baannothandler.cpp b/fpdfsdk/cpdfsdk_baannothandler.cpp
index 03856ec..1b6e31b 100644
--- a/fpdfsdk/cpdfsdk_baannothandler.cpp
+++ b/fpdfsdk/cpdfsdk_baannothandler.cpp
@@ -17,10 +17,6 @@
#include "fpdfsdk/cpdfsdk_pageview.h"
#include "fpdfsdk/formfiller/cffl_formfiller.h"
-#ifdef PDF_ENABLE_XFA
-#include "fpdfsdk/fpdfxfa/cpdfxfa_context.h"
-#endif // PDF_ENABLE_XFA
-
namespace {
void UpdateAnnotRects(CPDFSDK_PageView* pPageView, CPDFSDK_BAAnnot* pBAAnnot) {
@@ -51,13 +47,6 @@
return new CPDFSDK_BAAnnot(pAnnot, pPage);
}
-#ifdef PDF_ENABLE_XFA
-CPDFSDK_Annot* CPDFSDK_BAAnnotHandler::NewAnnot(CXFA_FFWidget* hWidget,
- CPDFSDK_PageView* pPage) {
- return nullptr;
-}
-#endif // PDF_ENABLE_XFA
-
void CPDFSDK_BAAnnotHandler::ReleaseAnnot(
std::unique_ptr<CPDFSDK_Annot> pAnnot) {
// pAnnot deleted by unique_ptr going out of scope.
@@ -193,14 +182,6 @@
return false;
}
-#ifdef PDF_ENABLE_XFA
-bool CPDFSDK_BAAnnotHandler::OnXFAChangedFocus(
- ObservedPtr<CPDFSDK_Annot>* pOldAnnot,
- ObservedPtr<CPDFSDK_Annot>* pNewAnnot) {
- return true;
-}
-#endif // PDF_ENABLE_XFA
-
CFX_FloatRect CPDFSDK_BAAnnotHandler::GetViewBBox(CPDFSDK_PageView* pPageView,
CPDFSDK_Annot* pAnnot) {
return pAnnot->GetRect();
diff --git a/fpdfsdk/cpdfsdk_baannothandler.h b/fpdfsdk/cpdfsdk_baannothandler.h
index b8a2826..4fc094a 100644
--- a/fpdfsdk/cpdfsdk_baannothandler.h
+++ b/fpdfsdk/cpdfsdk_baannothandler.h
@@ -20,10 +20,6 @@
class CPDFSDK_Annot;
class CPDFSDK_PageView;
-#ifdef PDF_ENABLE_XFA
-class CXFA_FFWidget;
-#endif // PDF_ENABLE_XFA
-
class CPDFSDK_BAAnnotHandler final : public IPDFSDK_AnnotHandler {
public:
CPDFSDK_BAAnnotHandler();
@@ -31,10 +27,6 @@
bool CanAnswer(CPDFSDK_Annot* pAnnot) override;
CPDFSDK_Annot* NewAnnot(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPage) override;
-#ifdef PDF_ENABLE_XFA
- CPDFSDK_Annot* NewAnnot(CXFA_FFWidget* hWidget,
- CPDFSDK_PageView* pPage) override;
-#endif // PDF_ENABLE_XFA
void ReleaseAnnot(std::unique_ptr<CPDFSDK_Annot> pAnnot) override;
CFX_FloatRect GetViewBBox(CPDFSDK_PageView* pPageView,
CPDFSDK_Annot* pAnnot) override;
@@ -103,10 +95,6 @@
int index,
bool selected) override;
bool IsIndexSelected(ObservedPtr<CPDFSDK_Annot>* pAnnot, int index) override;
-#ifdef PDF_ENABLE_XFA
- bool OnXFAChangedFocus(ObservedPtr<CPDFSDK_Annot>* pOldAnnot,
- ObservedPtr<CPDFSDK_Annot>* pNewAnnot) override;
-#endif // PDF_ENABLE_XFA
};
#endif // FPDFSDK_CPDFSDK_BAANNOTHANDLER_H_
diff --git a/fpdfsdk/cpdfsdk_widgethandler.cpp b/fpdfsdk/cpdfsdk_widgethandler.cpp
index 77353b0..23b4bc9 100644
--- a/fpdfsdk/cpdfsdk_widgethandler.cpp
+++ b/fpdfsdk/cpdfsdk_widgethandler.cpp
@@ -70,13 +70,6 @@
return pWidget;
}
-#ifdef PDF_ENABLE_XFA
-CPDFSDK_Annot* CPDFSDK_WidgetHandler::NewAnnot(CXFA_FFWidget* hWidget,
- CPDFSDK_PageView* pPage) {
- return nullptr;
-}
-#endif // PDF_ENABLE_XFA
-
void CPDFSDK_WidgetHandler::ReleaseAnnot(
std::unique_ptr<CPDFSDK_Annot> pAnnot) {
ASSERT(pAnnot);
@@ -255,14 +248,6 @@
m_pFormFiller->IsIndexSelected(pAnnot, index);
}
-#ifdef PDF_ENABLE_XFA
-bool CPDFSDK_WidgetHandler::OnXFAChangedFocus(
- ObservedPtr<CPDFSDK_Annot>* pOldAnnot,
- ObservedPtr<CPDFSDK_Annot>* pNewAnnot) {
- return true;
-}
-#endif // PDF_ENABLE_XFA
-
CFX_FloatRect CPDFSDK_WidgetHandler::GetViewBBox(CPDFSDK_PageView* pPageView,
CPDFSDK_Annot* pAnnot) {
if (!pAnnot->IsSignatureWidget())
diff --git a/fpdfsdk/cpdfsdk_widgethandler.h b/fpdfsdk/cpdfsdk_widgethandler.h
index 747ae2c..9c0c1e3 100644
--- a/fpdfsdk/cpdfsdk_widgethandler.h
+++ b/fpdfsdk/cpdfsdk_widgethandler.h
@@ -21,10 +21,6 @@
class CPDFSDK_FormFillEnvironment;
class CPDFSDK_PageView;
-#ifdef PDF_ENABLE_XFA
-class CXFA_FFWidget;
-#endif // PDF_ENABLE_XFA
-
class CPDFSDK_WidgetHandler final : public IPDFSDK_AnnotHandler {
public:
explicit CPDFSDK_WidgetHandler(CPDFSDK_FormFillEnvironment* pFormFillEnv);
@@ -32,10 +28,6 @@
bool CanAnswer(CPDFSDK_Annot* pAnnot) override;
CPDFSDK_Annot* NewAnnot(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPage) override;
-#ifdef PDF_ENABLE_XFA
- CPDFSDK_Annot* NewAnnot(CXFA_FFWidget* hWidget,
- CPDFSDK_PageView* pPage) override;
-#endif // PDF_ENABLE_XFA
void ReleaseAnnot(std::unique_ptr<CPDFSDK_Annot> pAnnot) override;
CFX_FloatRect GetViewBBox(CPDFSDK_PageView* pPageView,
CPDFSDK_Annot* pAnnot) override;
@@ -104,10 +96,6 @@
int index,
bool selected) override;
bool IsIndexSelected(ObservedPtr<CPDFSDK_Annot>* pAnnot, int index) override;
-#ifdef PDF_ENABLE_XFA
- bool OnXFAChangedFocus(ObservedPtr<CPDFSDK_Annot>* pOldAnnot,
- ObservedPtr<CPDFSDK_Annot>* pNewAnnot) override;
-#endif // PDF_ENABLE_XFA
private:
UnownedPtr<CPDFSDK_FormFillEnvironment> const m_pFormFillEnv;
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.cpp
index 98c4541..4ad437e 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.cpp
@@ -215,8 +215,8 @@
return nullptr;
}
-CPDFSDK_Annot* CPDFXFA_WidgetHandler::NewAnnot(CXFA_FFWidget* pAnnot,
- CPDFSDK_PageView* pPage) {
+CPDFSDK_Annot* CPDFXFA_WidgetHandler::NewAnnotForXFA(CXFA_FFWidget* pAnnot,
+ CPDFSDK_PageView* pPage) {
CPDFSDK_InteractiveForm* pForm = m_pFormFillEnv->GetInteractiveForm();
CPDFSDK_XFAWidget* pWidget = new CPDFSDK_XFAWidget(pAnnot, pPage, pForm);
pForm->AddXFAMap(pAnnot, pWidget);
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.h b/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.h
index cfc1d09..5083bec 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.h
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.h
@@ -27,10 +27,9 @@
explicit CPDFXFA_WidgetHandler(CPDFSDK_FormFillEnvironment* pApp);
~CPDFXFA_WidgetHandler() override;
+ // IPDFSDK_AnnotHandler:
bool CanAnswer(CPDFSDK_Annot* pAnnot) override;
CPDFSDK_Annot* NewAnnot(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPage) override;
- CPDFSDK_Annot* NewAnnot(CXFA_FFWidget* pAnnot,
- CPDFSDK_PageView* pPage) override;
void ReleaseAnnot(std::unique_ptr<CPDFSDK_Annot> pAnnot) override;
CFX_FloatRect GetViewBBox(CPDFSDK_PageView* pPageView,
CPDFSDK_Annot* pAnnot) override;
@@ -94,13 +93,15 @@
bool OnKeyUp(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag) override;
bool OnSetFocus(ObservedPtr<CPDFSDK_Annot>* pAnnot, uint32_t nFlag) override;
bool OnKillFocus(ObservedPtr<CPDFSDK_Annot>* pAnnot, uint32_t nFlag) override;
- bool OnXFAChangedFocus(ObservedPtr<CPDFSDK_Annot>* pOldAnnot,
- ObservedPtr<CPDFSDK_Annot>* pNewAnnot) override;
bool SetIndexSelected(ObservedPtr<CPDFSDK_Annot>* pAnnot,
int index,
bool selected) override;
bool IsIndexSelected(ObservedPtr<CPDFSDK_Annot>* pAnnot, int index) override;
+ CPDFSDK_Annot* NewAnnotForXFA(CXFA_FFWidget* pAnnot, CPDFSDK_PageView* pPage);
+ bool OnXFAChangedFocus(ObservedPtr<CPDFSDK_Annot>* pOldAnnot,
+ ObservedPtr<CPDFSDK_Annot>* pNewAnnot);
+
private:
CXFA_FFWidgetHandler* GetXFAWidgetHandler(CPDFSDK_Annot* pAnnot);
uint32_t GetFWLFlags(uint32_t dwFlag);
diff --git a/fpdfsdk/ipdfsdk_annothandler.h b/fpdfsdk/ipdfsdk_annothandler.h
index 55920b1..26de54d 100644
--- a/fpdfsdk/ipdfsdk_annothandler.h
+++ b/fpdfsdk/ipdfsdk_annothandler.h
@@ -17,10 +17,6 @@
class CPDF_Annot;
class CPDFSDK_PageView;
-#ifdef PDF_ENABLE_XFA
-class CXFA_FFWidget;
-#endif // PDF_ENABLE_XFA
-
class IPDFSDK_AnnotHandler {
public:
virtual ~IPDFSDK_AnnotHandler() = default;
@@ -28,12 +24,6 @@
virtual bool CanAnswer(CPDFSDK_Annot* pAnnot) = 0;
virtual CPDFSDK_Annot* NewAnnot(CPDF_Annot* pAnnot,
CPDFSDK_PageView* pPage) = 0;
-
-#ifdef PDF_ENABLE_XFA
- virtual CPDFSDK_Annot* NewAnnot(CXFA_FFWidget* hWidget,
- CPDFSDK_PageView* pPage) = 0;
-#endif // PDF_ENABLE_XFA
-
virtual void ReleaseAnnot(std::unique_ptr<CPDFSDK_Annot> pAnnot) = 0;
virtual CFX_FloatRect GetViewBBox(CPDFSDK_PageView* pPageView,
CPDFSDK_Annot* pAnnot) = 0;
@@ -54,7 +44,6 @@
const CFX_Matrix& mtUser2Device,
bool bDrawAnnots) = 0;
virtual void OnLoad(CPDFSDK_Annot* pAnnot) = 0;
-
virtual void OnMouseEnter(CPDFSDK_PageView* pPageView,
ObservedPtr<CPDFSDK_Annot>* pAnnot,
uint32_t nFlag) = 0;
@@ -103,17 +92,11 @@
uint32_t nFlag) = 0;
virtual bool OnKillFocus(ObservedPtr<CPDFSDK_Annot>* pAnnot,
uint32_t nFlag) = 0;
-
virtual bool SetIndexSelected(ObservedPtr<CPDFSDK_Annot>* pAnnot,
int index,
bool selected) = 0;
virtual bool IsIndexSelected(ObservedPtr<CPDFSDK_Annot>* pAnnot,
int index) = 0;
-
-#ifdef PDF_ENABLE_XFA
- virtual bool OnXFAChangedFocus(ObservedPtr<CPDFSDK_Annot>* pOldAnnot,
- ObservedPtr<CPDFSDK_Annot>* pNewAnnot) = 0;
-#endif // PDF_ENABLE_XFA
};
#endif // FPDFSDK_IPDFSDK_ANNOTHANDLER_H_