summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--BUILD.gn1
-rw-r--r--fxjs/xfa/cjx_layoutpseudomodel.cpp51
-rw-r--r--xfa/fxfa/cxfa_ffpageview.h5
-rw-r--r--xfa/fxfa/parser/cxfa_traversestrategy_contentlayoutitem.h30
-rw-r--r--xfa/fxfa/parser/cxfa_traversestrategy_layoutitem.h5
5 files changed, 29 insertions, 63 deletions
diff --git a/BUILD.gn b/BUILD.gn
index 09cf28597c..24dfd1df59 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -2759,7 +2759,6 @@ if (pdf_enable_xfa) {
"xfa/fxfa/parser/cxfa_traverse.cpp",
"xfa/fxfa/parser/cxfa_traverse.h",
"xfa/fxfa/parser/cxfa_traversestrategy_contentareacontainerlayoutitem.h",
- "xfa/fxfa/parser/cxfa_traversestrategy_contentlayoutitem.h",
"xfa/fxfa/parser/cxfa_traversestrategy_layoutitem.h",
"xfa/fxfa/parser/cxfa_traversestrategy_xfacontainernode.h",
"xfa/fxfa/parser/cxfa_traversestrategy_xfanode.h",
diff --git a/fxjs/xfa/cjx_layoutpseudomodel.cpp b/fxjs/xfa/cjx_layoutpseudomodel.cpp
index 4918349111..ea842c78e0 100644
--- a/fxjs/xfa/cjx_layoutpseudomodel.cpp
+++ b/fxjs/xfa/cjx_layoutpseudomodel.cpp
@@ -24,7 +24,7 @@
#include "xfa/fxfa/parser/cxfa_measurement.h"
#include "xfa/fxfa/parser/cxfa_node.h"
#include "xfa/fxfa/parser/cxfa_nodeiteratortemplate.h"
-#include "xfa/fxfa/parser/cxfa_traversestrategy_contentlayoutitem.h"
+#include "xfa/fxfa/parser/cxfa_traversestrategy_layoutitem.h"
const CJX_MethodSpec CJX_LayoutPseudoModel::MethodSpecs[] = {
{"absPage", absPage_static},
@@ -244,14 +244,13 @@ std::vector<CXFA_Node*> CJX_LayoutPseudoModel::GetObjArray(
if (pItem->GetFormNode()->GetElementType() == XFA_Element::ContentArea) {
retArray.push_back(pItem->GetFormNode());
if (!bOnPageArea) {
- CXFA_NodeIteratorTemplate<CXFA_ContentLayoutItem,
- CXFA_TraverseStrategy_ContentLayoutItem>
- iterator(static_cast<CXFA_ContentLayoutItem*>(pItem->m_pFirstChild));
- for (CXFA_ContentLayoutItem* pItemChild = iterator.GetCurrent();
- pItemChild; pItemChild = iterator.MoveToNext()) {
- if (!pItemChild->IsContentLayoutItem()) {
+ CXFA_LayoutItemIterator iterator(pItem->m_pFirstChild);
+ for (CXFA_LayoutItem* pChild = iterator.GetCurrent(); pChild;
+ pChild = iterator.MoveToNext()) {
+ CXFA_ContentLayoutItem* pItemChild = pChild->AsContentLayoutItem();
+ if (!pItemChild)
continue;
- }
+
XFA_Element eType = pItemChild->GetFormNode()->GetElementType();
if (eType != XFA_Element::Field && eType != XFA_Element::Draw &&
eType != XFA_Element::Subform && eType != XFA_Element::Area) {
@@ -266,14 +265,13 @@ std::vector<CXFA_Node*> CJX_LayoutPseudoModel::GetObjArray(
}
} else {
if (bOnPageArea) {
- CXFA_NodeIteratorTemplate<CXFA_ContentLayoutItem,
- CXFA_TraverseStrategy_ContentLayoutItem>
- iterator(static_cast<CXFA_ContentLayoutItem*>(pItem));
- for (CXFA_ContentLayoutItem* pItemChild = iterator.GetCurrent();
- pItemChild; pItemChild = iterator.MoveToNext()) {
- if (!pItemChild->IsContentLayoutItem()) {
+ CXFA_LayoutItemIterator iterator(pItem);
+ for (CXFA_LayoutItem* pChild = iterator.GetCurrent(); pChild;
+ pChild = iterator.MoveToNext()) {
+ CXFA_ContentLayoutItem* pItemChild = pChild->AsContentLayoutItem();
+ if (!pItemChild)
continue;
- }
+
XFA_Element eType = pItemChild->GetFormNode()->GetElementType();
if (eType != XFA_Element::Field && eType != XFA_Element::Draw &&
eType != XFA_Element::Subform && eType != XFA_Element::Area) {
@@ -281,6 +279,7 @@ std::vector<CXFA_Node*> CJX_LayoutPseudoModel::GetObjArray(
}
if (pdfium::ContainsValue(formItems, pItemChild->GetFormNode()))
continue;
+
formItems.insert(pItemChild->GetFormNode());
retArray.push_back(pItemChild->GetFormNode());
}
@@ -305,12 +304,11 @@ std::vector<CXFA_Node*> CJX_LayoutPseudoModel::GetObjArray(
pItem = pItem->m_pNextSibling) {
if (pItem->GetFormNode()->GetElementType() == XFA_Element::ContentArea) {
if (!bOnPageArea) {
- CXFA_NodeIteratorTemplate<CXFA_ContentLayoutItem,
- CXFA_TraverseStrategy_ContentLayoutItem>
- iterator(static_cast<CXFA_ContentLayoutItem*>(pItem->m_pFirstChild));
- for (CXFA_ContentLayoutItem* pItemChild = iterator.GetCurrent();
- pItemChild; pItemChild = iterator.MoveToNext()) {
- if (!pItemChild->IsContentLayoutItem())
+ CXFA_LayoutItemIterator iterator(pItem->m_pFirstChild);
+ for (CXFA_LayoutItem* pChild = iterator.GetCurrent(); pChild;
+ pChild = iterator.MoveToNext()) {
+ CXFA_ContentLayoutItem* pItemChild = pChild->AsContentLayoutItem();
+ if (!pItemChild)
continue;
if (pItemChild->GetFormNode()->GetElementType() != eType)
continue;
@@ -323,12 +321,11 @@ std::vector<CXFA_Node*> CJX_LayoutPseudoModel::GetObjArray(
}
} else {
if (bOnPageArea) {
- CXFA_NodeIteratorTemplate<CXFA_ContentLayoutItem,
- CXFA_TraverseStrategy_ContentLayoutItem>
- iterator(static_cast<CXFA_ContentLayoutItem*>(pItem));
- for (CXFA_ContentLayoutItem* pItemChild = iterator.GetCurrent();
- pItemChild; pItemChild = iterator.MoveToNext()) {
- if (!pItemChild->IsContentLayoutItem())
+ CXFA_LayoutItemIterator iterator(pItem);
+ for (CXFA_LayoutItem* pChild = iterator.GetCurrent(); pChild;
+ pChild = iterator.MoveToNext()) {
+ CXFA_ContentLayoutItem* pItemChild = pChild->AsContentLayoutItem();
+ if (!pItemChild)
continue;
if (pItemChild->GetFormNode()->GetElementType() != eType)
continue;
diff --git a/xfa/fxfa/cxfa_ffpageview.h b/xfa/fxfa/cxfa_ffpageview.h
index f3ae069638..daf2b1933e 100644
--- a/xfa/fxfa/cxfa_ffpageview.h
+++ b/xfa/fxfa/cxfa_ffpageview.h
@@ -12,7 +12,6 @@
#include "xfa/fxfa/parser/cxfa_containerlayoutitem.h"
#include "xfa/fxfa/parser/cxfa_contentlayoutitem.h"
-#include "xfa/fxfa/parser/cxfa_nodeiteratortemplate.h"
#include "xfa/fxfa/parser/cxfa_traversestrategy_layoutitem.h"
class CXFA_FFWidget;
@@ -34,10 +33,6 @@ class CXFA_FFPageView : public CXFA_ContainerLayoutItem {
UnownedPtr<CXFA_FFDocView> const m_pDocView;
};
-using CXFA_LayoutItemIterator =
- CXFA_NodeIteratorTemplate<CXFA_LayoutItem,
- CXFA_TraverseStrategy_LayoutItem>;
-
class CXFA_FFPageWidgetIterator : public IXFA_WidgetIterator {
public:
CXFA_FFPageWidgetIterator(CXFA_FFPageView* pPageView, uint32_t dwFilter);
diff --git a/xfa/fxfa/parser/cxfa_traversestrategy_contentlayoutitem.h b/xfa/fxfa/parser/cxfa_traversestrategy_contentlayoutitem.h
deleted file mode 100644
index de0d52ab10..0000000000
--- a/xfa/fxfa/parser/cxfa_traversestrategy_contentlayoutitem.h
+++ /dev/null
@@ -1,30 +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_TRAVERSESTRATEGY_CONTENTLAYOUTITEM_H_
-#define XFA_FXFA_PARSER_CXFA_TRAVERSESTRATEGY_CONTENTLAYOUTITEM_H_
-
-#include "xfa/fxfa/parser/cxfa_contentlayoutitem.h"
-
-class CXFA_TraverseStrategy_ContentLayoutItem {
- public:
- static CXFA_ContentLayoutItem* GetFirstChild(
- CXFA_ContentLayoutItem* pLayoutItem) {
- return static_cast<CXFA_ContentLayoutItem*>(pLayoutItem->m_pFirstChild);
- }
-
- static CXFA_ContentLayoutItem* GetNextSibling(
- CXFA_ContentLayoutItem* pLayoutItem) {
- return static_cast<CXFA_ContentLayoutItem*>(pLayoutItem->m_pNextSibling);
- }
-
- static CXFA_ContentLayoutItem* GetParent(
- CXFA_ContentLayoutItem* pLayoutItem) {
- return static_cast<CXFA_ContentLayoutItem*>(pLayoutItem->m_pParent);
- }
-};
-
-#endif // XFA_FXFA_PARSER_CXFA_TRAVERSESTRATEGY_CONTENTLAYOUTITEM_H_
diff --git a/xfa/fxfa/parser/cxfa_traversestrategy_layoutitem.h b/xfa/fxfa/parser/cxfa_traversestrategy_layoutitem.h
index 7b39826130..0371eef449 100644
--- a/xfa/fxfa/parser/cxfa_traversestrategy_layoutitem.h
+++ b/xfa/fxfa/parser/cxfa_traversestrategy_layoutitem.h
@@ -8,6 +8,7 @@
#define XFA_FXFA_PARSER_CXFA_TRAVERSESTRATEGY_LAYOUTITEM_H_
#include "xfa/fxfa/parser/cxfa_layoutitem.h"
+#include "xfa/fxfa/parser/cxfa_nodeiteratortemplate.h"
class CXFA_TraverseStrategy_LayoutItem {
public:
@@ -22,4 +23,8 @@ class CXFA_TraverseStrategy_LayoutItem {
}
};
+using CXFA_LayoutItemIterator =
+ CXFA_NodeIteratorTemplate<CXFA_LayoutItem,
+ CXFA_TraverseStrategy_LayoutItem>;
+
#endif // XFA_FXFA_PARSER_CXFA_TRAVERSESTRATEGY_LAYOUTITEM_H_