Clean up CFFL formfiller classes.

- Consolidate assertions for m_pFormFillEnv.
- Remove check for m_pFormFillEnv being NULL.
- Pass in a CPDFSDK_Widget* instead of an Annot* and then casting.
- Remove unused LoadPopupMenuString() method.

Change-Id: Ic22e75c9e41eb54002be812945a3ee80debeca8b
Reviewed-on: https://pdfium-review.googlesource.com/6232
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/formfiller/cffl_combobox.cpp b/fpdfsdk/formfiller/cffl_combobox.cpp
index 4f9ffff..8e4efc4 100644
--- a/fpdfsdk/formfiller/cffl_combobox.cpp
+++ b/fpdfsdk/formfiller/cffl_combobox.cpp
@@ -16,8 +16,8 @@
 #include "third_party/base/ptr_util.h"
 
 CFFL_ComboBox::CFFL_ComboBox(CPDFSDK_FormFillEnvironment* pApp,
-                             CPDFSDK_Annot* pAnnot)
-    : CFFL_FormFiller(pApp, pAnnot) {
+                             CPDFSDK_Widget* pWidget)
+    : CFFL_FormFiller(pApp, pWidget) {
   m_State.nIndex = 0;
   m_State.nStart = 0;
   m_State.nEnd = 0;
@@ -258,8 +258,6 @@
 #endif  // PDF_ENABLE_XFA
 
 void CFFL_ComboBox::OnSetFocus(CPWL_Wnd* pWnd) {
-  ASSERT(m_pFormFillEnv);
-
   if (pWnd->GetClassName() != PWL_CLASSNAME_EDIT)
     return;
 
diff --git a/fpdfsdk/formfiller/cffl_combobox.h b/fpdfsdk/formfiller/cffl_combobox.h
index e3e7e3b..be14d8b 100644
--- a/fpdfsdk/formfiller/cffl_combobox.h
+++ b/fpdfsdk/formfiller/cffl_combobox.h
@@ -23,7 +23,7 @@
 
 class CFFL_ComboBox : public CFFL_FormFiller, public IPWL_FocusHandler {
  public:
-  CFFL_ComboBox(CPDFSDK_FormFillEnvironment* pApp, CPDFSDK_Annot* pWidget);
+  CFFL_ComboBox(CPDFSDK_FormFillEnvironment* pApp, CPDFSDK_Widget* pWidget);
   ~CFFL_ComboBox() override;
 
   // CFFL_FormFiller:
diff --git a/fpdfsdk/formfiller/cffl_formfiller.cpp b/fpdfsdk/formfiller/cffl_formfiller.cpp
index b104d67..f15efd2 100644
--- a/fpdfsdk/formfiller/cffl_formfiller.cpp
+++ b/fpdfsdk/formfiller/cffl_formfiller.cpp
@@ -22,9 +22,9 @@
 #define FFL_HINT_ELAPSE 800
 
 CFFL_FormFiller::CFFL_FormFiller(CPDFSDK_FormFillEnvironment* pFormFillEnv,
-                                 CPDFSDK_Annot* pAnnot)
-    : m_pFormFillEnv(pFormFillEnv), m_pAnnot(pAnnot), m_bValid(false) {
-  m_pWidget = static_cast<CPDFSDK_Widget*>(pAnnot);
+                                 CPDFSDK_Widget* pWidget)
+    : m_pFormFillEnv(pFormFillEnv), m_pWidget(pWidget), m_bValid(false) {
+  ASSERT(m_pFormFillEnv);
 }
 
 CFFL_FormFiller::~CFFL_FormFiller() {
@@ -282,8 +282,6 @@
 }
 
 PWL_CREATEPARAM CFFL_FormFiller::GetCreateParam() {
-  ASSERT(m_pFormFillEnv);
-
   PWL_CREATEPARAM cp;
   cp.pParentWnd = nullptr;
   cp.pProvider.Reset(this);
@@ -422,12 +420,6 @@
   return mt;
 }
 
-CFX_WideString CFFL_FormFiller::LoadPopupMenuString(int nIndex) {
-  ASSERT(m_pFormFillEnv);
-
-  return L"";
-}
-
 CFX_FloatRect CFFL_FormFiller::GetPDFWindowRect() const {
   CFX_FloatRect rectAnnot = m_pWidget->GetPDFAnnot()->GetRect();
 
@@ -440,8 +432,8 @@
 }
 
 CPDFSDK_PageView* CFFL_FormFiller::GetCurPageView(bool renew) {
-  UnderlyingPageType* pPage = m_pAnnot->GetUnderlyingPage();
-  return m_pFormFillEnv ? m_pFormFillEnv->GetPageView(pPage, renew) : nullptr;
+  UnderlyingPageType* pPage = m_pWidget->GetUnderlyingPage();
+  return m_pFormFillEnv->GetPageView(pPage, renew);
 }
 
 CFX_FloatRect CFFL_FormFiller::GetFocusBox(CPDFSDK_PageView* pPageView) {
@@ -585,7 +577,7 @@
 }
 
 CFFL_Button::CFFL_Button(CPDFSDK_FormFillEnvironment* pApp,
-                         CPDFSDK_Annot* pWidget)
+                         CPDFSDK_Widget* pWidget)
     : CFFL_FormFiller(pApp, pWidget), m_bMouseIn(false), m_bMouseDown(false) {}
 
 CFFL_Button::~CFFL_Button() {}
@@ -636,7 +628,6 @@
                               CPDFSDK_Annot* pAnnot,
                               uint32_t nFlags,
                               const CFX_PointF& point) {
-  ASSERT(m_pFormFillEnv);
   return true;
 }
 
diff --git a/fpdfsdk/formfiller/cffl_formfiller.h b/fpdfsdk/formfiller/cffl_formfiller.h
index 7704b5f..445e86f 100644
--- a/fpdfsdk/formfiller/cffl_formfiller.h
+++ b/fpdfsdk/formfiller/cffl_formfiller.h
@@ -22,7 +22,7 @@
 class CFFL_FormFiller : public IPWL_Provider, public CPWL_TimerHandler {
  public:
   CFFL_FormFiller(CPDFSDK_FormFillEnvironment* pFormFillEnv,
-                  CPDFSDK_Annot* pAnnot);
+                  CPDFSDK_Widget* pWidget);
   ~CFFL_FormFiller() override;
 
   virtual FX_RECT GetViewBBox(CPDFSDK_PageView* pPageView,
@@ -83,7 +83,6 @@
 
   // IPWL_Provider
   CFX_Matrix GetWindowMatrix(void* pAttachedData) override;
-  CFX_WideString LoadPopupMenuString(int nIndex) override;
 
   virtual void GetActionData(CPDFSDK_PageView* pPageView,
                              CPDF_AAction::AActionType type,
@@ -139,7 +138,7 @@
   void SetChangeMark();
 
   virtual void InvalidateRect(const FX_RECT& rect);
-  CPDFSDK_Annot* GetSDKAnnot() { return m_pAnnot.Get(); }
+  CPDFSDK_Annot* GetSDKAnnot() { return m_pWidget.Get(); }
 
  protected:
   using CFFL_PageView2PDFWindow = std::map<CPDFSDK_PageView*, CPWL_Wnd*>;
@@ -154,7 +153,6 @@
 
   CFX_UnownedPtr<CPDFSDK_FormFillEnvironment> const m_pFormFillEnv;
   CFX_UnownedPtr<CPDFSDK_Widget> m_pWidget;
-  CFX_UnownedPtr<CPDFSDK_Annot> m_pAnnot;
   bool m_bValid;
   CFFL_PageView2PDFWindow m_Maps;
   CFX_PointF m_ptOldPos;
@@ -163,7 +161,7 @@
 class CFFL_Button : public CFFL_FormFiller {
  public:
   CFFL_Button(CPDFSDK_FormFillEnvironment* pFormFillEnv,
-              CPDFSDK_Annot* pWidget);
+              CPDFSDK_Widget* pWidget);
   ~CFFL_Button() override;
 
   // CFFL_FormFiller
diff --git a/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp b/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp
index 491186e..2c75225 100644
--- a/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp
+++ b/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp
@@ -478,7 +478,8 @@
   if (!bRegister)
     return nullptr;
 
-  CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
+  // TODO(thestig): How do we know |pAnnot| is a CPDFSDK_Widget?
+  CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot);
   int nFieldType = pWidget->GetFieldType();
   CFFL_FormFiller* pFormFiller;
   switch (nFieldType) {
diff --git a/fpdfsdk/formfiller/cffl_listbox.cpp b/fpdfsdk/formfiller/cffl_listbox.cpp
index 617af13..55c0f3f 100644
--- a/fpdfsdk/formfiller/cffl_listbox.cpp
+++ b/fpdfsdk/formfiller/cffl_listbox.cpp
@@ -18,7 +18,7 @@
 #define FFL_DEFAULTLISTBOXFONTSIZE 12.0f
 
 CFFL_ListBox::CFFL_ListBox(CPDFSDK_FormFillEnvironment* pApp,
-                           CPDFSDK_Annot* pWidget)
+                           CPDFSDK_Widget* pWidget)
     : CFFL_FormFiller(pApp, pWidget) {}
 
 CFFL_ListBox::~CFFL_ListBox() {}
diff --git a/fpdfsdk/formfiller/cffl_listbox.h b/fpdfsdk/formfiller/cffl_listbox.h
index 1ad269e..7c2713c 100644
--- a/fpdfsdk/formfiller/cffl_listbox.h
+++ b/fpdfsdk/formfiller/cffl_listbox.h
@@ -17,7 +17,7 @@
 
 class CFFL_ListBox : public CFFL_FormFiller {
  public:
-  CFFL_ListBox(CPDFSDK_FormFillEnvironment* pApp, CPDFSDK_Annot* pWidget);
+  CFFL_ListBox(CPDFSDK_FormFillEnvironment* pApp, CPDFSDK_Widget* pWidget);
   ~CFFL_ListBox() override;
 
   // CFFL_FormFiller
diff --git a/fpdfsdk/formfiller/cffl_pushbutton.cpp b/fpdfsdk/formfiller/cffl_pushbutton.cpp
index e7d03a6..15e15f5 100644
--- a/fpdfsdk/formfiller/cffl_pushbutton.cpp
+++ b/fpdfsdk/formfiller/cffl_pushbutton.cpp
@@ -10,8 +10,8 @@
 #include "fpdfsdk/pdfwindow/PWL_SpecialButton.h"
 
 CFFL_PushButton::CFFL_PushButton(CPDFSDK_FormFillEnvironment* pApp,
-                                 CPDFSDK_Annot* pAnnot)
-    : CFFL_Button(pApp, pAnnot) {}
+                                 CPDFSDK_Widget* pWidget)
+    : CFFL_Button(pApp, pWidget) {}
 
 CFFL_PushButton::~CFFL_PushButton() {}
 
diff --git a/fpdfsdk/formfiller/cffl_pushbutton.h b/fpdfsdk/formfiller/cffl_pushbutton.h
index c634c26..334abc2 100644
--- a/fpdfsdk/formfiller/cffl_pushbutton.h
+++ b/fpdfsdk/formfiller/cffl_pushbutton.h
@@ -11,7 +11,7 @@
 
 class CFFL_PushButton : public CFFL_Button {
  public:
-  CFFL_PushButton(CPDFSDK_FormFillEnvironment* pApp, CPDFSDK_Annot* pAnnot);
+  CFFL_PushButton(CPDFSDK_FormFillEnvironment* pApp, CPDFSDK_Widget* pWidget);
   ~CFFL_PushButton() override;
 
   // CFFL_Button
diff --git a/fpdfsdk/formfiller/cffl_radiobutton.cpp b/fpdfsdk/formfiller/cffl_radiobutton.cpp
index e594d69..e264a3b 100644
--- a/fpdfsdk/formfiller/cffl_radiobutton.cpp
+++ b/fpdfsdk/formfiller/cffl_radiobutton.cpp
@@ -13,7 +13,7 @@
 #include "public/fpdf_fwlevent.h"
 
 CFFL_RadioButton::CFFL_RadioButton(CPDFSDK_FormFillEnvironment* pApp,
-                                   CPDFSDK_Annot* pWidget)
+                                   CPDFSDK_Widget* pWidget)
     : CFFL_Button(pApp, pWidget) {}
 
 CFFL_RadioButton::~CFFL_RadioButton() {}
diff --git a/fpdfsdk/formfiller/cffl_radiobutton.h b/fpdfsdk/formfiller/cffl_radiobutton.h
index 21710ba..905fc1b 100644
--- a/fpdfsdk/formfiller/cffl_radiobutton.h
+++ b/fpdfsdk/formfiller/cffl_radiobutton.h
@@ -11,7 +11,7 @@
 
 class CFFL_RadioButton : public CFFL_Button {
  public:
-  CFFL_RadioButton(CPDFSDK_FormFillEnvironment* pApp, CPDFSDK_Annot* pAnnot);
+  CFFL_RadioButton(CPDFSDK_FormFillEnvironment* pApp, CPDFSDK_Widget* pWidget);
   ~CFFL_RadioButton() override;
 
   // CFFL_Button
diff --git a/fpdfsdk/formfiller/cffl_textfield.cpp b/fpdfsdk/formfiller/cffl_textfield.cpp
index 1090f8a..c34bf3e 100644
--- a/fpdfsdk/formfiller/cffl_textfield.cpp
+++ b/fpdfsdk/formfiller/cffl_textfield.cpp
@@ -13,8 +13,8 @@
 #include "third_party/base/ptr_util.h"
 
 CFFL_TextField::CFFL_TextField(CPDFSDK_FormFillEnvironment* pApp,
-                               CPDFSDK_Annot* pAnnot)
-    : CFFL_FormFiller(pApp, pAnnot) {}
+                               CPDFSDK_Widget* pWidget)
+    : CFFL_FormFiller(pApp, pWidget) {}
 
 CFFL_TextField::~CFFL_TextField() {
   for (const auto& it : m_Maps)
@@ -258,7 +258,6 @@
 #endif  // PDF_ENABLE_XFA
 
 void CFFL_TextField::OnSetFocus(CPWL_Wnd* pWnd) {
-  ASSERT(m_pFormFillEnv);
   if (pWnd->GetClassName() != PWL_CLASSNAME_EDIT)
     return;
 
diff --git a/fpdfsdk/formfiller/cffl_textfield.h b/fpdfsdk/formfiller/cffl_textfield.h
index 43b0da9..cde477a 100644
--- a/fpdfsdk/formfiller/cffl_textfield.h
+++ b/fpdfsdk/formfiller/cffl_textfield.h
@@ -27,7 +27,7 @@
 
 class CFFL_TextField : public CFFL_FormFiller, public IPWL_FocusHandler {
  public:
-  CFFL_TextField(CPDFSDK_FormFillEnvironment* pApp, CPDFSDK_Annot* pAnnot);
+  CFFL_TextField(CPDFSDK_FormFillEnvironment* pApp, CPDFSDK_Widget* pWidget);
   ~CFFL_TextField() override;
 
   // CFFL_FormFiller:
diff --git a/fpdfsdk/pdfwindow/PWL_Wnd.h b/fpdfsdk/pdfwindow/PWL_Wnd.h
index 59de290..e3b7917 100644
--- a/fpdfsdk/pdfwindow/PWL_Wnd.h
+++ b/fpdfsdk/pdfwindow/PWL_Wnd.h
@@ -145,17 +145,6 @@
 
   // get a matrix which map user space to CWnd client space
   virtual CFX_Matrix GetWindowMatrix(void* pAttachedData) = 0;
-
-  /*
-  0 L"&Undo\tCtrl+Z"
-  1 L"&Redo\tCtrl+Shift+Z"
-  2 L"Cu&t\tCtrl+X"
-  3 L"&Copy\tCtrl+C"
-  4 L"&Paste\tCtrl+V"
-  5 L"&Delete"
-  6  L"&Select All\tCtrl+A"
-  */
-  virtual CFX_WideString LoadPopupMenuString(int32_t nIndex) = 0;
 };
 
 class IPWL_FocusHandler {