diff --git a/core/fpdfapi/page/cpdf_meshstream.cpp b/core/fpdfapi/page/cpdf_meshstream.cpp
index 43db277..7d7085f 100644
--- a/core/fpdfapi/page/cpdf_meshstream.cpp
+++ b/core/fpdfapi/page/cpdf_meshstream.cpp
@@ -103,8 +103,7 @@
       m_funcs(funcs),
       m_pShadingStream(pShadingStream),
       m_pCS(pCS),
-      m_pStream(pdfium::MakeRetain<CPDF_StreamAcc>(pShadingStream)) {
-}
+      m_pStream(pdfium::MakeRetain<CPDF_StreamAcc>(pShadingStream)) {}
 
 CPDF_MeshStream::~CPDF_MeshStream() = default;
 
diff --git a/fxjs/xfa/cfxjse_formcalc_context.cpp b/fxjs/xfa/cfxjse_formcalc_context.cpp
index a0e8b98..9f15141 100644
--- a/fxjs/xfa/cfxjse_formcalc_context.cpp
+++ b/fxjs/xfa/cfxjse_formcalc_context.cpp
@@ -5314,8 +5314,7 @@
 CFXJSE_FormCalcContext::CFXJSE_FormCalcContext(v8::Isolate* pIsolate,
                                                CFXJSE_Context* pScriptContext,
                                                CXFA_Document* pDoc)
-    : m_pIsolate(pIsolate),
-      m_pDocument(pDoc) {
+    : m_pIsolate(pIsolate), m_pDocument(pDoc) {
   m_Value.Reset(
       m_pIsolate,
       NewBoundV8Object(
diff --git a/fxjs/xfa/cjx_object.cpp b/fxjs/xfa/cjx_object.cpp
index 7e7dfd8..c91e90c 100644
--- a/fxjs/xfa/cjx_object.cpp
+++ b/fxjs/xfa/cjx_object.cpp
@@ -944,8 +944,7 @@
   pNotify->OnValueChanging(GetXFANode(), eAttr);
 }
 
-void CJX_Object::OnChanged(XFA_Attribute eAttr,
-                           bool bScriptModify) {
+void CJX_Object::OnChanged(XFA_Attribute eAttr, bool bScriptModify) {
   if (!GetXFANode()->IsInitialized())
     return;
 
diff --git a/xfa/fgas/crt/cfgas_stringformatter_unittest.cpp b/xfa/fgas/crt/cfgas_stringformatter_unittest.cpp
index 750330c..f60d283 100644
--- a/xfa/fgas/crt/cfgas_stringformatter_unittest.cpp
+++ b/xfa/fgas/crt/cfgas_stringformatter_unittest.cpp
@@ -21,9 +21,7 @@
  public:
   CFGAS_StringFormatterTest() : scoped_tz_("UTC") { CPDF_PageModule::Create(); }
 
-  ~CFGAS_StringFormatterTest() override {
-    CPDF_PageModule::Destroy();
-  }
+  ~CFGAS_StringFormatterTest() override { CPDF_PageModule::Destroy(); }
 
   CXFA_LocaleMgr* Mgr(const WideString& locale) {
     return cppgc::MakeGarbageCollected<CXFA_LocaleMgr>(
diff --git a/xfa/fwl/cfwl_widget.cpp b/xfa/fwl/cfwl_widget.cpp
index 0f3ee5c..46aae70 100644
--- a/xfa/fwl/cfwl_widget.cpp
+++ b/xfa/fwl/cfwl_widget.cpp
@@ -223,8 +223,7 @@
   return CFX_RectF(0, 0, m_WidgetRect.width, m_WidgetRect.height);
 }
 
-CFX_SizeF CFWL_Widget::CalcTextSize(const WideString& wsText,
-                                    bool bMultiLine) {
+CFX_SizeF CFWL_Widget::CalcTextSize(const WideString& wsText, bool bMultiLine) {
   CFWL_ThemeText calPart;
   calPart.m_pWidget = this;
   calPart.m_wsText = wsText;
diff --git a/xfa/fwl/cfwl_widget.h b/xfa/fwl/cfwl_widget.h
index cf067e4..973d75e 100644
--- a/xfa/fwl/cfwl_widget.h
+++ b/xfa/fwl/cfwl_widget.h
@@ -150,8 +150,7 @@
   float GetCXBorderSize() const;
   float GetCYBorderSize() const;
   CFX_RectF GetRelativeRect() const;
-  CFX_SizeF CalcTextSize(const WideString& wsText,
-                         bool bMultiLine);
+  CFX_SizeF CalcTextSize(const WideString& wsText, bool bMultiLine);
   void CalcTextRect(const WideString& wsText,
                     const FDE_TextStyle& dwTTOStyles,
                     FDE_TextAlignment iTTOAlign,
diff --git a/xfa/fxfa/parser/cxfa_list.h b/xfa/fxfa/parser/cxfa_list.h
index 3cf5625..8852654 100644
--- a/xfa/fxfa/parser/cxfa_list.h
+++ b/xfa/fxfa/parser/cxfa_list.h
@@ -7,7 +7,6 @@
 #ifndef XFA_FXFA_PARSER_CXFA_LIST_H_
 #define XFA_FXFA_PARSER_CXFA_LIST_H_
 
-
 #include "fxjs/gc/heap.h"
 #include "xfa/fxfa/parser/cxfa_object.h"
 
