diff --git a/xfa/fwl/core/ifwl_app.cpp b/xfa/fwl/core/cfwl_app.cpp
similarity index 86%
rename from xfa/fwl/core/ifwl_app.cpp
rename to xfa/fwl/core/cfwl_app.cpp
index c4a6dc3..4905e23 100644
--- a/xfa/fwl/core/ifwl_app.cpp
+++ b/xfa/fwl/core/cfwl_app.cpp
@@ -4,7 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#include "xfa/fwl/core/ifwl_app.h"
+#include "xfa/fwl/core/cfwl_app.h"
 
 #include "third_party/base/ptr_util.h"
 #include "xfa/fwl/core/cfwl_notedriver.h"
@@ -12,11 +12,11 @@
 #include "xfa/fwl/core/ifwl_widget.h"
 #include "xfa/fxfa/app/xfa_fwladapter.h"
 
-IFWL_App::IFWL_App(CXFA_FFApp* pAdapter)
+CFWL_App::CFWL_App(CXFA_FFApp* pAdapter)
     : m_pAdapterNative(pAdapter),
       m_pWidgetMgr(pdfium::MakeUnique<CFWL_WidgetMgr>(pAdapter)),
       m_pNoteDriver(pdfium::MakeUnique<CFWL_NoteDriver>()) {
   ASSERT(m_pAdapterNative);
 }
 
-IFWL_App::~IFWL_App() {}
+CFWL_App::~CFWL_App() {}
diff --git a/xfa/fwl/core/ifwl_app.h b/xfa/fwl/core/cfwl_app.h
similarity index 85%
rename from xfa/fwl/core/ifwl_app.h
rename to xfa/fwl/core/cfwl_app.h
index 307cb07..28ed8a4 100644
--- a/xfa/fwl/core/ifwl_app.h
+++ b/xfa/fwl/core/cfwl_app.h
@@ -4,8 +4,8 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#ifndef XFA_FWL_CORE_IFWL_APP_H_
-#define XFA_FWL_CORE_IFWL_APP_H_
+#ifndef XFA_FWL_CORE_CFWL_APP_H_
+#define XFA_FWL_CORE_CFWL_APP_H_
 
 #include <memory>
 
@@ -27,10 +27,10 @@
   FWL_KEYFLAG_MButton = 1 << 6
 };
 
-class IFWL_App {
+class CFWL_App {
  public:
-  explicit IFWL_App(CXFA_FFApp* pAdapter);
-  ~IFWL_App();
+  explicit CFWL_App(CXFA_FFApp* pAdapter);
+  ~CFWL_App();
 
   CXFA_FFApp* GetAdapterNative() const { return m_pAdapterNative; }
   CFWL_WidgetMgr* GetWidgetMgr() const { return m_pWidgetMgr.get(); }
@@ -42,4 +42,4 @@
   std::unique_ptr<CFWL_NoteDriver> m_pNoteDriver;
 };
 
-#endif  // XFA_FWL_CORE_IFWL_APP_H_
+#endif  // XFA_FWL_CORE_CFWL_APP_H_
diff --git a/xfa/fwl/core/cfwl_barcode.cpp b/xfa/fwl/core/cfwl_barcode.cpp
index 00bf829..97249c9 100644
--- a/xfa/fwl/core/cfwl_barcode.cpp
+++ b/xfa/fwl/core/cfwl_barcode.cpp
@@ -18,7 +18,7 @@
 
 }  // namespace
 
-CFWL_Barcode::CFWL_Barcode(const IFWL_App* app)
+CFWL_Barcode::CFWL_Barcode(const CFWL_App* app)
     : CFWL_Edit(app), m_dwAttributeMask(FWL_BCDATTRIBUTE_NONE) {}
 
 CFWL_Barcode::~CFWL_Barcode() {}
