159 lines
5.7 KiB
C++
159 lines
5.7 KiB
C++
// 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_
|