Remove most remaining virtual methods from IPDFSDK_AnnotHandler.

Move the overrides from methods like GetText() and SelectAllText() to
CPDFSDK_Annot instead. Continue removing CPDFSDK_AnnotHandlerMgr
pass-throughs, such that IPDFSDK_AnnotHandler and
CPDFSDK_AnnotHandlerMgr are close to being completely dead code.

Change-Id: I1ddf4b8b1155cfadb60e20a25aca06893681434d
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/92371
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/cpdfsdk_annot.h b/fpdfsdk/cpdfsdk_annot.h
index 17a68b4..a899d51 100644
--- a/fpdfsdk/cpdfsdk_annot.h
+++ b/fpdfsdk/cpdfsdk_annot.h
@@ -12,6 +12,7 @@
 #include "core/fxcrt/mask.h"
 #include "core/fxcrt/observed_ptr.h"
 #include "core/fxcrt/unowned_ptr.h"
+#include "core/fxcrt/widestring.h"
 #include "public/fpdf_fwlevent.h"
 
 class CPDF_Page;
@@ -72,6 +73,12 @@
   virtual bool CanRedo() = 0;
   virtual bool Undo() = 0;
   virtual bool Redo() = 0;
+  virtual WideString GetText() = 0;
+  virtual WideString GetSelectedText() = 0;
+  virtual void ReplaceSelection(const WideString& text) = 0;
+  virtual bool SelectAllText() = 0;
+  virtual bool SetIndexSelected(int index, bool selected) = 0;
+  virtual bool IsIndexSelected(int index) = 0;
 
   // Callers must check if `pAnnot` is still valid after calling these methods,
   // before accessing them again.
diff --git a/fpdfsdk/cpdfsdk_annothandlermgr.cpp b/fpdfsdk/cpdfsdk_annothandlermgr.cpp
index 6b5f93b..f3dc413 100644
--- a/fpdfsdk/cpdfsdk_annothandlermgr.cpp
+++ b/fpdfsdk/cpdfsdk_annothandlermgr.cpp
@@ -46,24 +46,6 @@
       ->NewAnnot(pAnnot, pPageView);
 }
 
-WideString CPDFSDK_AnnotHandlerMgr::Annot_GetText(CPDFSDK_Annot* pAnnot) {
-  return GetAnnotHandler(pAnnot)->GetText(pAnnot);
-}
-
-WideString CPDFSDK_AnnotHandlerMgr::Annot_GetSelectedText(
-    CPDFSDK_Annot* pAnnot) {
-  return GetAnnotHandler(pAnnot)->GetSelectedText(pAnnot);
-}
-
-void CPDFSDK_AnnotHandlerMgr::Annot_ReplaceSelection(CPDFSDK_Annot* pAnnot,
-                                                     const WideString& text) {
-  GetAnnotHandler(pAnnot)->ReplaceSelection(pAnnot, text);
-}
-
-bool CPDFSDK_AnnotHandlerMgr::Annot_SelectAllText(CPDFSDK_Annot* pAnnot) {
-  return GetAnnotHandler(pAnnot)->SelectAllText(pAnnot);
-}
-
 IPDFSDK_AnnotHandler* CPDFSDK_AnnotHandlerMgr::GetAnnotHandler(
     CPDFSDK_Annot* pAnnot) const {
   return GetAnnotHandlerOfType(pAnnot->GetAnnotSubtype());
@@ -81,19 +63,3 @@
 
   return m_pBAAnnotHandler.get();
 }
