Unify CFWL_WidgetProperties and CFWL_WidgetImpProperties.

The CFWL_WidgetProperties class was just being used to create default
CFWL_WidgetImpProperties classes. This CL updates the code to make it clear that
we have unique_ptrs to the properties and changes CFWL_WidgetImpProperties
to be named CFWL_WidgetProperties.

Review-Url: https://codereview.chromium.org/2469893004
diff --git a/BUILD.gn b/BUILD.gn
index 962e20c..a54f6e4 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -1179,10 +1179,8 @@
       "xfa/fwl/core/cfwl_themetext.h",
       "xfa/fwl/core/cfwl_widget.cpp",
       "xfa/fwl/core/cfwl_widget.h",
-      "xfa/fwl/core/cfwl_widgetimpproperties.h",
       "xfa/fwl/core/cfwl_widgetmgr.cpp",
       "xfa/fwl/core/cfwl_widgetmgr.h",
-      "xfa/fwl/core/cfwl_widgetproperties.cpp",
       "xfa/fwl/core/cfwl_widgetproperties.h",
       "xfa/fwl/core/cfx_barcode.cpp",
       "xfa/fwl/core/cfx_barcode.h",
diff --git a/xfa/fwl/core/cfwl_barcode.cpp b/xfa/fwl/core/cfwl_barcode.cpp
index d738f68..b12a875 100644
--- a/xfa/fwl/core/cfwl_barcode.cpp
+++ b/xfa/fwl/core/cfwl_barcode.cpp
@@ -26,7 +26,7 @@
   ASSERT(!m_pIface);
 
   m_pIface = pdfium::MakeUnique<IFWL_Barcode>(
-      m_pApp, m_pProperties->MakeWidgetImpProperties(&m_barcodeData));
+      m_pApp, pdfium::MakeUnique<CFWL_WidgetProperties>(&m_barcodeData));
 
   CFWL_Widget::Initialize();
 }
diff --git a/xfa/fwl/core/cfwl_barcode.h b/xfa/fwl/core/cfwl_barcode.h
index 8df93ff6..b5642d2 100644
--- a/xfa/fwl/core/cfwl_barcode.h
+++ b/xfa/fwl/core/cfwl_barcode.h
@@ -12,7 +12,6 @@
 #include "xfa/fwl/core/ifwl_barcode.h"
 
 class CFWL_Widget;
-class CFWL_WidgetProperties;
 
 class CFWL_Barcode : public CFWL_Edit {
  public:
diff --git a/xfa/fwl/core/cfwl_checkbox.cpp b/xfa/fwl/core/cfwl_checkbox.cpp
index 4fbb048..9baea41 100644
--- a/xfa/fwl/core/cfwl_checkbox.cpp
+++ b/xfa/fwl/core/cfwl_checkbox.cpp
@@ -27,7 +27,7 @@
   ASSERT(!m_pIface);
 
   m_pIface = pdfium::MakeUnique<IFWL_CheckBox>(
-      m_pApp, m_pProperties->MakeWidgetImpProperties(&m_checkboxData));
+      m_pApp, pdfium::MakeUnique<CFWL_WidgetProperties>(&m_checkboxData));
 
   CFWL_Widget::Initialize();
 }
diff --git a/xfa/fwl/core/cfwl_combobox.cpp b/xfa/fwl/core/cfwl_combobox.cpp
index e8dde06..60b6e50 100644
--- a/xfa/fwl/core/cfwl_combobox.cpp
+++ b/xfa/fwl/core/cfwl_combobox.cpp
@@ -32,7 +32,7 @@
   ASSERT(!m_pIface);
 
   m_pIface = pdfium::MakeUnique<IFWL_ComboBox>(
-      m_pApp, m_pProperties->MakeWidgetImpProperties(&m_comboBoxData));
+      m_pApp, pdfium::MakeUnique<CFWL_WidgetProperties>(&m_comboBoxData));
 
   CFWL_Widget::Initialize();
 }
diff --git a/xfa/fwl/core/cfwl_combobox.h b/xfa/fwl/core/cfwl_combobox.h
index 9511a36..c85b0e7 100644
--- a/xfa/fwl/core/cfwl_combobox.h
+++ b/xfa/fwl/core/cfwl_combobox.h
@@ -13,7 +13,6 @@
 #include "xfa/fwl/core/cfwl_widget.h"
 #include "xfa/fwl/core/ifwl_combobox.h"
 
-class CFWL_WidgetProperties;
 class IFWL_ComboBoxDP;
 class CFWL_ComboBoxDP;
 class CFWL_ComboBoxItem;
diff --git a/xfa/fwl/core/cfwl_datetimepicker.cpp b/xfa/fwl/core/cfwl_datetimepicker.cpp
index 8e377c2..fba04b6 100644
--- a/xfa/fwl/core/cfwl_datetimepicker.cpp
+++ b/xfa/fwl/core/cfwl_datetimepicker.cpp
@@ -30,7 +30,7 @@
   ASSERT(!m_pIface);
 
   m_pIface = pdfium::MakeUnique<IFWL_DateTimePicker>(
-      m_pApp, m_pProperties->MakeWidgetImpProperties(&m_DateTimePickerDP));
+      m_pApp, pdfium::MakeUnique<CFWL_WidgetProperties>(&m_DateTimePickerDP));
 
   CFWL_Widget::Initialize();
 }
diff --git a/xfa/fwl/core/cfwl_edit.cpp b/xfa/fwl/core/cfwl_edit.cpp
index 3d19e57..579442b 100644
--- a/xfa/fwl/core/cfwl_edit.cpp
+++ b/xfa/fwl/core/cfwl_edit.cpp
@@ -31,7 +31,7 @@
   ASSERT(!m_pIface);
 
   m_pIface = pdfium::MakeUnique<IFWL_Edit>(
-      m_pApp, m_pProperties->MakeWidgetImpProperties(nullptr), nullptr);
+      m_pApp, pdfium::MakeUnique<CFWL_WidgetProperties>(), nullptr);
 
   CFWL_Widget::Initialize();
 }
diff --git a/xfa/fwl/core/cfwl_edit.h b/xfa/fwl/core/cfwl_edit.h
index 8fc0a13..2f2983b 100644
--- a/xfa/fwl/core/cfwl_edit.h
+++ b/xfa/fwl/core/cfwl_edit.h
@@ -12,7 +12,6 @@
 #include "xfa/fwl/core/cfwl_widget.h"
 #include "xfa/fwl/core/ifwl_edit.h"
 
-class CFWL_WidgetProperties;
 class IFDE_TxtEdtDoRecord;
 
 class CFWL_Edit : public CFWL_Widget {
diff --git a/xfa/fwl/core/cfwl_listbox.cpp b/xfa/fwl/core/cfwl_listbox.cpp
index f7e1671..8590540 100644
--- a/xfa/fwl/core/cfwl_listbox.cpp
+++ b/xfa/fwl/core/cfwl_listbox.cpp
@@ -27,7 +27,7 @@
   ASSERT(!m_pIface);
 
   m_pIface = pdfium::MakeUnique<IFWL_ListBox>(
-      m_pApp, m_pProperties->MakeWidgetImpProperties(&m_ListBoxDP), nullptr);
+      m_pApp, pdfium::MakeUnique<CFWL_WidgetProperties>(&m_ListBoxDP), nullptr);
 
   CFWL_Widget::Initialize();
 }
diff --git a/xfa/fwl/core/cfwl_picturebox.cpp b/xfa/fwl/core/cfwl_picturebox.cpp
index dcd716c..a0e1c30 100644
--- a/xfa/fwl/core/cfwl_picturebox.cpp
+++ b/xfa/fwl/core/cfwl_picturebox.cpp
@@ -18,7 +18,7 @@
   ASSERT(!m_pIface);
 
   m_pIface = pdfium::MakeUnique<IFWL_PictureBox>(
-      m_pApp, m_pProperties->MakeWidgetImpProperties(&m_PictureBoxDP));
+      m_pApp, pdfium::MakeUnique<CFWL_WidgetProperties>(&m_PictureBoxDP));
 
   CFWL_Widget::Initialize();
 }
diff --git a/xfa/fwl/core/cfwl_pushbutton.cpp b/xfa/fwl/core/cfwl_pushbutton.cpp
index 1510cc1..1b98d25 100644
--- a/xfa/fwl/core/cfwl_pushbutton.cpp
+++ b/xfa/fwl/core/cfwl_pushbutton.cpp
@@ -18,7 +18,7 @@
   ASSERT(!m_pIface);
 
   m_pIface = pdfium::MakeUnique<IFWL_PushButton>(
-      m_pApp, m_pProperties->MakeWidgetImpProperties(&m_buttonData));
+      m_pApp, pdfium::MakeUnique<CFWL_WidgetProperties>(&m_buttonData));
 
   CFWL_Widget::Initialize();
 }
diff --git a/xfa/fwl/core/cfwl_widget.cpp b/xfa/fwl/core/cfwl_widget.cpp
index 0748037..98f73cf 100644
--- a/xfa/fwl/core/cfwl_widget.cpp
+++ b/xfa/fwl/core/cfwl_widget.cpp
@@ -19,9 +19,7 @@
 #define FWL_WGT_CalcMultiLineDefWidth 120.0f
 
 CFWL_Widget::CFWL_Widget(const IFWL_App* app)
