14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2016 PDFium Authors. All rights reserved.
24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be
34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file.
44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#ifndef FPDFSDK_CPDFSDK_FORMFILLENVIRONMENT_H_
84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#define FPDFSDK_CPDFSDK_FORMFILLENVIRONMENT_H_
94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <map>
114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <memory>
124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <vector>
134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/page/cpdf_page.h"
154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/parser/cpdf_document.h"
164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfdoc/cpdf_occontext.h"
174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/cfx_observable.h"
184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/cfx_systemhandler.h"
194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/cpdfsdk_annot.h"
204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/fsdk_define.h"
214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "public/fpdf_formfill.h"
224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "public/fpdf_fwlevent.h"
234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CFFL_InteractiveFormFiller;
254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CFX_SystemHandler;
264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPDFSDK_ActionHandler;
274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPDFSDK_AnnotHandlerMgr;
284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPDFSDK_InterForm;
294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPDFSDK_PageView;
304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass IJS_Runtime;
314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPDFSDK_FormFillEnvironment
334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    : public CFX_Observable<CPDFSDK_FormFillEnvironment> {
344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann public:
354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPDFSDK_FormFillEnvironment(UnderlyingDocumentType* pDoc,
364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                              FPDF_FORMFILLINFO* pFFinfo);
374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  ~CPDFSDK_FormFillEnvironment();
384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPDFSDK_PageView* GetPageView(UnderlyingPageType* pPage, bool renew);
404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPDFSDK_PageView* GetPageView(int nIndex);
414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPDFSDK_PageView* GetCurrentView();
424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void RemovePageView(UnderlyingPageType* pPage);
434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void UpdateAllViews(CPDFSDK_PageView* pSender, CPDFSDK_Annot* pAnnot);
444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPDFSDK_Annot* GetFocusAnnot() { return m_pFocusAnnot.Get(); }
464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool SetFocusAnnot(CPDFSDK_Annot::ObservedPtr* pAnnot);
474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool KillFocusAnnot(uint32_t nFlag);
484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void ClearAllFocusedAnnots();
494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool ExtractPages(const std::vector<uint16_t>& arrExtraPages,
514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                    CPDF_Document* pDstDoc);
524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool InsertPages(int nInsertAt,
534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                   const CPDF_Document* pSrcDoc,
544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                   const std::vector<uint16_t>& arrSrcPages);
554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool ReplacePages(int nPage,
564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                    const CPDF_Document* pSrcDoc,
574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                    const std::vector<uint16_t>& arrSrcPages);
584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int GetPageCount() { return m_pUnderlyingDoc->GetPageCount(); }
604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetPermissions(int nFlag);
614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetChangeMark() const { return m_bChangeMask; }
634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void SetChangeMark() { m_bChangeMask = true; }
644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void ClearChangeMark() { m_bChangeMask = false; }
654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  UnderlyingPageType* GetPage(int nIndex);
674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void ProcJavascriptFun();
694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool ProcOpenAction();
704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
7133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann  void Invalidate(FPDF_PAGE page, const FX_RECT& rect);
7233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann  void OutputSelectedRect(FPDF_PAGE page, const CFX_FloatRect& rect);
734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void SetCursor(int nCursorType);
754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int SetTimer(int uElapse, TimerCallback lpTimerFunc);
764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void KillTimer(int nTimerID);
774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  FX_SYSTEMTIME GetLocalTime() const;
784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void OnChange();
804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsSHIFTKeyDown(uint32_t nFlag) const;
814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsCTRLKeyDown(uint32_t nFlag) const;
824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsALTKeyDown(uint32_t nFlag) const;
834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  FPDF_PAGE GetPage(FPDF_DOCUMENT document, int nPageIndex);
854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  FPDF_PAGE GetCurrentPage(FPDF_DOCUMENT document);
864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void ExecuteNamedAction(const FX_CHAR* namedAction);
884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void OnSetFieldInputFocus(FPDF_WIDESTRING focusText,
894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                            FPDF_DWORD nTextLen,
904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                            bool bFocus);
914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void DoURIAction(const FX_CHAR* bsURI);
924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void DoGoToAction(int nPageIndex,
934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                    int zoomMode,
944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                    float* fPosArray,
954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                    int sizeOfArray);
964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  UnderlyingDocumentType* GetUnderlyingDocument() const {
984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    return m_pUnderlyingDoc;
994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  }
1004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
1014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#ifdef PDF_ENABLE_XFA
1024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPDF_Document* GetPDFDocument() const {
1034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    return m_pUnderlyingDoc ? m_pUnderlyingDoc->GetPDFDoc() : nullptr;
1044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  }
1054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
1064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPDFXFA_Context* GetXFAContext() const { return m_pUnderlyingDoc; }
1074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void ResetXFADocument() { m_pUnderlyingDoc = nullptr; }
1084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
1094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int GetPageViewCount() const { return m_PageMap.size(); }
1104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
1114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void DisplayCaret(FPDF_PAGE page,
1124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                    FPDF_BOOL bVisible,
1134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                    double left,
1144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                    double top,
1154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                    double right,
1164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                    double bottom);
1174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int GetCurrentPageIndex(FPDF_DOCUMENT document);
1184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void SetCurrentPage(FPDF_DOCUMENT document, int iCurPage);
1194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
1204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  // TODO(dsinclair): This should probably change to PDFium?
1214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_WideString FFI_GetAppName() const { return CFX_WideString(L"Acrobat"); }
1224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
1234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_WideString GetPlatform();
1244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void GotoURL(FPDF_DOCUMENT document, const CFX_WideStringC& wsURL);
1254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void GetPageViewRect(FPDF_PAGE page, FS_RECTF& dstRect);
1264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool PopupMenu(FPDF_PAGE page,
1274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                 FPDF_WIDGET hWidget,
1284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                 int menuFlag,
1294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                 CFX_PointF pt);
1304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
1314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void Alert(FPDF_WIDESTRING Msg, FPDF_WIDESTRING Title, int Type, int Icon);
1324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void EmailTo(FPDF_FILEHANDLER* fileHandler,
1334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann               FPDF_WIDESTRING pTo,
1344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann               FPDF_WIDESTRING pSubject,
1354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann               FPDF_WIDESTRING pCC,
1364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann               FPDF_WIDESTRING pBcc,
1374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann               FPDF_WIDESTRING pMsg);
1384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void UploadTo(FPDF_FILEHANDLER* fileHandler,
1394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                int fileFlag,
1404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                FPDF_WIDESTRING uploadTo);
1414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  FPDF_FILEHANDLER* OpenFile(int fileType,
1424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                             FPDF_WIDESTRING wsURL,
1434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                             const char* mode);
1444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_RetainPtr<IFX_SeekableReadStream> DownloadFromURL(const FX_WCHAR* url);
1454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_WideString PostRequestURL(const FX_WCHAR* wsURL,
1464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                                const FX_WCHAR* wsData,
1474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                                const FX_WCHAR* wsContentType,
1484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                                const FX_WCHAR* wsEncode,
1494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                                const FX_WCHAR* wsHeader);
1504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  FPDF_BOOL PutRequestURL(const FX_WCHAR* wsURL,
1514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                          const FX_WCHAR* wsData,
1524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                          const FX_WCHAR* wsEncode);
1534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_WideString GetLanguage();
1544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
1554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void PageEvent(int iPageCount, uint32_t dwEventType) const;
1564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#else   // PDF_ENABLE_XFA
1574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPDF_Document* GetPDFDocument() const { return m_pUnderlyingDoc; }
1584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#endif  // PDF_ENABLE_XFA
1594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
1604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int JS_appAlert(const FX_WCHAR* Msg,
1614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                  const FX_WCHAR* Title,
1624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                  uint32_t Type,
1634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                  uint32_t Icon);
1644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int JS_appResponse(const FX_WCHAR* Question,
1654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                     const FX_WCHAR* Title,
1664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                     const FX_WCHAR* Default,
1674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                     const FX_WCHAR* cLabel,
1684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                     FPDF_BOOL bPassword,
1694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                     void* response,
1704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                     int length);
1714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void JS_appBeep(int nType);
1724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_WideString JS_fieldBrowse();
1734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_WideString JS_docGetFilePath();
1744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void JS_docSubmitForm(void* formData, int length, const FX_WCHAR* URL);
1754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void JS_docmailForm(void* mailData,
1764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                      int length,
1774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                      FPDF_BOOL bUI,
1784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                      const FX_WCHAR* To,
1794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                      const FX_WCHAR* Subject,
1804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                      const FX_WCHAR* CC,
1814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                      const FX_WCHAR* BCC,
1824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                      const FX_WCHAR* Msg);
1834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void JS_docprint(FPDF_BOOL bUI,
1844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                   int nStart,
1854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                   int nEnd,
1864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                   FPDF_BOOL bSilent,
1874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                   FPDF_BOOL bShrinkToFit,
1884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                   FPDF_BOOL bPrintAsImage,
1894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                   FPDF_BOOL bReverse,
1904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                   FPDF_BOOL bAnnotations);
1914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void JS_docgotoPage(int nPageNum);
1924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
1934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsJSInitiated() const { return m_pInfo && m_pInfo->m_pJsPlatform; }
1944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_ByteString GetAppName() const { return ""; }
1954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_SystemHandler* GetSysHandler() const { return m_pSysHandler.get(); }
1964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  FPDF_FORMFILLINFO* GetFormFillInfo() const { return m_pInfo; }
1974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
1984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  // Creates if not present.
1994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFFL_InteractiveFormFiller* GetInteractiveFormFiller();
2004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPDFSDK_AnnotHandlerMgr* GetAnnotHandlerMgr();  // Creates if not present.
2014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  IJS_Runtime* GetJSRuntime();                    // Creates if not present.
2024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPDFSDK_ActionHandler* GetActionHander();       // Creates if not present.
2034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPDFSDK_InterForm* GetInterForm();              // Creates if not present.
2044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
2054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann private:
2064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  std::unique_ptr<CPDFSDK_AnnotHandlerMgr> m_pAnnotHandlerMgr;
2074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  std::unique_ptr<CPDFSDK_ActionHandler> m_pActionHandler;
2084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  std::unique_ptr<IJS_Runtime> m_pJSRuntime;
2094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  FPDF_FORMFILLINFO* const m_pInfo;
2104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  std::map<UnderlyingPageType*, std::unique_ptr<CPDFSDK_PageView>> m_PageMap;
2114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  std::unique_ptr<CPDFSDK_InterForm> m_pInterForm;
2124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPDFSDK_Annot::ObservedPtr m_pFocusAnnot;
2134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  UnderlyingDocumentType* m_pUnderlyingDoc;
2144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  std::unique_ptr<CFFL_InteractiveFormFiller> m_pFormFiller;
2154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  std::unique_ptr<CFX_SystemHandler> m_pSysHandler;
2164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool m_bChangeMask;
2174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool m_bBeingDestroyed;
2184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann};
2194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
2204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#endif  // FPDFSDK_CPDFSDK_FORMFILLENVIRONMENT_H_
221