1// Copyright 2014 PDFium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7#ifndef FPDFXFA_APP_H_
8#define FPDFXFA_APP_H_
9
10#include "xfa/include/fxfa/fxfa.h"
11
12class IFXJS_Runtime;
13
14class CPDFXFA_App : public IXFA_AppProvider {
15 public:
16  static CPDFXFA_App* GetInstance();
17  static void ReleaseInstance();
18
19  CPDFXFA_App();
20  ~CPDFXFA_App() override;
21
22  FX_BOOL Initialize();
23  IXFA_App* GetXFAApp() { return m_pXFAApp; }
24
25  FX_BOOL AddFormFillEnv(CPDFDoc_Environment* pEnv);
26  FX_BOOL RemoveFormFillEnv(CPDFDoc_Environment* pEnv);
27
28  FX_BOOL IsJavaScriptInitialized() const { return m_bJavaScriptInitialized; }
29  void SetJavaScriptInitialized(FX_BOOL bInitialized) {
30    m_bJavaScriptInitialized = bInitialized;
31  }
32
33  FXJSE_HRUNTIME GetJSERuntime() const { return m_hJSERuntime; }
34
35  // IFXA_AppProvider:
36  void GetAppType(CFX_WideString& wsAppType) override;
37  void SetAppType(const CFX_WideStringC& wsAppType) override;
38
39  void GetLanguage(CFX_WideString& wsLanguage) override;
40  void GetPlatform(CFX_WideString& wsPlatform) override;
41  void GetVariation(CFX_WideString& wsVariation) override;
42  void GetVersion(CFX_WideString& wsVersion) override;
43  void GetFoxitVersion(CFX_WideString& wsFoxitVersion) override {
44    wsFoxitVersion = L"7.0";
45  }
46
47  void GetAppName(CFX_WideString& wsName) override;
48  void GetFoxitAppName(CFX_WideString& wsFoxitName) override {
49    wsFoxitName = L"Foxit";
50  }
51
52  void Beep(FX_DWORD dwType) override;
53  int32_t MsgBox(const CFX_WideStringC& wsMessage,
54                 const CFX_WideStringC& wsTitle,
55                 FX_DWORD dwIconType,
56                 FX_DWORD dwButtonType) override;
57  void Response(CFX_WideString& wsAnswer,
58                const CFX_WideStringC& wsQuestion,
59                const CFX_WideStringC& wsTitle,
60                const CFX_WideStringC& wsDefaultAnswer,
61                FX_BOOL bMark) override;
62
63  int32_t GetDocumentCountInBatch() override;
64  int32_t GetCurDocumentInBatch() override;
65
66  IFX_FileRead* DownloadURL(const CFX_WideStringC& wsURL) override;
67  FX_BOOL PostRequestURL(const CFX_WideStringC& wsURL,
68                         const CFX_WideStringC& wsData,
69                         const CFX_WideStringC& wsContentType,
70                         const CFX_WideStringC& wsEncode,
71                         const CFX_WideStringC& wsHeader,
72                         CFX_WideString& wsResponse) override;
73  FX_BOOL PutRequestURL(const CFX_WideStringC& wsURL,
74                        const CFX_WideStringC& wsData,
75                        const CFX_WideStringC& wsEncode) override;
76
77  void LoadString(int32_t iStringID, CFX_WideString& wsString) override;
78  FX_BOOL ShowFileDialog(const CFX_WideStringC& wsTitle,
79                         const CFX_WideStringC& wsFilter,
80                         CFX_WideStringArray& wsPathArr,
81                         FX_BOOL bOpen) override;
82  IFWL_AdapterTimerMgr* GetTimerMgr() override;
83
84  CFX_ArrayTemplate<CPDFDoc_Environment*> m_pEnvList;
85
86 protected:
87  static CPDFXFA_App* g_pApp;
88
89  FX_BOOL m_bJavaScriptInitialized;
90  IXFA_App* m_pXFAApp;
91  IXFA_FontMgr* m_pFontMgr;
92  FXJSE_HRUNTIME m_hJSERuntime;
93  IFXJS_Runtime* m_pJSRuntime;
94  CFX_WideString m_csAppType;
95};
96
97#endif  // FPDFXFA_APP_H_
98