diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2018-01-08 15:12:10 -0500 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-01-08 20:34:05 +0000 |
commit | 94fc2af0c9a800f39e4dbcac859f1ad490f7d725 (patch) | |
tree | 3543b5cd38104b00027adde5a8bfe1f5152360c1 /xfa/fxfa | |
parent | 625de446907e8720f0114422683b78a898dd6878 (diff) | |
download | pdfium-94fc2af0c9a800f39e4dbcac859f1ad490f7d725.tar.xz |
Move CXFA_WidgetAcc from CJX_Object to CXFA_Object
This CL change the CJX code to not store the pointer to the
CXFA_WidgetAcc. If needed the CJX object gets the Acc from the Node
itself.
Change-Id: I5a5a500b8fbc1749d362346d72678acd5250d112
Reviewed-on: https://pdfium-review.googlesource.com/22411
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'xfa/fxfa')
-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); |