diff options
Diffstat (limited to 'xfa')
-rw-r--r-- | xfa/fxfa/cxfa_ffnotify.cpp | 2 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_node.cpp | 4 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_node.h | 12 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_object.cpp | 5 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_object.h | 5 |
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); |