-
-bool CPDFSDK_AnnotHandlerMgr::Annot_SetIndexSelected(
-    ObservedPtr<CPDFSDK_Annot>& pAnnot,
-    int index,
-    bool selected) {
-  DCHECK(pAnnot);
-  return GetAnnotHandler(pAnnot.Get())
-      ->SetIndexSelected(pAnnot, index, selected);
-}
-
-bool CPDFSDK_AnnotHandlerMgr::Annot_IsIndexSelected(
-    ObservedPtr<CPDFSDK_Annot>& pAnnot,
-    int index) {
-  DCHECK(pAnnot);
-  return GetAnnotHandler(pAnnot.Get())->IsIndexSelected(pAnnot, index);
-}
diff --git a/fpdfsdk/cpdfsdk_annothandlermgr.h b/fpdfsdk/cpdfsdk_annothandlermgr.h
index 54aa63e..0987301 100644
--- a/fpdfsdk/cpdfsdk_annothandlermgr.h
+++ b/fpdfsdk/cpdfsdk_annothandlermgr.h
@@ -34,16 +34,6 @@
   std::unique_ptr<CPDFSDK_Annot> NewAnnot(CPDF_Annot* pAnnot,
                                           CPDFSDK_PageView* pPageView);
 
-  WideString Annot_GetText(CPDFSDK_Annot* pAnnot);
-  WideString Annot_GetSelectedText(CPDFSDK_Annot* pAnnot);
-  void Annot_ReplaceSelection(CPDFSDK_Annot* pAnnot, const WideString& text);
-  bool Annot_SelectAllText(CPDFSDK_Annot* pAnnot);
-
-  bool Annot_SetIndexSelected(ObservedPtr<CPDFSDK_Annot>& pAnnot,
-                              int index,
-                              bool selected);
-  bool Annot_IsIndexSelected(ObservedPtr<CPDFSDK_Annot>& pAnnot, int index);
-
  private:
   friend class CPDFSDK_BAAnnotHandlerTest;
 
diff --git a/fpdfsdk/cpdfsdk_baannot.cpp b/fpdfsdk/cpdfsdk_baannot.cpp
index 01428d8..c94fc60 100644
--- a/fpdfsdk/cpdfsdk_baannot.cpp
+++ b/fpdfsdk/cpdfsdk_baannot.cpp
@@ -395,6 +395,28 @@
   return false;
 }
 
+WideString CPDFSDK_BAAnnot::GetText() {
+  return WideString();
+}
+
+WideString CPDFSDK_BAAnnot::GetSelectedText() {
+  return WideString();
+}
+
+void CPDFSDK_BAAnnot::ReplaceSelection(const WideString& text) {}
+
+bool CPDFSDK_BAAnnot::SelectAllText() {
+  return false;
+}
+
+bool CPDFSDK_BAAnnot::SetIndexSelected(int index, bool selected) {
+  return false;
+}
+
+bool CPDFSDK_BAAnnot::IsIndexSelected(int index) {
+  return false;
+}
+
 CPDF_Dest CPDFSDK_BAAnnot::GetDestination() const {
   if (m_pAnnot->GetSubtype() != CPDF_Annot::Subtype::LINK)
     return CPDF_Dest(nullptr);
diff --git a/fpdfsdk/cpdfsdk_baannot.h b/fpdfsdk/cpdfsdk_baannot.h
index c1223ae..383ee8a 100644
--- a/fpdfsdk/cpdfsdk_baannot.h
+++ b/fpdfsdk/cpdfsdk_baannot.h
@@ -42,6 +42,12 @@
   bool CanRedo() override;
   bool Undo() override;
   bool Redo() override;
+  WideString GetText() override;
+  WideString GetSelectedText() override;
+  void ReplaceSelection(const WideString& text) override;
+  bool SelectAllText() override;
+  bool SetIndexSelected(int index, bool selected) override;
+  bool IsIndexSelected(int index) override;
 
   virtual CPDF_Action GetAAction(CPDF_AAction::AActionType eAAT);
   virtual bool IsAppearanceValid();
diff --git a/fpdfsdk/cpdfsdk_baannothandler.cpp b/fpdfsdk/cpdfsdk_baannothandler.cpp
index f5ee821..65522fe 100644
--- a/fpdfsdk/cpdfsdk_baannothandler.cpp
+++ b/fpdfsdk/cpdfsdk_baannothandler.cpp
@@ -32,30 +32,3 @@
   CHECK(pPageView);
   return std::make_unique<CPDFSDK_BAAnnot>(pAnnot, pPageView);
 }