-    : m_pApp(app),
-      m_pWidgetMgr(app->GetWidgetMgr()),
-      m_pProperties(new CFWL_WidgetProperties) {
+    : m_pApp(app), m_pWidgetMgr(app->GetWidgetMgr()) {
   ASSERT(m_pWidgetMgr);
 }
 
diff --git a/xfa/fwl/core/cfwl_widget.h b/xfa/fwl/core/cfwl_widget.h
index 0c590e2..b3c09f9 100644
--- a/xfa/fwl/core/cfwl_widget.h
+++ b/xfa/fwl/core/cfwl_widget.h
@@ -10,7 +10,6 @@
 #include <memory>
 
 #include "xfa/fwl/core/cfwl_event.h"
-#include "xfa/fwl/core/cfwl_widgetproperties.h"
 #include "xfa/fwl/core/ifwl_widget.h"
 
 class CFWL_Event;
@@ -60,7 +59,6 @@
   const IFWL_App* m_pApp;
   std::unique_ptr<IFWL_Widget> m_pIface;
   CFWL_WidgetMgr* const m_pWidgetMgr;
-  std::unique_ptr<CFWL_WidgetProperties> m_pProperties;
 };
 
 #endif  // XFA_FWL_CORE_CFWL_WIDGET_H_
diff --git a/xfa/fwl/core/cfwl_widgetimpproperties.h b/xfa/fwl/core/cfwl_widgetimpproperties.h
deleted file mode 100644
index 4d7dee6..0000000
--- a/xfa/fwl/core/cfwl_widgetimpproperties.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef XFA_FWL_CORE_CFWL_WIDGETIMPPROPERTIES_H_
-#define XFA_FWL_CORE_CFWL_WIDGETIMPPROPERTIES_H_
-
-#include "core/fxcrt/fx_coordinates.h"
-#include "core/fxcrt/fx_system.h"
-#include "xfa/fwl/core/fwl_widgetdef.h"
-
-class IFWL_DataProvider;
-class IFWL_ThemeProvider;
-class IFWL_Widget;
-
-class CFWL_WidgetImpProperties {
- public:
-  CFWL_WidgetImpProperties();
-  ~CFWL_WidgetImpProperties();
-  CFWL_WidgetImpProperties(const CFWL_WidgetImpProperties& other);
-
-  CFX_Matrix m_ctmOnParent;
-  CFX_RectF m_rtWidget;
-  uint32_t m_dwStyles;
-  uint32_t m_dwStyleExes;
-  uint32_t m_dwStates;
-  IFWL_ThemeProvider* m_pThemeProvider;
-  IFWL_DataProvider* m_pDataProvider;
-  IFWL_Widget* m_pParent;
-  IFWL_Widget* m_pOwner;
-};
-
-inline CFWL_WidgetImpProperties::CFWL_WidgetImpProperties()
-    : m_dwStyles(FWL_WGTSTYLE_Child),
-      m_dwStyleExes(0),
-      m_dwStates(0),
-      m_pThemeProvider(nullptr),
-      m_pDataProvider(nullptr),
-      m_pParent(nullptr),
-      m_pOwner(nullptr) {
-  m_ctmOnParent.SetIdentity();
-  m_rtWidget.Set(0, 0, 0, 0);
-}
-
-inline CFWL_WidgetImpProperties::~CFWL_WidgetImpProperties() {}
-
-inline CFWL_WidgetImpProperties::CFWL_WidgetImpProperties(
-    const CFWL_WidgetImpProperties& other) = default;
-
-#endif  // XFA_FWL_CORE_CFWL_WIDGETIMPPROPERTIES_H_
diff --git a/xfa/fwl/core/cfwl_widgetproperties.cpp b/xfa/fwl/core/cfwl_widgetproperties.cpp
deleted file mode 100644
index fae1ff6..0000000
--- a/xfa/fwl/core/cfwl_widgetproperties.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "xfa/fwl/core/cfwl_widgetproperties.h"
-
-#include "xfa/fwl/core/cfwl_widget.h"
-
-CFWL_WidgetProperties::CFWL_WidgetProperties()
-    : m_dwStyles(FWL_WGTSTYLE_Child),
-      m_dwStyleExes(0),
-      m_dwStates(0),
-      m_pParent(nullptr),
-      m_pOwner(nullptr) {
-  m_rtWidget.Set(0, 0, 0, 0);
-}
-
-CFWL_WidgetProperties::~CFWL_WidgetProperties() {}
-
-CFWL_WidgetProperties::CFWL_WidgetProperties(
-    const CFWL_WidgetProperties& other) = default;
-
-CFWL_WidgetImpProperties CFWL_WidgetProperties::MakeWidgetImpProperties(
-    IFWL_DataProvider* pDataProvider) const {
-  CFWL_WidgetImpProperties result;
-  result.m_ctmOnParent = m_ctmOnParent;
-  result.m_rtWidget = m_rtWidget;
-  result.m_dwStyles = m_dwStyles;
-  result.m_dwStyleExes = m_dwStyleExes;
-  result.m_dwStates = m_dwStates;
-  if (m_pParent)
-    result.m_pParent = m_pParent->GetWidget();
-  if (m_pOwner)
-    result.m_pOwner = m_pOwner->GetWidget();
-  result.m_pDataProvider = pDataProvider;
-  return result;
-}
diff --git a/xfa/fwl/core/cfwl_widgetproperties.h b/xfa/fwl/core/cfwl_widgetproperties.h
index afadfc4..21040b9 100644
--- a/xfa/fwl/core/cfwl_widgetproperties.h
+++ b/xfa/fwl/core/cfwl_widgetproperties.h
@@ -8,30 +8,46 @@
 #define XFA_FWL_CORE_CFWL_WIDGETPROPERTIES_H_
 
 #include "core/fxcrt/fx_coordinates.h"
-#include "core/fxcrt/fx_string.h"
 #include "core/fxcrt/fx_system.h"
-#include "xfa/fwl/core/cfwl_widgetimpproperties.h"
+#include "xfa/fwl/core/fwl_widgetdef.h"
 
-class CFWL_Widget;
 class IFWL_DataProvider;
+class IFWL_ThemeProvider;
+class IFWL_Widget;
 
 class CFWL_WidgetProperties {
  public:
   CFWL_WidgetProperties();
+  CFWL_WidgetProperties(IFWL_DataProvider* dataProvider);
   ~CFWL_WidgetProperties();
-  CFWL_WidgetProperties(const CFWL_WidgetProperties& other);
 
-  CFWL_WidgetImpProperties MakeWidgetImpProperties(
-      IFWL_DataProvider* pDataProvider) const;
-
-  CFX_WideString m_wsWindowclass;
   CFX_Matrix m_ctmOnParent;
   CFX_RectF m_rtWidget;
   uint32_t m_dwStyles;
   uint32_t m_dwStyleExes;
   uint32_t m_dwStates;
-  CFWL_Widget* m_pParent;
-  CFWL_Widget* m_pOwner;
+  IFWL_ThemeProvider* m_pThemeProvider;
+  IFWL_DataProvider* m_pDataProvider;
+  IFWL_Widget* m_pParent;
+  IFWL_Widget* m_pOwner;
 };
 
+inline CFWL_WidgetProperties::CFWL_WidgetProperties()
+    : CFWL_WidgetProperties(nullptr) {}
+
+inline CFWL_WidgetProperties::CFWL_WidgetProperties(
+    IFWL_DataProvider* dataProvider)
+    : m_dwStyles(FWL_WGTSTYLE_Child),
+      m_dwStyleExes(0),
+      m_dwStates(0),
+      m_pThemeProvider(nullptr),
+      m_pDataProvider(dataProvider),
+      m_pParent(nullptr),
+      m_pOwner(nullptr) {
+  m_ctmOnParent.SetIdentity();
+  m_rtWidget.Set(0, 0, 0, 0);
+}
+
+inline CFWL_WidgetProperties::~CFWL_WidgetProperties() {}
+
 #endif  // XFA_FWL_CORE_CFWL_WIDGETPROPERTIES_H_
diff --git a/xfa/fwl/core/ifwl_barcode.cpp b/xfa/fwl/core/ifwl_barcode.cpp
index 9495dd9..3fb430d 100644
--- a/xfa/fwl/core/ifwl_barcode.cpp
+++ b/xfa/fwl/core/ifwl_barcode.cpp
@@ -14,9 +14,10 @@
 #include "xfa/fwl/core/ifwl_themeprovider.h"
 
 IFWL_Barcode::IFWL_Barcode(const IFWL_App* app,
-                           const CFWL_WidgetImpProperties& properties)
-    : IFWL_Edit(app, properties, nullptr), m_dwStatus(0), m_type(BC_UNKNOWN) {
-}
+                           std::unique_ptr<CFWL_WidgetProperties> properties)
+    : IFWL_Edit(app, std::move(properties), nullptr),
+      m_dwStatus(0),
+      m_type(BC_UNKNOWN) {}
 
 IFWL_Barcode::~IFWL_Barcode() {}
 
diff --git a/xfa/fwl/core/ifwl_barcode.h b/xfa/fwl/core/ifwl_barcode.h
index 36befa4..a0bdc75 100644
--- a/xfa/fwl/core/ifwl_barcode.h
+++ b/xfa/fwl/core/ifwl_barcode.h
@@ -13,7 +13,7 @@
 #include "xfa/fwl/core/ifwl_scrollbar.h"
 #include "xfa/fxbarcode/BC_Library.h"
 
-class CFWL_WidgetImpProperties;
+class CFWL_WidgetProperties;
 class CFX_Barcode;
 class IFWL_Widget;
 
