diff --git a/fpdfsdk/fpdfsave.cpp b/fpdfsdk/fpdfsave.cpp
index 8e92579..638c22b 100644
--- a/fpdfsdk/fpdfsave.cpp
+++ b/fpdfsdk/fpdfsave.cpp
@@ -240,8 +240,8 @@
     return false;
 
   CXFA_FFWidgetHandler* pWidgetHander = pXFADocView->GetWidgetHandler();
-  std::unique_ptr<CXFA_WidgetAccIterator> pWidgetAccIterator(
-      pXFADocView->CreateWidgetAccIterator());
+  std::unique_ptr<CXFA_WidgetAccIterator> pWidgetAccIterator =
+      pXFADocView->CreateWidgetAccIterator();
   while (CXFA_WidgetAcc* pWidgetAcc = pWidgetAccIterator->MoveToNext()) {
     CXFA_EventParam preParam;
     preParam.m_eType = XFA_EVENT_PostSave;
@@ -264,8 +264,8 @@
     return true;
 
   CXFA_FFWidgetHandler* pWidgetHander = pXFADocView->GetWidgetHandler();
-  std::unique_ptr<CXFA_WidgetAccIterator> pWidgetAccIterator(
-      pXFADocView->CreateWidgetAccIterator());
+  std::unique_ptr<CXFA_WidgetAccIterator> pWidgetAccIterator =
+      pXFADocView->CreateWidgetAccIterator();
   while (CXFA_WidgetAcc* pWidgetAcc = pWidgetAccIterator->MoveToNext()) {
     CXFA_EventParam preParam;
     preParam.m_eType = XFA_EVENT_PreSave;
diff --git a/fpdfsdk/fpdfview.cpp b/fpdfsdk/fpdfview.cpp
index c928ebe..72ef75c 100644
--- a/fpdfsdk/fpdfview.cpp
+++ b/fpdfsdk/fpdfview.cpp
@@ -140,9 +140,8 @@
 
 class CPDF_CustomAccess final : public IFX_SeekableReadStream {
  public:
-  static CFX_RetainPtr<CPDF_CustomAccess> Create(FPDF_FILEACCESS* pFileAccess) {
-    return CFX_RetainPtr<CPDF_CustomAccess>(new CPDF_CustomAccess(pFileAccess));
-  }
+  template <typename T, typename... Args>
+  friend CFX_RetainPtr<T> pdfium::MakeRetain(Args&&... args);
 
   // IFX_SeekableReadStream
   FX_FILESIZE GetSize() override;
@@ -180,9 +179,9 @@
 #ifdef PDF_ENABLE_XFA
 class CFPDF_FileStream : public IFX_SeekableStream {
  public:
-  static CFX_RetainPtr<CFPDF_FileStream> Create(FPDF_FILEHANDLER* pFS) {
-    return CFX_RetainPtr<CFPDF_FileStream>(new CFPDF_FileStream(pFS));
-  }
+  template <typename T, typename... Args>
+  friend CFX_RetainPtr<T> pdfium::MakeRetain(Args&&... args);
+
   ~CFPDF_FileStream() override;
 
   // IFX_SeekableStream:
@@ -328,13 +327,13 @@
 
 CFX_RetainPtr<IFX_SeekableReadStream> MakeSeekableReadStream(
     FPDF_FILEACCESS* pFileAccess) {
-  return CPDF_CustomAccess::Create(pFileAccess);
+  return pdfium::MakeRetain<CPDF_CustomAccess>(pFileAccess);
 }
 
 #ifdef PDF_ENABLE_XFA
 CFX_RetainPtr<IFX_SeekableStream> MakeSeekableStream(
     FPDF_FILEHANDLER* pFilehandler) {
-  return CFPDF_FileStream::Create(pFilehandler);
+  return pdfium::MakeRetain<CFPDF_FileStream>(pFilehandler);
 }
 #endif  // PDF_ENABLE_XFA
 
@@ -594,8 +593,7 @@
 DLLEXPORT FPDF_DOCUMENT STDCALL
 FPDF_LoadCustomDocument(FPDF_FILEACCESS* pFileAccess,
                         FPDF_BYTESTRING password) {
-  CFX_RetainPtr<CPDF_CustomAccess> pFile =
-      CPDF_CustomAccess::Create(pFileAccess);
+  auto pFile = pdfium::MakeRetain<CPDF_CustomAccess>(pFileAccess);
   auto pParser = pdfium::MakeUnique<CPDF_Parser>();
   pParser->SetPassword(password);
 
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
index bd16f43..4464f1c 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
@@ -624,8 +624,8 @@
   if (!pWidgetHandler)
     return true;
 
-  std::unique_ptr<CXFA_WidgetAccIterator> pWidgetAccIterator(
-      m_pContext->GetXFADocView()->CreateWidgetAccIterator());
+  std::unique_ptr<CXFA_WidgetAccIterator> pWidgetAccIterator =
+      m_pContext->GetXFADocView()->CreateWidgetAccIterator();
   if (pWidgetAccIterator) {
     CXFA_EventParam Param;
     Param.m_eType = XFA_EVENT_PreSubmit;
@@ -633,8 +633,7 @@
       pWidgetHandler->ProcessEvent(pWidgetAcc, &Param);
   }
 
-  pWidgetAccIterator.reset(
-      m_pContext->GetXFADocView()->CreateWidgetAccIterator());
+  pWidgetAccIterator = m_pContext->GetXFADocView()->CreateWidgetAccIterator();
   if (!pWidgetAccIterator)
     return true;
 
@@ -676,8 +675,8 @@
   if (!pWidgetHandler)
     return;
 
-  std::unique_ptr<CXFA_WidgetAccIterator> pWidgetAccIterator(
-      m_pContext->GetXFADocView()->CreateWidgetAccIterator());
+  std::unique_ptr<CXFA_WidgetAccIterator> pWidgetAccIterator =
+      m_pContext->GetXFADocView()->CreateWidgetAccIterator();
   if (!pWidgetAccIterator)
     return;
 
diff --git a/xfa/fxfa/cxfa_ffapp.cpp b/xfa/fxfa/cxfa_ffapp.cpp
index a71112c..742cd14 100644
--- a/xfa/fxfa/cxfa_ffapp.cpp
+++ b/xfa/fxfa/cxfa_ffapp.cpp
@@ -26,7 +26,7 @@
 CXFA_FFApp::CXFA_FFApp(IXFA_AppProvider* pProvider)
     : m_pProvider(pProvider),
       m_pWidgetMgrDelegate(nullptr),
-      m_pFWLApp(new CFWL_App(this)) {}
+      m_pFWLApp(pdfium::MakeUnique<CFWL_App>(this)) {}
 
 CXFA_FFApp::~CXFA_FFApp() {}
 
diff --git a/xfa/fxfa/cxfa_ffdocview.cpp b/xfa/fxfa/cxfa_ffdocview.cpp
index 00f759a..bcf5ef2 100644
--- a/xfa/fxfa/cxfa_ffdocview.cpp
+++ b/xfa/fxfa/cxfa_ffdocview.cpp
@@ -306,10 +306,12 @@
   return m_pWidgetHandler.get();
 }
 
-CXFA_WidgetAccIterator* CXFA_FFDocView::CreateWidgetAccIterator(
-    XFA_WIDGETORDER eOrder) {
+std::unique_ptr<CXFA_WidgetAccIterator>
+CXFA_FFDocView::CreateWidgetAccIterator() {
   CXFA_Node* pFormRoot = GetRootSubform();
-  return pFormRoot ? new CXFA_WidgetAccIterator(pFormRoot) : nullptr;
+  if (!pFormRoot)
+    return nullptr;
+  return pdfium::MakeUnique<CXFA_WidgetAccIterator>(pFormRoot);
 }
 
 CXFA_FFWidget* CXFA_FFDocView::GetFocusWidget() {
diff --git a/xfa/fxfa/cxfa_ffdocview.h b/xfa/fxfa/cxfa_ffdocview.h
index 05ed9d7..7b443d4 100644
--- a/xfa/fxfa/cxfa_ffdocview.h
+++ b/xfa/fxfa/cxfa_ffdocview.h
@@ -55,8 +55,7 @@
   int32_t ProcessWidgetEvent(CXFA_EventParam* pParam,
                              CXFA_WidgetAcc* pWidgetAcc);
   CXFA_FFWidgetHandler* GetWidgetHandler();
-  CXFA_WidgetAccIterator* CreateWidgetAccIterator(
-      XFA_WIDGETORDER eOrder = XFA_WIDGETORDER_PreOrder);
+  std::unique_ptr<CXFA_WidgetAccIterator> CreateWidgetAccIterator();
   CXFA_FFWidget* GetFocusWidget();
   void KillFocus();
   bool SetFocus(CXFA_FFWidget* hWidget);
diff --git a/xfa/fxfa/cxfa_ffpageview.cpp b/xfa/fxfa/cxfa_ffpageview.cpp
index 49033bc..d027a83 100644
--- a/xfa/fxfa/cxfa_ffpageview.cpp
+++ b/xfa/fxfa/cxfa_ffpageview.cpp
@@ -127,14 +127,16 @@
   return GetPageMatrix(CFX_RectF(0, 0, GetPageSize()), rtDisp, iRotate, 0);
 }
 
-IXFA_WidgetIterator* CXFA_FFPageView::CreateWidgetIterator(
+std::unique_ptr<IXFA_WidgetIterator> CXFA_FFPageView::CreateWidgetIterator(
     uint32_t dwTraverseWay,
     uint32_t dwWidgetFilter) {
   switch (dwTraverseWay) {
     case XFA_TRAVERSEWAY_Tranvalse:
-      return new CXFA_FFTabOrderPageWidgetIterator(this, dwWidgetFilter);
+      return pdfium::MakeUnique<CXFA_FFTabOrderPageWidgetIterator>(
+          this, dwWidgetFilter);
     case XFA_TRAVERSEWAY_Form:
-      return new CXFA_FFPageWidgetIterator(this, dwWidgetFilter);
+      return pdfium::MakeUnique<CXFA_FFPageWidgetIterator>(this,
+                                                           dwWidgetFilter);
   }
   return nullptr;
 }
diff --git a/xfa/fxfa/cxfa_ffpageview.h b/xfa/fxfa/cxfa_ffpageview.h
index df4fc6d..01409f3 100644
--- a/xfa/fxfa/cxfa_ffpageview.h
+++ b/xfa/fxfa/cxfa_ffpageview.h
@@ -7,6 +7,7 @@
 #ifndef XFA_FXFA_CXFA_FFPAGEVIEW_H_
 #define XFA_FXFA_CXFA_FFPAGEVIEW_H_
 
+#include <memory>
 #include <vector>
 
 #include "xfa/fxfa/parser/cxfa_containerlayoutitem.h"
@@ -25,18 +26,17 @@
   CXFA_FFDocView* GetDocView() const;
   CFX_RectF GetPageViewRect() const;
   CFX_Matrix GetDisplayMatrix(const CFX_Rect& rtDisp, int32_t iRotate) const;
-  IXFA_WidgetIterator* CreateWidgetIterator(
-      uint32_t dwTraverseWay = XFA_TRAVERSEWAY_Form,
-      uint32_t dwWidgetFilter = XFA_WidgetStatus_Visible |
-                                XFA_WidgetStatus_Viewable);
+  std::unique_ptr<IXFA_WidgetIterator> CreateWidgetIterator(
+      uint32_t dwTraverseWay,
+      uint32_t dwWidgetFilter);
 
  protected:
   CXFA_FFDocView* const m_pDocView;
 };
 
-typedef CXFA_NodeIteratorTemplate<CXFA_LayoutItem,
-                                  CXFA_TraverseStrategy_LayoutItem>
-    CXFA_LayoutItemIterator;
+using CXFA_LayoutItemIterator =
+    CXFA_NodeIteratorTemplate<CXFA_LayoutItem,
+                              CXFA_TraverseStrategy_LayoutItem>;
 
 class CXFA_FFPageWidgetIterator : public IXFA_WidgetIterator {
  public:
diff --git a/xfa/fxfa/cxfa_rendercontext.cpp b/xfa/fxfa/cxfa_rendercontext.cpp
index ecb4291..4b48dd4 100644
--- a/xfa/fxfa/cxfa_rendercontext.cpp
+++ b/xfa/fxfa/cxfa_rendercontext.cpp
@@ -41,8 +41,8 @@
   uint32_t dwFilterType = XFA_WidgetStatus_Visible |
                           (m_options.m_bPrint ? XFA_WidgetStatus_Printable
                                               : XFA_WidgetStatus_Viewable);
-  m_pWidgetIterator.reset(
-      m_pPageView->CreateWidgetIterator(XFA_TRAVERSEWAY_Form, dwFilterType));
+  m_pWidgetIterator =
+      m_pPageView->CreateWidgetIterator(XFA_TRAVERSEWAY_Form, dwFilterType);
   m_pWidget = m_pWidgetIterator->MoveToNext();
   return XFA_RENDERSTATUS_Ready;
 }
diff --git a/xfa/fxfa/fxfa.h b/xfa/fxfa/fxfa.h
index 559035c..2b4e237 100644
--- a/xfa/fxfa/fxfa.h
+++ b/xfa/fxfa/fxfa.h
@@ -86,10 +86,6 @@
   XFA_WidgetStatus_Visible = 1 << 9
 };
 
-enum XFA_WIDGETORDER {
-  XFA_WIDGETORDER_PreOrder,
-};
-
 enum XFA_WIDGETTYPE {
   XFA_WIDGETTYPE_Barcode,
   XFA_WIDGETTYPE_PushButton,