-
-bool CPDFSDK_BAAnnotHandler::SetIndexSelected(
-    ObservedPtr<CPDFSDK_Annot>& pAnnot,
-    int index,
-    bool selected) {
-  return false;
-}
-
-bool CPDFSDK_BAAnnotHandler::IsIndexSelected(ObservedPtr<CPDFSDK_Annot>& pAnnot,
-                                             int index) {
-  return false;
-}
-
-WideString CPDFSDK_BAAnnotHandler::GetText(CPDFSDK_Annot* pAnnot) {
-  return WideString();
-}
-
-WideString CPDFSDK_BAAnnotHandler::GetSelectedText(CPDFSDK_Annot* pAnnot) {
-  return WideString();
-}
-
-void CPDFSDK_BAAnnotHandler::ReplaceSelection(CPDFSDK_Annot* pAnnot,
-                                              const WideString& text) {}
-
-bool CPDFSDK_BAAnnotHandler::SelectAllText(CPDFSDK_Annot* pAnnot) {
-  return false;
-}
diff --git a/fpdfsdk/cpdfsdk_baannothandler.h b/fpdfsdk/cpdfsdk_baannothandler.h
index 550beba..5030958 100644
--- a/fpdfsdk/cpdfsdk_baannothandler.h
+++ b/fpdfsdk/cpdfsdk_baannothandler.h
@@ -24,16 +24,6 @@
   // IPDFSDK_AnnotHandler:
   std::unique_ptr<CPDFSDK_Annot> NewAnnot(CPDF_Annot* pAnnot,
                                           CPDFSDK_PageView* pPageView) override;
-
-  WideString GetText(CPDFSDK_Annot* pAnnot) override;
-  WideString GetSelectedText(CPDFSDK_Annot* pAnnot) override;
-  void ReplaceSelection(CPDFSDK_Annot* pAnnot, const WideString& text) override;
-  bool SelectAllText(CPDFSDK_Annot* pAnnot) override;
-
-  bool SetIndexSelected(ObservedPtr<CPDFSDK_Annot>& pAnnot,
-                        int index,
-                        bool selected) override;
-  bool IsIndexSelected(ObservedPtr<CPDFSDK_Annot>& pAnnot, int index) override;
 };
 
 #endif  // FPDFSDK_CPDFSDK_BAANNOTHANDLER_H_
