Remove more impossible checks in form filler code.
Also fix some nits and inline some calls.
Change-Id: Ie962f416b8ecd51ce05341e5511129ea0602fa8e
Reviewed-on: https://pdfium-review.googlesource.com/c/43604
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/cpdfsdk_interform.cpp b/fpdfsdk/cpdfsdk_interform.cpp
index 2cc20f9..66a52b6 100644
--- a/fpdfsdk/cpdfsdk_interform.cpp
+++ b/fpdfsdk/cpdfsdk_interform.cpp
@@ -391,12 +391,11 @@
if (!action.GetDict())
return true;
- CPDFSDK_ActionHandler* pActionHandler = m_pFormFillEnv->GetActionHandler();
CPDFSDK_FieldAction fa;
fa.bModifier = false;
fa.bShift = false;
fa.sValue = csValue;
- pActionHandler->DoAction_FieldJavaScript(
+ m_pFormFillEnv->GetActionHandler()->DoAction_FieldJavaScript(
action, CPDF_AAction::KeyStroke, m_pFormFillEnv.Get(), pFormField, &fa);
return fa.bRC;
}
@@ -411,12 +410,11 @@
if (!action.GetDict())
return true;
- CPDFSDK_ActionHandler* pActionHandler = m_pFormFillEnv->GetActionHandler();
CPDFSDK_FieldAction fa;
fa.bModifier = false;
fa.bShift = false;
fa.sValue = csValue;
- pActionHandler->DoAction_FieldJavaScript(
+ m_pFormFillEnv->GetActionHandler()->DoAction_FieldJavaScript(
action, CPDF_AAction::Validate, m_pFormFillEnv.Get(), pFormField, &fa);
return fa.bRC;
}
diff --git a/fpdfsdk/cpdfsdk_widget.cpp b/fpdfsdk/cpdfsdk_widget.cpp
index cbd2c7b..7270351 100644
--- a/fpdfsdk/cpdfsdk_widget.cpp
+++ b/fpdfsdk/cpdfsdk_widget.cpp
@@ -833,10 +833,9 @@
#endif // PDF_ENABLE_XFA
CPDF_Action action = GetAAction(type);
- if (action.GetDict() && action.GetType() != CPDF_Action::Unknown) {
- CPDFSDK_ActionHandler* pActionHandler = pFormFillEnv->GetActionHandler();
- return pActionHandler->DoAction_Field(action, type, pFormFillEnv,
- GetFormField(), data);
+ if (action.GetType() != CPDF_Action::Unknown) {
+ pFormFillEnv->GetActionHandler()->DoAction_Field(action, type, pFormFillEnv,
+ GetFormField(), data);
}
return false;
}
diff --git a/fpdfsdk/cpdfsdk_widgethandler.cpp b/fpdfsdk/cpdfsdk_widgethandler.cpp
index bf7de5e..7dfedad 100644
--- a/fpdfsdk/cpdfsdk_widgethandler.cpp
+++ b/fpdfsdk/cpdfsdk_widgethandler.cpp
@@ -26,9 +26,12 @@
CPDFSDK_WidgetHandler::CPDFSDK_WidgetHandler(
CPDFSDK_FormFillEnvironment* pFormFillEnv)
: m_pFormFillEnv(pFormFillEnv),
- m_pFormFiller(pFormFillEnv->GetInteractiveFormFiller()) {}
+ m_pFormFiller(pFormFillEnv->GetInteractiveFormFiller()) {
+ ASSERT(m_pFormFillEnv);
+ ASSERT(m_pFormFiller);
+}
-CPDFSDK_WidgetHandler::~CPDFSDK_WidgetHandler() {}
+CPDFSDK_WidgetHandler::~CPDFSDK_WidgetHandler() = default;
bool CPDFSDK_WidgetHandler::CanAnswer(CPDFSDK_Annot* pAnnot) {
CPDFSDK_Widget* pWidget = ToCPDFSDKWidget(pAnnot);
@@ -76,8 +79,7 @@
void CPDFSDK_WidgetHandler::ReleaseAnnot(CPDFSDK_Annot* pAnnot) {
ASSERT(pAnnot);
- if (m_pFormFiller)
- m_pFormFiller->OnDelete(pAnnot);
+ m_pFormFiller->OnDelete(pAnnot);
std::unique_ptr<CPDFSDK_Widget> pWidget(ToCPDFSDKWidget(pAnnot));
CPDFSDK_InterForm* pInterForm = pWidget->GetInterForm();
@@ -94,22 +96,21 @@
pAnnot->AsBAAnnot()->DrawAppearance(pDevice, mtUser2Device,
CPDF_Annot::Normal, nullptr);
} else {
- if (m_pFormFiller)
- m_pFormFiller->OnDraw(pPageView, pAnnot, pDevice, mtUser2Device);
+ m_pFormFiller->OnDraw(pPageView, pAnnot, pDevice, mtUser2Device);
}
}
void CPDFSDK_WidgetHandler::OnMouseEnter(CPDFSDK_PageView* pPageView,
CPDFSDK_Annot::ObservedPtr* pAnnot,
uint32_t nFlag) {
- if (!(*pAnnot)->IsSignatureWidget() && m_pFormFiller)
+ if (!(*pAnnot)->IsSignatureWidget())
m_pFormFiller->OnMouseEnter(pPageView, pAnnot, nFlag);
}
void CPDFSDK_WidgetHandler::OnMouseExit(CPDFSDK_PageView* pPageView,
CPDFSDK_Annot::ObservedPtr* pAnnot,
uint32_t nFlag) {
- if (!(*pAnnot)->IsSignatureWidget() && m_pFormFiller)
+ if (!(*pAnnot)->IsSignatureWidget())
m_pFormFiller->OnMouseExit(pPageView, pAnnot, nFlag);
}
@@ -117,40 +118,32 @@
CPDFSDK_Annot::ObservedPtr* pAnnot,
uint32_t nFlags,
const CFX_PointF& point) {
- if (!(*pAnnot)->IsSignatureWidget() && m_pFormFiller)
- return m_pFormFiller->OnLButtonDown(pPageView, pAnnot, nFlags, point);
-
- return false;
+ return !(*pAnnot)->IsSignatureWidget() &&
+ m_pFormFiller->OnLButtonDown(pPageView, pAnnot, nFlags, point);
}
bool CPDFSDK_WidgetHandler::OnLButtonUp(CPDFSDK_PageView* pPageView,
CPDFSDK_Annot::ObservedPtr* pAnnot,
uint32_t nFlags,
const CFX_PointF& point) {
- if (!(*pAnnot)->IsSignatureWidget() && m_pFormFiller)
- return m_pFormFiller->OnLButtonUp(pPageView, pAnnot, nFlags, point);
-
- return false;
+ return !(*pAnnot)->IsSignatureWidget() &&
+ m_pFormFiller->OnLButtonUp(pPageView, pAnnot, nFlags, point);
}
bool CPDFSDK_WidgetHandler::OnLButtonDblClk(CPDFSDK_PageView* pPageView,
CPDFSDK_Annot::ObservedPtr* pAnnot,
uint32_t nFlags,
const CFX_PointF& point) {
- if (!(*pAnnot)->IsSignatureWidget() && m_pFormFiller)
- return m_pFormFiller->OnLButtonDblClk(pPageView, pAnnot, nFlags, point);
-
- return false;
+ return !(*pAnnot)->IsSignatureWidget() &&
+ m_pFormFiller->OnLButtonDblClk(pPageView, pAnnot, nFlags, point);
}
bool CPDFSDK_WidgetHandler::OnMouseMove(CPDFSDK_PageView* pPageView,
CPDFSDK_Annot::ObservedPtr* pAnnot,
uint32_t nFlags,
const CFX_PointF& point) {
- if (!(*pAnnot)->IsSignatureWidget() && m_pFormFiller)
- return m_pFormFiller->OnMouseMove(pPageView, pAnnot, nFlags, point);
-
- return false;
+ return !(*pAnnot)->IsSignatureWidget() &&
+ m_pFormFiller->OnMouseMove(pPageView, pAnnot, nFlags, point);
}
bool CPDFSDK_WidgetHandler::OnMouseWheel(CPDFSDK_PageView* pPageView,
@@ -158,31 +151,24 @@
uint32_t nFlags,
short zDelta,
const CFX_PointF& point) {
- if (!(*pAnnot)->IsSignatureWidget() && m_pFormFiller)
- return m_pFormFiller->OnMouseWheel(pPageView, pAnnot, nFlags, zDelta,
- point);
-
- return false;
+ return !(*pAnnot)->IsSignatureWidget() &&
+ m_pFormFiller->OnMouseWheel(pPageView, pAnnot, nFlags, zDelta, point);
}
bool CPDFSDK_WidgetHandler::OnRButtonDown(CPDFSDK_PageView* pPageView,
CPDFSDK_Annot::ObservedPtr* pAnnot,
uint32_t nFlags,
const CFX_PointF& point) {
- if (!(*pAnnot)->IsSignatureWidget() && m_pFormFiller)
- return m_pFormFiller->OnRButtonDown(pPageView, pAnnot, nFlags, point);
-
- return false;
+ return !(*pAnnot)->IsSignatureWidget() &&
+ m_pFormFiller->OnRButtonDown(pPageView, pAnnot, nFlags, point);
}
bool CPDFSDK_WidgetHandler::OnRButtonUp(CPDFSDK_PageView* pPageView,
CPDFSDK_Annot::ObservedPtr* pAnnot,
uint32_t nFlags,
const CFX_PointF& point) {
- if (!(*pAnnot)->IsSignatureWidget() && m_pFormFiller)
- return m_pFormFiller->OnRButtonUp(pPageView, pAnnot, nFlags, point);
-
- return false;
+ return !(*pAnnot)->IsSignatureWidget() &&
+ m_pFormFiller->OnRButtonUp(pPageView, pAnnot, nFlags, point);
}
bool CPDFSDK_WidgetHandler::OnRButtonDblClk(CPDFSDK_PageView* pPageView,
@@ -195,19 +181,15 @@
bool CPDFSDK_WidgetHandler::OnChar(CPDFSDK_Annot* pAnnot,
uint32_t nChar,
uint32_t nFlags) {
- if (!pAnnot->IsSignatureWidget() && m_pFormFiller)
- return m_pFormFiller->OnChar(pAnnot, nChar, nFlags);
-
- return false;
+ return !pAnnot->IsSignatureWidget() &&
+ m_pFormFiller->OnChar(pAnnot, nChar, nFlags);
}
bool CPDFSDK_WidgetHandler::OnKeyDown(CPDFSDK_Annot* pAnnot,
int nKeyCode,
int nFlag) {
- if (!pAnnot->IsSignatureWidget() && m_pFormFiller)
- return m_pFormFiller->OnKeyDown(pAnnot, nKeyCode, nFlag);
-
- return false;
+ return !pAnnot->IsSignatureWidget() &&
+ m_pFormFiller->OnKeyDown(pAnnot, nKeyCode, nFlag);
}
bool CPDFSDK_WidgetHandler::OnKeyUp(CPDFSDK_Annot* pAnnot,
@@ -248,18 +230,14 @@
bool CPDFSDK_WidgetHandler::OnSetFocus(CPDFSDK_Annot::ObservedPtr* pAnnot,
uint32_t nFlag) {
- if (!(*pAnnot)->IsSignatureWidget() && m_pFormFiller)
- return m_pFormFiller->OnSetFocus(pAnnot, nFlag);
-
- return true;
+ return (*pAnnot)->IsSignatureWidget() ||
+ m_pFormFiller->OnSetFocus(pAnnot, nFlag);
}
bool CPDFSDK_WidgetHandler::OnKillFocus(CPDFSDK_Annot::ObservedPtr* pAnnot,
uint32_t nFlag) {
- if (!(*pAnnot)->IsSignatureWidget() && m_pFormFiller)
- return m_pFormFiller->OnKillFocus(pAnnot, nFlag);
-
- return true;
+ return (*pAnnot)->IsSignatureWidget() ||
+ m_pFormFiller->OnKillFocus(pAnnot, nFlag);
}
#ifdef PDF_ENABLE_XFA
@@ -272,51 +250,43 @@
CFX_FloatRect CPDFSDK_WidgetHandler::GetViewBBox(CPDFSDK_PageView* pPageView,
CPDFSDK_Annot* pAnnot) {
- if (!pAnnot->IsSignatureWidget() && m_pFormFiller)
+ if (!pAnnot->IsSignatureWidget())
return CFX_FloatRect(m_pFormFiller->GetViewBBox(pPageView, pAnnot));
return CFX_FloatRect();
}
WideString CPDFSDK_WidgetHandler::GetText(CPDFSDK_Annot* pAnnot) {
- if (!pAnnot->IsSignatureWidget() && m_pFormFiller)
+ if (!pAnnot->IsSignatureWidget())
return m_pFormFiller->GetText(pAnnot);
return WideString();
}
WideString CPDFSDK_WidgetHandler::GetSelectedText(CPDFSDK_Annot* pAnnot) {
- if (!pAnnot->IsSignatureWidget() && m_pFormFiller)
+ if (!pAnnot->IsSignatureWidget())
return m_pFormFiller->GetSelectedText(pAnnot);
return WideString();
}
void CPDFSDK_WidgetHandler::ReplaceSelection(CPDFSDK_Annot* pAnnot,
const WideString& text) {
- if (!pAnnot->IsSignatureWidget() && m_pFormFiller)
+ if (!pAnnot->IsSignatureWidget())
m_pFormFiller->ReplaceSelection(pAnnot, text);
}
bool CPDFSDK_WidgetHandler::CanUndo(CPDFSDK_Annot* pAnnot) {
- if (!pAnnot->IsSignatureWidget() && m_pFormFiller)
- return m_pFormFiller->CanUndo(pAnnot);
- return false;
+ return !pAnnot->IsSignatureWidget() && m_pFormFiller->CanUndo(pAnnot);
}
bool CPDFSDK_WidgetHandler::CanRedo(CPDFSDK_Annot* pAnnot) {
- if (!pAnnot->IsSignatureWidget() && m_pFormFiller)
- return m_pFormFiller->CanRedo(pAnnot);
- return false;
+ return !pAnnot->IsSignatureWidget() && m_pFormFiller->CanRedo(pAnnot);
}
bool CPDFSDK_WidgetHandler::Undo(CPDFSDK_Annot* pAnnot) {
- if (!pAnnot->IsSignatureWidget() && m_pFormFiller)
- return m_pFormFiller->Undo(pAnnot);
- return false;
+ return !pAnnot->IsSignatureWidget() && m_pFormFiller->Undo(pAnnot);
}
bool CPDFSDK_WidgetHandler::Redo(CPDFSDK_Annot* pAnnot) {
- if (!pAnnot->IsSignatureWidget() && m_pFormFiller)
- return m_pFormFiller->Redo(pAnnot);
- return false;
+ return !pAnnot->IsSignatureWidget() && m_pFormFiller->Redo(pAnnot);
}
bool CPDFSDK_WidgetHandler::HitTest(CPDFSDK_PageView* pPageView,
diff --git a/fpdfsdk/cpdfsdk_widgethandler.h b/fpdfsdk/cpdfsdk_widgethandler.h
index c74869c..61b3c54 100644
--- a/fpdfsdk/cpdfsdk_widgethandler.h
+++ b/fpdfsdk/cpdfsdk_widgethandler.h
@@ -103,10 +103,6 @@
CPDFSDK_Annot::ObservedPtr* pNewAnnot) override;
#endif // PDF_ENABLE_XFA
- CFFL_InteractiveFormFiller* GetFormFiller() const {
- return m_pFormFiller.Get();
- }
-
private:
UnownedPtr<CPDFSDK_FormFillEnvironment> const m_pFormFillEnv;
UnownedPtr<CFFL_InteractiveFormFiller> const m_pFormFiller;
diff --git a/fpdfsdk/fpdf_formfill.cpp b/fpdfsdk/fpdf_formfill.cpp
index 0bd0f5e0..1d3f06f 100644
--- a/fpdfsdk/fpdf_formfill.cpp
+++ b/fpdfsdk/fpdf_formfill.cpp
@@ -669,10 +669,8 @@
auto type = static_cast<CPDF_AAction::AActionType>(aaType);
if (aa.ActionExist(type)) {
CPDF_Action action = aa.GetAction(type);
- CPDFSDK_ActionHandler* pActionHandler =
- CPDFSDKFormFillEnvironmentFromFPDFFormHandle(hHandle)
- ->GetActionHandler();
- pActionHandler->DoAction_Document(action, type, pFormFillEnv);
+ pFormFillEnv->GetActionHandler()->DoAction_Document(action, type,
+ pFormFillEnv);
}
}
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
index 6b617ea..d95d242 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
@@ -387,9 +387,7 @@
bool bEnabled) {
if (hDoc != m_pContext->GetXFADoc() || !m_pContext->GetFormFillEnv())
return;
- if (m_pContext->GetFormFillEnv()->GetInterForm()) {
- m_pContext->GetFormFillEnv()->GetInterForm()->XfaEnableCalculate(bEnabled);
- }
+ m_pContext->GetFormFillEnv()->GetInterForm()->XfaEnableCalculate(bEnabled);
}
void CPDFXFA_DocEnvironment::GetTitle(CXFA_FFDoc* hDoc, WideString& wsTitle) {
@@ -530,9 +528,8 @@
bool CPDFXFA_DocEnvironment::IsValidationsEnabled(CXFA_FFDoc* hDoc) {
if (hDoc != m_pContext->GetXFADoc() || !m_pContext->GetFormFillEnv())
return false;
-
- auto* interform = m_pContext->GetFormFillEnv()->GetInterForm();
- return !interform || interform->IsXfaValidationsEnabled();
+ auto* pInterform = m_pContext->GetFormFillEnv()->GetInterForm();
+ return pInterform->IsXfaValidationsEnabled();
}
void CPDFXFA_DocEnvironment::SetValidationsEnabled(CXFA_FFDoc* hDoc,
@@ -540,9 +537,8 @@
if (hDoc != m_pContext->GetXFADoc() || !m_pContext->GetFormFillEnv())
return;
- auto* interform = m_pContext->GetFormFillEnv()->GetInterForm();
- if (interform)
- interform->XfaSetValidationsEnabled(bEnabled);
+ m_pContext->GetFormFillEnv()->GetInterForm()->XfaSetValidationsEnabled(
+ bEnabled);
}
void CPDFXFA_DocEnvironment::SetFocusWidget(CXFA_FFDoc* hDoc,
diff --git a/fxjs/cjs_field.cpp b/fxjs/cjs_field.cpp
index ef2a252..cffefeb 100644
--- a/fxjs/cjs_field.cpp
+++ b/fxjs/cjs_field.cpp
@@ -142,13 +142,6 @@
return fields;
}
-CPDFSDK_Widget* GetWidget(CPDFSDK_FormFillEnvironment* pFormFillEnv,
- CPDF_FormControl* pFormControl) {
- CPDFSDK_InterForm* pInterForm =
- static_cast<CPDFSDK_InterForm*>(pFormFillEnv->GetInterForm());
- return pInterForm ? pInterForm->GetWidget(pFormControl) : nullptr;
-}
-
bool SetWidgetDisplayStatus(CPDFSDK_Widget* pWidget, int value) {
if (!pWidget)
return false;
@@ -209,12 +202,14 @@
std::vector<CPDF_FormField*> FieldArray =
GetFormFieldsForName(pFormFillEnv, swFieldName);
+ auto* pInterForm = pFormFillEnv->GetInterForm();
for (CPDF_FormField* pFormField : FieldArray) {
if (nControlIndex < 0) {
bool bSet = false;
for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) {
- if (CPDFSDK_Widget* pWidget =
- GetWidget(pFormFillEnv, pFormField->GetControl(i))) {
+ CPDFSDK_Widget* pWidget =
+ pInterForm->GetWidget(pFormField->GetControl(i));
+ if (pWidget) {
if (pWidget->GetBorderStyle() != nBorderStyle) {
pWidget->SetBorderStyle(nBorderStyle);
bSet = true;
@@ -228,7 +223,8 @@
return;
if (CPDF_FormControl* pFormControl =
pFormField->GetControl(nControlIndex)) {
- if (CPDFSDK_Widget* pWidget = GetWidget(pFormFillEnv, pFormControl)) {
+ CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl);
+ if (pWidget) {
if (pWidget->GetBorderStyle() != nBorderStyle) {
pWidget->SetBorderStyle(nBorderStyle);
UpdateFormControl(pFormFillEnv, pFormControl, true, true, true);
@@ -704,8 +700,8 @@
if (!pFormField)
return CJS_Result::Failure(JSMessage::kBadObjectError);
- CPDFSDK_Widget* pWidget =
- GetWidget(m_pFormFillEnv.Get(), GetSmartFieldControl(pFormField));
+ CPDFSDK_Widget* pWidget = m_pFormFillEnv->GetInterForm()->GetWidget(
+ GetSmartFieldControl(pFormField));
if (!pWidget)
return CJS_Result::Failure(JSMessage::kBadObjectError);