Break circular dependency between xfa/fxfa and xfa/fgas.
Move CXFA_LinkUserData and CXFA_TextUserData to xfa/fgas/layout.
Rename them to CFX_LinkUserData and CFX_TextUserData, respectively.
Change-Id: Ie31b58fb72890f01b8fb1b107c04df7c9eaf1a2a
Reviewed-on: https://pdfium-review.googlesource.com/c/50351
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/xfa/fgas/layout/BUILD.gn b/xfa/fgas/layout/BUILD.gn
index 59b4fcd..ba0b40c 100644
--- a/xfa/fgas/layout/BUILD.gn
+++ b/xfa/fgas/layout/BUILD.gn
@@ -18,8 +18,12 @@
"cfx_breakpiece.h",
"cfx_char.cpp",
"cfx_char.h",
+ "cfx_linkuserdata.cpp",
+ "cfx_linkuserdata.h",
"cfx_rtfbreak.cpp",
"cfx_rtfbreak.h",
+ "cfx_textuserdata.cpp",
+ "cfx_textuserdata.h",
"cfx_txtbreak.cpp",
"cfx_txtbreak.h",
"fx_arabic.cpp",
@@ -30,6 +34,7 @@
deps = [
"../:fgas",
"../../../core/fxcrt",
+ "../../../core/fxcrt/css",
"../../../core/fxge",
]
configs += [
diff --git a/xfa/fgas/layout/cfx_breakpiece.cpp b/xfa/fgas/layout/cfx_breakpiece.cpp
index 9372c2f..b0cc754 100644
--- a/xfa/fgas/layout/cfx_breakpiece.cpp
+++ b/xfa/fgas/layout/cfx_breakpiece.cpp
@@ -6,6 +6,8 @@
#include "xfa/fgas/layout/cfx_breakpiece.h"
+#include "xfa/fgas/layout/cfx_textuserdata.h"
+
CFX_BreakPiece::CFX_BreakPiece()
: m_dwStatus(CFX_BreakType::Piece),
m_iStartPos(0),
diff --git a/xfa/fgas/layout/cfx_breakpiece.h b/xfa/fgas/layout/cfx_breakpiece.h
index 9b1ebd6..8ea7032 100644
--- a/xfa/fgas/layout/cfx_breakpiece.h
+++ b/xfa/fgas/layout/cfx_breakpiece.h
@@ -13,7 +13,8 @@
#include "core/fxcrt/retain_ptr.h"
#include "core/fxcrt/unowned_ptr.h"
#include "xfa/fgas/layout/cfx_char.h"
-#include "xfa/fxfa/cxfa_textuserdata.h"
+
+class CFX_TextUserData;
class CFX_BreakPiece {
public:
@@ -41,7 +42,7 @@
uint32_t m_dwIdentity;
uint32_t m_dwCharStyles;
UnownedPtr<std::vector<CFX_Char>> m_pChars;
- RetainPtr<CXFA_TextUserData> m_pUserData;
+ RetainPtr<CFX_TextUserData> m_pUserData;
};
#endif // XFA_FGAS_LAYOUT_CFX_BREAKPIECE_H_
diff --git a/xfa/fxfa/cxfa_linkuserdata.cpp b/xfa/fgas/layout/cfx_linkuserdata.cpp
similarity index 65%
rename from xfa/fxfa/cxfa_linkuserdata.cpp
rename to xfa/fgas/layout/cfx_linkuserdata.cpp
index 84cee35..591d861 100644
--- a/xfa/fxfa/cxfa_linkuserdata.cpp
+++ b/xfa/fgas/layout/cfx_linkuserdata.cpp
@@ -4,9 +4,9 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-#include "xfa/fxfa/cxfa_linkuserdata.h"
+#include "xfa/fgas/layout/cfx_linkuserdata.h"
-CXFA_LinkUserData::CXFA_LinkUserData(const wchar_t* pszText)
+CFX_LinkUserData::CFX_LinkUserData(const wchar_t* pszText)
: m_wsURLContent(pszText) {}
-CXFA_LinkUserData::~CXFA_LinkUserData() {}
+CFX_LinkUserData::~CFX_LinkUserData() {}
diff --git a/xfa/fxfa/cxfa_linkuserdata.h b/xfa/fgas/layout/cfx_linkuserdata.h
similarity index 67%
rename from xfa/fxfa/cxfa_linkuserdata.h
rename to xfa/fgas/layout/cfx_linkuserdata.h
index baa39aa..6f23b0e 100644
--- a/xfa/fxfa/cxfa_linkuserdata.h
+++ b/xfa/fgas/layout/cfx_linkuserdata.h
@@ -4,14 +4,14 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-#ifndef XFA_FXFA_CXFA_LINKUSERDATA_H_
-#define XFA_FXFA_CXFA_LINKUSERDATA_H_
+#ifndef XFA_FGAS_LAYOUT_CFX_LINKUSERDATA_H_
+#define XFA_FGAS_LAYOUT_CFX_LINKUSERDATA_H_
#include "core/fxcrt/fx_string.h"
#include "core/fxcrt/fx_system.h"
#include "core/fxcrt/retain_ptr.h"
-class CXFA_LinkUserData final : public Retainable {
+class CFX_LinkUserData final : public Retainable {
public:
template <typename T, typename... Args>
friend RetainPtr<T> pdfium::MakeRetain(Args&&... args);
@@ -19,10 +19,10 @@
const wchar_t* GetLinkURL() const { return m_wsURLContent.c_str(); }
private:
- explicit CXFA_LinkUserData(const wchar_t* pszText);
- ~CXFA_LinkUserData() override;
+ explicit CFX_LinkUserData(const wchar_t* pszText);
+ ~CFX_LinkUserData() override;
WideString m_wsURLContent;
};
-#endif // XFA_FXFA_CXFA_LINKUSERDATA_H_
+#endif // XFA_FGAS_LAYOUT_CFX_LINKUSERDATA_H_
diff --git a/xfa/fgas/layout/cfx_rtfbreak.cpp b/xfa/fgas/layout/cfx_rtfbreak.cpp
index 407d574..776a2fe 100644
--- a/xfa/fgas/layout/cfx_rtfbreak.cpp
+++ b/xfa/fgas/layout/cfx_rtfbreak.cpp
@@ -13,6 +13,7 @@
#include "third_party/base/stl_util.h"
#include "xfa/fgas/font/cfgas_gefont.h"
#include "xfa/fgas/layout/cfx_char.h"
+#include "xfa/fgas/layout/cfx_textuserdata.h"
#include "xfa/fgas/layout/fx_arabic.h"
#include "xfa/fgas/layout/fx_linebreak.h"
@@ -43,7 +44,7 @@
m_PositionedTabs.insert(it, iTabPos);
}
-void CFX_RTFBreak::SetUserData(const RetainPtr<CXFA_TextUserData>& pUserData) {
+void CFX_RTFBreak::SetUserData(const RetainPtr<CFX_TextUserData>& pUserData) {
if (m_pUserData == pUserData)
return;
@@ -389,7 +390,7 @@
tp.m_iVerticalScale = pTC->vertical_scale();
dwIdentity = pTC->m_dwIdentity;
tp.m_dwIdentity = dwIdentity;
- tp.m_pUserData = pTC->m_pUserData.As<CXFA_TextUserData>();
+ tp.m_pUserData = pTC->m_pUserData.As<CFX_TextUserData>();
j = i;
bNew = false;
}
@@ -462,7 +463,7 @@
tp.m_iVerticalScale = pTC->vertical_scale();
dwIdentity = pTC->m_dwIdentity;
tp.m_dwIdentity = dwIdentity;
- tp.m_pUserData = pTC->m_pUserData.As<CXFA_TextUserData>();
+ tp.m_pUserData = pTC->m_pUserData.As<CFX_TextUserData>();
tp.m_dwStatus = CFX_BreakType::Piece;
++i;
} else if (iBidiLevel != pTC->m_iBidiLevel ||
diff --git a/xfa/fgas/layout/cfx_rtfbreak.h b/xfa/fgas/layout/cfx_rtfbreak.h
index 7af369f..2f09d99 100644
--- a/xfa/fgas/layout/cfx_rtfbreak.h
+++ b/xfa/fgas/layout/cfx_rtfbreak.h
@@ -14,9 +14,9 @@
#include "core/fxcrt/fx_unicode.h"
#include "core/fxcrt/retain_ptr.h"
#include "xfa/fgas/layout/cfx_break.h"
-#include "xfa/fxfa/cxfa_textuserdata.h"
class CFGAS_GEFont;
+class CFX_TextUserData;
class TextCharPos;
enum class CFX_RTFLineAlignment {
@@ -51,7 +51,7 @@
void SetLineStartPos(float fLinePos);
void SetAlignment(CFX_RTFLineAlignment align) { m_iAlignment = align; }
- void SetUserData(const RetainPtr<CXFA_TextUserData>& pUserData);
+ void SetUserData(const RetainPtr<CFX_TextUserData>& pUserData);
void AddPositionedTab(float fTabPos);
@@ -90,7 +90,7 @@
bool m_bPagination;
std::vector<int32_t> m_PositionedTabs;
CFX_RTFLineAlignment m_iAlignment;
- RetainPtr<CXFA_TextUserData> m_pUserData;
+ RetainPtr<CFX_TextUserData> m_pUserData;
};
#endif // XFA_FGAS_LAYOUT_CFX_RTFBREAK_H_
diff --git a/xfa/fxfa/cxfa_textuserdata.cpp b/xfa/fgas/layout/cfx_textuserdata.cpp
similarity index 68%
rename from xfa/fxfa/cxfa_textuserdata.cpp
rename to xfa/fgas/layout/cfx_textuserdata.cpp
index 6c46978..f5151bd 100644
--- a/xfa/fxfa/cxfa_textuserdata.cpp
+++ b/xfa/fgas/layout/cfx_textuserdata.cpp
@@ -4,20 +4,20 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-#include "xfa/fxfa/cxfa_textuserdata.h"
+#include "xfa/fgas/layout/cfx_textuserdata.h"
#include "core/fxcrt/css/cfx_css.h"
#include "core/fxcrt/css/cfx_csscomputedstyle.h"
#include "core/fxcrt/css/cfx_cssstyleselector.h"
-#include "xfa/fxfa/cxfa_linkuserdata.h"
+#include "xfa/fgas/layout/cfx_linkuserdata.h"
-CXFA_TextUserData::CXFA_TextUserData(
+CFX_TextUserData::CFX_TextUserData(
const RetainPtr<CFX_CSSComputedStyle>& pStyle)
: m_pStyle(pStyle) {}
-CXFA_TextUserData::CXFA_TextUserData(
+CFX_TextUserData::CFX_TextUserData(
const RetainPtr<CFX_CSSComputedStyle>& pStyle,
- const RetainPtr<CXFA_LinkUserData>& pLinkData)
+ const RetainPtr<CFX_LinkUserData>& pLinkData)
: m_pStyle(pStyle), m_pLinkData(pLinkData) {}
-CXFA_TextUserData::~CXFA_TextUserData() {}
+CFX_TextUserData::~CFX_TextUserData() {}
diff --git a/xfa/fgas/layout/cfx_textuserdata.h b/xfa/fgas/layout/cfx_textuserdata.h
new file mode 100644
index 0000000..d5aaed9
--- /dev/null
+++ b/xfa/fgas/layout/cfx_textuserdata.h
@@ -0,0 +1,30 @@
+// 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_FGAS_LAYOUT_CFX_TEXTUSERDATA_H_
+#define XFA_FGAS_LAYOUT_CFX_TEXTUSERDATA_H_
+
+#include "core/fxcrt/retain_ptr.h"
+
+class CFX_CSSComputedStyle;
+class CFX_LinkUserData;
+
+class CFX_TextUserData final : public Retainable {
+ public:
+ template <typename T, typename... Args>
+ friend RetainPtr<T> pdfium::MakeRetain(Args&&... args);
+
+ RetainPtr<CFX_CSSComputedStyle> m_pStyle;
+ RetainPtr<CFX_LinkUserData> m_pLinkData;
+
+ private:
+ explicit CFX_TextUserData(const RetainPtr<CFX_CSSComputedStyle>& pStyle);
+ CFX_TextUserData(const RetainPtr<CFX_CSSComputedStyle>& pStyle,
+ const RetainPtr<CFX_LinkUserData>& pLinkData);
+ ~CFX_TextUserData() override;
+};
+
+#endif // XFA_FGAS_LAYOUT_CFX_TEXTUSERDATA_H_
diff --git a/xfa/fxfa/BUILD.gn b/xfa/fxfa/BUILD.gn
index 2eb80ce..4f4e95f 100644
--- a/xfa/fxfa/BUILD.gn
+++ b/xfa/fxfa/BUILD.gn
@@ -72,8 +72,6 @@
"cxfa_fwltheme.h",
"cxfa_imagerenderer.cpp",
"cxfa_imagerenderer.h",
- "cxfa_linkuserdata.cpp",
- "cxfa_linkuserdata.h",
"cxfa_loadercontext.cpp",
"cxfa_loadercontext.h",
"cxfa_pieceline.cpp",
@@ -94,8 +92,6 @@
"cxfa_textprovider.h",
"cxfa_texttabstopscontext.cpp",
"cxfa_texttabstopscontext.h",
- "cxfa_textuserdata.cpp",
- "cxfa_textuserdata.h",
"fxfa.h",
"fxfa_basic.h",
]
@@ -121,8 +117,6 @@
]
allow_circular_includes_from = [
"../../fxjs",
- "../fgas",
- "../fgas/layout",
"../fwl",
"layout",
"parser",
diff --git a/xfa/fxfa/cxfa_fftext.cpp b/xfa/fxfa/cxfa_fftext.cpp
index cca6cc0..0db0aff 100644
--- a/xfa/fxfa/cxfa_fftext.cpp
+++ b/xfa/fxfa/cxfa_fftext.cpp
@@ -6,13 +6,13 @@
#include "xfa/fxfa/cxfa_fftext.h"
+#include "xfa/fgas/layout/cfx_linkuserdata.h"
#include "xfa/fwl/fwl_widgetdef.h"
#include "xfa/fwl/fwl_widgethit.h"
#include "xfa/fxfa/cxfa_ffapp.h"
#include "xfa/fxfa/cxfa_ffdoc.h"
#include "xfa/fxfa/cxfa_ffpageview.h"
#include "xfa/fxfa/cxfa_ffwidget.h"
-#include "xfa/fxfa/cxfa_linkuserdata.h"
#include "xfa/fxfa/cxfa_pieceline.h"
#include "xfa/fxfa/cxfa_textlayout.h"
#include "xfa/fxfa/cxfa_textpiece.h"
diff --git a/xfa/fxfa/cxfa_textlayout.cpp b/xfa/fxfa/cxfa_textlayout.cpp
index 0902bb7..2d6bce9 100644
--- a/xfa/fxfa/cxfa_textlayout.cpp
+++ b/xfa/fxfa/cxfa_textlayout.cpp
@@ -21,15 +21,15 @@
#include "third_party/base/stl_util.h"
#include "xfa/fde/cfde_textout.h"
#include "xfa/fgas/font/cfgas_gefont.h"
+#include "xfa/fgas/layout/cfx_linkuserdata.h"
#include "xfa/fgas/layout/cfx_rtfbreak.h"
-#include "xfa/fxfa/cxfa_linkuserdata.h"
+#include "xfa/fgas/layout/cfx_textuserdata.h"
#include "xfa/fxfa/cxfa_loadercontext.h"
#include "xfa/fxfa/cxfa_pieceline.h"
#include "xfa/fxfa/cxfa_textparsecontext.h"
#include "xfa/fxfa/cxfa_textpiece.h"
#include "xfa/fxfa/cxfa_textprovider.h"
#include "xfa/fxfa/cxfa_texttabstopscontext.h"
-#include "xfa/fxfa/cxfa_textuserdata.h"
#include "xfa/fxfa/parser/cxfa_font.h"
#include "xfa/fxfa/parser/cxfa_node.h"
#include "xfa/fxfa/parser/cxfa_para.h"
@@ -700,7 +700,7 @@
float* pLinePos,
const RetainPtr<CFX_CSSComputedStyle>& pParentStyle,
bool bSavePieces,
- RetainPtr<CXFA_LinkUserData> pLinkData,
+ RetainPtr<CFX_LinkUserData> pLinkData,
bool bEndBreak,
bool bIsOl,
int32_t iLiCount) {
@@ -761,7 +761,7 @@
WideString wsLinkContent = pElement->GetAttribute(L"href");
if (!wsLinkContent.IsEmpty()) {
pLinkData =
- pdfium::MakeRetain<CXFA_LinkUserData>(wsLinkContent.c_str());
+ pdfium::MakeRetain<CFX_LinkUserData>(wsLinkContent.c_str());
}
}
@@ -815,7 +815,7 @@
if (wsText.GetLength() > 0) {
if (!m_pLoader || m_pLoader->iChar == 0) {
- auto pUserData = pdfium::MakeRetain<CXFA_TextUserData>(
+ auto pUserData = pdfium::MakeRetain<CFX_TextUserData>(
bContentNode ? pParentStyle : pStyle, pLinkData);
m_pBreak->SetUserData(pUserData);
}
@@ -1005,7 +1005,7 @@
int32_t i = 0;
for (i = 0; i < iPieces; i++) {
const CFX_BreakPiece* pPiece = m_pBreak->GetBreakPieceUnstable(i);
- CXFA_TextUserData* pUserData = pPiece->m_pUserData.Get();
+ CFX_TextUserData* pUserData = pPiece->m_pUserData.Get();
if (pUserData)
pStyle = pUserData->m_pStyle;
float fVerScale = pPiece->m_iVerticalScale / 100.0f;
@@ -1057,7 +1057,7 @@
float fLineWidth = 0;
for (int32_t i = 0; i < iPieces; i++) {
const CFX_BreakPiece* pPiece = m_pBreak->GetBreakPieceUnstable(i);
- CXFA_TextUserData* pUserData = pPiece->m_pUserData.Get();
+ CFX_TextUserData* pUserData = pPiece->m_pUserData.Get();
if (pUserData)
pStyle = pUserData->m_pStyle;
float fVerScale = pPiece->m_iVerticalScale / 100.0f;
diff --git a/xfa/fxfa/cxfa_textlayout.h b/xfa/fxfa/cxfa_textlayout.h
index f09653b..b28be42 100644
--- a/xfa/fxfa/cxfa_textlayout.h
+++ b/xfa/fxfa/cxfa_textlayout.h
@@ -21,7 +21,7 @@
class CFX_RTFBreak;
class CFX_RenderDevice;
class CFX_XMLNode;
-class CXFA_LinkUserData;
+class CFX_LinkUserData;
class CXFA_Node;
class CXFA_PieceLine;
class CXFA_TextPiece;
@@ -86,7 +86,7 @@
float* pLinePos,
const RetainPtr<CFX_CSSComputedStyle>& pParentStyle,
bool bSavePieces,
- RetainPtr<CXFA_LinkUserData> pLinkData,
+ RetainPtr<CFX_LinkUserData> pLinkData,
bool bEndBreak,
bool bIsOl,
int32_t iLiCount);
diff --git a/xfa/fxfa/cxfa_textpiece.cpp b/xfa/fxfa/cxfa_textpiece.cpp
index d6a8d3a..166bb51 100644
--- a/xfa/fxfa/cxfa_textpiece.cpp
+++ b/xfa/fxfa/cxfa_textpiece.cpp
@@ -7,7 +7,7 @@
#include "xfa/fxfa/cxfa_textpiece.h"
#include "xfa/fgas/font/cfgas_gefont.h"
-#include "xfa/fxfa/cxfa_linkuserdata.h"
+#include "xfa/fgas/layout/cfx_linkuserdata.h"
CXFA_TextPiece::CXFA_TextPiece() {}
diff --git a/xfa/fxfa/cxfa_textpiece.h b/xfa/fxfa/cxfa_textpiece.h
index f115c41..d09d066 100644
--- a/xfa/fxfa/cxfa_textpiece.h
+++ b/xfa/fxfa/cxfa_textpiece.h
@@ -15,7 +15,7 @@
#include "xfa/fxfa/fxfa_basic.h"
class CFGAS_GEFont;
-class CXFA_LinkUserData;
+class CFX_LinkUserData;
class CXFA_TextPiece {
public:
@@ -35,7 +35,7 @@
float fFontSize;
CFX_RectF rtPiece;
RetainPtr<CFGAS_GEFont> pFont;
- RetainPtr<CXFA_LinkUserData> pLinkData;
+ RetainPtr<CFX_LinkUserData> pLinkData;
};
#endif // XFA_FXFA_CXFA_TEXTPIECE_H_
diff --git a/xfa/fxfa/cxfa_textuserdata.h b/xfa/fxfa/cxfa_textuserdata.h
deleted file mode 100644
index 1fe4fae..0000000
--- a/xfa/fxfa/cxfa_textuserdata.h
+++ /dev/null
@@ -1,30 +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_TEXTUSERDATA_H_
-#define XFA_FXFA_CXFA_TEXTUSERDATA_H_
-
-#include "core/fxcrt/retain_ptr.h"
-
-class CFX_CSSComputedStyle;
-class CXFA_LinkUserData;
-
-class CXFA_TextUserData final : public Retainable {
- public:
- template <typename T, typename... Args>
- friend RetainPtr<T> pdfium::MakeRetain(Args&&... args);
-
- RetainPtr<CFX_CSSComputedStyle> m_pStyle;
- RetainPtr<CXFA_LinkUserData> m_pLinkData;
-
- private:
- explicit CXFA_TextUserData(const RetainPtr<CFX_CSSComputedStyle>& pStyle);
- CXFA_TextUserData(const RetainPtr<CFX_CSSComputedStyle>& pStyle,
- const RetainPtr<CXFA_LinkUserData>& pLinkData);
- ~CXFA_TextUserData() override;
-};
-
-#endif // XFA_FXFA_CXFA_TEXTUSERDATA_H_