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);