Remove KeyUp event handling code.

All the KeyUp code is unused, so remove them.

- The middle of the call stack has a disconnect, so the two halves are
  not hooked up.
- Even when hooked up, the call stack forms a big no-op.

Add comments to the FORM_OnKeyDown() documentation to mention this
function is a no-op, but do not deprecate/remove it, as it may become
useful in the future.

Change-Id: Idaf305fa1543c2d551a864d9d91a78192005399b
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/92333
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/cpdfsdk_baannothandler.cpp b/fpdfsdk/cpdfsdk_baannothandler.cpp
index e090400..a7d906d 100644
--- a/fpdfsdk/cpdfsdk_baannothandler.cpp
+++ b/fpdfsdk/cpdfsdk_baannothandler.cpp
@@ -94,12 +94,6 @@
       ba_annot->GetDestination(), GetFormFillEnvironment());
 }
 
-bool CPDFSDK_BAAnnotHandler::OnKeyUp(CPDFSDK_Annot* pAnnot,
-                                     FWL_VKEYCODE nKeyCode,
-                                     Mask<FWL_EVENTFLAG> nFlag) {
-  return false;
-}
-
 bool CPDFSDK_BAAnnotHandler::IsFocusableAnnot(
     const CPDF_Annot::Subtype& annot_type) const {
   DCHECK(annot_type != CPDF_Annot::Subtype::WIDGET);
diff --git a/fpdfsdk/cpdfsdk_baannothandler.h b/fpdfsdk/cpdfsdk_baannothandler.h
index 48c5f5d..7d12d5e 100644
--- a/fpdfsdk/cpdfsdk_baannothandler.h
+++ b/fpdfsdk/cpdfsdk_baannothandler.h
@@ -42,9 +42,6 @@
   bool OnKeyDown(CPDFSDK_Annot* pAnnot,
                  FWL_VKEYCODE nKeyCode,
                  Mask<FWL_EVENTFLAG> nFlag) override;
-  bool OnKeyUp(CPDFSDK_Annot* pAnnot,
-               FWL_VKEYCODE nKeyCode,
-               Mask<FWL_EVENTFLAG> nFlag) override;
   bool OnSetFocus(ObservedPtr<CPDFSDK_Annot>& pAnnot,
                   Mask<FWL_EVENTFLAG> nFlag) override;
   bool OnKillFocus(ObservedPtr<CPDFSDK_Annot>& pAnnot,
diff --git a/fpdfsdk/cpdfsdk_pageview.cpp b/fpdfsdk/cpdfsdk_pageview.cpp
index 3eaaa47..a8d6ee1 100644
--- a/fpdfsdk/cpdfsdk_pageview.cpp
+++ b/fpdfsdk/cpdfsdk_pageview.cpp
@@ -536,11 +536,6 @@
   return pAnnotHandlerMgr->Annot_OnKeyDown(pAnnot, nKeyCode, nFlag);
 }
 
-bool CPDFSDK_PageView::OnKeyUp(FWL_VKEYCODE nKeyCode,
-                               Mask<FWL_EVENTFLAG> nFlag) {
-  return false;
-}
-
 void CPDFSDK_PageView::LoadFXAnnots() {
   CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr =
       m_pFormFillEnv->GetAnnotHandlerMgr();
diff --git a/fpdfsdk/cpdfsdk_pageview.h b/fpdfsdk/cpdfsdk_pageview.h
index 9a8cc58..d5727c5 100644
--- a/fpdfsdk/cpdfsdk_pageview.h
+++ b/fpdfsdk/cpdfsdk_pageview.h
@@ -84,7 +84,6 @@
   bool OnRButtonUp(Mask<FWL_EVENTFLAG> nFlag, const CFX_PointF& point);
   bool OnChar(uint32_t nChar, Mask<FWL_EVENTFLAG> nFlag);
   bool OnKeyDown(FWL_VKEYCODE nKeyCode, Mask<FWL_EVENTFLAG> nFlag);
-  bool OnKeyUp(FWL_VKEYCODE nKeyCode, Mask<FWL_EVENTFLAG> nFlag);
   bool OnMouseMove(Mask<FWL_EVENTFLAG> nFlag, const CFX_PointF& point);
   bool OnMouseWheel(Mask<FWL_EVENTFLAG> nFlag,
                     const CFX_PointF& point,
diff --git a/fpdfsdk/cpdfsdk_widgethandler.cpp b/fpdfsdk/cpdfsdk_widgethandler.cpp
index f5adf2d..9b0d27a 100644
--- a/fpdfsdk/cpdfsdk_widgethandler.cpp
+++ b/fpdfsdk/cpdfsdk_widgethandler.cpp
@@ -78,12 +78,6 @@
              pWidget, nKeyCode, nFlag);
 }
 
-bool CPDFSDK_WidgetHandler::OnKeyUp(CPDFSDK_Annot* pAnnot,
-                                    FWL_VKEYCODE nKeyCode,
-                                    Mask<FWL_EVENTFLAG> nFlag) {
-  return false;
-}
-
 bool CPDFSDK_WidgetHandler::OnSetFocus(ObservedPtr<CPDFSDK_Annot>& pAnnot,
                                        Mask<FWL_EVENTFLAG> nFlag) {
   if (!IsFocusableAnnot(pAnnot->GetPDFAnnot()->GetSubtype()))
diff --git a/fpdfsdk/cpdfsdk_widgethandler.h b/fpdfsdk/cpdfsdk_widgethandler.h
index b879832..2275766 100644
--- a/fpdfsdk/cpdfsdk_widgethandler.h
+++ b/fpdfsdk/cpdfsdk_widgethandler.h
@@ -41,9 +41,6 @@
   bool OnKeyDown(CPDFSDK_Annot* pAnnot,
                  FWL_VKEYCODE nKeyCode,
                  Mask<FWL_EVENTFLAG> nFlag) override;
-  bool OnKeyUp(CPDFSDK_Annot* pAnnot,
-               FWL_VKEYCODE nKeyCode,
-               Mask<FWL_EVENTFLAG> nFlag) override;
   bool OnSetFocus(ObservedPtr<CPDFSDK_Annot>& pAnnot,
                   Mask<FWL_EVENTFLAG> nFlag) override;
   bool OnKillFocus(ObservedPtr<CPDFSDK_Annot>& pAnnot,
diff --git a/fpdfsdk/fpdf_formfill.cpp b/fpdfsdk/fpdf_formfill.cpp
index 089c1d3..4b59b02 100644
--- a/fpdfsdk/fpdf_formfill.cpp
+++ b/fpdfsdk/fpdf_formfill.cpp
@@ -504,11 +504,7 @@
                                                  FPDF_PAGE page,
                                                  int nKeyCode,
                                                  int modifier) {
-  CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page);
-  return pPageView &&
-         pPageView->OnKeyUp(
-             static_cast<FWL_VKEYCODE>(nKeyCode),
-             Mask<FWL_EVENTFLAG>::FromUnderlyingUnchecked(modifier));
+  return false;
 }
 
 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FORM_OnChar(FPDF_FORMHANDLE hHandle,
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.cpp
index 4aa7177..ade46c4 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.cpp
@@ -270,16 +270,6 @@
                                    GetKeyFlags(nFlag));
 }
 