diff --git a/fpdfsdk/cpdfsdk_pageview.cpp b/fpdfsdk/cpdfsdk_pageview.cpp
index 21afa5f..e6daccb 100644
--- a/fpdfsdk/cpdfsdk_pageview.cpp
+++ b/fpdfsdk/cpdfsdk_pageview.cpp
@@ -206,13 +206,8 @@
 #endif  // PDF_ENABLE_XFA
 
 WideString CPDFSDK_PageView::GetFocusedFormText() {
-  if (CPDFSDK_Annot* pAnnot = GetFocusAnnot()) {
-    CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr =
-        m_pFormFillEnv->GetAnnotHandlerMgr();
-    return pAnnotHandlerMgr->Annot_GetText(pAnnot);
-  }
-
-  return WideString();
+  CPDFSDK_Annot* annot = GetFocusAnnot();
+  return annot ? annot->GetText() : WideString();
 }
 
 CPDFSDK_Annot* CPDFSDK_PageView::GetNextAnnot(CPDFSDK_Annot* pAnnot) {
@@ -256,30 +251,21 @@
 }
 
 WideString CPDFSDK_PageView::GetSelectedText() {
-  if (CPDFSDK_Annot* pAnnot = GetFocusAnnot()) {
-    CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr =
-        m_pFormFillEnv->GetAnnotHandlerMgr();
-    return pAnnotHandlerMgr->Annot_GetSelectedText(pAnnot);
-  }
-
-  return WideString();
+  CPDFSDK_Annot* annot = GetFocusAnnot();
+  if (!annot)
+    return WideString();
+  return annot->GetSelectedText();
 }
 
 void CPDFSDK_PageView::ReplaceSelection(const WideString& text) {
-  if (CPDFSDK_Annot* pAnnot = GetFocusAnnot()) {
-    CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr =
-        m_pFormFillEnv->GetAnnotHandlerMgr();
-    pAnnotHandlerMgr->Annot_ReplaceSelection(pAnnot, text);
-  }
+  CPDFSDK_Annot* annot = GetFocusAnnot();
+  if (annot)
+    annot->ReplaceSelection(text);
 }
 
 bool CPDFSDK_PageView::SelectAllText() {
   CPDFSDK_Annot* annot = GetFocusAnnot();
-  if (!annot)
-    return false;
-
-  CPDFSDK_AnnotHandlerMgr* handler = m_pFormFillEnv->GetAnnotHandlerMgr();
-  return handler->Annot_SelectAllText(annot);
+  return annot && annot->SelectAllText();
 }
 
 bool CPDFSDK_PageView::CanUndo() {
@@ -458,26 +444,13 @@
 }
 
 bool CPDFSDK_PageView::SetIndexSelected(int index, bool selected) {
-  if (CPDFSDK_Annot* pAnnot = GetFocusAnnot()) {
-    ObservedPtr<CPDFSDK_Annot> pAnnotObserved(pAnnot);
-    CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr =
-        m_pFormFillEnv->GetAnnotHandlerMgr();
-    return pAnnotHandlerMgr->Annot_SetIndexSelected(pAnnotObserved, index,
-                                                    selected);
-  }
-
-  return false;
+  CPDFSDK_Annot* annot = GetFocusAnnot();
+  return annot && annot->SetIndexSelected(index, selected);
 }
 
 bool CPDFSDK_PageView::IsIndexSelected(int index) {
-  if (CPDFSDK_Annot* pAnnot = GetFocusAnnot()) {
-    ObservedPtr<CPDFSDK_Annot> pAnnotObserved(pAnnot);
-    CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr =
-        m_pFormFillEnv->GetAnnotHandlerMgr();
-    return pAnnotHandlerMgr->Annot_IsIndexSelected(pAnnotObserved, index);
-  }
-
-  return false;
+  CPDFSDK_Annot* annot = GetFocusAnnot();
+  return annot && annot->IsIndexSelected(index);
 }
 
 bool CPDFSDK_PageView::OnChar(uint32_t nChar, Mask<FWL_EVENTFLAG> nFlags) {
diff --git a/fpdfsdk/cpdfsdk_widget.cpp b/fpdfsdk/cpdfsdk_widget.cpp
index d85fbbc..2346cbf 100644
--- a/fpdfsdk/cpdfsdk_widget.cpp
+++ b/fpdfsdk/cpdfsdk_widget.cpp
@@ -846,6 +846,42 @@
   return !IsSignatureWidget() && GetInteractiveFormFiller()->Redo(this);
 }
 
