diff --git a/core/fxcrt/css/BUILD.gn b/core/fxcrt/css/BUILD.gn
index 34dd54d..e412140 100644
--- a/core/fxcrt/css/BUILD.gn
+++ b/core/fxcrt/css/BUILD.gn
@@ -22,10 +22,12 @@
     "cfx_cssdeclaration.h",
     "cfx_cssenumvalue.cpp",
     "cfx_cssenumvalue.h",
-    "cfx_cssexttextbuf.cpp",
-    "cfx_cssexttextbuf.h",
+    "cfx_cssinputtextbuf.cpp",
+    "cfx_cssinputtextbuf.h",
     "cfx_cssnumbervalue.cpp",
     "cfx_cssnumbervalue.h",
+    "cfx_cssoutputtextbuf.cpp",
+    "cfx_cssoutputtextbuf.h",
     "cfx_csspropertyholder.cpp",
     "cfx_csspropertyholder.h",
     "cfx_cssrulecollection.cpp",
@@ -42,8 +44,6 @@
     "cfx_cssstylesheet.h",
     "cfx_csssyntaxparser.cpp",
     "cfx_csssyntaxparser.h",
-    "cfx_csstextbuf.cpp",
-    "cfx_csstextbuf.h",
     "cfx_cssvalue.cpp",
     "cfx_cssvalue.h",
     "cfx_cssvaluelist.cpp",
diff --git a/core/fxcrt/css/cfx_cssexttextbuf.cpp b/core/fxcrt/css/cfx_cssexttextbuf.cpp
deleted file mode 100644
index ed20660..0000000
--- a/core/fxcrt/css/cfx_cssexttextbuf.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "core/fxcrt/css/cfx_cssexttextbuf.h"
-
-CFX_CSSExtTextBuf::CFX_CSSExtTextBuf(WideStringView str) : m_Buffer(str) {}
-
-CFX_CSSExtTextBuf::~CFX_CSSExtTextBuf() = default;
diff --git a/core/fxcrt/css/cfx_cssinputtextbuf.cpp b/core/fxcrt/css/cfx_cssinputtextbuf.cpp
new file mode 100644
index 0000000..18b3398
--- /dev/null
+++ b/core/fxcrt/css/cfx_cssinputtextbuf.cpp
@@ -0,0 +1,11 @@
+// Copyright 2017 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fxcrt/css/cfx_cssinputtextbuf.h"
+
+CFX_CSSInputTextBuf::CFX_CSSInputTextBuf(WideStringView str) : m_Buffer(str) {}
+
+CFX_CSSInputTextBuf::~CFX_CSSInputTextBuf() = default;
diff --git a/core/fxcrt/css/cfx_cssexttextbuf.h b/core/fxcrt/css/cfx_cssinputtextbuf.h
similarity index 71%
rename from core/fxcrt/css/cfx_cssexttextbuf.h
rename to core/fxcrt/css/cfx_cssinputtextbuf.h
index d875f1b..9812449 100644
--- a/core/fxcrt/css/cfx_cssexttextbuf.h
+++ b/core/fxcrt/css/cfx_cssinputtextbuf.h
@@ -4,15 +4,15 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#ifndef CORE_FXCRT_CSS_CFX_CSSEXTTEXTBUF_H_
-#define CORE_FXCRT_CSS_CFX_CSSEXTTEXTBUF_H_
+#ifndef CORE_FXCRT_CSS_CFX_CSSINPUTTEXTBUF_H_
+#define CORE_FXCRT_CSS_CFX_CSSINPUTTEXTBUF_H_
 
 #include "core/fxcrt/fx_string.h"
 
