Remove bool arg from CFFL_FormField::GetPWLWindow()

Split into a const GetPWLWindow() method and a non-const
CreateOrUpdatePWLWindow() method.

Change-Id: Ic52fc594c4e505cba785674b4c42a4a0593b45f7
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/81230
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/formfiller/cffl_checkbox.cpp b/fpdfsdk/formfiller/cffl_checkbox.cpp
index c37e452..ff280eb 100644
--- a/fpdfsdk/formfiller/cffl_checkbox.cpp
+++ b/fpdfsdk/formfiller/cffl_checkbox.cpp
@@ -63,7 +63,7 @@
 
       CFFL_FormField::OnChar(pAnnot, nChar, nFlags);
 
-      CPWL_CheckBox* pWnd = GetCheckBox(pPageView, true);
+      CPWL_CheckBox* pWnd = CreateOrUpdateCheckBox(pPageView);
       if (pWnd && !pWnd->IsReadOnly()) {
         CPDFSDK_Widget* pWidget = ToCPDFSDKWidget(pAnnot);
         pWnd->SetCheck(!pWidget->IsChecked());
@@ -85,7 +85,7 @@
   if (!IsValid())
     return true;
 
-  CPWL_CheckBox* pWnd = GetCheckBox(pPageView, true);
+  CPWL_CheckBox* pWnd = CreateOrUpdateCheckBox(pPageView);
   if (pWnd) {
     CPDFSDK_Widget* pWidget = ToCPDFSDKWidget(pAnnot);
     pWnd->SetCheck(!pWidget->IsChecked());
@@ -95,12 +95,12 @@
 }
 
 bool CFFL_CheckBox::IsDataChanged(CPDFSDK_PageView* pPageView) {
-  CPWL_CheckBox* pWnd = GetCheckBox(pPageView, false);
+  CPWL_CheckBox* pWnd = GetCheckBox(pPageView);
   return pWnd && pWnd->IsChecked() != m_pWidget->IsChecked();
 }
 
 void CFFL_CheckBox::SaveData(CPDFSDK_PageView* pPageView) {
-  CPWL_CheckBox* pWnd = GetCheckBox(pPageView, false);
+  CPWL_CheckBox* pWnd = GetCheckBox(pPageView);
   if (!pWnd)
     return;
 
@@ -128,7 +128,11 @@
   SetChangeMark();
 }
 
-CPWL_CheckBox* CFFL_CheckBox::GetCheckBox(CPDFSDK_PageView* pPageView,
-                                          bool bNew) {
-  return static_cast<CPWL_CheckBox*>(GetPWLWindow(pPageView, bNew));
+CPWL_CheckBox* CFFL_CheckBox::GetCheckBox(CPDFSDK_PageView* pPageView) const {
+  return static_cast<CPWL_CheckBox*>(GetPWLWindow(pPageView));
+}
+
+CPWL_CheckBox* CFFL_CheckBox::CreateOrUpdateCheckBox(
+    CPDFSDK_PageView* pPageView) {
+  return static_cast<CPWL_CheckBox*>(CreateOrUpdatePWLWindow(pPageView));
 }
diff --git a/fpdfsdk/formfiller/cffl_checkbox.h b/fpdfsdk/formfiller/cffl_checkbox.h
index aff2762..fbf4a9a 100644
--- a/fpdfsdk/formfiller/cffl_checkbox.h
+++ b/fpdfsdk/formfiller/cffl_checkbox.h
@@ -33,7 +33,8 @@
   void SaveData(CPDFSDK_PageView* pPageView) override;
 
  private:
-  CPWL_CheckBox* GetCheckBox(CPDFSDK_PageView* pPageView, bool bNew);
+  CPWL_CheckBox* GetCheckBox(CPDFSDK_PageView* pPageView) const;
+  CPWL_CheckBox* CreateOrUpdateCheckBox(CPDFSDK_PageView* pPageView);
 };
 
 #endif  // FPDFSDK_FORMFILLER_CFFL_CHECKBOX_H_
diff --git a/fpdfsdk/formfiller/cffl_combobox.cpp b/fpdfsdk/formfiller/cffl_combobox.cpp
index e4e0867..77f3685 100644
--- a/fpdfsdk/formfiller/cffl_combobox.cpp
+++ b/fpdfsdk/formfiller/cffl_combobox.cpp
@@ -70,7 +70,7 @@
 }
 
 bool CFFL_ComboBox::IsDataChanged(CPDFSDK_PageView* pPageView) {
-  auto* pWnd = GetComboBox(pPageView, false);
+  auto* pWnd = GetComboBox(pPageView);
   if (!pWnd)
     return false;
 
@@ -85,7 +85,7 @@
 }
 
 void CFFL_ComboBox::SaveData(CPDFSDK_PageView* pPageView) {
-  CPWL_ComboBox* pWnd = GetComboBox(pPageView, false);
+  CPWL_ComboBox* pWnd = GetComboBox(pPageView);
   if (!pWnd)
     return;
 
@@ -119,7 +119,7 @@
                                   CPDFSDK_FieldAction& fa) {
   switch (type) {
     case CPDF_AAction::kKeyStroke:
-      if (CPWL_ComboBox* pComboBox = GetComboBox(pPageView, false)) {
+      if (CPWL_ComboBox* pComboBox = GetComboBox(pPageView)) {
         if (CPWL_Edit* pEdit = pComboBox->GetEdit()) {
           fa.bFieldFull = pEdit->IsTextFull();
           std::tie(fa.nSelStart, fa.nSelEnd) = pEdit->GetSelection();
@@ -134,7 +134,7 @@
       }
       break;
     case CPDF_AAction::kValidate:
-      if (CPWL_ComboBox* pComboBox = GetComboBox(pPageView, false)) {
+      if (CPWL_ComboBox* pComboBox = GetComboBox(pPageView)) {
         if (CPWL_Edit* pEdit = pComboBox->GetEdit()) {
           fa.sValue = pEdit->GetText();
         }
@@ -154,7 +154,7 @@
                                   const CPDFSDK_FieldAction& fa) {
   switch (type) {
     case CPDF_AAction::kKeyStroke:
-      if (CPWL_ComboBox* pComboBox = GetComboBox(pPageView, false)) {
+      if (CPWL_ComboBox* pComboBox = GetComboBox(pPageView)) {
         if (CPWL_Edit* pEdit = pComboBox->GetEdit()) {
           pEdit->SetSelection(fa.nSelStart, fa.nSelEnd);
           pEdit->ReplaceSelection(fa.sChange);
@@ -167,7 +167,7 @@
 }
 
 void CFFL_ComboBox::SaveState(CPDFSDK_PageView* pPageView) {
-  CPWL_ComboBox* pComboBox = GetComboBox(pPageView, false);
+  CPWL_ComboBox* pComboBox = GetComboBox(pPageView);
   if (!pComboBox)
     return;
 
@@ -182,7 +182,7 @@
 }
 
 void CFFL_ComboBox::RestoreState(CPDFSDK_PageView* pPageView) {
-  CPWL_ComboBox* pComboBox = GetComboBox(pPageView, true);
+  CPWL_ComboBox* pComboBox = CreateOrUpdateComboBox(pPageView);
   if (!pComboBox)
     return;
 
@@ -206,7 +206,7 @@
   if (index < 0 || index >= m_pWidget->CountOptions())
     return false;
 
-  CPWL_ComboBox* pWnd = GetComboBox(GetCurPageView(), false);
+  CPWL_ComboBox* pWnd = GetComboBox(GetCurPageView());
   if (!pWnd)
     return false;
 
@@ -221,13 +221,13 @@
   if (index < 0 || index >= m_pWidget->CountOptions())
     return false;
 
-  CPWL_ComboBox* pWnd = GetComboBox(GetCurPageView(), false);
+  CPWL_ComboBox* pWnd = GetComboBox(GetCurPageView());
   return pWnd && index == pWnd->GetSelect();
 }
 
 #ifdef PDF_ENABLE_XFA
 bool CFFL_ComboBox::IsFieldFull(CPDFSDK_PageView* pPageView) {
-  CPWL_ComboBox* pComboBox = GetComboBox(pPageView, false);
+  CPWL_ComboBox* pComboBox = GetComboBox(pPageView);
   if (!pComboBox)
     return false;
 
@@ -250,7 +250,7 @@
 WideString CFFL_ComboBox::GetSelectExportText() {
   WideString swRet;
 
-  CPWL_ComboBox* pComboBox = GetComboBox(GetCurPageView(), false);
+  CPWL_ComboBox* pComboBox = GetComboBox(GetCurPageView());
   int nExport = pComboBox ? pComboBox->GetSelect() : -1;
 
   if (nExport >= 0) {
@@ -264,7 +264,11 @@
   return swRet;
 }
 
-CPWL_ComboBox* CFFL_ComboBox::GetComboBox(CPDFSDK_PageView* pPageView,
-                                          bool bNew) {
-  return static_cast<CPWL_ComboBox*>(GetPWLWindow(pPageView, bNew));
+CPWL_ComboBox* CFFL_ComboBox::GetComboBox(CPDFSDK_PageView* pPageView) const {
+  return static_cast<CPWL_ComboBox*>(GetPWLWindow(pPageView));
+}
+
+CPWL_ComboBox* CFFL_ComboBox::CreateOrUpdateComboBox(
+    CPDFSDK_PageView* pPageView) {
+  return static_cast<CPWL_ComboBox*>(CreateOrUpdatePWLWindow(pPageView));
 }
diff --git a/fpdfsdk/formfiller/cffl_combobox.h b/fpdfsdk/formfiller/cffl_combobox.h
index 250dba7..02ba37c 100644
--- a/fpdfsdk/formfiller/cffl_combobox.h
+++ b/fpdfsdk/formfiller/cffl_combobox.h
@@ -55,7 +55,8 @@
 
  private:
   WideString GetSelectExportText();
-  CPWL_ComboBox* GetComboBox(CPDFSDK_PageView* pPageView, bool bNew);
+  CPWL_ComboBox* GetComboBox(CPDFSDK_PageView* pPageView) const;
+  CPWL_ComboBox* CreateOrUpdateComboBox(CPDFSDK_PageView* pPageView);
 
   FFL_ComboBoxState m_State;
 };
diff --git a/fpdfsdk/formfiller/cffl_formfield.cpp b/fpdfsdk/formfiller/cffl_formfield.cpp
index 3db3e8b..90ba187 100644
--- a/fpdfsdk/formfiller/cffl_formfield.cpp
+++ b/fpdfsdk/formfiller/cffl_formfield.cpp
@@ -38,7 +38,7 @@
 }
 
 FX_RECT CFFL_FormField::GetViewBBox(CPDFSDK_PageView* pPageView) {
-  CPWL_Wnd* pWnd = GetPWLWindow(pPageView, false);
+  CPWL_Wnd* pWnd = GetPWLWindow(pPageView);
   CFX_FloatRect rcAnnot =
       pWnd ? PWLtoFFL(pWnd->GetWindowRect()) : m_pWidget->GetRect();
   CFX_FloatRect rcFocus = GetFocusBox(pPageView);
@@ -58,7 +58,7 @@
                             CPDFSDK_Annot* pAnnot,
                             CFX_RenderDevice* pDevice,
                             const CFX_Matrix& mtUser2Device) {
-  CPWL_Wnd* pWnd = GetPWLWindow(pPageView, false);
+  CPWL_Wnd* pWnd = GetPWLWindow(pPageView);
   if (pWnd) {
     pWnd->DrawAppearance(pDevice, GetCurMatrix() * mtUser2Device);
     return;
@@ -90,7 +90,7 @@
                                    CPDFSDK_Annot* pAnnot,
                                    uint32_t nFlags,
                                    const CFX_PointF& point) {
-  CPWL_Wnd* pWnd = GetPWLWindow(pPageView, true);
+  CPWL_Wnd* pWnd = CreateOrUpdatePWLWindow(pPageView);
   if (!pWnd)
     return false;
 
@@ -106,7 +106,7 @@
                                  CPDFSDK_Annot* pAnnot,
                                  uint32_t nFlags,
                                  const CFX_PointF& point) {
-  CPWL_Wnd* pWnd = GetPWLWindow(pPageView, false);
+  CPWL_Wnd* pWnd = GetPWLWindow(pPageView);
   if (!pWnd)
     return false;
 
@@ -118,7 +118,7 @@
 bool CFFL_FormField::OnLButtonDblClk(CPDFSDK_PageView* pPageView,
                                      uint32_t nFlags,
                                      const CFX_PointF& point) {
-  CPWL_Wnd* pWnd = GetPWLWindow(pPageView, false);
+  CPWL_Wnd* pWnd = GetPWLWindow(pPageView);
   if (!pWnd)
     return false;
 
@@ -129,7 +129,7 @@
 bool CFFL_FormField::OnMouseMove(CPDFSDK_PageView* pPageView,
                                  uint32_t nFlags,
                                  const CFX_PointF& point) {
-  CPWL_Wnd* pWnd = GetPWLWindow(pPageView, false);
+  CPWL_Wnd* pWnd = GetPWLWindow(pPageView);
   if (!pWnd)
     return false;
 
@@ -144,21 +144,21 @@
   if (!IsValid())
     return false;
 
-  CPWL_Wnd* pWnd = GetPWLWindow(pPageView, true);
+  CPWL_Wnd* pWnd = CreateOrUpdatePWLWindow(pPageView);
   return pWnd && pWnd->OnMouseWheel(nFlags, FFLtoPWL(point), delta);
 }
 
 bool CFFL_FormField::OnRButtonDown(CPDFSDK_PageView* pPageView,
                                    uint32_t nFlags,
                                    const CFX_PointF& point) {
-  CPWL_Wnd* pWnd = GetPWLWindow(pPageView, true);
+  CPWL_Wnd* pWnd = CreateOrUpdatePWLWindow(pPageView);
   return pWnd && pWnd->OnRButtonDown(nFlags, FFLtoPWL(point));
 }
 
 bool CFFL_FormField::OnRButtonUp(CPDFSDK_PageView* pPageView,
                                  uint32_t nFlags,
                                  const CFX_PointF& point) {
-  CPWL_Wnd* pWnd = GetPWLWindow(pPageView, false);
+  CPWL_Wnd* pWnd = GetPWLWindow(pPageView);
   return pWnd && pWnd->OnRButtonUp(nFlags, FFLtoPWL(point));
 }
 
@@ -166,7 +166,7 @@
   if (!IsValid())
     return false;
 
-  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView(), false);
+  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView());
   return pWnd && pWnd->OnKeyDown(nKeyCode, nFlags);
 }
 
@@ -176,7 +176,7 @@
   if (!IsValid())
     return false;
 
-  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView(), false);
+  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView());
   return pWnd && pWnd->OnChar(nChar, nFlags);
 }
 
@@ -192,7 +192,7 @@
   if (!IsValid())
     return WideString();
 
-  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView(), false);
+  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView());
   return pWnd ? pWnd->GetText() : WideString();
 }
 
@@ -200,7 +200,7 @@
   if (!IsValid())
     return WideString();
 
-  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView(), false);
+  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView());
   return pWnd ? pWnd->GetSelectedText() : WideString();
 }
 
@@ -208,7 +208,7 @@
   if (!IsValid())
     return;
 
-  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView(), false);
+  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView());
   if (!pWnd)
     return;
 