+WideString CPDFSDK_Widget::GetText() {
+  if (IsSignatureWidget())
+    return WideString();
+  return GetInteractiveFormFiller()->GetText(this);
+}
+
+WideString CPDFSDK_Widget::GetSelectedText() {
+  if (IsSignatureWidget())
+    return WideString();
+  return GetInteractiveFormFiller()->GetSelectedText(this);
+}
+
+void CPDFSDK_Widget::ReplaceSelection(const WideString& text) {
+  if (IsSignatureWidget())
+    return;
+
+  GetInteractiveFormFiller()->ReplaceSelection(this, text);
+}
+
+bool CPDFSDK_Widget::SelectAllText() {
+  return !IsSignatureWidget() &&
+         GetInteractiveFormFiller()->SelectAllText(this);
+}
+
+bool CPDFSDK_Widget::SetIndexSelected(int index, bool selected) {
+  ObservedPtr<CPDFSDK_Widget> observer(this);
+  return !IsSignatureWidget() && GetInteractiveFormFiller()->SetIndexSelected(
+                                     observer, index, selected);
+}
+
+bool CPDFSDK_Widget::IsIndexSelected(int index) {
+  ObservedPtr<CPDFSDK_Widget> observer(this);
+  return !IsSignatureWidget() &&
+         GetInteractiveFormFiller()->IsIndexSelected(observer, index);
+}
+
 void CPDFSDK_Widget::DrawAppearance(CFX_RenderDevice* pDevice,
                                     const CFX_Matrix& mtUser2Device,
                                     CPDF_Annot::AppearanceMode mode) {
diff --git a/fpdfsdk/cpdfsdk_widget.h b/fpdfsdk/cpdfsdk_widget.h
index 94c5dd3..9d4090b 100644
--- a/fpdfsdk/cpdfsdk_widget.h
+++ b/fpdfsdk/cpdfsdk_widget.h
@@ -63,6 +63,12 @@
   bool CanRedo() override;
   bool Undo() override;
   bool Redo() override;
+  WideString GetText() override;
+  WideString GetSelectedText() override;
+  void ReplaceSelection(const WideString& text) override;
+  bool SelectAllText() override;
+  bool SetIndexSelected(int index, bool selected) override;
+  bool IsIndexSelected(int index) override;
   void DrawAppearance(CFX_RenderDevice* pDevice,
                       const CFX_Matrix& mtUser2Device,
                       CPDF_Annot::AppearanceMode mode) override;
diff --git a/fpdfsdk/cpdfsdk_widgethandler.cpp b/fpdfsdk/cpdfsdk_widgethandler.cpp
index 5e81188..989a7d0 100644
--- a/fpdfsdk/cpdfsdk_widgethandler.cpp
+++ b/fpdfsdk/cpdfsdk_widgethandler.cpp
@@ -45,61 +45,3 @@
     pWidget->ResetAppearance(absl::nullopt, CPDFSDK_Widget::kValueUnchanged);
   return pWidget;
 }