-class CFX_CSSExtTextBuf {
+class CFX_CSSInputTextBuf {
  public:
-  explicit CFX_CSSExtTextBuf(WideStringView str);
-  ~CFX_CSSExtTextBuf();
+  explicit CFX_CSSInputTextBuf(WideStringView str);
+  ~CFX_CSSInputTextBuf();
 
   bool IsEOF() const { return m_iPos >= m_Buffer.GetLength(); }
   void MoveNext() { m_iPos++; }
@@ -26,4 +26,4 @@
   size_t m_iPos = 0;
 };
 
-#endif  // CORE_FXCRT_CSS_CFX_CSSEXTTEXTBUF_H_
+#endif  // CORE_FXCRT_CSS_CFX_CSSINPUTTEXTBUF_H_
diff --git a/core/fxcrt/css/cfx_csstextbuf.cpp b/core/fxcrt/css/cfx_cssoutputtextbuf.cpp
similarity index 63%
rename from core/fxcrt/css/cfx_csstextbuf.cpp
rename to core/fxcrt/css/cfx_cssoutputtextbuf.cpp
index f907f94..aab4812 100644
--- a/core/fxcrt/css/cfx_csstextbuf.cpp
+++ b/core/fxcrt/css/cfx_cssoutputtextbuf.cpp
@@ -4,22 +4,22 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#include "core/fxcrt/css/cfx_csstextbuf.h"
+#include "core/fxcrt/css/cfx_cssoutputtextbuf.h"
 
-CFX_CSSTextBuf::CFX_CSSTextBuf() {
+CFX_CSSOutputTextBuf::CFX_CSSOutputTextBuf() {
   m_Buffer.reserve(32);
 }
 
-CFX_CSSTextBuf::~CFX_CSSTextBuf() = default;
+CFX_CSSOutputTextBuf::~CFX_CSSOutputTextBuf() = default;
 
-void CFX_CSSTextBuf::AppendCharIfNotLeadingBlank(wchar_t wch) {
+void CFX_CSSOutputTextBuf::AppendCharIfNotLeadingBlank(wchar_t wch) {
   if (m_Buffer.empty() && wch <= ' ')
     return;
 
   m_Buffer.push_back(wch);
 }
 
-WideStringView CFX_CSSTextBuf::GetTrailingBlankTrimmedString() const {
+WideStringView CFX_CSSOutputTextBuf::GetTrailingBlankTrimmedString() const {
   WideStringView result(m_Buffer);
   while (!result.IsEmpty() && result.Back() <= ' ')
     result = result.First(result.GetLength() - 1);
diff --git a/core/fxcrt/css/cfx_csstextbuf.h b/core/fxcrt/css/cfx_cssoutputtextbuf.h
similarity index 73%
rename from core/fxcrt/css/cfx_csstextbuf.h
rename to core/fxcrt/css/cfx_cssoutputtextbuf.h
index 66db080..146b096 100644
--- a/core/fxcrt/css/cfx_csstextbuf.h
+++ b/core/fxcrt/css/cfx_cssoutputtextbuf.h
@@ -4,18 +4,18 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#ifndef CORE_FXCRT_CSS_CFX_CSSTEXTBUF_H_
-#define CORE_FXCRT_CSS_CFX_CSSTEXTBUF_H_
+#ifndef CORE_FXCRT_CSS_CFX_CSSOUTPUTTEXTBUF_H_
+#define CORE_FXCRT_CSS_CFX_CSSOUTPUTTEXTBUF_H_
 
 #include <vector>
 
 #include "core/fxcrt/fx_memory_wrappers.h"
 #include "core/fxcrt/fx_string.h"
 
-class CFX_CSSTextBuf {
+class CFX_CSSOutputTextBuf {
  public:
-  CFX_CSSTextBuf();
-  ~CFX_CSSTextBuf();
+  CFX_CSSOutputTextBuf();
+  ~CFX_CSSOutputTextBuf();
 
   void Clear() { m_Buffer.clear(); }
   bool IsEmpty() const { return m_Buffer.empty(); }
@@ -26,4 +26,4 @@
   std::vector<wchar_t, FxAllocAllocator<wchar_t>> m_Buffer;
 };
 
-#endif  // CORE_FXCRT_CSS_CFX_CSSTEXTBUF_H_
+#endif  // CORE_FXCRT_CSS_CFX_CSSOUTPUTTEXTBUF_H_
diff --git a/core/fxcrt/css/cfx_csssyntaxparser.h b/core/fxcrt/css/cfx_csssyntaxparser.h
index daaae8e..d8728ea 100644
--- a/core/fxcrt/css/cfx_csssyntaxparser.h
+++ b/core/fxcrt/css/cfx_csssyntaxparser.h
@@ -9,8 +9,8 @@
 
 #include <stack>
 
-#include "core/fxcrt/css/cfx_cssexttextbuf.h"
-#include "core/fxcrt/css/cfx_csstextbuf.h"
+#include "core/fxcrt/css/cfx_cssinputtextbuf.h"
+#include "core/fxcrt/css/cfx_cssoutputtextbuf.h"
 #include "core/fxcrt/fx_string.h"
 
 #define CFX_CSSSYNTAXCHECK_AllowCharset 1
@@ -51,8 +51,8 @@
 
   bool m_bHasError = false;
   SyntaxMode m_eMode = SyntaxMode::kRuleSet;
-  CFX_CSSTextBuf m_Output;
-  CFX_CSSExtTextBuf m_Input;
+  CFX_CSSOutputTextBuf m_Output;
+  CFX_CSSInputTextBuf m_Input;
   std::stack<SyntaxMode> m_ModeStack;
 };
 
