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