diff --git a/BUILD.gn b/BUILD.gn
index 9f8c52a..057e84f 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -1614,8 +1614,6 @@
       "xfa/fwl/theme/cfwl_utils.h",
       "xfa/fwl/theme/cfwl_widgettp.cpp",
       "xfa/fwl/theme/cfwl_widgettp.h",
-      "xfa/fxfa/cxfa_csstagprovider.cpp",
-      "xfa/fxfa/cxfa_csstagprovider.h",
       "xfa/fxfa/cxfa_deffontmgr.cpp",
       "xfa/fxfa/cxfa_deffontmgr.h",
       "xfa/fxfa/cxfa_eventparam.cpp",
diff --git a/xfa/fde/css/cfde_cssstyleselector.cpp b/xfa/fde/css/cfde_cssstyleselector.cpp
index 2213feb..51e60bc 100644
--- a/xfa/fde/css/cfde_cssstyleselector.cpp
+++ b/xfa/fde/css/cfde_cssstyleselector.cpp
@@ -21,7 +21,6 @@
 #include "xfa/fde/css/cfde_cssstylesheet.h"
 #include "xfa/fde/css/cfde_csssyntaxparser.h"
 #include "xfa/fde/css/cfde_cssvaluelist.h"
-#include "xfa/fxfa/cxfa_csstagprovider.h"
 
 CFDE_CSSStyleSelector::CFDE_CSSStyleSelector(CFGAS_FontMgr* pFontMgr)
     : m_pFontMgr(pFontMgr), m_fDefFontSize(12.0f) {}
diff --git a/xfa/fxfa/cxfa_csstagprovider.cpp b/xfa/fxfa/cxfa_csstagprovider.cpp
deleted file mode 100644
index 98d00d4..0000000
--- a/xfa/fxfa/cxfa_csstagprovider.cpp
+++ /dev/null
@@ -1,12 +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 "xfa/fxfa/cxfa_csstagprovider.h"
-
-CXFA_CSSTagProvider::CXFA_CSSTagProvider()
-    : m_bTagAvailable(false), m_bContent(false) {}
-
-CXFA_CSSTagProvider::~CXFA_CSSTagProvider() {}
diff --git a/xfa/fxfa/cxfa_csstagprovider.h b/xfa/fxfa/cxfa_csstagprovider.h
deleted file mode 100644
index 058740b..0000000
--- a/xfa/fxfa/cxfa_csstagprovider.h
+++ /dev/null
@@ -1,39 +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
-
-#ifndef XFA_FXFA_CXFA_CSSTAGPROVIDER_H_
-#define XFA_FXFA_CXFA_CSSTAGPROVIDER_H_
-
-#include <map>
-
-#include "core/fxcrt/fx_string.h"
-
-class CXFA_CSSTagProvider {
- public:
-  CXFA_CSSTagProvider();
-  ~CXFA_CSSTagProvider();
-
-  CFX_WideString GetTagName() { return m_wsTagName; }
-
-  void SetTagName(const CFX_WideString& wsName) { m_wsTagName = wsName; }
-  void SetAttribute(const CFX_WideString& wsAttr,
-                    const CFX_WideString& wsValue) {
-    m_Attributes.insert({wsAttr, wsValue});
-  }
-
-  CFX_WideString GetAttribute(const CFX_WideString& wsAttr) {
-    return m_Attributes[wsAttr];
-  }
-
-  bool m_bTagAvailable;
-  bool m_bContent;
-
- private:
-  CFX_WideString m_wsTagName;
-  std::map<CFX_WideString, CFX_WideString> m_Attributes;
-};
-
-#endif  // XFA_FXFA_CXFA_CSSTAGPROVIDER_H_
diff --git a/xfa/fxfa/cxfa_textparser.cpp b/xfa/fxfa/cxfa_textparser.cpp
index 2bc0096..c74cf50 100644
--- a/xfa/fxfa/cxfa_textparser.cpp
+++ b/xfa/fxfa/cxfa_textparser.cpp
@@ -19,7 +19,6 @@
 #include "xfa/fde/css/cfde_cssstylesheet.h"
 #include "xfa/fde/css/fde_css.h"
 #include "xfa/fgas/font/cfgas_fontmgr.h"
-#include "xfa/fxfa/cxfa_csstagprovider.h"
 #include "xfa/fxfa/cxfa_ffapp.h"
 #include "xfa/fxfa/cxfa_ffdoc.h"
 #include "xfa/fxfa/cxfa_fontmgr.h"
@@ -269,9 +268,9 @@
                             FX_HashCode_GetW(wsName.AsStringC(), true));
 }
 
-std::unique_ptr<CXFA_CSSTagProvider> CXFA_TextParser::ParseTagInfo(
+std::unique_ptr<CXFA_TextParser::TagProvider> CXFA_TextParser::ParseTagInfo(
     CFX_XMLNode* pXMLNode) {
-  auto tagProvider = pdfium::MakeUnique<CXFA_CSSTagProvider>();
+  auto tagProvider = pdfium::MakeUnique<TagProvider>();
 
   CFX_WideString wsName;
   if (pXMLNode->GetType() == FX_XMLNODE_Element) {
@@ -623,3 +622,8 @@
   }
   return true;
 }
+
+CXFA_TextParser::TagProvider::TagProvider()
+    : m_bTagAvailable(false), m_bContent(false) {}
+
+CXFA_TextParser::TagProvider::~TagProvider() {}
diff --git a/xfa/fxfa/cxfa_textparser.h b/xfa/fxfa/cxfa_textparser.h
index 3c1b603..303b10c 100644
--- a/xfa/fxfa/cxfa_textparser.h
+++ b/xfa/fxfa/cxfa_textparser.h
@@ -20,7 +20,6 @@
 class CFDE_CSSStyleSelector;
 class CFDE_CSSStyleSheet;
 class CFX_XMLNode;
-class CXFA_CSSTagProvider;
 class CXFA_TextParseContext;
 class CXFA_TextProvider;
 class CXFA_TextTabstopsContext;
@@ -86,10 +85,35 @@
   bool TagValidate(const CFX_WideString& str) const;
 
  private:
+  class TagProvider {
+   public:
+    TagProvider();
+    ~TagProvider();
+
+    CFX_WideString GetTagName() { return m_wsTagName; }
+
+    void SetTagName(const CFX_WideString& wsName) { m_wsTagName = wsName; }
+    void SetAttribute(const CFX_WideString& wsAttr,
+                      const CFX_WideString& wsValue) {
+      m_Attributes.insert({wsAttr, wsValue});
+    }
+
+    CFX_WideString GetAttribute(const CFX_WideString& wsAttr) {
+      return m_Attributes[wsAttr];
+    }
+
+    bool m_bTagAvailable;
+    bool m_bContent;
+
+   private:
+    CFX_WideString m_wsTagName;
+    std::map<CFX_WideString, CFX_WideString> m_Attributes;
+  };
+
   void InitCSSData(CXFA_TextProvider* pTextProvider);
   void ParseRichText(CFX_XMLNode* pXMLNode,
                      CFDE_CSSComputedStyle* pParentStyle);
-  std::unique_ptr<CXFA_CSSTagProvider> ParseTagInfo(CFX_XMLNode* pXMLNode);
+  std::unique_ptr<TagProvider> ParseTagInfo(CFX_XMLNode* pXMLNode);
   std::unique_ptr<CFDE_CSSStyleSheet> LoadDefaultSheetStyle();
   CFX_RetainPtr<CFDE_CSSComputedStyle> CreateStyle(
       CFDE_CSSComputedStyle* pParentStyle);