@@ -219,7 +219,7 @@
   if (!IsValid())
     return false;
 
-  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView(), false);
+  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView());
   return pWnd && pWnd->SelectAllText();
 }
 
@@ -227,7 +227,7 @@
   if (!IsValid())
     return false;
 
-  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView(), false);
+  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView());
   return pWnd && pWnd->CanUndo();
 }
 
@@ -235,7 +235,7 @@
   if (!IsValid())
     return false;
 
-  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView(), false);
+  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView());
   return pWnd && pWnd->CanRedo();
 }
 
@@ -243,7 +243,7 @@
   if (!IsValid())
     return false;
 
-  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView(), false);
+  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView());
   return pWnd && pWnd->Undo();
 }
 
@@ -251,7 +251,7 @@
   if (!IsValid())
     return false;
 
-  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView(), false);
+  CPWL_Wnd* pWnd = GetPWLWindow(GetCurPageView());
   return pWnd && pWnd->Redo();
 }
 
@@ -259,7 +259,7 @@
   CPDFSDK_Widget* pWidget = ToCPDFSDKWidget(pAnnot);
   IPDF_Page* pPage = pWidget->GetPage();
   CPDFSDK_PageView* pPageView = m_pFormFillEnv->GetPageView(pPage, true);
-  if (CPWL_Wnd* pWnd = GetPWLWindow(pPageView, true))
+  if (CPWL_Wnd* pWnd = CreateOrUpdatePWLWindow(pPageView))
     pWnd->SetFocus();
 
   m_bValid = true;
