summaryrefslogtreecommitdiff
path: root/xfa
diff options
context:
space:
mode:
Diffstat (limited to 'xfa')
-rw-r--r--xfa/fxfa/cxfa_ffnotify.cpp2
-rw-r--r--xfa/fxfa/parser/cxfa_node.cpp4
-rw-r--r--xfa/fxfa/parser/cxfa_node.h12
-rw-r--r--xfa/fxfa/parser/cxfa_object.cpp5
-rw-r--r--xfa/fxfa/parser/cxfa_object.h5
5 files changed, 22 insertions, 6 deletions
diff --git a/xfa/fxfa/cxfa_ffnotify.cpp b/xfa/fxfa/cxfa_ffnotify.cpp
index a85fef96b0..21273f246d 100644
--- a/xfa/fxfa/cxfa_ffnotify.cpp
+++ b/xfa/fxfa/cxfa_ffnotify.cpp
@@ -340,7 +340,7 @@ void CXFA_FFNotify::OnNodeReady(CXFA_Node* pNode) {
XFA_Element eType = pNode->GetElementType();
if (XFA_IsCreateWidget(eType)) {
- pNode->JSObject()->SetWidgetAcc(pdfium::MakeUnique<CXFA_WidgetAcc>(pNode));
+ pNode->CreateWidgetAcc();
return;
}
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp
index 86d2300cb4..6021ec377d 100644
--- a/xfa/fxfa/parser/cxfa_node.cpp
+++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -565,10 +565,6 @@ bool CXFA_Node::HasBindItem() {
return GetPacketType() == XFA_PacketType::Datasets && GetBindingNode();
}
-CXFA_WidgetAcc* CXFA_Node::GetWidgetAcc() {
- return JSObject()->GetWidgetAcc();
-}
-
CXFA_WidgetAcc* CXFA_Node::GetContainerWidgetAcc() {
if (GetPacketType() != XFA_PacketType::Form)
return nullptr;
diff --git a/xfa/fxfa/parser/cxfa_node.h b/xfa/fxfa/parser/cxfa_node.h
index 4def12caaf..c2edc70ed9 100644
--- a/xfa/fxfa/parser/cxfa_node.h
+++ b/xfa/fxfa/parser/cxfa_node.h
@@ -13,12 +13,23 @@
#include <vector>
#include "core/fxcrt/fx_string.h"
+#include "core/fxcrt/ifx_locale.h"
+#include "core/fxge/fx_dib.h"
#include "fxjs/xfa/cjx_node.h"
#include "third_party/base/optional.h"
#include "xfa/fxfa/parser/cxfa_object.h"
class CFX_XMLNode;
+class CXFA_Bind;
+class CXFA_Border;
+class CXFA_Calculate;
+class CXFA_Caption;
+class CXFA_Font;
+class CXFA_Margin;
class CXFA_Occur;
+class CXFA_Para;
+class CXFA_Validate;
+class CXFA_Value;
class CXFA_WidgetAcc;
class IXFA_Locale;
@@ -182,7 +193,6 @@ class CXFA_Node : public CXFA_Object {
int32_t AddBindItem(CXFA_Node* pFormNode);
int32_t RemoveBindItem(CXFA_Node* pFormNode);
bool HasBindItem();
- CXFA_WidgetAcc* GetWidgetAcc();
CXFA_WidgetAcc* GetContainerWidgetAcc();
IFX_Locale* GetLocale();
Optional<WideString> GetLocaleName();
diff --git a/xfa/fxfa/parser/cxfa_object.cpp b/xfa/fxfa/parser/cxfa_object.cpp
index 666186c4ba..7c73db0ff5 100644
--- a/xfa/fxfa/parser/cxfa_object.cpp
+++ b/xfa/fxfa/parser/cxfa_object.cpp
@@ -11,6 +11,7 @@
#include "core/fxcrt/fx_extension.h"
#include "fxjs/cfxjse_engine.h"
#include "fxjs/cfxjse_value.h"
+#include "third_party/base/ptr_util.h"
#include "xfa/fxfa/cxfa_ffnotify.h"
#include "xfa/fxfa/parser/cxfa_document.h"
#include "xfa/fxfa/parser/cxfa_node.h"
@@ -55,6 +56,10 @@ const CXFA_TreeList* CXFA_Object::AsTreeList() const {
return IsTreeList() ? static_cast<const CXFA_TreeList*>(this) : nullptr;
}
+void CXFA_Object::CreateWidgetAcc() {
+ acc_ = pdfium::MakeUnique<CXFA_WidgetAcc>(AsNode());
+}
+
CXFA_Node* ToNode(CXFA_Object* pObj) {
return pObj ? pObj->AsNode() : nullptr;
}
diff --git a/xfa/fxfa/parser/cxfa_object.h b/xfa/fxfa/parser/cxfa_object.h
index 0b17273316..a58a922ea2 100644
--- a/xfa/fxfa/parser/cxfa_object.h
+++ b/xfa/fxfa/parser/cxfa_object.h
@@ -31,6 +31,7 @@ class CJX_Object;
class CXFA_Document;
class CXFA_Node;
class CXFA_TreeList;
+class CXFA_WidgetAcc;
class CXFA_Object : public CFXJSE_HostObject {
public:
@@ -71,6 +72,9 @@ class CXFA_Object : public CFXJSE_HostObject {
CJX_Object* JSObject() { return m_pJSObject.get(); }
const CJX_Object* JSObject() const { return m_pJSObject.get(); }
+ void CreateWidgetAcc();
+ CXFA_WidgetAcc* GetWidgetAcc() { return acc_.get(); }
+
XFA_Element GetElementType() const { return m_elementType; }
WideStringView GetClassName() const { return m_elementName; }
uint32_t GetClassHashCode() const { return m_elementNameHash; }
@@ -92,6 +96,7 @@ class CXFA_Object : public CFXJSE_HostObject {
const WideStringView m_elementName;
std::unique_ptr<CJX_Object> m_pJSObject;
+ std::unique_ptr<CXFA_WidgetAcc> acc_;
};
CXFA_Node* ToNode(CXFA_Object* pObj);