-bool CPDFXFA_WidgetHandler::OnKeyUp(CPDFSDK_Annot* pAnnot,
-                                    FWL_VKEYCODE nKeyCode,
-                                    Mask<FWL_EVENTFLAG> nFlag) {
-  CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot);
-  CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler();
-  return pWidgetHandler->OnKeyUp(pXFAWidget->GetXFAFFWidget(),
-                                 static_cast<XFA_FWL_VKEYCODE>(nKeyCode),
-                                 GetKeyFlags(nFlag));
-}
-
 bool CPDFXFA_WidgetHandler::OnSetFocus(ObservedPtr<CPDFSDK_Annot>& pAnnot,
                                        Mask<FWL_EVENTFLAG> nFlag) {
   return true;
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.h b/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.h
index 596bb9e..9153471 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.h
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.h
@@ -44,9 +44,6 @@
   bool OnKeyDown(CPDFSDK_Annot* pAnnot,
                  FWL_VKEYCODE nKeyCode,
                  Mask<FWL_EVENTFLAG> nFlag) override;
-  bool OnKeyUp(CPDFSDK_Annot* pAnnot,
-               FWL_VKEYCODE nKeyCode,
-               Mask<FWL_EVENTFLAG> nFlag) override;
   bool OnSetFocus(ObservedPtr<CPDFSDK_Annot>& pAnnot,
                   Mask<FWL_EVENTFLAG> nFlag) override;
   bool OnKillFocus(ObservedPtr<CPDFSDK_Annot>& pAnnot,
diff --git a/fpdfsdk/ipdfsdk_annothandler.h b/fpdfsdk/ipdfsdk_annothandler.h
index 939f6f0..355998d 100644
--- a/fpdfsdk/ipdfsdk_annothandler.h
+++ b/fpdfsdk/ipdfsdk_annothandler.h
@@ -54,9 +54,6 @@
   virtual bool OnKeyDown(CPDFSDK_Annot* pAnnot,
                          FWL_VKEYCODE nKeyCode,
                          Mask<FWL_EVENTFLAG> nFlag) = 0;
-  virtual bool OnKeyUp(CPDFSDK_Annot* pAnnot,
-                       FWL_VKEYCODE nKeyCode,
-                       Mask<FWL_EVENTFLAG> nFlag) = 0;
   virtual bool OnSetFocus(ObservedPtr<CPDFSDK_Annot>& pAnnot,
                           Mask<FWL_EVENTFLAG> nFlag) = 0;
   virtual bool OnKillFocus(ObservedPtr<CPDFSDK_Annot>& pAnnot,
diff --git a/public/fpdf_formfill.h b/public/fpdf_formfill.h
index ee70ed9..03305e0 100644
--- a/public/fpdf_formfill.h
+++ b/public/fpdf_formfill.h
@@ -1480,6 +1480,9 @@
  *                       flag values).
  * Return Value:
  *       True indicates success; otherwise false.
+ * Comments:
+ *       Currently unimplemented and always returns false. PDFium reserves this
+ *       API and may implement it in the future on an as-needed basis.
  */
 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FORM_OnKeyUp(FPDF_FORMHANDLE hHandle,
                                                  FPDF_PAGE page,
diff --git a/xfa/fwl/cfwl_combobox.cpp b/xfa/fwl/cfwl_combobox.cpp
index c0f26f8..541dc9b 100644
--- a/xfa/fwl/cfwl_combobox.cpp
+++ b/xfa/fwl/cfwl_combobox.cpp
@@ -406,8 +406,6 @@
     case CFWL_Message::Type::kKey: {
       backDefault = false;
       CFWL_MessageKey* pKey = static_cast<CFWL_MessageKey*>(pMessage);
-      if (pKey->m_dwCmd == CFWL_MessageKey::KeyCommand::kKeyUp)
-        break;
       if (IsDropListVisible() &&
           pKey->m_dwCmd == CFWL_MessageKey::KeyCommand::kKeyDown) {
         bool bListKey = pKey->m_dwKeyCodeOrChar == XFA_FWL_VKEY_Up ||
diff --git a/xfa/fwl/cfwl_messagekey.h b/xfa/fwl/cfwl_messagekey.h
index 2354f66..68503d6 100644
--- a/xfa/fwl/cfwl_messagekey.h
+++ b/xfa/fwl/cfwl_messagekey.h
@@ -13,7 +13,7 @@
 
 class CFWL_MessageKey final : public CFWL_Message {
  public:
-  enum class KeyCommand : uint8_t { kKeyDown, kKeyUp, kChar };
+  enum class KeyCommand : uint8_t { kKeyDown, kChar };
 
   CFWL_MessageKey(CFWL_Widget* pDstTarget,
                   KeyCommand subtype,
diff --git a/xfa/fxfa/cxfa_fffield.cpp b/xfa/fxfa/cxfa_fffield.cpp
index 7196e85..9265323 100644
--- a/xfa/fxfa/cxfa_fffield.cpp
+++ b/xfa/fxfa/cxfa_fffield.cpp
@@ -544,17 +544,6 @@
   return true;
 }
 
-bool CXFA_FFField::OnKeyUp(XFA_FWL_VKEYCODE dwKeyCode,
-                           Mask<XFA_FWL_KeyFlag> dwFlags) {
-  if (!GetNormalWidget() || !GetDoc()->GetXFADoc()->IsInteractive())
-    return false;
-
-  CFWL_MessageKey msg(GetNormalWidget(), CFWL_MessageKey::KeyCommand::kKeyUp,
-                      dwFlags, dwKeyCode);
-  SendMessageToFWLWidget(&msg);
-  return true;
-}
-
 bool CXFA_FFField::OnChar(uint32_t dwChar, Mask<XFA_FWL_KeyFlag> dwFlags) {
   if (!GetDoc()->GetXFADoc()->IsInteractive())
     return false;
diff --git a/xfa/fxfa/cxfa_fffield.h b/xfa/fxfa/cxfa_fffield.h
index 36be0fb..0ab8b62 100644
--- a/xfa/fxfa/cxfa_fffield.h
+++ b/xfa/fxfa/cxfa_fffield.h
@@ -61,8 +61,6 @@
   bool OnKillFocus(CXFA_FFWidget* pNewWidget) override WARN_UNUSED_RESULT;
   bool OnKeyDown(XFA_FWL_VKEYCODE dwKeyCode,
                  Mask<XFA_FWL_KeyFlag> dwFlags) override;
-  bool OnKeyUp(XFA_FWL_VKEYCODE dwKeyCode,
-               Mask<XFA_FWL_KeyFlag> dwFlags) override;
   bool OnChar(uint32_t dwChar, Mask<XFA_FWL_KeyFlag> dwFlags) override;
   FWL_WidgetHit HitTest(const CFX_PointF& point) override;
 
diff --git a/xfa/fxfa/cxfa_ffsignature.cpp b/xfa/fxfa/cxfa_ffsignature.cpp
index 960559b..44c2eac 100644
--- a/xfa/fxfa/cxfa_ffsignature.cpp
+++ b/xfa/fxfa/cxfa_ffsignature.cpp
@@ -99,11 +99,6 @@
   return false;
 }
 
-bool CXFA_FFSignature::OnKeyUp(XFA_FWL_VKEYCODE dwKeyCode,
-                               Mask<XFA_FWL_KeyFlag> dwFlags) {
-  return false;
-}
-
 bool CXFA_FFSignature::OnChar(uint32_t nChar, Mask<XFA_FWL_KeyFlag> dwFlags) {
   return false;
 }
diff --git a/xfa/fxfa/cxfa_ffsignature.h b/xfa/fxfa/cxfa_ffsignature.h
index 96ff95e..d49842b 100644
--- a/xfa/fxfa/cxfa_ffsignature.h
+++ b/xfa/fxfa/cxfa_ffsignature.h
@@ -44,8 +44,6 @@
                        const CFX_PointF& point) override;
   bool OnKeyDown(XFA_FWL_VKEYCODE dwKeyCode,
                  Mask<XFA_FWL_KeyFlag> dwFlags) override;
-  bool OnKeyUp(XFA_FWL_VKEYCODE dwKeyCode,
-               Mask<XFA_FWL_KeyFlag> dwFlags) override;
   bool OnChar(uint32_t dwChar, Mask<XFA_FWL_KeyFlag> dwFlags) override;
   FWL_WidgetHit HitTest(const CFX_PointF& point) override;
   FormFieldType GetFormFieldType() override;
diff --git a/xfa/fxfa/cxfa_ffwidget.cpp b/xfa/fxfa/cxfa_ffwidget.cpp
index f070c7c..d274595 100644
--- a/xfa/fxfa/cxfa_ffwidget.cpp
+++ b/xfa/fxfa/cxfa_ffwidget.cpp
@@ -455,11 +455,6 @@
   return false;
 }
 
-bool CXFA_FFWidget::OnKeyUp(XFA_FWL_VKEYCODE dwKeyCode,
-                            Mask<XFA_FWL_KeyFlag> dwFlags) {
-  return false;
-}
-
 bool CXFA_FFWidget::OnChar(uint32_t dwChar, Mask<XFA_FWL_KeyFlag> dwFlags) {
   return false;
 }
diff --git a/xfa/fxfa/cxfa_ffwidget.h b/xfa/fxfa/cxfa_ffwidget.h
index 45fc009..3719a73 100644
--- a/xfa/fxfa/cxfa_ffwidget.h
+++ b/xfa/fxfa/cxfa_ffwidget.h
@@ -132,8 +132,6 @@
   virtual bool OnKillFocus(CXFA_FFWidget* pNewWidget) WARN_UNUSED_RESULT;
   virtual bool OnKeyDown(XFA_FWL_VKEYCODE dwKeyCode,
                          Mask<XFA_FWL_KeyFlag> dwFlags) WARN_UNUSED_RESULT;
-  virtual bool OnKeyUp(XFA_FWL_VKEYCODE dwKeyCode,
-                       Mask<XFA_FWL_KeyFlag> dwFlags) WARN_UNUSED_RESULT;
   virtual bool OnChar(uint32_t dwChar,
                       Mask<XFA_FWL_KeyFlag> dwFlags) WARN_UNUSED_RESULT;
 
diff --git a/xfa/fxfa/cxfa_ffwidgethandler.cpp b/xfa/fxfa/cxfa_ffwidgethandler.cpp
index c413187..8371ef7 100644
--- a/xfa/fxfa/cxfa_ffwidgethandler.cpp
+++ b/xfa/fxfa/cxfa_ffwidgethandler.cpp
@@ -117,12 +117,6 @@
   return bRet;
 }
 
-bool CXFA_FFWidgetHandler::OnKeyUp(CXFA_FFWidget* hWidget,
-                                   XFA_FWL_VKEYCODE dwKeyCode,
-                                   Mask<XFA_FWL_KeyFlag> dwFlags) {
-  return hWidget->OnKeyUp(dwKeyCode, dwFlags);
-}
-
 bool CXFA_FFWidgetHandler::OnChar(CXFA_FFWidget* hWidget,
                                   uint32_t dwChar,
                                   Mask<XFA_FWL_KeyFlag> dwFlags) {
diff --git a/xfa/fxfa/cxfa_ffwidgethandler.h b/xfa/fxfa/cxfa_ffwidgethandler.h
index d26b2eb..3b77fd4 100644
--- a/xfa/fxfa/cxfa_ffwidgethandler.h
+++ b/xfa/fxfa/cxfa_ffwidgethandler.h
@@ -72,9 +72,6 @@
   bool OnKeyDown(CXFA_FFWidget* hWidget,
                  XFA_FWL_VKEYCODE dwKeyCode,
                  Mask<XFA_FWL_KeyFlag> dwFlags);
-  bool OnKeyUp(CXFA_FFWidget* hWidget,
-               XFA_FWL_VKEYCODE dwKeyCode,
-               Mask<XFA_FWL_KeyFlag> dwFlags);
   bool OnChar(CXFA_FFWidget* hWidget,
               uint32_t dwChar,
               Mask<XFA_FWL_KeyFlag> dwFlags);