xref: /aosp_15_r20/external/pdfium/xfa/fxfa/cxfa_ffapp.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_FFAPP_H_
8*3ac0a46fSAndroid Build Coastguard Worker #define XFA_FXFA_CXFA_FFAPP_H_
9*3ac0a46fSAndroid Build Coastguard Worker 
10*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/unowned_ptr.h"
11*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/widestring.h"
12*3ac0a46fSAndroid Build Coastguard Worker #include "fxjs/gc/heap.h"
13*3ac0a46fSAndroid Build Coastguard Worker #include "v8/include/cppgc/garbage-collected.h"
14*3ac0a46fSAndroid Build Coastguard Worker #include "v8/include/cppgc/member.h"
15*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fwl/cfwl_app.h"
16*3ac0a46fSAndroid Build Coastguard Worker 
17*3ac0a46fSAndroid Build Coastguard Worker class CFWL_WidgetMgr;
18*3ac0a46fSAndroid Build Coastguard Worker class CXFA_FFDoc;
19*3ac0a46fSAndroid Build Coastguard Worker class CXFA_FWLAdapterWidgetMgr;
20*3ac0a46fSAndroid Build Coastguard Worker class CXFA_FWLTheme;
21*3ac0a46fSAndroid Build Coastguard Worker class CXFA_FontMgr;
22*3ac0a46fSAndroid Build Coastguard Worker class IFX_SeekableReadStream;
23*3ac0a46fSAndroid Build Coastguard Worker 
24*3ac0a46fSAndroid Build Coastguard Worker class CXFA_FFApp final : public cppgc::GarbageCollected<CXFA_FFApp>,
25*3ac0a46fSAndroid Build Coastguard Worker                          public CFWL_App::AdapterIface {
26*3ac0a46fSAndroid Build Coastguard Worker  public:
27*3ac0a46fSAndroid Build Coastguard Worker   class CallbackIface {
28*3ac0a46fSAndroid Build Coastguard Worker    public:
29*3ac0a46fSAndroid Build Coastguard Worker     virtual ~CallbackIface() = default;
30*3ac0a46fSAndroid Build Coastguard Worker 
31*3ac0a46fSAndroid Build Coastguard Worker     /**
32*3ac0a46fSAndroid Build Coastguard Worker      * Returns the language of the running host application. Such as zh_CN
33*3ac0a46fSAndroid Build Coastguard Worker      */
34*3ac0a46fSAndroid Build Coastguard Worker     virtual WideString GetLanguage() = 0;
35*3ac0a46fSAndroid Build Coastguard Worker 
36*3ac0a46fSAndroid Build Coastguard Worker     /**
37*3ac0a46fSAndroid Build Coastguard Worker      * Returns the platform of the machine running the script. Such as WIN
38*3ac0a46fSAndroid Build Coastguard Worker      */
39*3ac0a46fSAndroid Build Coastguard Worker     virtual WideString GetPlatform() = 0;
40*3ac0a46fSAndroid Build Coastguard Worker 
41*3ac0a46fSAndroid Build Coastguard Worker     /**
42*3ac0a46fSAndroid Build Coastguard Worker      * Get application name, such as Phantom.
43*3ac0a46fSAndroid Build Coastguard Worker      */
44*3ac0a46fSAndroid Build Coastguard Worker     virtual WideString GetAppName() = 0;
45*3ac0a46fSAndroid Build Coastguard Worker 
46*3ac0a46fSAndroid Build Coastguard Worker     /**
47*3ac0a46fSAndroid Build Coastguard Worker      * Get application message box title.
48*3ac0a46fSAndroid Build Coastguard Worker      */
49*3ac0a46fSAndroid Build Coastguard Worker     virtual WideString GetAppTitle() const = 0;
50*3ac0a46fSAndroid Build Coastguard Worker 
51*3ac0a46fSAndroid Build Coastguard Worker     /**
52*3ac0a46fSAndroid Build Coastguard Worker      * Causes the system to play a sound.
53*3ac0a46fSAndroid Build Coastguard Worker      * @param[in] dwType The system code for the appropriate sound.0 (Error)1
54*3ac0a46fSAndroid Build Coastguard Worker      * (Warning)2 (Question)3 (Status)4 (Default)
55*3ac0a46fSAndroid Build Coastguard Worker      */
56*3ac0a46fSAndroid Build Coastguard Worker     virtual void Beep(uint32_t dwType) = 0;
57*3ac0a46fSAndroid Build Coastguard Worker 
58*3ac0a46fSAndroid Build Coastguard Worker     /**
59*3ac0a46fSAndroid Build Coastguard Worker      * Displays a message box.
60*3ac0a46fSAndroid Build Coastguard Worker      * @param[in] wsMessage    - Message string to display in box.
61*3ac0a46fSAndroid Build Coastguard Worker      * @param[in] wsTitle      - Title string for box.
62*3ac0a46fSAndroid Build Coastguard Worker      * @param[in] dwIconType   - Icon type, refer to XFA_MBICON.
63*3ac0a46fSAndroid Build Coastguard Worker      * @param[in] dwButtonType - Button type, refer to XFA_MESSAGEBUTTON.
64*3ac0a46fSAndroid Build Coastguard Worker      * @return A valid integer representing the value of the button pressed by
65*3ac0a46fSAndroid Build Coastguard Worker      * the user, refer to XFA_ID.
66*3ac0a46fSAndroid Build Coastguard Worker      */
67*3ac0a46fSAndroid Build Coastguard Worker     virtual int32_t MsgBox(const WideString& wsMessage,
68*3ac0a46fSAndroid Build Coastguard Worker                            const WideString& wsTitle,
69*3ac0a46fSAndroid Build Coastguard Worker                            uint32_t dwIconType,
70*3ac0a46fSAndroid Build Coastguard Worker                            uint32_t dwButtonType) = 0;
71*3ac0a46fSAndroid Build Coastguard Worker 
72*3ac0a46fSAndroid Build Coastguard Worker     /**
73*3ac0a46fSAndroid Build Coastguard Worker      * Get a response from the user.
74*3ac0a46fSAndroid Build Coastguard Worker      * @param[in] wsQuestion      - Message string to display in box.
75*3ac0a46fSAndroid Build Coastguard Worker      * @param[in] wsTitle         - Title string for box.
76*3ac0a46fSAndroid Build Coastguard Worker      * @param[in] wsDefaultAnswer - Initial contents for answer.
77*3ac0a46fSAndroid Build Coastguard Worker      * @param[in] bMask           - Mask the user input with asterisks when
78*3ac0a46fSAndroid Build Coastguard Worker      * true,
79*3ac0a46fSAndroid Build Coastguard Worker      * @return A string containing the user's response.
80*3ac0a46fSAndroid Build Coastguard Worker      */
81*3ac0a46fSAndroid Build Coastguard Worker     virtual WideString Response(const WideString& wsQuestion,
82*3ac0a46fSAndroid Build Coastguard Worker                                 const WideString& wsTitle,
83*3ac0a46fSAndroid Build Coastguard Worker                                 const WideString& wsDefaultAnswer,
84*3ac0a46fSAndroid Build Coastguard Worker                                 bool bMask) = 0;
85*3ac0a46fSAndroid Build Coastguard Worker 
86*3ac0a46fSAndroid Build Coastguard Worker     /**
87*3ac0a46fSAndroid Build Coastguard Worker      * Download something from somewhere.
88*3ac0a46fSAndroid Build Coastguard Worker      * @param[in] wsURL - http, ftp, such as
89*3ac0a46fSAndroid Build Coastguard Worker      * "http://www.w3.org/TR/REC-xml-names/".
90*3ac0a46fSAndroid Build Coastguard Worker      */
91*3ac0a46fSAndroid Build Coastguard Worker     virtual RetainPtr<IFX_SeekableReadStream> DownloadURL(
92*3ac0a46fSAndroid Build Coastguard Worker         const WideString& wsURL) = 0;
93*3ac0a46fSAndroid Build Coastguard Worker 
94*3ac0a46fSAndroid Build Coastguard Worker     /**
95*3ac0a46fSAndroid Build Coastguard Worker      * POST data to the given url.
96*3ac0a46fSAndroid Build Coastguard Worker      * @param[in] wsURL         the URL being uploaded.
97*3ac0a46fSAndroid Build Coastguard Worker      * @param[in] wsData        the data being uploaded.
98*3ac0a46fSAndroid Build Coastguard Worker      * @param[in] wsContentType the content type of data including text/html,
99*3ac0a46fSAndroid Build Coastguard Worker      * text/xml, text/plain, multipart/form-data,
100*3ac0a46fSAndroid Build Coastguard Worker      *                          application/x-www-form-urlencoded,
101*3ac0a46fSAndroid Build Coastguard Worker      * application/octet-stream, any valid MIME type.
102*3ac0a46fSAndroid Build Coastguard Worker      * @param[in] wsEncode      the encode of data including UTF-8, UTF-16,
103*3ac0a46fSAndroid Build Coastguard Worker      * ISO8859-1, any recognized [IANA]character encoding
104*3ac0a46fSAndroid Build Coastguard Worker      * @param[in] wsHeader      any additional HTTP headers to be included in
105*3ac0a46fSAndroid Build Coastguard Worker      * the post.
106*3ac0a46fSAndroid Build Coastguard Worker      * @param[out] wsResponse   decoded response from server.
107*3ac0a46fSAndroid Build Coastguard Worker      * @return true Server permitted the post request, false otherwise.
108*3ac0a46fSAndroid Build Coastguard Worker      */
109*3ac0a46fSAndroid Build Coastguard Worker     virtual bool PostRequestURL(const WideString& wsURL,
110*3ac0a46fSAndroid Build Coastguard Worker                                 const WideString& wsData,
111*3ac0a46fSAndroid Build Coastguard Worker                                 const WideString& wsContentType,
112*3ac0a46fSAndroid Build Coastguard Worker                                 const WideString& wsEncode,
113*3ac0a46fSAndroid Build Coastguard Worker                                 const WideString& wsHeader,
114*3ac0a46fSAndroid Build Coastguard Worker                                 WideString& wsResponse) = 0;
115*3ac0a46fSAndroid Build Coastguard Worker 
116*3ac0a46fSAndroid Build Coastguard Worker     /**
117*3ac0a46fSAndroid Build Coastguard Worker      * PUT data to the given url.
118*3ac0a46fSAndroid Build Coastguard Worker      * @param[in] wsURL         the URL being uploaded.
119*3ac0a46fSAndroid Build Coastguard Worker      * @param[in] wsData            the data being uploaded.
120*3ac0a46fSAndroid Build Coastguard Worker      * @param[in] wsEncode      the encode of data including UTF-8, UTF-16,
121*3ac0a46fSAndroid Build Coastguard Worker      * ISO8859-1, any recognized [IANA]character encoding
122*3ac0a46fSAndroid Build Coastguard Worker      * @return true Server permitted the post request, false otherwise.
123*3ac0a46fSAndroid Build Coastguard Worker      */
124*3ac0a46fSAndroid Build Coastguard Worker     virtual bool PutRequestURL(const WideString& wsURL,
125*3ac0a46fSAndroid Build Coastguard Worker                                const WideString& wsData,
126*3ac0a46fSAndroid Build Coastguard Worker                                const WideString& wsEncode) = 0;
127*3ac0a46fSAndroid Build Coastguard Worker 
128*3ac0a46fSAndroid Build Coastguard Worker     virtual CFX_Timer::HandlerIface* GetTimerHandler() const = 0;
129*3ac0a46fSAndroid Build Coastguard Worker     virtual cppgc::Heap* GetGCHeap() const = 0;
130*3ac0a46fSAndroid Build Coastguard Worker   };
131*3ac0a46fSAndroid Build Coastguard Worker 
132*3ac0a46fSAndroid Build Coastguard Worker   CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED;
133*3ac0a46fSAndroid Build Coastguard Worker   ~CXFA_FFApp() override;
134*3ac0a46fSAndroid Build Coastguard Worker 
135*3ac0a46fSAndroid Build Coastguard Worker   // CFWL_App::AdapterIface:
136*3ac0a46fSAndroid Build Coastguard Worker   void Trace(cppgc::Visitor* visitor) const override;
137*3ac0a46fSAndroid Build Coastguard Worker   CFWL_WidgetMgr::AdapterIface* GetWidgetMgrAdapter() override;
138*3ac0a46fSAndroid Build Coastguard Worker   CFX_Timer::HandlerIface* GetTimerHandler() override;
139*3ac0a46fSAndroid Build Coastguard Worker   IFWL_ThemeProvider* GetThemeProvider() override;
140*3ac0a46fSAndroid Build Coastguard Worker   cppgc::Heap* GetHeap() override;
141*3ac0a46fSAndroid Build Coastguard Worker 
142*3ac0a46fSAndroid Build Coastguard Worker   bool LoadFWLTheme(CXFA_FFDoc* doc);
GetFWLWidgetMgr()143*3ac0a46fSAndroid Build Coastguard Worker   CFWL_WidgetMgr* GetFWLWidgetMgr() const { return m_pFWLApp->GetWidgetMgr(); }
GetAppProvider()144*3ac0a46fSAndroid Build Coastguard Worker   CallbackIface* GetAppProvider() const { return m_pProvider; }
GetFWLApp()145*3ac0a46fSAndroid Build Coastguard Worker   CFWL_App* GetFWLApp() const { return m_pFWLApp; }
GetXFAFontMgr()146*3ac0a46fSAndroid Build Coastguard Worker   CXFA_FontMgr* GetXFAFontMgr() const { return m_pXFAFontMgr; }
147*3ac0a46fSAndroid Build Coastguard Worker 
148*3ac0a46fSAndroid Build Coastguard Worker  private:
149*3ac0a46fSAndroid Build Coastguard Worker   explicit CXFA_FFApp(CallbackIface* pProvider);
150*3ac0a46fSAndroid Build Coastguard Worker 
151*3ac0a46fSAndroid Build Coastguard Worker   UnownedPtr<CallbackIface> const m_pProvider;
152*3ac0a46fSAndroid Build Coastguard Worker   cppgc::Member<CXFA_FontMgr> m_pXFAFontMgr;
153*3ac0a46fSAndroid Build Coastguard Worker   cppgc::Member<CXFA_FWLAdapterWidgetMgr> m_pAdapterWidgetMgr;
154*3ac0a46fSAndroid Build Coastguard Worker   cppgc::Member<CXFA_FWLTheme> m_pFWLTheme;
155*3ac0a46fSAndroid Build Coastguard Worker   cppgc::Member<CFWL_App> m_pFWLApp;
156*3ac0a46fSAndroid Build Coastguard Worker };
157*3ac0a46fSAndroid Build Coastguard Worker 
158*3ac0a46fSAndroid Build Coastguard Worker #endif  // XFA_FXFA_CXFA_FFAPP_H_
159