diff --git a/xfa/fxfa/cxfa_ffapp.cpp b/xfa/fxfa/cxfa_ffapp.cpp
index 656b559..69e67de 100644
--- a/xfa/fxfa/cxfa_ffapp.cpp
+++ b/xfa/fxfa/cxfa_ffapp.cpp
@@ -11,7 +11,6 @@
 #include <utility>
 #include <vector>
 
-#include "third_party/base/ptr_util.h"
 #include "xfa/fgas/font/cfgas_fontmgr.h"
 #include "xfa/fwl/cfwl_notedriver.h"
 #include "xfa/fwl/cfwl_widgetmgr.h"
@@ -34,14 +33,14 @@
 
 CXFA_FFApp::CXFA_FFApp(IXFA_AppProvider* pProvider) : m_pProvider(pProvider) {
   // Ensure fully initialized before making an app based on |this|.
-  m_pFWLApp = pdfium::MakeUnique<CFWL_App>(this);
+  m_pFWLApp = std::make_unique<CFWL_App>(this);
 }
 
 CXFA_FFApp::~CXFA_FFApp() {}
 
 CFGAS_FontMgr* CXFA_FFApp::GetFDEFontMgr() {
   if (!m_pFDEFontMgr) {
-    m_pFDEFontMgr = pdfium::MakeUnique<CFGAS_FontMgr>();
+    m_pFDEFontMgr = std::make_unique<CFGAS_FontMgr>();
     if (!g_skipFontLoadForTesting) {
       if (!m_pFDEFontMgr->EnumFonts())
         m_pFDEFontMgr = nullptr;
@@ -52,7 +51,7 @@
 
 CXFA_FWLTheme* CXFA_FFApp::GetFWLTheme(CXFA_FFDoc* doc) {
   if (!m_pFWLTheme) {
-    auto fwl_theme = pdfium::MakeUnique<CXFA_FWLTheme>(this);
+    auto fwl_theme = std::make_unique<CXFA_FWLTheme>(this);
     if (fwl_theme->LoadCalendarFont(doc))
       m_pFWLTheme = std::move(fwl_theme);
   }
@@ -61,7 +60,7 @@
 
 CFWL_WidgetMgr::AdapterIface* CXFA_FFApp::GetWidgetMgrAdapter() {
   if (!m_pAdapterWidgetMgr)
-    m_pAdapterWidgetMgr = pdfium::MakeUnique<CXFA_FWLAdapterWidgetMgr>();
+    m_pAdapterWidgetMgr = std::make_unique<CXFA_FWLAdapterWidgetMgr>();
   return m_pAdapterWidgetMgr.get();
 }
 
diff --git a/xfa/fxfa/cxfa_ffbarcode.cpp b/xfa/fxfa/cxfa_ffbarcode.cpp
index c6a940e..c719a90 100644
--- a/xfa/fxfa/cxfa_ffbarcode.cpp
+++ b/xfa/fxfa/cxfa_ffbarcode.cpp
@@ -6,10 +6,10 @@
 
 #include "xfa/fxfa/cxfa_ffbarcode.h"
 
+#include <memory>
 #include <utility>
 
 #include "core/fxcrt/fx_extension.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fwl/cfwl_app.h"
 #include "xfa/fwl/cfwl_barcode.h"
 #include "xfa/fwl/cfwl_notedriver.h"
@@ -144,7 +144,7 @@
   // Prevents destruction of the CXFA_ContentLayoutItem that owns |this|.
   RetainPtr<CXFA_ContentLayoutItem> retain_layout(m_pLayoutItem.Get());
 
-  auto pNew = pdfium::MakeUnique<CFWL_Barcode>(GetFWLApp());
+  auto pNew = std::make_unique<CFWL_Barcode>(GetFWLApp());
   CFWL_Barcode* pFWLBarcode = pNew.get();
   SetNormalWidget(std::move(pNew));
   pFWLBarcode->SetAdapterIface(this);
diff --git a/xfa/fxfa/cxfa_ffcheckbutton.cpp b/xfa/fxfa/cxfa_ffcheckbutton.cpp
index 64f2b1c..1a85190 100644
--- a/xfa/fxfa/cxfa_ffcheckbutton.cpp
+++ b/xfa/fxfa/cxfa_ffcheckbutton.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/cxfa_ffcheckbutton.h"
 
+#include <memory>
 #include <utility>
-#include "third_party/base/ptr_util.h"
+
 #include "xfa/fwl/cfwl_checkbox.h"
 #include "xfa/fwl/cfwl_messagemouse.h"
 #include "xfa/fwl/cfwl_notedriver.h"
@@ -36,7 +37,7 @@
   // Prevents destruction of the CXFA_ContentLayoutItem that owns |this|.
   RetainPtr<CXFA_ContentLayoutItem> retain_layout(m_pLayoutItem.Get());
 
-  auto pNew = pdfium::MakeUnique<CFWL_CheckBox>(GetFWLApp());
+  auto pNew = std::make_unique<CFWL_CheckBox>(GetFWLApp());
   CFWL_CheckBox* pCheckBox = pNew.get();
   SetNormalWidget(std::move(pNew));
   pCheckBox->SetAdapterIface(this);
@@ -258,7 +259,7 @@
   RetainPtr<CXFA_ContentLayoutItem> retainer(m_pLayoutItem.Get());
 
   SetButtonDown(false);
-  SendMessageToFWLWidget(pdfium::MakeUnique<CFWL_MessageMouse>(
+  SendMessageToFWLWidget(std::make_unique<CFWL_MessageMouse>(
       GetNormalWidget(), FWL_MouseCommand::LeftButtonUp, dwFlags,
       FWLToClient(point)));
 
diff --git a/xfa/fxfa/cxfa_ffcombobox.cpp b/xfa/fxfa/cxfa_ffcombobox.cpp
index 6e25e62..99b2525 100644
--- a/xfa/fxfa/cxfa_ffcombobox.cpp
+++ b/xfa/fxfa/cxfa_ffcombobox.cpp
@@ -6,10 +6,10 @@
 
 #include "xfa/fxfa/cxfa_ffcombobox.h"
 
+#include <memory>
 #include <utility>
 #include <vector>
 
-#include "third_party/base/ptr_util.h"
 #include "xfa/fwl/cfwl_combobox.h"
 #include "xfa/fwl/cfwl_eventselectchanged.h"
 #include "xfa/fwl/cfwl_notedriver.h"
@@ -54,7 +54,7 @@
   // Prevents destruction of the CXFA_ContentLayoutItem that owns |this|.
   RetainPtr<CXFA_ContentLayoutItem> retain_layout(m_pLayoutItem.Get());
 
-  auto pNew = pdfium::MakeUnique<CFWL_ComboBox>(GetFWLApp());
+  auto pNew = std::make_unique<CFWL_ComboBox>(GetFWLApp());
   CFWL_ComboBox* pComboBox = pNew.get();
   SetNormalWidget(std::move(pNew));
   pComboBox->SetAdapterIface(this);
diff --git a/xfa/fxfa/cxfa_ffdatetimeedit.cpp b/xfa/fxfa/cxfa_ffdatetimeedit.cpp
index 7a8e6e6..4a92bcb 100644
--- a/xfa/fxfa/cxfa_ffdatetimeedit.cpp
+++ b/xfa/fxfa/cxfa_ffdatetimeedit.cpp
@@ -6,9 +6,9 @@
 
 #include "xfa/fxfa/cxfa_ffdatetimeedit.h"
 
+#include <memory>
 #include <utility>
 
-#include "third_party/base/ptr_util.h"
 #include "xfa/fwl/cfwl_datetimepicker.h"
 #include "xfa/fwl/cfwl_eventselectchanged.h"
 #include "xfa/fwl/cfwl_notedriver.h"
@@ -47,7 +47,7 @@
   // Prevents destruction of the CXFA_ContentLayoutItem that owns |this|.
   RetainPtr<CXFA_ContentLayoutItem> retain_layout(m_pLayoutItem.Get());
 
-  auto pNewPicker = pdfium::MakeUnique<CFWL_DateTimePicker>(GetFWLApp());
+  auto pNewPicker = std::make_unique<CFWL_DateTimePicker>(GetFWLApp());
   CFWL_DateTimePicker* pWidget = pNewPicker.get();
   SetNormalWidget(std::move(pNewPicker));
   pWidget->SetAdapterIface(this);
diff --git a/xfa/fxfa/cxfa_ffdocview.cpp b/xfa/fxfa/cxfa_ffdocview.cpp
index b110e09..49dbabf 100644
--- a/xfa/fxfa/cxfa_ffdocview.cpp
+++ b/xfa/fxfa/cxfa_ffdocview.cpp
@@ -12,7 +12,6 @@
 #include "core/fxcrt/fx_extension.h"
 #include "fxjs/xfa/cfxjse_engine.h"
 #include "fxjs/xfa/cjx_object.h"
-#include "third_party/base/ptr_util.h"
 #include "third_party/base/stl_util.h"
 #include "xfa/fxfa/cxfa_ffapp.h"
 #include "xfa/fxfa/cxfa_ffbarcode.h"
@@ -276,14 +275,14 @@
 
 CXFA_FFWidgetHandler* CXFA_FFDocView::GetWidgetHandler() {
   if (!m_pWidgetHandler)
-    m_pWidgetHandler = pdfium::MakeUnique<CXFA_FFWidgetHandler>(this);
+    m_pWidgetHandler = std::make_unique<CXFA_FFWidgetHandler>(this);
   return m_pWidgetHandler.get();
 }
 
 std::unique_ptr<CXFA_ReadyNodeIterator>
 CXFA_FFDocView::CreateReadyNodeIterator() {
   CXFA_Subform* pFormRoot = GetRootSubform();
-  return pFormRoot ? pdfium::MakeUnique<CXFA_ReadyNodeIterator>(pFormRoot)
+  return pFormRoot ? std::make_unique<CXFA_ReadyNodeIterator>(pFormRoot)
                    : nullptr;
 }
 
diff --git a/xfa/fxfa/cxfa_fffield.cpp b/xfa/fxfa/cxfa_fffield.cpp
index 49cd2c4..b10ed96 100644
--- a/xfa/fxfa/cxfa_fffield.cpp
+++ b/xfa/fxfa/cxfa_fffield.cpp
@@ -10,7 +10,6 @@
 #include <utility>
 
 #include "core/fxge/render_defines.h"
-#include "third_party/base/ptr_util.h"
 #include "third_party/base/stl_util.h"
 #include "xfa/fwl/cfwl_edit.h"
 #include "xfa/fwl/cfwl_eventmouse.h"
@@ -389,7 +388,7 @@
   if (!GetNormalWidget())
     return false;
 
-  SendMessageToFWLWidget(pdfium::MakeUnique<CFWL_MessageMouse>(
+  SendMessageToFWLWidget(std::make_unique<CFWL_MessageMouse>(
       GetNormalWidget(), FWL_MouseCommand::Enter));
 
   return true;
@@ -402,7 +401,7 @@
   if (!GetNormalWidget())
     return false;
 
-  SendMessageToFWLWidget(pdfium::MakeUnique<CFWL_MessageMouse>(
+  SendMessageToFWLWidget(std::make_unique<CFWL_MessageMouse>(
       GetNormalWidget(), FWL_MouseCommand::Leave));
 
   return true;
@@ -432,7 +431,7 @@
   RetainPtr<CXFA_ContentLayoutItem> retainer(m_pLayoutItem.Get());
 
   SetButtonDown(true);
-  SendMessageToFWLWidget(pdfium::MakeUnique<CFWL_MessageMouse>(
+  SendMessageToFWLWidget(std::make_unique<CFWL_MessageMouse>(
       GetNormalWidget(), FWL_MouseCommand::LeftButtonDown, dwFlags,
       FWLToClient(point)));
 
@@ -449,7 +448,7 @@
     return false;
 
   SetButtonDown(false);
-  SendMessageToFWLWidget(pdfium::MakeUnique<CFWL_MessageMouse>(
+  SendMessageToFWLWidget(std::make_unique<CFWL_MessageMouse>(
       GetNormalWidget(), FWL_MouseCommand::LeftButtonUp, dwFlags,
       FWLToClient(point)));
 
@@ -463,7 +462,7 @@
   if (!GetNormalWidget())
     return false;
 
-  SendMessageToFWLWidget(pdfium::MakeUnique<CFWL_MessageMouse>(
+  SendMessageToFWLWidget(std::make_unique<CFWL_MessageMouse>(
       GetNormalWidget(), FWL_MouseCommand::LeftButtonDblClk, dwFlags,
       FWLToClient(point)));
 
@@ -477,7 +476,7 @@
   if (!GetNormalWidget())
     return false;
 
-  SendMessageToFWLWidget(pdfium::MakeUnique<CFWL_MessageMouse>(
+  SendMessageToFWLWidget(std::make_unique<CFWL_MessageMouse>(
       GetNormalWidget(), FWL_MouseCommand::Move, dwFlags, FWLToClient(point)));
 
   return true;
@@ -492,7 +491,7 @@
   if (!GetNormalWidget())
     return false;
 
-  SendMessageToFWLWidget(pdfium::MakeUnique<CFWL_MessageMouseWheel>(
+  SendMessageToFWLWidget(std::make_unique<CFWL_MessageMouseWheel>(
       GetNormalWidget(), FWLToClient(point), delta));
 
   return true;
@@ -503,7 +502,7 @@
   RetainPtr<CXFA_ContentLayoutItem> retainer(m_pLayoutItem.Get());
 
   SetButtonDown(true);
-  SendMessageToFWLWidget(pdfium::MakeUnique<CFWL_MessageMouse>(
+  SendMessageToFWLWidget(std::make_unique<CFWL_MessageMouse>(
       GetNormalWidget(), FWL_MouseCommand::RightButtonDown, dwFlags,
       FWLToClient(point)));
 
@@ -520,7 +519,7 @@
   RetainPtr<CXFA_ContentLayoutItem> retainer(m_pLayoutItem.Get());
 
   SetButtonDown(false);
-  SendMessageToFWLWidget(pdfium::MakeUnique<CFWL_MessageMouse>(
+  SendMessageToFWLWidget(std::make_unique<CFWL_MessageMouse>(
       GetNormalWidget(), FWL_MouseCommand::RightButtonUp, dwFlags,
       FWLToClient(point)));
 
@@ -534,7 +533,7 @@
   if (!GetNormalWidget())
     return false;
 
-  SendMessageToFWLWidget(pdfium::MakeUnique<CFWL_MessageMouse>(
+  SendMessageToFWLWidget(std::make_unique<CFWL_MessageMouse>(
       GetNormalWidget(), FWL_MouseCommand::RightButtonDblClk, dwFlags,
       FWLToClient(point)));
 
@@ -552,7 +551,7 @@
     return false;
 
   SendMessageToFWLWidget(
-      pdfium::MakeUnique<CFWL_MessageSetFocus>(nullptr, GetNormalWidget()));
+      std::make_unique<CFWL_MessageSetFocus>(nullptr, GetNormalWidget()));
   GetLayoutItem()->SetStatusBits(XFA_WidgetStatus_Focused);
   InvalidateRect();
 
@@ -566,7 +565,7 @@
   ObservedPtr<CXFA_FFWidget> pNewWatched(pNewWidget);
   if (GetNormalWidget()) {
     SendMessageToFWLWidget(
-        pdfium::MakeUnique<CFWL_MessageKillFocus>(nullptr, GetNormalWidget()));
+        std::make_unique<CFWL_MessageKillFocus>(nullptr, GetNormalWidget()));
     GetLayoutItem()->ClearStatusBits(XFA_WidgetStatus_Focused);
     InvalidateRect();
   }
@@ -580,7 +579,7 @@
   if (!GetNormalWidget() || !GetDoc()->GetXFADoc()->IsInteractive())
     return false;
 
-  SendMessageToFWLWidget(pdfium::MakeUnique<CFWL_MessageKey>(
+  SendMessageToFWLWidget(std::make_unique<CFWL_MessageKey>(
       GetNormalWidget(), FWL_KeyCommand::KeyDown, dwFlags, dwKeyCode));
 
   return true;
@@ -593,7 +592,7 @@
   if (!GetNormalWidget() || !GetDoc()->GetXFADoc()->IsInteractive())
     return false;
 
-  SendMessageToFWLWidget(pdfium::MakeUnique<CFWL_MessageKey>(
+  SendMessageToFWLWidget(std::make_unique<CFWL_MessageKey>(
       GetNormalWidget(), FWL_KeyCommand::KeyUp, dwFlags, dwKeyCode));
 
   return true;
@@ -612,7 +611,7 @@
   if (!m_pNode->IsOpenAccess())
     return false;
 
-  SendMessageToFWLWidget(pdfium::MakeUnique<CFWL_MessageKey>(
+  SendMessageToFWLWidget(std::make_unique<CFWL_MessageKey>(
       GetNormalWidget(), FWL_KeyCommand::Char, dwFlags, dwChar));
 
   return true;
diff --git a/xfa/fxfa/cxfa_ffimageedit.cpp b/xfa/fxfa/cxfa_ffimageedit.cpp
index 9d1615d..fa15c5d 100644
--- a/xfa/fxfa/cxfa_ffimageedit.cpp
+++ b/xfa/fxfa/cxfa_ffimageedit.cpp
@@ -6,10 +6,10 @@
 
 #include "xfa/fxfa/cxfa_ffimageedit.h"
 
+#include <memory>
 #include <utility>
 
 #include "core/fxge/dib/cfx_dibitmap.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fwl/cfwl_app.h"
 #include "xfa/fwl/cfwl_messagemouse.h"
 #include "xfa/fwl/cfwl_notedriver.h"
@@ -36,7 +36,7 @@
   // Prevents destruction of the CXFA_ContentLayoutItem that owns |this|.
   RetainPtr<CXFA_ContentLayoutItem> retain_layout(m_pLayoutItem.Get());
 
-  auto pNew = pdfium::MakeUnique<CFWL_PictureBox>(GetFWLApp());
+  auto pNew = std::make_unique<CFWL_PictureBox>(GetFWLApp());
   CFWL_PictureBox* pPictureBox = pNew.get();
   SetNormalWidget(std::move(pNew));
   pPictureBox->SetAdapterIface(this);
@@ -110,7 +110,7 @@
   RetainPtr<CXFA_ContentLayoutItem> retainer(m_pLayoutItem.Get());
 
   SetButtonDown(true);
-  SendMessageToFWLWidget(pdfium::MakeUnique<CFWL_MessageMouse>(
+  SendMessageToFWLWidget(std::make_unique<CFWL_MessageMouse>(
       GetNormalWidget(), FWL_MouseCommand::LeftButtonDown, dwFlags,
       FWLToClient(point)));
 
diff --git a/xfa/fxfa/cxfa_fflistbox.cpp b/xfa/fxfa/cxfa_fflistbox.cpp
index dd2fa3d..76a28c6 100644
--- a/xfa/fxfa/cxfa_fflistbox.cpp
+++ b/xfa/fxfa/cxfa_fflistbox.cpp
@@ -7,10 +7,10 @@
 #include "xfa/fxfa/cxfa_fflistbox.h"
 
 #include <algorithm>
+#include <memory>
 #include <utility>
 #include <vector>
 
-#include "third_party/base/ptr_util.h"
 #include "third_party/base/stl_util.h"
 #include "xfa/fwl/cfwl_listbox.h"
 #include "xfa/fwl/cfwl_notedriver.h"
@@ -43,8 +43,8 @@
   // Prevents destruction of the CXFA_ContentLayoutItem that owns |this|.
   RetainPtr<CXFA_ContentLayoutItem> retain_layout(m_pLayoutItem.Get());
 
-  auto pNew = pdfium::MakeUnique<CFWL_ListBox>(
-      GetFWLApp(), pdfium::MakeUnique<CFWL_WidgetProperties>(), nullptr);
+  auto pNew = std::make_unique<CFWL_ListBox>(
+      GetFWLApp(), std::make_unique<CFWL_WidgetProperties>(), nullptr);
   CFWL_ListBox* pListBox = pNew.get();
   pListBox->ModifyStyles(FWL_WGTSTYLE_VScroll | FWL_WGTSTYLE_NoBackground,
                          0xFFFFFFFF);
diff --git a/xfa/fxfa/cxfa_ffnotify.cpp b/xfa/fxfa/cxfa_ffnotify.cpp
index fc70e6b..28786d1 100644
--- a/xfa/fxfa/cxfa_ffnotify.cpp
+++ b/xfa/fxfa/cxfa_ffnotify.cpp
@@ -8,7 +8,6 @@
 
 #include <utility>
 
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/cxfa_ffapp.h"
 #include "xfa/fxfa/cxfa_ffarc.h"
 #include "xfa/fxfa/cxfa_ffbarcode.h"
@@ -85,8 +84,7 @@
     return nullptr;
 
   auto* pLayout = CXFA_LayoutProcessor::FromDocument(m_pDoc->GetXFADoc());
-  return pdfium::MakeUnique<CXFA_FFPageView>(m_pDoc->GetDocView(pLayout),
-                                             pNode);
+  return std::make_unique<CXFA_FFPageView>(m_pDoc->GetDocView(pLayout), pNode);
 }
 
 std::unique_ptr<CXFA_FFWidget> CXFA_FFNotify::OnCreateContentLayoutItem(
@@ -105,7 +103,7 @@
       if (child->GetElementType() != XFA_Element::Barcode)
         return nullptr;
 
-      pWidget = pdfium::MakeUnique<CXFA_FFBarcode>(
+      pWidget = std::make_unique<CXFA_FFBarcode>(
           pNode, static_cast<CXFA_Barcode*>(child));
       break;
     }
@@ -114,7 +112,7 @@
       if (child->GetElementType() != XFA_Element::Button)
         return nullptr;
 
-      pWidget = pdfium::MakeUnique<CXFA_FFPushButton>(
+      pWidget = std::make_unique<CXFA_FFPushButton>(
           pNode, static_cast<CXFA_Button*>(child));
       break;
     }
@@ -123,61 +121,61 @@
       if (child->GetElementType() != XFA_Element::CheckButton)
         return nullptr;
 
-      pWidget = pdfium::MakeUnique<CXFA_FFCheckButton>(
+      pWidget = std::make_unique<CXFA_FFCheckButton>(
           pNode, static_cast<CXFA_CheckButton*>(child));
       break;
     }
     case XFA_FFWidgetType::kChoiceList: {
       if (pNode->IsListBox())
-        pWidget = pdfium::MakeUnique<CXFA_FFListBox>(pNode);
+        pWidget = std::make_unique<CXFA_FFListBox>(pNode);
       else
-        pWidget = pdfium::MakeUnique<CXFA_FFComboBox>(pNode);
+        pWidget = std::make_unique<CXFA_FFComboBox>(pNode);
       break;
     }
     case XFA_FFWidgetType::kDateTimeEdit:
-      pWidget = pdfium::MakeUnique<CXFA_FFDateTimeEdit>(pNode);
+      pWidget = std::make_unique<CXFA_FFDateTimeEdit>(pNode);
       break;
     case XFA_FFWidgetType::kImageEdit:
-      pWidget = pdfium::MakeUnique<CXFA_FFImageEdit>(pNode);
+      pWidget = std::make_unique<CXFA_FFImageEdit>(pNode);
       break;
     case XFA_FFWidgetType::kNumericEdit:
-      pWidget = pdfium::MakeUnique<CXFA_FFNumericEdit>(pNode);
+      pWidget = std::make_unique<CXFA_FFNumericEdit>(pNode);
       break;
     case XFA_FFWidgetType::kPasswordEdit: {
       CXFA_Node* child = pNode->GetUIChildNode();
       if (child->GetElementType() != XFA_Element::PasswordEdit)
         return nullptr;
 
-      pWidget = pdfium::MakeUnique<CXFA_FFPasswordEdit>(
+      pWidget = std::make_unique<CXFA_FFPasswordEdit>(
           pNode, static_cast<CXFA_PasswordEdit*>(child));
       break;
     }
     case XFA_FFWidgetType::kSignature:
-      pWidget = pdfium::MakeUnique<CXFA_FFSignature>(pNode);
+      pWidget = std::make_unique<CXFA_FFSignature>(pNode);
       break;
     case XFA_FFWidgetType::kTextEdit:
-      pWidget = pdfium::MakeUnique<CXFA_FFTextEdit>(pNode);
+      pWidget = std::make_unique<CXFA_FFTextEdit>(pNode);
       break;
     case XFA_FFWidgetType::kArc:
-      pWidget = pdfium::MakeUnique<CXFA_FFArc>(pNode);
+      pWidget = std::make_unique<CXFA_FFArc>(pNode);
       break;
     case XFA_FFWidgetType::kLine:
-      pWidget = pdfium::MakeUnique<CXFA_FFLine>(pNode);
+      pWidget = std::make_unique<CXFA_FFLine>(pNode);
       break;
     case XFA_FFWidgetType::kRectangle:
-      pWidget = pdfium::MakeUnique<CXFA_FFRectangle>(pNode);
+      pWidget = std::make_unique<CXFA_FFRectangle>(pNode);
       break;
     case XFA_FFWidgetType::kText:
-      pWidget = pdfium::MakeUnique<CXFA_FFText>(pNode);
+      pWidget = std::make_unique<CXFA_FFText>(pNode);
       break;
     case XFA_FFWidgetType::kImage:
-      pWidget = pdfium::MakeUnique<CXFA_FFImage>(pNode);
+      pWidget = std::make_unique<CXFA_FFImage>(pNode);
       break;
     case XFA_FFWidgetType::kSubform:
-      pWidget = pdfium::MakeUnique<CXFA_FFWidget>(pNode);
+      pWidget = std::make_unique<CXFA_FFWidget>(pNode);
       break;
     case XFA_FFWidgetType::kExclGroup:
-      pWidget = pdfium::MakeUnique<CXFA_FFExclGroup>(pNode);
+      pWidget = std::make_unique<CXFA_FFExclGroup>(pNode);
       break;
     case XFA_FFWidgetType::kNone:
       return nullptr;
diff --git a/xfa/fxfa/cxfa_ffnumericedit.cpp b/xfa/fxfa/cxfa_ffnumericedit.cpp
index bade8ee..dae089c 100644
--- a/xfa/fxfa/cxfa_ffnumericedit.cpp
+++ b/xfa/fxfa/cxfa_ffnumericedit.cpp
@@ -6,9 +6,9 @@
 
 #include "xfa/fxfa/cxfa_ffnumericedit.h"
 
+#include <memory>
 #include <utility>
 
-#include "third_party/base/ptr_util.h"
 #include "xfa/fwl/cfwl_edit.h"
 #include "xfa/fwl/cfwl_eventvalidate.h"
 #include "xfa/fwl/cfwl_notedriver.h"
@@ -28,8 +28,8 @@
   // Prevents destruction of the CXFA_ContentLayoutItem that owns |this|.
   RetainPtr<CXFA_ContentLayoutItem> retain_layout(m_pLayoutItem.Get());
 
-  auto pNewEdit = pdfium::MakeUnique<CFWL_Edit>(
-      GetFWLApp(), pdfium::MakeUnique<CFWL_WidgetProperties>(), nullptr);
+  auto pNewEdit = std::make_unique<CFWL_Edit>(
+      GetFWLApp(), std::make_unique<CFWL_WidgetProperties>(), nullptr);
   CFWL_Edit* pWidget = pNewEdit.get();
   SetNormalWidget(std::move(pNewEdit));
   pWidget->SetAdapterIface(this);
diff --git a/xfa/fxfa/cxfa_ffpageview.cpp b/xfa/fxfa/cxfa_ffpageview.cpp
index f8b6c1c..a9d7892 100644
--- a/xfa/fxfa/cxfa_ffpageview.cpp
+++ b/xfa/fxfa/cxfa_ffpageview.cpp
@@ -11,7 +11,6 @@
 #include <vector>
 
 #include "fxjs/xfa/cjx_object.h"
-#include "third_party/base/ptr_util.h"
 #include "third_party/base/stl_util.h"
 #include "xfa/fxfa/cxfa_ffcheckbutton.h"
 #include "xfa/fxfa/cxfa_ffdoc.h"
@@ -143,13 +142,13 @@
 
 std::unique_ptr<IXFA_WidgetIterator> CXFA_FFPageView::CreateFormWidgetIterator(
     uint32_t dwWidgetFilter) {
-  return pdfium::MakeUnique<CXFA_FFPageWidgetIterator>(this, dwWidgetFilter);
+  return std::make_unique<CXFA_FFPageWidgetIterator>(this, dwWidgetFilter);
 }
 
 std::unique_ptr<IXFA_WidgetIterator>
 CXFA_FFPageView::CreateTraverseWidgetIterator(uint32_t dwWidgetFilter) {
-  return pdfium::MakeUnique<CXFA_FFTabOrderPageWidgetIterator>(this,
-                                                               dwWidgetFilter);
+  return std::make_unique<CXFA_FFTabOrderPageWidgetIterator>(this,
+                                                             dwWidgetFilter);
 }
 
 CXFA_FFPageWidgetIterator::CXFA_FFPageWidgetIterator(CXFA_FFPageView* pPageView,
@@ -415,7 +414,7 @@
         *bCurrentItem = true;
         break;
       }
-      tabParams.push_back(pdfium::MakeUnique<CXFA_TabParam>(hWidget));
+      tabParams.push_back(std::make_unique<CXFA_TabParam>(hWidget));
       if (IsLayoutElement(pSearchItem->GetFormNode()->GetElementType(), true)) {
         OrderContainer(sIterator, pSearchItem, tabParams.back().get(),
                        bCurrentItem, bContentArea, bMasterPage);
@@ -444,7 +443,7 @@
 void CXFA_FFTabOrderPageWidgetIterator::CreateSpaceOrderWidgetArray(
     std::vector<CXFA_FFWidget*>* WidgetArray) {
   CXFA_LayoutItemIterator sIterator(m_pPageView->GetLayoutItem());
-  auto pParam = pdfium::MakeUnique<CXFA_TabParam>(nullptr);
+  auto pParam = std::make_unique<CXFA_TabParam>(nullptr);
   bool bCurrentItem = false;
   bool bContentArea = false;
   OrderContainer(&sIterator, nullptr, pParam.get(), &bCurrentItem,
diff --git a/xfa/fxfa/cxfa_ffpasswordedit.cpp b/xfa/fxfa/cxfa_ffpasswordedit.cpp
index db95516..b0ece33 100644
--- a/xfa/fxfa/cxfa_ffpasswordedit.cpp
+++ b/xfa/fxfa/cxfa_ffpasswordedit.cpp
@@ -6,9 +6,9 @@
 
 #include "xfa/fxfa/cxfa_ffpasswordedit.h"
 
+#include <memory>
 #include <utility>
 
-#include "third_party/base/ptr_util.h"
 #include "xfa/fwl/cfwl_edit.h"
 #include "xfa/fwl/cfwl_notedriver.h"
 #include "xfa/fxfa/cxfa_ffdoc.h"
@@ -27,8 +27,8 @@
   // Prevents destruction of the CXFA_ContentLayoutItem that owns |this|.
   RetainPtr<CXFA_ContentLayoutItem> retain_layout(m_pLayoutItem.Get());
 
-  auto pNewEdit = pdfium::MakeUnique<CFWL_Edit>(
-      GetFWLApp(), pdfium::MakeUnique<CFWL_WidgetProperties>(), nullptr);
+  auto pNewEdit = std::make_unique<CFWL_Edit>(
+      GetFWLApp(), std::make_unique<CFWL_WidgetProperties>(), nullptr);
   CFWL_Edit* pWidget = pNewEdit.get();
   SetNormalWidget(std::move(pNewEdit));
   pWidget->SetAdapterIface(this);
diff --git a/xfa/fxfa/cxfa_ffpushbutton.cpp b/xfa/fxfa/cxfa_ffpushbutton.cpp
index 96eefc8..50b6e87 100644
--- a/xfa/fxfa/cxfa_ffpushbutton.cpp
+++ b/xfa/fxfa/cxfa_ffpushbutton.cpp
@@ -9,7 +9,6 @@
 #include <utility>
 
 #include "core/fxge/render_defines.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fwl/cfwl_notedriver.h"
 #include "xfa/fwl/cfwl_pushbutton.h"
 #include "xfa/fwl/cfwl_widgetmgr.h"
@@ -55,7 +54,7 @@
   // Prevents destruction of the CXFA_ContentLayoutItem that owns |this|.
   RetainPtr<CXFA_ContentLayoutItem> retain_layout(m_pLayoutItem.Get());
 
-  auto pNew = pdfium::MakeUnique<CFWL_PushButton>(GetFWLApp());
+  auto pNew = std::make_unique<CFWL_PushButton>(GetFWLApp());
   CFWL_PushButton* pPushButton = pNew.get();
   m_pOldDelegate = pPushButton->GetDelegate();
   pPushButton->SetDelegate(this);
@@ -138,20 +137,20 @@
 
   if (m_pNode->HasButtonRollover()) {
     if (!m_pRollProvider) {
-      m_pRollProvider = pdfium::MakeUnique<CXFA_TextProvider>(
+      m_pRollProvider = std::make_unique<CXFA_TextProvider>(
           m_pNode.Get(), XFA_TEXTPROVIDERTYPE_Rollover);
     }
     m_pRolloverTextLayout =
-        pdfium::MakeUnique<CXFA_TextLayout>(GetDoc(), m_pRollProvider.get());
+        std::make_unique<CXFA_TextLayout>(GetDoc(), m_pRollProvider.get());
   }
 
   if (m_pNode->HasButtonDown()) {
     if (!m_pDownProvider) {
-      m_pDownProvider = pdfium::MakeUnique<CXFA_TextProvider>(
+      m_pDownProvider = std::make_unique<CXFA_TextProvider>(
           m_pNode.Get(), XFA_TEXTPROVIDERTYPE_Down);
     }
     m_pDownTextLayout =
-        pdfium::MakeUnique<CXFA_TextLayout>(GetDoc(), m_pDownProvider.get());
+        std::make_unique<CXFA_TextLayout>(GetDoc(), m_pDownProvider.get());
   }
 }
 
diff --git a/xfa/fxfa/cxfa_fftextedit.cpp b/xfa/fxfa/cxfa_fftextedit.cpp
index 3c6b0fc..c2833b8 100644
--- a/xfa/fxfa/cxfa_fftextedit.cpp
+++ b/xfa/fxfa/cxfa_fftextedit.cpp
@@ -6,9 +6,9 @@
 
 #include "xfa/fxfa/cxfa_fftextedit.h"
 
+#include <memory>
 #include <utility>
 
-#include "third_party/base/ptr_util.h"
 #include "xfa/fwl/cfwl_datetimepicker.h"
 #include "xfa/fwl/cfwl_edit.h"
 #include "xfa/fwl/cfwl_eventtarget.h"
@@ -48,8 +48,8 @@
   // Prevents destruction of the CXFA_ContentLayoutItem that owns |this|.
   RetainPtr<CXFA_ContentLayoutItem> retain_layout(m_pLayoutItem.Get());
 
-  auto pNewWidget = pdfium::MakeUnique<CFWL_Edit>(
-      GetFWLApp(), pdfium::MakeUnique<CFWL_WidgetProperties>(), nullptr);
+  auto pNewWidget = std::make_unique<CFWL_Edit>(
+      GetFWLApp(), std::make_unique<CFWL_WidgetProperties>(), nullptr);
   CFWL_Edit* pFWLEdit = pNewWidget.get();
   SetNormalWidget(std::move(pNewWidget));
   pFWLEdit->SetAdapterIface(this);
@@ -134,7 +134,7 @@
     InvalidateRect();
   }
   SetButtonDown(true);
-  SendMessageToFWLWidget(pdfium::MakeUnique<CFWL_MessageMouse>(
+  SendMessageToFWLWidget(std::make_unique<CFWL_MessageMouse>(
       GetNormalWidget(), FWL_MouseCommand::LeftButtonDown, dwFlags,
       FWLToClient(point)));
 
@@ -151,7 +151,7 @@
     InvalidateRect();
   }
   SetButtonDown(true);
-  SendMessageToFWLWidget(pdfium::MakeUnique<CFWL_MessageMouse>(
+  SendMessageToFWLWidget(std::make_unique<CFWL_MessageMouse>(
       nullptr, FWL_MouseCommand::RightButtonDown, dwFlags, FWLToClient(point)));
 
   return true;
@@ -183,7 +183,7 @@
     return false;
 
   SendMessageToFWLWidget(
-      pdfium::MakeUnique<CFWL_MessageSetFocus>(nullptr, GetNormalWidget()));
+      std::make_unique<CFWL_MessageSetFocus>(nullptr, GetNormalWidget()));
 
   return true;
 }
@@ -194,7 +194,7 @@
 
   ObservedPtr<CXFA_FFWidget> pNewWatched(pNewWidget);
   SendMessageToFWLWidget(
-      pdfium::MakeUnique<CFWL_MessageKillFocus>(nullptr, GetNormalWidget()));
+      std::make_unique<CFWL_MessageKillFocus>(nullptr, GetNormalWidget()));
 
   GetLayoutItem()->ClearStatusBits(XFA_WidgetStatus_Focused);
   SetEditScrollOffset();
diff --git a/xfa/fxfa/cxfa_ffwidget.cpp b/xfa/fxfa/cxfa_ffwidget.cpp
index 47086e0..a868f6f 100644
--- a/xfa/fxfa/cxfa_ffwidget.cpp
+++ b/xfa/fxfa/cxfa_ffwidget.cpp
@@ -18,7 +18,6 @@
 #include "core/fxge/cfx_pathdata.h"
 #include "core/fxge/cfx_renderdevice.h"
 #include "core/fxge/dib/cfx_dibitmap.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fwl/fwl_widgethit.h"
 #include "xfa/fxfa/cxfa_eventparam.h"
 #include "xfa/fxfa/cxfa_ffapp.h"
@@ -156,7 +155,7 @@
     FXCODEC_IMAGE_TYPE type,
     int32_t& iImageXDpi,
     int32_t& iImageYDpi) {
-  auto pProgressiveDecoder = pdfium::MakeUnique<ProgressiveDecoder>();
+  auto pProgressiveDecoder = std::make_unique<ProgressiveDecoder>();
 
   CFX_DIBAttribute dibAttr;
   pProgressiveDecoder->LoadImageInfo(pImageFileRead, type, &dibAttr, false);
diff --git a/xfa/fxfa/cxfa_fwltheme.cpp b/xfa/fxfa/cxfa_fwltheme.cpp
index a638852..5139b80 100644
--- a/xfa/fxfa/cxfa_fwltheme.cpp
+++ b/xfa/fxfa/cxfa_fwltheme.cpp
@@ -7,7 +7,6 @@
 #include "xfa/fxfa/cxfa_fwltheme.h"
 
 #include "core/fxcrt/fx_codepage.h"
-#include "third_party/base/ptr_util.h"
 #include "third_party/base/stl_util.h"
 #include "xfa/fde/cfde_textout.h"
 #include "xfa/fgas/font/cfgas_gefont.h"
@@ -47,20 +46,19 @@
 }  // namespace
 
 CXFA_FWLTheme::CXFA_FWLTheme(CXFA_FFApp* pApp)
-    : m_pCheckBoxTP(pdfium::MakeUnique<CFWL_CheckBoxTP>()),
-      m_pListBoxTP(pdfium::MakeUnique<CFWL_ListBoxTP>()),
-      m_pPictureBoxTP(pdfium::MakeUnique<CFWL_PictureBoxTP>()),
-      m_pSrollBarTP(pdfium::MakeUnique<CFWL_ScrollBarTP>()),
-      m_pEditTP(pdfium::MakeUnique<CFWL_EditTP>()),
-      m_pComboBoxTP(pdfium::MakeUnique<CFWL_ComboBoxTP>()),
-      m_pMonthCalendarTP(pdfium::MakeUnique<CFWL_MonthCalendarTP>()),
-      m_pDateTimePickerTP(pdfium::MakeUnique<CFWL_DateTimePickerTP>()),
-      m_pPushButtonTP(pdfium::MakeUnique<CFWL_PushButtonTP>()),
-      m_pCaretTP(pdfium::MakeUnique<CFWL_CaretTP>()),
-      m_pBarcodeTP(pdfium::MakeUnique<CFWL_BarcodeTP>()),
-      m_pTextOut(pdfium::MakeUnique<CFDE_TextOut>()),
-      m_pApp(pApp) {
-}
+    : m_pCheckBoxTP(std::make_unique<CFWL_CheckBoxTP>()),
+      m_pListBoxTP(std::make_unique<CFWL_ListBoxTP>()),
+      m_pPictureBoxTP(std::make_unique<CFWL_PictureBoxTP>()),
+      m_pSrollBarTP(std::make_unique<CFWL_ScrollBarTP>()),
+      m_pEditTP(std::make_unique<CFWL_EditTP>()),
+      m_pComboBoxTP(std::make_unique<CFWL_ComboBoxTP>()),
+      m_pMonthCalendarTP(std::make_unique<CFWL_MonthCalendarTP>()),
+      m_pDateTimePickerTP(std::make_unique<CFWL_DateTimePickerTP>()),
+      m_pPushButtonTP(std::make_unique<CFWL_PushButtonTP>()),
+      m_pCaretTP(std::make_unique<CFWL_CaretTP>()),
+      m_pBarcodeTP(std::make_unique<CFWL_BarcodeTP>()),
+      m_pTextOut(std::make_unique<CFDE_TextOut>()),
+      m_pApp(pApp) {}
 
 bool CXFA_FWLTheme::LoadCalendarFont(CXFA_FFDoc* doc) {
   for (size_t i = 0; !m_pCalendarFont && i < pdfium::size(g_FWLTheme_CalFonts);
diff --git a/xfa/fxfa/cxfa_imagerenderer.cpp b/xfa/fxfa/cxfa_imagerenderer.cpp
index d3b66c8..e2a04aa 100644
--- a/xfa/fxfa/cxfa_imagerenderer.cpp
+++ b/xfa/fxfa/cxfa_imagerenderer.cpp
@@ -11,7 +11,6 @@
 #include "core/fxge/dib/cfx_dibitmap.h"
 #include "core/fxge/dib/cfx_imagerenderer.h"
 #include "core/fxge/dib/cfx_imagetransformer.h"
-#include "third_party/base/ptr_util.h"
 
 CXFA_ImageRenderer::CXFA_ImageRenderer(CFX_RenderDevice* pDevice,
                                        const RetainPtr<CFX_DIBBase>& pDIBBase,
@@ -50,8 +49,8 @@
     FX_RECT clip_box = m_pDevice->GetClipBox();
     clip_box.Intersect(image_rect);
     m_Status = 2;
-    m_pTransformer = pdfium::MakeUnique<CFX_ImageTransformer>(
-        pDib, m_ImageMatrix, options, &clip_box);
+    m_pTransformer = std::make_unique<CFX_ImageTransformer>(pDib, m_ImageMatrix,
+                                                            options, &clip_box);
     return true;
   }
   if (m_ImageMatrix.a < 0)
diff --git a/xfa/fxfa/cxfa_textlayout.cpp b/xfa/fxfa/cxfa_textlayout.cpp
index f10d706..feef744 100644
--- a/xfa/fxfa/cxfa_textlayout.cpp
+++ b/xfa/fxfa/cxfa_textlayout.cpp
@@ -19,7 +19,6 @@
 #include "core/fxge/cfx_renderdevice.h"
 #include "core/fxge/text_char_pos.h"
 #include "fxjs/xfa/cjx_object.h"
-#include "third_party/base/ptr_util.h"
 #include "third_party/base/stl_util.h"
 #include "xfa/fde/cfde_textout.h"
 #include "xfa/fgas/font/cfgas_gefont.h"
@@ -115,7 +114,7 @@
   if (!bDefault)
     dwStyle |= FX_LAYOUTSTYLE_Pagination;
 
-  auto pBreak = pdfium::MakeUnique<CFX_RTFBreak>(dwStyle);
+  auto pBreak = std::make_unique<CFX_RTFBreak>(dwStyle);
   pBreak->SetLineBreakTolerance(1);
   pBreak->SetFont(m_textParser.GetFont(m_pDoc.Get(), m_pTextProvider, nullptr));
   pBreak->SetFontSize(m_textParser.GetFontSize(m_pTextProvider, nullptr));
@@ -252,7 +251,7 @@
     m_pBreak->SetLineStartPos(fStart);
     m_pBreak->SetTabWidth(m_textParser.GetTabInterval(pStyle));
     if (!m_pTabstopContext)
-      m_pTabstopContext = pdfium::MakeUnique<CXFA_TextTabstopsContext>();
+      m_pTabstopContext = std::make_unique<CXFA_TextTabstopsContext>();
     m_textParser.GetTabstops(pStyle, m_pTabstopContext.get());
     for (const auto& stop : m_pTabstopContext->m_tabstops)
       m_pBreak->AddPositionedTab(stop.fTabstops);
@@ -292,7 +291,7 @@
 
 float CXFA_TextLayout::StartLayout(float fWidth) {
   if (!m_pLoader)
-    m_pLoader = pdfium::MakeUnique<CXFA_LoaderContext>();
+    m_pLoader = std::make_unique<CXFA_LoaderContext>();
 
   if (fWidth < 0 ||
       (m_pLoader->fWidth > -1 && fabs(fWidth - m_pLoader->fWidth) > 0)) {
@@ -986,7 +985,7 @@
 
   RetainPtr<CFX_CSSComputedStyle> pStyle;
   if (bSavePieces) {
-    auto pNew = pdfium::MakeUnique<CXFA_PieceLine>();
+    auto pNew = std::make_unique<CXFA_PieceLine>();
     CXFA_PieceLine* pPieceLine = pNew.get();
     m_pieceLines.push_back(std::move(pNew));
     if (m_pTabstopContext)
@@ -1001,7 +1000,7 @@
         pStyle = pUserData->m_pStyle;
       float fVerScale = pPiece->m_iVerticalScale / 100.0f;
 
-      auto pTP = pdfium::MakeUnique<CXFA_TextPiece>();
+      auto pTP = std::make_unique<CXFA_TextPiece>();
       pTP->iChars = pPiece->m_iCharCount;
       pTP->szText = pPiece->GetString();
       pTP->Widths = pPiece->GetWidths();
diff --git a/xfa/fxfa/cxfa_textparser.cpp b/xfa/fxfa/cxfa_textparser.cpp
index 2423088..483ffa2 100644
--- a/xfa/fxfa/cxfa_textparser.cpp
+++ b/xfa/fxfa/cxfa_textparser.cpp
@@ -18,7 +18,6 @@
 #include "core/fxcrt/xml/cfx_xmlelement.h"
 #include "core/fxcrt/xml/cfx_xmlnode.h"
 #include "core/fxge/fx_font.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fgas/font/cfgas_fontmgr.h"
 #include "xfa/fgas/font/cfgas_gefont.h"
 #include "xfa/fxfa/cxfa_ffapp.h"
@@ -72,7 +71,7 @@
     return;
 
   if (!m_pSelector) {
-    m_pSelector = pdfium::MakeUnique<CFX_CSSStyleSelector>();
+    m_pSelector = std::make_unique<CFX_CSSStyleSelector>();
 
     CXFA_Font* font = pTextProvider->GetFontIfExists();
     m_pSelector->SetDefFontSize(font ? font->GetFontSize() : 10.0f);
@@ -99,7 +98,7 @@
       "sup{vertical-align:+15em;font-size:.66em}"
       "sub{vertical-align:-15em;font-size:.66em}";
   WideString ws = WideString::FromASCII(kStyle);
-  auto sheet = pdfium::MakeUnique<CFX_CSSStyleSheet>();
+  auto sheet = std::make_unique<CFX_CSSStyleSheet>();
   if (!sheet->LoadBuffer(ws.AsStringView()))
     return nullptr;
 
@@ -242,7 +241,7 @@
   RetainPtr<CFX_CSSComputedStyle> pNewStyle;
   if (!(tagProvider->GetTagName().EqualsASCII("body") &&
         tagProvider->GetTagName().EqualsASCII("html"))) {
-    auto pTextContext = pdfium::MakeUnique<CXFA_TextParseContext>();
+    auto pTextContext = std::make_unique<CXFA_TextParseContext>();
     CFX_CSSDisplay eDisplay = CFX_CSSDisplay::Inline;
     if (!tagProvider->m_bContent) {
       auto declArray =
@@ -290,7 +289,7 @@
 // static
 std::unique_ptr<CXFA_TextParser::TagProvider> CXFA_TextParser::ParseTagInfo(
     const CFX_XMLNode* pXMLNode) {
-  auto tagProvider = pdfium::MakeUnique<TagProvider>();
+  auto tagProvider = std::make_unique<TagProvider>();
   const CFX_XMLElement* pXMLElement = ToXMLElement(pXMLNode);
   if (pXMLElement) {
     WideString wsName = pXMLElement->GetLocalTagName();
diff --git a/xfa/fxfa/fm2js/cxfa_fmexpression_unittest.cpp b/xfa/fxfa/fm2js/cxfa_fmexpression_unittest.cpp
index 9d1a64c..70e87b1 100644
--- a/xfa/fxfa/fm2js/cxfa_fmexpression_unittest.cpp
+++ b/xfa/fxfa/fm2js/cxfa_fmexpression_unittest.cpp
@@ -10,7 +10,6 @@
 #include "core/fxcrt/cfx_widetextbuf.h"
 #include "core/fxcrt/fx_string.h"
 #include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/fm2js/cxfa_fmtojavascriptdepth.h"
 
 TEST(CXFA_FMExpressionTest, VarExpressionInitNull) {
@@ -29,7 +28,7 @@
   CXFA_FMToJavaScriptDepth::Reset();
   CFX_WideTextBuf accumulator;
 
-  auto init = pdfium::MakeUnique<CXFA_FMStringExpression>(LR"("")");
+  auto init = std::make_unique<CXFA_FMStringExpression>(LR"("")");
   CXFA_FMVarExpression(L"s", std::move(init))
       .ToJavaScript(&accumulator, ReturnType::kInfered);
   EXPECT_STREQ(
@@ -43,7 +42,7 @@
   CXFA_FMToJavaScriptDepth::Reset();
   CFX_WideTextBuf accumulator;
 
-  auto init = pdfium::MakeUnique<CXFA_FMStringExpression>(LR"("foo")");
+  auto init = std::make_unique<CXFA_FMStringExpression>(LR"("foo")");
   CXFA_FMVarExpression(L"s", std::move(init))
       .ToJavaScript(&accumulator, ReturnType::kInfered);
   EXPECT_STREQ(
@@ -57,7 +56,7 @@
   CXFA_FMToJavaScriptDepth::Reset();
   CFX_WideTextBuf accumulator;
 
-  auto init = pdfium::MakeUnique<CXFA_FMNumberExpression>(L"112");
+  auto init = std::make_unique<CXFA_FMNumberExpression>(L"112");
   CXFA_FMVarExpression(L"s", std::move(init))
       .ToJavaScript(&accumulator, ReturnType::kInfered);
   EXPECT_STREQ(
diff --git a/xfa/fxfa/fm2js/cxfa_fmlexer_unittest.cpp b/xfa/fxfa/fm2js/cxfa_fmlexer_unittest.cpp
index 05e22f7..0b3003d 100644
--- a/xfa/fxfa/fm2js/cxfa_fmlexer_unittest.cpp
+++ b/xfa/fxfa/fm2js/cxfa_fmlexer_unittest.cpp
@@ -4,10 +4,10 @@
 
 #include "xfa/fxfa/fm2js/cxfa_fmlexer.h"
 
+#include <memory>
 #include <vector>
 
 #include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/base/ptr_util.h"
 #include "third_party/base/stl_util.h"
 
 TEST(CXFA_FMLexerTest, NullString) {
@@ -26,7 +26,7 @@
 }
 
 TEST(CXFA_FMLexerTest, Numbers) {
-  auto lexer = pdfium::MakeUnique<CXFA_FMLexer>(L"-12");
+  auto lexer = std::make_unique<CXFA_FMLexer>(L"-12");
   CXFA_FMToken token = lexer->NextToken();
   // TODO(dsinclair): Should this return -12 instead of two tokens?
   EXPECT_EQ(TOKminus, token.m_type);
@@ -35,34 +35,34 @@
   token = lexer->NextToken();
   EXPECT_EQ(TOKeof, token.m_type);
 
-  lexer = pdfium::MakeUnique<CXFA_FMLexer>(L"1.5362");
+  lexer = std::make_unique<CXFA_FMLexer>(L"1.5362");
   token = lexer->NextToken();
   EXPECT_EQ(TOKnumber, token.m_type);
   EXPECT_EQ(L"1.5362", token.m_string);
 
-  lexer = pdfium::MakeUnique<CXFA_FMLexer>(L"0.875");
+  lexer = std::make_unique<CXFA_FMLexer>(L"0.875");
   token = lexer->NextToken();
   EXPECT_EQ(TOKnumber, token.m_type);
   EXPECT_EQ(L"0.875", token.m_string);
 
-  lexer = pdfium::MakeUnique<CXFA_FMLexer>(L"5.56e-2");
+  lexer = std::make_unique<CXFA_FMLexer>(L"5.56e-2");
   token = lexer->NextToken();
   EXPECT_EQ(TOKnumber, token.m_type);
   EXPECT_EQ(L"5.56e-2", token.m_string);
 
-  lexer = pdfium::MakeUnique<CXFA_FMLexer>(L"1.234E10");
+  lexer = std::make_unique<CXFA_FMLexer>(L"1.234E10");
   token = lexer->NextToken();
   EXPECT_EQ(TOKnumber, token.m_type);
   EXPECT_EQ(L"1.234E10", token.m_string);
 
-  lexer = pdfium::MakeUnique<CXFA_FMLexer>(L"123456789.012345678");
+  lexer = std::make_unique<CXFA_FMLexer>(L"123456789.012345678");
   token = lexer->NextToken();
   EXPECT_EQ(TOKnumber, token.m_type);
   // TODO(dsinclair): This should round as per IEEE 64-bit values.
   // EXPECT_EQ(L"123456789.01234567", token.m_string);
   EXPECT_EQ(L"123456789.012345678", token.m_string);
 
-  lexer = pdfium::MakeUnique<CXFA_FMLexer>(L"99999999999999999");
+  lexer = std::make_unique<CXFA_FMLexer>(L"99999999999999999");
   token = lexer->NextToken();
   EXPECT_EQ(TOKnumber, token.m_type);
   // TODO(dsinclair): This is spec'd as rounding when > 16 significant digits
@@ -75,7 +75,7 @@
 // The quotes are stripped in CXFA_FMStringExpression::ToJavaScript.
 TEST(CXFA_FMLexerTest, Strings) {
   auto lexer =
-      pdfium::MakeUnique<CXFA_FMLexer>(L"\"The cat jumped over the fence.\"");
+      std::make_unique<CXFA_FMLexer>(L"\"The cat jumped over the fence.\"");
   CXFA_FMToken token = lexer->NextToken();
   EXPECT_EQ(TOKstring, token.m_type);
   EXPECT_EQ(L"\"The cat jumped over the fence.\"", token.m_string);
@@ -83,19 +83,19 @@
   token = lexer->NextToken();
   EXPECT_EQ(TOKeof, token.m_type);
 
-  lexer = pdfium::MakeUnique<CXFA_FMLexer>(L"\"\"");
+  lexer = std::make_unique<CXFA_FMLexer>(L"\"\"");
   token = lexer->NextToken();
   EXPECT_EQ(TOKstring, token.m_type);
   EXPECT_EQ(L"\"\"", token.m_string);
 
-  lexer = pdfium::MakeUnique<CXFA_FMLexer>(
+  lexer = std::make_unique<CXFA_FMLexer>(
       L"\"The message reads: \"\"Warning: Insufficient Memory\"\"\"");
   token = lexer->NextToken();
   EXPECT_EQ(TOKstring, token.m_type);
   EXPECT_EQ(L"\"The message reads: \"\"Warning: Insufficient Memory\"\"\"",
             token.m_string);
 
-  lexer = pdfium::MakeUnique<CXFA_FMLexer>(
+  lexer = std::make_unique<CXFA_FMLexer>(
       L"\"\\u0047\\u006f\\u0066\\u0069\\u0073\\u0068\\u0021\\u000d\\u000a\"");
   token = lexer->NextToken();
   EXPECT_EQ(TOKstring, token.m_type);
@@ -171,7 +171,7 @@
             {L".*", TOKdotstar}};
 
   for (size_t i = 0; i < pdfium::size(op); ++i) {
-    auto lexer = pdfium::MakeUnique<CXFA_FMLexer>(op[i].op);
+    auto lexer = std::make_unique<CXFA_FMLexer>(op[i].op);
     CXFA_FMToken token = lexer->NextToken();
     EXPECT_EQ(op[i].token, token.m_type);
     EXPECT_TRUE(lexer->IsComplete());
@@ -179,15 +179,15 @@
 }
 
 TEST(CXFA_FMLexerTest, Comments) {
-  auto lexer = pdfium::MakeUnique<CXFA_FMLexer>(L"// Empty.");
+  auto lexer = std::make_unique<CXFA_FMLexer>(L"// Empty.");
   CXFA_FMToken token = lexer->NextToken();
   EXPECT_EQ(TOKeof, token.m_type);
 
-  lexer = pdfium::MakeUnique<CXFA_FMLexer>(L"//");
+  lexer = std::make_unique<CXFA_FMLexer>(L"//");
   token = lexer->NextToken();
   EXPECT_EQ(TOKeof, token.m_type);
 
-  lexer = pdfium::MakeUnique<CXFA_FMLexer>(L"123 // Empty.\n\"str\"");
+  lexer = std::make_unique<CXFA_FMLexer>(L"123 // Empty.\n\"str\"");
   token = lexer->NextToken();
   EXPECT_EQ(TOKnumber, token.m_type);
   EXPECT_EQ(L"123", token.m_string);
@@ -199,15 +199,15 @@
   token = lexer->NextToken();
   EXPECT_EQ(TOKeof, token.m_type);
 
-  lexer = pdfium::MakeUnique<CXFA_FMLexer>(L";");
+  lexer = std::make_unique<CXFA_FMLexer>(L";");
   token = lexer->NextToken();
   EXPECT_EQ(TOKeof, token.m_type);
 
-  lexer = pdfium::MakeUnique<CXFA_FMLexer>(L"; Empty.");
+  lexer = std::make_unique<CXFA_FMLexer>(L"; Empty.");
   token = lexer->NextToken();
   EXPECT_EQ(TOKeof, token.m_type);
 
-  lexer = pdfium::MakeUnique<CXFA_FMLexer>(L"123 ;Empty.\n\"str\"");
+  lexer = std::make_unique<CXFA_FMLexer>(L"123 ;Empty.\n\"str\"");
   token = lexer->NextToken();
   EXPECT_EQ(TOKnumber, token.m_type);
   EXPECT_EQ(L"123", token.m_string);
@@ -225,7 +225,7 @@
   std::vector<const wchar_t*> identifiers = {
       L"a", L"an_identifier", L"_ident", L"$ident", L"!ident", L"GetAddr"};
   for (const auto* ident : identifiers) {
-    auto lexer = pdfium::MakeUnique<CXFA_FMLexer>(ident);
+    auto lexer = std::make_unique<CXFA_FMLexer>(ident);
     CXFA_FMToken token = lexer->NextToken();
     EXPECT_EQ(TOKidentifier, token.m_type);
     EXPECT_EQ(ident, token.m_string);
@@ -234,15 +234,15 @@
 }
 
 TEST(CXFA_FMLexerTest, InvalidIdentifiers) {
-  auto lexer = pdfium::MakeUnique<CXFA_FMLexer>(L"#a");
+  auto lexer = std::make_unique<CXFA_FMLexer>(L"#a");
   auto token = lexer->NextToken();
   EXPECT_EQ(TOKreserver, token.m_type);
 
-  lexer = pdfium::MakeUnique<CXFA_FMLexer>(L"1a");
+  lexer = std::make_unique<CXFA_FMLexer>(L"1a");
   token = lexer->NextToken();
   EXPECT_EQ(TOKreserver, token.m_type);
 
-  lexer = pdfium::MakeUnique<CXFA_FMLexer>(L"an@identifier");
+  lexer = std::make_unique<CXFA_FMLexer>(L"an@identifier");
   token = lexer->NextToken();
   EXPECT_NE(TOKreserver, token.m_type);
   token = lexer->NextToken();
@@ -250,7 +250,7 @@
   token = lexer->NextToken();
   EXPECT_EQ(TOKreserver, token.m_type);
 
-  lexer = pdfium::MakeUnique<CXFA_FMLexer>(L"_ident@");
+  lexer = std::make_unique<CXFA_FMLexer>(L"_ident@");
   token = lexer->NextToken();
   EXPECT_NE(TOKreserver, token.m_type);
   token = lexer->NextToken();
@@ -259,11 +259,11 @@
 }
 
 TEST(CXFA_FMLexerTest, Whitespace) {
-  auto lexer = pdfium::MakeUnique<CXFA_FMLexer>(L" \t\xc\x9\xb");
+  auto lexer = std::make_unique<CXFA_FMLexer>(L" \t\xc\x9\xb");
   CXFA_FMToken token = lexer->NextToken();
   EXPECT_EQ(TOKeof, token.m_type);
 
-  lexer = pdfium::MakeUnique<CXFA_FMLexer>(L"123 \t\xc\x9\xb 456");
+  lexer = std::make_unique<CXFA_FMLexer>(L"123 \t\xc\x9\xb 456");
   token = lexer->NextToken();
   EXPECT_EQ(TOKnumber, token.m_type);
   EXPECT_EQ(L"123", token.m_string);
@@ -278,7 +278,7 @@
 }
 
 TEST(CXFA_FMLexerTest, NullData) {
-  auto lexer = pdfium::MakeUnique<CXFA_FMLexer>(
+  auto lexer = std::make_unique<CXFA_FMLexer>(
       WideStringView(L"\x2d\x32\x00\x2d\x32", 5));
   CXFA_FMToken token = lexer->NextToken();
   EXPECT_EQ(TOKminus, token.m_type);
diff --git a/xfa/fxfa/fm2js/cxfa_fmparser.cpp b/xfa/fxfa/fm2js/cxfa_fmparser.cpp
index 152b5a1..28f3bcc 100644
--- a/xfa/fxfa/fm2js/cxfa_fmparser.cpp
+++ b/xfa/fxfa/fm2js/cxfa_fmparser.cpp
@@ -11,7 +11,6 @@
 #include <vector>
 
 #include "core/fxcrt/autorestorer.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -22,7 +21,7 @@
 }  // namespace
 
 CXFA_FMParser::CXFA_FMParser(WideStringView wsFormcalc)
-    : m_lexer(pdfium::MakeUnique<CXFA_FMLexer>(wsFormcalc)),
+    : m_lexer(std::make_unique<CXFA_FMLexer>(wsFormcalc)),
       m_error(false),
       m_parse_depth(0),
       m_max_parse_depth(kMaxParseDepth) {}
@@ -42,7 +41,7 @@
   if (!m_lexer->IsComplete())
     return nullptr;
 
-  return pdfium::MakeUnique<CXFA_FMAST>(std::move(expressions));
+  return std::make_unique<CXFA_FMAST>(std::move(expressions));
 }
 
 bool CXFA_FMParser::NextToken() {
@@ -153,7 +152,7 @@
   if (!CheckThenNext(TOKendfunc))
     return nullptr;
 
-  return pdfium::MakeUnique<CXFA_FMFunctionDefinition>(
+  return std::make_unique<CXFA_FMFunctionDefinition>(
       ident, std::move(arguments), std::move(expressions));
 }
 
@@ -196,12 +195,12 @@
       expr = ParseDoExpression();
       break;
     case TOKbreak:
-      expr = pdfium::MakeUnique<CXFA_FMBreakExpression>();
+      expr = std::make_unique<CXFA_FMBreakExpression>();
       if (!NextToken())
         return nullptr;
       break;
     case TOKcontinue:
-      expr = pdfium::MakeUnique<CXFA_FMContinueExpression>();
+      expr = std::make_unique<CXFA_FMContinueExpression>();
       if (!NextToken())
         return nullptr;
       break;
@@ -239,7 +238,7 @@
       return nullptr;
   }
 
-  return pdfium::MakeUnique<CXFA_FMVarExpression>(ident, std::move(expr));
+  return std::make_unique<CXFA_FMVarExpression>(ident, std::move(expr));
 }
 
 // SimpleExpression := LogicalOrExpression
@@ -269,10 +268,10 @@
     if (!pExp2)
       return nullptr;
 
-    pExp1 = pdfium::MakeUnique<CXFA_FMAssignExpression>(
+    pExp1 = std::make_unique<CXFA_FMAssignExpression>(
         TOKassign, std::move(pExp1), std::move(pExp2));
   }
-  return pdfium::MakeUnique<CXFA_FMExpExpression>(std::move(pExp1));
+  return std::make_unique<CXFA_FMExpExpression>(std::move(pExp1));
 }
 
 // LogicalOr := LogicalAndExpression |
@@ -303,8 +302,8 @@
         if (!e2)
           return nullptr;
 
-        e1 = pdfium::MakeUnique<CXFA_FMLogicalOrExpression>(
-            TOKor, std::move(e1), std::move(e2));
+        e1 = std::make_unique<CXFA_FMLogicalOrExpression>(TOKor, std::move(e1),
+                                                          std::move(e2));
         continue;
       }
       default:
@@ -342,7 +341,7 @@
         if (!e2)
           return nullptr;
 
-        e1 = pdfium::MakeUnique<CXFA_FMLogicalAndExpression>(
+        e1 = std::make_unique<CXFA_FMLogicalAndExpression>(
             TOKand, std::move(e1), std::move(e2));
         continue;
       }
@@ -382,8 +381,8 @@
         if (!e2)
           return nullptr;
 
-        e1 = pdfium::MakeUnique<CXFA_FMEqualExpression>(TOKeq, std::move(e1),
-                                                        std::move(e2));
+        e1 = std::make_unique<CXFA_FMEqualExpression>(TOKeq, std::move(e1),
+                                                      std::move(e2));
         continue;
       }
       case TOKne:
@@ -396,8 +395,8 @@
         if (!e2)
           return nullptr;
 
-        e1 = pdfium::MakeUnique<CXFA_FMNotEqualExpression>(TOKne, std::move(e1),
-                                                           std::move(e2));
+        e1 = std::make_unique<CXFA_FMNotEqualExpression>(TOKne, std::move(e1),
+                                                         std::move(e2));
         continue;
       }
       default:
@@ -436,8 +435,8 @@
         if (!e2)
           return nullptr;
 
-        e1 = pdfium::MakeUnique<CXFA_FMLtExpression>(TOKlt, std::move(e1),
-                                                     std::move(e2));
+        e1 = std::make_unique<CXFA_FMLtExpression>(TOKlt, std::move(e1),
+                                                   std::move(e2));
         continue;
       case TOKgt:
       case TOKksgt:
@@ -448,8 +447,8 @@
         if (!e2)
           return nullptr;
 
-        e1 = pdfium::MakeUnique<CXFA_FMGtExpression>(TOKgt, std::move(e1),
-                                                     std::move(e2));
+        e1 = std::make_unique<CXFA_FMGtExpression>(TOKgt, std::move(e1),
+                                                   std::move(e2));
         continue;
       case TOKle:
       case TOKksle:
@@ -460,8 +459,8 @@
         if (!e2)
           return nullptr;
 
-        e1 = pdfium::MakeUnique<CXFA_FMLeExpression>(TOKle, std::move(e1),
-                                                     std::move(e2));
+        e1 = std::make_unique<CXFA_FMLeExpression>(TOKle, std::move(e1),
+                                                   std::move(e2));
         continue;
       case TOKge:
       case TOKksge:
@@ -472,8 +471,8 @@
         if (!e2)
           return nullptr;
 
-        e1 = pdfium::MakeUnique<CXFA_FMGeExpression>(TOKge, std::move(e1),
-                                                     std::move(e2));
+        e1 = std::make_unique<CXFA_FMGeExpression>(TOKge, std::move(e1),
+                                                   std::move(e2));
         continue;
       default:
         break;
@@ -510,8 +509,8 @@
         if (!e2)
           return nullptr;
 
-        e1 = pdfium::MakeUnique<CXFA_FMPlusExpression>(TOKplus, std::move(e1),
-                                                       std::move(e2));
+        e1 = std::make_unique<CXFA_FMPlusExpression>(TOKplus, std::move(e1),
+                                                     std::move(e2));
         continue;
       case TOKminus:
         if (!NextToken())
@@ -521,8 +520,8 @@
         if (!e2)
           return nullptr;
 
-        e1 = pdfium::MakeUnique<CXFA_FMMinusExpression>(TOKminus, std::move(e1),
-                                                        std::move(e2));
+        e1 = std::make_unique<CXFA_FMMinusExpression>(TOKminus, std::move(e1),
+                                                      std::move(e2));
         continue;
       default:
         break;
@@ -559,8 +558,8 @@
         if (!e2)
           return nullptr;
 
-        e1 = pdfium::MakeUnique<CXFA_FMMulExpression>(TOKmul, std::move(e1),
-                                                      std::move(e2));
+        e1 = std::make_unique<CXFA_FMMulExpression>(TOKmul, std::move(e1),
+                                                    std::move(e2));
         continue;
       case TOKdiv:
         if (!NextToken())
@@ -570,8 +569,8 @@
         if (!e2)
           return nullptr;
 
-        e1 = pdfium::MakeUnique<CXFA_FMDivExpression>(TOKdiv, std::move(e1),
-                                                      std::move(e2));
+        e1 = std::make_unique<CXFA_FMDivExpression>(TOKdiv, std::move(e1),
+                                                    std::move(e2));
         continue;
       default:
         break;
@@ -597,7 +596,7 @@
       if (!expr)
         return nullptr;
 
-      expr = pdfium::MakeUnique<CXFA_FMPosExpression>(std::move(expr));
+      expr = std::make_unique<CXFA_FMPosExpression>(std::move(expr));
       break;
     case TOKminus:
       if (!NextToken())
@@ -607,7 +606,7 @@
       if (!expr)
         return nullptr;
 
-      expr = pdfium::MakeUnique<CXFA_FMNegExpression>(std::move(expr));
+      expr = std::make_unique<CXFA_FMNegExpression>(std::move(expr));
       break;
     case TOKksnot:
       if (!NextToken())
@@ -617,7 +616,7 @@
       if (!expr)
         return nullptr;
 
-      expr = pdfium::MakeUnique<CXFA_FMNotExpression>(std::move(expr));
+      expr = std::make_unique<CXFA_FMNotExpression>(std::move(expr));
       break;
     default:
       return ParsePrimaryExpression();
@@ -647,14 +646,14 @@
         if (!s)
           return nullptr;
 
-        expr = pdfium::MakeUnique<CXFA_FMDotAccessorExpression>(
+        expr = std::make_unique<CXFA_FMDotAccessorExpression>(
             nullptr, TOKdot, wsIdentifier, std::move(s));
         if (!expr)
           return nullptr;
         if (!NextToken())
           return nullptr;
       } else {
-        expr = pdfium::MakeUnique<CXFA_FMIdentifierExpression>(wsIdentifier);
+        expr = std::make_unique<CXFA_FMIdentifierExpression>(wsIdentifier);
       }
       break;
     }
@@ -673,11 +672,11 @@
 std::unique_ptr<CXFA_FMSimpleExpression> CXFA_FMParser::ParseLiteral() {
   switch (m_token.m_type) {
     case TOKnumber:
-      return pdfium::MakeUnique<CXFA_FMNumberExpression>(m_token.m_string);
+      return std::make_unique<CXFA_FMNumberExpression>(m_token.m_string);
     case TOKstring:
-      return pdfium::MakeUnique<CXFA_FMStringExpression>(m_token.m_string);
+      return std::make_unique<CXFA_FMStringExpression>(m_token.m_string);
     case TOKnull:
-      return pdfium::MakeUnique<CXFA_FMNullExpression>();
+      return std::make_unique<CXFA_FMNullExpression>();
     default:
       return nullptr;
   }
@@ -707,7 +706,7 @@
         if (!expressions)
           return nullptr;
 
-        expr = pdfium::MakeUnique<CXFA_FMCallExpression>(
+        expr = std::make_unique<CXFA_FMCallExpression>(
             std::move(expr), std::move(*expressions), false);
         if (!NextToken())
           return nullptr;
@@ -718,7 +717,7 @@
         if (!s)
           return nullptr;
 
-        expr = pdfium::MakeUnique<CXFA_FMDotAccessorExpression>(
+        expr = std::make_unique<CXFA_FMDotAccessorExpression>(
             std::move(expr), TOKcall, WideStringView(), std::move(s));
         break;
       }
@@ -738,10 +737,10 @@
             return nullptr;
 
           auto pIdentifier =
-              pdfium::MakeUnique<CXFA_FMIdentifierExpression>(tempStr);
-          auto pExpCall = pdfium::MakeUnique<CXFA_FMCallExpression>(
+              std::make_unique<CXFA_FMIdentifierExpression>(tempStr);
+          auto pExpCall = std::make_unique<CXFA_FMCallExpression>(
               std::move(pIdentifier), std::move(*expressions), true);
-          expr = pdfium::MakeUnique<CXFA_FMMethodCallExpression>(
+          expr = std::make_unique<CXFA_FMMethodCallExpression>(
               std::move(expr), std::move(pExpCall));
           if (!NextToken())
             return nullptr;
@@ -752,20 +751,20 @@
           if (!s)
             return nullptr;
 
-          expr = pdfium::MakeUnique<CXFA_FMDotAccessorExpression>(
+          expr = std::make_unique<CXFA_FMDotAccessorExpression>(
               std::move(expr), TOKcall, WideStringView(), std::move(s));
         } else if (m_token.m_type == TOKlbracket) {
           std::unique_ptr<CXFA_FMSimpleExpression> s = ParseIndexExpression();
           if (!s)
             return nullptr;
 
-          expr = pdfium::MakeUnique<CXFA_FMDotAccessorExpression>(
+          expr = std::make_unique<CXFA_FMDotAccessorExpression>(
               std::move(expr), TOKdot, tempStr, std::move(s));
         } else {
           std::unique_ptr<CXFA_FMSimpleExpression> s =
-              pdfium::MakeUnique<CXFA_FMIndexExpression>(ACCESSOR_NO_INDEX,
-                                                         nullptr, false);
-          expr = pdfium::MakeUnique<CXFA_FMDotAccessorExpression>(
+              std::make_unique<CXFA_FMIndexExpression>(ACCESSOR_NO_INDEX,
+                                                       nullptr, false);
+          expr = std::make_unique<CXFA_FMDotAccessorExpression>(
               std::move(expr), TOKdot, tempStr, std::move(s));
           continue;
         }
@@ -785,13 +784,13 @@
           if (!s)
             return nullptr;
 
-          expr = pdfium::MakeUnique<CXFA_FMDotDotAccessorExpression>(
+          expr = std::make_unique<CXFA_FMDotDotAccessorExpression>(
               std::move(expr), TOKdotdot, tempStr, std::move(s));
         } else {
           std::unique_ptr<CXFA_FMSimpleExpression> s =
-              pdfium::MakeUnique<CXFA_FMIndexExpression>(ACCESSOR_NO_INDEX,
-                                                         nullptr, false);
-          expr = pdfium::MakeUnique<CXFA_FMDotDotAccessorExpression>(
+              std::make_unique<CXFA_FMIndexExpression>(ACCESSOR_NO_INDEX,
+                                                       nullptr, false);
+          expr = std::make_unique<CXFA_FMDotDotAccessorExpression>(
               std::move(expr), TOKdotdot, tempStr, std::move(s));
           continue;
         }
@@ -809,9 +808,9 @@
 
         if (m_token.m_type != TOKlbracket) {
           std::unique_ptr<CXFA_FMSimpleExpression> s =
-              pdfium::MakeUnique<CXFA_FMIndexExpression>(ACCESSOR_NO_INDEX,
-                                                         nullptr, false);
-          expr = pdfium::MakeUnique<CXFA_FMDotAccessorExpression>(
+              std::make_unique<CXFA_FMIndexExpression>(ACCESSOR_NO_INDEX,
+                                                       nullptr, false);
+          expr = std::make_unique<CXFA_FMDotAccessorExpression>(
               std::move(expr), TOKdotscream, tempStr, std::move(s));
           continue;
         }
@@ -820,15 +819,15 @@
         if (!s)
           return nullptr;
 
-        expr = pdfium::MakeUnique<CXFA_FMDotAccessorExpression>(
+        expr = std::make_unique<CXFA_FMDotAccessorExpression>(
             std::move(expr), TOKdotscream, tempStr, std::move(s));
         break;
       }
       case TOKdotstar: {
         std::unique_ptr<CXFA_FMSimpleExpression> s =
-            pdfium::MakeUnique<CXFA_FMIndexExpression>(ACCESSOR_NO_INDEX,
-                                                       nullptr, false);
-        expr = pdfium::MakeUnique<CXFA_FMDotAccessorExpression>(
+            std::make_unique<CXFA_FMIndexExpression>(ACCESSOR_NO_INDEX, nullptr,
+                                                     false);
+        expr = std::make_unique<CXFA_FMDotAccessorExpression>(
             std::move(expr), TOKdotstar, L"*", std::move(s));
         break;
       }
@@ -848,8 +847,8 @@
   if (m_token.m_type != TOKlparen || !NextToken())
     return nullptr;
 
-  auto expressions = pdfium::MakeUnique<
-      std::vector<std::unique_ptr<CXFA_FMSimpleExpression>>>();
+  auto expressions =
+      std::make_unique<std::vector<std::unique_ptr<CXFA_FMSimpleExpression>>>();
   bool first_arg = true;
   while (m_token.m_type != TOKrparen) {
     if (first_arg) {
@@ -880,7 +879,7 @@
     return nullptr;
 
   if (m_token.m_type == TOKmul) {
-    auto pExp = pdfium::MakeUnique<CXFA_FMIndexExpression>(
+    auto pExp = std::make_unique<CXFA_FMIndexExpression>(
         ACCESSOR_NO_RELATIVEINDEX, nullptr, true);
     if (!pExp || !NextToken())
       return nullptr;
@@ -909,8 +908,8 @@
   if (m_token.m_type != TOKrbracket)
     return nullptr;
 
-  return pdfium::MakeUnique<CXFA_FMIndexExpression>(accessorIndex, std::move(s),
-                                                    false);
+  return std::make_unique<CXFA_FMIndexExpression>(accessorIndex, std::move(s),
+                                                  false);
 }
 
 // Paren := '(' SimpleExpression ')'
@@ -952,7 +951,7 @@
     return nullptr;
 
   auto pIfExpressions =
-      pdfium::MakeUnique<CXFA_FMBlockExpression>(ParseExpressionList());
+      std::make_unique<CXFA_FMBlockExpression>(ParseExpressionList());
 
   std::vector<std::unique_ptr<CXFA_FMIfExpression>> pElseIfExpressions;
   while (m_token.m_type == TOKelseif) {
@@ -966,9 +965,9 @@
       return nullptr;
 
     auto elseIfExprs = ParseExpressionList();
-    pElseIfExpressions.push_back(pdfium::MakeUnique<CXFA_FMIfExpression>(
+    pElseIfExpressions.push_back(std::make_unique<CXFA_FMIfExpression>(
         std::move(elseIfCondition),
-        pdfium::MakeUnique<CXFA_FMBlockExpression>(std::move(elseIfExprs)),
+        std::make_unique<CXFA_FMBlockExpression>(std::move(elseIfExprs)),
         std::vector<std::unique_ptr<CXFA_FMIfExpression>>(), nullptr));
   }
 
@@ -978,12 +977,12 @@
       return nullptr;
 
     pElseExpression =
-        pdfium::MakeUnique<CXFA_FMBlockExpression>(ParseExpressionList());
+        std::make_unique<CXFA_FMBlockExpression>(ParseExpressionList());
   }
   if (!CheckThenNext(TOKendif))
     return nullptr;
 
-  return pdfium::MakeUnique<CXFA_FMIfExpression>(
+  return std::make_unique<CXFA_FMIfExpression>(
       std::move(pCondition), std::move(pIfExpressions),
       std::move(pElseIfExpressions), std::move(pElseExpression));
 }
@@ -1004,9 +1003,9 @@
   if (!CheckThenNext(TOKendwhile))
     return nullptr;
 
-  return pdfium::MakeUnique<CXFA_FMWhileExpression>(
+  return std::make_unique<CXFA_FMWhileExpression>(
       std::move(pCondition),
-      pdfium::MakeUnique<CXFA_FMBlockExpression>(std::move(exprs)));
+      std::make_unique<CXFA_FMBlockExpression>(std::move(exprs)));
 }
 
 // For := 'for' Assignment 'upto' Accessor ('step' SimpleExpression)?
@@ -1063,10 +1062,10 @@
   if (!CheckThenNext(TOKendfor))
     return nullptr;
 
-  return pdfium::MakeUnique<CXFA_FMForExpression>(
+  return std::make_unique<CXFA_FMForExpression>(
       wsVariant, std::move(pAssignment), std::move(pAccessor), iDirection,
       std::move(pStep),
-      pdfium::MakeUnique<CXFA_FMBlockExpression>(std::move(exprs)));
+      std::make_unique<CXFA_FMBlockExpression>(std::move(exprs)));
 }
 
 // Foreach := 'foreach' Identifier 'in' '(' ArgumentList ')'
@@ -1109,9 +1108,9 @@
   if (!CheckThenNext(TOKendfor))
     return nullptr;
 
-  return pdfium::MakeUnique<CXFA_FMForeachExpression>(
+  return std::make_unique<CXFA_FMForeachExpression>(
       wsIdentifier, std::move(pArgumentList),
-      pdfium::MakeUnique<CXFA_FMBlockExpression>(std::move(exprs)));
+      std::make_unique<CXFA_FMBlockExpression>(std::move(exprs)));
 }
 
 // Block := 'do' ExpressionList 'end'
@@ -1129,8 +1128,8 @@
   if (!CheckThenNext(TOKend))
     return nullptr;
 
-  return pdfium::MakeUnique<CXFA_FMDoExpression>(
-      pdfium::MakeUnique<CXFA_FMBlockExpression>(std::move(exprs)));
+  return std::make_unique<CXFA_FMDoExpression>(
+      std::make_unique<CXFA_FMBlockExpression>(std::move(exprs)));
 }
 
 bool CXFA_FMParser::HasError() const {
diff --git a/xfa/fxfa/fm2js/cxfa_fmparser_unittest.cpp b/xfa/fxfa/fm2js/cxfa_fmparser_unittest.cpp
index 4c5aa46..526a5da 100644
--- a/xfa/fxfa/fm2js/cxfa_fmparser_unittest.cpp
+++ b/xfa/fxfa/fm2js/cxfa_fmparser_unittest.cpp
@@ -8,11 +8,10 @@
 
 #include "core/fxcrt/cfx_widetextbuf.h"
 #include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/fm2js/cxfa_fmtojavascriptdepth.h"
 
 TEST(CXFA_FMParserTest, Empty) {
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(L"");
+  auto parser = std::make_unique<CXFA_FMParser>(L"");
   std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
   ASSERT_TRUE(ast);
   EXPECT_FALSE(parser->HasError());
@@ -25,7 +24,7 @@
 }
 
 TEST(CXFA_FMParserTest, CommentOnlyIsError) {
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(L"; Just comment");
+  auto parser = std::make_unique<CXFA_FMParser>(L"; Just comment");
   std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
   ASSERT_TRUE(ast);
   // TODO(dsinclair): This isn't allowed per the spec.
@@ -56,7 +55,7 @@
 return pfm_rt.get_val(pfm_ret);
 }).call(this);)***";
 
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(L"; Just comment\n12");
+  auto parser = std::make_unique<CXFA_FMParser>(L"; Just comment\n12");
   std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
   ASSERT_TRUE(ast);
   EXPECT_FALSE(parser->HasError());
@@ -125,7 +124,7 @@
 return pfm_rt.get_val(pfm_ret);
 }).call(this);)***";
 
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(input);
+  auto parser = std::make_unique<CXFA_FMParser>(input);
   std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
   ASSERT_TRUE(ast);
   EXPECT_FALSE(parser->HasError());
@@ -137,14 +136,14 @@
 }
 
 TEST(CXFA_FMParserTest, MaxParseDepth) {
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(L"foo(bar[baz(fizz[0])])");
+  auto parser = std::make_unique<CXFA_FMParser>(L"foo(bar[baz(fizz[0])])");
   parser->SetMaxParseDepthForTest(5);
   EXPECT_EQ(nullptr, parser->Parse());
   EXPECT_TRUE(parser->HasError());
 }
 
 TEST(CFXA_FMParserTest, chromium752201) {
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(
+  auto parser = std::make_unique<CXFA_FMParser>(
       LR"***(fTep a
 .#
 fo@ =[=l)***");
@@ -153,7 +152,7 @@
 }
 
 TEST(CXFA_FMParserTest, MultipleAssignmentIsNotAllowed) {
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(L"(a=(b=t))=u");
+  auto parser = std::make_unique<CXFA_FMParser>(L"(a=(b=t))=u");
 
   std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
   ASSERT_TRUE(!ast);
@@ -187,7 +186,7 @@
 return pfm_rt.get_val(pfm_ret);
 }).call(this);)***";
 
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(input);
+  auto parser = std::make_unique<CXFA_FMParser>(input);
   std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
   ASSERT_TRUE(ast);
   EXPECT_FALSE(parser->HasError());
@@ -225,7 +224,7 @@
 return pfm_rt.get_val(pfm_ret);
 }).call(this);)***";
 
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(input);
+  auto parser = std::make_unique<CXFA_FMParser>(input);
   std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
   ASSERT_TRUE(ast);
   EXPECT_FALSE(parser->HasError());
@@ -242,7 +241,7 @@
   param1 * param2
 endfunc)***";
 
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(input);
+  auto parser = std::make_unique<CXFA_FMParser>(input);
   std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
   ASSERT_TRUE(ast == nullptr);
   EXPECT_TRUE(parser->HasError());
@@ -251,7 +250,7 @@
 TEST(CXFA_FMParserTest, ParseBadIfExpression) {
   const wchar_t input[] = L"if ( then";
 
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(input);
+  auto parser = std::make_unique<CXFA_FMParser>(input);
   std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
   ASSERT_TRUE(ast == nullptr);
   EXPECT_TRUE(parser->HasError());
@@ -262,7 +261,7 @@
       LR"***(if ($ ne -1) then"
 elseif( then)***";
 
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(input);
+  auto parser = std::make_unique<CXFA_FMParser>(input);
   std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
   ASSERT_TRUE(ast == nullptr);
   EXPECT_TRUE(parser->HasError());
@@ -272,14 +271,14 @@
   const wchar_t input[] = L"a <> b <> c <> d <> e <> f <> g <> h <> i <> j";
 
   {
-    auto parser = pdfium::MakeUnique<CXFA_FMParser>(input);
+    auto parser = std::make_unique<CXFA_FMParser>(input);
     std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
     ASSERT_TRUE(ast);
     EXPECT_TRUE(!parser->HasError());
   }
 
   {
-    auto parser = pdfium::MakeUnique<CXFA_FMParser>(input);
+    auto parser = std::make_unique<CXFA_FMParser>(input);
     parser->SetMaxParseDepthForTest(5);
     std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
     ASSERT_TRUE(ast == nullptr);
@@ -310,7 +309,7 @@
 return pfm_rt.get_val(pfm_ret);
 }).call(this);)***";
 
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(input);
+  auto parser = std::make_unique<CXFA_FMParser>(input);
   std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
   EXPECT_FALSE(parser->HasError());
 
@@ -351,7 +350,7 @@
 return pfm_rt.get_val(pfm_ret);
 }).call(this);)***";
 
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(input);
+  auto parser = std::make_unique<CXFA_FMParser>(input);
   std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
   EXPECT_FALSE(parser->HasError());
 
@@ -382,7 +381,7 @@
 return pfm_rt.get_val(pfm_ret);
 }).call(this);)***";
 
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(input);
+  auto parser = std::make_unique<CXFA_FMParser>(input);
   std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
   EXPECT_FALSE(parser->HasError());
 
@@ -415,7 +414,7 @@
 return pfm_rt.get_val(pfm_ret);
 }).call(this);)***";
 
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(input);
+  auto parser = std::make_unique<CXFA_FMParser>(input);
   std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
   EXPECT_FALSE(parser->HasError());
   CXFA_FMToJavaScriptDepth::Reset();
@@ -447,7 +446,7 @@
 return pfm_rt.get_val(pfm_ret);
 }).call(this);)***";
 
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(input);
+  auto parser = std::make_unique<CXFA_FMParser>(input);
   std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
   EXPECT_FALSE(parser->HasError());
   CXFA_FMToJavaScriptDepth::Reset();
@@ -479,7 +478,7 @@
 return pfm_rt.get_val(pfm_ret);
 }).call(this);)***";
 
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(input);
+  auto parser = std::make_unique<CXFA_FMParser>(input);
   std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
   EXPECT_FALSE(parser->HasError());
   CXFA_FMToJavaScriptDepth::Reset();
@@ -491,7 +490,7 @@
 TEST(CXFA_FMParserTest, ParseFunctionCallMissingCommas) {
   const wchar_t input[] = L"P.x(!foo!bar!baz)";
 
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(input);
+  auto parser = std::make_unique<CXFA_FMParser>(input);
   std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
   ASSERT_TRUE(ast == nullptr);
   EXPECT_TRUE(parser->HasError());
@@ -500,7 +499,7 @@
 TEST(CXFA_FMParserTest, ParseFunctionCallTrailingComma) {
   const wchar_t input[] = L"P.x(foo,bar,baz,)";
 
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(input);
+  auto parser = std::make_unique<CXFA_FMParser>(input);
   std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
   ASSERT_TRUE(ast == nullptr);
   EXPECT_TRUE(parser->HasError());
@@ -509,7 +508,7 @@
 TEST(CXFA_FMParserTest, ParseFunctionCallExtraComma) {
   const wchar_t input[] = L"P.x(foo,bar,,baz)";
 
-  auto parser = pdfium::MakeUnique<CXFA_FMParser>(input);
+  auto parser = std::make_unique<CXFA_FMParser>(input);
   std::unique_ptr<CXFA_FMAST> ast = parser->Parse();
   ASSERT_TRUE(ast == nullptr);
   EXPECT_TRUE(parser->HasError());
diff --git a/xfa/fxfa/fm2js/cxfa_fmsimpleexpression_unittest.cpp b/xfa/fxfa/fm2js/cxfa_fmsimpleexpression_unittest.cpp
index 198087c..8831e05 100644
--- a/xfa/fxfa/fm2js/cxfa_fmsimpleexpression_unittest.cpp
+++ b/xfa/fxfa/fm2js/cxfa_fmsimpleexpression_unittest.cpp
@@ -10,17 +10,16 @@
 #include "core/fxcrt/cfx_widetextbuf.h"
 #include "core/fxcrt/fx_string.h"
 #include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/fm2js/cxfa_fmlexer.h"
 #include "xfa/fxfa/fm2js/cxfa_fmtojavascriptdepth.h"
 
 TEST(FMCallExpressionTest, more_than_32_arguments) {
   // Use sign as it has 3 object parameters at positions 0, 5, and 6.
-  auto exp = pdfium::MakeUnique<CXFA_FMIdentifierExpression>(L"sign");
+  auto exp = std::make_unique<CXFA_FMIdentifierExpression>(L"sign");
 
   std::vector<std::unique_ptr<CXFA_FMSimpleExpression>> args;
   for (size_t i = 0; i < 50; i++)
-    args.push_back(pdfium::MakeUnique<CXFA_FMNullExpression>());
+    args.push_back(std::make_unique<CXFA_FMNullExpression>());
 
   CXFA_FMToJavaScriptDepth::Reset();
   CXFA_FMCallExpression callExp(std::move(exp), std::move(args), true);
diff --git a/xfa/fxfa/layout/cxfa_contentlayoutprocessor.cpp b/xfa/fxfa/layout/cxfa_contentlayoutprocessor.cpp
index 833ab99..2c4c96d 100644
--- a/xfa/fxfa/layout/cxfa_contentlayoutprocessor.cpp
+++ b/xfa/fxfa/layout/cxfa_contentlayoutprocessor.cpp
@@ -14,7 +14,6 @@
 #include "fxjs/xfa/cjx_object.h"
 #include "third_party/base/compiler_specific.h"
 #include "third_party/base/logging.h"
-#include "third_party/base/ptr_util.h"
 #include "third_party/base/stl_util.h"
 #include "xfa/fxfa/cxfa_ffdoc.h"
 #include "xfa/fxfa/cxfa_ffnotify.h"
@@ -985,7 +984,7 @@
       continue;
 
     auto pProcessor =
-        pdfium::MakeUnique<CXFA_ContentLayoutProcessor>(pCurChildNode, nullptr);
+        std::make_unique<CXFA_ContentLayoutProcessor>(pCurChildNode, nullptr);
     pProcessor->DoLayout(false, FLT_MAX, FLT_MAX);
     if (!pProcessor->HasLayoutItem())
       continue;
@@ -1052,7 +1051,7 @@
     if (m_pCurChildNode->GetElementType() == XFA_Element::Variables)
       continue;
 
-    auto pProcessor = pdfium::MakeUnique<CXFA_ContentLayoutProcessor>(
+    auto pProcessor = std::make_unique<CXFA_ContentLayoutProcessor>(
         m_pCurChildNode, m_pViewLayoutProcessor.Get());
     if (pContext && pContext->m_prgSpecifiedColumnWidths) {
       int32_t iColSpan =
@@ -1187,7 +1186,7 @@
     if (m_nCurChildNodeStage != Stage::kContainer)
       continue;
 
-    auto pProcessor = pdfium::MakeUnique<CXFA_ContentLayoutProcessor>(
+    auto pProcessor = std::make_unique<CXFA_ContentLayoutProcessor>(
         m_pCurChildNode, m_pViewLayoutProcessor.Get());
     pProcessor->DoLayoutInternal(false, FLT_MAX, FLT_MAX, pLayoutContext);
     if (!pProcessor->HasLayoutItem())
@@ -1642,8 +1641,8 @@
               AddPendingNode(pTrailerNode, true);
             } else {
               auto pTempProcessor =
-                  pdfium::MakeUnique<CXFA_ContentLayoutProcessor>(pTrailerNode,
-                                                                  nullptr);
+                  std::make_unique<CXFA_ContentLayoutProcessor>(pTrailerNode,
+                                                                nullptr);
               InsertFlowedItem(
                   pTempProcessor.get(), bContainerWidthAutoSize,
                   bContainerHeightAutoSize, container_size.height,
@@ -1673,9 +1672,8 @@
           CXFA_Node* pTrailerNode = break_data.value().pTrailer;
           bool bCreatePage = break_data.value().bCreatePage;
           if (JudgeLeaderOrTrailerForOccur(pTrailerNode)) {
-            auto pTempProcessor =
-                pdfium::MakeUnique<CXFA_ContentLayoutProcessor>(pTrailerNode,
-                                                                nullptr);
+            auto pTempProcessor = std::make_unique<CXFA_ContentLayoutProcessor>(
+                pTrailerNode, nullptr);
             InsertFlowedItem(pTempProcessor.get(), bContainerWidthAutoSize,
                              bContainerHeightAutoSize, container_size.height,
                              eFlowStrategy, &uCurHAlignState,
@@ -1693,8 +1691,8 @@
                   fContentCurRowHeight, fContentWidthLimit, false);
               rgCurLineLayoutItems->clear();
               auto pTempProcessor =
-                  pdfium::MakeUnique<CXFA_ContentLayoutProcessor>(pLeaderNode,
-                                                                  nullptr);
+                  std::make_unique<CXFA_ContentLayoutProcessor>(pLeaderNode,
+                                                                nullptr);
               InsertFlowedItem(
                   pTempProcessor.get(), bContainerWidthAutoSize,
                   bContainerHeightAutoSize, container_size.height,
@@ -1724,7 +1722,7 @@
             CXFA_Node* pLeaderNode =
                 m_pViewLayoutProcessor->ProcessBookendLeader(m_pCurChildNode);
             if (pLeaderNode) {
-              pProcessor = pdfium::MakeUnique<CXFA_ContentLayoutProcessor>(
+              pProcessor = std::make_unique<CXFA_ContentLayoutProcessor>(
                   pLeaderNode, m_pViewLayoutProcessor.Get());
             }
           }
@@ -1752,7 +1750,7 @@
             CXFA_Node* pTrailerNode =
                 m_pViewLayoutProcessor->ProcessBookendTrailer(m_pCurChildNode);
             if (pTrailerNode) {
-              pProcessor = pdfium::MakeUnique<CXFA_ContentLayoutProcessor>(
+              pProcessor = std::make_unique<CXFA_ContentLayoutProcessor>(
                   pTrailerNode, m_pViewLayoutProcessor.Get());
             }
           }
@@ -1789,7 +1787,7 @@
             pProcessor = std::move(m_pCurChildPreprocessor);
             bNewRow = true;
           } else {
-            pProcessor = pdfium::MakeUnique<CXFA_ContentLayoutProcessor>(
+            pProcessor = std::make_unique<CXFA_ContentLayoutProcessor>(
                 m_pCurChildNode, m_pViewLayoutProcessor.Get());
           }
 
@@ -2273,7 +2271,7 @@
   }
 
   while (!m_PendingNodes.empty()) {
-    auto pPendingProcessor = pdfium::MakeUnique<CXFA_ContentLayoutProcessor>(
+    auto pPendingProcessor = std::make_unique<CXFA_ContentLayoutProcessor>(
         m_PendingNodes.front(), nullptr);
     m_PendingNodes.pop_front();
     pPendingProcessor->DoLayout(false, FLT_MAX, FLT_MAX);
@@ -2398,7 +2396,7 @@
       if (pProcessor->JudgeLeaderOrTrailerForOccur(pOverflowTrailerNode)) {
         if (pOverflowTrailerNode) {
           auto pOverflowLeaderProcessor =
-              pdfium::MakeUnique<CXFA_ContentLayoutProcessor>(
+              std::make_unique<CXFA_ContentLayoutProcessor>(
                   pOverflowTrailerNode, nullptr);
           pOverflowLeaderProcessor->DoLayout(false, FLT_MAX, FLT_MAX);
           pTrailerLayoutItem =
diff --git a/xfa/fxfa/layout/cxfa_layoutprocessor.cpp b/xfa/fxfa/layout/cxfa_layoutprocessor.cpp
index b247e8c..dca3cb1 100644
--- a/xfa/fxfa/layout/cxfa_layoutprocessor.cpp
+++ b/xfa/fxfa/layout/cxfa_layoutprocessor.cpp
@@ -7,7 +7,6 @@
 #include "xfa/fxfa/layout/cxfa_layoutprocessor.h"
 
 #include "fxjs/xfa/cjx_object.h"
-#include "third_party/base/ptr_util.h"
 #include "third_party/base/stl_util.h"
 #include "xfa/fxfa/layout/cxfa_contentlayoutitem.h"
 #include "xfa/fxfa/layout/cxfa_contentlayoutprocessor.h"
@@ -51,14 +50,14 @@
     return -1;
 
   if (!m_pViewLayoutProcessor)
-    m_pViewLayoutProcessor = pdfium::MakeUnique<CXFA_ViewLayoutProcessor>(this);
+    m_pViewLayoutProcessor = std::make_unique<CXFA_ViewLayoutProcessor>(this);
   if (!m_pViewLayoutProcessor->InitLayoutPage(pFormRoot))
     return -1;
 
   if (!m_pViewLayoutProcessor->PrepareFirstPage(pFormRoot))
     return -1;
 
-  m_pContentLayoutProcessor = pdfium::MakeUnique<CXFA_ContentLayoutProcessor>(
+  m_pContentLayoutProcessor = std::make_unique<CXFA_ContentLayoutProcessor>(
       pFormRoot, m_pViewLayoutProcessor.get());
   m_nProgressCounter = 1;
   return 0;
diff --git a/xfa/fxfa/layout/cxfa_viewlayoutprocessor.cpp b/xfa/fxfa/layout/cxfa_viewlayoutprocessor.cpp
index dcfdd47..5dd2a3e 100644
--- a/xfa/fxfa/layout/cxfa_viewlayoutprocessor.cpp
+++ b/xfa/fxfa/layout/cxfa_viewlayoutprocessor.cpp
@@ -10,7 +10,6 @@
 
 #include "fxjs/xfa/cfxjse_engine.h"
 #include "fxjs/xfa/cjx_object.h"
-#include "third_party/base/ptr_util.h"
 #include "third_party/base/stl_util.h"
 #include "xfa/fxfa/cxfa_ffnotify.h"
 #include "xfa/fxfa/cxfa_ffpageview.h"
@@ -577,7 +576,7 @@
 CXFA_ViewLayoutProcessor::CreateViewRecord(CXFA_Node* pPageNode,
                                            bool bCreateNew) {
   ASSERT(pPageNode);
-  auto pNewRecord = pdfium::MakeUnique<CXFA_ViewRecord>();
+  auto pNewRecord = std::make_unique<CXFA_ViewRecord>();
   if (!HasCurrentViewRecord()) {
     CXFA_Node* pPageSet = pPageNode->GetParent();
     if (pPageSet == m_pPageSetNode) {
@@ -642,7 +641,7 @@
 
 CXFA_ViewLayoutProcessor::CXFA_ViewRecord*
 CXFA_ViewLayoutProcessor::CreateViewRecordSimple() {
-  auto pNewRecord = pdfium::MakeUnique<CXFA_ViewRecord>();
+  auto pNewRecord = std::make_unique<CXFA_ViewRecord>();
   if (HasCurrentViewRecord())
     *pNewRecord = *GetCurrentViewRecord();
   else
diff --git a/xfa/fxfa/parser/cscript_datawindow.cpp b/xfa/fxfa/parser/cscript_datawindow.cpp
index 1328dba..5224ed2 100644
--- a/xfa/fxfa/parser/cscript_datawindow.cpp
+++ b/xfa/fxfa/parser/cscript_datawindow.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cscript_datawindow.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_datawindow.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_localemgr.h"
 #include "xfa/fxfa/parser/xfa_utils.h"
@@ -16,6 +17,6 @@
     : CXFA_Object(pDocument,
                   XFA_ObjectType::Object,
                   XFA_Element::DataWindow,
-                  pdfium::MakeUnique<CJX_DataWindow>(this)) {}
+                  std::make_unique<CJX_DataWindow>(this)) {}
 
 CScript_DataWindow::~CScript_DataWindow() {}
diff --git a/xfa/fxfa/parser/cscript_eventpseudomodel.cpp b/xfa/fxfa/parser/cscript_eventpseudomodel.cpp
index b4953af..b461ba8 100644
--- a/xfa/fxfa/parser/cscript_eventpseudomodel.cpp
+++ b/xfa/fxfa/parser/cscript_eventpseudomodel.cpp
@@ -6,13 +6,14 @@
 
 #include "xfa/fxfa/parser/cscript_eventpseudomodel.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_eventpseudomodel.h"
-#include "third_party/base/ptr_util.h"
 
 CScript_EventPseudoModel::CScript_EventPseudoModel(CXFA_Document* pDocument)
     : CXFA_Object(pDocument,
                   XFA_ObjectType::Object,
                   XFA_Element::EventPseudoModel,
-                  pdfium::MakeUnique<CJX_EventPseudoModel>(this)) {}
+                  std::make_unique<CJX_EventPseudoModel>(this)) {}
 
 CScript_EventPseudoModel::~CScript_EventPseudoModel() = default;
diff --git a/xfa/fxfa/parser/cscript_hostpseudomodel.cpp b/xfa/fxfa/parser/cscript_hostpseudomodel.cpp
index 4501633..5d495a8 100644
--- a/xfa/fxfa/parser/cscript_hostpseudomodel.cpp
+++ b/xfa/fxfa/parser/cscript_hostpseudomodel.cpp
@@ -6,13 +6,14 @@
 
 #include "xfa/fxfa/parser/cscript_hostpseudomodel.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_hostpseudomodel.h"
-#include "third_party/base/ptr_util.h"
 
 CScript_HostPseudoModel::CScript_HostPseudoModel(CXFA_Document* pDocument)
     : CXFA_Object(pDocument,
                   XFA_ObjectType::Object,
                   XFA_Element::HostPseudoModel,
-                  pdfium::MakeUnique<CJX_HostPseudoModel>(this)) {}
+                  std::make_unique<CJX_HostPseudoModel>(this)) {}
 
 CScript_HostPseudoModel::~CScript_HostPseudoModel() = default;
diff --git a/xfa/fxfa/parser/cscript_layoutpseudomodel.cpp b/xfa/fxfa/parser/cscript_layoutpseudomodel.cpp
index 4dfad07..1a676d0 100644
--- a/xfa/fxfa/parser/cscript_layoutpseudomodel.cpp
+++ b/xfa/fxfa/parser/cscript_layoutpseudomodel.cpp
@@ -6,13 +6,14 @@
 
 #include "xfa/fxfa/parser/cscript_layoutpseudomodel.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_layoutpseudomodel.h"
-#include "third_party/base/ptr_util.h"
 
 CScript_LayoutPseudoModel::CScript_LayoutPseudoModel(CXFA_Document* pDocument)
     : CXFA_Object(pDocument,
                   XFA_ObjectType::Object,
                   XFA_Element::LayoutPseudoModel,
-                  pdfium::MakeUnique<CJX_LayoutPseudoModel>(this)) {}
+                  std::make_unique<CJX_LayoutPseudoModel>(this)) {}
 
 CScript_LayoutPseudoModel::~CScript_LayoutPseudoModel() = default;
diff --git a/xfa/fxfa/parser/cscript_logpseudomodel.cpp b/xfa/fxfa/parser/cscript_logpseudomodel.cpp
index 185ac80..65207b5 100644
--- a/xfa/fxfa/parser/cscript_logpseudomodel.cpp
+++ b/xfa/fxfa/parser/cscript_logpseudomodel.cpp
@@ -6,13 +6,14 @@
 
 #include "xfa/fxfa/parser/cscript_logpseudomodel.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_logpseudomodel.h"
-#include "third_party/base/ptr_util.h"
 
 CScript_LogPseudoModel::CScript_LogPseudoModel(CXFA_Document* pDocument)
     : CXFA_Object(pDocument,
                   XFA_ObjectType::Object,
                   XFA_Element::LogPseudoModel,
-                  pdfium::MakeUnique<CJX_LogPseudoModel>(this)) {}
+                  std::make_unique<CJX_LogPseudoModel>(this)) {}
 
 CScript_LogPseudoModel::~CScript_LogPseudoModel() {}
diff --git a/xfa/fxfa/parser/cscript_signaturepseudomodel.cpp b/xfa/fxfa/parser/cscript_signaturepseudomodel.cpp
index 1f92369..ba262ce 100644
--- a/xfa/fxfa/parser/cscript_signaturepseudomodel.cpp
+++ b/xfa/fxfa/parser/cscript_signaturepseudomodel.cpp
@@ -6,14 +6,15 @@
 
 #include "xfa/fxfa/parser/cscript_signaturepseudomodel.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_signaturepseudomodel.h"
-#include "third_party/base/ptr_util.h"
 
 CScript_SignaturePseudoModel::CScript_SignaturePseudoModel(
     CXFA_Document* pDocument)
     : CXFA_Object(pDocument,
                   XFA_ObjectType::Object,
                   XFA_Element::SignaturePseudoModel,
-                  pdfium::MakeUnique<CJX_SignaturePseudoModel>(this)) {}
+                  std::make_unique<CJX_SignaturePseudoModel>(this)) {}
 
 CScript_SignaturePseudoModel::~CScript_SignaturePseudoModel() = default;
diff --git a/xfa/fxfa/parser/cxfa_accessiblecontent.cpp b/xfa/fxfa/parser/cxfa_accessiblecontent.cpp
index 4840fbb..e3bab9f 100644
--- a/xfa/fxfa/parser/cxfa_accessiblecontent.cpp
+++ b/xfa/fxfa/parser/cxfa_accessiblecontent.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_accessiblecontent.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::AccessibleContent,
                 {},
                 kAccessibleContentAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_AccessibleContent::~CXFA_AccessibleContent() = default;
diff --git a/xfa/fxfa/parser/cxfa_acrobat.cpp b/xfa/fxfa/parser/cxfa_acrobat.cpp
index 301c056..6054685 100644
--- a/xfa/fxfa/parser/cxfa_acrobat.cpp
+++ b/xfa/fxfa/parser/cxfa_acrobat.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_acrobat.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -34,6 +35,6 @@
                 XFA_Element::Acrobat,
                 kAcrobatPropertyData,
                 kAcrobatAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Acrobat::~CXFA_Acrobat() = default;
diff --git a/xfa/fxfa/parser/cxfa_acrobat7.cpp b/xfa/fxfa/parser/cxfa_acrobat7.cpp
index 8b8afa4..2343ad0 100644
--- a/xfa/fxfa/parser/cxfa_acrobat7.cpp
+++ b/xfa/fxfa/parser/cxfa_acrobat7.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_acrobat7.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -30,6 +31,6 @@
                 XFA_Element::Acrobat7,
                 kAcrobat7PropertyData,
                 kAcrobat7AttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Acrobat7::~CXFA_Acrobat7() = default;
diff --git a/xfa/fxfa/parser/cxfa_adbe_jsconsole.cpp b/xfa/fxfa/parser/cxfa_adbe_jsconsole.cpp
index cab9d62..0f0d356 100644
--- a/xfa/fxfa/parser/cxfa_adbe_jsconsole.cpp
+++ b/xfa/fxfa/parser/cxfa_adbe_jsconsole.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_adbe_jsconsole.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::ADBE_JSConsole,
                 {},
                 kADBE_JSConsoleAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_ADBE_JSConsole::~CXFA_ADBE_JSConsole() = default;
diff --git a/xfa/fxfa/parser/cxfa_adbe_jsdebugger.cpp b/xfa/fxfa/parser/cxfa_adbe_jsdebugger.cpp
index 01775e0..710894b 100644
--- a/xfa/fxfa/parser/cxfa_adbe_jsdebugger.cpp
+++ b/xfa/fxfa/parser/cxfa_adbe_jsdebugger.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_adbe_jsdebugger.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::ADBE_JSDebugger,
                 {},
                 kADBE_JSDebuggerAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_ADBE_JSDebugger::~CXFA_ADBE_JSDebugger() = default;
diff --git a/xfa/fxfa/parser/cxfa_addsilentprint.cpp b/xfa/fxfa/parser/cxfa_addsilentprint.cpp
index 26b7315..45fe9b9 100644
--- a/xfa/fxfa/parser/cxfa_addsilentprint.cpp
+++ b/xfa/fxfa/parser/cxfa_addsilentprint.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_addsilentprint.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::AddSilentPrint,
                 {},
                 kAddSilentPrintAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_AddSilentPrint::~CXFA_AddSilentPrint() = default;
diff --git a/xfa/fxfa/parser/cxfa_addviewerpreferences.cpp b/xfa/fxfa/parser/cxfa_addviewerpreferences.cpp
index d07fda2..dbcca5b 100644
--- a/xfa/fxfa/parser/cxfa_addviewerpreferences.cpp
+++ b/xfa/fxfa/parser/cxfa_addviewerpreferences.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_addviewerpreferences.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::AddViewerPreferences,
                 {},
                 kAddViewerPreferencesAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_AddViewerPreferences::~CXFA_AddViewerPreferences() = default;
diff --git a/xfa/fxfa/parser/cxfa_adjustdata.cpp b/xfa/fxfa/parser/cxfa_adjustdata.cpp
index 6dbb3d4..4bc8326 100644
--- a/xfa/fxfa/parser/cxfa_adjustdata.cpp
+++ b/xfa/fxfa/parser/cxfa_adjustdata.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_adjustdata.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::AdjustData,
                 {},
                 kAdjustDataAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_AdjustData::~CXFA_AdjustData() = default;
diff --git a/xfa/fxfa/parser/cxfa_adobeextensionlevel.cpp b/xfa/fxfa/parser/cxfa_adobeextensionlevel.cpp
index dce1399..41468f3 100644
--- a/xfa/fxfa/parser/cxfa_adobeextensionlevel.cpp
+++ b/xfa/fxfa/parser/cxfa_adobeextensionlevel.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_adobeextensionlevel.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::AdobeExtensionLevel,
                 {},
                 kAdobeExtensionLevelAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_AdobeExtensionLevel::~CXFA_AdobeExtensionLevel() = default;
diff --git a/xfa/fxfa/parser/cxfa_agent.cpp b/xfa/fxfa/parser/cxfa_agent.cpp
index f55b7bb..8109ac5 100644
--- a/xfa/fxfa/parser/cxfa_agent.cpp
+++ b/xfa/fxfa/parser/cxfa_agent.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_agent.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::Agent,
                 {},
                 kAgentAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Agent::~CXFA_Agent() = default;
diff --git a/xfa/fxfa/parser/cxfa_alwaysembed.cpp b/xfa/fxfa/parser/cxfa_alwaysembed.cpp
index afbb4a0..5b0519d 100644
--- a/xfa/fxfa/parser/cxfa_alwaysembed.cpp
+++ b/xfa/fxfa/parser/cxfa_alwaysembed.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_alwaysembed.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::AlwaysEmbed,
                 {},
                 kAlwaysEmbedAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_AlwaysEmbed::~CXFA_AlwaysEmbed() = default;
diff --git a/xfa/fxfa/parser/cxfa_amd.cpp b/xfa/fxfa/parser/cxfa_amd.cpp
index 0f6c9ef..42dbe4d 100644
--- a/xfa/fxfa/parser/cxfa_amd.cpp
+++ b/xfa/fxfa/parser/cxfa_amd.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_amd.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Amd,
                 {},
                 kAmdAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Amd::~CXFA_Amd() = default;
diff --git a/xfa/fxfa/parser/cxfa_appearancefilter.cpp b/xfa/fxfa/parser/cxfa_appearancefilter.cpp
index 6d076da..968052b 100644
--- a/xfa/fxfa/parser/cxfa_appearancefilter.cpp
+++ b/xfa/fxfa/parser/cxfa_appearancefilter.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_appearancefilter.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -30,6 +31,6 @@
                 XFA_Element::AppearanceFilter,
                 {},
                 kAppearanceFilterAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_AppearanceFilter::~CXFA_AppearanceFilter() = default;
diff --git a/xfa/fxfa/parser/cxfa_arc.cpp b/xfa/fxfa/parser/cxfa_arc.cpp
index f9e2720..115265c 100644
--- a/xfa/fxfa/parser/cxfa_arc.cpp
+++ b/xfa/fxfa/parser/cxfa_arc.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_arc.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -37,6 +38,6 @@
                XFA_Element::Arc,
                kArcPropertyData,
                kArcAttributeData,
-               pdfium::MakeUnique<CJX_Node>(this)) {}
+               std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Arc::~CXFA_Arc() = default;
diff --git a/xfa/fxfa/parser/cxfa_area.cpp b/xfa/fxfa/parser/cxfa_area.cpp
index 16fa014..743ab28 100644
--- a/xfa/fxfa/parser/cxfa_area.cpp
+++ b/xfa/fxfa/parser/cxfa_area.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_area.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_container.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -40,6 +41,6 @@
           XFA_Element::Area,
           kAreaPropertyData,
           kAreaAttributeData,
-          pdfium::MakeUnique<CJX_Container>(this)) {}
+          std::make_unique<CJX_Container>(this)) {}
 
 CXFA_Area::~CXFA_Area() = default;
diff --git a/xfa/fxfa/parser/cxfa_assist.cpp b/xfa/fxfa/parser/cxfa_assist.cpp
index cac0bc6..84c34fd 100644
--- a/xfa/fxfa/parser/cxfa_assist.cpp
+++ b/xfa/fxfa/parser/cxfa_assist.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_assist.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -33,6 +34,6 @@
                 XFA_Element::Assist,
                 kAssistPropertyData,
                 kAssistAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Assist::~CXFA_Assist() = default;
diff --git a/xfa/fxfa/parser/cxfa_attributes.cpp b/xfa/fxfa/parser/cxfa_attributes.cpp
index aeaf8cf..8cf386a 100644
--- a/xfa/fxfa/parser/cxfa_attributes.cpp
+++ b/xfa/fxfa/parser/cxfa_attributes.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_attributes.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Attributes,
                 {},
                 kAttributesAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Attributes::~CXFA_Attributes() = default;
diff --git a/xfa/fxfa/parser/cxfa_autosave.cpp b/xfa/fxfa/parser/cxfa_autosave.cpp
index 978cd56..7b4880b 100644
--- a/xfa/fxfa/parser/cxfa_autosave.cpp
+++ b/xfa/fxfa/parser/cxfa_autosave.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_autosave.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::AutoSave,
                 {},
                 kAutoSaveAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_AutoSave::~CXFA_AutoSave() = default;
diff --git a/xfa/fxfa/parser/cxfa_barcode.cpp b/xfa/fxfa/parser/cxfa_barcode.cpp
index a7dbb71..166ab76 100644
--- a/xfa/fxfa/parser/cxfa_barcode.cpp
+++ b/xfa/fxfa/parser/cxfa_barcode.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_barcode.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_measurement.h"
 
 namespace {
@@ -50,7 +51,7 @@
                 XFA_Element::Barcode,
                 {},
                 kBarcodeAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Barcode::~CXFA_Barcode() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_base.cpp b/xfa/fxfa/parser/cxfa_base.cpp
index c5d0f88..5143d30 100644
--- a/xfa/fxfa/parser/cxfa_base.cpp
+++ b/xfa/fxfa/parser/cxfa_base.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_base.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Base,
                 {},
                 kBaseAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Base::~CXFA_Base() = default;
diff --git a/xfa/fxfa/parser/cxfa_batchoutput.cpp b/xfa/fxfa/parser/cxfa_batchoutput.cpp
index daec03f..1f51952 100644
--- a/xfa/fxfa/parser/cxfa_batchoutput.cpp
+++ b/xfa/fxfa/parser/cxfa_batchoutput.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_batchoutput.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::BatchOutput,
                 {},
                 kBatchOutputAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_BatchOutput::~CXFA_BatchOutput() = default;
diff --git a/xfa/fxfa/parser/cxfa_behavioroverride.cpp b/xfa/fxfa/parser/cxfa_behavioroverride.cpp
index 86ea80b..9724624 100644
--- a/xfa/fxfa/parser/cxfa_behavioroverride.cpp
+++ b/xfa/fxfa/parser/cxfa_behavioroverride.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_behavioroverride.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::BehaviorOverride,
                 {},
                 kBehaviorOverrideAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_BehaviorOverride::~CXFA_BehaviorOverride() = default;
diff --git a/xfa/fxfa/parser/cxfa_bind.cpp b/xfa/fxfa/parser/cxfa_bind.cpp
index 87f01e8..147c7a8 100644
--- a/xfa/fxfa/parser/cxfa_bind.cpp
+++ b/xfa/fxfa/parser/cxfa_bind.cpp
@@ -6,9 +6,10 @@
 
 #include "xfa/fxfa/parser/cxfa_bind.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
 #include "fxjs/xfa/cjx_object.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_picture.h"
 
 namespace {
@@ -41,7 +42,7 @@
                 XFA_Element::Bind,
                 kBindPropertyData,
                 kBindAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Bind::~CXFA_Bind() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_binditems.cpp b/xfa/fxfa/parser/cxfa_binditems.cpp
index 44badb8..1441e46 100644
--- a/xfa/fxfa/parser/cxfa_binditems.cpp
+++ b/xfa/fxfa/parser/cxfa_binditems.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_binditems.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,7 +29,7 @@
                 XFA_Element::BindItems,
                 {},
                 kBindItemsAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_BindItems::~CXFA_BindItems() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_bookend.cpp b/xfa/fxfa/parser/cxfa_bookend.cpp
index 143a484..2b34aa1 100644
--- a/xfa/fxfa/parser/cxfa_bookend.cpp
+++ b/xfa/fxfa/parser/cxfa_bookend.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_bookend.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::Bookend,
                 {},
                 kBookendAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Bookend::~CXFA_Bookend() = default;
diff --git a/xfa/fxfa/parser/cxfa_boolean.cpp b/xfa/fxfa/parser/cxfa_boolean.cpp
index 919d679..9a5e0a9 100644
--- a/xfa/fxfa/parser/cxfa_boolean.cpp
+++ b/xfa/fxfa/parser/cxfa_boolean.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_boolean.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_boolean.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::Boolean,
                 {},
                 kBooleanAttributeData,
-                pdfium::MakeUnique<CJX_Boolean>(this)) {}
+                std::make_unique<CJX_Boolean>(this)) {}
 
 CXFA_Boolean::~CXFA_Boolean() {}
diff --git a/xfa/fxfa/parser/cxfa_border.cpp b/xfa/fxfa/parser/cxfa_border.cpp
index 1d315ad..cf9b81d 100644
--- a/xfa/fxfa/parser/cxfa_border.cpp
+++ b/xfa/fxfa/parser/cxfa_border.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_border.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -40,6 +41,6 @@
                      XFA_Element::Border,
                      kBorderPropertyData,
                      kBorderAttributeData,
-                     pdfium::MakeUnique<CJX_Node>(this)) {}
+                     std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Border::~CXFA_Border() = default;
diff --git a/xfa/fxfa/parser/cxfa_break.cpp b/xfa/fxfa/parser/cxfa_break.cpp
index e02fa1e..d4cbacd 100644
--- a/xfa/fxfa/parser/cxfa_break.cpp
+++ b/xfa/fxfa/parser/cxfa_break.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_break.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -43,6 +44,6 @@
                 XFA_Element::Break,
                 kBreakPropertyData,
                 kBreakAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Break::~CXFA_Break() = default;
diff --git a/xfa/fxfa/parser/cxfa_breakafter.cpp b/xfa/fxfa/parser/cxfa_breakafter.cpp
index 252a607..0b91d81 100644
--- a/xfa/fxfa/parser/cxfa_breakafter.cpp
+++ b/xfa/fxfa/parser/cxfa_breakafter.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_breakafter.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -37,6 +38,6 @@
                 XFA_Element::BreakAfter,
                 kBreakAfterPropertyData,
                 kBreakAfterAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_BreakAfter::~CXFA_BreakAfter() = default;
diff --git a/xfa/fxfa/parser/cxfa_breakbefore.cpp b/xfa/fxfa/parser/cxfa_breakbefore.cpp
index 0518ae1..db3972a 100644
--- a/xfa/fxfa/parser/cxfa_breakbefore.cpp
+++ b/xfa/fxfa/parser/cxfa_breakbefore.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_breakbefore.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -37,6 +38,6 @@
                 XFA_Element::BreakBefore,
                 kBreakBeforePropertyData,
                 kBreakBeforeAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_BreakBefore::~CXFA_BreakBefore() = default;
diff --git a/xfa/fxfa/parser/cxfa_button.cpp b/xfa/fxfa/parser/cxfa_button.cpp
index 4b35aad..2d32c74 100644
--- a/xfa/fxfa/parser/cxfa_button.cpp
+++ b/xfa/fxfa/parser/cxfa_button.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_button.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -33,7 +34,7 @@
                 XFA_Element::Button,
                 kButtonPropertyData,
                 kButtonAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Button::~CXFA_Button() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_cache.cpp b/xfa/fxfa/parser/cxfa_cache.cpp
index 8b51c02..3437a35 100644
--- a/xfa/fxfa/parser/cxfa_cache.cpp
+++ b/xfa/fxfa/parser/cxfa_cache.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_cache.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -30,6 +31,6 @@
                 XFA_Element::Cache,
                 kCachePropertyData,
                 kCacheAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Cache::~CXFA_Cache() {}
diff --git a/xfa/fxfa/parser/cxfa_calculate.cpp b/xfa/fxfa/parser/cxfa_calculate.cpp
index ce79864..ad8b196 100644
--- a/xfa/fxfa/parser/cxfa_calculate.cpp
+++ b/xfa/fxfa/parser/cxfa_calculate.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_calculate.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_message.h"
 #include "xfa/fxfa/parser/cxfa_script.h"
 #include "xfa/fxfa/parser/cxfa_text.h"
@@ -38,7 +39,7 @@
                 XFA_Element::Calculate,
                 kCalculatePropertyData,
                 kCalculateAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Calculate::~CXFA_Calculate() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_calendarsymbols.cpp b/xfa/fxfa/parser/cxfa_calendarsymbols.cpp
index 155a296..348d3bb 100644
--- a/xfa/fxfa/parser/cxfa_calendarsymbols.cpp
+++ b/xfa/fxfa/parser/cxfa_calendarsymbols.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_calendarsymbols.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -34,6 +35,6 @@
                 XFA_Element::CalendarSymbols,
                 kCalendarSymbolsPropertyData,
                 kCalendarSymbolsAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_CalendarSymbols::~CXFA_CalendarSymbols() = default;
diff --git a/xfa/fxfa/parser/cxfa_caption.cpp b/xfa/fxfa/parser/cxfa_caption.cpp
index 1fadb8d..227e417 100644
--- a/xfa/fxfa/parser/cxfa_caption.cpp
+++ b/xfa/fxfa/parser/cxfa_caption.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_caption.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_font.h"
 #include "xfa/fxfa/parser/cxfa_margin.h"
 #include "xfa/fxfa/parser/cxfa_measurement.h"
@@ -42,7 +43,7 @@
                 XFA_Element::Caption,
                 kCaptionPropertyData,
                 kCaptionAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Caption::~CXFA_Caption() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_certificate.cpp b/xfa/fxfa/parser/cxfa_certificate.cpp
index 65b6941..26f7f14 100644
--- a/xfa/fxfa/parser/cxfa_certificate.cpp
+++ b/xfa/fxfa/parser/cxfa_certificate.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_certificate.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_textnode.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::Certificate,
                 {},
                 kCertificateAttributeData,
-                pdfium::MakeUnique<CJX_TextNode>(this)) {}
+                std::make_unique<CJX_TextNode>(this)) {}
 
 CXFA_Certificate::~CXFA_Certificate() = default;
diff --git a/xfa/fxfa/parser/cxfa_certificates.cpp b/xfa/fxfa/parser/cxfa_certificates.cpp
index 42b025e..38b2d91 100644
--- a/xfa/fxfa/parser/cxfa_certificates.cpp
+++ b/xfa/fxfa/parser/cxfa_certificates.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_certificates.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -37,6 +38,6 @@
                 XFA_Element::Certificates,
                 kCertificatesPropertyData,
                 kCertificatesAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Certificates::~CXFA_Certificates() = default;
diff --git a/xfa/fxfa/parser/cxfa_change.cpp b/xfa/fxfa/parser/cxfa_change.cpp
index ae8da63..d1e0fe1 100644
--- a/xfa/fxfa/parser/cxfa_change.cpp
+++ b/xfa/fxfa/parser/cxfa_change.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_change.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Change,
                 {},
                 kChangeAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Change::~CXFA_Change() = default;
diff --git a/xfa/fxfa/parser/cxfa_checkbutton.cpp b/xfa/fxfa/parser/cxfa_checkbutton.cpp
index 903ce49..785d9f3 100644
--- a/xfa/fxfa/parser/cxfa_checkbutton.cpp
+++ b/xfa/fxfa/parser/cxfa_checkbutton.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_checkbutton.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -39,7 +40,7 @@
                 XFA_Element::CheckButton,
                 kCheckButtonPropertyData,
                 kCheckButtonAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_CheckButton::~CXFA_CheckButton() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_choicelist.cpp b/xfa/fxfa/parser/cxfa_choicelist.cpp
index 63e9882..ff4921c 100644
--- a/xfa/fxfa/parser/cxfa_choicelist.cpp
+++ b/xfa/fxfa/parser/cxfa_choicelist.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_choicelist.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -38,7 +39,7 @@
                 XFA_Element::ChoiceList,
                 kChoiceListPropertyData,
                 kChoiceListAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_ChoiceList::~CXFA_ChoiceList() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_color.cpp b/xfa/fxfa/parser/cxfa_color.cpp
index 477121b..5acbcd2 100644
--- a/xfa/fxfa/parser/cxfa_color.cpp
+++ b/xfa/fxfa/parser/cxfa_color.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_color.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -33,7 +34,7 @@
                 XFA_Element::Color,
                 kColorPropertyData,
                 kColorAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Color::~CXFA_Color() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_comb.cpp b/xfa/fxfa/parser/cxfa_comb.cpp
index 4bd8ac5..d864f69 100644
--- a/xfa/fxfa/parser/cxfa_comb.cpp
+++ b/xfa/fxfa/parser/cxfa_comb.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_comb.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::Comb,
                 {},
                 kCombAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Comb::~CXFA_Comb() {}
diff --git a/xfa/fxfa/parser/cxfa_command.cpp b/xfa/fxfa/parser/cxfa_command.cpp
index 4d1e283..aed9e43 100644
--- a/xfa/fxfa/parser/cxfa_command.cpp
+++ b/xfa/fxfa/parser/cxfa_command.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_command.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -36,6 +37,6 @@
                 XFA_Element::Command,
                 kCommandPropertyData,
                 kCommandAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Command::~CXFA_Command() = default;
diff --git a/xfa/fxfa/parser/cxfa_common.cpp b/xfa/fxfa/parser/cxfa_common.cpp
index 576234c..8b4c334 100644
--- a/xfa/fxfa/parser/cxfa_common.cpp
+++ b/xfa/fxfa/parser/cxfa_common.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_common.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -37,6 +38,6 @@
                 XFA_Element::Common,
                 kCommonPropertyData,
                 kCommonAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Common::~CXFA_Common() = default;
diff --git a/xfa/fxfa/parser/cxfa_compress.cpp b/xfa/fxfa/parser/cxfa_compress.cpp
index 6b593e7..83c30bb 100644
--- a/xfa/fxfa/parser/cxfa_compress.cpp
+++ b/xfa/fxfa/parser/cxfa_compress.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_compress.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::Compress,
                 {},
                 kCompressAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Compress::~CXFA_Compress() = default;
diff --git a/xfa/fxfa/parser/cxfa_compression.cpp b/xfa/fxfa/parser/cxfa_compression.cpp
index 344101d..238d649 100644
--- a/xfa/fxfa/parser/cxfa_compression.cpp
+++ b/xfa/fxfa/parser/cxfa_compression.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_compression.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -33,6 +34,6 @@
                 XFA_Element::Compression,
                 kCompressionPropertyData,
                 kCompressionAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Compression::~CXFA_Compression() = default;
diff --git a/xfa/fxfa/parser/cxfa_compresslogicalstructure.cpp b/xfa/fxfa/parser/cxfa_compresslogicalstructure.cpp
index c9bcf6b..5e54470 100644
--- a/xfa/fxfa/parser/cxfa_compresslogicalstructure.cpp
+++ b/xfa/fxfa/parser/cxfa_compresslogicalstructure.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_compresslogicalstructure.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::CompressLogicalStructure,
                 {},
                 kCompressLogicalStructureAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_CompressLogicalStructure::~CXFA_CompressLogicalStructure() = default;
diff --git a/xfa/fxfa/parser/cxfa_compressobjectstream.cpp b/xfa/fxfa/parser/cxfa_compressobjectstream.cpp
index ed643d0..eb1ba7f 100644
--- a/xfa/fxfa/parser/cxfa_compressobjectstream.cpp
+++ b/xfa/fxfa/parser/cxfa_compressobjectstream.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_compressobjectstream.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::CompressObjectStream,
                 {},
                 kCompressObjectStreamAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_CompressObjectStream::~CXFA_CompressObjectStream() = default;
diff --git a/xfa/fxfa/parser/cxfa_config.cpp b/xfa/fxfa/parser/cxfa_config.cpp
index 540e967..67930e6 100644
--- a/xfa/fxfa/parser/cxfa_config.cpp
+++ b/xfa/fxfa/parser/cxfa_config.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_config.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -32,6 +33,6 @@
                 XFA_Element::Config,
                 kConfigPropertyData,
                 kConfigAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Config::~CXFA_Config() = default;
diff --git a/xfa/fxfa/parser/cxfa_conformance.cpp b/xfa/fxfa/parser/cxfa_conformance.cpp
index b9c8e34..4c7a522 100644
--- a/xfa/fxfa/parser/cxfa_conformance.cpp
+++ b/xfa/fxfa/parser/cxfa_conformance.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_conformance.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Conformance,
                 {},
                 kConformanceAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Conformance::~CXFA_Conformance() = default;
diff --git a/xfa/fxfa/parser/cxfa_connect.cpp b/xfa/fxfa/parser/cxfa_connect.cpp
index c46debc..5c2b3d2 100644
--- a/xfa/fxfa/parser/cxfa_connect.cpp
+++ b/xfa/fxfa/parser/cxfa_connect.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_connect.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -42,6 +43,6 @@
                 XFA_Element::Connect,
                 kConnectPropertyData,
                 kConnectAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Connect::~CXFA_Connect() = default;
diff --git a/xfa/fxfa/parser/cxfa_connectionset.cpp b/xfa/fxfa/parser/cxfa_connectionset.cpp
index 74585e6..102df26 100644
--- a/xfa/fxfa/parser/cxfa_connectionset.cpp
+++ b/xfa/fxfa/parser/cxfa_connectionset.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_connectionset.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_model.h"
-#include "third_party/base/ptr_util.h"
 
 CXFA_ConnectionSet::CXFA_ConnectionSet(CXFA_Document* doc,
                                        XFA_PacketType packet)
@@ -18,6 +19,6 @@
                 XFA_Element::ConnectionSet,
                 {},
                 {},
-                pdfium::MakeUnique<CJX_Model>(this)) {}
+                std::make_unique<CJX_Model>(this)) {}
 
 CXFA_ConnectionSet::~CXFA_ConnectionSet() = default;
diff --git a/xfa/fxfa/parser/cxfa_connectstring.cpp b/xfa/fxfa/parser/cxfa_connectstring.cpp
index c5e37f4..ff5fc65 100644
--- a/xfa/fxfa/parser/cxfa_connectstring.cpp
+++ b/xfa/fxfa/parser/cxfa_connectstring.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_connectstring.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_textnode.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::ConnectString,
                 {},
                 kConnectStringAttributeData,
-                pdfium::MakeUnique<CJX_TextNode>(this)) {}
+                std::make_unique<CJX_TextNode>(this)) {}
 
 CXFA_ConnectString::~CXFA_ConnectString() = default;
diff --git a/xfa/fxfa/parser/cxfa_contentarea.cpp b/xfa/fxfa/parser/cxfa_contentarea.cpp
index 8c62c0a..e5b3f6a 100644
--- a/xfa/fxfa/parser/cxfa_contentarea.cpp
+++ b/xfa/fxfa/parser/cxfa_contentarea.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_contentarea.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_container.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -38,6 +39,6 @@
                 XFA_Element::ContentArea,
                 kContentAreaPropertyData,
                 kContentAreaAttributeData,
-                pdfium::MakeUnique<CJX_Container>(this)) {}
+                std::make_unique<CJX_Container>(this)) {}
 
 CXFA_ContentArea::~CXFA_ContentArea() = default;
diff --git a/xfa/fxfa/parser/cxfa_contentcopy.cpp b/xfa/fxfa/parser/cxfa_contentcopy.cpp
index 38fd27e..5d09ebb 100644
--- a/xfa/fxfa/parser/cxfa_contentcopy.cpp
+++ b/xfa/fxfa/parser/cxfa_contentcopy.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_contentcopy.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::ContentCopy,
                 {},
                 kContentCopyAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_ContentCopy::~CXFA_ContentCopy() = default;
diff --git a/xfa/fxfa/parser/cxfa_copies.cpp b/xfa/fxfa/parser/cxfa_copies.cpp
index 7b8ef0e..167b2e5 100644
--- a/xfa/fxfa/parser/cxfa_copies.cpp
+++ b/xfa/fxfa/parser/cxfa_copies.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_copies.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Copies,
                 {},
                 kCopiesAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Copies::~CXFA_Copies() = default;
diff --git a/xfa/fxfa/parser/cxfa_corner.cpp b/xfa/fxfa/parser/cxfa_corner.cpp
index 3ffbc71..0459df8 100644
--- a/xfa/fxfa/parser/cxfa_corner.cpp
+++ b/xfa/fxfa/parser/cxfa_corner.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_corner.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -41,6 +42,6 @@
                   XFA_Element::Corner,
                   kCornerPropertyData,
                   kCornerAttributeData,
-                  pdfium::MakeUnique<CJX_Node>(this)) {}
+                  std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Corner::~CXFA_Corner() = default;
diff --git a/xfa/fxfa/parser/cxfa_creator.cpp b/xfa/fxfa/parser/cxfa_creator.cpp
index e03b32a..0f38f9e 100644
--- a/xfa/fxfa/parser/cxfa_creator.cpp
+++ b/xfa/fxfa/parser/cxfa_creator.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_creator.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Creator,
                 {},
                 kCreatorAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Creator::~CXFA_Creator() = default;
diff --git a/xfa/fxfa/parser/cxfa_currencysymbol.cpp b/xfa/fxfa/parser/cxfa_currencysymbol.cpp
index beca653..81f6422 100644
--- a/xfa/fxfa/parser/cxfa_currencysymbol.cpp
+++ b/xfa/fxfa/parser/cxfa_currencysymbol.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_currencysymbol.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::CurrencySymbol,
                 {},
                 kCurrencySymbolAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_CurrencySymbol::~CXFA_CurrencySymbol() = default;
diff --git a/xfa/fxfa/parser/cxfa_currencysymbols.cpp b/xfa/fxfa/parser/cxfa_currencysymbols.cpp
index 3b2e90c..4198e02 100644
--- a/xfa/fxfa/parser/cxfa_currencysymbols.cpp
+++ b/xfa/fxfa/parser/cxfa_currencysymbols.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_currencysymbols.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::CurrencySymbols,
                 kCurrencySymbolsPropertyData,
                 {},
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_CurrencySymbols::~CXFA_CurrencySymbols() = default;
diff --git a/xfa/fxfa/parser/cxfa_currentpage.cpp b/xfa/fxfa/parser/cxfa_currentpage.cpp
index a98aa1c..e673b48 100644
--- a/xfa/fxfa/parser/cxfa_currentpage.cpp
+++ b/xfa/fxfa/parser/cxfa_currentpage.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_currentpage.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::CurrentPage,
                 {},
                 kCurrentPageAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_CurrentPage::~CXFA_CurrentPage() = default;
diff --git a/xfa/fxfa/parser/cxfa_data.cpp b/xfa/fxfa/parser/cxfa_data.cpp
index 5173147..463efe1 100644
--- a/xfa/fxfa/parser/cxfa_data.cpp
+++ b/xfa/fxfa/parser/cxfa_data.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_data.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -34,6 +35,6 @@
                 XFA_Element::Data,
                 kDataPropertyData,
                 kDataAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Data::~CXFA_Data() = default;
diff --git a/xfa/fxfa/parser/cxfa_datagroup.cpp b/xfa/fxfa/parser/cxfa_datagroup.cpp
index bb5b5fb..67caf00 100644
--- a/xfa/fxfa/parser/cxfa_datagroup.cpp
+++ b/xfa/fxfa/parser/cxfa_datagroup.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_datagroup.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -25,6 +26,6 @@
                 XFA_Element::DataGroup,
                 {},
                 kDataGroupAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_DataGroup::~CXFA_DataGroup() = default;
diff --git a/xfa/fxfa/parser/cxfa_datamodel.cpp b/xfa/fxfa/parser/cxfa_datamodel.cpp
index 4b506c5..8165458 100644
--- a/xfa/fxfa/parser/cxfa_datamodel.cpp
+++ b/xfa/fxfa/parser/cxfa_datamodel.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_datamodel.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_model.h"
-#include "third_party/base/ptr_util.h"
 
 CXFA_DataModel::CXFA_DataModel(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
@@ -17,6 +18,6 @@
                 XFA_Element::DataModel,
                 {},
                 {},
-                pdfium::MakeUnique<CJX_Model>(this)) {}
+                std::make_unique<CJX_Model>(this)) {}
 
 CXFA_DataModel::~CXFA_DataModel() = default;
diff --git a/xfa/fxfa/parser/cxfa_datavalue.cpp b/xfa/fxfa/parser/cxfa_datavalue.cpp
index 6e541a4..4c984be 100644
--- a/xfa/fxfa/parser/cxfa_datavalue.cpp
+++ b/xfa/fxfa/parser/cxfa_datavalue.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_datavalue.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -30,6 +31,6 @@
                 XFA_Element::DataValue,
                 {},
                 kDataValueAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_DataValue::~CXFA_DataValue() = default;
diff --git a/xfa/fxfa/parser/cxfa_date.cpp b/xfa/fxfa/parser/cxfa_date.cpp
index 9508e65..857c5d1 100644
--- a/xfa/fxfa/parser/cxfa_date.cpp
+++ b/xfa/fxfa/parser/cxfa_date.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_date.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::Date,
                 {},
                 kDateAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Date::~CXFA_Date() = default;
diff --git a/xfa/fxfa/parser/cxfa_datepattern.cpp b/xfa/fxfa/parser/cxfa_datepattern.cpp
index 9f4f635..8b97787 100644
--- a/xfa/fxfa/parser/cxfa_datepattern.cpp
+++ b/xfa/fxfa/parser/cxfa_datepattern.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_datepattern.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::DatePattern,
                 {},
                 kDatePatternAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_DatePattern::~CXFA_DatePattern() = default;
diff --git a/xfa/fxfa/parser/cxfa_datepatterns.cpp b/xfa/fxfa/parser/cxfa_datepatterns.cpp
index 9ac1922..f0c5a77 100644
--- a/xfa/fxfa/parser/cxfa_datepatterns.cpp
+++ b/xfa/fxfa/parser/cxfa_datepatterns.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_datepatterns.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -25,6 +26,6 @@
                 XFA_Element::DatePatterns,
                 kDatePatternsPropertyData,
                 {},
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_DatePatterns::~CXFA_DatePatterns() = default;
diff --git a/xfa/fxfa/parser/cxfa_datetime.cpp b/xfa/fxfa/parser/cxfa_datetime.cpp
index 313a469..193d66f 100644
--- a/xfa/fxfa/parser/cxfa_datetime.cpp
+++ b/xfa/fxfa/parser/cxfa_datetime.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_datetime.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::DateTime,
                 {},
                 kDateTimeAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_DateTime::~CXFA_DateTime() = default;
diff --git a/xfa/fxfa/parser/cxfa_datetimeedit.cpp b/xfa/fxfa/parser/cxfa_datetimeedit.cpp
index e64abbd..026105d 100644
--- a/xfa/fxfa/parser/cxfa_datetimeedit.cpp
+++ b/xfa/fxfa/parser/cxfa_datetimeedit.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_datetimeedit.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -38,7 +39,7 @@
                 XFA_Element::DateTimeEdit,
                 kDateTimeEditPropertyData,
                 kDateTimeEditAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_DateTimeEdit::~CXFA_DateTimeEdit() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_datetimesymbols.cpp b/xfa/fxfa/parser/cxfa_datetimesymbols.cpp
index 159d821..b1e25ce 100644
--- a/xfa/fxfa/parser/cxfa_datetimesymbols.cpp
+++ b/xfa/fxfa/parser/cxfa_datetimesymbols.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_datetimesymbols.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 CXFA_DateTimeSymbols::CXFA_DateTimeSymbols(CXFA_Document* doc,
                                            XFA_PacketType packet)
@@ -18,6 +19,6 @@
                 XFA_Element::DateTimeSymbols,
                 {},
                 {},
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_DateTimeSymbols::~CXFA_DateTimeSymbols() = default;
diff --git a/xfa/fxfa/parser/cxfa_day.cpp b/xfa/fxfa/parser/cxfa_day.cpp
index ffbeb2f..5f17763 100644
--- a/xfa/fxfa/parser/cxfa_day.cpp
+++ b/xfa/fxfa/parser/cxfa_day.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_day.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 CXFA_Day::CXFA_Day(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
@@ -17,6 +18,6 @@
                 XFA_Element::Day,
                 {},
                 {},
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Day::~CXFA_Day() = default;
diff --git a/xfa/fxfa/parser/cxfa_daynames.cpp b/xfa/fxfa/parser/cxfa_daynames.cpp
index 8a3b447..5321f3f 100644
--- a/xfa/fxfa/parser/cxfa_daynames.cpp
+++ b/xfa/fxfa/parser/cxfa_daynames.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_daynames.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::DayNames,
                 kDayNamesPropertyData,
                 kDayNamesAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_DayNames::~CXFA_DayNames() = default;
diff --git a/xfa/fxfa/parser/cxfa_debug.cpp b/xfa/fxfa/parser/cxfa_debug.cpp
index f4b6ac9..3381d65 100644
--- a/xfa/fxfa/parser/cxfa_debug.cpp
+++ b/xfa/fxfa/parser/cxfa_debug.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_debug.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -30,6 +31,6 @@
                 XFA_Element::Debug,
                 kDebugPropertyData,
                 kDebugAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Debug::~CXFA_Debug() = default;
diff --git a/xfa/fxfa/parser/cxfa_decimal.cpp b/xfa/fxfa/parser/cxfa_decimal.cpp
index 93e5e10..69a0ec8 100644
--- a/xfa/fxfa/parser/cxfa_decimal.cpp
+++ b/xfa/fxfa/parser/cxfa_decimal.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_decimal.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_object.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -30,6 +31,6 @@
                 XFA_Element::Decimal,
                 {},
                 kDecimalAttributeData,
-                pdfium::MakeUnique<CJX_Object>(this)) {}
+                std::make_unique<CJX_Object>(this)) {}
 
 CXFA_Decimal::~CXFA_Decimal() = default;
diff --git a/xfa/fxfa/parser/cxfa_defaulttypeface.cpp b/xfa/fxfa/parser/cxfa_defaulttypeface.cpp
index 1d38e32..23eee09 100644
--- a/xfa/fxfa/parser/cxfa_defaulttypeface.cpp
+++ b/xfa/fxfa/parser/cxfa_defaulttypeface.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_defaulttypeface.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::DefaultTypeface,
                 {},
                 kDefaultTypefaceAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_DefaultTypeface::~CXFA_DefaultTypeface() = default;
diff --git a/xfa/fxfa/parser/cxfa_defaultui.cpp b/xfa/fxfa/parser/cxfa_defaultui.cpp
index 26114b0..f0dbf02 100644
--- a/xfa/fxfa/parser/cxfa_defaultui.cpp
+++ b/xfa/fxfa/parser/cxfa_defaultui.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_defaultui.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -31,7 +32,7 @@
                 XFA_Element::DefaultUi,
                 kDefaultUiPropertyData,
                 kDefaultUiAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_DefaultUi::~CXFA_DefaultUi() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_delete.cpp b/xfa/fxfa/parser/cxfa_delete.cpp
index bf76b00..6647606 100644
--- a/xfa/fxfa/parser/cxfa_delete.cpp
+++ b/xfa/fxfa/parser/cxfa_delete.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_delete.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_textnode.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::Delete,
                 {},
                 kDeleteAttributeData,
-                pdfium::MakeUnique<CJX_TextNode>(this)) {}
+                std::make_unique<CJX_TextNode>(this)) {}
 
 CXFA_Delete::~CXFA_Delete() = default;
diff --git a/xfa/fxfa/parser/cxfa_delta.cpp b/xfa/fxfa/parser/cxfa_delta.cpp
index c48b2b3..bbb8bfb 100644
--- a/xfa/fxfa/parser/cxfa_delta.cpp
+++ b/xfa/fxfa/parser/cxfa_delta.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_delta.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_delta.h"
-#include "third_party/base/ptr_util.h"
 
 CXFA_Delta::CXFA_Delta(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
@@ -17,6 +18,6 @@
                 XFA_Element::Delta,
                 {},
                 {},
-                pdfium::MakeUnique<CJX_Delta>(this)) {}
+                std::make_unique<CJX_Delta>(this)) {}
 
 CXFA_Delta::~CXFA_Delta() = default;
diff --git a/xfa/fxfa/parser/cxfa_deltas.cpp b/xfa/fxfa/parser/cxfa_deltas.cpp
index c55595c..48208fb 100644
--- a/xfa/fxfa/parser/cxfa_deltas.cpp
+++ b/xfa/fxfa/parser/cxfa_deltas.cpp
@@ -6,10 +6,11 @@
 
 #include "xfa/fxfa/parser/cxfa_deltas.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_list.h"
-#include "third_party/base/ptr_util.h"
 
 CXFA_Deltas::CXFA_Deltas(CXFA_Document* doc)
-    : CXFA_List(doc, pdfium::MakeUnique<CJX_List>(this)) {}
+    : CXFA_List(doc, std::make_unique<CJX_List>(this)) {}
 
 CXFA_Deltas::~CXFA_Deltas() {}
diff --git a/xfa/fxfa/parser/cxfa_desc.cpp b/xfa/fxfa/parser/cxfa_desc.cpp
index dc26ca4..043fdd1 100644
--- a/xfa/fxfa/parser/cxfa_desc.cpp
+++ b/xfa/fxfa/parser/cxfa_desc.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_desc.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_desc.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -35,6 +36,6 @@
                 XFA_Element::Desc,
                 kDescPropertyData,
                 kDescAttributeData,
-                pdfium::MakeUnique<CJX_Desc>(this)) {}
+                std::make_unique<CJX_Desc>(this)) {}
 
 CXFA_Desc::~CXFA_Desc() = default;
diff --git a/xfa/fxfa/parser/cxfa_destination.cpp b/xfa/fxfa/parser/cxfa_destination.cpp
index b80dceb..982896e 100644
--- a/xfa/fxfa/parser/cxfa_destination.cpp
+++ b/xfa/fxfa/parser/cxfa_destination.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_destination.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Destination,
                 {},
                 kDestinationAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Destination::~CXFA_Destination() = default;
diff --git a/xfa/fxfa/parser/cxfa_digestmethod.cpp b/xfa/fxfa/parser/cxfa_digestmethod.cpp
index 70c781d..9df7c5c 100644
--- a/xfa/fxfa/parser/cxfa_digestmethod.cpp
+++ b/xfa/fxfa/parser/cxfa_digestmethod.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_digestmethod.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::DigestMethod,
                 {},
                 kDigestMethodAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_DigestMethod::~CXFA_DigestMethod() = default;
diff --git a/xfa/fxfa/parser/cxfa_digestmethods.cpp b/xfa/fxfa/parser/cxfa_digestmethods.cpp
index 2a1d1a2..0987ea4 100644
--- a/xfa/fxfa/parser/cxfa_digestmethods.cpp
+++ b/xfa/fxfa/parser/cxfa_digestmethods.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_digestmethods.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -30,6 +31,6 @@
                 XFA_Element::DigestMethods,
                 {},
                 kDigestMethodsAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_DigestMethods::~CXFA_DigestMethods() = default;
diff --git a/xfa/fxfa/parser/cxfa_document.cpp b/xfa/fxfa/parser/cxfa_document.cpp
index 1a2c5b9..5c39152 100644
--- a/xfa/fxfa/parser/cxfa_document.cpp
+++ b/xfa/fxfa/parser/cxfa_document.cpp
@@ -14,7 +14,6 @@
 #include "fxjs/xfa/cfxjse_engine.h"
 #include "fxjs/xfa/cjx_object.h"
 #include "third_party/base/compiler_specific.h"
-#include "third_party/base/ptr_util.h"
 #include "third_party/base/stl_util.h"
 #include "xfa/fxfa/cxfa_ffdoc.h"
 #include "xfa/fxfa/cxfa_ffnotify.h"
@@ -1335,33 +1334,33 @@
     }
     case XFA_HASHCODE_DataWindow: {
       if (!m_pScriptDataWindow)
-        m_pScriptDataWindow = pdfium::MakeUnique<CScript_DataWindow>(this);
+        m_pScriptDataWindow = std::make_unique<CScript_DataWindow>(this);
       return m_pScriptDataWindow.get();
     }
     case XFA_HASHCODE_Event: {
       if (!m_pScriptEvent)
-        m_pScriptEvent = pdfium::MakeUnique<CScript_EventPseudoModel>(this);
+        m_pScriptEvent = std::make_unique<CScript_EventPseudoModel>(this);
       return m_pScriptEvent.get();
     }
     case XFA_HASHCODE_Host: {
       if (!m_pScriptHost)
-        m_pScriptHost = pdfium::MakeUnique<CScript_HostPseudoModel>(this);
+        m_pScriptHost = std::make_unique<CScript_HostPseudoModel>(this);
       return m_pScriptHost.get();
     }
     case XFA_HASHCODE_Log: {
       if (!m_pScriptLog)
-        m_pScriptLog = pdfium::MakeUnique<CScript_LogPseudoModel>(this);
+        m_pScriptLog = std::make_unique<CScript_LogPseudoModel>(this);
       return m_pScriptLog.get();
     }
     case XFA_HASHCODE_Signature: {
       if (!m_pScriptSignature)
         m_pScriptSignature =
-            pdfium::MakeUnique<CScript_SignaturePseudoModel>(this);
+            std::make_unique<CScript_SignaturePseudoModel>(this);
       return m_pScriptSignature.get();
     }
     case XFA_HASHCODE_Layout: {
       if (!m_pScriptLayout)
-        m_pScriptLayout = pdfium::MakeUnique<CScript_LayoutPseudoModel>(this);
+        m_pScriptLayout = std::make_unique<CScript_LayoutPseudoModel>(this);
       return m_pScriptLayout.get();
     }
     default:
@@ -1406,7 +1405,7 @@
 
 CXFA_LocaleMgr* CXFA_Document::GetLocaleMgr() {
   if (!m_pLocaleMgr) {
-    m_pLocaleMgr = pdfium::MakeUnique<CXFA_LocaleMgr>(
+    m_pLocaleMgr = std::make_unique<CXFA_LocaleMgr>(
         ToNode(GetXFAObject(XFA_HASHCODE_LocaleSet)),
         GetNotify()->GetAppProvider()->GetLanguage());
   }
@@ -1415,7 +1414,7 @@
 
 CFXJSE_Engine* CXFA_Document::InitScriptContext(CJS_Runtime* fxjs_runtime) {
   ASSERT(!m_pScriptContext);
-  m_pScriptContext = pdfium::MakeUnique<CFXJSE_Engine>(this, fxjs_runtime);
+  m_pScriptContext = std::make_unique<CFXJSE_Engine>(this, fxjs_runtime);
   return m_pScriptContext.get();
 }
 
diff --git a/xfa/fxfa/parser/cxfa_document_parser_unittest.cpp b/xfa/fxfa/parser/cxfa_document_parser_unittest.cpp
index 625473a..bd7e1ee 100644
--- a/xfa/fxfa/parser/cxfa_document_parser_unittest.cpp
+++ b/xfa/fxfa/parser/cxfa_document_parser_unittest.cpp
@@ -7,14 +7,13 @@
 #include "core/fxcrt/cfx_readonlymemorystream.h"
 #include "core/fxcrt/xml/cfx_xmldocument.h"
 #include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_document.h"
 
 class CXFA_DocumentParserTest : public testing::Test {
  public:
   void SetUp() override {
-    doc_ = pdfium::MakeUnique<CXFA_Document>(nullptr, nullptr);
-    parser_ = pdfium::MakeUnique<CXFA_DocumentParser>(doc_.get());
+    doc_ = std::make_unique<CXFA_Document>(nullptr, nullptr);
+    parser_ = std::make_unique<CXFA_DocumentParser>(doc_.get());
   }
 
   void TearDown() override {
diff --git a/xfa/fxfa/parser/cxfa_documentassembly.cpp b/xfa/fxfa/parser/cxfa_documentassembly.cpp
index c6582e8..31238a6 100644
--- a/xfa/fxfa/parser/cxfa_documentassembly.cpp
+++ b/xfa/fxfa/parser/cxfa_documentassembly.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_documentassembly.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::DocumentAssembly,
                 {},
                 kDocumentAssemblyAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_DocumentAssembly::~CXFA_DocumentAssembly() = default;
diff --git a/xfa/fxfa/parser/cxfa_draw.cpp b/xfa/fxfa/parser/cxfa_draw.cpp
index 02387d7..0f56e47 100644
--- a/xfa/fxfa/parser/cxfa_draw.cpp
+++ b/xfa/fxfa/parser/cxfa_draw.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_draw.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_draw.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -57,6 +58,6 @@
                 XFA_Element::Draw,
                 kDrawPropertyData,
                 kDrawAttributeData,
-                pdfium::MakeUnique<CJX_Draw>(this)) {}
+                std::make_unique<CJX_Draw>(this)) {}
 
 CXFA_Draw::~CXFA_Draw() = default;
diff --git a/xfa/fxfa/parser/cxfa_driver.cpp b/xfa/fxfa/parser/cxfa_driver.cpp
index 215601c..fb9a28d 100644
--- a/xfa/fxfa/parser/cxfa_driver.cpp
+++ b/xfa/fxfa/parser/cxfa_driver.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_driver.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -32,6 +33,6 @@
                 XFA_Element::Driver,
                 kDriverPropertyData,
                 kDriverAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Driver::~CXFA_Driver() = default;
diff --git a/xfa/fxfa/parser/cxfa_dsigdata.cpp b/xfa/fxfa/parser/cxfa_dsigdata.cpp
index 19788db..e746c72 100644
--- a/xfa/fxfa/parser/cxfa_dsigdata.cpp
+++ b/xfa/fxfa/parser/cxfa_dsigdata.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_dsigdata.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -25,6 +26,6 @@
                 XFA_Element::DSigData,
                 {},
                 kDSigDataAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_DSigData::~CXFA_DSigData() = default;
diff --git a/xfa/fxfa/parser/cxfa_duplexoption.cpp b/xfa/fxfa/parser/cxfa_duplexoption.cpp
index 36feccd..49c7239 100644
--- a/xfa/fxfa/parser/cxfa_duplexoption.cpp
+++ b/xfa/fxfa/parser/cxfa_duplexoption.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_duplexoption.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::DuplexOption,
                 {},
                 kDuplexOptionAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_DuplexOption::~CXFA_DuplexOption() = default;
diff --git a/xfa/fxfa/parser/cxfa_dynamicrender.cpp b/xfa/fxfa/parser/cxfa_dynamicrender.cpp
index 5326cec..ef7d274 100644
--- a/xfa/fxfa/parser/cxfa_dynamicrender.cpp
+++ b/xfa/fxfa/parser/cxfa_dynamicrender.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_dynamicrender.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::DynamicRender,
                 {},
                 kDynamicRenderAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_DynamicRender::~CXFA_DynamicRender() = default;
diff --git a/xfa/fxfa/parser/cxfa_edge.cpp b/xfa/fxfa/parser/cxfa_edge.cpp
index 36ca7b9..1c4fd06 100644
--- a/xfa/fxfa/parser/cxfa_edge.cpp
+++ b/xfa/fxfa/parser/cxfa_edge.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_edge.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -39,6 +40,6 @@
                   XFA_Element::Edge,
                   kEdgePropertyData,
                   kEdgeAttributeData,
-                  pdfium::MakeUnique<CJX_Node>(this)) {}
+                  std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Edge::~CXFA_Edge() = default;
diff --git a/xfa/fxfa/parser/cxfa_effectiveinputpolicy.cpp b/xfa/fxfa/parser/cxfa_effectiveinputpolicy.cpp
index f2f210d..b46bc14 100644
--- a/xfa/fxfa/parser/cxfa_effectiveinputpolicy.cpp
+++ b/xfa/fxfa/parser/cxfa_effectiveinputpolicy.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_effectiveinputpolicy.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::EffectiveInputPolicy,
                 {},
                 kEffectiveInputPolicyAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_EffectiveInputPolicy::~CXFA_EffectiveInputPolicy() = default;
diff --git a/xfa/fxfa/parser/cxfa_effectiveoutputpolicy.cpp b/xfa/fxfa/parser/cxfa_effectiveoutputpolicy.cpp
index 43e07ff..15acdea 100644
--- a/xfa/fxfa/parser/cxfa_effectiveoutputpolicy.cpp
+++ b/xfa/fxfa/parser/cxfa_effectiveoutputpolicy.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_effectiveoutputpolicy.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::EffectiveOutputPolicy,
                 {},
                 kEffectiveOutputPolicyAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_EffectiveOutputPolicy::~CXFA_EffectiveOutputPolicy() = default;
diff --git a/xfa/fxfa/parser/cxfa_embed.cpp b/xfa/fxfa/parser/cxfa_embed.cpp
index 0941b19..edc7dab 100644
--- a/xfa/fxfa/parser/cxfa_embed.cpp
+++ b/xfa/fxfa/parser/cxfa_embed.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_embed.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Embed,
                 {},
                 kEmbedAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Embed::~CXFA_Embed() = default;
diff --git a/xfa/fxfa/parser/cxfa_encoding.cpp b/xfa/fxfa/parser/cxfa_encoding.cpp
index a9330d6..905bcac 100644
--- a/xfa/fxfa/parser/cxfa_encoding.cpp
+++ b/xfa/fxfa/parser/cxfa_encoding.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_encoding.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::Encoding,
                 {},
                 kEncodingAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Encoding::~CXFA_Encoding() = default;
diff --git a/xfa/fxfa/parser/cxfa_encodings.cpp b/xfa/fxfa/parser/cxfa_encodings.cpp
index 939cb53..c0de859 100644
--- a/xfa/fxfa/parser/cxfa_encodings.cpp
+++ b/xfa/fxfa/parser/cxfa_encodings.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_encodings.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::Encodings,
                 {},
                 kEncodingsAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Encodings::~CXFA_Encodings() = default;
diff --git a/xfa/fxfa/parser/cxfa_encrypt.cpp b/xfa/fxfa/parser/cxfa_encrypt.cpp
index baef9ad..e82cc70 100644
--- a/xfa/fxfa/parser/cxfa_encrypt.cpp
+++ b/xfa/fxfa/parser/cxfa_encrypt.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_encrypt.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_encrypt.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -34,6 +35,6 @@
           XFA_Element::Encrypt,
           kEncryptPropertyData,
           kEncryptAttributeData,
-          pdfium::MakeUnique<CJX_Encrypt>(this)) {}
+          std::make_unique<CJX_Encrypt>(this)) {}
 
 CXFA_Encrypt::~CXFA_Encrypt() = default;
diff --git a/xfa/fxfa/parser/cxfa_encryption.cpp b/xfa/fxfa/parser/cxfa_encryption.cpp
index e730770..a9f1b50 100644
--- a/xfa/fxfa/parser/cxfa_encryption.cpp
+++ b/xfa/fxfa/parser/cxfa_encryption.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_encryption.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -32,6 +33,6 @@
                 XFA_Element::Encryption,
                 kEncryptionPropertyData,
                 kEncryptionAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Encryption::~CXFA_Encryption() = default;
diff --git a/xfa/fxfa/parser/cxfa_encryptionlevel.cpp b/xfa/fxfa/parser/cxfa_encryptionlevel.cpp
index b9a182f..49ae125 100644
--- a/xfa/fxfa/parser/cxfa_encryptionlevel.cpp
+++ b/xfa/fxfa/parser/cxfa_encryptionlevel.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_encryptionlevel.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::EncryptionLevel,
                 {},
                 kEncryptionLevelAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_EncryptionLevel::~CXFA_EncryptionLevel() = default;
diff --git a/xfa/fxfa/parser/cxfa_encryptionmethod.cpp b/xfa/fxfa/parser/cxfa_encryptionmethod.cpp
index 4cad94c..7eaedef 100644
--- a/xfa/fxfa/parser/cxfa_encryptionmethod.cpp
+++ b/xfa/fxfa/parser/cxfa_encryptionmethod.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_encryptionmethod.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::EncryptionMethod,
                 {},
                 kEncryptionMethodAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_EncryptionMethod::~CXFA_EncryptionMethod() = default;
diff --git a/xfa/fxfa/parser/cxfa_encryptionmethods.cpp b/xfa/fxfa/parser/cxfa_encryptionmethods.cpp
index 806cd75..0ce0852 100644
--- a/xfa/fxfa/parser/cxfa_encryptionmethods.cpp
+++ b/xfa/fxfa/parser/cxfa_encryptionmethods.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_encryptionmethods.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -30,6 +31,6 @@
                 XFA_Element::EncryptionMethods,
                 {},
                 kEncryptionMethodsAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_EncryptionMethods::~CXFA_EncryptionMethods() = default;
diff --git a/xfa/fxfa/parser/cxfa_enforce.cpp b/xfa/fxfa/parser/cxfa_enforce.cpp
index f8ce4a0..c997256 100644
--- a/xfa/fxfa/parser/cxfa_enforce.cpp
+++ b/xfa/fxfa/parser/cxfa_enforce.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_enforce.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Enforce,
                 {},
                 kEnforceAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Enforce::~CXFA_Enforce() = default;
diff --git a/xfa/fxfa/parser/cxfa_equate.cpp b/xfa/fxfa/parser/cxfa_equate.cpp
index 52a4108..067decd 100644
--- a/xfa/fxfa/parser/cxfa_equate.cpp
+++ b/xfa/fxfa/parser/cxfa_equate.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_equate.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::Equate,
                 {},
                 kEquateAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Equate::~CXFA_Equate() = default;
diff --git a/xfa/fxfa/parser/cxfa_equaterange.cpp b/xfa/fxfa/parser/cxfa_equaterange.cpp
index 4398c24..5c38253 100644
--- a/xfa/fxfa/parser/cxfa_equaterange.cpp
+++ b/xfa/fxfa/parser/cxfa_equaterange.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_equaterange.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::EquateRange,
                 {},
                 kEquateRangeAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_EquateRange::~CXFA_EquateRange() = default;
diff --git a/xfa/fxfa/parser/cxfa_era.cpp b/xfa/fxfa/parser/cxfa_era.cpp
index 1cb8df2..db14202 100644
--- a/xfa/fxfa/parser/cxfa_era.cpp
+++ b/xfa/fxfa/parser/cxfa_era.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_era.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 CXFA_Era::CXFA_Era(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
@@ -17,6 +18,6 @@
                 XFA_Element::Era,
                 {},
                 {},
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Era::~CXFA_Era() = default;
diff --git a/xfa/fxfa/parser/cxfa_eranames.cpp b/xfa/fxfa/parser/cxfa_eranames.cpp
index 391c5fa..c68bbde 100644
--- a/xfa/fxfa/parser/cxfa_eranames.cpp
+++ b/xfa/fxfa/parser/cxfa_eranames.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_eranames.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -25,6 +26,6 @@
                 XFA_Element::EraNames,
                 kEraNamesPropertyData,
                 {},
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_EraNames::~CXFA_EraNames() = default;
diff --git a/xfa/fxfa/parser/cxfa_event.cpp b/xfa/fxfa/parser/cxfa_event.cpp
index 0b109c1..0f719af 100644
--- a/xfa/fxfa/parser/cxfa_event.cpp
+++ b/xfa/fxfa/parser/cxfa_event.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_event.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_script.h"
 #include "xfa/fxfa/parser/cxfa_submit.h"
 
@@ -43,7 +44,7 @@
                 XFA_Element::Event,
                 kEventPropertyData,
                 kEventAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Event::~CXFA_Event() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_exclgroup.cpp b/xfa/fxfa/parser/cxfa_exclgroup.cpp
index f662224..4dc6f55 100644
--- a/xfa/fxfa/parser/cxfa_exclgroup.cpp
+++ b/xfa/fxfa/parser/cxfa_exclgroup.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_exclgroup.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_exclgroup.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -60,6 +61,6 @@
                 XFA_Element::ExclGroup,
                 kExclGroupPropertyData,
                 kExclGroupAttributeData,
-                pdfium::MakeUnique<CJX_ExclGroup>(this)) {}
+                std::make_unique<CJX_ExclGroup>(this)) {}
 
 CXFA_ExclGroup::~CXFA_ExclGroup() = default;
diff --git a/xfa/fxfa/parser/cxfa_exclude.cpp b/xfa/fxfa/parser/cxfa_exclude.cpp
index 006831e..626bc0c 100644
--- a/xfa/fxfa/parser/cxfa_exclude.cpp
+++ b/xfa/fxfa/parser/cxfa_exclude.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_exclude.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Exclude,
                 {},
                 kExcludeAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Exclude::~CXFA_Exclude() = default;
diff --git a/xfa/fxfa/parser/cxfa_excludens.cpp b/xfa/fxfa/parser/cxfa_excludens.cpp
index 0d47359..3cd714d 100644
--- a/xfa/fxfa/parser/cxfa_excludens.cpp
+++ b/xfa/fxfa/parser/cxfa_excludens.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_excludens.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::ExcludeNS,
                 {},
                 kExcludeNSAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_ExcludeNS::~CXFA_ExcludeNS() = default;
diff --git a/xfa/fxfa/parser/cxfa_exdata.cpp b/xfa/fxfa/parser/cxfa_exdata.cpp
index 1c2e856..0927ae8 100644
--- a/xfa/fxfa/parser/cxfa_exdata.cpp
+++ b/xfa/fxfa/parser/cxfa_exdata.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_exdata.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_object.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -34,7 +35,7 @@
                 XFA_Element::ExData,
                 {},
                 kExDataAttributeData,
-                pdfium::MakeUnique<CJX_Object>(this)) {}
+                std::make_unique<CJX_Object>(this)) {}
 
 CXFA_ExData::~CXFA_ExData() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_execute.cpp b/xfa/fxfa/parser/cxfa_execute.cpp
index c89bd70..684cbf7 100644
--- a/xfa/fxfa/parser/cxfa_execute.cpp
+++ b/xfa/fxfa/parser/cxfa_execute.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_execute.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -32,6 +33,6 @@
                 XFA_Element::Execute,
                 {},
                 kExecuteAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Execute::~CXFA_Execute() = default;
diff --git a/xfa/fxfa/parser/cxfa_exobject.cpp b/xfa/fxfa/parser/cxfa_exobject.cpp
index 86a7409..26fa48b 100644
--- a/xfa/fxfa/parser/cxfa_exobject.cpp
+++ b/xfa/fxfa/parser/cxfa_exobject.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_exobject.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -36,6 +37,6 @@
                 XFA_Element::ExObject,
                 kExObjectPropertyData,
                 kExObjectAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_ExObject::~CXFA_ExObject() = default;
diff --git a/xfa/fxfa/parser/cxfa_extras.cpp b/xfa/fxfa/parser/cxfa_extras.cpp
index b23a689..3b527cc 100644
--- a/xfa/fxfa/parser/cxfa_extras.cpp
+++ b/xfa/fxfa/parser/cxfa_extras.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_extras.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_extras.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::Extras,
                 {},
                 kExtrasAttributeData,
-                pdfium::MakeUnique<CJX_Extras>(this)) {}
+                std::make_unique<CJX_Extras>(this)) {}
 
 CXFA_Extras::~CXFA_Extras() = default;
diff --git a/xfa/fxfa/parser/cxfa_field.cpp b/xfa/fxfa/parser/cxfa_field.cpp
index e33dfa4..46839a7 100644
--- a/xfa/fxfa/parser/cxfa_field.cpp
+++ b/xfa/fxfa/parser/cxfa_field.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_field.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_field.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -63,6 +64,6 @@
                 XFA_Element::Field,
                 kFieldPropertyData,
                 kFieldAttributeData,
-                pdfium::MakeUnique<CJX_Field>(this)) {}
+                std::make_unique<CJX_Field>(this)) {}
 
 CXFA_Field::~CXFA_Field() = default;
diff --git a/xfa/fxfa/parser/cxfa_fill.cpp b/xfa/fxfa/parser/cxfa_fill.cpp
index 5bc8b02..09f990a 100644
--- a/xfa/fxfa/parser/cxfa_fill.cpp
+++ b/xfa/fxfa/parser/cxfa_fill.cpp
@@ -6,9 +6,10 @@
 
 #include "xfa/fxfa/parser/cxfa_fill.h"
 
+#include <memory>
+
 #include "core/fxge/render_defines.h"
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_color.h"
 #include "xfa/fxfa/parser/cxfa_linear.h"
 #include "xfa/fxfa/parser/cxfa_node.h"
@@ -47,7 +48,7 @@
                 XFA_Element::Fill,
                 kFillPropertyData,
                 kFillAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Fill::~CXFA_Fill() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_filter.cpp b/xfa/fxfa/parser/cxfa_filter.cpp
index fdd2960..e0f4883 100644
--- a/xfa/fxfa/parser/cxfa_filter.cpp
+++ b/xfa/fxfa/parser/cxfa_filter.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_filter.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -38,6 +39,6 @@
                 XFA_Element::Filter,
                 kFilterPropertyData,
                 kFilterAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Filter::~CXFA_Filter() = default;
diff --git a/xfa/fxfa/parser/cxfa_fliplabel.cpp b/xfa/fxfa/parser/cxfa_fliplabel.cpp
index 8780e87..9d9169a 100644
--- a/xfa/fxfa/parser/cxfa_fliplabel.cpp
+++ b/xfa/fxfa/parser/cxfa_fliplabel.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_fliplabel.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::FlipLabel,
                 {},
                 kFlipLabelAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_FlipLabel::~CXFA_FlipLabel() = default;
diff --git a/xfa/fxfa/parser/cxfa_float.cpp b/xfa/fxfa/parser/cxfa_float.cpp
index a17341f..aa028e5 100644
--- a/xfa/fxfa/parser/cxfa_float.cpp
+++ b/xfa/fxfa/parser/cxfa_float.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_float.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_object.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::Float,
                 {},
                 kFloatAttributeData,
-                pdfium::MakeUnique<CJX_Object>(this)) {}
+                std::make_unique<CJX_Object>(this)) {}
 
 CXFA_Float::~CXFA_Float() = default;
diff --git a/xfa/fxfa/parser/cxfa_font.cpp b/xfa/fxfa/parser/cxfa_font.cpp
index 70e8426..c909008 100644
--- a/xfa/fxfa/parser/cxfa_font.cpp
+++ b/xfa/fxfa/parser/cxfa_font.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_font.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_fill.h"
 #include "xfa/fxfa/parser/cxfa_measurement.h"
 
@@ -61,7 +62,7 @@
           XFA_Element::Font,
           kFontPropertyData,
           kFontAttributeData,
-          pdfium::MakeUnique<CJX_Node>(this)) {}
+          std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Font::~CXFA_Font() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_fontinfo.cpp b/xfa/fxfa/parser/cxfa_fontinfo.cpp
index 8ec5e93..1d98633 100644
--- a/xfa/fxfa/parser/cxfa_fontinfo.cpp
+++ b/xfa/fxfa/parser/cxfa_fontinfo.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_fontinfo.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -32,6 +33,6 @@
                 XFA_Element::FontInfo,
                 kFontInfoPropertyData,
                 kFontInfoAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_FontInfo::~CXFA_FontInfo() = default;
diff --git a/xfa/fxfa/parser/cxfa_form.cpp b/xfa/fxfa/parser/cxfa_form.cpp
index 4586a29..50ccc5c 100644
--- a/xfa/fxfa/parser/cxfa_form.cpp
+++ b/xfa/fxfa/parser/cxfa_form.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_form.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_form.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -25,6 +26,6 @@
                 XFA_Element::Form,
                 {},
                 kFormAttributeData,
-                pdfium::MakeUnique<CJX_Form>(this)) {}
+                std::make_unique<CJX_Form>(this)) {}
 
 CXFA_Form::~CXFA_Form() = default;
diff --git a/xfa/fxfa/parser/cxfa_format.cpp b/xfa/fxfa/parser/cxfa_format.cpp
index 9e84a6f..62cf408 100644
--- a/xfa/fxfa/parser/cxfa_format.cpp
+++ b/xfa/fxfa/parser/cxfa_format.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_format.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -32,6 +33,6 @@
                 XFA_Element::Format,
                 kFormatPropertyData,
                 kFormatAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Format::~CXFA_Format() = default;
diff --git a/xfa/fxfa/parser/cxfa_formfieldfilling.cpp b/xfa/fxfa/parser/cxfa_formfieldfilling.cpp
index 6dc5af4..a1df698 100644
--- a/xfa/fxfa/parser/cxfa_formfieldfilling.cpp
+++ b/xfa/fxfa/parser/cxfa_formfieldfilling.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_formfieldfilling.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::FormFieldFilling,
                 {},
                 kFormFieldFillingAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_FormFieldFilling::~CXFA_FormFieldFilling() = default;
diff --git a/xfa/fxfa/parser/cxfa_groupparent.cpp b/xfa/fxfa/parser/cxfa_groupparent.cpp
index 8dd780c..0f1a643 100644
--- a/xfa/fxfa/parser/cxfa_groupparent.cpp
+++ b/xfa/fxfa/parser/cxfa_groupparent.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_groupparent.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::GroupParent,
                 {},
                 kGroupParentAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_GroupParent::~CXFA_GroupParent() = default;
diff --git a/xfa/fxfa/parser/cxfa_handler.cpp b/xfa/fxfa/parser/cxfa_handler.cpp
index 88c6ac8..ba37d69 100644
--- a/xfa/fxfa/parser/cxfa_handler.cpp
+++ b/xfa/fxfa/parser/cxfa_handler.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_handler.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_handler.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::Handler,
                 {},
                 kHandlerAttributeData,
-                pdfium::MakeUnique<CJX_Handler>(this)) {}
+                std::make_unique<CJX_Handler>(this)) {}
 
 CXFA_Handler::~CXFA_Handler() = default;
diff --git a/xfa/fxfa/parser/cxfa_hyphenation.cpp b/xfa/fxfa/parser/cxfa_hyphenation.cpp
index 41d77f4..190cb4c 100644
--- a/xfa/fxfa/parser/cxfa_hyphenation.cpp
+++ b/xfa/fxfa/parser/cxfa_hyphenation.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_hyphenation.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -33,6 +34,6 @@
                 XFA_Element::Hyphenation,
                 {},
                 kHyphenationAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Hyphenation::~CXFA_Hyphenation() = default;
diff --git a/xfa/fxfa/parser/cxfa_ifempty.cpp b/xfa/fxfa/parser/cxfa_ifempty.cpp
index dc50a19..da19339 100644
--- a/xfa/fxfa/parser/cxfa_ifempty.cpp
+++ b/xfa/fxfa/parser/cxfa_ifempty.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_ifempty.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::IfEmpty,
                 {},
                 kIfEmptyAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_IfEmpty::~CXFA_IfEmpty() = default;
diff --git a/xfa/fxfa/parser/cxfa_image.cpp b/xfa/fxfa/parser/cxfa_image.cpp
index fe84b11..d90f3a1 100644
--- a/xfa/fxfa/parser/cxfa_image.cpp
+++ b/xfa/fxfa/parser/cxfa_image.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_image.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -34,7 +35,7 @@
                 XFA_Element::Image,
                 {},
                 kImageAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Image::~CXFA_Image() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_imageedit.cpp b/xfa/fxfa/parser/cxfa_imageedit.cpp
index 5a6447e..c094816 100644
--- a/xfa/fxfa/parser/cxfa_imageedit.cpp
+++ b/xfa/fxfa/parser/cxfa_imageedit.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_imageedit.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -35,7 +36,7 @@
                 XFA_Element::ImageEdit,
                 kImageEditPropertyData,
                 kImageEditAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_ImageEdit::~CXFA_ImageEdit() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_includexdpcontent.cpp b/xfa/fxfa/parser/cxfa_includexdpcontent.cpp
index fb9f358..9f3bc70 100644
--- a/xfa/fxfa/parser/cxfa_includexdpcontent.cpp
+++ b/xfa/fxfa/parser/cxfa_includexdpcontent.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_includexdpcontent.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::IncludeXDPContent,
                 {},
                 kIncludeXDPContentAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_IncludeXDPContent::~CXFA_IncludeXDPContent() = default;
diff --git a/xfa/fxfa/parser/cxfa_incrementalload.cpp b/xfa/fxfa/parser/cxfa_incrementalload.cpp
index cedf559..521d5d3 100644
--- a/xfa/fxfa/parser/cxfa_incrementalload.cpp
+++ b/xfa/fxfa/parser/cxfa_incrementalload.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_incrementalload.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::IncrementalLoad,
                 {},
                 kIncrementalLoadAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_IncrementalLoad::~CXFA_IncrementalLoad() = default;
diff --git a/xfa/fxfa/parser/cxfa_incrementalmerge.cpp b/xfa/fxfa/parser/cxfa_incrementalmerge.cpp
index faf1148..4cb75e0 100644
--- a/xfa/fxfa/parser/cxfa_incrementalmerge.cpp
+++ b/xfa/fxfa/parser/cxfa_incrementalmerge.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_incrementalmerge.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::IncrementalMerge,
                 {},
                 kIncrementalMergeAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_IncrementalMerge::~CXFA_IncrementalMerge() = default;
diff --git a/xfa/fxfa/parser/cxfa_insert.cpp b/xfa/fxfa/parser/cxfa_insert.cpp
index ff98c51..42c2d6a 100644
--- a/xfa/fxfa/parser/cxfa_insert.cpp
+++ b/xfa/fxfa/parser/cxfa_insert.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_insert.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_textnode.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::Insert,
                 {},
                 kInsertAttributeData,
-                pdfium::MakeUnique<CJX_TextNode>(this)) {}
+                std::make_unique<CJX_TextNode>(this)) {}
 
 CXFA_Insert::~CXFA_Insert() = default;
diff --git a/xfa/fxfa/parser/cxfa_instancemanager.cpp b/xfa/fxfa/parser/cxfa_instancemanager.cpp
index e0d2658..0ffcf4b 100644
--- a/xfa/fxfa/parser/cxfa_instancemanager.cpp
+++ b/xfa/fxfa/parser/cxfa_instancemanager.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_instancemanager.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_instancemanager.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -30,6 +31,6 @@
                 XFA_Element::InstanceManager,
                 kInstanceManagerPropertyData,
                 kInstanceManagerAttributeData,
-                pdfium::MakeUnique<CJX_InstanceManager>(this)) {}
+                std::make_unique<CJX_InstanceManager>(this)) {}
 
 CXFA_InstanceManager::~CXFA_InstanceManager() = default;
diff --git a/xfa/fxfa/parser/cxfa_integer.cpp b/xfa/fxfa/parser/cxfa_integer.cpp
index cf48a25..fdfff5f 100644
--- a/xfa/fxfa/parser/cxfa_integer.cpp
+++ b/xfa/fxfa/parser/cxfa_integer.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_integer.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_object.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::Integer,
                 {},
                 kIntegerAttributeData,
-                pdfium::MakeUnique<CJX_Object>(this)) {}
+                std::make_unique<CJX_Object>(this)) {}
 
 CXFA_Integer::~CXFA_Integer() = default;
diff --git a/xfa/fxfa/parser/cxfa_interactive.cpp b/xfa/fxfa/parser/cxfa_interactive.cpp
index a489ab3..b66b185 100644
--- a/xfa/fxfa/parser/cxfa_interactive.cpp
+++ b/xfa/fxfa/parser/cxfa_interactive.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_interactive.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Interactive,
                 {},
                 kInteractiveAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Interactive::~CXFA_Interactive() {}
diff --git a/xfa/fxfa/parser/cxfa_issuers.cpp b/xfa/fxfa/parser/cxfa_issuers.cpp
index 0d9f5f2..2ff250d 100644
--- a/xfa/fxfa/parser/cxfa_issuers.cpp
+++ b/xfa/fxfa/parser/cxfa_issuers.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_issuers.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::Issuers,
                 {},
                 kIssuersAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Issuers::~CXFA_Issuers() = default;
diff --git a/xfa/fxfa/parser/cxfa_items.cpp b/xfa/fxfa/parser/cxfa_items.cpp
index 89fee2b..d79a2c3 100644
--- a/xfa/fxfa/parser/cxfa_items.cpp
+++ b/xfa/fxfa/parser/cxfa_items.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_items.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -32,6 +33,6 @@
                 XFA_Element::Items,
                 {},
                 kItemsAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Items::~CXFA_Items() = default;
diff --git a/xfa/fxfa/parser/cxfa_jog.cpp b/xfa/fxfa/parser/cxfa_jog.cpp
index f979259..4f34d4d 100644
--- a/xfa/fxfa/parser/cxfa_jog.cpp
+++ b/xfa/fxfa/parser/cxfa_jog.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_jog.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Jog,
                 {},
                 kJogAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Jog::~CXFA_Jog() = default;
diff --git a/xfa/fxfa/parser/cxfa_keep.cpp b/xfa/fxfa/parser/cxfa_keep.cpp
index e500ee6..f12ae74 100644
--- a/xfa/fxfa/parser/cxfa_keep.cpp
+++ b/xfa/fxfa/parser/cxfa_keep.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_keep.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -37,6 +38,6 @@
                 XFA_Element::Keep,
                 kKeepPropertyData,
                 kKeepAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Keep::~CXFA_Keep() = default;
diff --git a/xfa/fxfa/parser/cxfa_keyusage.cpp b/xfa/fxfa/parser/cxfa_keyusage.cpp
index dda5c10..f35f5a8 100644
--- a/xfa/fxfa/parser/cxfa_keyusage.cpp
+++ b/xfa/fxfa/parser/cxfa_keyusage.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_keyusage.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -38,6 +39,6 @@
                 XFA_Element::KeyUsage,
                 {},
                 kKeyUsageAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_KeyUsage::~CXFA_KeyUsage() = default;
diff --git a/xfa/fxfa/parser/cxfa_labelprinter.cpp b/xfa/fxfa/parser/cxfa_labelprinter.cpp
index 40f3616..2484c13 100644
--- a/xfa/fxfa/parser/cxfa_labelprinter.cpp
+++ b/xfa/fxfa/parser/cxfa_labelprinter.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_labelprinter.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -35,6 +36,6 @@
                 XFA_Element::LabelPrinter,
                 kLabelPrinterPropertyData,
                 kLabelPrinterAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_LabelPrinter::~CXFA_LabelPrinter() = default;
diff --git a/xfa/fxfa/parser/cxfa_layout.cpp b/xfa/fxfa/parser/cxfa_layout.cpp
index 12d6f49..e80e3f0 100644
--- a/xfa/fxfa/parser/cxfa_layout.cpp
+++ b/xfa/fxfa/parser/cxfa_layout.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_layout.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Layout,
                 {},
                 kLayoutAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Layout::~CXFA_Layout() = default;
diff --git a/xfa/fxfa/parser/cxfa_level.cpp b/xfa/fxfa/parser/cxfa_level.cpp
index b738081..3f23fbc 100644
--- a/xfa/fxfa/parser/cxfa_level.cpp
+++ b/xfa/fxfa/parser/cxfa_level.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_level.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Level,
                 {},
                 kLevelAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Level::~CXFA_Level() = default;
diff --git a/xfa/fxfa/parser/cxfa_line.cpp b/xfa/fxfa/parser/cxfa_line.cpp
index 2ac97b2..d69de54 100644
--- a/xfa/fxfa/parser/cxfa_line.cpp
+++ b/xfa/fxfa/parser/cxfa_line.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_line.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_edge.h"
 #include "xfa/fxfa/parser/cxfa_node.h"
 
@@ -37,7 +38,7 @@
                 XFA_Element::Line,
                 kLinePropertyData,
                 kLineAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Line::~CXFA_Line() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_linear.cpp b/xfa/fxfa/parser/cxfa_linear.cpp
index b482d27..9239d73 100644
--- a/xfa/fxfa/parser/cxfa_linear.cpp
+++ b/xfa/fxfa/parser/cxfa_linear.cpp
@@ -6,9 +6,10 @@
 
 #include "xfa/fxfa/parser/cxfa_linear.h"
 
+#include <memory>
+
 #include "core/fxge/render_defines.h"
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_color.h"
 #include "xfa/fxgraphics/cxfa_geshading.h"
 
@@ -37,7 +38,7 @@
                 XFA_Element::Linear,
                 kLinearPropertyData,
                 kLinearAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Linear::~CXFA_Linear() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_linearized.cpp b/xfa/fxfa/parser/cxfa_linearized.cpp
index 6c2ffe1..d0087dc 100644
--- a/xfa/fxfa/parser/cxfa_linearized.cpp
+++ b/xfa/fxfa/parser/cxfa_linearized.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_linearized.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Linearized,
                 {},
                 kLinearizedAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Linearized::~CXFA_Linearized() = default;
diff --git a/xfa/fxfa/parser/cxfa_locale.cpp b/xfa/fxfa/parser/cxfa_locale.cpp
index 6c54fb8..0196027 100644
--- a/xfa/fxfa/parser/cxfa_locale.cpp
+++ b/xfa/fxfa/parser/cxfa_locale.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_locale.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -34,6 +35,6 @@
                 XFA_Element::Locale,
                 kLocalePropertyData,
                 kLocaleAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Locale::~CXFA_Locale() = default;
diff --git a/xfa/fxfa/parser/cxfa_localemgr.cpp b/xfa/fxfa/parser/cxfa_localemgr.cpp
index b6c65a6..e46768f 100644
--- a/xfa/fxfa/parser/cxfa_localemgr.cpp
+++ b/xfa/fxfa/parser/cxfa_localemgr.cpp
@@ -14,7 +14,6 @@
 #include "core/fxcodec/flate/flatemodule.h"
 #include "core/fxcrt/fx_memory_wrappers.h"
 #include "fxjs/xfa/cjx_object.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_acrobat.h"
 #include "xfa/fxfa/parser/cxfa_common.h"
 #include "xfa/fxfa/parser/cxfa_locale.h"
@@ -1133,7 +1132,7 @@
 
   for (CXFA_Node* pNodeLocale = pLocaleSet->GetFirstChild(); pNodeLocale;
        pNodeLocale = pNodeLocale->GetNextSibling()) {
-    m_LocaleArray.push_back(pdfium::MakeUnique<CXFA_NodeLocale>(pNodeLocale));
+    m_LocaleArray.push_back(std::make_unique<CXFA_NodeLocale>(pNodeLocale));
   }
 }
 
diff --git a/xfa/fxfa/parser/cxfa_localeset.cpp b/xfa/fxfa/parser/cxfa_localeset.cpp
index 527006c..5db4626 100644
--- a/xfa/fxfa/parser/cxfa_localeset.cpp
+++ b/xfa/fxfa/parser/cxfa_localeset.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_localeset.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::LocaleSet,
                 {},
                 kLocaleSetAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_LocaleSet::~CXFA_LocaleSet() = default;
diff --git a/xfa/fxfa/parser/cxfa_localevalue.cpp b/xfa/fxfa/parser/cxfa_localevalue.cpp
index 0663d38..ebce1dd 100644
--- a/xfa/fxfa/parser/cxfa_localevalue.cpp
+++ b/xfa/fxfa/parser/cxfa_localevalue.cpp
@@ -7,11 +7,11 @@
 #include "xfa/fxfa/parser/cxfa_localevalue.h"
 
 #include <cwchar>
+#include <memory>
 #include <utility>
 #include <vector>
 
 #include "core/fxcrt/fx_extension.h"
-#include "third_party/base/ptr_util.h"
 #include "third_party/base/span.h"
 #include "third_party/base/stl_util.h"
 #include "xfa/fgas/crt/cfgas_stringformatter.h"
@@ -137,7 +137,7 @@
   for (; !bRet && i < wsPatterns.size(); i++) {
     const WideString& wsFormat = wsPatterns[i];
     auto pFormat =
-        pdfium::MakeUnique<CFGAS_StringFormatter>(m_pLocaleMgr.Get(), wsFormat);
+        std::make_unique<CFGAS_StringFormatter>(m_pLocaleMgr.Get(), wsFormat);
     switch (ValueCategory(pFormat->GetCategory(), m_dwType)) {
       case FX_LOCALECATEGORY_Null:
         bRet = pFormat->ParseNull(wsValue);
@@ -279,7 +279,7 @@
   wsResult.clear();
   bool bRet = false;
   auto pFormat =
-      pdfium::MakeUnique<CFGAS_StringFormatter>(m_pLocaleMgr.Get(), wsFormat);
+      std::make_unique<CFGAS_StringFormatter>(m_pLocaleMgr.Get(), wsFormat);
   FX_LOCALECATEGORY eCategory = ValueCategory(pFormat->GetCategory(), m_dwType);
   switch (eCategory) {
     case FX_LOCALECATEGORY_Null:
@@ -554,7 +554,7 @@
   for (size_t i = 0; !bRet && i < wsPatterns.size(); i++) {
     const WideString& wsFormat = wsPatterns[i];
     auto pFormat =
-        pdfium::MakeUnique<CFGAS_StringFormatter>(m_pLocaleMgr.Get(), wsFormat);
+        std::make_unique<CFGAS_StringFormatter>(m_pLocaleMgr.Get(), wsFormat);
     switch (ValueCategory(pFormat->GetCategory(), m_dwType)) {
       case FX_LOCALECATEGORY_Null:
         bRet = pFormat->ParseNull(wsValue);
diff --git a/xfa/fxfa/parser/cxfa_lockdocument.cpp b/xfa/fxfa/parser/cxfa_lockdocument.cpp
index b6aa783..63cf55f 100644
--- a/xfa/fxfa/parser/cxfa_lockdocument.cpp
+++ b/xfa/fxfa/parser/cxfa_lockdocument.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_lockdocument.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::LockDocument,
                 {},
                 kLockDocumentAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_LockDocument::~CXFA_LockDocument() = default;
diff --git a/xfa/fxfa/parser/cxfa_log.cpp b/xfa/fxfa/parser/cxfa_log.cpp
index e3e6c91..efdcd9e 100644
--- a/xfa/fxfa/parser/cxfa_log.cpp
+++ b/xfa/fxfa/parser/cxfa_log.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_log.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -33,6 +34,6 @@
                 XFA_Element::Log,
                 kLogPropertyData,
                 kLogAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Log::~CXFA_Log() = default;
diff --git a/xfa/fxfa/parser/cxfa_manifest.cpp b/xfa/fxfa/parser/cxfa_manifest.cpp
index 071ba3f..9e98f3a 100644
--- a/xfa/fxfa/parser/cxfa_manifest.cpp
+++ b/xfa/fxfa/parser/cxfa_manifest.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_manifest.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_manifest.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -34,6 +35,6 @@
                 XFA_Element::Manifest,
                 kManifestPropertyData,
                 kManifestAttributeData,
-                pdfium::MakeUnique<CJX_Manifest>(this)) {}
+                std::make_unique<CJX_Manifest>(this)) {}
 
 CXFA_Manifest::~CXFA_Manifest() = default;
diff --git a/xfa/fxfa/parser/cxfa_map.cpp b/xfa/fxfa/parser/cxfa_map.cpp
index 782cbc5..f41b320 100644
--- a/xfa/fxfa/parser/cxfa_map.cpp
+++ b/xfa/fxfa/parser/cxfa_map.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_map.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -32,6 +33,6 @@
                 XFA_Element::Map,
                 {},
                 kMapAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Map::~CXFA_Map() = default;
diff --git a/xfa/fxfa/parser/cxfa_margin.cpp b/xfa/fxfa/parser/cxfa_margin.cpp
index 5e58a88..0a9dcc9 100644
--- a/xfa/fxfa/parser/cxfa_margin.cpp
+++ b/xfa/fxfa/parser/cxfa_margin.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_margin.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -35,7 +36,7 @@
                 XFA_Element::Margin,
                 kMarginPropertyData,
                 kMarginAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Margin::~CXFA_Margin() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_mdp.cpp b/xfa/fxfa/parser/cxfa_mdp.cpp
index 3917bb6..419e979 100644
--- a/xfa/fxfa/parser/cxfa_mdp.cpp
+++ b/xfa/fxfa/parser/cxfa_mdp.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_mdp.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -30,6 +31,6 @@
                 XFA_Element::Mdp,
                 {},
                 kMdpAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Mdp::~CXFA_Mdp() = default;
diff --git a/xfa/fxfa/parser/cxfa_medium.cpp b/xfa/fxfa/parser/cxfa_medium.cpp
index 47dee1b..b030a35 100644
--- a/xfa/fxfa/parser/cxfa_medium.cpp
+++ b/xfa/fxfa/parser/cxfa_medium.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_medium.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -37,6 +38,6 @@
                 XFA_Element::Medium,
                 {},
                 kMediumAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Medium::~CXFA_Medium() = default;
diff --git a/xfa/fxfa/parser/cxfa_mediuminfo.cpp b/xfa/fxfa/parser/cxfa_mediuminfo.cpp
index cc17657..297e718 100644
--- a/xfa/fxfa/parser/cxfa_mediuminfo.cpp
+++ b/xfa/fxfa/parser/cxfa_mediuminfo.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_mediuminfo.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -30,6 +31,6 @@
                 XFA_Element::MediumInfo,
                 kMediumInfoPropertyData,
                 kMediumInfoAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_MediumInfo::~CXFA_MediumInfo() = default;
diff --git a/xfa/fxfa/parser/cxfa_meridiem.cpp b/xfa/fxfa/parser/cxfa_meridiem.cpp
index e250f2d..eee660c 100644
--- a/xfa/fxfa/parser/cxfa_meridiem.cpp
+++ b/xfa/fxfa/parser/cxfa_meridiem.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_meridiem.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 CXFA_Meridiem::CXFA_Meridiem(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
@@ -17,6 +18,6 @@
                 XFA_Element::Meridiem,
                 {},
                 {},
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Meridiem::~CXFA_Meridiem() = default;
diff --git a/xfa/fxfa/parser/cxfa_meridiemnames.cpp b/xfa/fxfa/parser/cxfa_meridiemnames.cpp
index 70ede73..3fce4e7 100644
--- a/xfa/fxfa/parser/cxfa_meridiemnames.cpp
+++ b/xfa/fxfa/parser/cxfa_meridiemnames.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_meridiemnames.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::MeridiemNames,
                 kMeridiemNamesPropertyData,
                 {},
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_MeridiemNames::~CXFA_MeridiemNames() = default;
diff --git a/xfa/fxfa/parser/cxfa_message.cpp b/xfa/fxfa/parser/cxfa_message.cpp
index 809a1db..b8db0c5 100644
--- a/xfa/fxfa/parser/cxfa_message.cpp
+++ b/xfa/fxfa/parser/cxfa_message.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_message.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -35,6 +36,6 @@
           XFA_Element::Message,
           kMessagePropertyData,
           kMessageAttributeData,
-          pdfium::MakeUnique<CJX_Node>(this)) {}
+          std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Message::~CXFA_Message() = default;
diff --git a/xfa/fxfa/parser/cxfa_messaging.cpp b/xfa/fxfa/parser/cxfa_messaging.cpp
index 4bb2b88..bfca282 100644
--- a/xfa/fxfa/parser/cxfa_messaging.cpp
+++ b/xfa/fxfa/parser/cxfa_messaging.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_messaging.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Messaging,
                 {},
                 kMessagingAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Messaging::~CXFA_Messaging() = default;
diff --git a/xfa/fxfa/parser/cxfa_mode.cpp b/xfa/fxfa/parser/cxfa_mode.cpp
index 4e8e09e..d51711f 100644
--- a/xfa/fxfa/parser/cxfa_mode.cpp
+++ b/xfa/fxfa/parser/cxfa_mode.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_mode.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Mode,
                 {},
                 kModeAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Mode::~CXFA_Mode() = default;
diff --git a/xfa/fxfa/parser/cxfa_modifyannots.cpp b/xfa/fxfa/parser/cxfa_modifyannots.cpp
index 6ec1293..16273ca 100644
--- a/xfa/fxfa/parser/cxfa_modifyannots.cpp
+++ b/xfa/fxfa/parser/cxfa_modifyannots.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_modifyannots.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::ModifyAnnots,
                 {},
                 kModifyAnnotsAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_ModifyAnnots::~CXFA_ModifyAnnots() = default;
diff --git a/xfa/fxfa/parser/cxfa_month.cpp b/xfa/fxfa/parser/cxfa_month.cpp
index 8cc4481..2eed8a3 100644
--- a/xfa/fxfa/parser/cxfa_month.cpp
+++ b/xfa/fxfa/parser/cxfa_month.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_month.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 CXFA_Month::CXFA_Month(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
@@ -17,6 +18,6 @@
                 XFA_Element::Month,
                 {},
                 {},
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Month::~CXFA_Month() = default;
diff --git a/xfa/fxfa/parser/cxfa_monthnames.cpp b/xfa/fxfa/parser/cxfa_monthnames.cpp
index dfb68d5..aa89dcbe 100644
--- a/xfa/fxfa/parser/cxfa_monthnames.cpp
+++ b/xfa/fxfa/parser/cxfa_monthnames.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_monthnames.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::MonthNames,
                 kMonthNamesPropertyData,
                 kMonthNamesAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_MonthNames::~CXFA_MonthNames() = default;
diff --git a/xfa/fxfa/parser/cxfa_msgid.cpp b/xfa/fxfa/parser/cxfa_msgid.cpp
index 107f635..8e3258b 100644
--- a/xfa/fxfa/parser/cxfa_msgid.cpp
+++ b/xfa/fxfa/parser/cxfa_msgid.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_msgid.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::MsgId,
                 {},
                 kMsgIdAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_MsgId::~CXFA_MsgId() = default;
diff --git a/xfa/fxfa/parser/cxfa_nameattr.cpp b/xfa/fxfa/parser/cxfa_nameattr.cpp
index d29353f..480d299 100644
--- a/xfa/fxfa/parser/cxfa_nameattr.cpp
+++ b/xfa/fxfa/parser/cxfa_nameattr.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_nameattr.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::NameAttr,
                 {},
                 kNameAttrAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_NameAttr::~CXFA_NameAttr() = default;
diff --git a/xfa/fxfa/parser/cxfa_neverembed.cpp b/xfa/fxfa/parser/cxfa_neverembed.cpp
index 18af282..21a2ba3 100644
--- a/xfa/fxfa/parser/cxfa_neverembed.cpp
+++ b/xfa/fxfa/parser/cxfa_neverembed.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_neverembed.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::NeverEmbed,
                 {},
                 kNeverEmbedAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_NeverEmbed::~CXFA_NeverEmbed() = default;
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp
index cf38c2a..33e7bf6 100644
--- a/xfa/fxfa/parser/cxfa_node.cpp
+++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -28,7 +28,6 @@
 #include "fxjs/xfa/cjx_node.h"
 #include "third_party/base/compiler_specific.h"
 #include "third_party/base/logging.h"
-#include "third_party/base/ptr_util.h"
 #include "third_party/base/span.h"
 #include "third_party/base/stl_util.h"
 #include "xfa/fde/cfde_textout.h"
@@ -576,11 +575,11 @@
     return nullptr;
 
   if (!(*pMap)[pParentNode])
-    (*pMap)[pParentNode] = pdfium::MakeUnique<CXFA_NodeSetPairMap>();
+    (*pMap)[pParentNode] = std::make_unique<CXFA_NodeSetPairMap>();
 
   CXFA_NodeSetPairMap* pNodeSetPairMap = (*pMap)[pParentNode].get();
   if (!(*pNodeSetPairMap)[dwNameHash])
-    (*pNodeSetPairMap)[dwNameHash] = pdfium::MakeUnique<CXFA_NodeSetPair>();
+    (*pNodeSetPairMap)[dwNameHash] = std::make_unique<CXFA_NodeSetPair>();
 
   return (*pNodeSetPairMap)[dwNameHash].get();
 }
@@ -842,9 +841,9 @@
       return;
 
     m_pTextProvider =
-        pdfium::MakeUnique<CXFA_TextProvider>(pNode, XFA_TEXTPROVIDERTYPE_Text);
+        std::make_unique<CXFA_TextProvider>(pNode, XFA_TEXTPROVIDERTYPE_Text);
     m_pTextLayout =
-        pdfium::MakeUnique<CXFA_TextLayout>(doc, m_pTextProvider.get());
+        std::make_unique<CXFA_TextLayout>(doc, m_pTextProvider.get());
   }
 
  private:
@@ -899,10 +898,10 @@
     if (!caption || caption->IsHidden())
       return false;
 
-    m_pCapTextProvider = pdfium::MakeUnique<CXFA_TextProvider>(
+    m_pCapTextProvider = std::make_unique<CXFA_TextProvider>(
         pNode, XFA_TEXTPROVIDERTYPE_Caption);
     m_pCapTextLayout =
-        pdfium::MakeUnique<CXFA_TextLayout>(doc, m_pCapTextProvider.get());
+        std::make_unique<CXFA_TextLayout>(doc, m_pCapTextProvider.get());
     return true;
   }
 
@@ -2742,7 +2741,7 @@
     pContext->SetNodesOfRunScript(&refNodes);
   }
 
-  auto pTmpRetValue = pdfium::MakeUnique<CFXJSE_Value>(pContext->GetIsolate());
+  auto pTmpRetValue = std::make_unique<CFXJSE_Value>(pContext->GetIsolate());
   bool bRet = false;
   {
     AutoRestorer<uint8_t> restorer(&m_ExecuteRecursionDepth);
@@ -2777,8 +2776,7 @@
 
         CXFA_CalcData* pGlobalData = pRefNode->JSObject()->GetCalcData();
         if (!pGlobalData) {
-          pRefNode->JSObject()->SetCalcData(
-              pdfium::MakeUnique<CXFA_CalcData>());
+          pRefNode->JSObject()->SetCalcData(std::make_unique<CXFA_CalcData>());
           pGlobalData = pRefNode->JSObject()->GetCalcData();
         }
         if (!pdfium::Contains(pGlobalData->m_Globals, this))
@@ -3266,7 +3264,7 @@
 
   CXFA_FieldLayoutData* layoutData = m_pLayoutData->AsFieldLayoutData();
   if (!layoutData->m_pTextOut) {
-    layoutData->m_pTextOut = pdfium::MakeUnique<CFDE_TextOut>();
+    layoutData->m_pTextOut = std::make_unique<CFDE_TextOut>();
     CFDE_TextOut* pTextOut = layoutData->m_pTextOut.get();
     pTextOut->SetFont(GetFDEFont(doc));
     pTextOut->SetFontSize(fFontSize);
@@ -3789,25 +3787,25 @@
 
   switch (GetFFWidgetType()) {
     case XFA_FFWidgetType::kText:
-      m_pLayoutData = pdfium::MakeUnique<CXFA_TextLayoutData>();
+      m_pLayoutData = std::make_unique<CXFA_TextLayoutData>();
       return;
     case XFA_FFWidgetType::kTextEdit:
-      m_pLayoutData = pdfium::MakeUnique<CXFA_TextEditData>();
+      m_pLayoutData = std::make_unique<CXFA_TextEditData>();
       return;
     case XFA_FFWidgetType::kImage:
-      m_pLayoutData = pdfium::MakeUnique<CXFA_ImageLayoutData>();
+      m_pLayoutData = std::make_unique<CXFA_ImageLayoutData>();
       return;
     case XFA_FFWidgetType::kImageEdit:
-      m_pLayoutData = pdfium::MakeUnique<CXFA_ImageEditData>();
+      m_pLayoutData = std::make_unique<CXFA_ImageEditData>();
       return;
     default:
       break;
   }
   if (GetElementType() == XFA_Element::Field) {
-    m_pLayoutData = pdfium::MakeUnique<CXFA_FieldLayoutData>();
+    m_pLayoutData = std::make_unique<CXFA_FieldLayoutData>();
     return;
   }
-  m_pLayoutData = pdfium::MakeUnique<CXFA_WidgetLayoutData>();
+  m_pLayoutData = std::make_unique<CXFA_WidgetLayoutData>();
 }
 
 void CXFA_Node::StartTextLayout(CXFA_FFDoc* doc,
@@ -5095,913 +5093,913 @@
   std::unique_ptr<CXFA_Node> node;
   switch (element) {
     case XFA_Element::Ps:
-      node = pdfium::MakeUnique<CXFA_Ps>(doc, packet);
+      node = std::make_unique<CXFA_Ps>(doc, packet);
       break;
     case XFA_Element::To:
-      node = pdfium::MakeUnique<CXFA_To>(doc, packet);
+      node = std::make_unique<CXFA_To>(doc, packet);
       break;
     case XFA_Element::Ui:
-      node = pdfium::MakeUnique<CXFA_Ui>(doc, packet);
+      node = std::make_unique<CXFA_Ui>(doc, packet);
       break;
     case XFA_Element::RecordSet:
-      node = pdfium::MakeUnique<CXFA_RecordSet>(doc, packet);
+      node = std::make_unique<CXFA_RecordSet>(doc, packet);
       break;
     case XFA_Element::SubsetBelow:
-      node = pdfium::MakeUnique<CXFA_SubsetBelow>(doc, packet);
+      node = std::make_unique<CXFA_SubsetBelow>(doc, packet);
       break;
     case XFA_Element::SubformSet:
-      node = pdfium::MakeUnique<CXFA_SubformSet>(doc, packet);
+      node = std::make_unique<CXFA_SubformSet>(doc, packet);
       break;
     case XFA_Element::AdobeExtensionLevel:
-      node = pdfium::MakeUnique<CXFA_AdobeExtensionLevel>(doc, packet);
+      node = std::make_unique<CXFA_AdobeExtensionLevel>(doc, packet);
       break;
     case XFA_Element::Typeface:
-      node = pdfium::MakeUnique<CXFA_Typeface>(doc, packet);
+      node = std::make_unique<CXFA_Typeface>(doc, packet);
       break;
     case XFA_Element::Break:
-      node = pdfium::MakeUnique<CXFA_Break>(doc, packet);
+      node = std::make_unique<CXFA_Break>(doc, packet);
       break;
     case XFA_Element::FontInfo:
-      node = pdfium::MakeUnique<CXFA_FontInfo>(doc, packet);
+      node = std::make_unique<CXFA_FontInfo>(doc, packet);
       break;
     case XFA_Element::NumberPattern:
-      node = pdfium::MakeUnique<CXFA_NumberPattern>(doc, packet);
+      node = std::make_unique<CXFA_NumberPattern>(doc, packet);
       break;
     case XFA_Element::DynamicRender:
-      node = pdfium::MakeUnique<CXFA_DynamicRender>(doc, packet);
+      node = std::make_unique<CXFA_DynamicRender>(doc, packet);
       break;
     case XFA_Element::PrintScaling:
-      node = pdfium::MakeUnique<CXFA_PrintScaling>(doc, packet);
+      node = std::make_unique<CXFA_PrintScaling>(doc, packet);
       break;
     case XFA_Element::CheckButton:
-      node = pdfium::MakeUnique<CXFA_CheckButton>(doc, packet);
+      node = std::make_unique<CXFA_CheckButton>(doc, packet);
       break;
     case XFA_Element::DatePatterns:
-      node = pdfium::MakeUnique<CXFA_DatePatterns>(doc, packet);
+      node = std::make_unique<CXFA_DatePatterns>(doc, packet);
       break;
     case XFA_Element::SourceSet:
-      node = pdfium::MakeUnique<CXFA_SourceSet>(doc, packet);
+      node = std::make_unique<CXFA_SourceSet>(doc, packet);
       break;
     case XFA_Element::Amd:
-      node = pdfium::MakeUnique<CXFA_Amd>(doc, packet);
+      node = std::make_unique<CXFA_Amd>(doc, packet);
       break;
     case XFA_Element::Arc:
-      node = pdfium::MakeUnique<CXFA_Arc>(doc, packet);
+      node = std::make_unique<CXFA_Arc>(doc, packet);
       break;
     case XFA_Element::Day:
-      node = pdfium::MakeUnique<CXFA_Day>(doc, packet);
+      node = std::make_unique<CXFA_Day>(doc, packet);
       break;
     case XFA_Element::Era:
-      node = pdfium::MakeUnique<CXFA_Era>(doc, packet);
+      node = std::make_unique<CXFA_Era>(doc, packet);
       break;
     case XFA_Element::Jog:
-      node = pdfium::MakeUnique<CXFA_Jog>(doc, packet);
+      node = std::make_unique<CXFA_Jog>(doc, packet);
       break;
     case XFA_Element::Log:
-      node = pdfium::MakeUnique<CXFA_Log>(doc, packet);
+      node = std::make_unique<CXFA_Log>(doc, packet);
       break;
     case XFA_Element::Map:
-      node = pdfium::MakeUnique<CXFA_Map>(doc, packet);
+      node = std::make_unique<CXFA_Map>(doc, packet);
       break;
     case XFA_Element::Mdp:
-      node = pdfium::MakeUnique<CXFA_Mdp>(doc, packet);
+      node = std::make_unique<CXFA_Mdp>(doc, packet);
       break;
     case XFA_Element::BreakBefore:
-      node = pdfium::MakeUnique<CXFA_BreakBefore>(doc, packet);
+      node = std::make_unique<CXFA_BreakBefore>(doc, packet);
       break;
     case XFA_Element::Oid:
-      node = pdfium::MakeUnique<CXFA_Oid>(doc, packet);
+      node = std::make_unique<CXFA_Oid>(doc, packet);
       break;
     case XFA_Element::Pcl:
-      node = pdfium::MakeUnique<CXFA_Pcl>(doc, packet);
+      node = std::make_unique<CXFA_Pcl>(doc, packet);
       break;
     case XFA_Element::Pdf:
-      node = pdfium::MakeUnique<CXFA_Pdf>(doc, packet);
+      node = std::make_unique<CXFA_Pdf>(doc, packet);
       break;
     case XFA_Element::Ref:
-      node = pdfium::MakeUnique<CXFA_Ref>(doc, packet);
+      node = std::make_unique<CXFA_Ref>(doc, packet);
       break;
     case XFA_Element::Uri:
-      node = pdfium::MakeUnique<CXFA_Uri>(doc, packet);
+      node = std::make_unique<CXFA_Uri>(doc, packet);
       break;
     case XFA_Element::Xdc:
-      node = pdfium::MakeUnique<CXFA_Xdc>(doc, packet);
+      node = std::make_unique<CXFA_Xdc>(doc, packet);
       break;
     case XFA_Element::Xdp:
-      node = pdfium::MakeUnique<CXFA_Xdp>(doc, packet);
+      node = std::make_unique<CXFA_Xdp>(doc, packet);
       break;
     case XFA_Element::Xfa:
-      node = pdfium::MakeUnique<CXFA_Xfa>(doc, packet);
+      node = std::make_unique<CXFA_Xfa>(doc, packet);
       break;
     case XFA_Element::Xsl:
-      node = pdfium::MakeUnique<CXFA_Xsl>(doc, packet);
+      node = std::make_unique<CXFA_Xsl>(doc, packet);
       break;
     case XFA_Element::Zpl:
-      node = pdfium::MakeUnique<CXFA_Zpl>(doc, packet);
+      node = std::make_unique<CXFA_Zpl>(doc, packet);
       break;
     case XFA_Element::Cache:
-      node = pdfium::MakeUnique<CXFA_Cache>(doc, packet);
+      node = std::make_unique<CXFA_Cache>(doc, packet);
       break;
     case XFA_Element::Margin:
-      node = pdfium::MakeUnique<CXFA_Margin>(doc, packet);
+      node = std::make_unique<CXFA_Margin>(doc, packet);
       break;
     case XFA_Element::KeyUsage:
-      node = pdfium::MakeUnique<CXFA_KeyUsage>(doc, packet);
+      node = std::make_unique<CXFA_KeyUsage>(doc, packet);
       break;
     case XFA_Element::Exclude:
-      node = pdfium::MakeUnique<CXFA_Exclude>(doc, packet);
+      node = std::make_unique<CXFA_Exclude>(doc, packet);
       break;
     case XFA_Element::ChoiceList:
-      node = pdfium::MakeUnique<CXFA_ChoiceList>(doc, packet);
+      node = std::make_unique<CXFA_ChoiceList>(doc, packet);
       break;
     case XFA_Element::Level:
-      node = pdfium::MakeUnique<CXFA_Level>(doc, packet);
+      node = std::make_unique<CXFA_Level>(doc, packet);
       break;
     case XFA_Element::LabelPrinter:
-      node = pdfium::MakeUnique<CXFA_LabelPrinter>(doc, packet);
+      node = std::make_unique<CXFA_LabelPrinter>(doc, packet);
       break;
     case XFA_Element::CalendarSymbols:
-      node = pdfium::MakeUnique<CXFA_CalendarSymbols>(doc, packet);
+      node = std::make_unique<CXFA_CalendarSymbols>(doc, packet);
       break;
     case XFA_Element::Para:
-      node = pdfium::MakeUnique<CXFA_Para>(doc, packet);
+      node = std::make_unique<CXFA_Para>(doc, packet);
       break;
     case XFA_Element::Part:
-      node = pdfium::MakeUnique<CXFA_Part>(doc, packet);
+      node = std::make_unique<CXFA_Part>(doc, packet);
       break;
     case XFA_Element::Pdfa:
-      node = pdfium::MakeUnique<CXFA_Pdfa>(doc, packet);
+      node = std::make_unique<CXFA_Pdfa>(doc, packet);
       break;
     case XFA_Element::Filter:
-      node = pdfium::MakeUnique<CXFA_Filter>(doc, packet);
+      node = std::make_unique<CXFA_Filter>(doc, packet);
       break;
     case XFA_Element::Present:
-      node = pdfium::MakeUnique<CXFA_Present>(doc, packet);
+      node = std::make_unique<CXFA_Present>(doc, packet);
       break;
     case XFA_Element::Pagination:
-      node = pdfium::MakeUnique<CXFA_Pagination>(doc, packet);
+      node = std::make_unique<CXFA_Pagination>(doc, packet);
       break;
     case XFA_Element::Encoding:
-      node = pdfium::MakeUnique<CXFA_Encoding>(doc, packet);
+      node = std::make_unique<CXFA_Encoding>(doc, packet);
       break;
     case XFA_Element::Event:
-      node = pdfium::MakeUnique<CXFA_Event>(doc, packet);
+      node = std::make_unique<CXFA_Event>(doc, packet);
       break;
     case XFA_Element::Whitespace:
-      node = pdfium::MakeUnique<CXFA_Whitespace>(doc, packet);
+      node = std::make_unique<CXFA_Whitespace>(doc, packet);
       break;
     case XFA_Element::DefaultUi:
-      node = pdfium::MakeUnique<CXFA_DefaultUi>(doc, packet);
+      node = std::make_unique<CXFA_DefaultUi>(doc, packet);
       break;
     case XFA_Element::DataModel:
-      node = pdfium::MakeUnique<CXFA_DataModel>(doc, packet);
+      node = std::make_unique<CXFA_DataModel>(doc, packet);
       break;
     case XFA_Element::Barcode:
-      node = pdfium::MakeUnique<CXFA_Barcode>(doc, packet);
+      node = std::make_unique<CXFA_Barcode>(doc, packet);
       break;
     case XFA_Element::TimePattern:
-      node = pdfium::MakeUnique<CXFA_TimePattern>(doc, packet);
+      node = std::make_unique<CXFA_TimePattern>(doc, packet);
       break;
     case XFA_Element::BatchOutput:
-      node = pdfium::MakeUnique<CXFA_BatchOutput>(doc, packet);
+      node = std::make_unique<CXFA_BatchOutput>(doc, packet);
       break;
     case XFA_Element::Enforce:
-      node = pdfium::MakeUnique<CXFA_Enforce>(doc, packet);
+      node = std::make_unique<CXFA_Enforce>(doc, packet);
       break;
     case XFA_Element::CurrencySymbols:
-      node = pdfium::MakeUnique<CXFA_CurrencySymbols>(doc, packet);
+      node = std::make_unique<CXFA_CurrencySymbols>(doc, packet);
       break;
     case XFA_Element::AddSilentPrint:
-      node = pdfium::MakeUnique<CXFA_AddSilentPrint>(doc, packet);
+      node = std::make_unique<CXFA_AddSilentPrint>(doc, packet);
       break;
     case XFA_Element::Rename:
-      node = pdfium::MakeUnique<CXFA_Rename>(doc, packet);
+      node = std::make_unique<CXFA_Rename>(doc, packet);
       break;
     case XFA_Element::Operation:
-      node = pdfium::MakeUnique<CXFA_Operation>(doc, packet);
+      node = std::make_unique<CXFA_Operation>(doc, packet);
       break;
     case XFA_Element::Typefaces:
-      node = pdfium::MakeUnique<CXFA_Typefaces>(doc, packet);
+      node = std::make_unique<CXFA_Typefaces>(doc, packet);
       break;
     case XFA_Element::SubjectDNs:
-      node = pdfium::MakeUnique<CXFA_SubjectDNs>(doc, packet);
+      node = std::make_unique<CXFA_SubjectDNs>(doc, packet);
       break;
     case XFA_Element::Issuers:
-      node = pdfium::MakeUnique<CXFA_Issuers>(doc, packet);
+      node = std::make_unique<CXFA_Issuers>(doc, packet);
       break;
     case XFA_Element::WsdlConnection:
-      node = pdfium::MakeUnique<CXFA_WsdlConnection>(doc, packet);
+      node = std::make_unique<CXFA_WsdlConnection>(doc, packet);
       break;
     case XFA_Element::Debug:
-      node = pdfium::MakeUnique<CXFA_Debug>(doc, packet);
+      node = std::make_unique<CXFA_Debug>(doc, packet);
       break;
     case XFA_Element::Delta:
-      node = pdfium::MakeUnique<CXFA_Delta>(doc, packet);
+      node = std::make_unique<CXFA_Delta>(doc, packet);
       break;
     case XFA_Element::EraNames:
-      node = pdfium::MakeUnique<CXFA_EraNames>(doc, packet);
+      node = std::make_unique<CXFA_EraNames>(doc, packet);
       break;
     case XFA_Element::ModifyAnnots:
-      node = pdfium::MakeUnique<CXFA_ModifyAnnots>(doc, packet);
+      node = std::make_unique<CXFA_ModifyAnnots>(doc, packet);
       break;
     case XFA_Element::StartNode:
-      node = pdfium::MakeUnique<CXFA_StartNode>(doc, packet);
+      node = std::make_unique<CXFA_StartNode>(doc, packet);
       break;
     case XFA_Element::Button:
-      node = pdfium::MakeUnique<CXFA_Button>(doc, packet);
+      node = std::make_unique<CXFA_Button>(doc, packet);
       break;
     case XFA_Element::Format:
-      node = pdfium::MakeUnique<CXFA_Format>(doc, packet);
+      node = std::make_unique<CXFA_Format>(doc, packet);
       break;
     case XFA_Element::Border:
-      node = pdfium::MakeUnique<CXFA_Border>(doc, packet);
+      node = std::make_unique<CXFA_Border>(doc, packet);
       break;
     case XFA_Element::Area:
-      node = pdfium::MakeUnique<CXFA_Area>(doc, packet);
+      node = std::make_unique<CXFA_Area>(doc, packet);
       break;
     case XFA_Element::Hyphenation:
-      node = pdfium::MakeUnique<CXFA_Hyphenation>(doc, packet);
+      node = std::make_unique<CXFA_Hyphenation>(doc, packet);
       break;
     case XFA_Element::Text:
-      node = pdfium::MakeUnique<CXFA_Text>(doc, packet);
+      node = std::make_unique<CXFA_Text>(doc, packet);
       break;
     case XFA_Element::Time:
-      node = pdfium::MakeUnique<CXFA_Time>(doc, packet);
+      node = std::make_unique<CXFA_Time>(doc, packet);
       break;
     case XFA_Element::Type:
-      node = pdfium::MakeUnique<CXFA_Type>(doc, packet);
+      node = std::make_unique<CXFA_Type>(doc, packet);
       break;
     case XFA_Element::Overprint:
-      node = pdfium::MakeUnique<CXFA_Overprint>(doc, packet);
+      node = std::make_unique<CXFA_Overprint>(doc, packet);
       break;
     case XFA_Element::Certificates:
-      node = pdfium::MakeUnique<CXFA_Certificates>(doc, packet);
+      node = std::make_unique<CXFA_Certificates>(doc, packet);
       break;
     case XFA_Element::EncryptionMethods:
-      node = pdfium::MakeUnique<CXFA_EncryptionMethods>(doc, packet);
+      node = std::make_unique<CXFA_EncryptionMethods>(doc, packet);
       break;
     case XFA_Element::SetProperty:
-      node = pdfium::MakeUnique<CXFA_SetProperty>(doc, packet);
+      node = std::make_unique<CXFA_SetProperty>(doc, packet);
       break;
     case XFA_Element::PrinterName:
-      node = pdfium::MakeUnique<CXFA_PrinterName>(doc, packet);
+      node = std::make_unique<CXFA_PrinterName>(doc, packet);
       break;
     case XFA_Element::StartPage:
-      node = pdfium::MakeUnique<CXFA_StartPage>(doc, packet);
+      node = std::make_unique<CXFA_StartPage>(doc, packet);
       break;
     case XFA_Element::PageOffset:
-      node = pdfium::MakeUnique<CXFA_PageOffset>(doc, packet);
+      node = std::make_unique<CXFA_PageOffset>(doc, packet);
       break;
     case XFA_Element::DateTime:
-      node = pdfium::MakeUnique<CXFA_DateTime>(doc, packet);
+      node = std::make_unique<CXFA_DateTime>(doc, packet);
       break;
     case XFA_Element::Comb:
-      node = pdfium::MakeUnique<CXFA_Comb>(doc, packet);
+      node = std::make_unique<CXFA_Comb>(doc, packet);
       break;
     case XFA_Element::Pattern:
-      node = pdfium::MakeUnique<CXFA_Pattern>(doc, packet);
+      node = std::make_unique<CXFA_Pattern>(doc, packet);
       break;
     case XFA_Element::IfEmpty:
-      node = pdfium::MakeUnique<CXFA_IfEmpty>(doc, packet);
+      node = std::make_unique<CXFA_IfEmpty>(doc, packet);
       break;
     case XFA_Element::SuppressBanner:
-      node = pdfium::MakeUnique<CXFA_SuppressBanner>(doc, packet);
+      node = std::make_unique<CXFA_SuppressBanner>(doc, packet);
       break;
     case XFA_Element::OutputBin:
-      node = pdfium::MakeUnique<CXFA_OutputBin>(doc, packet);
+      node = std::make_unique<CXFA_OutputBin>(doc, packet);
       break;
     case XFA_Element::Field:
-      node = pdfium::MakeUnique<CXFA_Field>(doc, packet);
+      node = std::make_unique<CXFA_Field>(doc, packet);
       break;
     case XFA_Element::Agent:
-      node = pdfium::MakeUnique<CXFA_Agent>(doc, packet);
+      node = std::make_unique<CXFA_Agent>(doc, packet);
       break;
     case XFA_Element::OutputXSL:
-      node = pdfium::MakeUnique<CXFA_OutputXSL>(doc, packet);
+      node = std::make_unique<CXFA_OutputXSL>(doc, packet);
       break;
     case XFA_Element::AdjustData:
-      node = pdfium::MakeUnique<CXFA_AdjustData>(doc, packet);
+      node = std::make_unique<CXFA_AdjustData>(doc, packet);
       break;
     case XFA_Element::AutoSave:
-      node = pdfium::MakeUnique<CXFA_AutoSave>(doc, packet);
+      node = std::make_unique<CXFA_AutoSave>(doc, packet);
       break;
     case XFA_Element::ContentArea:
-      node = pdfium::MakeUnique<CXFA_ContentArea>(doc, packet);
+      node = std::make_unique<CXFA_ContentArea>(doc, packet);
       break;
     case XFA_Element::WsdlAddress:
-      node = pdfium::MakeUnique<CXFA_WsdlAddress>(doc, packet);
+      node = std::make_unique<CXFA_WsdlAddress>(doc, packet);
       break;
     case XFA_Element::Solid:
-      node = pdfium::MakeUnique<CXFA_Solid>(doc, packet);
+      node = std::make_unique<CXFA_Solid>(doc, packet);
       break;
     case XFA_Element::DateTimeSymbols:
-      node = pdfium::MakeUnique<CXFA_DateTimeSymbols>(doc, packet);
+      node = std::make_unique<CXFA_DateTimeSymbols>(doc, packet);
       break;
     case XFA_Element::EncryptionLevel:
-      node = pdfium::MakeUnique<CXFA_EncryptionLevel>(doc, packet);
+      node = std::make_unique<CXFA_EncryptionLevel>(doc, packet);
       break;
     case XFA_Element::Edge:
-      node = pdfium::MakeUnique<CXFA_Edge>(doc, packet);
+      node = std::make_unique<CXFA_Edge>(doc, packet);
       break;
     case XFA_Element::Stipple:
-      node = pdfium::MakeUnique<CXFA_Stipple>(doc, packet);
+      node = std::make_unique<CXFA_Stipple>(doc, packet);
       break;
     case XFA_Element::Attributes:
-      node = pdfium::MakeUnique<CXFA_Attributes>(doc, packet);
+      node = std::make_unique<CXFA_Attributes>(doc, packet);
       break;
     case XFA_Element::VersionControl:
-      node = pdfium::MakeUnique<CXFA_VersionControl>(doc, packet);
+      node = std::make_unique<CXFA_VersionControl>(doc, packet);
       break;
     case XFA_Element::Meridiem:
-      node = pdfium::MakeUnique<CXFA_Meridiem>(doc, packet);
+      node = std::make_unique<CXFA_Meridiem>(doc, packet);
       break;
     case XFA_Element::ExclGroup:
-      node = pdfium::MakeUnique<CXFA_ExclGroup>(doc, packet);
+      node = std::make_unique<CXFA_ExclGroup>(doc, packet);
       break;
     case XFA_Element::ToolTip:
-      node = pdfium::MakeUnique<CXFA_ToolTip>(doc, packet);
+      node = std::make_unique<CXFA_ToolTip>(doc, packet);
       break;
     case XFA_Element::Compress:
-      node = pdfium::MakeUnique<CXFA_Compress>(doc, packet);
+      node = std::make_unique<CXFA_Compress>(doc, packet);
       break;
     case XFA_Element::Reason:
-      node = pdfium::MakeUnique<CXFA_Reason>(doc, packet);
+      node = std::make_unique<CXFA_Reason>(doc, packet);
       break;
     case XFA_Element::Execute:
-      node = pdfium::MakeUnique<CXFA_Execute>(doc, packet);
+      node = std::make_unique<CXFA_Execute>(doc, packet);
       break;
     case XFA_Element::ContentCopy:
-      node = pdfium::MakeUnique<CXFA_ContentCopy>(doc, packet);
+      node = std::make_unique<CXFA_ContentCopy>(doc, packet);
       break;
     case XFA_Element::DateTimeEdit:
-      node = pdfium::MakeUnique<CXFA_DateTimeEdit>(doc, packet);
+      node = std::make_unique<CXFA_DateTimeEdit>(doc, packet);
       break;
     case XFA_Element::Config:
-      node = pdfium::MakeUnique<CXFA_Config>(doc, packet);
+      node = std::make_unique<CXFA_Config>(doc, packet);
       break;
     case XFA_Element::Image:
-      node = pdfium::MakeUnique<CXFA_Image>(doc, packet);
+      node = std::make_unique<CXFA_Image>(doc, packet);
       break;
     case XFA_Element::SharpxHTML:
-      node = pdfium::MakeUnique<CXFA_SharpxHTML>(doc, packet);
+      node = std::make_unique<CXFA_SharpxHTML>(doc, packet);
       break;
     case XFA_Element::NumberOfCopies:
-      node = pdfium::MakeUnique<CXFA_NumberOfCopies>(doc, packet);
+      node = std::make_unique<CXFA_NumberOfCopies>(doc, packet);
       break;
     case XFA_Element::BehaviorOverride:
-      node = pdfium::MakeUnique<CXFA_BehaviorOverride>(doc, packet);
+      node = std::make_unique<CXFA_BehaviorOverride>(doc, packet);
       break;
     case XFA_Element::TimeStamp:
-      node = pdfium::MakeUnique<CXFA_TimeStamp>(doc, packet);
+      node = std::make_unique<CXFA_TimeStamp>(doc, packet);
       break;
     case XFA_Element::Month:
-      node = pdfium::MakeUnique<CXFA_Month>(doc, packet);
+      node = std::make_unique<CXFA_Month>(doc, packet);
       break;
     case XFA_Element::ViewerPreferences:
-      node = pdfium::MakeUnique<CXFA_ViewerPreferences>(doc, packet);
+      node = std::make_unique<CXFA_ViewerPreferences>(doc, packet);
       break;
     case XFA_Element::ScriptModel:
-      node = pdfium::MakeUnique<CXFA_ScriptModel>(doc, packet);
+      node = std::make_unique<CXFA_ScriptModel>(doc, packet);
       break;
     case XFA_Element::Decimal:
-      node = pdfium::MakeUnique<CXFA_Decimal>(doc, packet);
+      node = std::make_unique<CXFA_Decimal>(doc, packet);
       break;
     case XFA_Element::Subform:
-      node = pdfium::MakeUnique<CXFA_Subform>(doc, packet);
+      node = std::make_unique<CXFA_Subform>(doc, packet);
       break;
     case XFA_Element::Select:
-      node = pdfium::MakeUnique<CXFA_Select>(doc, packet);
+      node = std::make_unique<CXFA_Select>(doc, packet);
       break;
     case XFA_Element::Window:
-      node = pdfium::MakeUnique<CXFA_Window>(doc, packet);
+      node = std::make_unique<CXFA_Window>(doc, packet);
       break;
     case XFA_Element::LocaleSet:
-      node = pdfium::MakeUnique<CXFA_LocaleSet>(doc, packet);
+      node = std::make_unique<CXFA_LocaleSet>(doc, packet);
       break;
     case XFA_Element::Handler:
-      node = pdfium::MakeUnique<CXFA_Handler>(doc, packet);
+      node = std::make_unique<CXFA_Handler>(doc, packet);
       break;
     case XFA_Element::Presence:
-      node = pdfium::MakeUnique<CXFA_Presence>(doc, packet);
+      node = std::make_unique<CXFA_Presence>(doc, packet);
       break;
     case XFA_Element::Record:
-      node = pdfium::MakeUnique<CXFA_Record>(doc, packet);
+      node = std::make_unique<CXFA_Record>(doc, packet);
       break;
     case XFA_Element::Embed:
-      node = pdfium::MakeUnique<CXFA_Embed>(doc, packet);
+      node = std::make_unique<CXFA_Embed>(doc, packet);
       break;
     case XFA_Element::Version:
-      node = pdfium::MakeUnique<CXFA_Version>(doc, packet);
+      node = std::make_unique<CXFA_Version>(doc, packet);
       break;
     case XFA_Element::Command:
-      node = pdfium::MakeUnique<CXFA_Command>(doc, packet);
+      node = std::make_unique<CXFA_Command>(doc, packet);
       break;
     case XFA_Element::Copies:
-      node = pdfium::MakeUnique<CXFA_Copies>(doc, packet);
+      node = std::make_unique<CXFA_Copies>(doc, packet);
       break;
     case XFA_Element::Staple:
-      node = pdfium::MakeUnique<CXFA_Staple>(doc, packet);
+      node = std::make_unique<CXFA_Staple>(doc, packet);
       break;
     case XFA_Element::SubmitFormat:
-      node = pdfium::MakeUnique<CXFA_SubmitFormat>(doc, packet);
+      node = std::make_unique<CXFA_SubmitFormat>(doc, packet);
       break;
     case XFA_Element::Boolean:
-      node = pdfium::MakeUnique<CXFA_Boolean>(doc, packet);
+      node = std::make_unique<CXFA_Boolean>(doc, packet);
       break;
     case XFA_Element::Message:
-      node = pdfium::MakeUnique<CXFA_Message>(doc, packet);
+      node = std::make_unique<CXFA_Message>(doc, packet);
       break;
     case XFA_Element::Output:
-      node = pdfium::MakeUnique<CXFA_Output>(doc, packet);
+      node = std::make_unique<CXFA_Output>(doc, packet);
       break;
     case XFA_Element::PsMap:
-      node = pdfium::MakeUnique<CXFA_PsMap>(doc, packet);
+      node = std::make_unique<CXFA_PsMap>(doc, packet);
       break;
     case XFA_Element::ExcludeNS:
-      node = pdfium::MakeUnique<CXFA_ExcludeNS>(doc, packet);
+      node = std::make_unique<CXFA_ExcludeNS>(doc, packet);
       break;
     case XFA_Element::Assist:
-      node = pdfium::MakeUnique<CXFA_Assist>(doc, packet);
+      node = std::make_unique<CXFA_Assist>(doc, packet);
       break;
     case XFA_Element::Picture:
-      node = pdfium::MakeUnique<CXFA_Picture>(doc, packet);
+      node = std::make_unique<CXFA_Picture>(doc, packet);
       break;
     case XFA_Element::Traversal:
-      node = pdfium::MakeUnique<CXFA_Traversal>(doc, packet);
+      node = std::make_unique<CXFA_Traversal>(doc, packet);
       break;
     case XFA_Element::SilentPrint:
-      node = pdfium::MakeUnique<CXFA_SilentPrint>(doc, packet);
+      node = std::make_unique<CXFA_SilentPrint>(doc, packet);
       break;
     case XFA_Element::WebClient:
-      node = pdfium::MakeUnique<CXFA_WebClient>(doc, packet);
+      node = std::make_unique<CXFA_WebClient>(doc, packet);
       break;
     case XFA_Element::Producer:
-      node = pdfium::MakeUnique<CXFA_Producer>(doc, packet);
+      node = std::make_unique<CXFA_Producer>(doc, packet);
       break;
     case XFA_Element::Corner:
-      node = pdfium::MakeUnique<CXFA_Corner>(doc, packet);
+      node = std::make_unique<CXFA_Corner>(doc, packet);
       break;
     case XFA_Element::MsgId:
-      node = pdfium::MakeUnique<CXFA_MsgId>(doc, packet);
+      node = std::make_unique<CXFA_MsgId>(doc, packet);
       break;
     case XFA_Element::Color:
-      node = pdfium::MakeUnique<CXFA_Color>(doc, packet);
+      node = std::make_unique<CXFA_Color>(doc, packet);
       break;
     case XFA_Element::Keep:
-      node = pdfium::MakeUnique<CXFA_Keep>(doc, packet);
+      node = std::make_unique<CXFA_Keep>(doc, packet);
       break;
     case XFA_Element::Query:
-      node = pdfium::MakeUnique<CXFA_Query>(doc, packet);
+      node = std::make_unique<CXFA_Query>(doc, packet);
       break;
     case XFA_Element::Insert:
-      node = pdfium::MakeUnique<CXFA_Insert>(doc, packet);
+      node = std::make_unique<CXFA_Insert>(doc, packet);
       break;
     case XFA_Element::ImageEdit:
-      node = pdfium::MakeUnique<CXFA_ImageEdit>(doc, packet);
+      node = std::make_unique<CXFA_ImageEdit>(doc, packet);
       break;
     case XFA_Element::Validate:
-      node = pdfium::MakeUnique<CXFA_Validate>(doc, packet);
+      node = std::make_unique<CXFA_Validate>(doc, packet);
       break;
     case XFA_Element::DigestMethods:
-      node = pdfium::MakeUnique<CXFA_DigestMethods>(doc, packet);
+      node = std::make_unique<CXFA_DigestMethods>(doc, packet);
       break;
     case XFA_Element::NumberPatterns:
-      node = pdfium::MakeUnique<CXFA_NumberPatterns>(doc, packet);
+      node = std::make_unique<CXFA_NumberPatterns>(doc, packet);
       break;
     case XFA_Element::PageSet:
-      node = pdfium::MakeUnique<CXFA_PageSet>(doc, packet);
+      node = std::make_unique<CXFA_PageSet>(doc, packet);
       break;
     case XFA_Element::Integer:
-      node = pdfium::MakeUnique<CXFA_Integer>(doc, packet);
+      node = std::make_unique<CXFA_Integer>(doc, packet);
       break;
     case XFA_Element::SoapAddress:
-      node = pdfium::MakeUnique<CXFA_SoapAddress>(doc, packet);
+      node = std::make_unique<CXFA_SoapAddress>(doc, packet);
       break;
     case XFA_Element::Equate:
-      node = pdfium::MakeUnique<CXFA_Equate>(doc, packet);
+      node = std::make_unique<CXFA_Equate>(doc, packet);
       break;
     case XFA_Element::FormFieldFilling:
-      node = pdfium::MakeUnique<CXFA_FormFieldFilling>(doc, packet);
+      node = std::make_unique<CXFA_FormFieldFilling>(doc, packet);
       break;
     case XFA_Element::PageRange:
-      node = pdfium::MakeUnique<CXFA_PageRange>(doc, packet);
+      node = std::make_unique<CXFA_PageRange>(doc, packet);
       break;
     case XFA_Element::Update:
-      node = pdfium::MakeUnique<CXFA_Update>(doc, packet);
+      node = std::make_unique<CXFA_Update>(doc, packet);
       break;
     case XFA_Element::ConnectString:
-      node = pdfium::MakeUnique<CXFA_ConnectString>(doc, packet);
+      node = std::make_unique<CXFA_ConnectString>(doc, packet);
       break;
     case XFA_Element::Mode:
-      node = pdfium::MakeUnique<CXFA_Mode>(doc, packet);
+      node = std::make_unique<CXFA_Mode>(doc, packet);
       break;
     case XFA_Element::Layout:
-      node = pdfium::MakeUnique<CXFA_Layout>(doc, packet);
+      node = std::make_unique<CXFA_Layout>(doc, packet);
       break;
     case XFA_Element::Sharpxml:
-      node = pdfium::MakeUnique<CXFA_Sharpxml>(doc, packet);
+      node = std::make_unique<CXFA_Sharpxml>(doc, packet);
       break;
     case XFA_Element::XsdConnection:
-      node = pdfium::MakeUnique<CXFA_XsdConnection>(doc, packet);
+      node = std::make_unique<CXFA_XsdConnection>(doc, packet);
       break;
     case XFA_Element::Traverse:
-      node = pdfium::MakeUnique<CXFA_Traverse>(doc, packet);
+      node = std::make_unique<CXFA_Traverse>(doc, packet);
       break;
     case XFA_Element::Encodings:
-      node = pdfium::MakeUnique<CXFA_Encodings>(doc, packet);
+      node = std::make_unique<CXFA_Encodings>(doc, packet);
       break;
     case XFA_Element::Template:
-      node = pdfium::MakeUnique<CXFA_Template>(doc, packet);
+      node = std::make_unique<CXFA_Template>(doc, packet);
       break;
     case XFA_Element::Acrobat:
-      node = pdfium::MakeUnique<CXFA_Acrobat>(doc, packet);
+      node = std::make_unique<CXFA_Acrobat>(doc, packet);
       break;
     case XFA_Element::ValidationMessaging:
-      node = pdfium::MakeUnique<CXFA_ValidationMessaging>(doc, packet);
+      node = std::make_unique<CXFA_ValidationMessaging>(doc, packet);
       break;
     case XFA_Element::Signing:
-      node = pdfium::MakeUnique<CXFA_Signing>(doc, packet);
+      node = std::make_unique<CXFA_Signing>(doc, packet);
       break;
     case XFA_Element::Script:
-      node = pdfium::MakeUnique<CXFA_Script>(doc, packet);
+      node = std::make_unique<CXFA_Script>(doc, packet);
       break;
     case XFA_Element::AddViewerPreferences:
-      node = pdfium::MakeUnique<CXFA_AddViewerPreferences>(doc, packet);
+      node = std::make_unique<CXFA_AddViewerPreferences>(doc, packet);
       break;
     case XFA_Element::AlwaysEmbed:
-      node = pdfium::MakeUnique<CXFA_AlwaysEmbed>(doc, packet);
+      node = std::make_unique<CXFA_AlwaysEmbed>(doc, packet);
       break;
     case XFA_Element::PasswordEdit:
-      node = pdfium::MakeUnique<CXFA_PasswordEdit>(doc, packet);
+      node = std::make_unique<CXFA_PasswordEdit>(doc, packet);
       break;
     case XFA_Element::NumericEdit:
-      node = pdfium::MakeUnique<CXFA_NumericEdit>(doc, packet);
+      node = std::make_unique<CXFA_NumericEdit>(doc, packet);
       break;
     case XFA_Element::EncryptionMethod:
-      node = pdfium::MakeUnique<CXFA_EncryptionMethod>(doc, packet);
+      node = std::make_unique<CXFA_EncryptionMethod>(doc, packet);
       break;
     case XFA_Element::Change:
-      node = pdfium::MakeUnique<CXFA_Change>(doc, packet);
+      node = std::make_unique<CXFA_Change>(doc, packet);
       break;
     case XFA_Element::PageArea:
-      node = pdfium::MakeUnique<CXFA_PageArea>(doc, packet);
+      node = std::make_unique<CXFA_PageArea>(doc, packet);
       break;
     case XFA_Element::SubmitUrl:
-      node = pdfium::MakeUnique<CXFA_SubmitUrl>(doc, packet);
+      node = std::make_unique<CXFA_SubmitUrl>(doc, packet);
       break;
     case XFA_Element::Oids:
-      node = pdfium::MakeUnique<CXFA_Oids>(doc, packet);
+      node = std::make_unique<CXFA_Oids>(doc, packet);
       break;
     case XFA_Element::Signature:
-      node = pdfium::MakeUnique<CXFA_Signature>(doc, packet);
+      node = std::make_unique<CXFA_Signature>(doc, packet);
       break;
     case XFA_Element::ADBE_JSConsole:
-      node = pdfium::MakeUnique<CXFA_ADBE_JSConsole>(doc, packet);
+      node = std::make_unique<CXFA_ADBE_JSConsole>(doc, packet);
       break;
     case XFA_Element::Caption:
-      node = pdfium::MakeUnique<CXFA_Caption>(doc, packet);
+      node = std::make_unique<CXFA_Caption>(doc, packet);
       break;
     case XFA_Element::Relevant:
-      node = pdfium::MakeUnique<CXFA_Relevant>(doc, packet);
+      node = std::make_unique<CXFA_Relevant>(doc, packet);
       break;
     case XFA_Element::FlipLabel:
-      node = pdfium::MakeUnique<CXFA_FlipLabel>(doc, packet);
+      node = std::make_unique<CXFA_FlipLabel>(doc, packet);
       break;
     case XFA_Element::ExData:
-      node = pdfium::MakeUnique<CXFA_ExData>(doc, packet);
+      node = std::make_unique<CXFA_ExData>(doc, packet);
       break;
     case XFA_Element::DayNames:
-      node = pdfium::MakeUnique<CXFA_DayNames>(doc, packet);
+      node = std::make_unique<CXFA_DayNames>(doc, packet);
       break;
     case XFA_Element::SoapAction:
-      node = pdfium::MakeUnique<CXFA_SoapAction>(doc, packet);
+      node = std::make_unique<CXFA_SoapAction>(doc, packet);
       break;
     case XFA_Element::DefaultTypeface:
-      node = pdfium::MakeUnique<CXFA_DefaultTypeface>(doc, packet);
+      node = std::make_unique<CXFA_DefaultTypeface>(doc, packet);
       break;
     case XFA_Element::Manifest:
-      node = pdfium::MakeUnique<CXFA_Manifest>(doc, packet);
+      node = std::make_unique<CXFA_Manifest>(doc, packet);
       break;
     case XFA_Element::Overflow:
-      node = pdfium::MakeUnique<CXFA_Overflow>(doc, packet);
+      node = std::make_unique<CXFA_Overflow>(doc, packet);
       break;
     case XFA_Element::Linear:
-      node = pdfium::MakeUnique<CXFA_Linear>(doc, packet);
+      node = std::make_unique<CXFA_Linear>(doc, packet);
       break;
     case XFA_Element::CurrencySymbol:
-      node = pdfium::MakeUnique<CXFA_CurrencySymbol>(doc, packet);
+      node = std::make_unique<CXFA_CurrencySymbol>(doc, packet);
       break;
     case XFA_Element::Delete:
-      node = pdfium::MakeUnique<CXFA_Delete>(doc, packet);
+      node = std::make_unique<CXFA_Delete>(doc, packet);
       break;
     case XFA_Element::DigestMethod:
-      node = pdfium::MakeUnique<CXFA_DigestMethod>(doc, packet);
+      node = std::make_unique<CXFA_DigestMethod>(doc, packet);
       break;
     case XFA_Element::InstanceManager:
-      node = pdfium::MakeUnique<CXFA_InstanceManager>(doc, packet);
+      node = std::make_unique<CXFA_InstanceManager>(doc, packet);
       break;
     case XFA_Element::EquateRange:
-      node = pdfium::MakeUnique<CXFA_EquateRange>(doc, packet);
+      node = std::make_unique<CXFA_EquateRange>(doc, packet);
       break;
     case XFA_Element::Medium:
-      node = pdfium::MakeUnique<CXFA_Medium>(doc, packet);
+      node = std::make_unique<CXFA_Medium>(doc, packet);
       break;
     case XFA_Element::TextEdit:
-      node = pdfium::MakeUnique<CXFA_TextEdit>(doc, packet);
+      node = std::make_unique<CXFA_TextEdit>(doc, packet);
       break;
     case XFA_Element::TemplateCache:
-      node = pdfium::MakeUnique<CXFA_TemplateCache>(doc, packet);
+      node = std::make_unique<CXFA_TemplateCache>(doc, packet);
       break;
     case XFA_Element::CompressObjectStream:
-      node = pdfium::MakeUnique<CXFA_CompressObjectStream>(doc, packet);
+      node = std::make_unique<CXFA_CompressObjectStream>(doc, packet);
       break;
     case XFA_Element::DataValue:
-      node = pdfium::MakeUnique<CXFA_DataValue>(doc, packet);
+      node = std::make_unique<CXFA_DataValue>(doc, packet);
       break;
     case XFA_Element::AccessibleContent:
-      node = pdfium::MakeUnique<CXFA_AccessibleContent>(doc, packet);
+      node = std::make_unique<CXFA_AccessibleContent>(doc, packet);
       break;
     case XFA_Element::IncludeXDPContent:
-      node = pdfium::MakeUnique<CXFA_IncludeXDPContent>(doc, packet);
+      node = std::make_unique<CXFA_IncludeXDPContent>(doc, packet);
       break;
     case XFA_Element::XmlConnection:
-      node = pdfium::MakeUnique<CXFA_XmlConnection>(doc, packet);
+      node = std::make_unique<CXFA_XmlConnection>(doc, packet);
       break;
     case XFA_Element::ValidateApprovalSignatures:
-      node = pdfium::MakeUnique<CXFA_ValidateApprovalSignatures>(doc, packet);
+      node = std::make_unique<CXFA_ValidateApprovalSignatures>(doc, packet);
       break;
     case XFA_Element::SignData:
-      node = pdfium::MakeUnique<CXFA_SignData>(doc, packet);
+      node = std::make_unique<CXFA_SignData>(doc, packet);
       break;
     case XFA_Element::Packets:
-      node = pdfium::MakeUnique<CXFA_Packets>(doc, packet);
+      node = std::make_unique<CXFA_Packets>(doc, packet);
       break;
     case XFA_Element::DatePattern:
-      node = pdfium::MakeUnique<CXFA_DatePattern>(doc, packet);
+      node = std::make_unique<CXFA_DatePattern>(doc, packet);
       break;
     case XFA_Element::DuplexOption:
-      node = pdfium::MakeUnique<CXFA_DuplexOption>(doc, packet);
+      node = std::make_unique<CXFA_DuplexOption>(doc, packet);
       break;
     case XFA_Element::Base:
-      node = pdfium::MakeUnique<CXFA_Base>(doc, packet);
+      node = std::make_unique<CXFA_Base>(doc, packet);
       break;
     case XFA_Element::Bind:
-      node = pdfium::MakeUnique<CXFA_Bind>(doc, packet);
+      node = std::make_unique<CXFA_Bind>(doc, packet);
       break;
     case XFA_Element::Compression:
-      node = pdfium::MakeUnique<CXFA_Compression>(doc, packet);
+      node = std::make_unique<CXFA_Compression>(doc, packet);
       break;
     case XFA_Element::User:
-      node = pdfium::MakeUnique<CXFA_User>(doc, packet);
+      node = std::make_unique<CXFA_User>(doc, packet);
       break;
     case XFA_Element::Rectangle:
-      node = pdfium::MakeUnique<CXFA_Rectangle>(doc, packet);
+      node = std::make_unique<CXFA_Rectangle>(doc, packet);
       break;
     case XFA_Element::EffectiveOutputPolicy:
-      node = pdfium::MakeUnique<CXFA_EffectiveOutputPolicy>(doc, packet);
+      node = std::make_unique<CXFA_EffectiveOutputPolicy>(doc, packet);
       break;
     case XFA_Element::ADBE_JSDebugger:
-      node = pdfium::MakeUnique<CXFA_ADBE_JSDebugger>(doc, packet);
+      node = std::make_unique<CXFA_ADBE_JSDebugger>(doc, packet);
       break;
     case XFA_Element::Acrobat7:
-      node = pdfium::MakeUnique<CXFA_Acrobat7>(doc, packet);
+      node = std::make_unique<CXFA_Acrobat7>(doc, packet);
       break;
     case XFA_Element::Interactive:
-      node = pdfium::MakeUnique<CXFA_Interactive>(doc, packet);
+      node = std::make_unique<CXFA_Interactive>(doc, packet);
       break;
     case XFA_Element::Locale:
-      node = pdfium::MakeUnique<CXFA_Locale>(doc, packet);
+      node = std::make_unique<CXFA_Locale>(doc, packet);
       break;
     case XFA_Element::CurrentPage:
-      node = pdfium::MakeUnique<CXFA_CurrentPage>(doc, packet);
+      node = std::make_unique<CXFA_CurrentPage>(doc, packet);
       break;
     case XFA_Element::Data:
-      node = pdfium::MakeUnique<CXFA_Data>(doc, packet);
+      node = std::make_unique<CXFA_Data>(doc, packet);
       break;
     case XFA_Element::Date:
-      node = pdfium::MakeUnique<CXFA_Date>(doc, packet);
+      node = std::make_unique<CXFA_Date>(doc, packet);
       break;
     case XFA_Element::Desc:
-      node = pdfium::MakeUnique<CXFA_Desc>(doc, packet);
+      node = std::make_unique<CXFA_Desc>(doc, packet);
       break;
     case XFA_Element::Encrypt:
-      node = pdfium::MakeUnique<CXFA_Encrypt>(doc, packet);
+      node = std::make_unique<CXFA_Encrypt>(doc, packet);
       break;
     case XFA_Element::Draw:
-      node = pdfium::MakeUnique<CXFA_Draw>(doc, packet);
+      node = std::make_unique<CXFA_Draw>(doc, packet);
       break;
     case XFA_Element::Encryption:
-      node = pdfium::MakeUnique<CXFA_Encryption>(doc, packet);
+      node = std::make_unique<CXFA_Encryption>(doc, packet);
       break;
     case XFA_Element::MeridiemNames:
-      node = pdfium::MakeUnique<CXFA_MeridiemNames>(doc, packet);
+      node = std::make_unique<CXFA_MeridiemNames>(doc, packet);
       break;
     case XFA_Element::Messaging:
-      node = pdfium::MakeUnique<CXFA_Messaging>(doc, packet);
+      node = std::make_unique<CXFA_Messaging>(doc, packet);
       break;
     case XFA_Element::Speak:
-      node = pdfium::MakeUnique<CXFA_Speak>(doc, packet);
+      node = std::make_unique<CXFA_Speak>(doc, packet);
       break;
     case XFA_Element::DataGroup:
-      node = pdfium::MakeUnique<CXFA_DataGroup>(doc, packet);
+      node = std::make_unique<CXFA_DataGroup>(doc, packet);
       break;
     case XFA_Element::Common:
-      node = pdfium::MakeUnique<CXFA_Common>(doc, packet);
+      node = std::make_unique<CXFA_Common>(doc, packet);
       break;
     case XFA_Element::Sharptext:
-      node = pdfium::MakeUnique<CXFA_Sharptext>(doc, packet);
+      node = std::make_unique<CXFA_Sharptext>(doc, packet);
       break;
     case XFA_Element::PaginationOverride:
-      node = pdfium::MakeUnique<CXFA_PaginationOverride>(doc, packet);
+      node = std::make_unique<CXFA_PaginationOverride>(doc, packet);
       break;
     case XFA_Element::Reasons:
-      node = pdfium::MakeUnique<CXFA_Reasons>(doc, packet);
+      node = std::make_unique<CXFA_Reasons>(doc, packet);
       break;
     case XFA_Element::SignatureProperties:
-      node = pdfium::MakeUnique<CXFA_SignatureProperties>(doc, packet);
+      node = std::make_unique<CXFA_SignatureProperties>(doc, packet);
       break;
     case XFA_Element::Threshold:
-      node = pdfium::MakeUnique<CXFA_Threshold>(doc, packet);
+      node = std::make_unique<CXFA_Threshold>(doc, packet);
       break;
     case XFA_Element::AppearanceFilter:
-      node = pdfium::MakeUnique<CXFA_AppearanceFilter>(doc, packet);
+      node = std::make_unique<CXFA_AppearanceFilter>(doc, packet);
       break;
     case XFA_Element::Fill:
-      node = pdfium::MakeUnique<CXFA_Fill>(doc, packet);
+      node = std::make_unique<CXFA_Fill>(doc, packet);
       break;
     case XFA_Element::Font:
-      node = pdfium::MakeUnique<CXFA_Font>(doc, packet);
+      node = std::make_unique<CXFA_Font>(doc, packet);
       break;
     case XFA_Element::Form:
-      node = pdfium::MakeUnique<CXFA_Form>(doc, packet);
+      node = std::make_unique<CXFA_Form>(doc, packet);
       break;
     case XFA_Element::MediumInfo:
-      node = pdfium::MakeUnique<CXFA_MediumInfo>(doc, packet);
+      node = std::make_unique<CXFA_MediumInfo>(doc, packet);
       break;
     case XFA_Element::Certificate:
-      node = pdfium::MakeUnique<CXFA_Certificate>(doc, packet);
+      node = std::make_unique<CXFA_Certificate>(doc, packet);
       break;
     case XFA_Element::Password:
-      node = pdfium::MakeUnique<CXFA_Password>(doc, packet);
+      node = std::make_unique<CXFA_Password>(doc, packet);
       break;
     case XFA_Element::RunScripts:
-      node = pdfium::MakeUnique<CXFA_RunScripts>(doc, packet);
+      node = std::make_unique<CXFA_RunScripts>(doc, packet);
       break;
     case XFA_Element::Trace:
-      node = pdfium::MakeUnique<CXFA_Trace>(doc, packet);
+      node = std::make_unique<CXFA_Trace>(doc, packet);
       break;
     case XFA_Element::Float:
-      node = pdfium::MakeUnique<CXFA_Float>(doc, packet);
+      node = std::make_unique<CXFA_Float>(doc, packet);
       break;
     case XFA_Element::RenderPolicy:
-      node = pdfium::MakeUnique<CXFA_RenderPolicy>(doc, packet);
+      node = std::make_unique<CXFA_RenderPolicy>(doc, packet);
       break;
     case XFA_Element::Destination:
-      node = pdfium::MakeUnique<CXFA_Destination>(doc, packet);
+      node = std::make_unique<CXFA_Destination>(doc, packet);
       break;
     case XFA_Element::Value:
-      node = pdfium::MakeUnique<CXFA_Value>(doc, packet);
+      node = std::make_unique<CXFA_Value>(doc, packet);
       break;
     case XFA_Element::Bookend:
-      node = pdfium::MakeUnique<CXFA_Bookend>(doc, packet);
+      node = std::make_unique<CXFA_Bookend>(doc, packet);
       break;
     case XFA_Element::ExObject:
-      node = pdfium::MakeUnique<CXFA_ExObject>(doc, packet);
+      node = std::make_unique<CXFA_ExObject>(doc, packet);
       break;
     case XFA_Element::OpenAction:
-      node = pdfium::MakeUnique<CXFA_OpenAction>(doc, packet);
+      node = std::make_unique<CXFA_OpenAction>(doc, packet);
       break;
     case XFA_Element::NeverEmbed:
-      node = pdfium::MakeUnique<CXFA_NeverEmbed>(doc, packet);
+      node = std::make_unique<CXFA_NeverEmbed>(doc, packet);
       break;
     case XFA_Element::BindItems:
-      node = pdfium::MakeUnique<CXFA_BindItems>(doc, packet);
+      node = std::make_unique<CXFA_BindItems>(doc, packet);
       break;
     case XFA_Element::Calculate:
-      node = pdfium::MakeUnique<CXFA_Calculate>(doc, packet);
+      node = std::make_unique<CXFA_Calculate>(doc, packet);
       break;
     case XFA_Element::Print:
-      node = pdfium::MakeUnique<CXFA_Print>(doc, packet);
+      node = std::make_unique<CXFA_Print>(doc, packet);
       break;
     case XFA_Element::Extras:
-      node = pdfium::MakeUnique<CXFA_Extras>(doc, packet);
+      node = std::make_unique<CXFA_Extras>(doc, packet);
       break;
     case XFA_Element::Proto:
-      node = pdfium::MakeUnique<CXFA_Proto>(doc, packet);
+      node = std::make_unique<CXFA_Proto>(doc, packet);
       break;
     case XFA_Element::DSigData:
-      node = pdfium::MakeUnique<CXFA_DSigData>(doc, packet);
+      node = std::make_unique<CXFA_DSigData>(doc, packet);
       break;
     case XFA_Element::Creator:
-      node = pdfium::MakeUnique<CXFA_Creator>(doc, packet);
+      node = std::make_unique<CXFA_Creator>(doc, packet);
       break;
     case XFA_Element::Connect:
-      node = pdfium::MakeUnique<CXFA_Connect>(doc, packet);
+      node = std::make_unique<CXFA_Connect>(doc, packet);
       break;
     case XFA_Element::Permissions:
-      node = pdfium::MakeUnique<CXFA_Permissions>(doc, packet);
+      node = std::make_unique<CXFA_Permissions>(doc, packet);
       break;
     case XFA_Element::ConnectionSet:
-      node = pdfium::MakeUnique<CXFA_ConnectionSet>(doc, packet);
+      node = std::make_unique<CXFA_ConnectionSet>(doc, packet);
       break;
     case XFA_Element::Submit:
-      node = pdfium::MakeUnique<CXFA_Submit>(doc, packet);
+      node = std::make_unique<CXFA_Submit>(doc, packet);
       break;
     case XFA_Element::Range:
-      node = pdfium::MakeUnique<CXFA_Range>(doc, packet);
+      node = std::make_unique<CXFA_Range>(doc, packet);
       break;
     case XFA_Element::Linearized:
-      node = pdfium::MakeUnique<CXFA_Linearized>(doc, packet);
+      node = std::make_unique<CXFA_Linearized>(doc, packet);
       break;
     case XFA_Element::Packet:
-      node = pdfium::MakeUnique<CXFA_Packet>(doc, packet);
+      node = std::make_unique<CXFA_Packet>(doc, packet);
       break;
     case XFA_Element::RootElement:
-      node = pdfium::MakeUnique<CXFA_RootElement>(doc, packet);
+      node = std::make_unique<CXFA_RootElement>(doc, packet);
       break;
     case XFA_Element::PlaintextMetadata:
-      node = pdfium::MakeUnique<CXFA_PlaintextMetadata>(doc, packet);
+      node = std::make_unique<CXFA_PlaintextMetadata>(doc, packet);
       break;
     case XFA_Element::NumberSymbols:
-      node = pdfium::MakeUnique<CXFA_NumberSymbols>(doc, packet);
+      node = std::make_unique<CXFA_NumberSymbols>(doc, packet);
       break;
     case XFA_Element::PrintHighQuality:
-      node = pdfium::MakeUnique<CXFA_PrintHighQuality>(doc, packet);
+      node = std::make_unique<CXFA_PrintHighQuality>(doc, packet);
       break;
     case XFA_Element::Driver:
-      node = pdfium::MakeUnique<CXFA_Driver>(doc, packet);
+      node = std::make_unique<CXFA_Driver>(doc, packet);
       break;
     case XFA_Element::IncrementalLoad:
-      node = pdfium::MakeUnique<CXFA_IncrementalLoad>(doc, packet);
+      node = std::make_unique<CXFA_IncrementalLoad>(doc, packet);
       break;
     case XFA_Element::SubjectDN:
-      node = pdfium::MakeUnique<CXFA_SubjectDN>(doc, packet);
+      node = std::make_unique<CXFA_SubjectDN>(doc, packet);
       break;
     case XFA_Element::CompressLogicalStructure:
-      node = pdfium::MakeUnique<CXFA_CompressLogicalStructure>(doc, packet);
+      node = std::make_unique<CXFA_CompressLogicalStructure>(doc, packet);
       break;
     case XFA_Element::IncrementalMerge:
-      node = pdfium::MakeUnique<CXFA_IncrementalMerge>(doc, packet);
+      node = std::make_unique<CXFA_IncrementalMerge>(doc, packet);
       break;
     case XFA_Element::Radial:
-      node = pdfium::MakeUnique<CXFA_Radial>(doc, packet);
+      node = std::make_unique<CXFA_Radial>(doc, packet);
       break;
     case XFA_Element::Variables:
-      node = pdfium::MakeUnique<CXFA_Variables>(doc, packet);
+      node = std::make_unique<CXFA_Variables>(doc, packet);
       break;
     case XFA_Element::TimePatterns:
-      node = pdfium::MakeUnique<CXFA_TimePatterns>(doc, packet);
+      node = std::make_unique<CXFA_TimePatterns>(doc, packet);
       break;
     case XFA_Element::EffectiveInputPolicy:
-      node = pdfium::MakeUnique<CXFA_EffectiveInputPolicy>(doc, packet);
+      node = std::make_unique<CXFA_EffectiveInputPolicy>(doc, packet);
       break;
     case XFA_Element::NameAttr:
-      node = pdfium::MakeUnique<CXFA_NameAttr>(doc, packet);
+      node = std::make_unique<CXFA_NameAttr>(doc, packet);
       break;
     case XFA_Element::Conformance:
-      node = pdfium::MakeUnique<CXFA_Conformance>(doc, packet);
+      node = std::make_unique<CXFA_Conformance>(doc, packet);
       break;
     case XFA_Element::Transform:
-      node = pdfium::MakeUnique<CXFA_Transform>(doc, packet);
+      node = std::make_unique<CXFA_Transform>(doc, packet);
       break;
     case XFA_Element::LockDocument:
-      node = pdfium::MakeUnique<CXFA_LockDocument>(doc, packet);
+      node = std::make_unique<CXFA_LockDocument>(doc, packet);
       break;
     case XFA_Element::BreakAfter:
-      node = pdfium::MakeUnique<CXFA_BreakAfter>(doc, packet);
+      node = std::make_unique<CXFA_BreakAfter>(doc, packet);
       break;
     case XFA_Element::Line:
-      node = pdfium::MakeUnique<CXFA_Line>(doc, packet);
+      node = std::make_unique<CXFA_Line>(doc, packet);
       break;
     case XFA_Element::Source:
-      node = pdfium::MakeUnique<CXFA_Source>(doc, packet);
+      node = std::make_unique<CXFA_Source>(doc, packet);
       break;
     case XFA_Element::Occur:
-      node = pdfium::MakeUnique<CXFA_Occur>(doc, packet);
+      node = std::make_unique<CXFA_Occur>(doc, packet);
       break;
     case XFA_Element::PickTrayByPDFSize:
-      node = pdfium::MakeUnique<CXFA_PickTrayByPDFSize>(doc, packet);
+      node = std::make_unique<CXFA_PickTrayByPDFSize>(doc, packet);
       break;
     case XFA_Element::MonthNames:
-      node = pdfium::MakeUnique<CXFA_MonthNames>(doc, packet);
+      node = std::make_unique<CXFA_MonthNames>(doc, packet);
       break;
     case XFA_Element::Severity:
-      node = pdfium::MakeUnique<CXFA_Severity>(doc, packet);
+      node = std::make_unique<CXFA_Severity>(doc, packet);
       break;
     case XFA_Element::GroupParent:
-      node = pdfium::MakeUnique<CXFA_GroupParent>(doc, packet);
+      node = std::make_unique<CXFA_GroupParent>(doc, packet);
       break;
     case XFA_Element::DocumentAssembly:
-      node = pdfium::MakeUnique<CXFA_DocumentAssembly>(doc, packet);
+      node = std::make_unique<CXFA_DocumentAssembly>(doc, packet);
       break;
     case XFA_Element::NumberSymbol:
-      node = pdfium::MakeUnique<CXFA_NumberSymbol>(doc, packet);
+      node = std::make_unique<CXFA_NumberSymbol>(doc, packet);
       break;
     case XFA_Element::Tagged:
-      node = pdfium::MakeUnique<CXFA_Tagged>(doc, packet);
+      node = std::make_unique<CXFA_Tagged>(doc, packet);
       break;
     case XFA_Element::Items:
-      node = pdfium::MakeUnique<CXFA_Items>(doc, packet);
+      node = std::make_unique<CXFA_Items>(doc, packet);
       break;
     default:
       NOTREACHED();
diff --git a/xfa/fxfa/parser/cxfa_node_unittest.cpp b/xfa/fxfa/parser/cxfa_node_unittest.cpp
index 620704f..a085d24 100644
--- a/xfa/fxfa/parser/cxfa_node_unittest.cpp
+++ b/xfa/fxfa/parser/cxfa_node_unittest.cpp
@@ -6,7 +6,6 @@
 
 #include "fxjs/xfa/cjx_node.h"
 #include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_document.h"
 
 namespace {
@@ -21,7 +20,7 @@
                   XFA_Element::Node,
                   {},
                   {},
-                  pdfium::MakeUnique<CJX_Node>(this)) {}
+                  std::make_unique<CJX_Node>(this)) {}
 
   ~TestNode() override = default;
 };
@@ -31,8 +30,8 @@
 class CXFANodeTest : public testing::Test {
  public:
   void SetUp() override {
-    doc_ = pdfium::MakeUnique<CXFA_Document>(nullptr, nullptr);
-    node_ = pdfium::MakeUnique<TestNode>(doc_.get());
+    doc_ = std::make_unique<CXFA_Document>(nullptr, nullptr);
+    node_ = std::make_unique<TestNode>(doc_.get());
   }
 
   void TearDown() override {
diff --git a/xfa/fxfa/parser/cxfa_nodeiteratortemplate_unittest.cpp b/xfa/fxfa/parser/cxfa_nodeiteratortemplate_unittest.cpp
index aa4f72d..685814f 100644
--- a/xfa/fxfa/parser/cxfa_nodeiteratortemplate_unittest.cpp
+++ b/xfa/fxfa/parser/cxfa_nodeiteratortemplate_unittest.cpp
@@ -8,7 +8,6 @@
 #include <vector>
 
 #include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/base/ptr_util.h"
 
 class CXFA_NodeIteratorTemplateTest : public testing::Test {
  public:
@@ -57,16 +56,16 @@
   //            child5
   //
   void SetUp() override {
-    root_ = pdfium::MakeUnique<Node>(nullptr);
-    child1_ = pdfium::MakeUnique<Node>(root_.get());
-    child2_ = pdfium::MakeUnique<Node>(root_.get());
-    child3_ = pdfium::MakeUnique<Node>(child2_.get());
-    child4_ = pdfium::MakeUnique<Node>(child3_.get());
-    child5_ = pdfium::MakeUnique<Node>(child4_.get());
-    child6_ = pdfium::MakeUnique<Node>(child3_.get());
-    child7_ = pdfium::MakeUnique<Node>(child2_.get());
-    child8_ = pdfium::MakeUnique<Node>(child7_.get());
-    child9_ = pdfium::MakeUnique<Node>(child2_.get());
+    root_ = std::make_unique<Node>(nullptr);
+    child1_ = std::make_unique<Node>(root_.get());
+    child2_ = std::make_unique<Node>(root_.get());
+    child3_ = std::make_unique<Node>(child2_.get());
+    child4_ = std::make_unique<Node>(child3_.get());
+    child5_ = std::make_unique<Node>(child4_.get());
+    child6_ = std::make_unique<Node>(child3_.get());
+    child7_ = std::make_unique<Node>(child2_.get());
+    child8_ = std::make_unique<Node>(child7_.get());
+    child9_ = std::make_unique<Node>(child2_.get());
   }
 
   Node* root() const { return root_.get(); }
diff --git a/xfa/fxfa/parser/cxfa_numberofcopies.cpp b/xfa/fxfa/parser/cxfa_numberofcopies.cpp
index d66fd98..3d02f85 100644
--- a/xfa/fxfa/parser/cxfa_numberofcopies.cpp
+++ b/xfa/fxfa/parser/cxfa_numberofcopies.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_numberofcopies.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::NumberOfCopies,
                 {},
                 kNumberOfCopiesAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_NumberOfCopies::~CXFA_NumberOfCopies() = default;
diff --git a/xfa/fxfa/parser/cxfa_numberpattern.cpp b/xfa/fxfa/parser/cxfa_numberpattern.cpp
index 964855c..f8298b8 100644
--- a/xfa/fxfa/parser/cxfa_numberpattern.cpp
+++ b/xfa/fxfa/parser/cxfa_numberpattern.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_numberpattern.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::NumberPattern,
                 {},
                 kNumberPatternAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_NumberPattern::~CXFA_NumberPattern() = default;
diff --git a/xfa/fxfa/parser/cxfa_numberpatterns.cpp b/xfa/fxfa/parser/cxfa_numberpatterns.cpp
index 1597a29..4c91f49 100644
--- a/xfa/fxfa/parser/cxfa_numberpatterns.cpp
+++ b/xfa/fxfa/parser/cxfa_numberpatterns.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_numberpatterns.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::NumberPatterns,
                 kNumberPatternsPropertyData,
                 {},
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_NumberPatterns::~CXFA_NumberPatterns() = default;
diff --git a/xfa/fxfa/parser/cxfa_numbersymbol.cpp b/xfa/fxfa/parser/cxfa_numbersymbol.cpp
index 398ab17..3d242a3 100644
--- a/xfa/fxfa/parser/cxfa_numbersymbol.cpp
+++ b/xfa/fxfa/parser/cxfa_numbersymbol.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_numbersymbol.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::NumberSymbol,
                 {},
                 kNumberSymbolAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_NumberSymbol::~CXFA_NumberSymbol() = default;
diff --git a/xfa/fxfa/parser/cxfa_numbersymbols.cpp b/xfa/fxfa/parser/cxfa_numbersymbols.cpp
index adc7234..63a6d29 100644
--- a/xfa/fxfa/parser/cxfa_numbersymbols.cpp
+++ b/xfa/fxfa/parser/cxfa_numbersymbols.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_numbersymbols.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::NumberSymbols,
                 kNumberSymbolsPropertyData,
                 {},
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_NumberSymbols::~CXFA_NumberSymbols() = default;
diff --git a/xfa/fxfa/parser/cxfa_numericedit.cpp b/xfa/fxfa/parser/cxfa_numericedit.cpp
index 641fe2a..c82e7aa 100644
--- a/xfa/fxfa/parser/cxfa_numericedit.cpp
+++ b/xfa/fxfa/parser/cxfa_numericedit.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_numericedit.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -36,7 +37,7 @@
                 XFA_Element::NumericEdit,
                 kNumericEditPropertyData,
                 kNumericEditAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_NumericEdit::~CXFA_NumericEdit() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_occur.cpp b/xfa/fxfa/parser/cxfa_occur.cpp
index ee68981..6e80bd9 100644
--- a/xfa/fxfa/parser/cxfa_occur.cpp
+++ b/xfa/fxfa/parser/cxfa_occur.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_occur.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_occur.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -34,7 +35,7 @@
                 XFA_Element::Occur,
                 kOccurPropertyData,
                 kOccurAttributeData,
-                pdfium::MakeUnique<CJX_Occur>(this)) {}
+                std::make_unique<CJX_Occur>(this)) {}
 
 CXFA_Occur::~CXFA_Occur() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_oid.cpp b/xfa/fxfa/parser/cxfa_oid.cpp
index 9032733..3454df6 100644
--- a/xfa/fxfa/parser/cxfa_oid.cpp
+++ b/xfa/fxfa/parser/cxfa_oid.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_oid.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_textnode.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::Oid,
                 {},
                 kOidAttributeData,
-                pdfium::MakeUnique<CJX_TextNode>(this)) {}
+                std::make_unique<CJX_TextNode>(this)) {}
 
 CXFA_Oid::~CXFA_Oid() = default;
diff --git a/xfa/fxfa/parser/cxfa_oids.cpp b/xfa/fxfa/parser/cxfa_oids.cpp
index 64408ca..dcee670 100644
--- a/xfa/fxfa/parser/cxfa_oids.cpp
+++ b/xfa/fxfa/parser/cxfa_oids.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_oids.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::Oids,
                 {},
                 kOidsAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Oids::~CXFA_Oids() = default;
diff --git a/xfa/fxfa/parser/cxfa_openaction.cpp b/xfa/fxfa/parser/cxfa_openaction.cpp
index b6264c2..545f64d 100644
--- a/xfa/fxfa/parser/cxfa_openaction.cpp
+++ b/xfa/fxfa/parser/cxfa_openaction.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_openaction.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -30,6 +31,6 @@
                 XFA_Element::OpenAction,
                 kOpenActionPropertyData,
                 kOpenActionAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_OpenAction::~CXFA_OpenAction() = default;
diff --git a/xfa/fxfa/parser/cxfa_operation.cpp b/xfa/fxfa/parser/cxfa_operation.cpp
index dbd59ba..dbfb191 100644
--- a/xfa/fxfa/parser/cxfa_operation.cpp
+++ b/xfa/fxfa/parser/cxfa_operation.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_operation.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_textnode.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -30,6 +31,6 @@
                 XFA_Element::Operation,
                 {},
                 kOperationAttributeData,
-                pdfium::MakeUnique<CJX_TextNode>(this)) {}
+                std::make_unique<CJX_TextNode>(this)) {}
 
 CXFA_Operation::~CXFA_Operation() = default;
diff --git a/xfa/fxfa/parser/cxfa_output.cpp b/xfa/fxfa/parser/cxfa_output.cpp
index c9e77de..cce5a11 100644
--- a/xfa/fxfa/parser/cxfa_output.cpp
+++ b/xfa/fxfa/parser/cxfa_output.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_output.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -32,6 +33,6 @@
                 XFA_Element::Output,
                 kOutputPropertyData,
                 kOutputAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Output::~CXFA_Output() = default;
diff --git a/xfa/fxfa/parser/cxfa_outputbin.cpp b/xfa/fxfa/parser/cxfa_outputbin.cpp
index 3b9174f..3d87912 100644
--- a/xfa/fxfa/parser/cxfa_outputbin.cpp
+++ b/xfa/fxfa/parser/cxfa_outputbin.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_outputbin.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::OutputBin,
                 {},
                 kOutputBinAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_OutputBin::~CXFA_OutputBin() = default;
diff --git a/xfa/fxfa/parser/cxfa_outputxsl.cpp b/xfa/fxfa/parser/cxfa_outputxsl.cpp
index ab733bc..f36c6ac 100644
--- a/xfa/fxfa/parser/cxfa_outputxsl.cpp
+++ b/xfa/fxfa/parser/cxfa_outputxsl.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_outputxsl.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -30,6 +31,6 @@
                 XFA_Element::OutputXSL,
                 kOutputXSLPropertyData,
                 kOutputXSLAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_OutputXSL::~CXFA_OutputXSL() = default;
diff --git a/xfa/fxfa/parser/cxfa_overflow.cpp b/xfa/fxfa/parser/cxfa_overflow.cpp
index 9ae517b..de2610b 100644
--- a/xfa/fxfa/parser/cxfa_overflow.cpp
+++ b/xfa/fxfa/parser/cxfa_overflow.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_overflow.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -30,6 +31,6 @@
                 XFA_Element::Overflow,
                 {},
                 kOverflowAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Overflow::~CXFA_Overflow() = default;
diff --git a/xfa/fxfa/parser/cxfa_overprint.cpp b/xfa/fxfa/parser/cxfa_overprint.cpp
index ee70ce5..932b6dd 100644
--- a/xfa/fxfa/parser/cxfa_overprint.cpp
+++ b/xfa/fxfa/parser/cxfa_overprint.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_overprint.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Overprint,
                 {},
                 kOverprintAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Overprint::~CXFA_Overprint() = default;
diff --git a/xfa/fxfa/parser/cxfa_packet.cpp b/xfa/fxfa/parser/cxfa_packet.cpp
index 96938ac..9533849 100644
--- a/xfa/fxfa/parser/cxfa_packet.cpp
+++ b/xfa/fxfa/parser/cxfa_packet.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_packet.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_packet.h"
-#include "third_party/base/ptr_util.h"
 
 CXFA_Packet::CXFA_Packet(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
@@ -17,6 +18,6 @@
                 XFA_Element::Packet,
                 {},
                 {},
-                pdfium::MakeUnique<CJX_Packet>(this)) {}
+                std::make_unique<CJX_Packet>(this)) {}
 
 CXFA_Packet::~CXFA_Packet() = default;
diff --git a/xfa/fxfa/parser/cxfa_packets.cpp b/xfa/fxfa/parser/cxfa_packets.cpp
index 7981063..4962428 100644
--- a/xfa/fxfa/parser/cxfa_packets.cpp
+++ b/xfa/fxfa/parser/cxfa_packets.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_packets.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Packets,
                 {},
                 kPacketsAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Packets::~CXFA_Packets() = default;
diff --git a/xfa/fxfa/parser/cxfa_pagearea.cpp b/xfa/fxfa/parser/cxfa_pagearea.cpp
index cc48e89..fe29363 100644
--- a/xfa/fxfa/parser/cxfa_pagearea.cpp
+++ b/xfa/fxfa/parser/cxfa_pagearea.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_pagearea.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_container.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -44,6 +45,6 @@
                 XFA_Element::PageArea,
                 kPageAreaPropertyData,
                 kPageAreaAttributeData,
-                pdfium::MakeUnique<CJX_Container>(this)) {}
+                std::make_unique<CJX_Container>(this)) {}
 
 CXFA_PageArea::~CXFA_PageArea() = default;
diff --git a/xfa/fxfa/parser/cxfa_pageoffset.cpp b/xfa/fxfa/parser/cxfa_pageoffset.cpp
index 8054b4b..6d1c09d 100644
--- a/xfa/fxfa/parser/cxfa_pageoffset.cpp
+++ b/xfa/fxfa/parser/cxfa_pageoffset.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_pageoffset.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::PageOffset,
                 {},
                 kPageOffsetAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_PageOffset::~CXFA_PageOffset() = default;
diff --git a/xfa/fxfa/parser/cxfa_pagerange.cpp b/xfa/fxfa/parser/cxfa_pagerange.cpp
index 307b8dd..76a3f2f 100644
--- a/xfa/fxfa/parser/cxfa_pagerange.cpp
+++ b/xfa/fxfa/parser/cxfa_pagerange.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_pagerange.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::PageRange,
                 {},
                 kPageRangeAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_PageRange::~CXFA_PageRange() = default;
diff --git a/xfa/fxfa/parser/cxfa_pageset.cpp b/xfa/fxfa/parser/cxfa_pageset.cpp
index 1f08645..6b76044 100644
--- a/xfa/fxfa/parser/cxfa_pageset.cpp
+++ b/xfa/fxfa/parser/cxfa_pageset.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_pageset.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_container.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -38,6 +39,6 @@
                 XFA_Element::PageSet,
                 kPageSetPropertyData,
                 kPageSetAttributeData,
-                pdfium::MakeUnique<CJX_Container>(this)) {}
+                std::make_unique<CJX_Container>(this)) {}
 
 CXFA_PageSet::~CXFA_PageSet() = default;
diff --git a/xfa/fxfa/parser/cxfa_pagination.cpp b/xfa/fxfa/parser/cxfa_pagination.cpp
index 1c393a1..e326876 100644
--- a/xfa/fxfa/parser/cxfa_pagination.cpp
+++ b/xfa/fxfa/parser/cxfa_pagination.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_pagination.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Pagination,
                 {},
                 kPaginationAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Pagination::~CXFA_Pagination() = default;
diff --git a/xfa/fxfa/parser/cxfa_paginationoverride.cpp b/xfa/fxfa/parser/cxfa_paginationoverride.cpp
index 0dfe7f2..3540c84 100644
--- a/xfa/fxfa/parser/cxfa_paginationoverride.cpp
+++ b/xfa/fxfa/parser/cxfa_paginationoverride.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_paginationoverride.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::PaginationOverride,
                 {},
                 kPaginationOverrideAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_PaginationOverride::~CXFA_PaginationOverride() = default;
diff --git a/xfa/fxfa/parser/cxfa_para.cpp b/xfa/fxfa/parser/cxfa_para.cpp
index 6907baf..1d14eb2 100644
--- a/xfa/fxfa/parser/cxfa_para.cpp
+++ b/xfa/fxfa/parser/cxfa_para.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_para.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_measurement.h"
 
 namespace {
@@ -48,7 +49,7 @@
                 XFA_Element::Para,
                 kParaPropertyData,
                 kParaAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Para::~CXFA_Para() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_part.cpp b/xfa/fxfa/parser/cxfa_part.cpp
index d2acf53..b9ce87b 100644
--- a/xfa/fxfa/parser/cxfa_part.cpp
+++ b/xfa/fxfa/parser/cxfa_part.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_part.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Part,
                 {},
                 kPartAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Part::~CXFA_Part() = default;
diff --git a/xfa/fxfa/parser/cxfa_password.cpp b/xfa/fxfa/parser/cxfa_password.cpp
index 057b818..42beb5c 100644
--- a/xfa/fxfa/parser/cxfa_password.cpp
+++ b/xfa/fxfa/parser/cxfa_password.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_password.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_textnode.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::Password,
                 {},
                 kPasswordAttributeData,
-                pdfium::MakeUnique<CJX_TextNode>(this)) {}
+                std::make_unique<CJX_TextNode>(this)) {}
 
 CXFA_Password::~CXFA_Password() = default;
diff --git a/xfa/fxfa/parser/cxfa_passwordedit.cpp b/xfa/fxfa/parser/cxfa_passwordedit.cpp
index f8f3c5e..8f0e5de 100644
--- a/xfa/fxfa/parser/cxfa_passwordedit.cpp
+++ b/xfa/fxfa/parser/cxfa_passwordedit.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_passwordedit.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -36,7 +37,7 @@
                 XFA_Element::PasswordEdit,
                 kPasswordEditPropertyData,
                 kPasswordEditAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_PasswordEdit::~CXFA_PasswordEdit() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_pattern.cpp b/xfa/fxfa/parser/cxfa_pattern.cpp
index e6f38aa..fbb385a 100644
--- a/xfa/fxfa/parser/cxfa_pattern.cpp
+++ b/xfa/fxfa/parser/cxfa_pattern.cpp
@@ -6,9 +6,10 @@
 
 #include "xfa/fxfa/parser/cxfa_pattern.h"
 
+#include <memory>
+
 #include "core/fxge/render_defines.h"
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_color.h"
 #include "xfa/fxgraphics/cxfa_gepattern.h"
 
@@ -37,7 +38,7 @@
                 XFA_Element::Pattern,
                 kPatternPropertyData,
                 kPatternAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Pattern::~CXFA_Pattern() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_pcl.cpp b/xfa/fxfa/parser/cxfa_pcl.cpp
index e55c80d..d33108c 100644
--- a/xfa/fxfa/parser/cxfa_pcl.cpp
+++ b/xfa/fxfa/parser/cxfa_pcl.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_pcl.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -34,6 +35,6 @@
                 XFA_Element::Pcl,
                 kPclPropertyData,
                 kPclAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Pcl::~CXFA_Pcl() = default;
diff --git a/xfa/fxfa/parser/cxfa_pdf.cpp b/xfa/fxfa/parser/cxfa_pdf.cpp
index 499893c..4dd899e 100644
--- a/xfa/fxfa/parser/cxfa_pdf.cpp
+++ b/xfa/fxfa/parser/cxfa_pdf.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_pdf.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -49,6 +50,6 @@
                 XFA_Element::Pdf,
                 kPdfPropertyData,
                 kPdfAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Pdf::~CXFA_Pdf() = default;
diff --git a/xfa/fxfa/parser/cxfa_pdfa.cpp b/xfa/fxfa/parser/cxfa_pdfa.cpp
index 77d723f..bdb1000 100644
--- a/xfa/fxfa/parser/cxfa_pdfa.cpp
+++ b/xfa/fxfa/parser/cxfa_pdfa.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_pdfa.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -33,6 +34,6 @@
                 XFA_Element::Pdfa,
                 kPdfaPropertyData,
                 kPdfaAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Pdfa::~CXFA_Pdfa() = default;
diff --git a/xfa/fxfa/parser/cxfa_permissions.cpp b/xfa/fxfa/parser/cxfa_permissions.cpp
index 06e3a08..4bf6414 100644
--- a/xfa/fxfa/parser/cxfa_permissions.cpp
+++ b/xfa/fxfa/parser/cxfa_permissions.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_permissions.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -38,6 +39,6 @@
                 XFA_Element::Permissions,
                 kPermissionsPropertyData,
                 kPermissionsAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Permissions::~CXFA_Permissions() = default;
diff --git a/xfa/fxfa/parser/cxfa_picktraybypdfsize.cpp b/xfa/fxfa/parser/cxfa_picktraybypdfsize.cpp
index 3b2b7a3..7736cdd 100644
--- a/xfa/fxfa/parser/cxfa_picktraybypdfsize.cpp
+++ b/xfa/fxfa/parser/cxfa_picktraybypdfsize.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_picktraybypdfsize.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::PickTrayByPDFSize,
                 {},
                 kPickTrayByPDFSizeAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_PickTrayByPDFSize::~CXFA_PickTrayByPDFSize() = default;
diff --git a/xfa/fxfa/parser/cxfa_picture.cpp b/xfa/fxfa/parser/cxfa_picture.cpp
index a1005ec..84d65c2 100644
--- a/xfa/fxfa/parser/cxfa_picture.cpp
+++ b/xfa/fxfa/parser/cxfa_picture.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_picture.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -30,6 +31,6 @@
           XFA_Element::Picture,
           {},
           kPictureAttributeData,
-          pdfium::MakeUnique<CJX_Node>(this)) {}
+          std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Picture::~CXFA_Picture() = default;
diff --git a/xfa/fxfa/parser/cxfa_plaintextmetadata.cpp b/xfa/fxfa/parser/cxfa_plaintextmetadata.cpp
index 75abb78..08ea628 100644
--- a/xfa/fxfa/parser/cxfa_plaintextmetadata.cpp
+++ b/xfa/fxfa/parser/cxfa_plaintextmetadata.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_plaintextmetadata.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::PlaintextMetadata,
                 {},
                 kPlaintextMetadataAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_PlaintextMetadata::~CXFA_PlaintextMetadata() = default;
diff --git a/xfa/fxfa/parser/cxfa_presence.cpp b/xfa/fxfa/parser/cxfa_presence.cpp
index 99353a6..e36107a 100644
--- a/xfa/fxfa/parser/cxfa_presence.cpp
+++ b/xfa/fxfa/parser/cxfa_presence.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_presence.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Presence,
                 {},
                 kPresenceAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Presence::~CXFA_Presence() = default;
diff --git a/xfa/fxfa/parser/cxfa_present.cpp b/xfa/fxfa/parser/cxfa_present.cpp
index e645f55..2759804 100644
--- a/xfa/fxfa/parser/cxfa_present.cpp
+++ b/xfa/fxfa/parser/cxfa_present.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_present.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -43,6 +44,6 @@
                 XFA_Element::Present,
                 kPresentPropertyData,
                 kPresentAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Present::~CXFA_Present() = default;
diff --git a/xfa/fxfa/parser/cxfa_print.cpp b/xfa/fxfa/parser/cxfa_print.cpp
index 227af1e..ccce2cb 100644
--- a/xfa/fxfa/parser/cxfa_print.cpp
+++ b/xfa/fxfa/parser/cxfa_print.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_print.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Print,
                 {},
                 kPrintAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Print::~CXFA_Print() = default;
diff --git a/xfa/fxfa/parser/cxfa_printername.cpp b/xfa/fxfa/parser/cxfa_printername.cpp
index b434d26..65043b9 100644
--- a/xfa/fxfa/parser/cxfa_printername.cpp
+++ b/xfa/fxfa/parser/cxfa_printername.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_printername.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::PrinterName,
                 {},
                 kPrinterNameAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_PrinterName::~CXFA_PrinterName() = default;
diff --git a/xfa/fxfa/parser/cxfa_printhighquality.cpp b/xfa/fxfa/parser/cxfa_printhighquality.cpp
index 38d16f5..53830fc 100644
--- a/xfa/fxfa/parser/cxfa_printhighquality.cpp
+++ b/xfa/fxfa/parser/cxfa_printhighquality.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_printhighquality.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::PrintHighQuality,
                 {},
                 kPrintHighQualityAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_PrintHighQuality::~CXFA_PrintHighQuality() = default;
diff --git a/xfa/fxfa/parser/cxfa_printscaling.cpp b/xfa/fxfa/parser/cxfa_printscaling.cpp
index a6641a3..350b0cd 100644
--- a/xfa/fxfa/parser/cxfa_printscaling.cpp
+++ b/xfa/fxfa/parser/cxfa_printscaling.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_printscaling.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::PrintScaling,
                 {},
                 kPrintScalingAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_PrintScaling::~CXFA_PrintScaling() = default;
diff --git a/xfa/fxfa/parser/cxfa_producer.cpp b/xfa/fxfa/parser/cxfa_producer.cpp
index 07ed6e5..fd63ff6 100644
--- a/xfa/fxfa/parser/cxfa_producer.cpp
+++ b/xfa/fxfa/parser/cxfa_producer.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_producer.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Producer,
                 {},
                 kProducerAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Producer::~CXFA_Producer() = default;
diff --git a/xfa/fxfa/parser/cxfa_proto.cpp b/xfa/fxfa/parser/cxfa_proto.cpp
index c59ae13..b4b6fe1 100644
--- a/xfa/fxfa/parser/cxfa_proto.cpp
+++ b/xfa/fxfa/parser/cxfa_proto.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_proto.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 CXFA_Proto::CXFA_Proto(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
@@ -17,6 +18,6 @@
                 XFA_Element::Proto,
                 {},
                 {},
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Proto::~CXFA_Proto() = default;
diff --git a/xfa/fxfa/parser/cxfa_ps.cpp b/xfa/fxfa/parser/cxfa_ps.cpp
index 35e5da3..094c8ca 100644
--- a/xfa/fxfa/parser/cxfa_ps.cpp
+++ b/xfa/fxfa/parser/cxfa_ps.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_ps.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -34,6 +35,6 @@
                 XFA_Element::Ps,
                 kPsPropertyData,
                 kPsAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Ps::~CXFA_Ps() = default;
diff --git a/xfa/fxfa/parser/cxfa_psmap.cpp b/xfa/fxfa/parser/cxfa_psmap.cpp
index 12ca00b..7b93c73 100644
--- a/xfa/fxfa/parser/cxfa_psmap.cpp
+++ b/xfa/fxfa/parser/cxfa_psmap.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_psmap.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 CXFA_PsMap::CXFA_PsMap(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
@@ -17,6 +18,6 @@
                 XFA_Element::PsMap,
                 {},
                 {},
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_PsMap::~CXFA_PsMap() = default;
diff --git a/xfa/fxfa/parser/cxfa_query.cpp b/xfa/fxfa/parser/cxfa_query.cpp
index 7f2db0b..6af0db6 100644
--- a/xfa/fxfa/parser/cxfa_query.cpp
+++ b/xfa/fxfa/parser/cxfa_query.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_query.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -35,6 +36,6 @@
                 XFA_Element::Query,
                 kQueryPropertyData,
                 kQueryAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Query::~CXFA_Query() = default;
diff --git a/xfa/fxfa/parser/cxfa_radial.cpp b/xfa/fxfa/parser/cxfa_radial.cpp
index 4eb944f..7f294cd 100644
--- a/xfa/fxfa/parser/cxfa_radial.cpp
+++ b/xfa/fxfa/parser/cxfa_radial.cpp
@@ -6,11 +6,11 @@
 
 #include "xfa/fxfa/parser/cxfa_radial.h"
 
+#include <memory>
 #include <utility>
 
 #include "core/fxge/render_defines.h"
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_color.h"
 #include "xfa/fxgraphics/cxfa_geshading.h"
 
@@ -39,7 +39,7 @@
                 XFA_Element::Radial,
                 kRadialPropertyData,
                 kRadialAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Radial::~CXFA_Radial() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_range.cpp b/xfa/fxfa/parser/cxfa_range.cpp
index 9f62b1d..ad65315 100644
--- a/xfa/fxfa/parser/cxfa_range.cpp
+++ b/xfa/fxfa/parser/cxfa_range.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_range.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Range,
                 {},
                 kRangeAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Range::~CXFA_Range() = default;
diff --git a/xfa/fxfa/parser/cxfa_reason.cpp b/xfa/fxfa/parser/cxfa_reason.cpp
index 8af61ba..2f9ae24 100644
--- a/xfa/fxfa/parser/cxfa_reason.cpp
+++ b/xfa/fxfa/parser/cxfa_reason.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_reason.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_textnode.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::Reason,
                 {},
                 kReasonAttributeData,
-                pdfium::MakeUnique<CJX_TextNode>(this)) {}
+                std::make_unique<CJX_TextNode>(this)) {}
 
 CXFA_Reason::~CXFA_Reason() = default;
diff --git a/xfa/fxfa/parser/cxfa_reasons.cpp b/xfa/fxfa/parser/cxfa_reasons.cpp
index 704f411..9a10d04 100644
--- a/xfa/fxfa/parser/cxfa_reasons.cpp
+++ b/xfa/fxfa/parser/cxfa_reasons.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_reasons.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::Reasons,
                 {},
                 kReasonsAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Reasons::~CXFA_Reasons() = default;
diff --git a/xfa/fxfa/parser/cxfa_record.cpp b/xfa/fxfa/parser/cxfa_record.cpp
index 5c10f05..2d5d2b2 100644
--- a/xfa/fxfa/parser/cxfa_record.cpp
+++ b/xfa/fxfa/parser/cxfa_record.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_record.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Record,
                 {},
                 kRecordAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Record::~CXFA_Record() = default;
diff --git a/xfa/fxfa/parser/cxfa_recordset.cpp b/xfa/fxfa/parser/cxfa_recordset.cpp
index ad77695..5857ad8 100644
--- a/xfa/fxfa/parser/cxfa_recordset.cpp
+++ b/xfa/fxfa/parser/cxfa_recordset.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_recordset.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -39,6 +40,6 @@
                 XFA_Element::RecordSet,
                 {},
                 kRecordSetAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_RecordSet::~CXFA_RecordSet() = default;
diff --git a/xfa/fxfa/parser/cxfa_rectangle.cpp b/xfa/fxfa/parser/cxfa_rectangle.cpp
index f000022..c325a6a 100644
--- a/xfa/fxfa/parser/cxfa_rectangle.cpp
+++ b/xfa/fxfa/parser/cxfa_rectangle.cpp
@@ -11,7 +11,6 @@
 
 #include "core/fxge/render_defines.h"
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_corner.h"
 #include "xfa/fxfa/parser/cxfa_stroke.h"
 
@@ -41,7 +40,7 @@
                XFA_Element::Rectangle,
                kRectanglePropertyData,
                kRectangleAttributeData,
-               pdfium::MakeUnique<CJX_Node>(this)) {}
+               std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Rectangle::CXFA_Rectangle(CXFA_Document* pDoc,
                                XFA_PacketType ePacket,
diff --git a/xfa/fxfa/parser/cxfa_ref.cpp b/xfa/fxfa/parser/cxfa_ref.cpp
index fc4f59a..e651430 100644
--- a/xfa/fxfa/parser/cxfa_ref.cpp
+++ b/xfa/fxfa/parser/cxfa_ref.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_ref.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_textnode.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::Ref,
                 {},
                 kRefAttributeData,
-                pdfium::MakeUnique<CJX_TextNode>(this)) {}
+                std::make_unique<CJX_TextNode>(this)) {}
 
 CXFA_Ref::~CXFA_Ref() = default;
diff --git a/xfa/fxfa/parser/cxfa_relevant.cpp b/xfa/fxfa/parser/cxfa_relevant.cpp
index f6b8a52..37dcafc 100644
--- a/xfa/fxfa/parser/cxfa_relevant.cpp
+++ b/xfa/fxfa/parser/cxfa_relevant.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_relevant.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Relevant,
                 {},
                 kRelevantAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Relevant::~CXFA_Relevant() = default;
diff --git a/xfa/fxfa/parser/cxfa_rename.cpp b/xfa/fxfa/parser/cxfa_rename.cpp
index f444554..d1c9489 100644
--- a/xfa/fxfa/parser/cxfa_rename.cpp
+++ b/xfa/fxfa/parser/cxfa_rename.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_rename.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Rename,
                 {},
                 kRenameAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Rename::~CXFA_Rename() = default;
diff --git a/xfa/fxfa/parser/cxfa_renderpolicy.cpp b/xfa/fxfa/parser/cxfa_renderpolicy.cpp
index 6497eec..f67c6be 100644
--- a/xfa/fxfa/parser/cxfa_renderpolicy.cpp
+++ b/xfa/fxfa/parser/cxfa_renderpolicy.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_renderpolicy.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::RenderPolicy,
                 {},
                 kRenderPolicyAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_RenderPolicy::~CXFA_RenderPolicy() = default;
diff --git a/xfa/fxfa/parser/cxfa_rootelement.cpp b/xfa/fxfa/parser/cxfa_rootelement.cpp
index 46d5aea..a41a7e7 100644
--- a/xfa/fxfa/parser/cxfa_rootelement.cpp
+++ b/xfa/fxfa/parser/cxfa_rootelement.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_rootelement.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_textnode.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::RootElement,
                 {},
                 kRootElementAttributeData,
-                pdfium::MakeUnique<CJX_TextNode>(this)) {}
+                std::make_unique<CJX_TextNode>(this)) {}
 
 CXFA_RootElement::~CXFA_RootElement() = default;
diff --git a/xfa/fxfa/parser/cxfa_runscripts.cpp b/xfa/fxfa/parser/cxfa_runscripts.cpp
index dbc6acc..72e7a86 100644
--- a/xfa/fxfa/parser/cxfa_runscripts.cpp
+++ b/xfa/fxfa/parser/cxfa_runscripts.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_runscripts.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::RunScripts,
                 {},
                 kRunScriptsAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_RunScripts::~CXFA_RunScripts() = default;
diff --git a/xfa/fxfa/parser/cxfa_script.cpp b/xfa/fxfa/parser/cxfa_script.cpp
index 884f97d..25073a7 100644
--- a/xfa/fxfa/parser/cxfa_script.cpp
+++ b/xfa/fxfa/parser/cxfa_script.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_script.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_script.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -41,7 +42,7 @@
           XFA_Element::Script,
           kScriptPropertyData,
           kScriptAttributeData,
-          pdfium::MakeUnique<CJX_Script>(this)) {}
+          std::make_unique<CJX_Script>(this)) {}
 
 CXFA_Script::~CXFA_Script() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_scriptmodel.cpp b/xfa/fxfa/parser/cxfa_scriptmodel.cpp
index 8de4901..7c9d7b4 100644
--- a/xfa/fxfa/parser/cxfa_scriptmodel.cpp
+++ b/xfa/fxfa/parser/cxfa_scriptmodel.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_scriptmodel.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::ScriptModel,
                 {},
                 kScriptModelAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_ScriptModel::~CXFA_ScriptModel() = default;
diff --git a/xfa/fxfa/parser/cxfa_select.cpp b/xfa/fxfa/parser/cxfa_select.cpp
index 04e51dc..dd81c80 100644
--- a/xfa/fxfa/parser/cxfa_select.cpp
+++ b/xfa/fxfa/parser/cxfa_select.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_select.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_textnode.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::Select,
                 {},
                 kSelectAttributeData,
-                pdfium::MakeUnique<CJX_TextNode>(this)) {}
+                std::make_unique<CJX_TextNode>(this)) {}
 
 CXFA_Select::~CXFA_Select() = default;
diff --git a/xfa/fxfa/parser/cxfa_setproperty.cpp b/xfa/fxfa/parser/cxfa_setproperty.cpp
index a748d58..7050905 100644
--- a/xfa/fxfa/parser/cxfa_setproperty.cpp
+++ b/xfa/fxfa/parser/cxfa_setproperty.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_setproperty.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::SetProperty,
                 {},
                 kSetPropertyAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_SetProperty::~CXFA_SetProperty() = default;
diff --git a/xfa/fxfa/parser/cxfa_severity.cpp b/xfa/fxfa/parser/cxfa_severity.cpp
index 78a0872..cf5dfba 100644
--- a/xfa/fxfa/parser/cxfa_severity.cpp
+++ b/xfa/fxfa/parser/cxfa_severity.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_severity.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Severity,
                 {},
                 kSeverityAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Severity::~CXFA_Severity() = default;
diff --git a/xfa/fxfa/parser/cxfa_sharptext.cpp b/xfa/fxfa/parser/cxfa_sharptext.cpp
index 515e881..62a9a0d 100644
--- a/xfa/fxfa/parser/cxfa_sharptext.cpp
+++ b/xfa/fxfa/parser/cxfa_sharptext.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_sharptext.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::Sharptext,
                 {},
                 kSharptextAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Sharptext::~CXFA_Sharptext() = default;
diff --git a/xfa/fxfa/parser/cxfa_sharpxhtml.cpp b/xfa/fxfa/parser/cxfa_sharpxhtml.cpp
index 6758b48..2ed9d9d 100644
--- a/xfa/fxfa/parser/cxfa_sharpxhtml.cpp
+++ b/xfa/fxfa/parser/cxfa_sharpxhtml.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_sharpxhtml.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::SharpxHTML,
                 {},
                 kSharpxHTMLAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_SharpxHTML::~CXFA_SharpxHTML() = default;
diff --git a/xfa/fxfa/parser/cxfa_sharpxml.cpp b/xfa/fxfa/parser/cxfa_sharpxml.cpp
index 0e066b1..ad647f7 100644
--- a/xfa/fxfa/parser/cxfa_sharpxml.cpp
+++ b/xfa/fxfa/parser/cxfa_sharpxml.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_sharpxml.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -25,6 +26,6 @@
                 XFA_Element::Sharpxml,
                 {},
                 kSharpxmlAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Sharpxml::~CXFA_Sharpxml() = default;
diff --git a/xfa/fxfa/parser/cxfa_signature.cpp b/xfa/fxfa/parser/cxfa_signature.cpp
index d059808..09fa3c6 100644
--- a/xfa/fxfa/parser/cxfa_signature.cpp
+++ b/xfa/fxfa/parser/cxfa_signature.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_signature.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -35,7 +36,7 @@
                 XFA_Element::Signature,
                 kSignaturePropertyData,
                 kSignatureAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Signature::~CXFA_Signature() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_signatureproperties.cpp b/xfa/fxfa/parser/cxfa_signatureproperties.cpp
index 63b2635..599fd8c 100644
--- a/xfa/fxfa/parser/cxfa_signatureproperties.cpp
+++ b/xfa/fxfa/parser/cxfa_signatureproperties.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_signatureproperties.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::SignatureProperties,
                 {},
                 kSignaturePropertiesAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_SignatureProperties::~CXFA_SignatureProperties() = default;
diff --git a/xfa/fxfa/parser/cxfa_signdata.cpp b/xfa/fxfa/parser/cxfa_signdata.cpp
index 3710325..6ab81d1 100644
--- a/xfa/fxfa/parser/cxfa_signdata.cpp
+++ b/xfa/fxfa/parser/cxfa_signdata.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_signdata.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -36,6 +37,6 @@
                 XFA_Element::SignData,
                 kSignDataPropertyData,
                 kSignDataAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_SignData::~CXFA_SignData() = default;
diff --git a/xfa/fxfa/parser/cxfa_signing.cpp b/xfa/fxfa/parser/cxfa_signing.cpp
index 939d4f5..24f4497 100644
--- a/xfa/fxfa/parser/cxfa_signing.cpp
+++ b/xfa/fxfa/parser/cxfa_signing.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_signing.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::Signing,
                 {},
                 kSigningAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Signing::~CXFA_Signing() = default;
diff --git a/xfa/fxfa/parser/cxfa_silentprint.cpp b/xfa/fxfa/parser/cxfa_silentprint.cpp
index 1a417aa..4bfcfb5 100644
--- a/xfa/fxfa/parser/cxfa_silentprint.cpp
+++ b/xfa/fxfa/parser/cxfa_silentprint.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_silentprint.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -31,6 +32,6 @@
                 XFA_Element::SilentPrint,
                 kSilentPrintPropertyData,
                 kSilentPrintAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_SilentPrint::~CXFA_SilentPrint() = default;
diff --git a/xfa/fxfa/parser/cxfa_soapaction.cpp b/xfa/fxfa/parser/cxfa_soapaction.cpp
index 514c667..25d1a39 100644
--- a/xfa/fxfa/parser/cxfa_soapaction.cpp
+++ b/xfa/fxfa/parser/cxfa_soapaction.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_soapaction.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_textnode.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::SoapAction,
                 {},
                 kSoapActionAttributeData,
-                pdfium::MakeUnique<CJX_TextNode>(this)) {}
+                std::make_unique<CJX_TextNode>(this)) {}
 
 CXFA_SoapAction::~CXFA_SoapAction() = default;
diff --git a/xfa/fxfa/parser/cxfa_soapaddress.cpp b/xfa/fxfa/parser/cxfa_soapaddress.cpp
index 08fd142..0730b0a 100644
--- a/xfa/fxfa/parser/cxfa_soapaddress.cpp
+++ b/xfa/fxfa/parser/cxfa_soapaddress.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_soapaddress.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_textnode.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::SoapAddress,
                 {},
                 kSoapAddressAttributeData,
-                pdfium::MakeUnique<CJX_TextNode>(this)) {}
+                std::make_unique<CJX_TextNode>(this)) {}
 
 CXFA_SoapAddress::~CXFA_SoapAddress() = default;
diff --git a/xfa/fxfa/parser/cxfa_solid.cpp b/xfa/fxfa/parser/cxfa_solid.cpp
index 3ab0e1d..0291e0d 100644
--- a/xfa/fxfa/parser/cxfa_solid.cpp
+++ b/xfa/fxfa/parser/cxfa_solid.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_solid.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -31,6 +32,6 @@
                 XFA_Element::Solid,
                 kSolidPropertyData,
                 kSolidAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Solid::~CXFA_Solid() = default;
diff --git a/xfa/fxfa/parser/cxfa_source.cpp b/xfa/fxfa/parser/cxfa_source.cpp
index eb7773c..039bdbc 100644
--- a/xfa/fxfa/parser/cxfa_source.cpp
+++ b/xfa/fxfa/parser/cxfa_source.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_source.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_source.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -32,6 +33,6 @@
                 XFA_Element::Source,
                 kSourcePropertyData,
                 kSourceAttributeData,
-                pdfium::MakeUnique<CJX_Source>(this)) {}
+                std::make_unique<CJX_Source>(this)) {}
 
 CXFA_Source::~CXFA_Source() = default;
diff --git a/xfa/fxfa/parser/cxfa_sourceset.cpp b/xfa/fxfa/parser/cxfa_sourceset.cpp
index ba66cdf..f6d2518 100644
--- a/xfa/fxfa/parser/cxfa_sourceset.cpp
+++ b/xfa/fxfa/parser/cxfa_sourceset.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_sourceset.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_model.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::SourceSet,
                 {},
                 kSourceSetAttributeData,
-                pdfium::MakeUnique<CJX_Model>(this)) {}
+                std::make_unique<CJX_Model>(this)) {}
 
 CXFA_SourceSet::~CXFA_SourceSet() = default;
diff --git a/xfa/fxfa/parser/cxfa_speak.cpp b/xfa/fxfa/parser/cxfa_speak.cpp
index 605b929..82f3e1c 100644
--- a/xfa/fxfa/parser/cxfa_speak.cpp
+++ b/xfa/fxfa/parser/cxfa_speak.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_speak.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_textnode.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -31,6 +32,6 @@
                 XFA_Element::Speak,
                 {},
                 kSpeakAttributeData,
-                pdfium::MakeUnique<CJX_TextNode>(this)) {}
+                std::make_unique<CJX_TextNode>(this)) {}
 
 CXFA_Speak::~CXFA_Speak() = default;
diff --git a/xfa/fxfa/parser/cxfa_staple.cpp b/xfa/fxfa/parser/cxfa_staple.cpp
index 436518c..9d3dfec 100644
--- a/xfa/fxfa/parser/cxfa_staple.cpp
+++ b/xfa/fxfa/parser/cxfa_staple.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_staple.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::Staple,
                 {},
                 kStapleAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Staple::~CXFA_Staple() = default;
diff --git a/xfa/fxfa/parser/cxfa_startnode.cpp b/xfa/fxfa/parser/cxfa_startnode.cpp
index f415b29..18880de 100644
--- a/xfa/fxfa/parser/cxfa_startnode.cpp
+++ b/xfa/fxfa/parser/cxfa_startnode.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_startnode.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::StartNode,
                 {},
                 kStartNodeAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_StartNode::~CXFA_StartNode() = default;
diff --git a/xfa/fxfa/parser/cxfa_startpage.cpp b/xfa/fxfa/parser/cxfa_startpage.cpp
index b8e31cd..af9dcfc 100644
--- a/xfa/fxfa/parser/cxfa_startpage.cpp
+++ b/xfa/fxfa/parser/cxfa_startpage.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_startpage.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::StartPage,
                 {},
                 kStartPageAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_StartPage::~CXFA_StartPage() = default;
diff --git a/xfa/fxfa/parser/cxfa_stipple.cpp b/xfa/fxfa/parser/cxfa_stipple.cpp
index 024d111..063b2cf 100644
--- a/xfa/fxfa/parser/cxfa_stipple.cpp
+++ b/xfa/fxfa/parser/cxfa_stipple.cpp
@@ -6,9 +6,10 @@
 
 #include "xfa/fxfa/parser/cxfa_stipple.h"
 
+#include <memory>
+
 #include "core/fxge/render_defines.h"
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_color.h"
 
 namespace {
@@ -35,7 +36,7 @@
                 XFA_Element::Stipple,
                 kStipplePropertyData,
                 kStippleAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Stipple::~CXFA_Stipple() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_subform.cpp b/xfa/fxfa/parser/cxfa_subform.cpp
index 37d99ec..aa0726b 100644
--- a/xfa/fxfa/parser/cxfa_subform.cpp
+++ b/xfa/fxfa/parser/cxfa_subform.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_subform.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_subform.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -71,6 +72,6 @@
                 XFA_Element::Subform,
                 kSubformPropertyData,
                 kSubformAttributeData,
-                pdfium::MakeUnique<CJX_Subform>(this)) {}
+                std::make_unique<CJX_Subform>(this)) {}
 
 CXFA_Subform::~CXFA_Subform() = default;
diff --git a/xfa/fxfa/parser/cxfa_subformset.cpp b/xfa/fxfa/parser/cxfa_subformset.cpp
index d1f6ba5..97fe189 100644
--- a/xfa/fxfa/parser/cxfa_subformset.cpp
+++ b/xfa/fxfa/parser/cxfa_subformset.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_subformset.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_container.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -37,6 +38,6 @@
                 XFA_Element::SubformSet,
                 kSubformSetPropertyData,
                 kSubformSetAttributeData,
-                pdfium::MakeUnique<CJX_Container>(this)) {}
+                std::make_unique<CJX_Container>(this)) {}
 
 CXFA_SubformSet::~CXFA_SubformSet() = default;
diff --git a/xfa/fxfa/parser/cxfa_subjectdn.cpp b/xfa/fxfa/parser/cxfa_subjectdn.cpp
index 1130739..58178e7 100644
--- a/xfa/fxfa/parser/cxfa_subjectdn.cpp
+++ b/xfa/fxfa/parser/cxfa_subjectdn.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_subjectdn.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::SubjectDN,
                 {},
                 kSubjectDNAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_SubjectDN::~CXFA_SubjectDN() = default;
diff --git a/xfa/fxfa/parser/cxfa_subjectdns.cpp b/xfa/fxfa/parser/cxfa_subjectdns.cpp
index 524bc96..299265a 100644
--- a/xfa/fxfa/parser/cxfa_subjectdns.cpp
+++ b/xfa/fxfa/parser/cxfa_subjectdns.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_subjectdns.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -29,6 +30,6 @@
                 XFA_Element::SubjectDNs,
                 {},
                 kSubjectDNsAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_SubjectDNs::~CXFA_SubjectDNs() = default;
diff --git a/xfa/fxfa/parser/cxfa_submit.cpp b/xfa/fxfa/parser/cxfa_submit.cpp
index 82eed83..af5ecfa 100644
--- a/xfa/fxfa/parser/cxfa_submit.cpp
+++ b/xfa/fxfa/parser/cxfa_submit.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_submit.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -37,7 +38,7 @@
                 XFA_Element::Submit,
                 kSubmitPropertyData,
                 kSubmitAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Submit::~CXFA_Submit() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_submitformat.cpp b/xfa/fxfa/parser/cxfa_submitformat.cpp
index 551b92b..62e044f 100644
--- a/xfa/fxfa/parser/cxfa_submitformat.cpp
+++ b/xfa/fxfa/parser/cxfa_submitformat.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_submitformat.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::SubmitFormat,
                 {},
                 kSubmitFormatAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_SubmitFormat::~CXFA_SubmitFormat() = default;
diff --git a/xfa/fxfa/parser/cxfa_submiturl.cpp b/xfa/fxfa/parser/cxfa_submiturl.cpp
index 3212acb..aa936b4 100644
--- a/xfa/fxfa/parser/cxfa_submiturl.cpp
+++ b/xfa/fxfa/parser/cxfa_submiturl.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_submiturl.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::SubmitUrl,
                 {},
                 kSubmitUrlAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_SubmitUrl::~CXFA_SubmitUrl() = default;
diff --git a/xfa/fxfa/parser/cxfa_subsetbelow.cpp b/xfa/fxfa/parser/cxfa_subsetbelow.cpp
index ed179c9..1be6357 100644
--- a/xfa/fxfa/parser/cxfa_subsetbelow.cpp
+++ b/xfa/fxfa/parser/cxfa_subsetbelow.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_subsetbelow.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::SubsetBelow,
                 {},
                 kSubsetBelowAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_SubsetBelow::~CXFA_SubsetBelow() = default;
diff --git a/xfa/fxfa/parser/cxfa_suppressbanner.cpp b/xfa/fxfa/parser/cxfa_suppressbanner.cpp
index 3371170..72c138d 100644
--- a/xfa/fxfa/parser/cxfa_suppressbanner.cpp
+++ b/xfa/fxfa/parser/cxfa_suppressbanner.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_suppressbanner.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::SuppressBanner,
                 {},
                 kSuppressBannerAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_SuppressBanner::~CXFA_SuppressBanner() = default;
diff --git a/xfa/fxfa/parser/cxfa_tagged.cpp b/xfa/fxfa/parser/cxfa_tagged.cpp
index 940b12c..d7899bd 100644
--- a/xfa/fxfa/parser/cxfa_tagged.cpp
+++ b/xfa/fxfa/parser/cxfa_tagged.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_tagged.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Tagged,
                 {},
                 kTaggedAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Tagged::~CXFA_Tagged() = default;
diff --git a/xfa/fxfa/parser/cxfa_template.cpp b/xfa/fxfa/parser/cxfa_template.cpp
index bc5c444..0c86125 100644
--- a/xfa/fxfa/parser/cxfa_template.cpp
+++ b/xfa/fxfa/parser/cxfa_template.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_template.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_template.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -35,6 +36,6 @@
           XFA_Element::Template,
           kTemplatePropertyData,
           kTemplateAttributeData,
-          pdfium::MakeUnique<CJX_Template>(this)) {}
+          std::make_unique<CJX_Template>(this)) {}
 
 CXFA_Template::~CXFA_Template() = default;
diff --git a/xfa/fxfa/parser/cxfa_templatecache.cpp b/xfa/fxfa/parser/cxfa_templatecache.cpp
index bfc19b3..38b7b09 100644
--- a/xfa/fxfa/parser/cxfa_templatecache.cpp
+++ b/xfa/fxfa/parser/cxfa_templatecache.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_templatecache.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::TemplateCache,
                 {},
                 kTemplateCacheAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_TemplateCache::~CXFA_TemplateCache() = default;
diff --git a/xfa/fxfa/parser/cxfa_text.cpp b/xfa/fxfa/parser/cxfa_text.cpp
index bb921a0..6d35db6 100644
--- a/xfa/fxfa/parser/cxfa_text.cpp
+++ b/xfa/fxfa/parser/cxfa_text.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_text.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_object.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -31,7 +32,7 @@
                 XFA_Element::Text,
                 {},
                 kTextAttributeData,
-                pdfium::MakeUnique<CJX_Object>(this)) {}
+                std::make_unique<CJX_Object>(this)) {}
 
 CXFA_Text::~CXFA_Text() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_textedit.cpp b/xfa/fxfa/parser/cxfa_textedit.cpp
index 7ff47c7..306cefa 100644
--- a/xfa/fxfa/parser/cxfa_textedit.cpp
+++ b/xfa/fxfa/parser/cxfa_textedit.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_textedit.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -40,7 +41,7 @@
                 XFA_Element::TextEdit,
                 kTextEditPropertyData,
                 kTextEditAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_TextEdit::~CXFA_TextEdit() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_thisproxy.cpp b/xfa/fxfa/parser/cxfa_thisproxy.cpp
index 3654409..5f538d5 100644
--- a/xfa/fxfa/parser/cxfa_thisproxy.cpp
+++ b/xfa/fxfa/parser/cxfa_thisproxy.cpp
@@ -6,15 +6,16 @@
 
 #include "xfa/fxfa/parser/cxfa_thisproxy.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_object.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_node.h"
 
 CXFA_ThisProxy::CXFA_ThisProxy(CXFA_Node* pThisNode, CXFA_Node* pScriptNode)
     : CXFA_Object(pThisNode->GetDocument(),
                   XFA_ObjectType::ThisProxy,
                   XFA_Element::Object,
-                  pdfium::MakeUnique<CJX_Object>(this)),
+                  std::make_unique<CJX_Object>(this)),
       m_pThisNode(pThisNode),
       m_pScriptNode(pScriptNode) {}
 
diff --git a/xfa/fxfa/parser/cxfa_threshold.cpp b/xfa/fxfa/parser/cxfa_threshold.cpp
index 3d1863a..e817be3 100644
--- a/xfa/fxfa/parser/cxfa_threshold.cpp
+++ b/xfa/fxfa/parser/cxfa_threshold.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_threshold.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Threshold,
                 {},
                 kThresholdAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Threshold::~CXFA_Threshold() = default;
diff --git a/xfa/fxfa/parser/cxfa_time.cpp b/xfa/fxfa/parser/cxfa_time.cpp
index ea33713..9e258e2 100644
--- a/xfa/fxfa/parser/cxfa_time.cpp
+++ b/xfa/fxfa/parser/cxfa_time.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_time.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_object.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::Time,
                 {},
                 kTimeAttributeData,
-                pdfium::MakeUnique<CJX_Object>(this)) {}
+                std::make_unique<CJX_Object>(this)) {}
 
 CXFA_Time::~CXFA_Time() = default;
diff --git a/xfa/fxfa/parser/cxfa_timepattern.cpp b/xfa/fxfa/parser/cxfa_timepattern.cpp
index 9264da2..0a3efe1 100644
--- a/xfa/fxfa/parser/cxfa_timepattern.cpp
+++ b/xfa/fxfa/parser/cxfa_timepattern.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_timepattern.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::TimePattern,
                 {},
                 kTimePatternAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_TimePattern::~CXFA_TimePattern() = default;
diff --git a/xfa/fxfa/parser/cxfa_timepatterns.cpp b/xfa/fxfa/parser/cxfa_timepatterns.cpp
index 1c92303..6c93395 100644
--- a/xfa/fxfa/parser/cxfa_timepatterns.cpp
+++ b/xfa/fxfa/parser/cxfa_timepatterns.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_timepatterns.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -25,6 +26,6 @@
                 XFA_Element::TimePatterns,
                 kTimePatternsPropertyData,
                 {},
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_TimePatterns::~CXFA_TimePatterns() = default;
diff --git a/xfa/fxfa/parser/cxfa_timestamp.cpp b/xfa/fxfa/parser/cxfa_timestamp.cpp
index 68f1c50..e7e263d 100644
--- a/xfa/fxfa/parser/cxfa_timestamp.cpp
+++ b/xfa/fxfa/parser/cxfa_timestamp.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_timestamp.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -30,6 +31,6 @@
                 XFA_Element::TimeStamp,
                 {},
                 kTimeStampAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_TimeStamp::~CXFA_TimeStamp() = default;
diff --git a/xfa/fxfa/parser/cxfa_to.cpp b/xfa/fxfa/parser/cxfa_to.cpp
index cb400c0..e1e6468 100644
--- a/xfa/fxfa/parser/cxfa_to.cpp
+++ b/xfa/fxfa/parser/cxfa_to.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_to.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::To,
                 {},
                 kToAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_To::~CXFA_To() = default;
diff --git a/xfa/fxfa/parser/cxfa_tooltip.cpp b/xfa/fxfa/parser/cxfa_tooltip.cpp
index 2fecedd..f2ca5ef 100644
--- a/xfa/fxfa/parser/cxfa_tooltip.cpp
+++ b/xfa/fxfa/parser/cxfa_tooltip.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_tooltip.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_textnode.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::ToolTip,
                 {},
                 kToolTipAttributeData,
-                pdfium::MakeUnique<CJX_TextNode>(this)) {}
+                std::make_unique<CJX_TextNode>(this)) {}
 
 CXFA_ToolTip::~CXFA_ToolTip() = default;
diff --git a/xfa/fxfa/parser/cxfa_trace.cpp b/xfa/fxfa/parser/cxfa_trace.cpp
index 741805d..2221dee 100644
--- a/xfa/fxfa/parser/cxfa_trace.cpp
+++ b/xfa/fxfa/parser/cxfa_trace.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_trace.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Trace,
                 {},
                 kTraceAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Trace::~CXFA_Trace() = default;
diff --git a/xfa/fxfa/parser/cxfa_transform.cpp b/xfa/fxfa/parser/cxfa_transform.cpp
index e00ddc3..db77e58 100644
--- a/xfa/fxfa/parser/cxfa_transform.cpp
+++ b/xfa/fxfa/parser/cxfa_transform.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_transform.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -34,6 +35,6 @@
                 XFA_Element::Transform,
                 kTransformPropertyData,
                 kTransformAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Transform::~CXFA_Transform() = default;
diff --git a/xfa/fxfa/parser/cxfa_traversal.cpp b/xfa/fxfa/parser/cxfa_traversal.cpp
index ad367e9..ea5dba1 100644
--- a/xfa/fxfa/parser/cxfa_traversal.cpp
+++ b/xfa/fxfa/parser/cxfa_traversal.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_traversal.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -31,6 +32,6 @@
                 XFA_Element::Traversal,
                 kTraversalPropertyData,
                 kTraversalAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Traversal::~CXFA_Traversal() = default;
diff --git a/xfa/fxfa/parser/cxfa_traverse.cpp b/xfa/fxfa/parser/cxfa_traverse.cpp
index 7afc59f..bb0e567 100644
--- a/xfa/fxfa/parser/cxfa_traverse.cpp
+++ b/xfa/fxfa/parser/cxfa_traverse.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_traverse.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -35,6 +36,6 @@
                 XFA_Element::Traverse,
                 kTraversePropertyData,
                 kTraverseAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Traverse::~CXFA_Traverse() {}
diff --git a/xfa/fxfa/parser/cxfa_treelist.cpp b/xfa/fxfa/parser/cxfa_treelist.cpp
index 2dbec60..68eabc4 100644
--- a/xfa/fxfa/parser/cxfa_treelist.cpp
+++ b/xfa/fxfa/parser/cxfa_treelist.cpp
@@ -10,14 +10,13 @@
 
 #include "core/fxcrt/fx_extension.h"
 #include "fxjs/xfa/cjx_treelist.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_node.h"
 
 CXFA_TreeList::CXFA_TreeList(CXFA_Document* pDocument)
     : CXFA_List(pDocument,
                 XFA_ObjectType::TreeList,
                 XFA_Element::TreeList,
-                pdfium::MakeUnique<CJX_TreeList>(this)) {}
+                std::make_unique<CJX_TreeList>(this)) {}
 
 CXFA_TreeList::~CXFA_TreeList() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_type.cpp b/xfa/fxfa/parser/cxfa_type.cpp
index ba36158..0a17f8f 100644
--- a/xfa/fxfa/parser/cxfa_type.cpp
+++ b/xfa/fxfa/parser/cxfa_type.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_type.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Type,
                 {},
                 kTypeAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Type::~CXFA_Type() = default;
diff --git a/xfa/fxfa/parser/cxfa_typeface.cpp b/xfa/fxfa/parser/cxfa_typeface.cpp
index 0d2c2dc..1441212 100644
--- a/xfa/fxfa/parser/cxfa_typeface.cpp
+++ b/xfa/fxfa/parser/cxfa_typeface.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_typeface.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -25,6 +26,6 @@
                 XFA_Element::Typeface,
                 {},
                 kTypefaceAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Typeface::~CXFA_Typeface() = default;
diff --git a/xfa/fxfa/parser/cxfa_typefaces.cpp b/xfa/fxfa/parser/cxfa_typefaces.cpp
index dfc35e0..882876b 100644
--- a/xfa/fxfa/parser/cxfa_typefaces.cpp
+++ b/xfa/fxfa/parser/cxfa_typefaces.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_typefaces.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 CXFA_Typefaces::CXFA_Typefaces(CXFA_Document* doc, XFA_PacketType packet)
     : CXFA_Node(doc,
@@ -17,6 +18,6 @@
                 XFA_Element::Typefaces,
                 {},
                 {},
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Typefaces::~CXFA_Typefaces() = default;
diff --git a/xfa/fxfa/parser/cxfa_ui.cpp b/xfa/fxfa/parser/cxfa_ui.cpp
index 1630a3d..840d4ad 100644
--- a/xfa/fxfa/parser/cxfa_ui.cpp
+++ b/xfa/fxfa/parser/cxfa_ui.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_ui.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -43,7 +44,7 @@
                 XFA_Element::Ui,
                 kUiPropertyData,
                 kUiAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Ui::~CXFA_Ui() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_update.cpp b/xfa/fxfa/parser/cxfa_update.cpp
index 6150ff5..de06847 100644
--- a/xfa/fxfa/parser/cxfa_update.cpp
+++ b/xfa/fxfa/parser/cxfa_update.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_update.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_textnode.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::Update,
                 {},
                 kUpdateAttributeData,
-                pdfium::MakeUnique<CJX_TextNode>(this)) {}
+                std::make_unique<CJX_TextNode>(this)) {}
 
 CXFA_Update::~CXFA_Update() = default;
diff --git a/xfa/fxfa/parser/cxfa_uri.cpp b/xfa/fxfa/parser/cxfa_uri.cpp
index 79d1ea6..b2f7828 100644
--- a/xfa/fxfa/parser/cxfa_uri.cpp
+++ b/xfa/fxfa/parser/cxfa_uri.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_uri.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_textnode.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -30,6 +31,6 @@
                 XFA_Element::Uri,
                 {},
                 kUriAttributeData,
-                pdfium::MakeUnique<CJX_TextNode>(this)) {}
+                std::make_unique<CJX_TextNode>(this)) {}
 
 CXFA_Uri::~CXFA_Uri() = default;
diff --git a/xfa/fxfa/parser/cxfa_user.cpp b/xfa/fxfa/parser/cxfa_user.cpp
index fb36d34..61f5054 100644
--- a/xfa/fxfa/parser/cxfa_user.cpp
+++ b/xfa/fxfa/parser/cxfa_user.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_user.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_textnode.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::User,
                 {},
                 kUserAttributeData,
-                pdfium::MakeUnique<CJX_TextNode>(this)) {}
+                std::make_unique<CJX_TextNode>(this)) {}
 
 CXFA_User::~CXFA_User() = default;
diff --git a/xfa/fxfa/parser/cxfa_validate.cpp b/xfa/fxfa/parser/cxfa_validate.cpp
index d65b170..db65790 100644
--- a/xfa/fxfa/parser/cxfa_validate.cpp
+++ b/xfa/fxfa/parser/cxfa_validate.cpp
@@ -6,9 +6,10 @@
 
 #include "xfa/fxfa/parser/cxfa_validate.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
 #include "fxjs/xfa/cjx_object.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_message.h"
 #include "xfa/fxfa/parser/cxfa_picture.h"
 #include "xfa/fxfa/parser/cxfa_script.h"
@@ -51,7 +52,7 @@
           XFA_Element::Validate,
           kValidatePropertyData,
           kValidateAttributeData,
-          pdfium::MakeUnique<CJX_Node>(this)) {}
+          std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Validate::~CXFA_Validate() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_validateapprovalsignatures.cpp b/xfa/fxfa/parser/cxfa_validateapprovalsignatures.cpp
index d0aa5fd..e06621d 100644
--- a/xfa/fxfa/parser/cxfa_validateapprovalsignatures.cpp
+++ b/xfa/fxfa/parser/cxfa_validateapprovalsignatures.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_validateapprovalsignatures.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::ValidateApprovalSignatures,
                 {},
                 kValidateApprovalSignaturesAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_ValidateApprovalSignatures::~CXFA_ValidateApprovalSignatures() = default;
diff --git a/xfa/fxfa/parser/cxfa_validationmessaging.cpp b/xfa/fxfa/parser/cxfa_validationmessaging.cpp
index 687f37c..92ec267 100644
--- a/xfa/fxfa/parser/cxfa_validationmessaging.cpp
+++ b/xfa/fxfa/parser/cxfa_validationmessaging.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_validationmessaging.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::ValidationMessaging,
                 {},
                 kValidationMessagingAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_ValidationMessaging::~CXFA_ValidationMessaging() = default;
diff --git a/xfa/fxfa/parser/cxfa_value.cpp b/xfa/fxfa/parser/cxfa_value.cpp
index 979eabc..07c623d 100644
--- a/xfa/fxfa/parser/cxfa_value.cpp
+++ b/xfa/fxfa/parser/cxfa_value.cpp
@@ -6,9 +6,10 @@
 
 #include "xfa/fxfa/parser/cxfa_value.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
 #include "fxjs/xfa/cjx_object.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_arc.h"
 #include "xfa/fxfa/parser/cxfa_exdata.h"
 #include "xfa/fxfa/parser/cxfa_image.h"
@@ -51,7 +52,7 @@
                 XFA_Element::Value,
                 kValuePropertyData,
                 kValueAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Value::~CXFA_Value() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_variables.cpp b/xfa/fxfa/parser/cxfa_variables.cpp
index 5974b9e..c8134f8 100644
--- a/xfa/fxfa/parser/cxfa_variables.cpp
+++ b/xfa/fxfa/parser/cxfa_variables.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_variables.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_container.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -27,6 +28,6 @@
                 XFA_Element::Variables,
                 {},
                 kVariablesAttributeData,
-                pdfium::MakeUnique<CJX_Container>(this)) {}
+                std::make_unique<CJX_Container>(this)) {}
 
 CXFA_Variables::~CXFA_Variables() = default;
diff --git a/xfa/fxfa/parser/cxfa_version.cpp b/xfa/fxfa/parser/cxfa_version.cpp
index 651d498..ffd3990 100644
--- a/xfa/fxfa/parser/cxfa_version.cpp
+++ b/xfa/fxfa/parser/cxfa_version.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_version.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Version,
                 {},
                 kVersionAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Version::~CXFA_Version() = default;
diff --git a/xfa/fxfa/parser/cxfa_versioncontrol.cpp b/xfa/fxfa/parser/cxfa_versioncontrol.cpp
index c72b877..73dd0b4 100644
--- a/xfa/fxfa/parser/cxfa_versioncontrol.cpp
+++ b/xfa/fxfa/parser/cxfa_versioncontrol.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_versioncontrol.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -32,6 +33,6 @@
                 XFA_Element::VersionControl,
                 {},
                 kVersionControlAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_VersionControl::~CXFA_VersionControl() = default;
diff --git a/xfa/fxfa/parser/cxfa_viewerpreferences.cpp b/xfa/fxfa/parser/cxfa_viewerpreferences.cpp
index 4952c65..65408f2 100644
--- a/xfa/fxfa/parser/cxfa_viewerpreferences.cpp
+++ b/xfa/fxfa/parser/cxfa_viewerpreferences.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_viewerpreferences.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -39,6 +40,6 @@
                 XFA_Element::ViewerPreferences,
                 kViewerPreferencesPropertyData,
                 kViewerPreferencesAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_ViewerPreferences::~CXFA_ViewerPreferences() = default;
diff --git a/xfa/fxfa/parser/cxfa_webclient.cpp b/xfa/fxfa/parser/cxfa_webclient.cpp
index 66844fc..99d569a 100644
--- a/xfa/fxfa/parser/cxfa_webclient.cpp
+++ b/xfa/fxfa/parser/cxfa_webclient.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_webclient.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -32,6 +33,6 @@
                 XFA_Element::WebClient,
                 kWebClientPropertyData,
                 kWebClientAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_WebClient::~CXFA_WebClient() = default;
diff --git a/xfa/fxfa/parser/cxfa_whitespace.cpp b/xfa/fxfa/parser/cxfa_whitespace.cpp
index d8bdc62..99b887d 100644
--- a/xfa/fxfa/parser/cxfa_whitespace.cpp
+++ b/xfa/fxfa/parser/cxfa_whitespace.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_whitespace.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Whitespace,
                 {},
                 kWhitespaceAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Whitespace::~CXFA_Whitespace() = default;
diff --git a/xfa/fxfa/parser/cxfa_window.cpp b/xfa/fxfa/parser/cxfa_window.cpp
index c1dd78d..524bcc4 100644
--- a/xfa/fxfa/parser/cxfa_window.cpp
+++ b/xfa/fxfa/parser/cxfa_window.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_window.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +27,6 @@
                 XFA_Element::Window,
                 {},
                 kWindowAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Window::~CXFA_Window() = default;
diff --git a/xfa/fxfa/parser/cxfa_wsdladdress.cpp b/xfa/fxfa/parser/cxfa_wsdladdress.cpp
index 9c35cac..83de0d5 100644
--- a/xfa/fxfa/parser/cxfa_wsdladdress.cpp
+++ b/xfa/fxfa/parser/cxfa_wsdladdress.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_wsdladdress.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_textnode.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -28,6 +29,6 @@
                 XFA_Element::WsdlAddress,
                 {},
                 kWsdlAddressAttributeData,
-                pdfium::MakeUnique<CJX_TextNode>(this)) {}
+                std::make_unique<CJX_TextNode>(this)) {}
 
 CXFA_WsdlAddress::~CXFA_WsdlAddress() = default;
diff --git a/xfa/fxfa/parser/cxfa_wsdlconnection.cpp b/xfa/fxfa/parser/cxfa_wsdlconnection.cpp
index 188255f..4fd9504 100644
--- a/xfa/fxfa/parser/cxfa_wsdlconnection.cpp
+++ b/xfa/fxfa/parser/cxfa_wsdlconnection.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_wsdlconnection.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_wsdlconnection.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -36,6 +37,6 @@
                 XFA_Element::WsdlConnection,
                 kWsdlConnectionPropertyData,
                 kWsdlConnectionAttributeData,
-                pdfium::MakeUnique<CJX_WsdlConnection>(this)) {}
+                std::make_unique<CJX_WsdlConnection>(this)) {}
 
 CXFA_WsdlConnection::~CXFA_WsdlConnection() = default;
diff --git a/xfa/fxfa/parser/cxfa_xdc.cpp b/xfa/fxfa/parser/cxfa_xdc.cpp
index 84198da..6ff318a 100644
--- a/xfa/fxfa/parser/cxfa_xdc.cpp
+++ b/xfa/fxfa/parser/cxfa_xdc.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_xdc.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -31,6 +32,6 @@
                 XFA_Element::Xdc,
                 kXdcPropertyData,
                 kXdcAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Xdc::~CXFA_Xdc() = default;
diff --git a/xfa/fxfa/parser/cxfa_xdp.cpp b/xfa/fxfa/parser/cxfa_xdp.cpp
index f3dc76c..a0f84ec 100644
--- a/xfa/fxfa/parser/cxfa_xdp.cpp
+++ b/xfa/fxfa/parser/cxfa_xdp.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_xdp.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -30,6 +31,6 @@
                 XFA_Element::Xdp,
                 kXdpPropertyData,
                 kXdpAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Xdp::~CXFA_Xdp() = default;
diff --git a/xfa/fxfa/parser/cxfa_xfa.cpp b/xfa/fxfa/parser/cxfa_xfa.cpp
index 22fdd35..620cec4 100644
--- a/xfa/fxfa/parser/cxfa_xfa.cpp
+++ b/xfa/fxfa/parser/cxfa_xfa.cpp
@@ -7,7 +7,6 @@
 #include "xfa/fxfa/parser/cxfa_xfa.h"
 
 #include "fxjs/xfa/cjx_xfa.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -26,6 +25,6 @@
                 XFA_Element::Xfa,
                 {},
                 kXfaAttributeData,
-                pdfium::MakeUnique<CJX_Xfa>(this)) {}
+                std::make_unique<CJX_Xfa>(this)) {}
 
 CXFA_Xfa::~CXFA_Xfa() = default;
diff --git a/xfa/fxfa/parser/cxfa_xmlconnection.cpp b/xfa/fxfa/parser/cxfa_xmlconnection.cpp
index 17be7bc..81b8282 100644
--- a/xfa/fxfa/parser/cxfa_xmlconnection.cpp
+++ b/xfa/fxfa/parser/cxfa_xmlconnection.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_xmlconnection.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -31,6 +32,6 @@
                 XFA_Element::XmlConnection,
                 kXmlConnectionPropertyData,
                 kXmlConnectionAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_XmlConnection::~CXFA_XmlConnection() = default;
diff --git a/xfa/fxfa/parser/cxfa_xmllocale.cpp b/xfa/fxfa/parser/cxfa_xmllocale.cpp
index c7a6f47..9711b6b 100644
--- a/xfa/fxfa/parser/cxfa_xmllocale.cpp
+++ b/xfa/fxfa/parser/cxfa_xmllocale.cpp
@@ -13,7 +13,6 @@
 #include "core/fxcrt/xml/cfx_xmldocument.h"
 #include "core/fxcrt/xml/cfx_xmlelement.h"
 #include "core/fxcrt/xml/cfx_xmlparser.h"
-#include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_localemgr.h"
 #include "xfa/fxfa/parser/cxfa_nodelocale.h"
@@ -50,7 +49,7 @@
   if (!locale)
     return nullptr;
 
-  return pdfium::MakeUnique<CXFA_XMLLocale>(std::move(doc), locale);
+  return std::make_unique<CXFA_XMLLocale>(std::move(doc), locale);
 }
 
 CXFA_XMLLocale::CXFA_XMLLocale(std::unique_ptr<CFX_XMLDocument> doc,
diff --git a/xfa/fxfa/parser/cxfa_xsdconnection.cpp b/xfa/fxfa/parser/cxfa_xsdconnection.cpp
index 1973870..e40f76e 100644
--- a/xfa/fxfa/parser/cxfa_xsdconnection.cpp
+++ b/xfa/fxfa/parser/cxfa_xsdconnection.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_xsdconnection.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -32,6 +33,6 @@
                 XFA_Element::XsdConnection,
                 kXsdConnectionPropertyData,
                 kXsdConnectionAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_XsdConnection::~CXFA_XsdConnection() = default;
diff --git a/xfa/fxfa/parser/cxfa_xsl.cpp b/xfa/fxfa/parser/cxfa_xsl.cpp
index 2db4bdc..2b6dc04 100644
--- a/xfa/fxfa/parser/cxfa_xsl.cpp
+++ b/xfa/fxfa/parser/cxfa_xsl.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_xsl.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -31,6 +32,6 @@
                 XFA_Element::Xsl,
                 kXslPropertyData,
                 kXslAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Xsl::~CXFA_Xsl() = default;
diff --git a/xfa/fxfa/parser/cxfa_zpl.cpp b/xfa/fxfa/parser/cxfa_zpl.cpp
index aa9db61..d1d83fe 100644
--- a/xfa/fxfa/parser/cxfa_zpl.cpp
+++ b/xfa/fxfa/parser/cxfa_zpl.cpp
@@ -6,8 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_zpl.h"
 
+#include <memory>
+
 #include "fxjs/xfa/cjx_node.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -34,6 +35,6 @@
                 XFA_Element::Zpl,
                 kZplPropertyData,
                 kZplAttributeData,
-                pdfium::MakeUnique<CJX_Node>(this)) {}
+                std::make_unique<CJX_Node>(this)) {}
 
 CXFA_Zpl::~CXFA_Zpl() = default;