-
-bool CPDFSDK_WidgetHandler::SetIndexSelected(ObservedPtr<CPDFSDK_Annot>& pAnnot,
-                                             int index,
-                                             bool selected) {
-  ObservedPtr<CPDFSDK_Widget> pWidget(ToCPDFSDKWidget(pAnnot.Get()));
-  return !pWidget->IsSignatureWidget() &&
-         GetFormFillEnvironment()->GetInteractiveFormFiller()->SetIndexSelected(
-             pWidget, index, selected);
-}
-
-bool CPDFSDK_WidgetHandler::IsIndexSelected(ObservedPtr<CPDFSDK_Annot>& pAnnot,
-                                            int index) {
-  ObservedPtr<CPDFSDK_Widget> pWidget(ToCPDFSDKWidget(pAnnot.Get()));
-  return !pWidget->IsSignatureWidget() &&
-         GetFormFillEnvironment()->GetInteractiveFormFiller()->IsIndexSelected(
-             pWidget, index);
-}
-
-WideString CPDFSDK_WidgetHandler::GetText(CPDFSDK_Annot* pAnnot) {
-  CPDFSDK_Widget* pWidget = ToCPDFSDKWidget(pAnnot);
-  if (pWidget->IsSignatureWidget())
-    return WideString();
-
-  return GetFormFillEnvironment()->GetInteractiveFormFiller()->GetText(pWidget);
-}
-
-WideString CPDFSDK_WidgetHandler::GetSelectedText(CPDFSDK_Annot* pAnnot) {
-  CPDFSDK_Widget* pWidget = ToCPDFSDKWidget(pAnnot);
-  if (pWidget->IsSignatureWidget())
-    return WideString();
-
-  return GetFormFillEnvironment()->GetInteractiveFormFiller()->GetSelectedText(
-      pWidget);
-}
-
-void CPDFSDK_WidgetHandler::ReplaceSelection(CPDFSDK_Annot* pAnnot,
-                                             const WideString& text) {
-  CPDFSDK_Widget* pWidget = ToCPDFSDKWidget(pAnnot);
-  if (pWidget->IsSignatureWidget())
-    return;
-
-  GetFormFillEnvironment()->GetInteractiveFormFiller()->ReplaceSelection(
-      pWidget, text);
-}
-
-bool CPDFSDK_WidgetHandler::SelectAllText(CPDFSDK_Annot* pAnnot) {
-  CPDFSDK_Widget* pWidget = ToCPDFSDKWidget(pAnnot);
-  return !pWidget->IsSignatureWidget() &&
-         GetFormFillEnvironment()->GetInteractiveFormFiller()->SelectAllText(
-             pWidget);
-}
-
-bool CPDFSDK_WidgetHandler::IsFocusableAnnot(
-    const CPDF_Annot::Subtype& annot_type) const {
-  DCHECK_EQ(annot_type, CPDF_Annot::Subtype::WIDGET);
-  return pdfium::Contains(GetFormFillEnvironment()->GetFocusableAnnotSubtypes(),
-                          annot_type);
-}
diff --git a/fpdfsdk/cpdfsdk_widgethandler.h b/fpdfsdk/cpdfsdk_widgethandler.h
index 1028cc1..793889c 100644
--- a/fpdfsdk/cpdfsdk_widgethandler.h
+++ b/fpdfsdk/cpdfsdk_widgethandler.h
@@ -24,18 +24,6 @@
   // IPDFSDK_AnnotHandler:
   std::unique_ptr<CPDFSDK_Annot> NewAnnot(CPDF_Annot* pAnnot,
                                           CPDFSDK_PageView* pPageView) override;
-
-  WideString GetText(CPDFSDK_Annot* pAnnot) override;
-  WideString GetSelectedText(CPDFSDK_Annot* pAnnot) override;
-  void ReplaceSelection(CPDFSDK_Annot* pAnnot, const WideString& text) override;
-  bool SelectAllText(CPDFSDK_Annot* pAnnot) override;
-  bool SetIndexSelected(ObservedPtr<CPDFSDK_Annot>& pAnnot,
-                        int index,
-                        bool selected) override;
-  bool IsIndexSelected(ObservedPtr<CPDFSDK_Annot>& pAnnot, int index) override;
-
- private:
-  bool IsFocusableAnnot(const CPDF_Annot::Subtype& annot_type) const;
 };
 
 #endif  // FPDFSDK_CPDFSDK_WIDGETHANDLER_H_
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_widget.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_widget.cpp
index fb0abd4..202ab42 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_widget.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_widget.cpp
@@ -222,6 +222,39 @@
   return widget_handler && widget_handler->Redo(GetXFAFFWidget());
 }
 
