Remove usage of per-window data from CPDFSDK_FormFillEnvironment.

Better separate CPDFSDK and PWL layers.

Change-Id: I9896b50df0894396edaac5ac824e096e69da2868
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/93650
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/cpdfsdk_formfillenvironment.cpp b/fpdfsdk/cpdfsdk_formfillenvironment.cpp
index d4e05f5..8e9eac9 100644
--- a/fpdfsdk/cpdfsdk_formfillenvironment.cpp
+++ b/fpdfsdk/cpdfsdk_formfillenvironment.cpp
@@ -22,7 +22,6 @@
 #include "fpdfsdk/cpdfsdk_widget.h"
 #include "fpdfsdk/formfiller/cffl_formfield.h"
 #include "fpdfsdk/formfiller/cffl_interactiveformfiller.h"
-#include "fpdfsdk/formfiller/cffl_perwindowdata.h"
 #include "fxjs/ijs_event_context.h"
 #include "fxjs/ijs_runtime.h"
 #include "third_party/base/check.h"
@@ -88,14 +87,8 @@
     m_pInfo->Release(m_pInfo);
 }
 
-void CPDFSDK_FormFillEnvironment::InvalidateRect(
-    IPWL_FillerNotify::PerWindowData* pWidgetData,
-    const CFX_FloatRect& rect) {
-  auto* pPrivateData = static_cast<CFFL_PerWindowData*>(pWidgetData);
-  CPDFSDK_Widget* widget = pPrivateData->GetWidget();
-  if (!widget)
-    return;
-
+void CPDFSDK_FormFillEnvironment::InvalidateRect(CPDFSDK_Widget* widget,
+                                                 const CFX_FloatRect& rect) {
   IPDF_Page* pPage = widget->GetPage();
   if (!pPage)
     return;
@@ -112,19 +105,11 @@
 }
 
 void CPDFSDK_FormFillEnvironment::OutputSelectedRect(
-    IPWL_FillerNotify::PerWindowData* pWidgetData,
+    CFFL_FormField* pFormField,
     const CFX_FloatRect& rect) {
   if (!m_pInfo || !m_pInfo->FFI_OutputSelectedRect)
     return;
 
-  auto* pPrivateData = static_cast<CFFL_PerWindowData*>(pWidgetData);
-  if (!pPrivateData)
-    return;
-
-  CFFL_FormField* pFormField = pPrivateData->GetFormField();
-  if (!pFormField)
-    return;
-
   auto* pPage = FPDFPageFromIPDFPage(pFormField->GetSDKWidget()->GetPage());
   DCHECK(pPage);
 
diff --git a/fpdfsdk/cpdfsdk_formfillenvironment.h b/fpdfsdk/cpdfsdk_formfillenvironment.h
index 943e7c7..5f2bcc9 100644
--- a/fpdfsdk/cpdfsdk_formfillenvironment.h
+++ b/fpdfsdk/cpdfsdk_formfillenvironment.h
@@ -67,9 +67,9 @@
   void KillTimer(int32_t nTimerID) override;
 
   // CFFL_InteractiveFormFiller::CallbackIface:
-  void InvalidateRect(IPWL_FillerNotify::PerWindowData* pWidgetData,
+  void InvalidateRect(CPDFSDK_Widget* widget,
                       const CFX_FloatRect& rect) override;
-  void OutputSelectedRect(IPWL_FillerNotify::PerWindowData* pWidgetData,
+  void OutputSelectedRect(CFFL_FormField* pFormField,
                           const CFX_FloatRect& rect) override;
   bool IsSelectionImplemented() const override;
   void SetCursor(IPWL_FillerNotify::CursorStyle nCursorType) override;
diff --git a/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp b/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp
index dee3a7c..399608f 100644
--- a/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp
+++ b/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp
@@ -549,12 +549,25 @@
 
 void CFFL_InteractiveFormFiller::InvalidateRect(PerWindowData* pWidgetData,
                                                 const CFX_FloatRect& rect) {
-  GetCallbackIface()->InvalidateRect(pWidgetData, rect);
+  auto* pPrivateData = static_cast<CFFL_PerWindowData*>(pWidgetData);
+  CPDFSDK_Widget* pWidget = pPrivateData->GetWidget();
+  if (!pWidget)
+    return;
+
+  GetCallbackIface()->InvalidateRect(pWidget, rect);
 }
 
 void CFFL_InteractiveFormFiller::OutputSelectedRect(PerWindowData* pWidgetData,
                                                     const CFX_FloatRect& rect) {
-  GetCallbackIface()->OutputSelectedRect(pWidgetData, rect);
+  auto* pPrivateData = static_cast<CFFL_PerWindowData*>(pWidgetData);
+  if (!pPrivateData)
+    return;
+
+  CFFL_FormField* pFormField = pPrivateData->GetFormField();
+  if (!pFormField)
+    return;
+
+  GetCallbackIface()->OutputSelectedRect(pFormField, rect);
 }
 
 bool CFFL_InteractiveFormFiller::IsSelectionImplemented() const {
diff --git a/fpdfsdk/formfiller/cffl_interactiveformfiller.h b/fpdfsdk/formfiller/cffl_interactiveformfiller.h
index 8dab3e4..583339d 100644
--- a/fpdfsdk/formfiller/cffl_interactiveformfiller.h
+++ b/fpdfsdk/formfiller/cffl_interactiveformfiller.h
@@ -38,9 +38,9 @@
     virtual CFX_Timer::HandlerIface* GetTimerHandler() = 0;
     virtual CPDFSDK_Annot* GetFocusAnnot() const = 0;
     virtual bool SetFocusAnnot(ObservedPtr<CPDFSDK_Annot>& pAnnot) = 0;
-    virtual void InvalidateRect(PerWindowData* pWidgetData,
+    virtual void InvalidateRect(CPDFSDK_Widget* pWidget,
                                 const CFX_FloatRect& rect) = 0;
-    virtual void OutputSelectedRect(PerWindowData* pWidgetData,
+    virtual void OutputSelectedRect(CFFL_FormField* pFormField,
                                     const CFX_FloatRect& rect) = 0;
     virtual bool IsSelectionImplemented() const = 0;
     virtual void SetCursor(CursorStyle nCursorStyle) = 0;