1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2014 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6*3ac0a46fSAndroid Build Coastguard Worker 7*3ac0a46fSAndroid Build Coastguard Worker #ifndef XFA_FXFA_CXFA_FFNOTIFY_H_ 8*3ac0a46fSAndroid Build Coastguard Worker #define XFA_FXFA_CXFA_FFNOTIFY_H_ 9*3ac0a46fSAndroid Build Coastguard Worker 10*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/mask.h" 11*3ac0a46fSAndroid Build Coastguard Worker #include "fxjs/gc/heap.h" 12*3ac0a46fSAndroid Build Coastguard Worker #include "v8/include/cppgc/garbage-collected.h" 13*3ac0a46fSAndroid Build Coastguard Worker #include "v8/include/cppgc/member.h" 14*3ac0a46fSAndroid Build Coastguard Worker #include "v8/include/cppgc/visitor.h" 15*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fxfa/cxfa_eventparam.h" 16*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fxfa/cxfa_ffapp.h" 17*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fxfa/cxfa_ffdoc.h" 18*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fxfa/cxfa_ffdocview.h" 19*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fxfa/parser/cxfa_document.h" 20*3ac0a46fSAndroid Build Coastguard Worker 21*3ac0a46fSAndroid Build Coastguard Worker class CXFA_LayoutItem; 22*3ac0a46fSAndroid Build Coastguard Worker class CXFA_LayoutProcessor; 23*3ac0a46fSAndroid Build Coastguard Worker class CXFA_Script; 24*3ac0a46fSAndroid Build Coastguard Worker class CXFA_ViewLayoutItem; 25*3ac0a46fSAndroid Build Coastguard Worker 26*3ac0a46fSAndroid Build Coastguard Worker class CXFA_FFNotify : public cppgc::GarbageCollected<CXFA_FFNotify> { 27*3ac0a46fSAndroid Build Coastguard Worker public: 28*3ac0a46fSAndroid Build Coastguard Worker CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED; 29*3ac0a46fSAndroid Build Coastguard Worker ~CXFA_FFNotify(); 30*3ac0a46fSAndroid Build Coastguard Worker 31*3ac0a46fSAndroid Build Coastguard Worker void Trace(cppgc::Visitor* visitor) const; 32*3ac0a46fSAndroid Build Coastguard Worker 33*3ac0a46fSAndroid Build Coastguard Worker void OnPageViewEvent(CXFA_ViewLayoutItem* pSender, 34*3ac0a46fSAndroid Build Coastguard Worker CXFA_FFDoc::PageViewEvent eEvent); 35*3ac0a46fSAndroid Build Coastguard Worker 36*3ac0a46fSAndroid Build Coastguard Worker void OnWidgetListItemAdded(CXFA_Node* pSender, 37*3ac0a46fSAndroid Build Coastguard Worker const WideString& wsLabel, 38*3ac0a46fSAndroid Build Coastguard Worker int32_t iIndex); 39*3ac0a46fSAndroid Build Coastguard Worker void OnWidgetListItemRemoved(CXFA_Node* pSender, int32_t iIndex); 40*3ac0a46fSAndroid Build Coastguard Worker 41*3ac0a46fSAndroid Build Coastguard Worker // Node events 42*3ac0a46fSAndroid Build Coastguard Worker void OnNodeReady(CXFA_Node* pNode); 43*3ac0a46fSAndroid Build Coastguard Worker void OnValueChanging(CXFA_Node* pSender, XFA_Attribute eAttr); 44*3ac0a46fSAndroid Build Coastguard Worker void OnValueChanged(CXFA_Node* pSender, 45*3ac0a46fSAndroid Build Coastguard Worker XFA_Attribute eAttr, 46*3ac0a46fSAndroid Build Coastguard Worker CXFA_Node* pParentNode, 47*3ac0a46fSAndroid Build Coastguard Worker CXFA_Node* pWidgetNode); 48*3ac0a46fSAndroid Build Coastguard Worker void OnContainerChanged(); 49*3ac0a46fSAndroid Build Coastguard Worker void OnChildAdded(CXFA_Node* pSender); 50*3ac0a46fSAndroid Build Coastguard Worker void OnChildRemoved(); 51*3ac0a46fSAndroid Build Coastguard Worker 52*3ac0a46fSAndroid Build Coastguard Worker // These two return new views/widgets from cppgc heap. 53*3ac0a46fSAndroid Build Coastguard Worker CXFA_FFPageView* OnCreateViewLayoutItem(CXFA_Node* pNode); 54*3ac0a46fSAndroid Build Coastguard Worker CXFA_FFWidget* OnCreateContentLayoutItem(CXFA_Node* pNode); 55*3ac0a46fSAndroid Build Coastguard Worker 56*3ac0a46fSAndroid Build Coastguard Worker void OnLayoutItemAdded(CXFA_LayoutProcessor* pLayout, 57*3ac0a46fSAndroid Build Coastguard Worker CXFA_LayoutItem* pSender, 58*3ac0a46fSAndroid Build Coastguard Worker int32_t iPageIdx, 59*3ac0a46fSAndroid Build Coastguard Worker Mask<XFA_WidgetStatus> dwStatus); 60*3ac0a46fSAndroid Build Coastguard Worker void OnLayoutItemRemoving(CXFA_LayoutProcessor* pLayout, 61*3ac0a46fSAndroid Build Coastguard Worker CXFA_LayoutItem* pSender); 62*3ac0a46fSAndroid Build Coastguard Worker void StartFieldDrawLayout(CXFA_Node* pItem, 63*3ac0a46fSAndroid Build Coastguard Worker float* pCalcWidth, 64*3ac0a46fSAndroid Build Coastguard Worker float* pCalcHeight); 65*3ac0a46fSAndroid Build Coastguard Worker bool RunScript(CXFA_Script* pScript, CXFA_Node* pFormItem); 66*3ac0a46fSAndroid Build Coastguard Worker XFA_EventError ExecEventByDeepFirst(CXFA_Node* pFormNode, 67*3ac0a46fSAndroid Build Coastguard Worker XFA_EVENTTYPE eEventType, 68*3ac0a46fSAndroid Build Coastguard Worker bool bIsFormReady, 69*3ac0a46fSAndroid Build Coastguard Worker bool bRecursive); 70*3ac0a46fSAndroid Build Coastguard Worker void AddCalcValidate(CXFA_Node* pNode); GetFFDoc()71*3ac0a46fSAndroid Build Coastguard Worker CXFA_FFDoc* GetFFDoc() const { return m_pDoc; } 72*3ac0a46fSAndroid Build Coastguard Worker CXFA_FFApp::CallbackIface* GetAppProvider(); 73*3ac0a46fSAndroid Build Coastguard Worker void HandleWidgetEvent(CXFA_Node* pNode, CXFA_EventParam* pParam); 74*3ac0a46fSAndroid Build Coastguard Worker void OpenDropDownList(CXFA_Node* pNode); 75*3ac0a46fSAndroid Build Coastguard Worker void ResetData(CXFA_Node* pNode); 76*3ac0a46fSAndroid Build Coastguard Worker CXFA_FFDocView::LayoutStatus GetLayoutStatus(); 77*3ac0a46fSAndroid Build Coastguard Worker void RunNodeInitialize(CXFA_Node* pNode); 78*3ac0a46fSAndroid Build Coastguard Worker void RunSubformIndexChange(CXFA_Subform* pSubformNode); 79*3ac0a46fSAndroid Build Coastguard Worker CXFA_Node* GetFocusWidgetNode(); 80*3ac0a46fSAndroid Build Coastguard Worker void SetFocusWidgetNode(CXFA_Node* pNode); 81*3ac0a46fSAndroid Build Coastguard Worker 82*3ac0a46fSAndroid Build Coastguard Worker private: 83*3ac0a46fSAndroid Build Coastguard Worker explicit CXFA_FFNotify(CXFA_FFDoc* pDoc); 84*3ac0a46fSAndroid Build Coastguard Worker 85*3ac0a46fSAndroid Build Coastguard Worker cppgc::Member<CXFA_FFDoc> const m_pDoc; 86*3ac0a46fSAndroid Build Coastguard Worker }; 87*3ac0a46fSAndroid Build Coastguard Worker 88*3ac0a46fSAndroid Build Coastguard Worker #endif // XFA_FXFA_CXFA_FFNOTIFY_H_ 89