diff --git a/BUILD.gn b/BUILD.gn
index 2715b55..ba00055 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -1806,8 +1806,8 @@
       "xfa/fxfa/parser/cxfa_contentlayoutitem.cpp",
       "xfa/fxfa/parser/cxfa_contentlayoutitem.h",
       "xfa/fxfa/parser/cxfa_cornerdata.h",
-      "xfa/fxfa/parser/cxfa_data.cpp",
-      "xfa/fxfa/parser/cxfa_data.h",
+      "xfa/fxfa/parser/cxfa_datadata.cpp",
+      "xfa/fxfa/parser/cxfa_datadata.h",
       "xfa/fxfa/parser/cxfa_dataexporter.cpp",
       "xfa/fxfa/parser/cxfa_dataexporter.h",
       "xfa/fxfa/parser/cxfa_dataimporter.cpp",
@@ -1819,8 +1819,8 @@
       "xfa/fxfa/parser/cxfa_edgedata.h",
       "xfa/fxfa/parser/cxfa_eventdata.cpp",
       "xfa/fxfa/parser/cxfa_eventdata.h",
-      "xfa/fxfa/parser/cxfa_exdata.cpp",
-      "xfa/fxfa/parser/cxfa_exdata.h",
+      "xfa/fxfa/parser/cxfa_exdatadata.cpp",
+      "xfa/fxfa/parser/cxfa_exdatadata.h",
       "xfa/fxfa/parser/cxfa_filldata.cpp",
       "xfa/fxfa/parser/cxfa_filldata.h",
       "xfa/fxfa/parser/cxfa_fontdata.cpp",
diff --git a/xfa/fxfa/parser/cxfa_binddata.cpp b/xfa/fxfa/parser/cxfa_binddata.cpp
index 074a3fc..c47e653 100644
--- a/xfa/fxfa/parser/cxfa_binddata.cpp
+++ b/xfa/fxfa/parser/cxfa_binddata.cpp
@@ -8,7 +8,7 @@
 
 #include "xfa/fxfa/parser/cxfa_node.h"
 