+WideString CPDFXFA_Widget::GetText() {
+  CXFA_FFWidgetHandler* widget_handler = GetWidgetHandler();
+  if (!widget_handler)
+    return WideString();
+  return widget_handler->GetText(GetXFAFFWidget());
+}
+
+WideString CPDFXFA_Widget::GetSelectedText() {
+  CXFA_FFWidgetHandler* widget_handler = GetWidgetHandler();
+  if (!widget_handler)
+    return WideString();
+  return widget_handler->GetSelectedText(GetXFAFFWidget());
+}
+
+void CPDFXFA_Widget::ReplaceSelection(const WideString& text) {
+  CXFA_FFWidgetHandler* widget_handler = GetWidgetHandler();
+  if (widget_handler)
+    widget_handler->PasteText(GetXFAFFWidget(), text);
+}
+
+bool CPDFXFA_Widget::SelectAllText() {
+  CXFA_FFWidgetHandler* widget_handler = GetWidgetHandler();
+  return widget_handler && widget_handler->SelectAllText(GetXFAFFWidget());
+}
+
+bool CPDFXFA_Widget::SetIndexSelected(int index, bool selected) {
+  return false;
+}
+
+bool CPDFXFA_Widget::IsIndexSelected(int index) {
+  return false;
+}
+
 CXFA_FFDocView* CPDFXFA_Widget::GetDocView() {
   CXFA_FFPageView* page_view = GetXFAFFWidget()->GetPageView();
   return page_view ? page_view->GetDocView() : nullptr;
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_widget.h b/fpdfsdk/fpdfxfa/cpdfxfa_widget.h
index 3dbcb4a..7346f8e 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_widget.h
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_widget.h
@@ -36,6 +36,12 @@
   bool CanRedo() override;
   bool Undo() override;
   bool Redo() override;
+  WideString GetText() override;
+  WideString GetSelectedText() override;
+  void ReplaceSelection(const WideString& text) override;
+  bool SelectAllText() override;
+  bool SetIndexSelected(int index, bool selected) override;
+  bool IsIndexSelected(int index) override;
 
   CXFA_FFWidget* GetXFAFFWidget() const { return m_pXFAFFWidget.Get(); }
 
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.cpp
index 4aab472..bf96e92 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.cpp
@@ -208,72 +208,3 @@
     CPDFSDK_PageView* pPageView) {
   return nullptr;
 }
-
-WideString CPDFXFA_WidgetHandler::GetText(CPDFSDK_Annot* pAnnot) {
-  CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot);
-  CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler();
-  return pWidgetHandler->GetText(pXFAWidget->GetXFAFFWidget());
-}
-
-WideString CPDFXFA_WidgetHandler::GetSelectedText(CPDFSDK_Annot* pAnnot) {
-  CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot);
-  CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler();
-  return pWidgetHandler->GetSelectedText(pXFAWidget->GetXFAFFWidget());
-}
-
-void CPDFXFA_WidgetHandler::ReplaceSelection(CPDFSDK_Annot* pAnnot,
-                                             const WideString& text) {
-  CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot);
-  CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler();
-  return pWidgetHandler->PasteText(pXFAWidget->GetXFAFFWidget(), text);
-}
-
-bool CPDFXFA_WidgetHandler::SelectAllText(CPDFSDK_Annot* pAnnot) {
-  CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot);
-  CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler();
-  return pWidgetHandler->SelectAllText(pXFAWidget->GetXFAFFWidget());
-}
-
-bool CPDFXFA_WidgetHandler::SetIndexSelected(ObservedPtr<CPDFSDK_Annot>& pAnnot,
-                                             int index,
-                                             bool selected) {
-  return false;
-}
-
-bool CPDFXFA_WidgetHandler::IsIndexSelected(ObservedPtr<CPDFSDK_Annot>& pAnnot,
-                                            int index) {
-  return false;
-}
-
-CXFA_FFWidgetHandler* CPDFXFA_WidgetHandler::GetXFAFFWidgetHandler() {
-  auto* pDoc = static_cast<CPDFXFA_Context*>(
-      GetFormFillEnvironment()->GetDocExtension());
-  if (!pDoc)
-    return nullptr;
-
-  CXFA_FFDocView* pDocView = pDoc->GetXFADocView();
-  if (!pDocView)
-    return nullptr;
-
-  return pDocView->GetWidgetHandler();
-}
-
-Mask<XFA_FWL_KeyFlag> CPDFXFA_WidgetHandler::GetKeyFlags(
-    Mask<FWL_EVENTFLAG> dwFlag) {
-  Mask<XFA_FWL_KeyFlag> dwFWLFlag;
-
-  if (dwFlag & FWL_EVENTFLAG_ControlKey)
-    dwFWLFlag |= XFA_FWL_KeyFlag::kCtrl;
-  if (dwFlag & FWL_EVENTFLAG_LeftButtonDown)
-    dwFWLFlag |= XFA_FWL_KeyFlag::kLButton;
-  if (dwFlag & FWL_EVENTFLAG_MiddleButtonDown)
-    dwFWLFlag |= XFA_FWL_KeyFlag::kMButton;
-  if (dwFlag & FWL_EVENTFLAG_RightButtonDown)
-    dwFWLFlag |= XFA_FWL_KeyFlag::kRButton;
-  if (dwFlag & FWL_EVENTFLAG_ShiftKey)
-    dwFWLFlag |= XFA_FWL_KeyFlag::kShift;
-  if (dwFlag & FWL_EVENTFLAG_AltKey)
-    dwFWLFlag |= XFA_FWL_KeyFlag::kAlt;
-
-  return dwFWLFlag;
-}
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.h b/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.h
index 81269b9..d75bdb4 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.h
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.h
@@ -17,7 +17,6 @@
 class CPDF_Annot;
 class CPDFSDK_Annot;
 class CPDFSDK_PageView;