@@ -58,7 +58,7 @@
 class IFWL_Barcode : public IFWL_Edit {
  public:
   explicit IFWL_Barcode(const IFWL_App* app,
-                        const CFWL_WidgetImpProperties& properties);
+                        std::unique_ptr<CFWL_WidgetProperties> properties);
   ~IFWL_Barcode() override;
 
   // IFWL_Widget
diff --git a/xfa/fwl/core/ifwl_caret.cpp b/xfa/fwl/core/ifwl_caret.cpp
index 4e9b7f6..8971c2e 100644
--- a/xfa/fwl/core/ifwl_caret.cpp
+++ b/xfa/fwl/core/ifwl_caret.cpp
@@ -8,15 +8,15 @@
 
 #include "third_party/base/ptr_util.h"
 #include "xfa/fwl/core/cfwl_themebackground.h"
-#include "xfa/fwl/core/cfwl_widgetimpproperties.h"
+#include "xfa/fwl/core/cfwl_widgetproperties.h"
 #include "xfa/fwl/core/fwl_noteimp.h"
 #include "xfa/fwl/core/ifwl_caret.h"
 #include "xfa/fwl/core/ifwl_themeprovider.h"
 
 IFWL_Caret::IFWL_Caret(const IFWL_App* app,
-                       const CFWL_WidgetImpProperties& properties,
+                       std::unique_ptr<CFWL_WidgetProperties> properties,
                        IFWL_Widget* pOuter)
-    : IFWL_Widget(app, properties, pOuter),
+    : IFWL_Widget(app, std::move(properties), pOuter),
       m_pTimer(new IFWL_Caret::Timer(this)),
       m_pTimerInfo(nullptr),
       m_dwElapse(400),
diff --git a/xfa/fwl/core/ifwl_caret.h b/xfa/fwl/core/ifwl_caret.h
index 7d91d57..5a02d42 100644
--- a/xfa/fwl/core/ifwl_caret.h
+++ b/xfa/fwl/core/ifwl_caret.h
@@ -13,7 +13,7 @@
 #include "xfa/fwl/core/ifwl_widget.h"
 #include "xfa/fxgraphics/cfx_color.h"
 
-class CFWL_WidgetImpProperties;
+class CFWL_WidgetProperties;
 class IFWL_Widget;
 
 #define FWL_STATE_CAT_HightLight 1
@@ -21,7 +21,7 @@
 class IFWL_Caret : public IFWL_Widget {
  public:
   IFWL_Caret(const IFWL_App* app,
-             const CFWL_WidgetImpProperties& properties,
+             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 f03b864..a8f4936 100644
--- a/xfa/fwl/core/ifwl_checkbox.cpp
+++ b/xfa/fwl/core/ifwl_checkbox.cpp
@@ -26,8 +26,8 @@
 }  // namespace
 
 IFWL_CheckBox::IFWL_CheckBox(const IFWL_App* app,
-                             const CFWL_WidgetImpProperties& properties)
-    : IFWL_Widget(app, properties, nullptr),
+                             std::unique_ptr<CFWL_WidgetProperties> properties)
+    : IFWL_Widget(app, std::move(properties), nullptr),
       m_dwTTOStyles(FDE_TTOSTYLE_SingleLine),
       m_iTTOAlign(FDE_TTOALIGNMENT_Center),
       m_bBtnDown(false) {
diff --git a/xfa/fwl/core/ifwl_checkbox.h b/xfa/fwl/core/ifwl_checkbox.h
index c08d845..19ab626 100644
--- a/xfa/fwl/core/ifwl_checkbox.h
+++ b/xfa/fwl/core/ifwl_checkbox.h
@@ -8,7 +8,7 @@
 #define XFA_FWL_CORE_IFWL_CHECKBOX_H_
 
 #include "xfa/fwl/core/cfwl_event.h"
-#include "xfa/fwl/core/cfwl_widgetimpproperties.h"
+#include "xfa/fwl/core/cfwl_widgetproperties.h"
 #include "xfa/fwl/core/ifwl_dataprovider.h"
 #include "xfa/fwl/core/ifwl_widget.h"
 
@@ -44,7 +44,7 @@
 #define FWL_STATE_CKB_CheckMask (3L << (FWL_WGTSTATE_MAX + 2))
 
 class CFWL_MsgMouse;
-class CFWL_WidgetImpProperties;
+class CFWL_WidgetProperties;
 class IFWL_Widget;
 
 FWL_EVENT_DEF(CFWL_EvtCkbCheckStateChanged, CFWL_EventType::CheckStateChanged)
@@ -57,7 +57,7 @@
 class IFWL_CheckBox : public IFWL_Widget {
  public:
   explicit IFWL_CheckBox(const IFWL_App* app,
-                         const CFWL_WidgetImpProperties& properties);
+                         std::unique_ptr<CFWL_WidgetProperties> properties);
   ~IFWL_CheckBox() override;
 
   // IFWL_Widget
diff --git a/xfa/fwl/core/ifwl_combobox.cpp b/xfa/fwl/core/ifwl_combobox.cpp
index 4be684a..6d0a814 100644
--- a/xfa/fwl/core/ifwl_combobox.cpp
+++ b/xfa/fwl/core/ifwl_combobox.cpp
@@ -23,8 +23,8 @@
 #include "xfa/fwl/core/ifwl_themeprovider.h"
 
 IFWL_ComboBox::IFWL_ComboBox(const IFWL_App* app,
-                             const CFWL_WidgetImpProperties& properties)
-    : IFWL_Widget(app, properties, nullptr),
+                             std::unique_ptr<CFWL_WidgetProperties> properties)
+    : IFWL_Widget(app, std::move(properties), nullptr),
       m_pComboBoxProxy(nullptr),
       m_bLButtonDown(false),
       m_iCurSel(-1),
@@ -41,17 +41,17 @@
     return;
   }
 
-  CFWL_WidgetImpProperties prop;
-  prop.m_pThemeProvider = m_pProperties->m_pThemeProvider;
-  prop.m_dwStyles |= FWL_WGTSTYLE_Border | FWL_WGTSTYLE_VScroll;
+  auto prop =
+      pdfium::MakeUnique<CFWL_WidgetProperties>(m_pProperties->m_pDataProvider);
+  prop->m_pThemeProvider = m_pProperties->m_pThemeProvider;
+  prop->m_dwStyles |= FWL_WGTSTYLE_Border | FWL_WGTSTYLE_VScroll;
   if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CMB_ListItemIconText)
-    prop.m_dwStyleExes |= FWL_STYLEEXT_LTB_Icon;
+    prop->m_dwStyleExes |= FWL_STYLEEXT_LTB_Icon;
 
-  prop.m_pDataProvider = m_pProperties->m_pDataProvider;
-  m_pListBox.reset(new IFWL_ComboList(m_pOwnerApp, prop, this));
+  m_pListBox.reset(new IFWL_ComboList(m_pOwnerApp, std::move(prop), this));
   if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CMB_DropDown) && !m_pEdit) {
-    CFWL_WidgetImpProperties prop2;
-    m_pEdit.reset(new IFWL_ComboEdit(m_pOwnerApp, prop2, this));
+    m_pEdit.reset(new IFWL_ComboEdit(
+        m_pOwnerApp, pdfium::MakeUnique<CFWL_WidgetProperties>(), this));
     m_pEdit->SetOuter(this);
   }
   if (m_pEdit)
@@ -99,8 +99,8 @@
   bool bAddDropDown = !!(dwStylesExAdded & FWL_STYLEEXT_CMB_DropDown);
   bool bRemoveDropDown = !!(dwStylesExRemoved & FWL_STYLEEXT_CMB_DropDown);
   if (bAddDropDown && !m_pEdit) {
-    CFWL_WidgetImpProperties prop;
-    m_pEdit.reset(new IFWL_ComboEdit(m_pOwnerApp, prop, nullptr));
+    m_pEdit.reset(new IFWL_ComboEdit(
+        m_pOwnerApp, pdfium::MakeUnique<CFWL_WidgetProperties>(), nullptr));
     m_pEdit->SetOuter(this);
     m_pEdit->SetParent(this);
   } else if (bRemoveDropDown && m_pEdit) {
@@ -693,13 +693,13 @@
   if (!m_pListBox)
     return;
 
-  CFWL_WidgetImpProperties propForm;
-  propForm.m_pOwner = this;
-  propForm.m_dwStyles = FWL_WGTSTYLE_Popup;
-  propForm.m_dwStates = FWL_WGTSTATE_Invisible;
+  auto prop = pdfium::MakeUnique<CFWL_WidgetProperties>();
+  prop->m_pOwner = this;
+  prop->m_dwStyles = FWL_WGTSTYLE_Popup;
+  prop->m_dwStates = FWL_WGTSTATE_Invisible;
 
-  m_pComboBoxProxy =
-      new IFWL_ComboBoxProxy(this, m_pOwnerApp, propForm, m_pListBox.get());
+  m_pComboBoxProxy = new IFWL_ComboBoxProxy(this, m_pOwnerApp, std::move(prop),
+                                            m_pListBox.get());
   m_pListBox->SetParent(m_pComboBoxProxy);
 }
 
@@ -707,23 +707,23 @@
   if (m_pListBox)
     return;
 