@@ -274,7 +274,7 @@
       m_pFormFillEnv->GetPageView(m_pWidget->GetPage(), false);
   if (!pPageView || !CommitData(pPageView, nFlag))
     return;
-  if (CPWL_Wnd* pWnd = GetPWLWindow(pPageView, false))
+  if (CPWL_Wnd* pWnd = GetPWLWindow(pPageView))
     pWnd->KillFocus();
 
   bool bDestroyPWLWindow;
@@ -343,13 +343,16 @@
   return cp;
 }
 
-CPWL_Wnd* CFFL_FormField::GetPWLWindow(CPDFSDK_PageView* pPageView, bool bNew) {
+CPWL_Wnd* CFFL_FormField::GetPWLWindow(CPDFSDK_PageView* pPageView) const {
   DCHECK(pPageView);
   auto it = m_Maps.find(pPageView);
-  if (it == m_Maps.end()) {
-    if (!bNew)
-      return nullptr;
+  return it != m_Maps.end() ? it->second.get() : nullptr;
+}
 
+CPWL_Wnd* CFFL_FormField::CreateOrUpdatePWLWindow(CPDFSDK_PageView* pPageView) {
+  DCHECK(pPageView);
+  CPWL_Wnd* pWnd = GetPWLWindow(pPageView);
+  if (!pWnd) {
     CPWL_Wnd::CreateParams cp = GetCreateParam();
     // TODO(tsepez): maybe pass widget's value age as 4th arg.
     auto pPrivateData = std::make_unique<CFFL_PrivateData>(
@@ -357,11 +360,6 @@
     m_Maps[pPageView] = NewPWLWindow(cp, std::move(pPrivateData));
     return m_Maps[pPageView].get();
   }
-
-  CPWL_Wnd* pWnd = it->second.get();
-  if (!bNew)
-    return pWnd;
-
   const auto* pPrivateData =
       static_cast<const CFFL_PrivateData*>(pWnd->GetAttachedData());
   if (pPrivateData->AppearanceAgeEquals(m_pWidget->GetAppearanceAge()))
@@ -434,7 +432,7 @@
 }
 
 CFX_FloatRect CFFL_FormField::GetFocusBox(CPDFSDK_PageView* pPageView) {
-  CPWL_Wnd* pWnd = GetPWLWindow(pPageView, false);
+  CPWL_Wnd* pWnd = GetPWLWindow(pPageView);
   if (!pWnd)
     return CFX_FloatRect();
 
@@ -533,7 +531,7 @@
 
 CPWL_Wnd* CFFL_FormField::ResetPWLWindow(CPDFSDK_PageView* pPageView,
                                          bool bRestoreValue) {
-  return GetPWLWindow(pPageView, false);
+  return GetPWLWindow(pPageView);
 }
 
 void CFFL_FormField::OnTimerFired() {}
diff --git a/fpdfsdk/formfiller/cffl_formfield.h b/fpdfsdk/formfiller/cffl_formfield.h
index aa8dae3..2359970 100644
--- a/fpdfsdk/formfiller/cffl_formfield.h
+++ b/fpdfsdk/formfiller/cffl_formfield.h
@@ -123,7 +123,8 @@
   virtual bool IsFieldFull(CPDFSDK_PageView* pPageView);
 #endif  // PDF_ENABLE_XFA
 
-  CPWL_Wnd* GetPWLWindow(CPDFSDK_PageView* pPageView, bool bNew);
+  CPWL_Wnd* GetPWLWindow(CPDFSDK_PageView* pPageView) const;
+  CPWL_Wnd* CreateOrUpdatePWLWindow(CPDFSDK_PageView* pPageView);
   void DestroyPWLWindow(CPDFSDK_PageView* pPageView);
   void EscapeFiller(CPDFSDK_PageView* pPageView, bool bDestroyPWLWindow);
 
diff --git a/fpdfsdk/formfiller/cffl_listbox.cpp b/fpdfsdk/formfiller/cffl_listbox.cpp
index ef60ab1..546eb3c 100644
--- a/fpdfsdk/formfiller/cffl_listbox.cpp
+++ b/fpdfsdk/formfiller/cffl_listbox.cpp
@@ -220,6 +220,6 @@
   return pListBox && pListBox->IsItemSelected(index);
 }
 
-CPWL_ListBox* CFFL_ListBox::GetListBox(CPDFSDK_PageView* pPageView) {
-  return static_cast<CPWL_ListBox*>(GetPWLWindow(pPageView, /*bNew=*/false));
+CPWL_ListBox* CFFL_ListBox::GetListBox(CPDFSDK_PageView* pPageView) const {
+  return static_cast<CPWL_ListBox*>(GetPWLWindow(pPageView));
 }
diff --git a/fpdfsdk/formfiller/cffl_listbox.h b/fpdfsdk/formfiller/cffl_listbox.h
index 7f39f5a..7553de4 100644
--- a/fpdfsdk/formfiller/cffl_listbox.h
+++ b/fpdfsdk/formfiller/cffl_listbox.h
@@ -38,7 +38,7 @@
   bool IsIndexSelected(int index) override;
 
  private:
-  CPWL_ListBox* GetListBox(CPDFSDK_PageView* pPageView);
+  CPWL_ListBox* GetListBox(CPDFSDK_PageView* pPageView) const;
 
   std::set<int> m_OriginSelections;
   std::vector<int> m_State;
diff --git a/fpdfsdk/formfiller/cffl_radiobutton.cpp b/fpdfsdk/formfiller/cffl_radiobutton.cpp
index cd283e0..52fc5ec 100644
--- a/fpdfsdk/formfiller/cffl_radiobutton.cpp
+++ b/fpdfsdk/formfiller/cffl_radiobutton.cpp
@@ -58,7 +58,7 @@
       }
 
       CFFL_FormField::OnChar(pAnnot, nChar, nFlags);
-      CPWL_RadioButton* pWnd = GetRadioButton(pPageView, true);
+      CPWL_RadioButton* pWnd = CreateOrUpdateRadioButton(pPageView);
       if (pWnd && !pWnd->IsReadOnly())
         pWnd->SetCheck(true);
       return CommitData(pPageView, nFlags);
@@ -77,7 +77,7 @@
   if (!IsValid())
     return true;
 
-  CPWL_RadioButton* pWnd = GetRadioButton(pPageView, true);
+  CPWL_RadioButton* pWnd = CreateOrUpdateRadioButton(pPageView);
   if (pWnd)
     pWnd->SetCheck(true);
 
@@ -85,12 +85,12 @@
 }
 
 bool CFFL_RadioButton::IsDataChanged(CPDFSDK_PageView* pPageView) {
-  CPWL_RadioButton* pWnd = GetRadioButton(pPageView, false);
+  CPWL_RadioButton* pWnd = GetRadioButton(pPageView);
   return pWnd && pWnd->IsChecked() != m_pWidget->IsChecked();
 }
 
 void CFFL_RadioButton::SaveData(CPDFSDK_PageView* pPageView) {
-  CPWL_RadioButton* pWnd = GetRadioButton(pPageView, false);
+  CPWL_RadioButton* pWnd = GetRadioButton(pPageView);
   if (!pWnd)
     return;
 
@@ -117,7 +117,12 @@
   SetChangeMark();
 }
 
-CPWL_RadioButton* CFFL_RadioButton::GetRadioButton(CPDFSDK_PageView* pPageView,
-                                                   bool bNew) {
-  return static_cast<CPWL_RadioButton*>(GetPWLWindow(pPageView, bNew));
+CPWL_RadioButton* CFFL_RadioButton::GetRadioButton(
+    CPDFSDK_PageView* pPageView) const {
+  return static_cast<CPWL_RadioButton*>(GetPWLWindow(pPageView));
+}
+
+CPWL_RadioButton* CFFL_RadioButton::CreateOrUpdateRadioButton(
+    CPDFSDK_PageView* pPageView) {
+  return static_cast<CPWL_RadioButton*>(CreateOrUpdatePWLWindow(pPageView));
 }
diff --git a/fpdfsdk/formfiller/cffl_radiobutton.h b/fpdfsdk/formfiller/cffl_radiobutton.h
index 8ba2f28..c077208 100644
--- a/fpdfsdk/formfiller/cffl_radiobutton.h
+++ b/fpdfsdk/formfiller/cffl_radiobutton.h
@@ -33,7 +33,8 @@
   void SaveData(CPDFSDK_PageView* pPageView) override;
 
  private:
-  CPWL_RadioButton* GetRadioButton(CPDFSDK_PageView* pPageView, bool bNew);
+  CPWL_RadioButton* GetRadioButton(CPDFSDK_PageView* pPageView) const;
+  CPWL_RadioButton* CreateOrUpdateRadioButton(CPDFSDK_PageView* pPageView);
 };
 
 #endif  // FPDFSDK_FORMFILLER_CFFL_RADIOBUTTON_H_
diff --git a/fpdfsdk/formfiller/cffl_textfield.cpp b/fpdfsdk/formfiller/cffl_textfield.cpp
index 2a223d6..28236ce 100644
--- a/fpdfsdk/formfiller/cffl_textfield.cpp
+++ b/fpdfsdk/formfiller/cffl_textfield.cpp
@@ -119,7 +119,7 @@
                                  pAnnot->GetRect().GetOuterRect());
 
       if (m_bValid) {
-        if (CPWL_Wnd* pWnd = GetPWLWindow(pPageView, true))
+        if (CPWL_Wnd* pWnd = CreateOrUpdatePWLWindow(pPageView))
           pWnd->SetFocus();
         break;
       }
@@ -142,12 +142,12 @@
 }
 
 bool CFFL_TextField::IsDataChanged(CPDFSDK_PageView* pPageView) {
-  CPWL_Edit* pEdit = GetEdit(pPageView, false);
+  CPWL_Edit* pEdit = GetEdit(pPageView);
   return pEdit && pEdit->GetText() != m_pWidget->GetValue();
 }
 
 void CFFL_TextField::SaveData(CPDFSDK_PageView* pPageView) {
-  CPWL_Edit* pWnd = GetEdit(pPageView, false);
+  CPWL_Edit* pWnd = GetEdit(pPageView);
   if (!pWnd)
     return;
 
@@ -175,7 +175,7 @@
                                    CPDFSDK_FieldAction& fa) {
   switch (type) {
     case CPDF_AAction::kKeyStroke:
-      if (CPWL_Edit* pWnd = GetEdit(pPageView, false)) {
+      if (CPWL_Edit* pWnd = GetEdit(pPageView)) {
         fa.bFieldFull = pWnd->IsTextFull();
 
         fa.sValue = pWnd->GetText();
@@ -187,7 +187,7 @@
       }
       break;
     case CPDF_AAction::kValidate:
-      if (CPWL_Edit* pWnd = GetEdit(pPageView, false)) {
+      if (CPWL_Edit* pWnd = GetEdit(pPageView)) {
         fa.sValue = pWnd->GetText();
       }
       break;
@@ -205,7 +205,7 @@
                                    const CPDFSDK_FieldAction& fa) {
   switch (type) {
     case CPDF_AAction::kKeyStroke:
-      if (CPWL_Edit* pEdit = GetEdit(pPageView, false)) {
+      if (CPWL_Edit* pEdit = GetEdit(pPageView)) {
         pEdit->SetFocus();
         pEdit->SetSelection(fa.nSelStart, fa.nSelEnd);
         pEdit->ReplaceSelection(fa.sChange);
@@ -217,7 +217,7 @@
 }
 
 void CFFL_TextField::SaveState(CPDFSDK_PageView* pPageView) {
-  CPWL_Edit* pWnd = GetEdit(pPageView, false);
+  CPWL_Edit* pWnd = GetEdit(pPageView);
   if (!pWnd)
     return;
 
@@ -226,7 +226,7 @@
 }
 
 void CFFL_TextField::RestoreState(CPDFSDK_PageView* pPageView) {
-  CPWL_Edit* pWnd = GetEdit(pPageView, true);
+  CPWL_Edit* pWnd = CreateOrUpdateEdit(pPageView);
   if (!pWnd)
     return;
 
@@ -236,7 +236,7 @@
 
 #ifdef PDF_ENABLE_XFA
 bool CFFL_TextField::IsFieldFull(CPDFSDK_PageView* pPageView) {
-  CPWL_Edit* pWnd = GetEdit(pPageView, false);
+  CPWL_Edit* pWnd = GetEdit(pPageView);
   return pWnd && pWnd->IsTextFull();
 }
 #endif  // PDF_ENABLE_XFA
@@ -252,6 +252,10 @@
   m_pFormFillEnv->OnSetFieldInputFocus(pBuffer, nCharacters, true);
 }
 
-CPWL_Edit* CFFL_TextField::GetEdit(CPDFSDK_PageView* pPageView, bool bNew) {
-  return static_cast<CPWL_Edit*>(GetPWLWindow(pPageView, bNew));
+CPWL_Edit* CFFL_TextField::GetEdit(CPDFSDK_PageView* pPageView) const {
+  return static_cast<CPWL_Edit*>(GetPWLWindow(pPageView));
+}
+
+CPWL_Edit* CFFL_TextField::CreateOrUpdateEdit(CPDFSDK_PageView* pPageView) {
+  return static_cast<CPWL_Edit*>(CreateOrUpdatePWLWindow(pPageView));
 }
diff --git a/fpdfsdk/formfiller/cffl_textfield.h b/fpdfsdk/formfiller/cffl_textfield.h
index 5941b42..4ae5b2a 100644
--- a/fpdfsdk/formfiller/cffl_textfield.h
+++ b/fpdfsdk/formfiller/cffl_textfield.h
@@ -50,7 +50,8 @@
   void OnSetFocus(CPWL_Edit* pEdit) override;
 
  private:
-  CPWL_Edit* GetEdit(CPDFSDK_PageView* pPageView, bool bNew);
+  CPWL_Edit* GetEdit(CPDFSDK_PageView* pPageView) const;
+  CPWL_Edit* CreateOrUpdateEdit(CPDFSDK_PageView* pPageView);
 
   FFL_TextFieldState m_State;
 };
diff --git a/fpdfsdk/formfiller/cffl_textobject.cpp b/fpdfsdk/formfiller/cffl_textobject.cpp
index 7d5f293..d4f5430 100644
--- a/fpdfsdk/formfiller/cffl_textobject.cpp
+++ b/fpdfsdk/formfiller/cffl_textobject.cpp
@@ -18,7 +18,9 @@
   if (bRestoreValue)
     RestoreState(pPageView);
 
-  ObservedPtr<CPWL_Wnd> pRet(GetPWLWindow(pPageView, !bRestoreValue));
+  ObservedPtr<CPWL_Wnd> pRet(bRestoreValue
+                                 ? GetPWLWindow(pPageView)
+                                 : CreateOrUpdatePWLWindow(pPageView));
   m_pWidget->UpdateField();  // May invoke JS, invalidating |pRet|.
   return pRet.Get();
 }
diff --git a/fpdfsdk/pwl/cpwl_combo_box_embeddertest.cpp b/fpdfsdk/pwl/cpwl_combo_box_embeddertest.cpp
index 33ac34f..f5e10b8 100644
--- a/fpdfsdk/pwl/cpwl_combo_box_embeddertest.cpp
+++ b/fpdfsdk/pwl/cpwl_combo_box_embeddertest.cpp
@@ -64,8 +64,8 @@
         pInteractiveFormFiller->GetFormFieldForTesting(pAnnotCombobox);
     ASSERT_TRUE(m_pFormFiller);
 
-    CPWL_Wnd* pWindow = m_pFormFiller->GetPWLWindow(
-        m_pFormFillEnv->GetPageViewAtIndex(0), false);
+    CPWL_Wnd* pWindow =
+        m_pFormFiller->GetPWLWindow(m_pFormFillEnv->GetPageViewAtIndex(0));
     ASSERT_TRUE(pWindow);
     m_pComboBox = static_cast<CPWL_ComboBox*>(pWindow);
   }
diff --git a/fpdfsdk/pwl/cpwl_edit_embeddertest.cpp b/fpdfsdk/pwl/cpwl_edit_embeddertest.cpp
index 8f566ea..ac217ce 100644
--- a/fpdfsdk/pwl/cpwl_edit_embeddertest.cpp
+++ b/fpdfsdk/pwl/cpwl_edit_embeddertest.cpp
@@ -70,8 +70,8 @@
         pInteractiveFormFiller->GetFormFieldForTesting(pAnnotTextField);
     ASSERT_TRUE(m_pFormFiller);
 
-    CPWL_Wnd* pWindow = m_pFormFiller->GetPWLWindow(
-        m_pFormFillEnv->GetPageViewAtIndex(0), false);
+    CPWL_Wnd* pWindow =
+        m_pFormFiller->GetPWLWindow(m_pFormFillEnv->GetPageViewAtIndex(0));
     ASSERT_TRUE(pWindow);
     m_pEdit = static_cast<CPWL_Edit*>(pWindow);
   }
diff --git a/fpdfsdk/pwl/cpwl_special_button_embeddertest.cpp b/fpdfsdk/pwl/cpwl_special_button_embeddertest.cpp
index 55238df..ed2ab15 100644
--- a/fpdfsdk/pwl/cpwl_special_button_embeddertest.cpp
+++ b/fpdfsdk/pwl/cpwl_special_button_embeddertest.cpp
@@ -74,8 +74,8 @@
     form_filler_ = interactive_formfiller->GetFormFieldForTesting(annot);
     ASSERT_TRUE(form_filler_);
 
-    window_ =
-        form_filler_->GetPWLWindow(formfill_env_->GetPageViewAtIndex(0), true);
+    window_ = form_filler_->CreateOrUpdatePWLWindow(
+        formfill_env_->GetPageViewAtIndex(0));
     ASSERT_TRUE(window_);
   }