| // Copyright 2014 The PDFium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| |
| #ifndef XFA_FXFA_CXFA_FFAPP_H_ |
| #define XFA_FXFA_CXFA_FFAPP_H_ |
| |
| #include "core/fxcrt/unowned_ptr.h" |
| #include "core/fxcrt/widestring.h" |
| #include "fxjs/gc/heap.h" |
| #include "v8/include/cppgc/garbage-collected.h" |
| #include "v8/include/cppgc/member.h" |
| #include "xfa/fwl/cfwl_app.h" |
| |
| class CFWL_WidgetMgr; |
| class CXFA_FFDoc; |
| class CXFA_FWLAdapterWidgetMgr; |
| class CXFA_FWLTheme; |
| class CXFA_FontMgr; |
| class IFX_SeekableReadStream; |
| |
| class CXFA_FFApp final : public cppgc::GarbageCollected<CXFA_FFApp>, |
| public CFWL_App::AdapterIface { |
| public: |
| class CallbackIface { |
| public: |
| virtual ~CallbackIface() = default; |
| |
| /** |
| * Returns the language of the running host application. Such as zh_CN |
| */ |
| virtual WideString GetLanguage() = 0; |
| |
| /** |
| * Returns the platform of the machine running the script. Such as WIN |
| */ |
| virtual WideString GetPlatform() = 0; |
| |
| /** |
| * Get application name, such as Phantom. |
| */ |
| virtual WideString GetAppName() = 0; |
| |
| /** |
| * Get application message box title. |
| */ |
| virtual WideString GetAppTitle() const = 0; |
| |
| /** |
| * Causes the system to play a sound. |
| * @param[in] dwType The system code for the appropriate sound.0 (Error)1 |
| * (Warning)2 (Question)3 (Status)4 (Default) |
| */ |
| virtual void Beep(uint32_t dwType) = 0; |
| |
| /** |
| * Displays a message box. |
| * @param[in] wsMessage - Message string to display in box. |
| * @param[in] wsTitle - Title string for box. |
| * @param[in] dwIconType - Icon type, refer to XFA_MBICON. |
| * @param[in] dwButtonType - Button type, refer to XFA_MESSAGEBUTTON. |
| * @return A valid integer representing the value of the button pressed by |
| * the user, refer to XFA_ID. |
| */ |
| virtual int32_t MsgBox(const WideString& wsMessage, |
| const WideString& wsTitle, |
| uint32_t dwIconType, |
| uint32_t dwButtonType) = 0; |
| |
| /** |
| * Get a response from the user. |
| * @param[in] wsQuestion - Message string to display in box. |
| * @param[in] wsTitle - Title string for box. |
| * @param[in] wsDefaultAnswer - Initial contents for answer. |
| * @param[in] bMask - Mask the user input with asterisks when |
| * true, |
| * @return A string containing the user's response. |
| */ |
| virtual WideString Response(const WideString& wsQuestion, |
| const WideString& wsTitle, |
| const WideString& wsDefaultAnswer, |
| bool bMask) = 0; |
| |
| /** |
| * Download something from somewhere. |
| * @param[in] wsURL - http, ftp, such as |
| * "http://www.w3.org/TR/REC-xml-names/". |
| */ |
| virtual RetainPtr<IFX_SeekableReadStream> DownloadURL( |
| const WideString& wsURL) = 0; |
| |
| /** |
| * POST data to the given url. |
| * @param[in] wsURL the URL being uploaded. |
| * @param[in] wsData the data being uploaded. |
| * @param[in] wsContentType the content type of data including text/html, |
| * text/xml, text/plain, multipart/form-data, |
| * application/x-www-form-urlencoded, |
| * application/octet-stream, any valid MIME type. |
| * @param[in] wsEncode the encode of data including UTF-8, UTF-16, |
| * ISO8859-1, any recognized [IANA]character encoding |
| * @param[in] wsHeader any additional HTTP headers to be included in |
| * the post. |
| * @param[out] wsResponse decoded response from server. |
| * @return true Server permitted the post request, false otherwise. |
| */ |
| virtual bool PostRequestURL(const WideString& wsURL, |
| const WideString& wsData, |
| const WideString& wsContentType, |
| const WideString& wsEncode, |
| const WideString& wsHeader, |
| WideString& wsResponse) = 0; |
| |
| /** |
| * PUT data to the given url. |
| * @param[in] wsURL the URL being uploaded. |
| * @param[in] wsData the data being uploaded. |
| * @param[in] wsEncode the encode of data including UTF-8, UTF-16, |
| * ISO8859-1, any recognized [IANA]character encoding |
| * @return true Server permitted the post request, false otherwise. |
| */ |
| virtual bool PutRequestURL(const WideString& wsURL, |
| const WideString& wsData, |
| const WideString& wsEncode) = 0; |
| |
| virtual CFX_Timer::HandlerIface* GetTimerHandler() const = 0; |
| virtual cppgc::Heap* GetGCHeap() const = 0; |
| }; |
| |
| CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED; |
| ~CXFA_FFApp() override; |
| |
| // CFWL_App::AdapterIface: |
| void Trace(cppgc::Visitor* visitor) const override; |
| CFWL_WidgetMgr::AdapterIface* GetWidgetMgrAdapter() override; |
| CFX_Timer::HandlerIface* GetTimerHandler() override; |
| IFWL_ThemeProvider* GetThemeProvider() override; |
| cppgc::Heap* GetHeap() override; |
| |
| bool LoadFWLTheme(CXFA_FFDoc* doc); |
| CFWL_WidgetMgr* GetFWLWidgetMgr() const { return m_pFWLApp->GetWidgetMgr(); } |
| CallbackIface* GetAppProvider() const { return m_pProvider; } |
| CFWL_App* GetFWLApp() const { return m_pFWLApp; } |
| CXFA_FontMgr* GetXFAFontMgr() const { return m_pXFAFontMgr; } |
| |
| private: |
| explicit CXFA_FFApp(CallbackIface* pProvider); |
| |
| UnownedPtr<CallbackIface> const m_pProvider; |
| cppgc::Member<CXFA_FontMgr> m_pXFAFontMgr; |
| cppgc::Member<CXFA_FWLAdapterWidgetMgr> m_pAdapterWidgetMgr; |
| cppgc::Member<CXFA_FWLTheme> m_pFWLTheme; |
| cppgc::Member<CFWL_App> m_pFWLApp; |
| }; |
| |
| #endif // XFA_FXFA_CXFA_FFAPP_H_ |