xref: /aosp_15_r20/external/pdfium/xfa/fxfa/cxfa_ffnotify.h (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
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