-  CFWL_WidgetImpProperties prop;
-  prop.m_pParent = this;
-  prop.m_dwStyles = FWL_WGTSTYLE_Border | FWL_WGTSTYLE_VScroll;
-  prop.m_dwStates = FWL_WGTSTATE_Invisible;
-  prop.m_pDataProvider = m_pProperties->m_pDataProvider;
-  prop.m_pThemeProvider = m_pProperties->m_pThemeProvider;
-  m_pListBox.reset(new IFWL_ComboList(m_pOwnerApp, prop, this));
+  auto prop =
+      pdfium::MakeUnique<CFWL_WidgetProperties>(m_pProperties->m_pDataProvider);
+  prop->m_pParent = this;
+  prop->m_dwStyles = FWL_WGTSTYLE_Border | FWL_WGTSTYLE_VScroll;
+  prop->m_dwStates = FWL_WGTSTATE_Invisible;
+  prop->m_pThemeProvider = m_pProperties->m_pThemeProvider;
+  m_pListBox.reset(new IFWL_ComboList(m_pOwnerApp, std::move(prop), this));
 }
 
 void IFWL_ComboBox::DisForm_InitComboEdit() {
   if (m_pEdit)
     return;
 
-  CFWL_WidgetImpProperties prop;
-  prop.m_pParent = this;
-  prop.m_pThemeProvider = m_pProperties->m_pThemeProvider;
-  m_pEdit.reset(new IFWL_ComboEdit(m_pOwnerApp, prop, this));
+  auto prop = pdfium::MakeUnique<CFWL_WidgetProperties>();
+  prop->m_pParent = this;
+  prop->m_pThemeProvider = m_pProperties->m_pThemeProvider;
+  m_pEdit.reset(new IFWL_ComboEdit(m_pOwnerApp, std::move(prop), this));
   m_pEdit->SetOuter(this);
 }
 
diff --git a/xfa/fwl/core/ifwl_combobox.h b/xfa/fwl/core/ifwl_combobox.h
index 7d11541..8de93a6 100644
--- a/xfa/fwl/core/ifwl_combobox.h
+++ b/xfa/fwl/core/ifwl_combobox.h
@@ -11,7 +11,7 @@
 #include "xfa/fwl/core/ifwl_listbox.h"
 #include "xfa/fxgraphics/cfx_graphics.h"
 
-class CFWL_WidgetImpProperties;
+class CFWL_WidgetProperties;
 class IFWL_ComboBox;
 class IFWL_ComboBoxProxy;
 class IFWL_ComboEdit;
@@ -80,7 +80,7 @@
 class IFWL_ComboBox : public IFWL_Widget {
  public:
   explicit IFWL_ComboBox(const IFWL_App* app,
-                         const CFWL_WidgetImpProperties& properties);
+                         std::unique_ptr<CFWL_WidgetProperties> properties);
   ~IFWL_ComboBox() override;
 
   // IFWL_Widget
diff --git a/xfa/fwl/core/ifwl_comboboxproxy.cpp b/xfa/fwl/core/ifwl_comboboxproxy.cpp
index 0675a3b..c8d1f79 100644
--- a/xfa/fwl/core/ifwl_comboboxproxy.cpp
+++ b/xfa/fwl/core/ifwl_comboboxproxy.cpp
@@ -13,9 +13,9 @@
 IFWL_ComboBoxProxy::IFWL_ComboBoxProxy(
     IFWL_ComboBox* pComboBox,
     const IFWL_App* app,
-    const CFWL_WidgetImpProperties& properties,
+    std::unique_ptr<CFWL_WidgetProperties> properties,
     IFWL_Widget* pOuter)
-    : IFWL_FormProxy(app, properties, pOuter),
+    : IFWL_FormProxy(app, std::move(properties), pOuter),
       m_bLButtonDown(false),
       m_bLButtonUpSelf(false),
       m_pComboBox(pComboBox) {}