-class CXFA_FFWidgetHandler;
 
 class CPDFXFA_WidgetHandler final : public IPDFSDK_AnnotHandler {
  public:
@@ -27,19 +26,6 @@
   // IPDFSDK_AnnotHandler:
   std::unique_ptr<CPDFSDK_Annot> NewAnnot(CPDF_Annot* pAnnot,
                                           CPDFSDK_PageView* pPageView) override;
-
-  WideString GetText(CPDFSDK_Annot* pAnnot) override;
-  WideString GetSelectedText(CPDFSDK_Annot* pAnnot) override;
-  void ReplaceSelection(CPDFSDK_Annot* pAnnot, const WideString& text) override;
-  bool SelectAllText(CPDFSDK_Annot* pAnnot) override;
-  bool SetIndexSelected(ObservedPtr<CPDFSDK_Annot>& pAnnot,
-                        int index,
-                        bool selected) override;
-  bool IsIndexSelected(ObservedPtr<CPDFSDK_Annot>& pAnnot, int index) override;
-
- private:
-  CXFA_FFWidgetHandler* GetXFAFFWidgetHandler();
-  Mask<XFA_FWL_KeyFlag> GetKeyFlags(Mask<FWL_EVENTFLAG> dwFlag);
 };
 
 #endif  // FPDFSDK_FPDFXFA_CPDFXFA_WIDGETHANDLER_H_
diff --git a/fpdfsdk/ipdfsdk_annothandler.h b/fpdfsdk/ipdfsdk_annothandler.h
index ed90bd9..1796e54 100644
--- a/fpdfsdk/ipdfsdk_annothandler.h
+++ b/fpdfsdk/ipdfsdk_annothandler.h
@@ -37,17 +37,6 @@
       CPDF_Annot* pAnnot,
       CPDFSDK_PageView* pPageView) = 0;
 
-  virtual WideString GetText(CPDFSDK_Annot* pAnnot) = 0;
-  virtual WideString GetSelectedText(CPDFSDK_Annot* pAnnot) = 0;
-  virtual void ReplaceSelection(CPDFSDK_Annot* pAnnot,
-                                const WideString& text) = 0;
-  virtual bool SelectAllText(CPDFSDK_Annot* pAnnot) = 0;
-  virtual bool SetIndexSelected(ObservedPtr<CPDFSDK_Annot>& pAnnot,
-                                int index,
-                                bool selected) = 0;
-  virtual bool IsIndexSelected(ObservedPtr<CPDFSDK_Annot>& pAnnot,
-                               int index) = 0;
-
  private:
   UnownedPtr<CPDFSDK_FormFillEnvironment> m_pFormFillEnv;
 };