-CXFA_BindData::CXFA_BindData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
+CXFA_BindData::CXFA_BindData(CXFA_Node* pNode) : CXFA_DataData(pNode) {}
 
 void CXFA_BindData::GetPicture(WideString& wsPicture) {
   if (CXFA_Node* pPicture = m_pNode->GetChild(0, XFA_Element::Picture, false))
diff --git a/xfa/fxfa/parser/cxfa_binddata.h b/xfa/fxfa/parser/cxfa_binddata.h
index 93e9439..100f1c3 100644
--- a/xfa/fxfa/parser/cxfa_binddata.h
+++ b/xfa/fxfa/parser/cxfa_binddata.h
@@ -8,11 +8,11 @@
 #define XFA_FXFA_PARSER_CXFA_BINDDATA_H_
 
 #include "core/fxcrt/fx_string.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 
 class CXFA_Node;
 
-class CXFA_BindData : public CXFA_Data {
+class CXFA_BindData : public CXFA_DataData {
  public:
   explicit CXFA_BindData(CXFA_Node* pNode);
 
diff --git a/xfa/fxfa/parser/cxfa_binditemsdata.cpp b/xfa/fxfa/parser/cxfa_binditemsdata.cpp
index 616a526..644b532 100644
--- a/xfa/fxfa/parser/cxfa_binditemsdata.cpp
+++ b/xfa/fxfa/parser/cxfa_binditemsdata.cpp
@@ -8,7 +8,8 @@
 
 #include "xfa/fxfa/parser/cxfa_node.h"
 
-CXFA_BindItemsData::CXFA_BindItemsData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
+CXFA_BindItemsData::CXFA_BindItemsData(CXFA_Node* pNode)
+    : CXFA_DataData(pNode) {}
 
 void CXFA_BindItemsData::GetLabelRef(WideStringView& wsLabelRef) {
   m_pNode->JSNode()->TryCData(XFA_Attribute::LabelRef, wsLabelRef, true);
diff --git a/xfa/fxfa/parser/cxfa_binditemsdata.h b/xfa/fxfa/parser/cxfa_binditemsdata.h
index 664239a..7c7eefa 100644
--- a/xfa/fxfa/parser/cxfa_binditemsdata.h
+++ b/xfa/fxfa/parser/cxfa_binditemsdata.h
@@ -8,11 +8,11 @@
 #define XFA_FXFA_PARSER_CXFA_BINDITEMSDATA_H_
 
 #include "core/fxcrt/fx_string.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 
 class CXFA_Node;
 
-class CXFA_BindItemsData : public CXFA_Data {
+class CXFA_BindItemsData : public CXFA_DataData {
  public:
   explicit CXFA_BindItemsData(CXFA_Node* pNode);
 
diff --git a/xfa/fxfa/parser/cxfa_boxdata.h b/xfa/fxfa/parser/cxfa_boxdata.h
index ae946c4..14f8b35 100644
--- a/xfa/fxfa/parser/cxfa_boxdata.h
+++ b/xfa/fxfa/parser/cxfa_boxdata.h
@@ -10,16 +10,16 @@
 #include <vector>
 
 #include "core/fxcrt/fx_system.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 #include "xfa/fxfa/parser/cxfa_edgedata.h"
 #include "xfa/fxfa/parser/cxfa_filldata.h"
 #include "xfa/fxfa/parser/cxfa_margindata.h"
 
 class CXFA_Node;
 
-class CXFA_BoxData : public CXFA_Data {
+class CXFA_BoxData : public CXFA_DataData {
  public:
-  explicit CXFA_BoxData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
+  explicit CXFA_BoxData(CXFA_Node* pNode) : CXFA_DataData(pNode) {}
 
   bool IsArc() const { return GetElementType() == XFA_Element::Arc; }
   bool IsBorder() const { return GetElementType() == XFA_Element::Border; }
diff --git a/xfa/fxfa/parser/cxfa_calculatedata.cpp b/xfa/fxfa/parser/cxfa_calculatedata.cpp
index 7b93308..ef152f4 100644
--- a/xfa/fxfa/parser/cxfa_calculatedata.cpp
+++ b/xfa/fxfa/parser/cxfa_calculatedata.cpp
@@ -9,7 +9,8 @@
 #include "xfa/fxfa/parser/cxfa_node.h"
 #include "xfa/fxfa/parser/cxfa_textdata.h"
 
-CXFA_CalculateData::CXFA_CalculateData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
+CXFA_CalculateData::CXFA_CalculateData(CXFA_Node* pNode)
+    : CXFA_DataData(pNode) {}
 
 int32_t CXFA_CalculateData::GetOverride() {
   XFA_ATTRIBUTEENUM eAtt = XFA_ATTRIBUTEENUM_Error;
diff --git a/xfa/fxfa/parser/cxfa_calculatedata.h b/xfa/fxfa/parser/cxfa_calculatedata.h
index d610e1b..e2784aa 100644
--- a/xfa/fxfa/parser/cxfa_calculatedata.h
+++ b/xfa/fxfa/parser/cxfa_calculatedata.h
@@ -8,12 +8,12 @@
 #define XFA_FXFA_PARSER_CXFA_CALCULATEDATA_H_
 
 #include "core/fxcrt/fx_string.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 #include "xfa/fxfa/parser/cxfa_scriptdata.h"
 
 class CXFA_Node;
 
-class CXFA_CalculateData : public CXFA_Data {
+class CXFA_CalculateData : public CXFA_DataData {
  public:
   explicit CXFA_CalculateData(CXFA_Node* pNode);
 
diff --git a/xfa/fxfa/parser/cxfa_captiondata.cpp b/xfa/fxfa/parser/cxfa_captiondata.cpp
index a91b45f..c898a76 100644
--- a/xfa/fxfa/parser/cxfa_captiondata.cpp
+++ b/xfa/fxfa/parser/cxfa_captiondata.cpp
@@ -9,7 +9,7 @@
 #include "xfa/fxfa/parser/cxfa_measurement.h"
 #include "xfa/fxfa/parser/cxfa_node.h"
 
-CXFA_CaptionData::CXFA_CaptionData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
+CXFA_CaptionData::CXFA_CaptionData(CXFA_Node* pNode) : CXFA_DataData(pNode) {}
 
 int32_t CXFA_CaptionData::GetPresence() {
   XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_Visible;
diff --git a/xfa/fxfa/parser/cxfa_captiondata.h b/xfa/fxfa/parser/cxfa_captiondata.h
index d7fe0ba..a28989b 100644
--- a/xfa/fxfa/parser/cxfa_captiondata.h
+++ b/xfa/fxfa/parser/cxfa_captiondata.h
@@ -7,14 +7,14 @@
 #ifndef XFA_FXFA_PARSER_CXFA_CAPTIONDATA_H_
 #define XFA_FXFA_PARSER_CXFA_CAPTIONDATA_H_
 
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 #include "xfa/fxfa/parser/cxfa_fontdata.h"
 #include "xfa/fxfa/parser/cxfa_margindata.h"
 #include "xfa/fxfa/parser/cxfa_valuedata.h"
 
 class CXFA_Node;
 
-class CXFA_CaptionData : public CXFA_Data {
+class CXFA_CaptionData : public CXFA_DataData {
  public:
   explicit CXFA_CaptionData(CXFA_Node* pNode);
 
diff --git a/xfa/fxfa/parser/cxfa_data.cpp b/xfa/fxfa/parser/cxfa_datadata.cpp
similarity index 81%
rename from xfa/fxfa/parser/cxfa_data.cpp
rename to xfa/fxfa/parser/cxfa_datadata.cpp
index d6b6700..8f41c2f 100644
--- a/xfa/fxfa/parser/cxfa_data.cpp
+++ b/xfa/fxfa/parser/cxfa_datadata.cpp
@@ -4,14 +4,14 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 
 #include "core/fxcrt/fx_extension.h"
 #include "xfa/fxfa/parser/cxfa_measurement.h"
 #include "xfa/fxfa/parser/cxfa_node.h"
 
 // Static.
-FX_ARGB CXFA_Data::ToColor(const WideStringView& wsValue) {
+FX_ARGB CXFA_DataData::ToColor(const WideStringView& wsValue) {
   uint8_t r = 0, g = 0, b = 0;
   if (wsValue.GetLength() == 0)
     return 0xff000000;
@@ -61,13 +61,13 @@
   return (0xff << 24) | (r << 16) | (g << 8) | b;
 }
 
-XFA_Element CXFA_Data::GetElementType() const {
+XFA_Element CXFA_DataData::GetElementType() const {
   return m_pNode ? m_pNode->GetElementType() : XFA_Element::Unknown;
 }
 
-bool CXFA_Data::TryMeasure(XFA_Attribute eAttr,
-                           float& fValue,
-                           bool bUseDefault) const {
+bool CXFA_DataData::TryMeasure(XFA_Attribute eAttr,
+                               float& fValue,
+                               bool bUseDefault) const {
   CXFA_Measurement ms;
   if (m_pNode->JSNode()->TryMeasure(eAttr, ms, bUseDefault)) {
     fValue = ms.ToUnit(XFA_Unit::Pt);
@@ -76,7 +76,7 @@
   return false;
 }
 
-bool CXFA_Data::SetMeasure(XFA_Attribute eAttr, float fValue) {
+bool CXFA_DataData::SetMeasure(XFA_Attribute eAttr, float fValue) {
   CXFA_Measurement ms(fValue, XFA_Unit::Pt);
   return m_pNode->JSNode()->SetMeasure(eAttr, ms, false);
 }
diff --git a/xfa/fxfa/parser/cxfa_data.h b/xfa/fxfa/parser/cxfa_datadata.h
similarity index 78%
rename from xfa/fxfa/parser/cxfa_data.h
rename to xfa/fxfa/parser/cxfa_datadata.h
index 858c5b3..5be86c2 100644
--- a/xfa/fxfa/parser/cxfa_data.h
+++ b/xfa/fxfa/parser/cxfa_datadata.h
@@ -4,8 +4,8 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#ifndef XFA_FXFA_PARSER_CXFA_DATA_H_
-#define XFA_FXFA_PARSER_CXFA_DATA_H_
+#ifndef XFA_FXFA_PARSER_CXFA_DATADATA_H_
+#define XFA_FXFA_PARSER_CXFA_DATADATA_H_
 
 #include "core/fxcrt/fx_system.h"
 #include "core/fxge/fx_dib.h"
@@ -13,11 +13,11 @@
 
 class CXFA_Node;
 
-class CXFA_Data {
+class CXFA_DataData {
  public:
   static FX_ARGB ToColor(const WideStringView& wsValue);
 
-  explicit CXFA_Data(CXFA_Node* pNode) : m_pNode(pNode) {}
+  explicit CXFA_DataData(CXFA_Node* pNode) : m_pNode(pNode) {}
 
   explicit operator bool() const { return !!m_pNode; }
   CXFA_Node* GetNode() const { return m_pNode; }
@@ -32,4 +32,4 @@
   CXFA_Node* m_pNode;
 };
 
-#endif  // XFA_FXFA_PARSER_CXFA_DATA_H_
+#endif  // XFA_FXFA_PARSER_CXFA_DATADATA_H_
diff --git a/xfa/fxfa/parser/cxfa_eventdata.cpp b/xfa/fxfa/parser/cxfa_eventdata.cpp
index f4e62c0..0210fdc 100644
--- a/xfa/fxfa/parser/cxfa_eventdata.cpp
+++ b/xfa/fxfa/parser/cxfa_eventdata.cpp
@@ -8,7 +8,7 @@
 
 #include "xfa/fxfa/parser/cxfa_node.h"
 
-CXFA_EventData::CXFA_EventData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
+CXFA_EventData::CXFA_EventData(CXFA_Node* pNode) : CXFA_DataData(pNode) {}
 
 int32_t CXFA_EventData::GetActivity() {
   return m_pNode->JSNode()->GetEnum(XFA_Attribute::Activity);
diff --git a/xfa/fxfa/parser/cxfa_eventdata.h b/xfa/fxfa/parser/cxfa_eventdata.h
index 5c96b07..90b1b87 100644
--- a/xfa/fxfa/parser/cxfa_eventdata.h
+++ b/xfa/fxfa/parser/cxfa_eventdata.h
@@ -10,13 +10,13 @@
 #include <stdint.h>
 
 #include "core/fxcrt/fx_string.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 #include "xfa/fxfa/parser/cxfa_scriptdata.h"
 #include "xfa/fxfa/parser/cxfa_submitdata.h"
 
 class CXFA_Node;
 
-class CXFA_EventData : public CXFA_Data {
+class CXFA_EventData : public CXFA_DataData {
  public:
   explicit CXFA_EventData(CXFA_Node* pNode);
 
diff --git a/xfa/fxfa/parser/cxfa_exdata.h b/xfa/fxfa/parser/cxfa_exdata.h
deleted file mode 100644
index 03913a2..0000000
--- a/xfa/fxfa/parser/cxfa_exdata.h
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2016 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_PARSER_CXFA_EXDATA_H_
-#define XFA_FXFA_PARSER_CXFA_EXDATA_H_
-
-#include "core/fxcrt/fx_string.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
-
-class CXFA_Node;
-
-class CXFA_ExData : public CXFA_Data {
- public:
-  explicit CXFA_ExData(CXFA_Node* pNode);
-
-  bool SetContentType(const WideString& wsContentType);
-};
-
-#endif  // XFA_FXFA_PARSER_CXFA_EXDATA_H_
diff --git a/xfa/fxfa/parser/cxfa_exdata.cpp b/xfa/fxfa/parser/cxfa_exdatadata.cpp
similarity index 68%
rename from xfa/fxfa/parser/cxfa_exdata.cpp
rename to xfa/fxfa/parser/cxfa_exdatadata.cpp
index 6a9965f..4b62867 100644
--- a/xfa/fxfa/parser/cxfa_exdata.cpp
+++ b/xfa/fxfa/parser/cxfa_exdatadata.cpp
@@ -4,13 +4,13 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#include "xfa/fxfa/parser/cxfa_exdata.h"
+#include "xfa/fxfa/parser/cxfa_exdatadata.h"
 
 #include "xfa/fxfa/parser/cxfa_node.h"
 
-CXFA_ExData::CXFA_ExData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
+CXFA_ExDataData::CXFA_ExDataData(CXFA_Node* pNode) : CXFA_DataData(pNode) {}
 
-bool CXFA_ExData::SetContentType(const WideString& wsContentType) {
+bool CXFA_ExDataData::SetContentType(const WideString& wsContentType) {
   return m_pNode->JSNode()->SetCData(XFA_Attribute::ContentType, wsContentType,
                                      false, false);
 }
diff --git a/xfa/fxfa/parser/cxfa_exdatadata.h b/xfa/fxfa/parser/cxfa_exdatadata.h
new file mode 100644
index 0000000..3f9468a
--- /dev/null
+++ b/xfa/fxfa/parser/cxfa_exdatadata.h
@@ -0,0 +1,22 @@
+// Copyright 2016 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_PARSER_CXFA_EXDATADATA_H_
+#define XFA_FXFA_PARSER_CXFA_EXDATADATA_H_
+
+#include "core/fxcrt/fx_string.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
+
+class CXFA_Node;
+
+class CXFA_ExDataData : public CXFA_DataData {
+ public:
+  explicit CXFA_ExDataData(CXFA_Node* pNode);
+
+  bool SetContentType(const WideString& wsContentType);
+};
+
+#endif  // XFA_FXFA_PARSER_CXFA_EXDATADATA_H_
diff --git a/xfa/fxfa/parser/cxfa_filldata.cpp b/xfa/fxfa/parser/cxfa_filldata.cpp
index bdce5d6..65ad396 100644
--- a/xfa/fxfa/parser/cxfa_filldata.cpp
+++ b/xfa/fxfa/parser/cxfa_filldata.cpp
@@ -8,7 +8,7 @@
 
 #include "xfa/fxfa/parser/cxfa_node.h"
 
-CXFA_FillData::CXFA_FillData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
+CXFA_FillData::CXFA_FillData(CXFA_Node* pNode) : CXFA_DataData(pNode) {}
 
 CXFA_FillData::~CXFA_FillData() {}
 
@@ -33,7 +33,7 @@
   if (CXFA_Node* pNode = m_pNode->GetChild(0, XFA_Element::Color, false)) {
     WideStringView wsColor;
     if (pNode->JSNode()->TryCData(XFA_Attribute::Value, wsColor, false))
-      return CXFA_Data::ToColor(wsColor);
+      return CXFA_DataData::ToColor(wsColor);
   }
   if (bText)
     return 0xFF000000;
@@ -58,7 +58,7 @@
   if (CXFA_Node* pColor = pNode->GetChild(0, XFA_Element::Color, false)) {
     WideStringView wsColor;
     pColor->JSNode()->TryCData(XFA_Attribute::Value, wsColor, false);
-    foreColor = CXFA_Data::ToColor(wsColor);
+    foreColor = CXFA_DataData::ToColor(wsColor);
   } else {
     foreColor = 0xFF000000;
   }
@@ -73,7 +73,7 @@
   if (CXFA_Node* pColor = pNode->GetChild(0, XFA_Element::Color, false)) {
     WideStringView wsColor;
     pColor->JSNode()->TryCData(XFA_Attribute::Value, wsColor, false);
-    stippleColor = CXFA_Data::ToColor(wsColor);
+    stippleColor = CXFA_DataData::ToColor(wsColor);
   } else {
     stippleColor = 0xFF000000;
   }
@@ -88,7 +88,7 @@
   if (CXFA_Node* pColor = pNode->GetChild(0, XFA_Element::Color, false)) {
     WideStringView wsColor;
     pColor->JSNode()->TryCData(XFA_Attribute::Value, wsColor, false);
-    endColor = CXFA_Data::ToColor(wsColor);
+    endColor = CXFA_DataData::ToColor(wsColor);
   } else {
     endColor = 0xFF000000;
   }
@@ -103,7 +103,7 @@
   if (CXFA_Node* pColor = pNode->GetChild(0, XFA_Element::Color, false)) {
     WideStringView wsColor;
     pColor->JSNode()->TryCData(XFA_Attribute::Value, wsColor, false);
-    endColor = CXFA_Data::ToColor(wsColor);
+    endColor = CXFA_DataData::ToColor(wsColor);
   } else {
     endColor = 0xFF000000;
   }
diff --git a/xfa/fxfa/parser/cxfa_filldata.h b/xfa/fxfa/parser/cxfa_filldata.h
index d47fb5d..290e0b7 100644
--- a/xfa/fxfa/parser/cxfa_filldata.h
+++ b/xfa/fxfa/parser/cxfa_filldata.h
@@ -9,11 +9,11 @@
 
 #include "core/fxcrt/fx_system.h"
 #include "core/fxge/fx_dib.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 
 class CXFA_Node;
 
-class CXFA_FillData : public CXFA_Data {
+class CXFA_FillData : public CXFA_DataData {
  public:
   explicit CXFA_FillData(CXFA_Node* pNode);
   ~CXFA_FillData();
diff --git a/xfa/fxfa/parser/cxfa_fontdata.cpp b/xfa/fxfa/parser/cxfa_fontdata.cpp
index f207fde..f5fe270 100644
--- a/xfa/fxfa/parser/cxfa_fontdata.cpp
+++ b/xfa/fxfa/parser/cxfa_fontdata.cpp
@@ -11,7 +11,7 @@
 #include "xfa/fxfa/parser/cxfa_measurement.h"
 #include "xfa/fxfa/parser/cxfa_node.h"
 
-CXFA_FontData::CXFA_FontData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
+CXFA_FontData::CXFA_FontData(CXFA_Node* pNode) : CXFA_DataData(pNode) {}
 
 float CXFA_FontData::GetBaselineShift() {
   return m_pNode->JSNode()
diff --git a/xfa/fxfa/parser/cxfa_fontdata.h b/xfa/fxfa/parser/cxfa_fontdata.h
index cb2dd60..d926fd3 100644
--- a/xfa/fxfa/parser/cxfa_fontdata.h
+++ b/xfa/fxfa/parser/cxfa_fontdata.h
@@ -8,11 +8,11 @@
 #define XFA_FXFA_PARSER_CXFA_FONTDATA_H_
 
 #include "core/fxge/fx_dib.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 
 class CXFA_Node;
 
-class CXFA_FontData : public CXFA_Data {
+class CXFA_FontData : public CXFA_DataData {
  public:
   explicit CXFA_FontData(CXFA_Node* pNode);
 
diff --git a/xfa/fxfa/parser/cxfa_imagedata.cpp b/xfa/fxfa/parser/cxfa_imagedata.cpp
index fbe707a..7c5a065 100644
--- a/xfa/fxfa/parser/cxfa_imagedata.cpp
+++ b/xfa/fxfa/parser/cxfa_imagedata.cpp
@@ -9,7 +9,7 @@
 #include "xfa/fxfa/parser/cxfa_node.h"
 
 CXFA_ImageData::CXFA_ImageData(CXFA_Node* pNode, bool bDefValue)
-    : CXFA_Data(pNode), m_bDefValue(bDefValue) {}
+    : CXFA_DataData(pNode), m_bDefValue(bDefValue) {}
 
 int32_t CXFA_ImageData::GetAspect() {
   return m_pNode->JSNode()->GetEnum(XFA_Attribute::Aspect);
diff --git a/xfa/fxfa/parser/cxfa_imagedata.h b/xfa/fxfa/parser/cxfa_imagedata.h
index 8b3ae43..4547426 100644
--- a/xfa/fxfa/parser/cxfa_imagedata.h
+++ b/xfa/fxfa/parser/cxfa_imagedata.h
@@ -9,11 +9,11 @@
 
 #include "core/fxcrt/fx_string.h"
 #include "core/fxcrt/fx_system.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 
 class CXFA_Node;
 
-class CXFA_ImageData : public CXFA_Data {
+class CXFA_ImageData : public CXFA_DataData {
  public:
   CXFA_ImageData(CXFA_Node* pNode, bool bDefValue);
 
diff --git a/xfa/fxfa/parser/cxfa_linedata.h b/xfa/fxfa/parser/cxfa_linedata.h
index 596bef7..2e70450 100644
--- a/xfa/fxfa/parser/cxfa_linedata.h
+++ b/xfa/fxfa/parser/cxfa_linedata.h
@@ -8,14 +8,14 @@
 #define XFA_FXFA_PARSER_CXFA_LINEDATA_H_
 
 #include "core/fxcrt/fx_system.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 #include "xfa/fxfa/parser/cxfa_edgedata.h"
 
 class CXFA_Node;
 
-class CXFA_LineData : public CXFA_Data {
+class CXFA_LineData : public CXFA_DataData {
  public:
-  explicit CXFA_LineData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
+  explicit CXFA_LineData(CXFA_Node* pNode) : CXFA_DataData(pNode) {}
 
   int32_t GetHand();
   bool GetSlope();
diff --git a/xfa/fxfa/parser/cxfa_margindata.cpp b/xfa/fxfa/parser/cxfa_margindata.cpp
index 15cb523..08cc9fd 100644
--- a/xfa/fxfa/parser/cxfa_margindata.cpp
+++ b/xfa/fxfa/parser/cxfa_margindata.cpp
@@ -6,7 +6,7 @@
 
 #include "xfa/fxfa/parser/cxfa_margindata.h"
 
-CXFA_MarginData::CXFA_MarginData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
+CXFA_MarginData::CXFA_MarginData(CXFA_Node* pNode) : CXFA_DataData(pNode) {}
 
 bool CXFA_MarginData::GetLeftInset(float& fInset, float fDefInset) const {
   fInset = fDefInset;
diff --git a/xfa/fxfa/parser/cxfa_margindata.h b/xfa/fxfa/parser/cxfa_margindata.h
index fda8239..5695fcc 100644
--- a/xfa/fxfa/parser/cxfa_margindata.h
+++ b/xfa/fxfa/parser/cxfa_margindata.h
@@ -8,11 +8,11 @@
 #define XFA_FXFA_PARSER_CXFA_MARGINDATA_H_
 
 #include "core/fxcrt/fx_system.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 
 class CXFA_Node;
 
-class CXFA_MarginData : public CXFA_Data {
+class CXFA_MarginData : public CXFA_DataData {
  public:
   explicit CXFA_MarginData(CXFA_Node* pNode);
 
diff --git a/xfa/fxfa/parser/cxfa_occurdata.cpp b/xfa/fxfa/parser/cxfa_occurdata.cpp
index 1ef5a29..1f20e3c 100644
--- a/xfa/fxfa/parser/cxfa_occurdata.cpp
+++ b/xfa/fxfa/parser/cxfa_occurdata.cpp
@@ -8,7 +8,7 @@
 
 #include "xfa/fxfa/parser/cxfa_node.h"
 
-CXFA_OccurData::CXFA_OccurData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
+CXFA_OccurData::CXFA_OccurData(CXFA_Node* pNode) : CXFA_DataData(pNode) {}
 
 int32_t CXFA_OccurData::GetMax() {
   int32_t iMax = 1;
diff --git a/xfa/fxfa/parser/cxfa_occurdata.h b/xfa/fxfa/parser/cxfa_occurdata.h
index 90554bd..4ce7bda 100644
--- a/xfa/fxfa/parser/cxfa_occurdata.h
+++ b/xfa/fxfa/parser/cxfa_occurdata.h
@@ -8,11 +8,11 @@
 #define XFA_FXFA_PARSER_CXFA_OCCURDATA_H_
 
 #include "core/fxcrt/fx_system.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 
 class CXFA_Node;
 
-class CXFA_OccurData : public CXFA_Data {
+class CXFA_OccurData : public CXFA_DataData {
  public:
   explicit CXFA_OccurData(CXFA_Node* pNode);
 
diff --git a/xfa/fxfa/parser/cxfa_paradata.cpp b/xfa/fxfa/parser/cxfa_paradata.cpp
index b0e8c69..55db131 100644
--- a/xfa/fxfa/parser/cxfa_paradata.cpp
+++ b/xfa/fxfa/parser/cxfa_paradata.cpp
@@ -9,7 +9,7 @@
 #include "xfa/fxfa/parser/cxfa_measurement.h"
 #include "xfa/fxfa/parser/cxfa_node.h"
 
-CXFA_ParaData::CXFA_ParaData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
+CXFA_ParaData::CXFA_ParaData(CXFA_Node* pNode) : CXFA_DataData(pNode) {}
 
 int32_t CXFA_ParaData::GetHorizontalAlign() {
   XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_Left;
diff --git a/xfa/fxfa/parser/cxfa_paradata.h b/xfa/fxfa/parser/cxfa_paradata.h
index 3e0afb3..20c371e 100644
--- a/xfa/fxfa/parser/cxfa_paradata.h
+++ b/xfa/fxfa/parser/cxfa_paradata.h
@@ -8,11 +8,11 @@
 #define XFA_FXFA_PARSER_CXFA_PARADATA_H_
 
 #include "core/fxcrt/fx_system.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 
 class CXFA_Node;
 
-class CXFA_ParaData : public CXFA_Data {
+class CXFA_ParaData : public CXFA_DataData {
  public:
   explicit CXFA_ParaData(CXFA_Node* pNode);
 
diff --git a/xfa/fxfa/parser/cxfa_scriptdata.cpp b/xfa/fxfa/parser/cxfa_scriptdata.cpp
index 619dcc1..ea957f9 100644
--- a/xfa/fxfa/parser/cxfa_scriptdata.cpp
+++ b/xfa/fxfa/parser/cxfa_scriptdata.cpp
@@ -8,7 +8,7 @@
 
 #include "xfa/fxfa/parser/cxfa_node.h"
 
-CXFA_ScriptData::CXFA_ScriptData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
+CXFA_ScriptData::CXFA_ScriptData(CXFA_Node* pNode) : CXFA_DataData(pNode) {}
 
 XFA_ScriptDataType CXFA_ScriptData::GetContentType() {
   WideStringView cData;
diff --git a/xfa/fxfa/parser/cxfa_scriptdata.h b/xfa/fxfa/parser/cxfa_scriptdata.h
index 36c9a31..6e85d79 100644
--- a/xfa/fxfa/parser/cxfa_scriptdata.h
+++ b/xfa/fxfa/parser/cxfa_scriptdata.h
@@ -10,7 +10,7 @@
 #include <stdint.h>
 
 #include "core/fxcrt/fx_string.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 
 enum class XFA_ScriptDataType {
   Formcalc = 0,
@@ -20,7 +20,7 @@
 
 class CXFA_Node;
 
-class CXFA_ScriptData : public CXFA_Data {
+class CXFA_ScriptData : public CXFA_DataData {
  public:
   explicit CXFA_ScriptData(CXFA_Node* pNode);
 
diff --git a/xfa/fxfa/parser/cxfa_strokedata.cpp b/xfa/fxfa/parser/cxfa_strokedata.cpp
index aa31d0a..93247e3 100644
--- a/xfa/fxfa/parser/cxfa_strokedata.cpp
+++ b/xfa/fxfa/parser/cxfa_strokedata.cpp
@@ -54,7 +54,7 @@
 
   WideStringView wsColor;
   pNode->JSNode()->TryCData(XFA_Attribute::Value, wsColor, true);
-  return CXFA_Data::ToColor(wsColor);
+  return CXFA_DataData::ToColor(wsColor);
 }
 
 void CXFA_StrokeData::SetColor(FX_ARGB argb) {
diff --git a/xfa/fxfa/parser/cxfa_strokedata.h b/xfa/fxfa/parser/cxfa_strokedata.h
index 050b766..2921f88 100644
--- a/xfa/fxfa/parser/cxfa_strokedata.h
+++ b/xfa/fxfa/parser/cxfa_strokedata.h
@@ -10,7 +10,7 @@
 #include "core/fxcrt/fx_system.h"
 #include "core/fxge/fx_dib.h"
 #include "xfa/fxfa/fxfa_basic.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 
 enum StrokeSameStyle {
   XFA_STROKE_SAMESTYLE_NoPresence = 1,
@@ -19,10 +19,10 @@
 
 class CXFA_Node;
 
-class CXFA_StrokeData : public CXFA_Data {
+class CXFA_StrokeData : public CXFA_DataData {
  public:
   CXFA_StrokeData() : CXFA_StrokeData(nullptr) {}
-  explicit CXFA_StrokeData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
+  explicit CXFA_StrokeData(CXFA_Node* pNode) : CXFA_DataData(pNode) {}
 
   bool IsCorner() const { return GetElementType() == XFA_Element::Corner; }
   bool IsEdge() const { return GetElementType() == XFA_Element::Edge; }
diff --git a/xfa/fxfa/parser/cxfa_submitdata.cpp b/xfa/fxfa/parser/cxfa_submitdata.cpp
index 96b28e1..629cb9e 100644
--- a/xfa/fxfa/parser/cxfa_submitdata.cpp
+++ b/xfa/fxfa/parser/cxfa_submitdata.cpp
@@ -8,7 +8,7 @@
 
 #include "xfa/fxfa/parser/cxfa_node.h"
 
-CXFA_SubmitData::CXFA_SubmitData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
+CXFA_SubmitData::CXFA_SubmitData(CXFA_Node* pNode) : CXFA_DataData(pNode) {}
 
 bool CXFA_SubmitData::IsSubmitEmbedPDF() {
   return m_pNode->JSNode()->GetBoolean(XFA_Attribute::EmbedPDF);
diff --git a/xfa/fxfa/parser/cxfa_submitdata.h b/xfa/fxfa/parser/cxfa_submitdata.h
index b5005f3..28cb3c2 100644
--- a/xfa/fxfa/parser/cxfa_submitdata.h
+++ b/xfa/fxfa/parser/cxfa_submitdata.h
@@ -9,11 +9,11 @@
 
 #include "core/fxcrt/fx_string.h"
 #include "core/fxcrt/fx_system.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 
 class CXFA_Node;
 
-class CXFA_SubmitData : public CXFA_Data {
+class CXFA_SubmitData : public CXFA_DataData {
  public:
   explicit CXFA_SubmitData(CXFA_Node* pNode);
 
diff --git a/xfa/fxfa/parser/cxfa_textdata.cpp b/xfa/fxfa/parser/cxfa_textdata.cpp
index 95e2c98..ef804ab 100644
--- a/xfa/fxfa/parser/cxfa_textdata.cpp
+++ b/xfa/fxfa/parser/cxfa_textdata.cpp
@@ -8,7 +8,7 @@
 
 #include "xfa/fxfa/parser/cxfa_node.h"
 
-CXFA_TextData::CXFA_TextData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
+CXFA_TextData::CXFA_TextData(CXFA_Node* pNode) : CXFA_DataData(pNode) {}
 
 void CXFA_TextData::GetContent(WideString& wsText) {
   m_pNode->JSNode()->TryContent(wsText, false, true);
diff --git a/xfa/fxfa/parser/cxfa_textdata.h b/xfa/fxfa/parser/cxfa_textdata.h
index 9ebf1e0..b504e56 100644
--- a/xfa/fxfa/parser/cxfa_textdata.h
+++ b/xfa/fxfa/parser/cxfa_textdata.h
@@ -8,11 +8,11 @@
 #define XFA_FXFA_PARSER_CXFA_TEXTDATA_H_
 
 #include "core/fxcrt/fx_string.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 
 class CXFA_Node;
 
-class CXFA_TextData : public CXFA_Data {
+class CXFA_TextData : public CXFA_DataData {
  public:
   explicit CXFA_TextData(CXFA_Node* pNode);
 
diff --git a/xfa/fxfa/parser/cxfa_validatedata.cpp b/xfa/fxfa/parser/cxfa_validatedata.cpp
index 9e811df..c332b12 100644
--- a/xfa/fxfa/parser/cxfa_validatedata.cpp
+++ b/xfa/fxfa/parser/cxfa_validatedata.cpp
@@ -9,7 +9,7 @@
 #include "xfa/fxfa/parser/cxfa_node.h"
 #include "xfa/fxfa/parser/xfa_utils.h"
 
-CXFA_ValidateData::CXFA_ValidateData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
+CXFA_ValidateData::CXFA_ValidateData(CXFA_Node* pNode) : CXFA_DataData(pNode) {}
 
 int32_t CXFA_ValidateData::GetFormatTest() {
   return m_pNode->JSNode()->GetEnum(XFA_Attribute::FormatTest);
diff --git a/xfa/fxfa/parser/cxfa_validatedata.h b/xfa/fxfa/parser/cxfa_validatedata.h
index 53df394..a431cbd 100644
--- a/xfa/fxfa/parser/cxfa_validatedata.h
+++ b/xfa/fxfa/parser/cxfa_validatedata.h
@@ -9,12 +9,12 @@
 
 #include "core/fxcrt/fx_string.h"
 #include "core/fxcrt/fx_system.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 #include "xfa/fxfa/parser/cxfa_scriptdata.h"
 
 class CXFA_Node;
 
-class CXFA_ValidateData : public CXFA_Data {
+class CXFA_ValidateData : public CXFA_DataData {
  public:
   explicit CXFA_ValidateData(CXFA_Node* pNode);
 
diff --git a/xfa/fxfa/parser/cxfa_valuedata.cpp b/xfa/fxfa/parser/cxfa_valuedata.cpp
index f996897..a967b3b 100644
--- a/xfa/fxfa/parser/cxfa_valuedata.cpp
+++ b/xfa/fxfa/parser/cxfa_valuedata.cpp
@@ -44,9 +44,9 @@
                                : nullptr);
 }
 
-CXFA_ExData CXFA_ValueData::GetExData() {
-  return CXFA_ExData(m_pNode ? m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild)
-                             : nullptr);
+CXFA_ExDataData CXFA_ValueData::GetExData() {
+  return CXFA_ExDataData(m_pNode ? m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild)
+                                 : nullptr);
 }
 
 CXFA_ImageData CXFA_ValueData::GetImageData() {
diff --git a/xfa/fxfa/parser/cxfa_valuedata.h b/xfa/fxfa/parser/cxfa_valuedata.h
index a1f1e41..7e647d8 100644
--- a/xfa/fxfa/parser/cxfa_valuedata.h
+++ b/xfa/fxfa/parser/cxfa_valuedata.h
@@ -9,8 +9,8 @@
 
 #include "core/fxcrt/fx_string.h"
 #include "xfa/fxfa/parser/cxfa_arcdata.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
-#include "xfa/fxfa/parser/cxfa_exdata.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
+#include "xfa/fxfa/parser/cxfa_exdatadata.h"
 #include "xfa/fxfa/parser/cxfa_imagedata.h"
 #include "xfa/fxfa/parser/cxfa_linedata.h"
 #include "xfa/fxfa/parser/cxfa_rectangledata.h"
@@ -18,9 +18,9 @@
 
 class CXFA_Node;
 
-class CXFA_ValueData : public CXFA_Data {
+class CXFA_ValueData : public CXFA_DataData {
  public:
-  explicit CXFA_ValueData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
+  explicit CXFA_ValueData(CXFA_Node* pNode) : CXFA_DataData(pNode) {}
 
   XFA_Element GetChildValueClassID();
   bool GetChildValueContent(WideString& wsContent);
@@ -28,7 +28,7 @@
   CXFA_LineData GetLineData();
   CXFA_RectangleData GetRectangleData();
   CXFA_TextData GetTextData();
-  CXFA_ExData GetExData();
+  CXFA_ExDataData GetExData();
   CXFA_ImageData GetImageData();
 };
 
diff --git a/xfa/fxfa/parser/cxfa_widgetdata.cpp b/xfa/fxfa/parser/cxfa_widgetdata.cpp
index 679ef05..48832eb 100644
--- a/xfa/fxfa/parser/cxfa_widgetdata.cpp
+++ b/xfa/fxfa/parser/cxfa_widgetdata.cpp
@@ -234,7 +234,7 @@
 }  // namespace
 
 CXFA_WidgetData::CXFA_WidgetData(CXFA_Node* pNode)
-    : CXFA_Data(pNode),
+    : CXFA_DataData(pNode),
       m_bIsNull(true),
       m_bPreNull(true),
       m_pUiChildNode(nullptr),
diff --git a/xfa/fxfa/parser/cxfa_widgetdata.h b/xfa/fxfa/parser/cxfa_widgetdata.h
index dd9e1d9..3f1b4dc 100644
--- a/xfa/fxfa/parser/cxfa_widgetdata.h
+++ b/xfa/fxfa/parser/cxfa_widgetdata.h
@@ -16,7 +16,7 @@
 #include "xfa/fxfa/parser/cxfa_borderdata.h"
 #include "xfa/fxfa/parser/cxfa_calculatedata.h"
 #include "xfa/fxfa/parser/cxfa_captiondata.h"
-#include "xfa/fxfa/parser/cxfa_data.h"
+#include "xfa/fxfa/parser/cxfa_datadata.h"
 #include "xfa/fxfa/parser/cxfa_fontdata.h"
 #include "xfa/fxfa/parser/cxfa_margindata.h"
 #include "xfa/fxfa/parser/cxfa_paradata.h"
@@ -38,7 +38,7 @@
 class CXFA_Node;
 class IFX_Locale;
 
-class CXFA_WidgetData : public CXFA_Data {
+class CXFA_WidgetData : public CXFA_DataData {
  public:
   explicit CXFA_WidgetData(CXFA_Node* pNode);
 
diff --git a/xfa/fxfa/parser/xfa_document_datamerger_imp.cpp b/xfa/fxfa/parser/xfa_document_datamerger_imp.cpp
index 7348e44..67256f2 100644
--- a/xfa/fxfa/parser/xfa_document_datamerger_imp.cpp
+++ b/xfa/fxfa/parser/xfa_document_datamerger_imp.cpp
@@ -328,7 +328,7 @@
             wsItem = single ? wsItem : wsItem + L"\n";
             wsNormalizeValue += wsItem;
           }
-          CXFA_ExData exData = defValueData.GetExData();
+          CXFA_ExDataData exData = defValueData.GetExData();
           ASSERT(exData);
           exData.SetContentType(single ? L"text/plain" : L"text/xml");
         }