diff --git a/xfa/fwl/core/cfwl_barcode.h b/xfa/fwl/core/cfwl_barcode.h
index 0f52a04..90dfdca 100644
--- a/xfa/fwl/core/cfwl_barcode.h
+++ b/xfa/fwl/core/cfwl_barcode.h
@@ -13,7 +13,7 @@
 
 class CFWL_Barcode : public CFWL_Edit, public IFWL_Barcode::DataProvider {
  public:
-  explicit CFWL_Barcode(const IFWL_App* pApp);
+  explicit CFWL_Barcode(const CFWL_App* pApp);
   ~CFWL_Barcode() override;
 
   void Initialize();
diff --git a/xfa/fwl/core/cfwl_checkbox.cpp b/xfa/fwl/core/cfwl_checkbox.cpp
index 8117dfe..0e757c3 100644
--- a/xfa/fwl/core/cfwl_checkbox.cpp
+++ b/xfa/fwl/core/cfwl_checkbox.cpp
@@ -11,7 +11,7 @@
 #include "third_party/base/ptr_util.h"
 #include "xfa/fwl/core/fwl_error.h"
 
-CFWL_CheckBox::CFWL_CheckBox(const IFWL_App* app)
+CFWL_CheckBox::CFWL_CheckBox(const CFWL_App* app)
     : CFWL_Widget(app), m_fBoxHeight(16.0f) {}
 
 CFWL_CheckBox::~CFWL_CheckBox() {}
diff --git a/xfa/fwl/core/cfwl_checkbox.h b/xfa/fwl/core/cfwl_checkbox.h
index 099fe31..dd1db68 100644
--- a/xfa/fwl/core/cfwl_checkbox.h
+++ b/xfa/fwl/core/cfwl_checkbox.h
@@ -12,7 +12,7 @@
 
 class CFWL_CheckBox : public CFWL_Widget, public IFWL_CheckBox::DataProvider {
  public:
-  explicit CFWL_CheckBox(const IFWL_App* pApp);
+  explicit CFWL_CheckBox(const CFWL_App* pApp);
   ~CFWL_CheckBox() override;
 
   void Initialize();
diff --git a/xfa/fwl/core/cfwl_combobox.cpp b/xfa/fwl/core/cfwl_combobox.cpp
index c1e8a3d..602e09d 100644
--- a/xfa/fwl/core/cfwl_combobox.cpp
+++ b/xfa/fwl/core/cfwl_combobox.cpp
@@ -21,7 +21,7 @@
 
 }  // namespace
 
-CFWL_ComboBox::CFWL_ComboBox(const IFWL_App* app)
+CFWL_ComboBox::CFWL_ComboBox(const CFWL_App* app)
     : CFWL_Widget(app), m_fMaxListHeight(0) {}
 
 CFWL_ComboBox::~CFWL_ComboBox() {}
diff --git a/xfa/fwl/core/cfwl_combobox.h b/xfa/fwl/core/cfwl_combobox.h
index 45d571f..2036b93 100644
--- a/xfa/fwl/core/cfwl_combobox.h
+++ b/xfa/fwl/core/cfwl_combobox.h
@@ -15,7 +15,7 @@
 
 class CFWL_ComboBox : public CFWL_Widget, public IFWL_ComboBox::DataProvider {
  public:
-  explicit CFWL_ComboBox(const IFWL_App* pApp);
+  explicit CFWL_ComboBox(const CFWL_App* pApp);
   ~CFWL_ComboBox() override;
 
   void Initialize();
diff --git a/xfa/fwl/core/cfwl_datetimepicker.cpp b/xfa/fwl/core/cfwl_datetimepicker.cpp
index abb8546..4f3b510 100644
--- a/xfa/fwl/core/cfwl_datetimepicker.cpp
+++ b/xfa/fwl/core/cfwl_datetimepicker.cpp
@@ -21,7 +21,7 @@
 
 }  // namespace
 
-CFWL_DateTimePicker::CFWL_DateTimePicker(const IFWL_App* app)
+CFWL_DateTimePicker::CFWL_DateTimePicker(const CFWL_App* app)
     : CFWL_Widget(app) {}
 
 CFWL_DateTimePicker::~CFWL_DateTimePicker() {}
diff --git a/xfa/fwl/core/cfwl_datetimepicker.h b/xfa/fwl/core/cfwl_datetimepicker.h
index 8cdc7c1..25fb6f8 100644
--- a/xfa/fwl/core/cfwl_datetimepicker.h
+++ b/xfa/fwl/core/cfwl_datetimepicker.h
@@ -13,7 +13,7 @@
 class CFWL_DateTimePicker : public CFWL_Widget,
                             public IFWL_DateTimePicker::DataProvider {
  public:
-  explicit CFWL_DateTimePicker(const IFWL_App* pApp);
+  explicit CFWL_DateTimePicker(const CFWL_App* pApp);
   ~CFWL_DateTimePicker() override;
 
   void Initialize();
diff --git a/xfa/fwl/core/cfwl_edit.cpp b/xfa/fwl/core/cfwl_edit.cpp
index 447dbc8..e404b1d 100644
--- a/xfa/fwl/core/cfwl_edit.cpp
+++ b/xfa/fwl/core/cfwl_edit.cpp
@@ -19,7 +19,7 @@
 
 }  // namespace
 
-CFWL_Edit::CFWL_Edit(const IFWL_App* app) : CFWL_Widget(app) {}
+CFWL_Edit::CFWL_Edit(const CFWL_App* app) : CFWL_Widget(app) {}
 
 CFWL_Edit::~CFWL_Edit() {}
 
diff --git a/xfa/fwl/core/cfwl_edit.h b/xfa/fwl/core/cfwl_edit.h
index f7dc5e7..4570d57 100644
--- a/xfa/fwl/core/cfwl_edit.h
+++ b/xfa/fwl/core/cfwl_edit.h
@@ -16,7 +16,7 @@
 
 class CFWL_Edit : public CFWL_Widget {
  public:
-  explicit CFWL_Edit(const IFWL_App*);
+  explicit CFWL_Edit(const CFWL_App*);
   ~CFWL_Edit() override;
 
   void Initialize();
diff --git a/xfa/fwl/core/cfwl_listbox.cpp b/xfa/fwl/core/cfwl_listbox.cpp
index 7da49ef..cefee8c 100644
--- a/xfa/fwl/core/cfwl_listbox.cpp
+++ b/xfa/fwl/core/cfwl_listbox.cpp
@@ -21,7 +21,7 @@
 
 }  // namespace
 
-CFWL_ListBox::CFWL_ListBox(const IFWL_App* app) : CFWL_Widget(app) {}
+CFWL_ListBox::CFWL_ListBox(const CFWL_App* app) : CFWL_Widget(app) {}
 
 CFWL_ListBox::~CFWL_ListBox() {}
 
diff --git a/xfa/fwl/core/cfwl_listbox.h b/xfa/fwl/core/cfwl_listbox.h
index 80bc23b..504b1d9 100644
--- a/xfa/fwl/core/cfwl_listbox.h
+++ b/xfa/fwl/core/cfwl_listbox.h
@@ -17,7 +17,7 @@
 
 class CFWL_ListBox : public CFWL_Widget, public IFWL_ListBox::DataProvider {
  public:
-  explicit CFWL_ListBox(const IFWL_App* pApp);
+  explicit CFWL_ListBox(const CFWL_App* pApp);
   ~CFWL_ListBox() override;
 
   void Initialize();
diff --git a/xfa/fwl/core/cfwl_notedriver.cpp b/xfa/fwl/core/cfwl_notedriver.cpp
index 051619b..f4f325f 100644
--- a/xfa/fwl/core/cfwl_notedriver.cpp
+++ b/xfa/fwl/core/cfwl_notedriver.cpp
@@ -11,6 +11,7 @@
 #include "core/fxcrt/fx_ext.h"
 #include "third_party/base/ptr_util.h"
 #include "third_party/base/stl_util.h"
+#include "xfa/fwl/core/cfwl_app.h"
 #include "xfa/fwl/core/cfwl_eventtarget.h"
 #include "xfa/fwl/core/cfwl_msgkey.h"
 #include "xfa/fwl/core/cfwl_msgkillfocus.h"
@@ -19,7 +20,6 @@
 #include "xfa/fwl/core/cfwl_msgsetfocus.h"
 #include "xfa/fwl/core/cfwl_noteloop.h"
 #include "xfa/fwl/core/cfwl_widgetmgr.h"
-#include "xfa/fwl/core/ifwl_app.h"
 #include "xfa/fwl/core/ifwl_form.h"
 
 CFWL_NoteDriver::CFWL_NoteDriver()
diff --git a/xfa/fwl/core/cfwl_picturebox.cpp b/xfa/fwl/core/cfwl_picturebox.cpp
index 3298307..c1a331a 100644
--- a/xfa/fwl/core/cfwl_picturebox.cpp
+++ b/xfa/fwl/core/cfwl_picturebox.cpp
@@ -10,7 +10,7 @@
 
 #include "third_party/base/ptr_util.h"
 
-CFWL_PictureBox::CFWL_PictureBox(const IFWL_App* app) : CFWL_Widget(app) {}
+CFWL_PictureBox::CFWL_PictureBox(const CFWL_App* app) : CFWL_Widget(app) {}
 
 CFWL_PictureBox::~CFWL_PictureBox() {}
 
diff --git a/xfa/fwl/core/cfwl_picturebox.h b/xfa/fwl/core/cfwl_picturebox.h
index ce61a34..e23a6ab 100644
--- a/xfa/fwl/core/cfwl_picturebox.h
+++ b/xfa/fwl/core/cfwl_picturebox.h
@@ -13,7 +13,7 @@
 
 class CFWL_PictureBox : public CFWL_Widget, public IFWL_Widget::DataProvider {
  public:
-  explicit CFWL_PictureBox(const IFWL_App* pApp);
+  explicit CFWL_PictureBox(const CFWL_App* pApp);
   ~CFWL_PictureBox() override;
 
   void Initialize();
diff --git a/xfa/fwl/core/cfwl_pushbutton.cpp b/xfa/fwl/core/cfwl_pushbutton.cpp
index 3d98498..33c6698 100644
--- a/xfa/fwl/core/cfwl_pushbutton.cpp
+++ b/xfa/fwl/core/cfwl_pushbutton.cpp
@@ -10,7 +10,7 @@
 
 #include "third_party/base/ptr_util.h"
 
-CFWL_PushButton::CFWL_PushButton(const IFWL_App* app) : CFWL_Widget(app) {}
+CFWL_PushButton::CFWL_PushButton(const CFWL_App* app) : CFWL_Widget(app) {}
 
 CFWL_PushButton::~CFWL_PushButton() {}
 
diff --git a/xfa/fwl/core/cfwl_pushbutton.h b/xfa/fwl/core/cfwl_pushbutton.h
index 2d7fa9f..be8c5eb 100644
--- a/xfa/fwl/core/cfwl_pushbutton.h
+++ b/xfa/fwl/core/cfwl_pushbutton.h
@@ -13,7 +13,7 @@
 
 class CFWL_PushButton : public CFWL_Widget, public IFWL_Widget::DataProvider {
  public:
-  explicit CFWL_PushButton(const IFWL_App*);
+  explicit CFWL_PushButton(const CFWL_App*);
   ~CFWL_PushButton() override;
 
   void Initialize();
diff --git a/xfa/fwl/core/cfwl_timer.cpp b/xfa/fwl/core/cfwl_timer.cpp
index 289996e..2d92e6d 100644
--- a/xfa/fwl/core/cfwl_timer.cpp
+++ b/xfa/fwl/core/cfwl_timer.cpp
@@ -6,14 +6,14 @@
 
 #include "xfa/fwl/core/cfwl_timer.h"
 
+#include "xfa/fwl/core/cfwl_app.h"
 #include "xfa/fwl/core/cfwl_timerinfo.h"
 #include "xfa/fwl/core/ifwl_adaptertimermgr.h"
-#include "xfa/fwl/core/ifwl_app.h"
 #include "xfa/fwl/core/ifwl_widget.h"
 #include "xfa/fxfa/xfa_ffapp.h"
 
 CFWL_TimerInfo* CFWL_Timer::StartTimer(uint32_t dwElapse, bool bImmediately) {
-  const IFWL_App* pApp = m_pWidget->GetOwnerApp();
+  const CFWL_App* pApp = m_pWidget->GetOwnerApp();
   if (!pApp)
     return nullptr;
 
diff --git a/xfa/fwl/core/cfwl_widget.cpp b/xfa/fwl/core/cfwl_widget.cpp
index 2e08be7..5914ce5 100644
--- a/xfa/fwl/core/cfwl_widget.cpp
+++ b/xfa/fwl/core/cfwl_widget.cpp
@@ -7,17 +7,17 @@
 #include "xfa/fwl/core/cfwl_widget.h"
 
 #include "xfa/fde/tto/fde_textout.h"
+#include "xfa/fwl/core/cfwl_app.h"
 #include "xfa/fwl/core/cfwl_notedriver.h"
 #include "xfa/fwl/core/cfwl_themetext.h"
 #include "xfa/fwl/core/cfwl_widgetmgr.h"
-#include "xfa/fwl/core/ifwl_app.h"
 #include "xfa/fwl/core/ifwl_themeprovider.h"
 
 #define FWL_WGT_CalcHeight 2048
 #define FWL_WGT_CalcWidth 2048
 #define FWL_WGT_CalcMultiLineDefWidth 120.0f
 
-CFWL_Widget::CFWL_Widget(const IFWL_App* app) : m_pApp(app) {}
+CFWL_Widget::CFWL_Widget(const CFWL_App* app) : m_pApp(app) {}
 
 CFWL_Widget::~CFWL_Widget() {}
 
diff --git a/xfa/fwl/core/cfwl_widget.h b/xfa/fwl/core/cfwl_widget.h
index 7f48658..abb8d54 100644
--- a/xfa/fwl/core/cfwl_widget.h
+++ b/xfa/fwl/core/cfwl_widget.h
@@ -20,7 +20,7 @@
 
 class CFWL_Widget {
  public:
-  explicit CFWL_Widget(const IFWL_App*);
+  explicit CFWL_Widget(const CFWL_App*);
   virtual ~CFWL_Widget();
 
   IFWL_Widget* GetWidget() { return m_pIface.get(); }
@@ -50,7 +50,7 @@
  protected:
   void Initialize();
 
-  const IFWL_App* m_pApp;
+  const CFWL_App* m_pApp;
   std::unique_ptr<IFWL_Widget> m_pIface;
 };
 
diff --git a/xfa/fwl/core/cfwl_widgetmgr.cpp b/xfa/fwl/core/cfwl_widgetmgr.cpp
index 6c11018..3d5beb4 100644
--- a/xfa/fwl/core/cfwl_widgetmgr.cpp
+++ b/xfa/fwl/core/cfwl_widgetmgr.cpp
@@ -9,8 +9,8 @@
 #include <utility>
 
 #include "third_party/base/ptr_util.h"
+#include "xfa/fwl/core/cfwl_app.h"
 #include "xfa/fwl/core/cfwl_notedriver.h"
-#include "xfa/fwl/core/ifwl_app.h"
 #include "xfa/fwl/core/ifwl_form.h"
 #include "xfa/fxfa/app/xfa_fwladapter.h"
 #include "xfa/fxfa/xfa_ffapp.h"
@@ -472,7 +472,7 @@
     return;
 
   IFWL_Widget* pDstWidget = pMessage->m_pDstTarget;
-  const IFWL_App* pApp = pDstWidget->GetOwnerApp();
+  const CFWL_App* pApp = pDstWidget->GetOwnerApp();
   if (!pApp)
     return;
 
diff --git a/xfa/fwl/core/ifwl_barcode.cpp b/xfa/fwl/core/ifwl_barcode.cpp
index 71346b8..d5ab17f 100644
--- a/xfa/fwl/core/ifwl_barcode.cpp
+++ b/xfa/fwl/core/ifwl_barcode.cpp
@@ -15,7 +15,7 @@
 #include "xfa/fwl/core/cfx_barcode.h"
 #include "xfa/fwl/core/ifwl_themeprovider.h"
 
-IFWL_Barcode::IFWL_Barcode(const IFWL_App* app,
+IFWL_Barcode::IFWL_Barcode(const CFWL_App* app,
                            std::unique_ptr<CFWL_WidgetProperties> properties)
     : IFWL_Edit(app, std::move(properties), nullptr),
       m_dwStatus(0),
diff --git a/xfa/fwl/core/ifwl_barcode.h b/xfa/fwl/core/ifwl_barcode.h
index 5ff99e8..2a4c9d7 100644
--- a/xfa/fwl/core/ifwl_barcode.h
+++ b/xfa/fwl/core/ifwl_barcode.h
@@ -58,7 +58,7 @@
     virtual uint32_t GetBarcodeAttributeMask() const = 0;
   };
 
-  IFWL_Barcode(const IFWL_App* app,
+  IFWL_Barcode(const CFWL_App* app,
                std::unique_ptr<CFWL_WidgetProperties> properties);
   ~IFWL_Barcode() override;
 
diff --git a/xfa/fwl/core/ifwl_caret.cpp b/xfa/fwl/core/ifwl_caret.cpp
index fb5d5e5..6d21ca2 100644
--- a/xfa/fwl/core/ifwl_caret.cpp
+++ b/xfa/fwl/core/ifwl_caret.cpp
@@ -21,7 +21,7 @@
 
 }  // namespace
 
-IFWL_Caret::IFWL_Caret(const IFWL_App* app,
+IFWL_Caret::IFWL_Caret(const CFWL_App* app,
                        std::unique_ptr<CFWL_WidgetProperties> properties,
                        IFWL_Widget* pOuter)
     : IFWL_Widget(app, std::move(properties), pOuter),
diff --git a/xfa/fwl/core/ifwl_caret.h b/xfa/fwl/core/ifwl_caret.h
index 57d0025..53fe1dd 100644
--- a/xfa/fwl/core/ifwl_caret.h
+++ b/xfa/fwl/core/ifwl_caret.h
@@ -20,7 +20,7 @@
 
 class IFWL_Caret : public IFWL_Widget {
  public:
-  IFWL_Caret(const IFWL_App* app,
+  IFWL_Caret(const CFWL_App* app,
              std::unique_ptr<CFWL_WidgetProperties> properties,
              IFWL_Widget* pOuter);
   ~IFWL_Caret() override;
diff --git a/xfa/fwl/core/ifwl_checkbox.cpp b/xfa/fwl/core/ifwl_checkbox.cpp
index 4af7cc7..5268ace 100644
--- a/xfa/fwl/core/ifwl_checkbox.cpp
+++ b/xfa/fwl/core/ifwl_checkbox.cpp
@@ -12,6 +12,7 @@
 
 #include "third_party/base/ptr_util.h"
 #include "xfa/fde/tto/fde_textout.h"
+#include "xfa/fwl/core/cfwl_app.h"
 #include "xfa/fwl/core/cfwl_evtcheckstatechanged.h"
 #include "xfa/fwl/core/cfwl_msgkey.h"
 #include "xfa/fwl/core/cfwl_msgmouse.h"
@@ -19,7 +20,6 @@
 #include "xfa/fwl/core/cfwl_themebackground.h"
 #include "xfa/fwl/core/cfwl_themetext.h"
 #include "xfa/fwl/core/cfwl_widgetmgr.h"
-#include "xfa/fwl/core/ifwl_app.h"
 #include "xfa/fwl/core/ifwl_themeprovider.h"
 
 namespace {
@@ -28,7 +28,7 @@
 
 }  // namespace
 
-IFWL_CheckBox::IFWL_CheckBox(const IFWL_App* app,
+IFWL_CheckBox::IFWL_CheckBox(const CFWL_App* app,
                              std::unique_ptr<CFWL_WidgetProperties> properties)
     : IFWL_Widget(app, std::move(properties), nullptr),
       m_dwTTOStyles(FDE_TTOSTYLE_SingleLine),
diff --git a/xfa/fwl/core/ifwl_checkbox.h b/xfa/fwl/core/ifwl_checkbox.h
index 0c9f3cd..8d777fc 100644
--- a/xfa/fwl/core/ifwl_checkbox.h
+++ b/xfa/fwl/core/ifwl_checkbox.h
@@ -55,7 +55,7 @@
     virtual FX_FLOAT GetBoxSize(IFWL_Widget* pWidget) = 0;
   };
 
-  IFWL_CheckBox(const IFWL_App* app,
+  IFWL_CheckBox(const CFWL_App* app,
                 std::unique_ptr<CFWL_WidgetProperties> properties);
   ~IFWL_CheckBox() override;
 
diff --git a/xfa/fwl/core/ifwl_combobox.cpp b/xfa/fwl/core/ifwl_combobox.cpp
index 82d9d3d..f2a85e6 100644
--- a/xfa/fwl/core/ifwl_combobox.cpp
+++ b/xfa/fwl/core/ifwl_combobox.cpp
@@ -13,6 +13,7 @@
 #include "third_party/base/ptr_util.h"
 #include "xfa/fde/cfde_txtedtengine.h"
 #include "xfa/fde/tto/fde_textout.h"
+#include "xfa/fwl/core/cfwl_app.h"
 #include "xfa/fwl/core/cfwl_evteditchanged.h"
 #include "xfa/fwl/core/cfwl_evtpostdropdown.h"
 #include "xfa/fwl/core/cfwl_evtpredropdown.h"
@@ -27,12 +28,11 @@
 #include "xfa/fwl/core/cfwl_themepart.h"
 #include "xfa/fwl/core/cfwl_themetext.h"
 #include "xfa/fwl/core/cfwl_widgetmgr.h"
-#include "xfa/fwl/core/ifwl_app.h"
 #include "xfa/fwl/core/ifwl_formproxy.h"
 #include "xfa/fwl/core/ifwl_listbox.h"
 #include "xfa/fwl/core/ifwl_themeprovider.h"
 
-IFWL_ComboBox::IFWL_ComboBox(const IFWL_App* app,
+IFWL_ComboBox::IFWL_ComboBox(const CFWL_App* app,
                              std::unique_ptr<CFWL_WidgetProperties> properties)
     : IFWL_Widget(app, std::move(properties), nullptr),
       m_pComboBoxProxy(nullptr),
diff --git a/xfa/fwl/core/ifwl_combobox.h b/xfa/fwl/core/ifwl_combobox.h
index ad48ec2..b2fc23d 100644
--- a/xfa/fwl/core/ifwl_combobox.h
+++ b/xfa/fwl/core/ifwl_combobox.h
@@ -54,7 +54,7 @@
     virtual FX_FLOAT GetListHeight(IFWL_Widget* pWidget) = 0;
   };
 
-  explicit IFWL_ComboBox(const IFWL_App* app,
+  explicit IFWL_ComboBox(const CFWL_App* app,
                          std::unique_ptr<CFWL_WidgetProperties> properties);
   ~IFWL_ComboBox() override;
 
diff --git a/xfa/fwl/core/ifwl_comboboxproxy.cpp b/xfa/fwl/core/ifwl_comboboxproxy.cpp
index 53586f4..35c8a0e 100644
--- a/xfa/fwl/core/ifwl_comboboxproxy.cpp
+++ b/xfa/fwl/core/ifwl_comboboxproxy.cpp
@@ -9,15 +9,15 @@
 #include <memory>
 #include <utility>
 
+#include "xfa/fwl/core/cfwl_app.h"
 #include "xfa/fwl/core/cfwl_msgkillfocus.h"
 #include "xfa/fwl/core/cfwl_msgmouse.h"
 #include "xfa/fwl/core/cfwl_notedriver.h"
-#include "xfa/fwl/core/ifwl_app.h"
 #include "xfa/fwl/core/ifwl_combobox.h"
 
 IFWL_ComboBoxProxy::IFWL_ComboBoxProxy(
     IFWL_ComboBox* pComboBox,
-    const IFWL_App* app,
+    const CFWL_App* app,
     std::unique_ptr<CFWL_WidgetProperties> properties,
     IFWL_Widget* pOuter)
     : IFWL_FormProxy(app, std::move(properties), pOuter),
@@ -64,7 +64,7 @@
 }
 
 void IFWL_ComboBoxProxy::OnLButtonDown(CFWL_Message* pMessage) {
-  const IFWL_App* pApp = GetOwnerApp();
+  const CFWL_App* pApp = GetOwnerApp();
   if (!pApp)
     return;
 
@@ -87,7 +87,7 @@
 
 void IFWL_ComboBoxProxy::OnLButtonUp(CFWL_Message* pMessage) {
   m_bLButtonDown = false;
-  const IFWL_App* pApp = GetOwnerApp();
+  const CFWL_App* pApp = GetOwnerApp();
   if (!pApp)
     return;
 
diff --git a/xfa/fwl/core/ifwl_comboboxproxy.h b/xfa/fwl/core/ifwl_comboboxproxy.h
index 3425005..228045d 100644
--- a/xfa/fwl/core/ifwl_comboboxproxy.h
+++ b/xfa/fwl/core/ifwl_comboboxproxy.h
@@ -16,7 +16,7 @@
 class IFWL_ComboBoxProxy : public IFWL_FormProxy {
  public:
   IFWL_ComboBoxProxy(IFWL_ComboBox* pCombobBox,
-                     const IFWL_App* app,
+                     const CFWL_App* app,
                      std::unique_ptr<CFWL_WidgetProperties> properties,
                      IFWL_Widget* pOuter);
   ~IFWL_ComboBoxProxy() override;
diff --git a/xfa/fwl/core/ifwl_comboedit.cpp b/xfa/fwl/core/ifwl_comboedit.cpp
index 07fe515..7d12603 100644
--- a/xfa/fwl/core/ifwl_comboedit.cpp
+++ b/xfa/fwl/core/ifwl_comboedit.cpp
@@ -14,7 +14,7 @@
 #include "xfa/fwl/core/ifwl_combobox.h"
 
 IFWL_ComboEdit::IFWL_ComboEdit(
-    const IFWL_App* app,
+    const CFWL_App* app,
     std::unique_ptr<CFWL_WidgetProperties> properties,
     IFWL_Widget* pOuter)
     : IFWL_Edit(app, std::move(properties), pOuter) {
diff --git a/xfa/fwl/core/ifwl_comboedit.h b/xfa/fwl/core/ifwl_comboedit.h
index 21b9cf9..5b71c1e 100644
--- a/xfa/fwl/core/ifwl_comboedit.h
+++ b/xfa/fwl/core/ifwl_comboedit.h
@@ -17,7 +17,7 @@
 
 class IFWL_ComboEdit : public IFWL_Edit {
  public:
-  IFWL_ComboEdit(const IFWL_App* app,
+  IFWL_ComboEdit(const CFWL_App* app,
                  std::unique_ptr<CFWL_WidgetProperties> properties,
                  IFWL_Widget* pOuter);
 
diff --git a/xfa/fwl/core/ifwl_combolist.cpp b/xfa/fwl/core/ifwl_combolist.cpp
index 18612db..320c7fd 100644
--- a/xfa/fwl/core/ifwl_combolist.cpp
+++ b/xfa/fwl/core/ifwl_combolist.cpp
@@ -18,7 +18,7 @@
 #include "xfa/fwl/core/ifwl_listbox.h"
 
 IFWL_ComboList::IFWL_ComboList(
-    const IFWL_App* app,
+    const CFWL_App* app,
     std::unique_ptr<CFWL_WidgetProperties> properties,
     IFWL_Widget* pOuter)
     : IFWL_ListBox(app, std::move(properties), pOuter), m_bNotifyOwner(true) {
diff --git a/xfa/fwl/core/ifwl_combolist.h b/xfa/fwl/core/ifwl_combolist.h
index 360bc20..48dfb44 100644
--- a/xfa/fwl/core/ifwl_combolist.h
+++ b/xfa/fwl/core/ifwl_combolist.h
@@ -15,7 +15,7 @@
 
 class IFWL_ComboList : public IFWL_ListBox {
  public:
-  IFWL_ComboList(const IFWL_App* app,
+  IFWL_ComboList(const CFWL_App* app,
                  std::unique_ptr<CFWL_WidgetProperties> properties,
                  IFWL_Widget* pOuter);
 
diff --git a/xfa/fwl/core/ifwl_datetimeedit.cpp b/xfa/fwl/core/ifwl_datetimeedit.cpp
index a996dc1..62ab4f6 100644
--- a/xfa/fwl/core/ifwl_datetimeedit.cpp
+++ b/xfa/fwl/core/ifwl_datetimeedit.cpp
@@ -15,7 +15,7 @@
 #include "xfa/fwl/core/ifwl_datetimepicker.h"
 
 IFWL_DateTimeEdit::IFWL_DateTimeEdit(
-    const IFWL_App* app,
+    const CFWL_App* app,
     std::unique_ptr<CFWL_WidgetProperties> properties,
     IFWL_Widget* pOuter)
     : IFWL_Edit(app, std::move(properties), pOuter) {}
diff --git a/xfa/fwl/core/ifwl_datetimeedit.h b/xfa/fwl/core/ifwl_datetimeedit.h
index a814796..1d420b5 100644
--- a/xfa/fwl/core/ifwl_datetimeedit.h
+++ b/xfa/fwl/core/ifwl_datetimeedit.h
@@ -16,7 +16,7 @@
 
 class IFWL_DateTimeEdit : public IFWL_Edit {
  public:
-  IFWL_DateTimeEdit(const IFWL_App* app,
+  IFWL_DateTimeEdit(const CFWL_App* app,
                     std::unique_ptr<CFWL_WidgetProperties> properties,
                     IFWL_Widget* pOuter);
 
diff --git a/xfa/fwl/core/ifwl_datetimepicker.cpp b/xfa/fwl/core/ifwl_datetimepicker.cpp
index 85acbc4..9662ec0 100644
--- a/xfa/fwl/core/ifwl_datetimepicker.cpp
+++ b/xfa/fwl/core/ifwl_datetimepicker.cpp
@@ -29,7 +29,7 @@
 }  // namespace
 
 IFWL_DateTimePicker::IFWL_DateTimePicker(
-    const IFWL_App* app,
+    const CFWL_App* app,
     std::unique_ptr<CFWL_WidgetProperties> properties)
     : IFWL_Widget(app, std::move(properties), nullptr),
       m_iBtnState(1),
diff --git a/xfa/fwl/core/ifwl_datetimepicker.h b/xfa/fwl/core/ifwl_datetimepicker.h
index 67c1c33..2b4be48 100644
--- a/xfa/fwl/core/ifwl_datetimepicker.h
+++ b/xfa/fwl/core/ifwl_datetimepicker.h
@@ -47,7 +47,7 @@
   };
 
   explicit IFWL_DateTimePicker(
-      const IFWL_App* app,
+      const CFWL_App* app,
       std::unique_ptr<CFWL_WidgetProperties> properties);
   ~IFWL_DateTimePicker() override;
 
diff --git a/xfa/fwl/core/ifwl_edit.cpp b/xfa/fwl/core/ifwl_edit.cpp
index 4a95f2c..f262f85 100644
--- a/xfa/fwl/core/ifwl_edit.cpp
+++ b/xfa/fwl/core/ifwl_edit.cpp
@@ -18,6 +18,7 @@
 #include "xfa/fde/fde_render.h"
 #include "xfa/fde/ifde_txtedtpage.h"
 #include "xfa/fgas/font/cfgas_gefont.h"
+#include "xfa/fwl/core/cfwl_app.h"
 #include "xfa/fwl/core/cfwl_evtcheckword.h"
 #include "xfa/fwl/core/cfwl_evttextchanged.h"
 #include "xfa/fwl/core/cfwl_evttextfull.h"
@@ -27,7 +28,6 @@
 #include "xfa/fwl/core/cfwl_themebackground.h"
 #include "xfa/fwl/core/cfwl_themepart.h"
 #include "xfa/fwl/core/cfwl_widgetmgr.h"
-#include "xfa/fwl/core/ifwl_app.h"
 #include "xfa/fwl/core/ifwl_caret.h"
 #include "xfa/fwl/core/ifwl_themeprovider.h"
 #include "xfa/fxfa/xfa_ffdoc.h"
@@ -57,7 +57,7 @@
 
 }  // namespace
 
-IFWL_Edit::IFWL_Edit(const IFWL_App* app,
+IFWL_Edit::IFWL_Edit(const CFWL_App* app,
                      std::unique_ptr<CFWL_WidgetProperties> properties,
                      IFWL_Widget* pOuter)
     : IFWL_Widget(app, std::move(properties), pOuter),
diff --git a/xfa/fwl/core/ifwl_edit.h b/xfa/fwl/core/ifwl_edit.h
index 04288a5..b695f77 100644
--- a/xfa/fwl/core/ifwl_edit.h
+++ b/xfa/fwl/core/ifwl_edit.h
@@ -59,7 +59,7 @@
 
 class IFWL_Edit : public IFWL_Widget {
  public:
-  IFWL_Edit(const IFWL_App* app,
+  IFWL_Edit(const CFWL_App* app,
             std::unique_ptr<CFWL_WidgetProperties> properties,
             IFWL_Widget* pOuter);
   ~IFWL_Edit() override;
diff --git a/xfa/fwl/core/ifwl_form.cpp b/xfa/fwl/core/ifwl_form.cpp
index 56b98e3..535205d 100644
--- a/xfa/fwl/core/ifwl_form.cpp
+++ b/xfa/fwl/core/ifwl_form.cpp
@@ -10,6 +10,7 @@
 
 #include "third_party/base/ptr_util.h"
 #include "xfa/fde/tto/fde_textout.h"
+#include "xfa/fwl/core/cfwl_app.h"
 #include "xfa/fwl/core/cfwl_evtclose.h"
 #include "xfa/fwl/core/cfwl_msgmouse.h"
 #include "xfa/fwl/core/cfwl_notedriver.h"
@@ -19,7 +20,6 @@
 #include "xfa/fwl/core/cfwl_themepart.h"
 #include "xfa/fwl/core/cfwl_themetext.h"
 #include "xfa/fwl/core/cfwl_widgetmgr.h"
-#include "xfa/fwl/core/ifwl_app.h"
 #include "xfa/fwl/core/ifwl_formproxy.h"
 #include "xfa/fwl/core/ifwl_themeprovider.h"
 #include "xfa/fwl/theme/cfwl_widgettp.h"
@@ -38,7 +38,7 @@
 
 }  // namespace
 
-IFWL_Form::IFWL_Form(const IFWL_App* app,
+IFWL_Form::IFWL_Form(const CFWL_App* app,
                      std::unique_ptr<CFWL_WidgetProperties> properties,
                      IFWL_Widget* pOuter)
     : IFWL_Widget(app, std::move(properties), pOuter),
@@ -268,7 +268,7 @@
 }
 
 IFWL_Widget* IFWL_Form::DoModal() {
-  const IFWL_App* pApp = GetOwnerApp();
+  const CFWL_App* pApp = GetOwnerApp();
   if (!pApp)
     return nullptr;
 
@@ -300,7 +300,7 @@
 
 #if (_FX_OS_ == _FX_MACOSX_)
   m_pNoteLoop->EndModalLoop();
-  const IFWL_App* pApp = GetOwnerApp();
+  const CFWL_App* pApp = GetOwnerApp();
   if (!pApp)
     return;
 
@@ -457,7 +457,7 @@
 }
 
 void IFWL_Form::RegisterForm() {
-  const IFWL_App* pApp = GetOwnerApp();
+  const CFWL_App* pApp = GetOwnerApp();
   if (!pApp)
     return;
 
@@ -470,7 +470,7 @@
 }
 
 void IFWL_Form::UnRegisterForm() {
-  const IFWL_App* pApp = GetOwnerApp();
+  const CFWL_App* pApp = GetOwnerApp();
   if (!pApp)
     return;
 
diff --git a/xfa/fwl/core/ifwl_form.h b/xfa/fwl/core/ifwl_form.h
index 8970a5c..5c4c00d 100644
--- a/xfa/fwl/core/ifwl_form.h
+++ b/xfa/fwl/core/ifwl_form.h
@@ -35,7 +35,7 @@
 
 class IFWL_Form : public IFWL_Widget {
  public:
-  IFWL_Form(const IFWL_App* app,
+  IFWL_Form(const CFWL_App* app,
             std::unique_ptr<CFWL_WidgetProperties> properties,
             IFWL_Widget* pOuter);
   ~IFWL_Form() override;
diff --git a/xfa/fwl/core/ifwl_formproxy.cpp b/xfa/fwl/core/ifwl_formproxy.cpp
index 253ed7f..521e056 100644
--- a/xfa/fwl/core/ifwl_formproxy.cpp
+++ b/xfa/fwl/core/ifwl_formproxy.cpp
@@ -13,7 +13,7 @@
 #include "xfa/fwl/core/cfwl_notedriver.h"
 
 IFWL_FormProxy::IFWL_FormProxy(
-    const IFWL_App* app,
+    const CFWL_App* app,
     std::unique_ptr<CFWL_WidgetProperties> properties,
     IFWL_Widget* pOuter)
     : IFWL_Form(app, std::move(properties), pOuter) {}
diff --git a/xfa/fwl/core/ifwl_formproxy.h b/xfa/fwl/core/ifwl_formproxy.h
index bd2fe89..b3c6a10 100644
--- a/xfa/fwl/core/ifwl_formproxy.h
+++ b/xfa/fwl/core/ifwl_formproxy.h
@@ -15,7 +15,7 @@
 
 class IFWL_FormProxy : public IFWL_Form {
  public:
-  IFWL_FormProxy(const IFWL_App* app,
+  IFWL_FormProxy(const CFWL_App* app,
                  std::unique_ptr<CFWL_WidgetProperties> properties,
                  IFWL_Widget* pOuter);
   ~IFWL_FormProxy() override;
diff --git a/xfa/fwl/core/ifwl_listbox.cpp b/xfa/fwl/core/ifwl_listbox.cpp
index bcc8040..d45bdd9 100644
--- a/xfa/fwl/core/ifwl_listbox.cpp
+++ b/xfa/fwl/core/ifwl_listbox.cpp
@@ -12,13 +12,13 @@
 
 #include "third_party/base/ptr_util.h"
 #include "xfa/fde/tto/fde_textout.h"
+#include "xfa/fwl/core/cfwl_app.h"
 #include "xfa/fwl/core/cfwl_msgkey.h"
 #include "xfa/fwl/core/cfwl_msgmouse.h"
 #include "xfa/fwl/core/cfwl_msgmousewheel.h"
 #include "xfa/fwl/core/cfwl_themebackground.h"
 #include "xfa/fwl/core/cfwl_themepart.h"
 #include "xfa/fwl/core/cfwl_themetext.h"
-#include "xfa/fwl/core/ifwl_app.h"
 #include "xfa/fwl/core/ifwl_themeprovider.h"
 
 namespace {
@@ -27,7 +27,7 @@
 
 }  // namespace
 
-IFWL_ListBox::IFWL_ListBox(const IFWL_App* app,
+IFWL_ListBox::IFWL_ListBox(const CFWL_App* app,
                            std::unique_ptr<CFWL_WidgetProperties> properties,
                            IFWL_Widget* pOuter)
     : IFWL_Widget(app, std::move(properties), pOuter),
diff --git a/xfa/fwl/core/ifwl_listbox.h b/xfa/fwl/core/ifwl_listbox.h
index b6c0b82..ea1c54e 100644
--- a/xfa/fwl/core/ifwl_listbox.h
+++ b/xfa/fwl/core/ifwl_listbox.h
@@ -76,7 +76,7 @@
                                    uint32_t dwCheckState) = 0;
   };
 
-  IFWL_ListBox(const IFWL_App* app,
+  IFWL_ListBox(const CFWL_App* app,
                std::unique_ptr<CFWL_WidgetProperties> properties,
                IFWL_Widget* pOuter);
   ~IFWL_ListBox() override;
diff --git a/xfa/fwl/core/ifwl_monthcalendar.cpp b/xfa/fwl/core/ifwl_monthcalendar.cpp
index 10ce33a..0137f19 100644
--- a/xfa/fwl/core/ifwl_monthcalendar.cpp
+++ b/xfa/fwl/core/ifwl_monthcalendar.cpp
@@ -122,7 +122,7 @@
 }  // namespace
 
 IFWL_MonthCalendar::IFWL_MonthCalendar(
-    const IFWL_App* app,
+    const CFWL_App* app,
     std::unique_ptr<CFWL_WidgetProperties> properties,
     IFWL_Widget* pOuter)
     : IFWL_Widget(app, std::move(properties), pOuter),
diff --git a/xfa/fwl/core/ifwl_monthcalendar.h b/xfa/fwl/core/ifwl_monthcalendar.h
index f2c072e..dd58663 100644
--- a/xfa/fwl/core/ifwl_monthcalendar.h
+++ b/xfa/fwl/core/ifwl_monthcalendar.h
@@ -35,7 +35,7 @@
     virtual int32_t GetCurYear(IFWL_Widget* pWidget) = 0;
   };
 
-  IFWL_MonthCalendar(const IFWL_App* app,
+  IFWL_MonthCalendar(const CFWL_App* app,
                      std::unique_ptr<CFWL_WidgetProperties> properties,
                      IFWL_Widget* pOuter);
   ~IFWL_MonthCalendar() override;
diff --git a/xfa/fwl/core/ifwl_picturebox.cpp b/xfa/fwl/core/ifwl_picturebox.cpp
index 9cb3604..3cffa52 100644
--- a/xfa/fwl/core/ifwl_picturebox.cpp
+++ b/xfa/fwl/core/ifwl_picturebox.cpp
@@ -14,7 +14,7 @@
 #include "xfa/fwl/core/cfwl_picturebox.h"
 
 IFWL_PictureBox::IFWL_PictureBox(
-    const IFWL_App* app,
+    const CFWL_App* app,
     std::unique_ptr<CFWL_WidgetProperties> properties)
     : IFWL_Widget(app, std::move(properties), nullptr) {
   m_rtClient.Reset();
diff --git a/xfa/fwl/core/ifwl_picturebox.h b/xfa/fwl/core/ifwl_picturebox.h
index d303992..510ab9a 100644
--- a/xfa/fwl/core/ifwl_picturebox.h
+++ b/xfa/fwl/core/ifwl_picturebox.h
@@ -32,7 +32,7 @@
 
 class IFWL_PictureBox : public IFWL_Widget {
  public:
-  explicit IFWL_PictureBox(const IFWL_App* app,
+  explicit IFWL_PictureBox(const CFWL_App* app,
                            std::unique_ptr<CFWL_WidgetProperties> properties);
   ~IFWL_PictureBox() override;
 
diff --git a/xfa/fwl/core/ifwl_pushbutton.cpp b/xfa/fwl/core/ifwl_pushbutton.cpp
index 9589de1..7eb8412 100644
--- a/xfa/fwl/core/ifwl_pushbutton.cpp
+++ b/xfa/fwl/core/ifwl_pushbutton.cpp
@@ -21,7 +21,7 @@
 #include "xfa/fwl/core/ifwl_themeprovider.h"
 
 IFWL_PushButton::IFWL_PushButton(
-    const IFWL_App* app,
+    const CFWL_App* app,
     std::unique_ptr<CFWL_WidgetProperties> properties)
     : IFWL_Widget(app, std::move(properties), nullptr),
       m_bBtnDown(false),
diff --git a/xfa/fwl/core/ifwl_pushbutton.h b/xfa/fwl/core/ifwl_pushbutton.h
index c2c337d..9a14213 100644
--- a/xfa/fwl/core/ifwl_pushbutton.h
+++ b/xfa/fwl/core/ifwl_pushbutton.h
@@ -34,7 +34,7 @@
 
 class IFWL_PushButton : public IFWL_Widget {
  public:
-  IFWL_PushButton(const IFWL_App* app,
+  IFWL_PushButton(const CFWL_App* app,
                   std::unique_ptr<CFWL_WidgetProperties> properties);
   ~IFWL_PushButton() override;
 
diff --git a/xfa/fwl/core/ifwl_scrollbar.cpp b/xfa/fwl/core/ifwl_scrollbar.cpp
index 6732e94..c1feeb8 100644
--- a/xfa/fwl/core/ifwl_scrollbar.cpp
+++ b/xfa/fwl/core/ifwl_scrollbar.cpp
@@ -23,7 +23,7 @@
 #define FWL_SCROLLBAR_MinThumb 5
 
 IFWL_ScrollBar::IFWL_ScrollBar(
-    const IFWL_App* app,
+    const CFWL_App* app,
     std::unique_ptr<CFWL_WidgetProperties> properties,
     IFWL_Widget* pOuter)
     : IFWL_Widget(app, std::move(properties), pOuter),
diff --git a/xfa/fwl/core/ifwl_scrollbar.h b/xfa/fwl/core/ifwl_scrollbar.h
index b6f2b02..a5619b7 100644
--- a/xfa/fwl/core/ifwl_scrollbar.h
+++ b/xfa/fwl/core/ifwl_scrollbar.h
@@ -22,7 +22,7 @@
 
 class IFWL_ScrollBar : public IFWL_Widget {
  public:
-  IFWL_ScrollBar(const IFWL_App* app,
+  IFWL_ScrollBar(const CFWL_App* app,
                  std::unique_ptr<CFWL_WidgetProperties> properties,
                  IFWL_Widget* pOuter);
   ~IFWL_ScrollBar() override;
diff --git a/xfa/fwl/core/ifwl_spinbutton.cpp b/xfa/fwl/core/ifwl_spinbutton.cpp
index 9706a41..39da43e 100644
--- a/xfa/fwl/core/ifwl_spinbutton.cpp
+++ b/xfa/fwl/core/ifwl_spinbutton.cpp
@@ -28,7 +28,7 @@
 }  // namespace
 
 IFWL_SpinButton::IFWL_SpinButton(
-    const IFWL_App* app,
+    const CFWL_App* app,
     std::unique_ptr<CFWL_WidgetProperties> properties)
     : IFWL_Widget(app, std::move(properties), nullptr),
       m_dwUpState(CFWL_PartState_Normal),
diff --git a/xfa/fwl/core/ifwl_spinbutton.h b/xfa/fwl/core/ifwl_spinbutton.h
index 157c141..ab888b1 100644
--- a/xfa/fwl/core/ifwl_spinbutton.h
+++ b/xfa/fwl/core/ifwl_spinbutton.h
@@ -21,7 +21,7 @@
 
 class IFWL_SpinButton : public IFWL_Widget {
  public:
-  IFWL_SpinButton(const IFWL_App* app,
+  IFWL_SpinButton(const CFWL_App* app,
                   std::unique_ptr<CFWL_WidgetProperties> properties);
   ~IFWL_SpinButton() override;
 
diff --git a/xfa/fwl/core/ifwl_widget.cpp b/xfa/fwl/core/ifwl_widget.cpp
index 102ca2e..040a57f 100644
--- a/xfa/fwl/core/ifwl_widget.cpp
+++ b/xfa/fwl/core/ifwl_widget.cpp
@@ -10,6 +10,7 @@
 #include <utility>
 
 #include "xfa/fde/tto/fde_textout.h"
+#include "xfa/fwl/core/cfwl_app.h"
 #include "xfa/fwl/core/cfwl_evtkey.h"
 #include "xfa/fwl/core/cfwl_evtkillfocus.h"
 #include "xfa/fwl/core/cfwl_evtmouse.h"
@@ -26,7 +27,6 @@
 #include "xfa/fwl/core/cfwl_themepart.h"
 #include "xfa/fwl/core/cfwl_themetext.h"
 #include "xfa/fwl/core/cfwl_widgetmgr.h"
-#include "xfa/fwl/core/ifwl_app.h"
 #include "xfa/fwl/core/ifwl_combobox.h"
 #include "xfa/fwl/core/ifwl_form.h"
 #include "xfa/fwl/core/ifwl_themeprovider.h"
@@ -37,7 +37,7 @@
 #define FWL_WGT_CalcWidth 2048
 #define FWL_WGT_CalcMultiLineDefWidth 120.0f
 
-IFWL_Widget::IFWL_Widget(const IFWL_App* app,
+IFWL_Widget::IFWL_Widget(const CFWL_App* app,
                          std::unique_ptr<CFWL_WidgetProperties> properties,
                          IFWL_Widget* pOuter)
     : m_pOwnerApp(app),
@@ -459,7 +459,7 @@
   if (m_pWidgetMgr->IsFormDisabled())
     return;
 
-  const IFWL_App* pApp = GetOwnerApp();
+  const CFWL_App* pApp = GetOwnerApp();
   if (!pApp)
     return;
 
@@ -476,7 +476,7 @@
 }
 
 void IFWL_Widget::SetGrab(bool bSet) {
-  const IFWL_App* pApp = GetOwnerApp();
+  const CFWL_App* pApp = GetOwnerApp();
   if (!pApp)
     return;
 
@@ -585,7 +585,7 @@
 }
 
 void IFWL_Widget::RegisterEventTarget(IFWL_Widget* pEventSource) {
-  const IFWL_App* pApp = GetOwnerApp();
+  const CFWL_App* pApp = GetOwnerApp();
   if (!pApp)
     return;
 
@@ -597,7 +597,7 @@
 }
 
 void IFWL_Widget::UnregisterEventTarget() {
-  const IFWL_App* pApp = GetOwnerApp();
+  const CFWL_App* pApp = GetOwnerApp();
   if (!pApp)
     return;
 
@@ -625,7 +625,7 @@
     m_pOuter->GetDelegate()->OnProcessEvent(pEvent);
     return;
   }
-  const IFWL_App* pApp = GetOwnerApp();
+  const CFWL_App* pApp = GetOwnerApp();
   if (!pApp)
     return;
 
@@ -695,7 +695,7 @@
 }
 
 void IFWL_Widget::NotifyDriver() {
-  const IFWL_App* pApp = GetOwnerApp();
+  const CFWL_App* pApp = GetOwnerApp();
   if (!pApp)
     return;
 
diff --git a/xfa/fwl/core/ifwl_widget.h b/xfa/fwl/core/ifwl_widget.h
index a7ae8ce..230ea66 100644
--- a/xfa/fwl/core/ifwl_widget.h
+++ b/xfa/fwl/core/ifwl_widget.h
@@ -57,7 +57,7 @@
 class CFWL_Widget;
 class CFWL_WidgetProperties;
 class CFWL_WidgetMgr;
-class IFWL_App;
+class CFWL_App;
 class IFWL_ThemeProvider;
 class IFWL_Widget;
 enum class FWL_Type;
@@ -118,7 +118,7 @@
     return m_pDelegate ? m_pDelegate : this;
   }
 
-  const IFWL_App* GetOwnerApp() const { return m_pOwnerApp; }
+  const CFWL_App* GetOwnerApp() const { return m_pOwnerApp; }
   uint32_t GetEventKey() const { return m_nEventKey; }
   void SetEventKey(uint32_t key) { m_nEventKey = key; }
 
@@ -133,7 +133,7 @@
   void Repaint(const CFX_RectF* pRect = nullptr);
 
  protected:
-  IFWL_Widget(const IFWL_App* app,
+  IFWL_Widget(const CFWL_App* app,
               std::unique_ptr<CFWL_WidgetProperties> properties,
               IFWL_Widget* pOuter);
 
@@ -175,7 +175,7 @@
                 IFWL_ThemeProvider* pTheme,
                 const CFX_Matrix* pMatrix = nullptr);
 
-  const IFWL_App* const m_pOwnerApp;
+  const CFWL_App* const m_pOwnerApp;
   CFWL_WidgetMgr* const m_pWidgetMgr;
   std::unique_ptr<CFWL_WidgetProperties> m_pProperties;
   IFWL_Widget* m_pOuter;