diff --git a/xfa/fwl/core/ifwl_comboboxproxy.h b/xfa/fwl/core/ifwl_comboboxproxy.h
index 7b5c929..f6da412 100644
--- a/xfa/fwl/core/ifwl_comboboxproxy.h
+++ b/xfa/fwl/core/ifwl_comboboxproxy.h
@@ -15,7 +15,7 @@
  public:
   IFWL_ComboBoxProxy(IFWL_ComboBox* pCombobBox,
                      const IFWL_App* app,
-                     const CFWL_WidgetImpProperties& properties,
+                     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 26106e1..a8b04fd 100644
--- a/xfa/fwl/core/ifwl_comboedit.cpp
+++ b/xfa/fwl/core/ifwl_comboedit.cpp
@@ -9,10 +9,11 @@
 #include "xfa/fde/cfde_txtedtengine.h"
 #include "xfa/fwl/core/ifwl_combobox.h"
 
-IFWL_ComboEdit::IFWL_ComboEdit(const IFWL_App* app,
-                               const CFWL_WidgetImpProperties& properties,
-                               IFWL_Widget* pOuter)
-    : IFWL_Edit(app, properties, pOuter) {
+IFWL_ComboEdit::IFWL_ComboEdit(
+    const IFWL_App* app,
+    std::unique_ptr<CFWL_WidgetProperties> properties,
+    IFWL_Widget* pOuter)
+    : IFWL_Edit(app, std::move(properties), pOuter) {
   m_pOuter = static_cast<IFWL_ComboBox*>(pOuter);
 }
 
diff --git a/xfa/fwl/core/ifwl_comboedit.h b/xfa/fwl/core/ifwl_comboedit.h
index 59aa995..f50a725 100644
--- a/xfa/fwl/core/ifwl_comboedit.h
+++ b/xfa/fwl/core/ifwl_comboedit.h
@@ -7,7 +7,7 @@
 #ifndef XFA_FWL_CORE_IFWL_COMBOEDIT_H_
 #define XFA_FWL_CORE_IFWL_COMBOEDIT_H_
 
-#include "xfa/fwl/core/cfwl_widgetimpproperties.h"
+#include "xfa/fwl/core/cfwl_widgetproperties.h"
 #include "xfa/fwl/core/ifwl_edit.h"
 #include "xfa/fwl/core/ifwl_widget.h"
 
@@ -16,7 +16,7 @@
 class IFWL_ComboEdit : public IFWL_Edit {
  public:
   IFWL_ComboEdit(const IFWL_App* app,
-                 const CFWL_WidgetImpProperties& properties,
+                 std::unique_ptr<CFWL_WidgetProperties> properties,
                  IFWL_Widget* pOuter);
 
   // IFWL_Edit.
diff --git a/xfa/fwl/core/ifwl_combolist.cpp b/xfa/fwl/core/ifwl_combolist.cpp
index 452cdff..04fefc6 100644
--- a/xfa/fwl/core/ifwl_combolist.cpp
+++ b/xfa/fwl/core/ifwl_combolist.cpp
@@ -10,10 +10,11 @@
 #include "xfa/fwl/core/ifwl_combobox.h"
 #include "xfa/fwl/core/ifwl_comboedit.h"
 
-IFWL_ComboList::IFWL_ComboList(const IFWL_App* app,
-                               const CFWL_WidgetImpProperties& properties,
-                               IFWL_Widget* pOuter)
-    : IFWL_ListBox(app, properties, pOuter), m_bNotifyOwner(true) {
+IFWL_ComboList::IFWL_ComboList(
+    const IFWL_App* app,
+    std::unique_ptr<CFWL_WidgetProperties> properties,
+    IFWL_Widget* pOuter)
+    : IFWL_ListBox(app, std::move(properties), pOuter), m_bNotifyOwner(true) {
   ASSERT(pOuter);
 }
 
diff --git a/xfa/fwl/core/ifwl_combolist.h b/xfa/fwl/core/ifwl_combolist.h
index 6da1640..6c380f4 100644
--- a/xfa/fwl/core/ifwl_combolist.h
+++ b/xfa/fwl/core/ifwl_combolist.h
@@ -7,14 +7,14 @@
 #ifndef XFA_FWL_CORE_IFWL_COMBOLIST_H_
 #define XFA_FWL_CORE_IFWL_COMBOLIST_H_
 
-#include "xfa/fwl/core/cfwl_widgetimpproperties.h"
+#include "xfa/fwl/core/cfwl_widgetproperties.h"
 #include "xfa/fwl/core/ifwl_listbox.h"
 #include "xfa/fwl/core/ifwl_widget.h"
 
 class IFWL_ComboList : public IFWL_ListBox {
  public:
   IFWL_ComboList(const IFWL_App* app,
-                 const CFWL_WidgetImpProperties& properties,
+                 std::unique_ptr<CFWL_WidgetProperties> properties,
                  IFWL_Widget* pOuter);
 
   // IFWL_ListBox.
diff --git a/xfa/fwl/core/ifwl_datetimecalendar.cpp b/xfa/fwl/core/ifwl_datetimecalendar.cpp
index 4e274fc..c9f640f 100644
--- a/xfa/fwl/core/ifwl_datetimecalendar.cpp
+++ b/xfa/fwl/core/ifwl_datetimecalendar.cpp
@@ -13,9 +13,9 @@
 
 IFWL_DateTimeCalendar::IFWL_DateTimeCalendar(
     const IFWL_App* app,
-    const CFWL_WidgetImpProperties& properties,
+    std::unique_ptr<CFWL_WidgetProperties> properties,
     IFWL_Widget* pOuter)
-    : IFWL_MonthCalendar(app, properties, pOuter), m_bFlag(false) {}
+    : IFWL_MonthCalendar(app, std::move(properties), pOuter), m_bFlag(false) {}
 
 void IFWL_DateTimeCalendar::OnProcessMessage(CFWL_Message* pMessage) {
   CFWL_MessageType dwCode = pMessage->GetClassID();
diff --git a/xfa/fwl/core/ifwl_datetimecalendar.h b/xfa/fwl/core/ifwl_datetimecalendar.h
index 07f0373..d47e32e 100644
--- a/xfa/fwl/core/ifwl_datetimecalendar.h
+++ b/xfa/fwl/core/ifwl_datetimecalendar.h
@@ -12,7 +12,7 @@
 class IFWL_DateTimeCalendar : public IFWL_MonthCalendar {
  public:
   IFWL_DateTimeCalendar(const IFWL_App* app,
-                        const CFWL_WidgetImpProperties& properties,
+                        std::unique_ptr<CFWL_WidgetProperties> properties,
                         IFWL_Widget* pOuter);
 
   // IFWL_MonthCalendar
diff --git a/xfa/fwl/core/ifwl_datetimeedit.cpp b/xfa/fwl/core/ifwl_datetimeedit.cpp
index 62675a3..492f8f3 100644
--- a/xfa/fwl/core/ifwl_datetimeedit.cpp
+++ b/xfa/fwl/core/ifwl_datetimeedit.cpp
@@ -10,10 +10,11 @@
 #include "xfa/fwl/core/cfwl_widgetmgr.h"
 #include "xfa/fwl/core/ifwl_datetimepicker.h"
 
-IFWL_DateTimeEdit::IFWL_DateTimeEdit(const IFWL_App* app,
-                                     const CFWL_WidgetImpProperties& properties,
-                                     IFWL_Widget* pOuter)
-    : IFWL_Edit(app, properties, pOuter) {}
+IFWL_DateTimeEdit::IFWL_DateTimeEdit(
+    const IFWL_App* app,
+    std::unique_ptr<CFWL_WidgetProperties> properties,
+    IFWL_Widget* pOuter)
+    : IFWL_Edit(app, std::move(properties), pOuter) {}
 
 void IFWL_DateTimeEdit::OnProcessMessage(CFWL_Message* pMessage) {
   if (m_pWidgetMgr->IsFormDisabled()) {
diff --git a/xfa/fwl/core/ifwl_datetimeedit.h b/xfa/fwl/core/ifwl_datetimeedit.h
index 84ff7e7..1649d39 100644
--- a/xfa/fwl/core/ifwl_datetimeedit.h
+++ b/xfa/fwl/core/ifwl_datetimeedit.h
@@ -8,7 +8,7 @@
 #define XFA_FWL_CORE_IFWL_DATETIMEEDIT_H_
 
 #include "xfa/fwl/core/cfwl_message.h"
-#include "xfa/fwl/core/cfwl_widgetimpproperties.h"
+#include "xfa/fwl/core/cfwl_widgetproperties.h"
 #include "xfa/fwl/core/fwl_error.h"
 #include "xfa/fwl/core/ifwl_edit.h"
 #include "xfa/fwl/core/ifwl_widget.h"
@@ -16,7 +16,7 @@
 class IFWL_DateTimeEdit : public IFWL_Edit {
  public:
   IFWL_DateTimeEdit(const IFWL_App* app,
-                    const CFWL_WidgetImpProperties& properties,
+                    std::unique_ptr<CFWL_WidgetProperties> properties,
                     IFWL_Widget* pOuter);
 
   // IFWL_Edit.
diff --git a/xfa/fwl/core/ifwl_datetimepicker.cpp b/xfa/fwl/core/ifwl_datetimepicker.cpp
index 5237326..8a59b00 100644
--- a/xfa/fwl/core/ifwl_datetimepicker.cpp
+++ b/xfa/fwl/core/ifwl_datetimepicker.cpp
@@ -26,8 +26,8 @@
 
 IFWL_DateTimePicker::IFWL_DateTimePicker(
     const IFWL_App* app,
-    const CFWL_WidgetImpProperties& properties)
-    : IFWL_Widget(app, properties, nullptr),
+    std::unique_ptr<CFWL_WidgetProperties> properties)
+    : IFWL_Widget(app, std::move(properties), nullptr),
       m_iBtnState(1),
       m_iYear(-1),
       m_iMonth(-1),
@@ -36,23 +36,26 @@
   m_rtBtn.Set(0, 0, 0, 0);
 
   m_pProperties->m_dwStyleExes = FWL_STYLEEXT_DTP_ShortDateFormat;
-  CFWL_WidgetImpProperties propMonth;
-  propMonth.m_dwStyles = FWL_WGTSTYLE_Popup | FWL_WGTSTYLE_Border;
-  propMonth.m_dwStates = FWL_WGTSTATE_Invisible;
-  propMonth.m_pDataProvider = &m_MonthCalendarDP;
-  propMonth.m_pParent = this;
-  propMonth.m_pThemeProvider = m_pProperties->m_pThemeProvider;
 
-  m_pMonthCal.reset(new IFWL_DateTimeCalendar(m_pOwnerApp, propMonth, this));
+  auto monthProp =
+      pdfium::MakeUnique<CFWL_WidgetProperties>(&m_MonthCalendarDP);
+  monthProp->m_dwStyles = FWL_WGTSTYLE_Popup | FWL_WGTSTYLE_Border;
+  monthProp->m_dwStates = FWL_WGTSTATE_Invisible;
+  monthProp->m_pParent = this;
+  monthProp->m_pThemeProvider = m_pProperties->m_pThemeProvider;
+  m_pMonthCal.reset(
+      new IFWL_DateTimeCalendar(m_pOwnerApp, std::move(monthProp), this));
+
   CFX_RectF rtMonthCal;
   m_pMonthCal->GetWidgetRect(rtMonthCal, true);
   rtMonthCal.Set(0, 0, rtMonthCal.width, rtMonthCal.height);
   m_pMonthCal->SetWidgetRect(rtMonthCal);
-  CFWL_WidgetImpProperties propEdit;
-  propEdit.m_pParent = this;
-  propEdit.m_pThemeProvider = m_pProperties->m_pThemeProvider;
 
-  m_pEdit.reset(new IFWL_DateTimeEdit(m_pOwnerApp, propEdit, this));
+  auto editProp = pdfium::MakeUnique<CFWL_WidgetProperties>();
+  editProp->m_pParent = this;
+  editProp->m_pThemeProvider = m_pProperties->m_pThemeProvider;
+
+  m_pEdit.reset(new IFWL_DateTimeEdit(m_pOwnerApp, std::move(editProp), this));
   RegisterEventTarget(m_pMonthCal.get());
   RegisterEventTarget(m_pEdit.get());
 }
@@ -433,12 +436,14 @@
     return;
   if (!m_pMonthCal)
     return;
-  CFWL_WidgetImpProperties propForm;
-  propForm.m_dwStyles = FWL_WGTSTYLE_Popup;
-  propForm.m_dwStates = FWL_WGTSTATE_Invisible;
-  propForm.m_pOwner = this;
 
-  m_pForm.reset(new IFWL_FormProxy(m_pOwnerApp, propForm, m_pMonthCal.get()));
+  auto prop = pdfium::MakeUnique<CFWL_WidgetProperties>();
+  prop->m_dwStyles = FWL_WGTSTYLE_Popup;
+  prop->m_dwStates = FWL_WGTSTATE_Invisible;
+  prop->m_pOwner = this;
+
+  m_pForm.reset(
+      new IFWL_FormProxy(m_pOwnerApp, std::move(prop), m_pMonthCal.get()));
   m_pMonthCal->SetParent(m_pForm.get());
 }
 
@@ -456,18 +461,18 @@
 }
 
 void IFWL_DateTimePicker::DisForm_InitDateTimeCalendar() {
-  if (m_pMonthCal) {
+  if (m_pMonthCal)
     return;
-  }
-  CFWL_WidgetImpProperties propMonth;
-  propMonth.m_dwStyles =
-      FWL_WGTSTYLE_Popup | FWL_WGTSTYLE_Border | FWL_WGTSTYLE_EdgeSunken;
-  propMonth.m_dwStates = FWL_WGTSTATE_Invisible;
-  propMonth.m_pParent = this;
-  propMonth.m_pDataProvider = &m_MonthCalendarDP;
-  propMonth.m_pThemeProvider = m_pProperties->m_pThemeProvider;
 
-  m_pMonthCal.reset(new IFWL_DateTimeCalendar(m_pOwnerApp, propMonth, this));
+  auto prop = pdfium::MakeUnique<CFWL_WidgetProperties>(&m_MonthCalendarDP);
+  prop->m_dwStyles =
+      FWL_WGTSTYLE_Popup | FWL_WGTSTYLE_Border | FWL_WGTSTYLE_EdgeSunken;
+  prop->m_dwStates = FWL_WGTSTATE_Invisible;
+  prop->m_pParent = this;
+  prop->m_pThemeProvider = m_pProperties->m_pThemeProvider;
+
+  m_pMonthCal.reset(
+      new IFWL_DateTimeCalendar(m_pOwnerApp, std::move(prop), this));
   CFX_RectF rtMonthCal;
   m_pMonthCal->GetWidgetRect(rtMonthCal, true);
   rtMonthCal.Set(0, 0, rtMonthCal.width, rtMonthCal.height);
@@ -475,14 +480,14 @@
 }
 
 void IFWL_DateTimePicker::DisForm_InitDateTimeEdit() {
-  if (m_pEdit) {
+  if (m_pEdit)
     return;
-  }
-  CFWL_WidgetImpProperties propEdit;
-  propEdit.m_pParent = this;
-  propEdit.m_pThemeProvider = m_pProperties->m_pThemeProvider;
 
-  m_pEdit.reset(new IFWL_DateTimeEdit(m_pOwnerApp, propEdit, this));
+  auto prop = pdfium::MakeUnique<CFWL_WidgetProperties>();
+  prop->m_pParent = this;
+  prop->m_pThemeProvider = m_pProperties->m_pThemeProvider;
+
+  m_pEdit.reset(new IFWL_DateTimeEdit(m_pOwnerApp, std::move(prop), this));
 }
 
 bool IFWL_DateTimePicker::DisForm_IsMonthCalendarShowed() {
diff --git a/xfa/fwl/core/ifwl_datetimepicker.h b/xfa/fwl/core/ifwl_datetimepicker.h
index 17eb7b8..8ebe54a 100644
--- a/xfa/fwl/core/ifwl_datetimepicker.h
+++ b/xfa/fwl/core/ifwl_datetimepicker.h
@@ -8,7 +8,7 @@
 #define XFA_FWL_CORE_IFWL_DATETIMEPICKER_H_
 
 #include "xfa/fwl/core/cfwl_event.h"
-#include "xfa/fwl/core/cfwl_widgetimpproperties.h"
+#include "xfa/fwl/core/cfwl_widgetproperties.h"
 #include "xfa/fwl/core/ifwl_dataprovider.h"
 #include "xfa/fwl/core/ifwl_monthcalendar.h"
 #include "xfa/fwl/core/ifwl_widget.h"
@@ -62,8 +62,9 @@
 
 class IFWL_DateTimePicker : public IFWL_Widget {
  public:
-  explicit IFWL_DateTimePicker(const IFWL_App* app,
-                               const CFWL_WidgetImpProperties& properties);
+  explicit IFWL_DateTimePicker(
+      const IFWL_App* app,
+      std::unique_ptr<CFWL_WidgetProperties> properties);
   ~IFWL_DateTimePicker() override;
 
   // IFWL_Widget
diff --git a/xfa/fwl/core/ifwl_edit.cpp b/xfa/fwl/core/ifwl_edit.cpp
index 111df72..7b3d083 100644
--- a/xfa/fwl/core/ifwl_edit.cpp
+++ b/xfa/fwl/core/ifwl_edit.cpp
@@ -53,9 +53,9 @@
 }  // namespace
 
 IFWL_Edit::IFWL_Edit(const IFWL_App* app,
-                     const CFWL_WidgetImpProperties& properties,
+                     std::unique_ptr<CFWL_WidgetProperties> properties,
                      IFWL_Widget* pOuter)
-    : IFWL_Widget(app, properties, pOuter),
+    : IFWL_Widget(app, std::move(properties), pOuter),
       m_fVAlignOffset(0.0f),
       m_fScrollOffsetX(0.0f),
       m_fScrollOffsetY(0.0f),
@@ -1449,13 +1449,14 @@
   if ((bVert && m_pVertScrollBar) || (!bVert && m_pHorzScrollBar)) {
     return;
   }
-  CFWL_WidgetImpProperties prop;
-  prop.m_dwStyleExes = bVert ? FWL_STYLEEXT_SCB_Vert : FWL_STYLEEXT_SCB_Horz;
-  prop.m_dwStates = FWL_WGTSTATE_Disabled | FWL_WGTSTATE_Invisible;
-  prop.m_pParent = this;
-  prop.m_pThemeProvider = m_pProperties->m_pThemeProvider;
 
-  IFWL_ScrollBar* sb = new IFWL_ScrollBar(m_pOwnerApp, prop, this);
+  auto prop = pdfium::MakeUnique<CFWL_WidgetProperties>();
+  prop->m_dwStyleExes = bVert ? FWL_STYLEEXT_SCB_Vert : FWL_STYLEEXT_SCB_Horz;
+  prop->m_dwStates = FWL_WGTSTATE_Disabled | FWL_WGTSTATE_Invisible;
+  prop->m_pParent = this;
+  prop->m_pThemeProvider = m_pProperties->m_pThemeProvider;
+
+  IFWL_ScrollBar* sb = new IFWL_ScrollBar(m_pOwnerApp, std::move(prop), this);
   if (bVert)
     m_pVertScrollBar.reset(sb);
   else
@@ -1554,8 +1555,8 @@
 void IFWL_Edit::InitCaret() {
   if (!m_pCaret) {
     if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_InnerCaret)) {
-      CFWL_WidgetImpProperties prop;
-      m_pCaret.reset(new IFWL_Caret(m_pOwnerApp, prop, this));
+      m_pCaret.reset(new IFWL_Caret(
+          m_pOwnerApp, pdfium::MakeUnique<CFWL_WidgetProperties>(), this));
       m_pCaret->SetParent(this);
       m_pCaret->SetStates(m_pProperties->m_dwStates);
     }
diff --git a/xfa/fwl/core/ifwl_edit.h b/xfa/fwl/core/ifwl_edit.h
index c210ac2..8ff69d0 100644
--- a/xfa/fwl/core/ifwl_edit.h
+++ b/xfa/fwl/core/ifwl_edit.h
@@ -91,13 +91,12 @@
               CFX_ByteString bsWord;
               std::vector<CFX_ByteString> bsArraySuggestWords;)
 
-class CFWL_WidgetImpProperties;
 class IFDE_TxtEdtDoRecord;
 class IFWL_Edit;
 class CFWL_MsgActivate;
 class CFWL_MsgDeactivate;
 class CFWL_MsgMouse;
-class CFWL_WidgetImpProperties;
+class CFWL_WidgetProperties;
 class IFWL_Caret;
 
 class IFWL_EditDP : public IFWL_DataProvider {};
@@ -105,7 +104,7 @@
 class IFWL_Edit : public IFWL_Widget {
  public:
   IFWL_Edit(const IFWL_App* app,
-            const CFWL_WidgetImpProperties& properties,
+            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 ab6887f..82148a0 100644
--- a/xfa/fwl/core/ifwl_form.cpp
+++ b/xfa/fwl/core/ifwl_form.cpp
@@ -38,9 +38,9 @@
 RestoreInfo::~RestoreInfo() {}
 
 IFWL_Form::IFWL_Form(const IFWL_App* app,
-                     const CFWL_WidgetImpProperties& properties,
+                     std::unique_ptr<CFWL_WidgetProperties> properties,
                      IFWL_Widget* pOuter)
-    : IFWL_Widget(app, properties, pOuter),
+    : IFWL_Widget(app, std::move(properties), pOuter),
       m_pCloseBox(nullptr),
       m_pMinBox(nullptr),
       m_pMaxBox(nullptr),
diff --git a/xfa/fwl/core/ifwl_form.h b/xfa/fwl/core/ifwl_form.h
index 4936af6..8042bb5 100644
--- a/xfa/fwl/core/ifwl_form.h
+++ b/xfa/fwl/core/ifwl_form.h
@@ -10,7 +10,7 @@
 #include <memory>
 
 #include "core/fxcrt/fx_system.h"
-#include "xfa/fwl/core/cfwl_widgetimpproperties.h"
+#include "xfa/fwl/core/cfwl_widgetproperties.h"
 #include "xfa/fwl/core/ifwl_dataprovider.h"
 #include "xfa/fwl/core/ifwl_widget.h"
 
@@ -72,7 +72,6 @@
 class CFWL_MsgClose;
 class CFWL_MsgWindowMove;
 class CFWL_NoteLoop;
-class CFWL_WidgetImpProperties;
 class IFWL_Widget;
 class IFWL_ThemeProvider;
 class CFWL_SysBtn;
@@ -85,7 +84,7 @@
 class IFWL_Form : public IFWL_Widget {
  public:
   IFWL_Form(const IFWL_App* app,
-            const CFWL_WidgetImpProperties& properties,
+            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 d06cf0b..8bb1091 100644
--- a/xfa/fwl/core/ifwl_formproxy.cpp
+++ b/xfa/fwl/core/ifwl_formproxy.cpp
@@ -9,11 +9,11 @@
 #include "third_party/base/ptr_util.h"
 #include "xfa/fwl/core/fwl_noteimp.h"
 
-IFWL_FormProxy::IFWL_FormProxy(const IFWL_App* app,
-                               const CFWL_WidgetImpProperties& properties,
-                               IFWL_Widget* pOuter)
-    : IFWL_Form(app, properties, pOuter) {
-}
+IFWL_FormProxy::IFWL_FormProxy(
+    const IFWL_App* app,
+    std::unique_ptr<CFWL_WidgetProperties> properties,
+    IFWL_Widget* pOuter)
+    : IFWL_Form(app, std::move(properties), pOuter) {}
 
 IFWL_FormProxy::~IFWL_FormProxy() {}
 
diff --git a/xfa/fwl/core/ifwl_formproxy.h b/xfa/fwl/core/ifwl_formproxy.h
index 7bab976..4eaeb5a 100644
--- a/xfa/fwl/core/ifwl_formproxy.h
+++ b/xfa/fwl/core/ifwl_formproxy.h
@@ -9,12 +9,12 @@
 
 #include "xfa/fwl/core/ifwl_form.h"
 
-class CFWL_WidgetImpProperties;
+class CFWL_WidgetProperties;
 
 class IFWL_FormProxy : public IFWL_Form {
  public:
   IFWL_FormProxy(const IFWL_App* app,
-                 const CFWL_WidgetImpProperties& properties,
+                 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 b462c8e..f0d2f01 100644
--- a/xfa/fwl/core/ifwl_listbox.cpp
+++ b/xfa/fwl/core/ifwl_listbox.cpp
@@ -22,9 +22,9 @@
 }  // namespace
 
 IFWL_ListBox::IFWL_ListBox(const IFWL_App* app,
-                           const CFWL_WidgetImpProperties& properties,
+                           std::unique_ptr<CFWL_WidgetProperties> properties,
                            IFWL_Widget* pOuter)
-    : IFWL_Widget(app, properties, pOuter),
+    : IFWL_Widget(app, std::move(properties), pOuter),
       m_dwTTOStyles(0),
       m_iTTOAligns(0),
       m_hAnchor(nullptr),
@@ -873,13 +873,13 @@
   if ((bVert && m_pVertScrollBar) || (!bVert && m_pHorzScrollBar)) {
     return;
   }
-  CFWL_WidgetImpProperties prop;
-  prop.m_dwStyleExes = bVert ? FWL_STYLEEXT_SCB_Vert : FWL_STYLEEXT_SCB_Horz;
-  prop.m_dwStates = FWL_WGTSTATE_Invisible;
-  prop.m_pParent = this;
-  prop.m_pThemeProvider = m_pScrollBarTP;
+  auto prop = pdfium::MakeUnique<CFWL_WidgetProperties>();
+  prop->m_dwStyleExes = bVert ? FWL_STYLEEXT_SCB_Vert : FWL_STYLEEXT_SCB_Horz;
+  prop->m_dwStates = FWL_WGTSTATE_Invisible;
+  prop->m_pParent = this;
+  prop->m_pThemeProvider = m_pScrollBarTP;
   (bVert ? &m_pVertScrollBar : &m_pHorzScrollBar)
-      ->reset(new IFWL_ScrollBar(m_pOwnerApp, prop, this));
+      ->reset(new IFWL_ScrollBar(m_pOwnerApp, std::move(prop), this));
 }
 
 bool IFWL_ListBox::IsShowScrollBar(bool bVert) {
diff --git a/xfa/fwl/core/ifwl_listbox.h b/xfa/fwl/core/ifwl_listbox.h
index e16778f..99006ca 100644
--- a/xfa/fwl/core/ifwl_listbox.h
+++ b/xfa/fwl/core/ifwl_listbox.h
@@ -10,7 +10,7 @@
 #include <memory>
 
 #include "xfa/fwl/core/cfwl_event.h"
-#include "xfa/fwl/core/cfwl_widgetimpproperties.h"
+#include "xfa/fwl/core/cfwl_widgetproperties.h"
 #include "xfa/fwl/core/ifwl_dataprovider.h"
 #include "xfa/fwl/core/ifwl_edit.h"
 #include "xfa/fwl/core/ifwl_listbox.h"
@@ -102,7 +102,7 @@
 class IFWL_ListBox : public IFWL_Widget {
  public:
   IFWL_ListBox(const IFWL_App* app,
-               const CFWL_WidgetImpProperties& properties,
+               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 4190dbd..28d5297 100644
--- a/xfa/fwl/core/ifwl_monthcalendar.cpp
+++ b/xfa/fwl/core/ifwl_monthcalendar.cpp
@@ -120,9 +120,9 @@
 
 IFWL_MonthCalendar::IFWL_MonthCalendar(
     const IFWL_App* app,
-    const CFWL_WidgetImpProperties& properties,
+    std::unique_ptr<CFWL_WidgetProperties> properties,
     IFWL_Widget* pOuter)
-    : IFWL_Widget(app, properties, pOuter),
+    : IFWL_Widget(app, std::move(properties), pOuter),
       m_bInit(false),
       m_pDateTime(new CFX_DateTime),
       m_iCurYear(2011),
diff --git a/xfa/fwl/core/ifwl_monthcalendar.h b/xfa/fwl/core/ifwl_monthcalendar.h
index 1017c86..ec8cdcd 100644
--- a/xfa/fwl/core/ifwl_monthcalendar.h
+++ b/xfa/fwl/core/ifwl_monthcalendar.h
@@ -9,7 +9,7 @@
 
 #include "xfa/fgas/localization/fgas_datetime.h"
 #include "xfa/fwl/core/cfwl_event.h"
-#include "xfa/fwl/core/cfwl_widgetimpproperties.h"
+#include "xfa/fwl/core/cfwl_widgetproperties.h"
 #include "xfa/fwl/core/ifwl_dataprovider.h"
 #include "xfa/fwl/core/ifwl_widget.h"
 
@@ -35,7 +35,6 @@
               int32_t m_iEndDay;)
 
 class CFWL_MsgMouse;
-class CFWL_WidgetImpProperties;
 class IFWL_Widget;
 
 struct FWL_DATEINFO;
@@ -52,7 +51,7 @@
 class IFWL_MonthCalendar : public IFWL_Widget {
  public:
   IFWL_MonthCalendar(const IFWL_App* app,
-                     const CFWL_WidgetImpProperties& properties,
+                     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 d820573..f97ee70 100644
--- a/xfa/fwl/core/ifwl_picturebox.cpp
+++ b/xfa/fwl/core/ifwl_picturebox.cpp
@@ -10,9 +10,10 @@
 #include "xfa/fwl/core/cfwl_picturebox.h"
 #include "xfa/fwl/core/fwl_noteimp.h"
 
-IFWL_PictureBox::IFWL_PictureBox(const IFWL_App* app,
-                                 const CFWL_WidgetImpProperties& properties)
-    : IFWL_Widget(app, properties, nullptr),
+IFWL_PictureBox::IFWL_PictureBox(
+    const IFWL_App* app,
+    std::unique_ptr<CFWL_WidgetProperties> properties)
+    : IFWL_Widget(app, std::move(properties), nullptr),
       m_bTop(false),
       m_bVCenter(false),
       m_bButton(false) {
diff --git a/xfa/fwl/core/ifwl_picturebox.h b/xfa/fwl/core/ifwl_picturebox.h
index edd8e7e..2eeacae 100644
--- a/xfa/fwl/core/ifwl_picturebox.h
+++ b/xfa/fwl/core/ifwl_picturebox.h
@@ -7,7 +7,7 @@
 #ifndef XFA_FWL_CORE_IFWL_PICTUREBOX_H_
 #define XFA_FWL_CORE_IFWL_PICTUREBOX_H_
 
-#include "xfa/fwl/core/cfwl_widgetimpproperties.h"
+#include "xfa/fwl/core/cfwl_widgetproperties.h"
 #include "xfa/fwl/core/fwl_error.h"
 #include "xfa/fwl/core/ifwl_dataprovider.h"
 #include "xfa/fwl/core/ifwl_widget.h"
@@ -27,7 +27,6 @@
 #define FWL_STYLEEXT_PTB_VAlignMask 3L << 2
 #define FWL_STYLEEXT_PTB_StretchAlignMask 7L << 4
 
-class CFWL_WidgetImpProperties;
 class CFX_DIBitmap;
 class IFWL_Widget;
 
@@ -44,7 +43,7 @@
 class IFWL_PictureBox : public IFWL_Widget {
  public:
   explicit IFWL_PictureBox(const IFWL_App* app,
-                           const CFWL_WidgetImpProperties& properties);
+                           std::unique_ptr<CFWL_WidgetProperties> properties);
   ~IFWL_PictureBox() override;
 
   // IFWL_Widget
diff --git a/xfa/fwl/core/ifwl_pushbutton.cpp b/xfa/fwl/core/ifwl_pushbutton.cpp
index f9f996a..c03b26a 100644
--- a/xfa/fwl/core/ifwl_pushbutton.cpp
+++ b/xfa/fwl/core/ifwl_pushbutton.cpp
@@ -15,9 +15,10 @@
 #include "xfa/fwl/core/ifwl_pushbutton.h"
 #include "xfa/fwl/core/ifwl_themeprovider.h"
 
-IFWL_PushButton::IFWL_PushButton(const IFWL_App* app,
-                                 const CFWL_WidgetImpProperties& properties)
-    : IFWL_Widget(app, properties, nullptr),
+IFWL_PushButton::IFWL_PushButton(
+    const IFWL_App* app,
+    std::unique_ptr<CFWL_WidgetProperties> properties)
+    : IFWL_Widget(app, std::move(properties), nullptr),
       m_bBtnDown(false),
       m_dwTTOStyles(FDE_TTOSTYLE_SingleLine),
       m_iTTOAlign(FDE_TTOALIGNMENT_Center) {
diff --git a/xfa/fwl/core/ifwl_pushbutton.h b/xfa/fwl/core/ifwl_pushbutton.h
index 422e597..94078bb 100644
--- a/xfa/fwl/core/ifwl_pushbutton.h
+++ b/xfa/fwl/core/ifwl_pushbutton.h
@@ -7,7 +7,7 @@
 #ifndef XFA_FWL_CORE_IFWL_PUSHBUTTON_H_
 #define XFA_FWL_CORE_IFWL_PUSHBUTTON_H_
 
-#include "xfa/fwl/core/cfwl_widgetimpproperties.h"
+#include "xfa/fwl/core/cfwl_widgetproperties.h"
 #include "xfa/fwl/core/ifwl_dataprovider.h"
 #include "xfa/fwl/core/ifwl_widget.h"
 
@@ -28,7 +28,6 @@
 #define FWL_STATE_PSB_Default (1 << (FWL_WGTSTATE_MAX + 2))
 
 class CFWL_MsgMouse;
-class CFWL_WidgetImpProperties;
 class CFX_DIBitmap;
 class IFWL_Widget;
 
@@ -40,7 +39,7 @@
 class IFWL_PushButton : public IFWL_Widget {
  public:
   IFWL_PushButton(const IFWL_App* app,
-                  const CFWL_WidgetImpProperties& properties);
+                  std::unique_ptr<CFWL_WidgetProperties> properties);
   ~IFWL_PushButton() override;
 
   // IFWL_Widget
diff --git a/xfa/fwl/core/ifwl_scrollbar.cpp b/xfa/fwl/core/ifwl_scrollbar.cpp
index 9369bd8..777ca59 100644
--- a/xfa/fwl/core/ifwl_scrollbar.cpp
+++ b/xfa/fwl/core/ifwl_scrollbar.cpp
@@ -17,10 +17,11 @@
 #define FWL_SCROLLBAR_Elapse 500
 #define FWL_SCROLLBAR_MinThumb 5
 
-IFWL_ScrollBar::IFWL_ScrollBar(const IFWL_App* app,
-                               const CFWL_WidgetImpProperties& properties,
-                               IFWL_Widget* pOuter)
-    : IFWL_Widget(app, properties, pOuter),
+IFWL_ScrollBar::IFWL_ScrollBar(
+    const IFWL_App* app,
+    std::unique_ptr<CFWL_WidgetProperties> properties,
+    IFWL_Widget* pOuter)
+    : IFWL_Widget(app, std::move(properties), pOuter),
       m_pTimerInfo(nullptr),
       m_fRangeMin(0),
       m_fRangeMax(-1),
diff --git a/xfa/fwl/core/ifwl_scrollbar.h b/xfa/fwl/core/ifwl_scrollbar.h
index 5c41fdd..15b1b95 100644
--- a/xfa/fwl/core/ifwl_scrollbar.h
+++ b/xfa/fwl/core/ifwl_scrollbar.h
@@ -8,13 +8,12 @@
 #define XFA_FWL_CORE_IFWL_SCROLLBAR_H_
 
 #include "core/fxcrt/fx_system.h"
-#include "xfa/fwl/core/cfwl_widgetimpproperties.h"
+#include "xfa/fwl/core/cfwl_widgetproperties.h"
 #include "xfa/fwl/core/fwl_error.h"
 #include "xfa/fwl/core/ifwl_dataprovider.h"
 #include "xfa/fwl/core/ifwl_timer.h"
 #include "xfa/fwl/core/ifwl_widget.h"
 
-class CFWL_WidgetImpProperties;
 class IFWL_Widget;
 
 #define FWL_STYLEEXT_SCB_Horz (0L << 0)
@@ -38,7 +37,7 @@
 class IFWL_ScrollBar : public IFWL_Widget {
  public:
   IFWL_ScrollBar(const IFWL_App* app,
-                 const CFWL_WidgetImpProperties& properties,
+                 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 1603234..a669493 100644
--- a/xfa/fwl/core/ifwl_spinbutton.cpp
+++ b/xfa/fwl/core/ifwl_spinbutton.cpp
@@ -9,7 +9,7 @@
 #include "third_party/base/ptr_util.h"
 #include "xfa/fwl/core/cfwl_message.h"
 #include "xfa/fwl/core/cfwl_themebackground.h"
-#include "xfa/fwl/core/cfwl_widgetimpproperties.h"
+#include "xfa/fwl/core/cfwl_widgetproperties.h"
 #include "xfa/fwl/core/fwl_noteimp.h"
 #include "xfa/fwl/core/ifwl_spinbutton.h"
 #include "xfa/fwl/core/ifwl_themeprovider.h"
@@ -24,9 +24,10 @@
 
 }  // namespace
 
-IFWL_SpinButton::IFWL_SpinButton(const IFWL_App* app,
-                                 const CFWL_WidgetImpProperties& properties)
-    : IFWL_Widget(app, properties, nullptr),
+IFWL_SpinButton::IFWL_SpinButton(
+    const IFWL_App* app,
+    std::unique_ptr<CFWL_WidgetProperties> properties)
+    : IFWL_Widget(app, std::move(properties), nullptr),
       m_dwUpState(CFWL_PartState_Normal),
       m_dwDnState(CFWL_PartState_Normal),
       m_iButtonIndex(0),
diff --git a/xfa/fwl/core/ifwl_spinbutton.h b/xfa/fwl/core/ifwl_spinbutton.h
index a388489..73c2fc0 100644
--- a/xfa/fwl/core/ifwl_spinbutton.h
+++ b/xfa/fwl/core/ifwl_spinbutton.h
@@ -15,14 +15,14 @@
 #define FWL_STYLEEXE_SPB_Vert (1L << 0)
 
 class CFWL_MsgMouse;
-class CFWL_WidgetImpProperties;
+class CFWL_WidgetProperties;
 
 FWL_EVENT_DEF(CFWL_EvtSpbClick, CFWL_EventType::Click, bool m_bUp;)
 
 class IFWL_SpinButton : public IFWL_Widget {
  public:
   explicit IFWL_SpinButton(const IFWL_App* app,
-                           const CFWL_WidgetImpProperties& properties);
+                           std::unique_ptr<CFWL_WidgetProperties> properties);
   ~IFWL_SpinButton() override;
 
   // IFWL_Widget
diff --git a/xfa/fwl/core/ifwl_tooltip.cpp b/xfa/fwl/core/ifwl_tooltip.cpp
index 2d518c5..99d3b98 100644
--- a/xfa/fwl/core/ifwl_tooltip.cpp
+++ b/xfa/fwl/core/ifwl_tooltip.cpp
@@ -17,9 +17,9 @@
 #include "xfa/fwl/theme/cfwl_widgettp.h"
 
 IFWL_ToolTip::IFWL_ToolTip(const IFWL_App* app,
-                           const CFWL_WidgetImpProperties& properties,
+                           std::unique_ptr<CFWL_WidgetProperties> properties,
                            IFWL_Widget* pOuter)
-    : IFWL_Form(app, properties, pOuter),
+    : IFWL_Form(app, std::move(properties), pOuter),
       m_bBtnDown(false),
       m_dwTTOStyles(FDE_TTOSTYLE_SingleLine),
       m_iTTOAlign(FDE_TTOALIGNMENT_Center),
diff --git a/xfa/fwl/core/ifwl_tooltip.h b/xfa/fwl/core/ifwl_tooltip.h
index c2ad663..78b7535 100644
--- a/xfa/fwl/core/ifwl_tooltip.h
+++ b/xfa/fwl/core/ifwl_tooltip.h
@@ -10,7 +10,7 @@
 #include "xfa/fwl/core/ifwl_form.h"
 #include "xfa/fwl/core/ifwl_timer.h"
 
-class CFWL_WidgetImpProperties;
+class CFWL_WidgetProperties;
 class IFWL_Widget;
 class CFWL_ToolTipImpDelegate;
 
@@ -35,7 +35,7 @@
 class IFWL_ToolTip : public IFWL_Form {
  public:
   IFWL_ToolTip(const IFWL_App* app,
-               const CFWL_WidgetImpProperties& properties,
+               std::unique_ptr<CFWL_WidgetProperties> properties,
                IFWL_Widget* pOuter);
   ~IFWL_ToolTip() override;
 
diff --git a/xfa/fwl/core/ifwl_widget.cpp b/xfa/fwl/core/ifwl_widget.cpp
index 7bcdf18..a041f4e 100644
--- a/xfa/fwl/core/ifwl_widget.cpp
+++ b/xfa/fwl/core/ifwl_widget.cpp
@@ -25,11 +25,11 @@
 #define FWL_STYLEEXT_MNU_Vert (1L << 0)
 
 IFWL_Widget::IFWL_Widget(const IFWL_App* app,
-                         const CFWL_WidgetImpProperties& properties,
+                         std::unique_ptr<CFWL_WidgetProperties> properties,
                          IFWL_Widget* pOuter)
     : m_pOwnerApp(app),
       m_pWidgetMgr(app->GetWidgetMgr()),
-      m_pProperties(new CFWL_WidgetImpProperties(properties)),
+      m_pProperties(std::move(properties)),
       m_pOuter(pOuter),
       m_pLayoutItem(nullptr),
       m_pAssociate(nullptr),
diff --git a/xfa/fwl/core/ifwl_widget.h b/xfa/fwl/core/ifwl_widget.h
index b5dc1f9..862f357 100644
--- a/xfa/fwl/core/ifwl_widget.h
+++ b/xfa/fwl/core/ifwl_widget.h
@@ -54,7 +54,7 @@
 class CFWL_AppImp;
 class CFWL_MsgKey;
 class CFWL_Widget;
-class CFWL_WidgetImpProperties;
+class CFWL_WidgetProperties;
 class CFWL_WidgetMgr;
 class IFWL_App;
 class IFWL_DataProvider;
@@ -145,7 +145,7 @@
   friend class CFWL_WidgetImpDelegate;
 
   IFWL_Widget(const IFWL_App* app,
-              const CFWL_WidgetImpProperties& properties,
+              std::unique_ptr<CFWL_WidgetProperties> properties,
               IFWL_Widget* pOuter);
 
   bool IsEnabled() const;
@@ -215,7 +215,7 @@
 
   const IFWL_App* const m_pOwnerApp;
   CFWL_WidgetMgr* const m_pWidgetMgr;
-  std::unique_ptr<CFWL_WidgetImpProperties> m_pProperties;
+  std::unique_ptr<CFWL_WidgetProperties> m_pProperties;
   IFWL_Widget* m_pOuter;
   void* m_pLayoutItem;
   CFWL_Widget* m_pAssociate;