Make CPDFXFA_App / IXFA_AppProvider saner
authorTom Sepez <tsepez@chromium.org>
Wed, 27 May 2015 19:25:00 +0000 (12:25 -0700)
committerTom Sepez <tsepez@chromium.org>
Wed, 27 May 2015 19:25:00 +0000 (12:25 -0700)
Move interface comments from the implementation header to the
interface header.

Replace Create / Release functions with static methods.

Replace dubious Release() methods with deletion via virtual dtor, also
for IXFA_App and IXFA_FontMgr while we're at it.

Untabify and fix (theoretically) illegal _CAP include guard definitions
for fpdfxfa/ headers.

R=thestig@chromium.org

Review URL: https://codereview.chromium.org/1153553003

15 files changed:
fpdfsdk/include/fpdfxfa/fpdfxfa_app.h
fpdfsdk/src/fpdf_dataavail.cpp
fpdfsdk/src/fpdfeditpage.cpp
fpdfsdk/src/fpdfformfill.cpp
fpdfsdk/src/fpdfsave.cpp
fpdfsdk/src/fpdfview.cpp
fpdfsdk/src/fpdfxfa/fpdfxfa_app.cpp
fpdfsdk/src/fsdk_mgr.cpp
fpdfsdk/src/javascript/JS_Runtime.cpp
fpdfsdk/src/javascript/global.cpp
xfa/include/fxfa/fxfa.h
xfa/src/fxfa/src/app/xfa_ffapp.cpp
xfa/src/fxfa/src/app/xfa_ffapp.h
xfa/src/fxfa/src/app/xfa_fontmgr.cpp
xfa/src/fxfa/src/app/xfa_fontmgr.h

index a2bc2cc..37a7ec1 100644 (file)
 // Copyright 2014 PDFium Authors. All rights reserved.\r
 // Use of this source code is governed by a BSD-style license that can be\r
 // found in the LICENSE file.\r
\r
+\r
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
 \r
-#ifndef _FPDFXFA_APP_H_\r
-#define _FPDFXFA_APP_H_\r
+#ifndef FPDFXFA_APP_H_\r
+#define FPDFXFA_APP_H_\r
 \r
-class CPDFXFA_App;\r
 class IFXJS_Runtime;\r
 class CJS_RuntimeFactory;\r
 \r
 class CPDFXFA_App : public IXFA_AppProvider\r
 {\r
 public:\r
-       CPDFXFA_App();\r
-       ~CPDFXFA_App();\r
-\r
-       FX_BOOL                         Initialize();\r
-\r
-       IXFA_App*                       GetXFAApp() { return m_pXFAApp; }\r
-\r
-                                               \r
-       /*CPDFDoc_Environment*GetFormFillEnv(){ return m_pEnv; }*/\r
-       FX_BOOL                         AddFormFillEnv(CPDFDoc_Environment* pEnv);\r
-       FX_BOOL                         RemoveFormFillEnv(CPDFDoc_Environment* pEnv);\r
-\r
-       FXJSE_HRUNTIME          GetJSERuntime() { return m_hJSERuntime; }\r
-\r
-       void                            ReleaseRuntime();\r
-\r
-       FX_BOOL                         InitRuntime(FX_BOOL bReset = FALSE) {\r
-               if (bReset) {\r
-                       m_bInitRuntime = FALSE;\r
-                       return TRUE;\r
-               }\r
-               if (m_bInitRuntime)\r
-                       return TRUE;\r
-               m_bInitRuntime = TRUE;\r
-               return FALSE;\r
-       }\r
-\r
-       //IFXJS_Runtime*                GetJSRuntime();\r
-\r
-       CJS_RuntimeFactory* GetRuntimeFactory() {return m_pJSRuntimeFactory;}\r
-\r
-public:\r
-       /**\r
-        *Specifies the name of the client application in which a form currently exists. Such as Exchange-Pro.\r
-        */\r
-       virtual void            GetAppType(CFX_WideString &wsAppType);\r
-       virtual void            SetAppType(FX_WSTR wsAppType) ;\r
-       virtual void            SetFoxitAppType(FX_WSTR wsFoxitAppType) { return; }\r
-       virtual void            GetFoxitAppType(CFX_WideString &wsFoxitAppType) { return; }\r
-       virtual void            GetFoxitAppName(CFX_WideString& wsFoxitName) {wsFoxitName = L"Foxit";}\r
-       virtual void            GetFoxitVersion(CFX_WideString &wsFoxitVersion) {wsFoxitVersion = L"7.0";}\r
-       /**\r
-        *Returns the language of the running host application. Such as zh_CN\r
-        */\r
-       virtual void            GetLanguage(CFX_WideString &wsLanguage);\r
-       /** \r
-               *Returns the platform of the machine running the script. Such as WIN\r
-        */\r
-       virtual void            GetPlatform(CFX_WideString &wsPlatform);\r
-       /** \r
-        * Indicates the packaging of the application that is running the script. Such as Full\r
-        */\r
-       virtual void            GetVariation(CFX_WideString &wsVariation);\r
-       /** \r
-        * Indicates the version number of the current application. Such as 9\r
-        */\r
-       virtual void            GetVersion(CFX_WideString &wsVersion);\r
-       //Get application name, such as Phantom\r
-       virtual void            GetAppName(CFX_WideString& wsName);\r
-       /** \r
-        *Causes the system to play a sound.    \r
-        * @param[in] dwType The system code for the appropriate sound.0 (Error)1 (Warning)2 (Question)3 (Status)4 (Default)\r
-        */\r
-       virtual void            Beep(FX_DWORD dwType);\r
-       /**\r
-        * Displays a message box.\r
-        * @param[in] dwIconType        Icon type, refer to XFA_MBICON.\r
-        * @param[in] dwButtonType      Button type, refer to XFA_MESSAGEBUTTON.\r
-        * @return A valid integer representing the value of the button pressed by the user, refer to XFA_ID.\r
-        */\r
-       virtual FX_INT32        MsgBox(FX_WSTR wsMessage, FX_WSTR wsTitle = FX_WSTRC(L""), FX_DWORD dwIconType = 0, FX_DWORD dwButtonType = 0);\r
-       //bMark True (default) Masks the user¡¯s answer with * (asterisks). False Does not mask the user¡¯s answer. \r
-       virtual void            Response(CFX_WideString &wsAnswer, FX_WSTR wsQuestion, FX_WSTR wsTitle = FX_WSTRC(L""), FX_WSTR wsDefaultAnswer = FX_WSTRC(L""), FX_BOOL bMark = TRUE);\r
-       virtual FX_INT32        GetDocumentCountInBatch();\r
-       virtual FX_INT32        GetCurDocumentInBatch();\r
-       //wsURL http, ftp, such as "http://www.w3.org/TR/REC-xml-names/".\r
-       virtual IFX_FileRead* DownloadURL(FX_WSTR wsURL);\r
-       /*\r
-       * Post data to the given url.\r
-       * @param[in] wsURL                      the URL being uploaded.\r
-       * @param[in] wsData                     the data being uploaded.\r
-       * @param[in] wsContentType      the content type of data including text/html, text/xml, text/plain, multipart/form-data, \r
-       *                                                       application/x-www-form-urlencoded, application/octet-stream, any valid MIME type.\r
-       * @param[in] wsEncode           the encode of data including UTF-8, UTF-16, ISO8859-1, any recognized [IANA]character encoding\r
-       * @param[in] wsHeader           any additional HTTP headers to be included in the post.\r
-       * @param[out] wsResponse        decoded response from server.\r
-       * @return TRUE Server permitted the post request, FALSE otherwise.\r
-       */\r
-       virtual FX_BOOL         PostRequestURL(FX_WSTR wsURL, FX_WSTR wsData, FX_WSTR wsContentType, \r
-                                                                           FX_WSTR wsEncode, FX_WSTR wsHeader, CFX_WideString &wsResponse);\r
-\r
-       /*\r
-       * Put data to the given url.\r
-       * @param[in] wsURL                      the URL being uploaded.\r
-       * @param[in] wsData                     the data being uploaded.\r
-       * @param[in] wsEncode           the encode of data including UTF-8, UTF-16, ISO8859-1, any recognized [IANA]character encoding\r
-       * @return TRUE Server permitted the post request, FALSE otherwise.\r
-       */\r
-       virtual FX_BOOL         PutRequestURL(FX_WSTR wsURL, FX_WSTR wsData, FX_WSTR wsEncode);\r
-\r
-       virtual void            LoadString(FX_INT32 iStringID, CFX_WideString &wsString);\r
-       virtual FX_BOOL         ShowFileDialog(FX_WSTR wsTitle, FX_WSTR wsFilter, CFX_WideStringArray &wsPathArr, FX_BOOL bOpen = TRUE);\r
-       virtual IFWL_AdapterTimerMgr* GetTimerMgr();\r
-\r
-       CFX_ArrayTemplate<CPDFDoc_Environment*> m_pEnvList;\r
-\r
-public:\r
-       static CPDFXFA_App* m_pApp;\r
-\r
-private:\r
-       IXFA_App*  m_pXFAApp;\r
-       IXFA_FontMgr* m_pFontMgr;\r
-       FXJSE_HRUNTIME m_hJSERuntime;\r
-       IFXJS_Runtime* m_pJSRuntime;\r
-       CJS_RuntimeFactory*  m_pJSRuntimeFactory;\r
-\r
-       CFX_WideString  m_csAppType;\r
-       FX_BOOL                 m_bInitRuntime;\r
+    static CPDFXFA_App* GetInstance();\r
+    static void ReleaseInstance();\r
+\r
+    CPDFXFA_App();\r
+    ~CPDFXFA_App() override;\r
+\r
+    FX_BOOL             Initialize();\r
+    IXFA_App*           GetXFAApp() { return m_pXFAApp; }\r
+\r
+    FX_BOOL             AddFormFillEnv(CPDFDoc_Environment* pEnv);\r
+    FX_BOOL             RemoveFormFillEnv(CPDFDoc_Environment* pEnv);\r
+\r
+    FXJSE_HRUNTIME      GetJSERuntime() { return m_hJSERuntime; }\r
+    void                ReleaseRuntime();\r
+    FX_BOOL             InitRuntime(FX_BOOL bReset=FALSE);\r
+\r
+    CJS_RuntimeFactory* GetRuntimeFactory() { return m_pJSRuntimeFactory; }\r
+\r
+    // IFXA_AppProvider:\r
+    void GetAppType(CFX_WideString &wsAppType) override;\r
+    void SetAppType(FX_WSTR wsAppType) override;\r
+\r
+    void GetLanguage(CFX_WideString &wsLanguage) override;\r
+    void GetPlatform(CFX_WideString &wsPlatform) override;\r
+    void GetVariation(CFX_WideString &wsVariation) override;\r
+    void GetVersion(CFX_WideString &wsVersion) override;\r
+    void GetFoxitVersion(CFX_WideString &wsFoxitVersion) override {\r
+        wsFoxitVersion = L"7.0";\r
+    }\r
+\r
+    void GetAppName(CFX_WideString& wsName) override;\r
+    void GetFoxitAppName(CFX_WideString& wsFoxitName) override {\r
+        wsFoxitName = L"Foxit";\r
+    }\r
+\r
+    void Beep(FX_DWORD dwType) override;\r
+    FX_INT32 MsgBox(FX_WSTR wsMessage, FX_WSTR wsTitle, FX_DWORD dwIconType, FX_DWORD dwButtonType) override;\r
+    void Response(CFX_WideString &wsAnswer, FX_WSTR wsQuestion, FX_WSTR wsTitle,\r
+                  FX_WSTR wsDefaultAnswer, FX_BOOL bMark) override;\r
+\r
+    FX_INT32 GetDocumentCountInBatch() override;\r
+    FX_INT32 GetCurDocumentInBatch() override;\r
+\r
+    IFX_FileRead* DownloadURL(FX_WSTR wsURL) override;\r
+    FX_BOOL PostRequestURL(FX_WSTR wsURL, FX_WSTR wsData, FX_WSTR wsContentType,\r
+                           FX_WSTR wsEncode, FX_WSTR wsHeader, CFX_WideString &wsResponse) override;\r
+    FX_BOOL PutRequestURL(FX_WSTR wsURL, FX_WSTR wsData, FX_WSTR wsEncode) override;\r
+\r
+    void LoadString(FX_INT32 iStringID, CFX_WideString &wsString) override;\r
+    FX_BOOL ShowFileDialog(FX_WSTR wsTitle, FX_WSTR wsFilter, CFX_WideStringArray &wsPathArr, FX_BOOL bOpen) override;\r
+    IFWL_AdapterTimerMgr* GetTimerMgr() override;\r
+\r
+    CFX_ArrayTemplate<CPDFDoc_Environment*> m_pEnvList;\r
+\r
+protected:\r
+    static CPDFXFA_App* g_pApp;\r
+\r
+    FX_BOOL m_bInitRuntime;\r
+    IXFA_App* m_pXFAApp;\r
+    IXFA_FontMgr* m_pFontMgr;\r
+    FXJSE_HRUNTIME m_hJSERuntime;\r
+    IFXJS_Runtime* m_pJSRuntime;\r
+    CJS_RuntimeFactory* m_pJSRuntimeFactory;\r
+    CFX_WideString m_csAppType;\r
 };\r
 \r
-CPDFXFA_App* FPDFXFA_GetApp();\r
-void FPDFXFA_ReleaseApp();\r
-\r
-#endif \r
+#endif  // FPDFXFA_APP_H_\r
index f3fd42a..a87ebec 100644 (file)
@@ -137,11 +137,8 @@ DLLEXPORT FPDF_DOCUMENT STDCALL FPDFAvail_GetDocument(FPDF_AVAIL avail,    FPDF_BYT
        ((CFPDF_DataAvail*)avail)->m_pDataAvail->SetDocument(pParser->GetDocument());
        CheckUnSupportError(pParser->GetDocument(), FPDF_ERR_SUCCESS);
        CPDF_Document* pPDFDoc = pParser->GetDocument();
-
-       CPDFXFA_App* pApp = FPDFXFA_GetApp();
+       CPDFXFA_App* pApp = CPDFXFA_App::GetInstance();
        CPDFXFA_Document* pDocument = FX_NEW CPDFXFA_Document(pPDFDoc, pApp);
-       //pDocument->LoadXFADoc();
-
        return pDocument;
 }
 
index f371f82..2fdc7de 100644 (file)
@@ -39,7 +39,7 @@ DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_CreateNewDocument()
                        }
                }
        }
-       
+
        CPDF_Dictionary* pInfoDict = NULL;
        pInfoDict = pDoc->GetInfo();
        if (pInfoDict)
@@ -49,9 +49,8 @@ DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_CreateNewDocument()
                pInfoDict->SetAt("Creator",FX_NEW CPDF_String(L"PDFium"));
        }
 
-       CPDFXFA_App* pApp = FPDFXFA_GetApp();
+       CPDFXFA_App* pApp = CPDFXFA_App::GetInstance();
        CPDFXFA_Document* document = FX_NEW CPDFXFA_Document(pDoc, pApp);
-
        return document;
 }
 
index 7482871..8cb0de0 100644 (file)
@@ -96,7 +96,7 @@ DLLEXPORT FPDF_FORMHANDLE STDCALL FPDFDOC_InitFormFillEnvironment(FPDF_DOCUMENT
                return NULL;
        pEnv->RegAppHandle(formInfo);
 
-       CPDFXFA_App* pApp = FPDFXFA_GetApp();
+       CPDFXFA_App* pApp = CPDFXFA_App::GetInstance();
        pApp->AddFormFillEnv(pEnv);
 
        if(pEnv->GetPDFXFADocument())
@@ -113,16 +113,8 @@ DLLEXPORT FPDF_FORMHANDLE STDCALL FPDFDOC_InitFormFillEnvironment(FPDF_DOCUMENT
 DLLEXPORT void STDCALL FPDFDOC_ExitFormFillEnvironment(FPDF_FORMHANDLE hHandle)
 {
        if (!hHandle)
-               return; 
-       //CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc();
-       //if(pSDKDoc)
-       //{
-               //((CPDFDoc_Environment*)hHandle)->SetCurrentDoc(NULL);
-               //CPDFXFA_Document* pDoc = ((CPDFDoc_Environment*)hHandle)->GetPDFXFADocument();
-               //if (pDoc)
-               //      pDoc->ReleaseSDKDoc();
-       //}
-       CPDFXFA_App* pApp = FPDFXFA_GetApp();
+               return;
+       CPDFXFA_App* pApp = CPDFXFA_App::GetInstance();
        pApp->RemoveFormFillEnv((CPDFDoc_Environment*)hHandle);
        delete (CPDFDoc_Environment*)hHandle;
        hHandle = NULL;
@@ -351,14 +343,12 @@ DLLEXPORT void STDCALL FPDF_Widget_Undo(FPDF_DOCUMENT document, FPDF_WIDGET hWid
 {
        if (NULL == hWidget || NULL == document)
                return;
-       
-       CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;      
 
+       CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
        if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic && pDocument->GetDocType() != XFA_DOCTYPE_Static)
                return;
 
-       IXFA_MenuHandler* pXFAMenuHander = FPDFXFA_GetApp()->GetXFAApp()->GetMenuHandler();
-
+       IXFA_MenuHandler* pXFAMenuHander = CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
        if (pXFAMenuHander == NULL)
                return;
 
@@ -369,13 +359,12 @@ DLLEXPORT void STDCALL FPDF_Widget_Redo(FPDF_DOCUMENT document, FPDF_WIDGET hWid
 {
        if (NULL == hWidget || NULL == document)
                return;
-       
-       CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;      
+
+       CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
        if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic && pDocument->GetDocType() != XFA_DOCTYPE_Static)
                return;
 
-       IXFA_MenuHandler* pXFAMenuHander = FPDFXFA_GetApp()->GetXFAApp()->GetMenuHandler();
-
+       IXFA_MenuHandler* pXFAMenuHander = CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
        if (pXFAMenuHander == NULL)
                return;
 
@@ -386,13 +375,12 @@ DLLEXPORT void STDCALL FPDF_Widget_SelectAll(FPDF_DOCUMENT document, FPDF_WIDGET
 {
        if (NULL == hWidget || NULL == document)
                return;
-       
-       CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;      
+
+       CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
        if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic && pDocument->GetDocType() != XFA_DOCTYPE_Static)
                return;
 
-       IXFA_MenuHandler* pXFAMenuHander = FPDFXFA_GetApp()->GetXFAApp()->GetMenuHandler();
-
+       IXFA_MenuHandler* pXFAMenuHander = CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
        if (pXFAMenuHander == NULL)
                return;
 
@@ -402,13 +390,12 @@ DLLEXPORT void STDCALL FPDF_Widget_Copy(FPDF_DOCUMENT document, FPDF_WIDGET hWid
 {
        if (NULL == hWidget || NULL == document)
                return;
-       
-       CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;      
+
+       CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
        if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic && pDocument->GetDocType() != XFA_DOCTYPE_Static)
                return;
 
-       IXFA_MenuHandler* pXFAMenuHander = FPDFXFA_GetApp()->GetXFAApp()->GetMenuHandler();
-
+       IXFA_MenuHandler* pXFAMenuHander = CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
        if (pXFAMenuHander == NULL)
                return;
 
@@ -416,9 +403,7 @@ DLLEXPORT void STDCALL FPDF_Widget_Copy(FPDF_DOCUMENT document, FPDF_WIDGET hWid
        pXFAMenuHander->Copy((XFA_HWIDGET)hWidget, wsCpText);
 
        CFX_ByteString bsCpText = wsCpText.UTF16LE_Encode();
-
        int len = bsCpText.GetLength()/sizeof(unsigned short);
-       
        if (wsText == NULL) {
                *size = len;
                return;
@@ -436,13 +421,11 @@ DLLEXPORT void STDCALL FPDF_Widget_Cut(FPDF_DOCUMENT document, FPDF_WIDGET hWidg
 {
        if (NULL == hWidget || NULL == document)
                return;
-       
-       CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;      
+       CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
        if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic && pDocument->GetDocType() != XFA_DOCTYPE_Static)
                return;
 
-       IXFA_MenuHandler* pXFAMenuHander = FPDFXFA_GetApp()->GetXFAApp()->GetMenuHandler();
-
+       IXFA_MenuHandler* pXFAMenuHander = CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
        if (pXFAMenuHander == NULL)
                return;
 
@@ -450,9 +433,7 @@ DLLEXPORT void STDCALL FPDF_Widget_Cut(FPDF_DOCUMENT document, FPDF_WIDGET hWidg
        pXFAMenuHander->Cut((XFA_HWIDGET)hWidget, wsCpText);
 
        CFX_ByteString bsCpText = wsCpText.UTF16LE_Encode();
-
        int len = bsCpText.GetLength()/sizeof(unsigned short);
-       
        if (wsText == NULL) {
                *size = len;
                return;
@@ -470,18 +451,16 @@ DLLEXPORT void STDCALL FPDF_Widget_Paste(FPDF_DOCUMENT document, FPDF_WIDGET hWi
 {
        if (NULL == hWidget || NULL == document)
                return;
-       
-       CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;      
+
+       CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
        if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic && pDocument->GetDocType() != XFA_DOCTYPE_Static)
                return;
 
-       IXFA_MenuHandler* pXFAMenuHander = FPDFXFA_GetApp()->GetXFAApp()->GetMenuHandler();
-
+       IXFA_MenuHandler* pXFAMenuHander = CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
        if (pXFAMenuHander == NULL)
                return;
 
        CFX_WideString wstr = CFX_WideString::FromUTF16LE(wsText, size);
-
        pXFAMenuHander->Paste((XFA_HWIDGET)hWidget, wstr);
 
 }
@@ -489,20 +468,19 @@ DLLEXPORT void STDCALL FPDF_Widget_ReplaceSpellCheckWord(FPDF_DOCUMENT document,
 {
        if (NULL == hWidget || NULL == document)
                return;
-       
-       CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;      
+
+       CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
        if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic && pDocument->GetDocType() != XFA_DOCTYPE_Static)
                return;
 
-       IXFA_MenuHandler* pXFAMenuHander = FPDFXFA_GetApp()->GetXFAApp()->GetMenuHandler();
-
+       IXFA_MenuHandler* pXFAMenuHander = CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
        if (pXFAMenuHander == NULL)
                return;
 
        CFX_PointF ptPopup;
        ptPopup.x = x;
        ptPopup.y = y;
-       CFX_ByteStringC bs(bsText); 
+       CFX_ByteStringC bs(bsText);
        pXFAMenuHander->ReplaceSpellCheckWord((XFA_HWIDGET)hWidget,ptPopup,bs);
 
 }
@@ -510,13 +488,12 @@ DLLEXPORT void STDCALL FPDF_Widget_GetSpellCheckWords(FPDF_DOCUMENT document, FP
 {
        if (NULL == hWidget || NULL == document)
                return;
-       
-       CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;      
+
+       CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
        if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic && pDocument->GetDocType() != XFA_DOCTYPE_Static)
                return;
 
-       IXFA_MenuHandler* pXFAMenuHander = FPDFXFA_GetApp()->GetXFAApp()->GetMenuHandler();
-
+       IXFA_MenuHandler* pXFAMenuHander = CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
        if (pXFAMenuHander == NULL)
                return;
 
index 0be1709..b3ab2f0 100644 (file)
@@ -67,17 +67,18 @@ FX_BOOL _SaveXFADocumentData(CPDFXFA_Document* pDocument, CFX_PtrArray& fileList
                return FALSE;
        if (pDocument->GetDocType() != DOCTYPE_DYNIMIC_XFA && pDocument->GetDocType() != DOCTYPE_STATIC_XFA)
                return TRUE;
-       if (!FPDFXFA_GetApp()->GetXFAApp())
+       if (!CPDFXFA_App::GetInstance()->GetXFAApp())
                return TRUE;
 
        IXFA_DocView* pXFADocView = pDocument->GetXFADocView();
        if (NULL == pXFADocView)
                return TRUE;
-       IXFA_DocHandler *pXFADocHandler = FPDFXFA_GetApp()->GetXFAApp()->GetDocHandler();
-       
+
+       IXFA_DocHandler *pXFADocHandler = CPDFXFA_App::GetInstance()->GetXFAApp()->GetDocHandler();
        CPDF_Document * pPDFDocument = pDocument->GetPDFDoc();
-       if (pDocument == NULL) 
+       if (pDocument == NULL)
                return FALSE;
+
        CPDF_Dictionary* pRoot = pPDFDocument->GetRoot();
        if (pRoot == NULL)
                return FALSE;
index c5d8f32..52e0ccd 100644 (file)
@@ -176,36 +176,29 @@ FPDF_BOOL FSDK_IsSandBoxPolicyEnabled(FPDF_DWORD policy)
        return FALSE;
 }
 
-
-#ifndef _T
-#define _T(x) x
-#endif
-
 CCodec_ModuleMgr*      g_pCodecModule = NULL;
 
 DLLEXPORT void STDCALL FPDF_InitLibrary()
 {
-       g_pCodecModule = CCodec_ModuleMgr::Create();
-       
-       CFX_GEModule::Create();
-       CFX_GEModule::Get()->SetCodecModule(g_pCodecModule);
-       
-       CPDF_ModuleMgr::Create();
-       CPDF_ModuleMgr::Get()->SetCodecModule(g_pCodecModule);
-       CPDF_ModuleMgr::Get()->InitPageModule();
-       CPDF_ModuleMgr::Get()->InitRenderModule();
+    g_pCodecModule = CCodec_ModuleMgr::Create();
 
-       CPDFXFA_App* pAppProvider = FPDFXFA_GetApp();
-       pAppProvider->Initialize();
-}
+    CFX_GEModule::Create();
+    CFX_GEModule::Get()->SetCodecModule(g_pCodecModule);
+
+    CPDF_ModuleMgr::Create();
+    CPDF_ModuleMgr::Get()->SetCodecModule(g_pCodecModule);
+    CPDF_ModuleMgr::Get()->InitPageModule();
+    CPDF_ModuleMgr::Get()->InitRenderModule();
 
+    CPDFXFA_App::GetInstance()->Initialize();
+}
 
 DLLEXPORT void STDCALL FPDF_DestroyLibrary()
 {
-       FPDFXFA_ReleaseApp();
-       CPDF_ModuleMgr::Destroy();
-       CFX_GEModule::Destroy();
-       g_pCodecModule->Destroy();
+    CPDFXFA_App::ReleaseInstance();
+    CPDF_ModuleMgr::Destroy();
+    CFX_GEModule::Destroy();
+    g_pCodecModule->Destroy();
 }
 
 #ifndef _WIN32
@@ -261,7 +254,7 @@ DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadDocument(FPDF_STRING file_path, FPDF_BY
        if (!pPDFDoc)
                return NULL;
 
-       CPDFXFA_App* pProvider = FPDFXFA_GetApp();
+       CPDFXFA_App* pProvider = CPDFXFA_App::GetInstance();
        CPDFXFA_Document* pDocument = FX_NEW CPDFXFA_Document(pPDFDoc, pProvider);
        return pDocument;
 }
@@ -347,10 +340,8 @@ DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadMemDocument(const void* data_buf, int s
        if (!pPDFDoc)
                return NULL;
 
-       CPDFXFA_App* pProvider = FPDFXFA_GetApp();
+       CPDFXFA_App* pProvider = CPDFXFA_App::GetInstance();
        CPDFXFA_Document* pDocument = FX_NEW CPDFXFA_Document(pPDFDoc, pProvider);
-       //pDocument->LoadXFADoc();
-
        return pDocument;
 }
 
@@ -372,10 +363,8 @@ DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadCustomDocument(FPDF_FILEACCESS* pFileAc
        if (!pPDFDoc)
                return NULL;
 
-       CPDFXFA_App* pProvider = FPDFXFA_GetApp();
+       CPDFXFA_App* pProvider = CPDFXFA_App::GetInstance();
        CPDFXFA_Document* pDocument = FX_NEW CPDFXFA_Document(pPDFDoc, pProvider);
-       //pDocument->LoadXFADoc();
-
        return pDocument;
 }
 
index e8bd9d0..2c096c7 100644 (file)
@@ -1,7 +1,7 @@
 // Copyright 2014 PDFium Authors. All rights reserved.\r
 // Use of this source code is governed by a BSD-style license that can be\r
 // found in the LICENSE file.\r
\r
+\r
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
 \r
 #include "../../../public/fpdf_formfill.h"\r
 #include "../../include/jsapi/fxjs_v8.h"\r
 #include "../../include/javascript/IJavaScript.h"\r
 #include "../../include/fpdfxfa/fpdfxfa_app.h"\r
-CPDFXFA_App* CPDFXFA_App::m_pApp = NULL;\r
 \r
-CPDFXFA_App* FPDFXFA_GetApp()\r
-{\r
-       if (!CPDFXFA_App::m_pApp)\r
-               CPDFXFA_App::m_pApp = FX_NEW CPDFXFA_App();\r
+CPDFXFA_App* CPDFXFA_App::g_pApp = NULL;\r
 \r
-       return CPDFXFA_App::m_pApp;\r
+CPDFXFA_App* CPDFXFA_App::GetInstance()\r
+{\r
+    if (!g_pApp) {\r
+        g_pApp = FX_NEW CPDFXFA_App();\r
+    }\r
+    return g_pApp;\r
 }\r
 \r
-void FPDFXFA_ReleaseApp()\r
+void CPDFXFA_App::ReleaseInstance()\r
 {\r
-       if (CPDFXFA_App::m_pApp)\r
-               delete CPDFXFA_App::m_pApp;\r
-       CPDFXFA_App::m_pApp = NULL;\r
+    delete g_pApp;\r
+    g_pApp = NULL;\r
 }\r
 \r
 CJS_RuntimeFactory* g_GetJSRuntimeFactory()\r
 {\r
-       static CJS_RuntimeFactory g_JSRuntimeFactory;\r
-       return &g_JSRuntimeFactory;\r
+    static CJS_RuntimeFactory g_JSRuntimeFactory;\r
+    return &g_JSRuntimeFactory;\r
 }\r
 \r
-CPDFXFA_App::CPDFXFA_App() : \r
-       m_pXFAApp(NULL), \r
-       m_pFontMgr(NULL),\r
-       m_hJSERuntime(NULL),\r
-       //m_pJSRuntime(NULL),\r
-       //m_pEnv(NULL),\r
-       m_csAppType(JS_STR_VIEWERTYPE_STANDARD)\r
+CPDFXFA_App::CPDFXFA_App() :\r
+    m_bInitRuntime(FALSE),\r
+    m_pXFAApp(NULL),\r
+    m_pFontMgr(NULL),\r
+    m_hJSERuntime(NULL),\r
+    m_csAppType(JS_STR_VIEWERTYPE_STANDARD)\r
 {\r
-       m_pJSRuntimeFactory = NULL;\r
-       m_pJSRuntimeFactory = g_GetJSRuntimeFactory();\r
-       m_pJSRuntimeFactory->AddRef();\r
-       m_pEnvList.RemoveAll(); \r
-       m_bInitRuntime = FALSE;\r
+    m_pJSRuntimeFactory = g_GetJSRuntimeFactory();\r
+    m_pJSRuntimeFactory->AddRef();\r
+    m_pEnvList.RemoveAll();\r
 }\r
-//IFXJS_Runtime* CPDFXFA_App::GetJSRuntime()\r
-//{\r
-//     FXSYS_assert(m_pJSRuntimeFactory);\r
-//     if(!m_pJSRuntime)\r
-//             m_pJSRuntime = m_pJSRuntimeFactory->NewJSRuntime(this);\r
-//     return m_pJSRuntime;\r
-//}\r
 \r
 CPDFXFA_App::~CPDFXFA_App()\r
 {\r
-       if (m_pFontMgr)\r
-       {\r
-               m_pFontMgr->Release();\r
-               m_pFontMgr = NULL;\r
-       }\r
-\r
-       if (m_pXFAApp)\r
-       {\r
-               m_pXFAApp->Release();\r
-               m_pXFAApp = NULL;\r
-       }\r
+    delete m_pFontMgr;\r
+    m_pFontMgr = NULL;\r
 \r
-       //if (m_pJSRuntime && m_pJSRuntimeFactory)\r
-       //      m_pJSRuntimeFactory->DeleteJSRuntime(m_pJSRuntime);\r
-       m_pJSRuntimeFactory->Release();\r
+    delete m_pXFAApp;\r
+    m_pXFAApp = NULL;\r
 \r
+    m_pJSRuntimeFactory->Release();\r
+    FXJSE_Runtime_Release(m_hJSERuntime);\r
+    m_hJSERuntime = NULL;\r
 \r
-       if (m_hJSERuntime)\r
-       {\r
-               FXJSE_Runtime_Release(m_hJSERuntime);\r
-               m_hJSERuntime = NULL;\r
-       }\r
-\r
-       FXJSE_Finalize();\r
-\r
-       BC_Library_Destory();\r
+    FXJSE_Finalize();\r
+    BC_Library_Destory();\r
 }\r
 \r
 FX_BOOL CPDFXFA_App::Initialize()\r
 {\r
-       BC_Library_Init();\r
+    BC_Library_Init();\r
+    FXJSE_Initialize();\r
 \r
-       FXJSE_Initialize();\r
-       m_hJSERuntime = FXJSE_Runtime_Create();\r
+    m_hJSERuntime = FXJSE_Runtime_Create();\r
+    if (!m_hJSERuntime)\r
+        return FALSE;\r
 \r
-       if (!m_hJSERuntime) \r
-               return FALSE;\r
+    m_pXFAApp = IXFA_App::Create(this);\r
+    if (!m_pXFAApp)\r
+        return FALSE;\r
 \r
-       //m_pJSRuntime = m_pJSRuntimeFactory->NewJSRuntime(this);\r
-       \r
-       m_pXFAApp = IXFA_App::Create(this);\r
-       if (!m_pXFAApp)\r
-               return FALSE;\r
+    m_pFontMgr = IXFA_FontMgr::CreateDefault();\r
+    if (!m_pFontMgr)\r
+        return FALSE;\r
 \r
-       m_pFontMgr = XFA_GetDefaultFontMgr();\r
-       if (!m_pFontMgr)\r
-               return FALSE;\r
-\r
-       m_pXFAApp->SetDefaultFontMgr(m_pFontMgr);\r
+    m_pXFAApp->SetDefaultFontMgr(m_pFontMgr);\r
+    return TRUE;\r
+}\r
 \r
-       return TRUE;\r
+FX_BOOL CPDFXFA_App::InitRuntime(FX_BOOL bReset) {\r
+    if (bReset) {\r
+        m_bInitRuntime = FALSE;\r
+        return TRUE;\r
+    }\r
+    if (m_bInitRuntime) {\r
+        return TRUE;\r
+    }\r
+    m_bInitRuntime = TRUE;\r
+    return FALSE;\r
 }\r
 \r
 FX_BOOL CPDFXFA_App::AddFormFillEnv(CPDFDoc_Environment* pEnv)\r
 {\r
-       if (!pEnv) return FALSE;\r
+    if (!pEnv) return FALSE;\r
 \r
-       m_pEnvList.Add(pEnv);\r
-       return TRUE;\r
+    m_pEnvList.Add(pEnv);\r
+    return TRUE;\r
 }\r
 \r
 FX_BOOL CPDFXFA_App::RemoveFormFillEnv(CPDFDoc_Environment* pEnv)\r
 {\r
-       if (!pEnv) return FALSE;\r
+    if (!pEnv) return FALSE;\r
 \r
-       int nFind = m_pEnvList.Find(pEnv);\r
-       if (nFind != -1) {\r
-               m_pEnvList.RemoveAt(nFind);\r
-               return TRUE;\r
-       }\r
+    int nFind = m_pEnvList.Find(pEnv);\r
+    if (nFind != -1) {\r
+        m_pEnvList.RemoveAt(nFind);\r
+        return TRUE;\r
+    }\r
 \r
-       return FALSE;\r
+    return FALSE;\r
 }\r
-void CPDFXFA_App::ReleaseRuntime() \r
+void CPDFXFA_App::ReleaseRuntime()\r
 {\r
-       v8::Global<v8::Context> context;\r
-       JS_ReleaseRuntime((IJS_Runtime*)m_hJSERuntime, context);\r
+    v8::Global<v8::Context> context;\r
+    JS_ReleaseRuntime((IJS_Runtime*)m_hJSERuntime, context);\r
 }\r
 \r
 void CPDFXFA_App::GetAppType(CFX_WideString &wsAppType)\r
 {\r
-       wsAppType = m_csAppType;\r
+    wsAppType = m_csAppType;\r
 }\r
 \r
 void CPDFXFA_App::GetAppName(CFX_WideString& wsName)\r
 {\r
-       CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
-       if (pEnv)\r
-       {\r
-               wsName = pEnv->FFI_GetAppName();\r
-       }\r
+    CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
+    if (pEnv)\r
+    {\r
+        wsName = pEnv->FFI_GetAppName();\r
+    }\r
 }\r
 \r
 void CPDFXFA_App::SetAppType(FX_WSTR wsAppType)\r
 {\r
-       m_csAppType = wsAppType;\r
+    m_csAppType = wsAppType;\r
 }\r
 \r
 void CPDFXFA_App::GetLanguage(CFX_WideString &wsLanguage)\r
 {\r
-       CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
-       if (pEnv)\r
-       {\r
-               wsLanguage = pEnv->FFI_GetLanguage();\r
-       }\r
+    CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
+    if (pEnv)\r
+    {\r
+        wsLanguage = pEnv->FFI_GetLanguage();\r
+    }\r
 }\r
 \r
 void CPDFXFA_App::GetPlatform(CFX_WideString &wsPlatform)\r
 {\r
-       CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
-       if (pEnv)\r
-       {\r
-               wsPlatform = pEnv->FFI_GetPlatform();\r
-       }\r
+    CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
+    if (pEnv)\r
+    {\r
+        wsPlatform = pEnv->FFI_GetPlatform();\r
+    }\r
 }\r
 \r
 void CPDFXFA_App::GetVariation(CFX_WideString &wsVariation)\r
 {\r
-       wsVariation = JS_STR_VIEWERVARIATION;\r
+    wsVariation = JS_STR_VIEWERVARIATION;\r
 }\r
 \r
 void CPDFXFA_App::GetVersion(CFX_WideString &wsVersion)\r
 {\r
-       wsVersion = JS_STR_VIEWERVERSION_XFA;\r
+    wsVersion = JS_STR_VIEWERVERSION_XFA;\r
 }\r
 \r
 void CPDFXFA_App::Beep(FX_DWORD dwType)\r
 {\r
-       CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
-       if (pEnv)\r
-       {\r
-               pEnv->JS_appBeep(dwType);\r
-       }\r
+    CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
+    if (pEnv)\r
+    {\r
+        pEnv->JS_appBeep(dwType);\r
+    }\r
 }\r
 \r
 FX_INT32 CPDFXFA_App::MsgBox(FX_WSTR wsMessage, FX_WSTR wsTitle, FX_DWORD dwIconType, FX_DWORD dwButtonType)\r
 {\r
-       CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
-       if (!pEnv) \r
-               return -1;\r
-\r
-       FX_DWORD iconType = 0;\r
-       int iButtonType = 0;\r
-       switch (dwIconType)\r
-       {\r
-       case XFA_MBICON_Error:\r
-               iconType |= 0;\r
-               break;\r
-       case XFA_MBICON_Warning:\r
-               iconType |= 1;\r
-               break;\r
-       case XFA_MBICON_Question:\r
-               iconType |= 2;\r
-               break;\r
-       case XFA_MBICON_Status:\r
-               iconType |= 3;\r
-               break;\r
-       }\r
-       switch (dwButtonType)\r
-       {\r
-       case  XFA_MB_OK:\r
-               iButtonType |= 0;\r
-               break;\r
-       case XFA_MB_OKCancel:\r
-               iButtonType |= 1;\r
-               break;\r
-       case XFA_MB_YesNo:\r
-               iButtonType |= 2;\r
-               break;\r
-       case XFA_MB_YesNoCancel:\r
-               iButtonType |= 3;\r
-               break;\r
-       }\r
-       FX_INT32 iRet = pEnv->JS_appAlert(wsMessage.GetPtr(), wsTitle.GetPtr(), iButtonType, iconType);\r
-       switch (iRet)\r
-       {\r
-       case 1:\r
-               return XFA_IDOK;\r
-       case 2:\r
-               return XFA_IDCancel;\r
-       case 3:\r
-               return XFA_IDNo;\r
-       case 4:\r
-               return XFA_IDYes;\r
-       }\r
-       return XFA_IDYes;\r
+    CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
+    if (!pEnv)\r
+        return -1;\r
+\r
+    FX_DWORD iconType = 0;\r
+    int iButtonType = 0;\r
+    switch (dwIconType)\r
+    {\r
+    case XFA_MBICON_Error:\r
+        iconType |= 0;\r
+        break;\r
+    case XFA_MBICON_Warning:\r
+        iconType |= 1;\r
+        break;\r
+    case XFA_MBICON_Question:\r
+        iconType |= 2;\r
+        break;\r
+    case XFA_MBICON_Status:\r
+        iconType |= 3;\r
+        break;\r
+    }\r
+    switch (dwButtonType)\r
+    {\r
+    case  XFA_MB_OK:\r
+        iButtonType |= 0;\r
+        break;\r
+    case XFA_MB_OKCancel:\r
+        iButtonType |= 1;\r
+        break;\r
+    case XFA_MB_YesNo:\r
+        iButtonType |= 2;\r
+        break;\r
+    case XFA_MB_YesNoCancel:\r
+        iButtonType |= 3;\r
+        break;\r
+    }\r
+    FX_INT32 iRet = pEnv->JS_appAlert(wsMessage.GetPtr(), wsTitle.GetPtr(), iButtonType, iconType);\r
+    switch (iRet)\r
+    {\r
+    case 1:\r
+        return XFA_IDOK;\r
+    case 2:\r
+        return XFA_IDCancel;\r
+    case 3:\r
+        return XFA_IDNo;\r
+    case 4:\r
+        return XFA_IDYes;\r
+    }\r
+    return XFA_IDYes;\r
 }\r
 \r
 void CPDFXFA_App::Response(CFX_WideString &wsAnswer, FX_WSTR wsQuestion, FX_WSTR wsTitle, FX_WSTR wsDefaultAnswer, FX_BOOL bMark)\r
 {\r
-       CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
-       if (pEnv)\r
-       {\r
-               int nLength = 2048;\r
-               char* pBuff = new char[nLength];\r
-               nLength = pEnv->JS_appResponse(wsQuestion.GetPtr(), wsTitle.GetPtr(), wsDefaultAnswer.GetPtr(), NULL, bMark, pBuff, nLength);\r
-               if(nLength > 0)\r
-               {\r
-                       nLength = nLength>2046?2046:nLength;\r
-                       pBuff[nLength] = 0;\r
-                       pBuff[nLength+1] = 0;\r
-                       wsAnswer = CFX_WideString::FromUTF16LE((unsigned short*)pBuff, nLength);\r
-               }\r
-               delete[] pBuff;\r
-       }\r
+    CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
+    if (pEnv)\r
+    {\r
+        int nLength = 2048;\r
+        char* pBuff = new char[nLength];\r
+        nLength = pEnv->JS_appResponse(wsQuestion.GetPtr(), wsTitle.GetPtr(), wsDefaultAnswer.GetPtr(), NULL, bMark, pBuff, nLength);\r
+        if(nLength > 0)\r
+        {\r
+            nLength = nLength>2046?2046:nLength;\r
+            pBuff[nLength] = 0;\r
+            pBuff[nLength+1] = 0;\r
+            wsAnswer = CFX_WideString::FromUTF16LE((unsigned short*)pBuff, nLength);\r
+        }\r
+        delete[] pBuff;\r
+    }\r
 }\r
 \r
 FX_INT32 CPDFXFA_App::GetCurDocumentInBatch()\r
 {\r
-       CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
-       if (pEnv)\r
-       {\r
-               return pEnv->FFI_GetCurDocument();\r
-       }\r
-       return 0;\r
+    CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
+    if (pEnv)\r
+    {\r
+        return pEnv->FFI_GetCurDocument();\r
+    }\r
+    return 0;\r
 }\r
 \r
 FX_INT32 CPDFXFA_App::GetDocumentCountInBatch()\r
 {\r
-       CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
-       if (pEnv)\r
-       {\r
-               return pEnv->FFI_GetDocumentCount();\r
-       }\r
+    CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
+    if (pEnv)\r
+    {\r
+        return pEnv->FFI_GetDocumentCount();\r
+    }\r
 \r
-       return 0;\r
+    return 0;\r
 }\r
 \r
 IFX_FileRead* CPDFXFA_App::DownloadURL(FX_WSTR wsURL)\r
 {\r
-       CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
-       if (pEnv)\r
-       {\r
-               return pEnv->FFI_DownloadFromURL(wsURL.GetPtr());\r
-       }\r
-       return NULL;\r
+    CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
+    if (pEnv)\r
+    {\r
+        return pEnv->FFI_DownloadFromURL(wsURL.GetPtr());\r
+    }\r
+    return NULL;\r
 }\r
 \r
-FX_BOOL CPDFXFA_App::PostRequestURL(FX_WSTR wsURL, FX_WSTR wsData, FX_WSTR wsContentType, \r
-       FX_WSTR wsEncode, FX_WSTR wsHeader, CFX_WideString &wsResponse)\r
+FX_BOOL CPDFXFA_App::PostRequestURL(FX_WSTR wsURL, FX_WSTR wsData, FX_WSTR wsContentType,\r
+                                            FX_WSTR wsEncode, FX_WSTR wsHeader, CFX_WideString &wsResponse)\r
 {\r
-       CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
-       if (pEnv)\r
-       {\r
-               wsResponse = pEnv->FFI_PostRequestURL(wsURL.GetPtr(), wsData.GetPtr(), wsContentType.GetPtr(), wsEncode.GetPtr(), wsHeader.GetPtr());\r
-               return TRUE;\r
-       }\r
-       return FALSE;\r
+    CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
+    if (pEnv)\r
+    {\r
+        wsResponse = pEnv->FFI_PostRequestURL(wsURL.GetPtr(), wsData.GetPtr(), wsContentType.GetPtr(), wsEncode.GetPtr(), wsHeader.GetPtr());\r
+        return TRUE;\r
+    }\r
+    return FALSE;\r
 }\r
 \r
 FX_BOOL CPDFXFA_App::PutRequestURL(FX_WSTR wsURL, FX_WSTR wsData, FX_WSTR wsEncode)\r
 {\r
-       CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
-       if (pEnv)\r
-       {\r
-               return pEnv->FFI_PutRequestURL(wsURL.GetPtr(), wsData.GetPtr(), wsEncode.GetPtr());\r
-       }\r
-       return FALSE;\r
+    CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
+    if (pEnv)\r
+    {\r
+        return pEnv->FFI_PutRequestURL(wsURL.GetPtr(), wsData.GetPtr(), wsEncode.GetPtr());\r
+    }\r
+    return FALSE;\r
 }\r
 \r
 void CPDFXFA_App::LoadString(FX_INT32 iStringID, CFX_WideString &wsString)\r
 {\r
-       switch (iStringID)\r
-       {\r
-       case XFA_IDS_ValidateFailed:\r
-               wsString = L"%s validate failed";\r
-               return;\r
-       case XFA_IDS_CalcOverride:\r
-               wsString = L"Calculate Override";\r
-               return;\r
-       case XFA_IDS_ModifyField:\r
-               wsString = L"Are you sure you want to modify this field?";\r
-               return;\r
-       case XFA_IDS_NotModifyField:\r
-               wsString = L"You are not allowed to modify this field.";\r
-               return;\r
-       case XFA_IDS_AppName:\r
-               wsString = L"Foxit";\r
-               return;\r
-       case XFA_IDS_ImageFilter:\r
-               wsString = L"Image Files(*.bmp;*.jpg;*.png;*.gif;*.tif)|*.bmp;*.jpg;*.png;*.gif;*.tif|All Files(*.*)|*.*||";\r
-               return;\r
-       case XFA_IDS_UNKNOW_CATCHED:\r
-               wsString = L"unknown error is catched!";\r
-               return;\r
-       case XFA_IDS_Unable_TO_SET:\r
-               wsString = L"Unable to set ";\r
-               return;\r
-       case XFA_IDS_VALUE_EXCALMATORY:\r
-               wsString = L" value!";\r
-               return;\r
-       case XFA_IDS_INVALID_ENUM_VALUE:\r
-               wsString = L"Invalid enumerated value: ";\r
-               return;\r
-       case XFA_IDS_UNSUPPORT_METHOD:\r
-               wsString = L"unsupport %s method.";\r
-               return;\r
-       case XFA_IDS_UNSUPPORT_PROP:\r
-               wsString = L"unsupport %s property.";\r
-               return;\r
-       case XFA_IDS_INVAlID_PROP_SET:\r
-               wsString = L"Invalid property set operation;";\r
-               return;\r
-       case XFA_IDS_NOT_DEFAUL_VALUE:\r
-               wsString = L" doesn't have a default property";\r
-               return;\r
-       case XFA_IDS_UNABLE_SET_LANGUAGE:\r
-               wsString = L"Unable to set language value!";\r
-               return;\r
-       case XFA_IDS_UNABLE_SET_NUMPAGES:\r
-               wsString = L"Unable to set numPages value!";\r
-               return;\r
-       case XFA_IDS_UNABLE_SET_PLATFORM:\r
-               wsString = L"Unable to set platform value!";\r
-               return;\r
-       case XFA_IDS_UNABLE_SET_VALIDATIONENABLE:\r
-               wsString = L"Unable to set validationsEnabled value!";\r
-               return;\r
-       case XFA_IDS_UNABLE_SET_VARIATION:\r
-               wsString = L"Unable to set variation value!";\r
-               return;\r
-       case XFA_IDS_UNABLE_SET_VERSION:\r
-               wsString = L"Unable to set version value!";\r
-               return;\r
-       case XFA_IDS_UNABLE_SET_READY:\r
-               wsString = L"Unable to set ready value!";\r
-               return;\r
-       case XFA_IDS_NUMBER_OF_OCCUR:\r
-               wsString = L"The element [%s] has violated its allowable number of occurrences";\r
-               return;\r
-       case XFA_IDS_UNABLE_SET_CLASS_NAME:\r
-               wsString = L"Unable to set className value!";\r
-               return;\r
-       case XFA_IDS_UNABLE_SET_LENGTH_VALUE:\r
-               wsString = L"Unable to set length value!";\r
-               return;\r
-       case XFA_IDS_UNSUPPORT_CHAR:\r
-               wsString = L"unsupported char '%c'";\r
-               return;\r
-       case XFA_IDS_BAD_SUFFIX:\r
-               wsString = L"bad suffix on number";\r
-               return;\r
-       case XFA_IDS_EXPECTED_IDENT:\r
-               wsString = L"expected identifier instead of '%s'";\r
-               return;\r
-       case XFA_IDS_EXPECTED_STRING:\r
-               wsString = L"expected '%s' instead of '%s'";\r
-               return;\r
-       case XFA_IDS_INVALIDATE_CHAR:\r
-               wsString = L"invalidate char '%c'";\r
-               return;\r
-       case XFA_IDS_REDEFINITION:\r
-               wsString = L"'%s' redefinition ";\r
-               return;\r
-       case XFA_IDS_INVALIDATE_TOKEN:\r
-               wsString = L"invalidate token '%s'";\r
-               return;\r
-       case XFA_IDS_INVALIDATE_EXPRESSION:\r
-               wsString = L"invalidate expression '%s'";\r
-               return;\r
-       case XFA_IDS_UNDEFINE_IDENTIFIER:\r
-               wsString = L"undefined identifier '%s'";\r
-               return;\r
-       case XFA_IDS_INVALIDATE_LEFTVALUE:\r
-               wsString = L"invalidate left-value '%s'";\r
-               return;\r
-       case XFA_IDS_COMPILER_ERROR:\r
-               wsString = L"compiler error";\r
-               return;\r
-       case XFA_IDS_CANNOT_MODIFY_VALUE:\r
-               wsString = L"can't modify the '%s' value";\r
-               return;\r
-       case XFA_IDS_ERROR_PARAMETERS:\r
-               wsString = L"function '%s' has not %d parameters";\r
-               return;\r
-       case XFA_IDS_EXPECT_ENDIF:\r
-               wsString = L"expected 'endif' instead of '%s'";\r
-               return;\r
-       case XFA_IDS_UNEXPECTED_EXPRESSION:\r
-               wsString = L"unexpected expression '%s'";\r
-               return;\r
-       case XFA_IDS_CONDITION_IS_NULL:\r
-               wsString = L"condition is null";\r
-               return;\r
-       case XFA_IDS_ILLEGALBREAK:\r
-               wsString = L"illegal break";\r
-               return;\r
-       case XFA_IDS_ILLEGALCONTINUE:\r
-               wsString = L"illegal continue";\r
-               return;\r
-       case XFA_IDS_EXPECTED_OPERATOR:\r
-               wsString = L"expected operator '%s' instead of '%s'";\r
-               return;\r
-       case XFA_IDS_DIVIDE_ZERO:\r
-               wsString = L"divide by zero";\r
-               return;\r
-       case XFA_IDS_CANNOT_COVERT_OBJECT:\r
-               wsString = L"%s.%s can not covert to object";\r
-               return;\r
-       case XFA_IDS_NOT_FOUND_CONTAINER:\r
-               wsString = L"can not found container '%s'";\r
-               return;\r
-       case XFA_IDS_NOT_FOUND_PROPERTY:\r
-               wsString = L"can not found property '%s'";\r
-               return;\r
-       case XFA_IDS_NOT_FOUND_METHOD:\r
-               wsString = L"can not found method '%s'";\r
-               return;\r
-       case XFA_IDS_NOT_FOUND_CONST:\r
-               wsString = L"can not found const '%s'";\r
-               return;\r
-       case XFA_IDS_NOT_ASSIGN_OBJECT:\r
-               wsString = L"can not direct assign value to object";\r
-               return;\r
-       case XFA_IDS_IVALIDATE_INSTRUCTION:\r
-               wsString = L"invalidate instruction";\r
-               return;\r
-       case XFA_IDS_EXPECT_NUMBER:\r
-               wsString = L"expected number instead of '%s'";\r
-               return;\r
-       case XFA_IDS_VALIDATE_OUT_ARRAY:\r
-               wsString = L"validate access index '%s' out of array";\r
-               return;\r
-       case XFA_IDS_CANNOT_ASSIGN_IDENT:\r
-               wsString = L"can not assign to %s";\r
-               return;\r
-       case XFA_IDS_NOT_FOUNT_FUNCTION:\r
-               wsString = L"can not found '%s' function";\r
-               return;\r
-       case XFA_IDS_NOT_ARRAY:\r
-               wsString = L"'%s' doesn't an array";\r
-               return;\r
-       case XFA_IDS_OUT_ARRAY:\r
-               wsString = L"out of range of '%s' array";\r
-               return;\r
-       case XFA_IDS_NOT_SUPPORT_CALC:\r
-               wsString = L"'%s' operator can not support array calculate";\r
-               return;\r
-       case XFA_IDS_ARGUMENT_NOT_ARRAY:\r
-               wsString = L"'%s' function's %d argument can not be array";\r
-               return;\r
-       case XFA_IDS_ARGUMENT_EXPECT_CONTAINER:\r
-               wsString = L"'%s' argument expected a container";\r
-               return;\r
-       case XFA_IDS_ACCESS_PROPERTY_IN_NOT_OBJECT:\r
-               wsString = L"an attempt was made to reference property '%s' of a non-object in SOM expression %s";\r
-               return;\r
-       case XFA_IDS_FUNCTION_IS_BUILDIN:\r
-               wsString = L"function '%s' is buildin";\r
-               return;\r
-       case XFA_IDS_ERROR_MSG:\r
-               wsString = L"%s : %s";\r
-               return;\r
-       case XFA_IDS_INDEX_OUT_OF_BOUNDS:\r
-               wsString = L"Index value is out of bounds";\r
-               return;\r
-       case XFA_IDS_INCORRECT_NUMBER_OF_METHOD:\r
-               wsString = L"Incorrect number of parameters calling method '%s'";\r
-               return;\r
-       case XFA_IDS_ARGUMENT_MISMATCH:\r
-               wsString = L"Argument mismatch in property or function argument";\r
-               return;\r
-       case XFA_IDS_INVALID_ENUMERATE:\r
-               wsString = L"Invalid enumerated value: %s";\r
-               return;\r
-       case XFA_IDS_INVALID_APPEND:\r
-               wsString = L"Invalid append operation: %s cannot have a child element of %s";\r
-               return;\r
-       case XFA_IDS_SOM_EXPECTED_LIST:\r
-               wsString = L"SOM expression returned list when single result was expected";\r
-               return;\r
-       case XFA_IDS_NOT_HAVE_PROPERTY:\r
-               wsString = L"'%s' doesn't have property '%s'";\r
-               return;\r
-       case XFA_IDS_INVALID_NODE_TYPE:\r
-               wsString = L"Invalid node type : '%s'";\r
-               return;\r
-       case XFA_IDS_VIOLATE_BOUNDARY:\r
-               wsString = L"The element [%s] has violated its allowable number of occurrences";\r
-               return;\r
-       case XFA_IDS_SERVER_DENY:\r
-               wsString = L"Server does not permit";\r
-               return;\r
-       /*case XFA_IDS_StringWeekDay_Sun:\r
-               wsString = L"?¨¹¨¨?";\r
-               return;\r
-       case XFA_IDS_StringWeekDay_Mon:\r
-               wsString = L"?¨¹¨°?";\r
-               return;\r
-       case XFA_IDS_StringWeekDay_Tue:\r
-               wsString = L"?¨¹?t";\r
-               return;\r
-       case XFA_IDS_StringWeekDay_Wed:\r
-               wsString = L"?¨¹¨¨y";\r
-               return;\r
-       case XFA_IDS_StringWeekDay_Thu:\r
-               wsString = L"?¨¹??";\r
-               return;\r
-       case XFA_IDS_StringWeekDay_Fri:\r
-               wsString = L"?¨¹??";\r
-               return;\r
-       case XFA_IDS_StringWeekDay_Sat:\r
-               wsString = L"?¨¹¨¢¨´";\r
-               return;\r
-       case XFA_IDS_StringMonth_Jan:\r
-               wsString = L"1??";\r
-               return;\r
-       case XFA_IDS_StringMonth_Feb:\r
-               wsString = L"2??";\r
-               return;\r
-       case XFA_IDS_StringMonth_March:\r
-               wsString = L"3??";\r
-               return;\r
-       case XFA_IDS_StringMonth_April:\r
-               wsString = L"4??";\r
-               return;\r
-       case XFA_IDS_StringMonth_May:\r
-               wsString = L"5??";\r
-               return;\r
-       case XFA_IDS_StringMonth_June:\r
-               wsString = L"6??";\r
-               return;\r
-       case XFA_IDS_StringMonth_July:\r
-               wsString = L"7??";\r
-               return;\r
-       case XFA_IDS_StringMonth_Aug:\r
-               wsString = L"8??";\r
-               return;\r
-       case XFA_IDS_StringMonth_Sept:\r
-               wsString = L"9??";\r
-               return;\r
-       case XFA_IDS_StringMonth_Oct:\r
-               wsString = L"10??";\r
-               return;\r
-       case XFA_IDS_StringMonth_Nov:\r
-               wsString = L"11??";\r
-               return;\r
-       case XFA_IDS_StringMonth_Dec:\r
-               wsString = L"12??";\r
-               return;\r
-       case XFA_IDS_String_Today:\r
-               wsString = L"??¨¬¨¬";\r
-               return;*/\r
-       case XFA_IDS_ValidateLimit:\r
-               wsString = FX_WSTRC(L"Message limit exceeded. Remaining %d validation errors not reported.");\r
-               return;\r
-       case XFA_IDS_ValidateNullWarning:\r
-               wsString = FX_WSTRC(L"%s cannot be left blank. To ignore validations for %s, click Ignore.");\r
-               return;\r
-       case XFA_IDS_ValidateNullError:\r
-               wsString = FX_WSTRC(L"%s cannot be left blank.");\r
-               return;\r
-       case XFA_IDS_ValidateWarning:\r
-               wsString = FX_WSTRC(L"The value you entered for %s is invalid. To ignore validations for %s, click Ignore.");\r
-               return;\r
-       case XFA_IDS_ValidateError:\r
-               wsString = FX_WSTRC(L"The value you entered for %s is invalid.");\r
-               return;\r
-       }\r
+    switch (iStringID)\r
+    {\r
+    case XFA_IDS_ValidateFailed:\r
+        wsString = L"%s validate failed";\r
+        return;\r
+    case XFA_IDS_CalcOverride:\r
+        wsString = L"Calculate Override";\r
+        return;\r
+    case XFA_IDS_ModifyField:\r
+        wsString = L"Are you sure you want to modify this field?";\r
+        return;\r
+    case XFA_IDS_NotModifyField:\r
+        wsString = L"You are not allowed to modify this field.";\r
+        return;\r
+    case XFA_IDS_AppName:\r
+        wsString = L"Foxit";\r
+        return;\r
+    case XFA_IDS_ImageFilter:\r
+        wsString = L"Image Files(*.bmp;*.jpg;*.png;*.gif;*.tif)|*.bmp;*.jpg;*.png;*.gif;*.tif|All Files(*.*)|*.*||";\r
+        return;\r
+    case XFA_IDS_UNKNOW_CATCHED:\r
+        wsString = L"unknown error is catched!";\r
+        return;\r
+    case XFA_IDS_Unable_TO_SET:\r
+        wsString = L"Unable to set ";\r
+        return;\r
+    case XFA_IDS_VALUE_EXCALMATORY:\r
+        wsString = L" value!";\r
+        return;\r
+    case XFA_IDS_INVALID_ENUM_VALUE:\r
+        wsString = L"Invalid enumerated value: ";\r
+        return;\r
+    case XFA_IDS_UNSUPPORT_METHOD:\r
+        wsString = L"unsupport %s method.";\r
+        return;\r
+    case XFA_IDS_UNSUPPORT_PROP:\r
+        wsString = L"unsupport %s property.";\r
+        return;\r
+    case XFA_IDS_INVAlID_PROP_SET:\r
+        wsString = L"Invalid property set operation;";\r
+        return;\r
+    case XFA_IDS_NOT_DEFAUL_VALUE:\r
+        wsString = L" doesn't have a default property";\r
+        return;\r
+    case XFA_IDS_UNABLE_SET_LANGUAGE:\r
+        wsString = L"Unable to set language value!";\r
+        return;\r
+    case XFA_IDS_UNABLE_SET_NUMPAGES:\r
+        wsString = L"Unable to set numPages value!";\r
+        return;\r
+    case XFA_IDS_UNABLE_SET_PLATFORM:\r
+        wsString = L"Unable to set platform value!";\r
+        return;\r
+    case XFA_IDS_UNABLE_SET_VALIDATIONENABLE:\r
+        wsString = L"Unable to set validationsEnabled value!";\r
+        return;\r
+    case XFA_IDS_UNABLE_SET_VARIATION:\r
+        wsString = L"Unable to set variation value!";\r
+        return;\r
+    case XFA_IDS_UNABLE_SET_VERSION:\r
+        wsString = L"Unable to set version value!";\r
+        return;\r
+    case XFA_IDS_UNABLE_SET_READY:\r
+        wsString = L"Unable to set ready value!";\r
+        return;\r
+    case XFA_IDS_NUMBER_OF_OCCUR:\r
+        wsString = L"The element [%s] has violated its allowable number of occurrences";\r
+        return;\r
+    case XFA_IDS_UNABLE_SET_CLASS_NAME:\r
+        wsString = L"Unable to set className value!";\r
+        return;\r
+    case XFA_IDS_UNABLE_SET_LENGTH_VALUE:\r
+        wsString = L"Unable to set length value!";\r
+        return;\r
+    case XFA_IDS_UNSUPPORT_CHAR:\r
+        wsString = L"unsupported char '%c'";\r
+        return;\r
+    case XFA_IDS_BAD_SUFFIX:\r
+        wsString = L"bad suffix on number";\r
+        return;\r
+    case XFA_IDS_EXPECTED_IDENT:\r
+        wsString = L"expected identifier instead of '%s'";\r
+        return;\r
+    case XFA_IDS_EXPECTED_STRING:\r
+        wsString = L"expected '%s' instead of '%s'";\r
+        return;\r
+    case XFA_IDS_INVALIDATE_CHAR:\r
+        wsString = L"invalidate char '%c'";\r
+        return;\r
+    case XFA_IDS_REDEFINITION:\r
+        wsString = L"'%s' redefinition ";\r
+        return;\r
+    case XFA_IDS_INVALIDATE_TOKEN:\r
+        wsString = L"invalidate token '%s'";\r
+        return;\r
+    case XFA_IDS_INVALIDATE_EXPRESSION:\r
+        wsString = L"invalidate expression '%s'";\r
+        return;\r
+    case XFA_IDS_UNDEFINE_IDENTIFIER:\r
+        wsString = L"undefined identifier '%s'";\r
+        return;\r
+    case XFA_IDS_INVALIDATE_LEFTVALUE:\r
+        wsString = L"invalidate left-value '%s'";\r
+        return;\r
+    case XFA_IDS_COMPILER_ERROR:\r
+        wsString = L"compiler error";\r
+        return;\r
+    case XFA_IDS_CANNOT_MODIFY_VALUE:\r
+        wsString = L"can't modify the '%s' value";\r
+        return;\r
+    case XFA_IDS_ERROR_PARAMETERS:\r
+        wsString = L"function '%s' has not %d parameters";\r
+        return;\r
+    case XFA_IDS_EXPECT_ENDIF:\r
+        wsString = L"expected 'endif' instead of '%s'";\r
+        return;\r
+    case XFA_IDS_UNEXPECTED_EXPRESSION:\r
+        wsString = L"unexpected expression '%s'";\r
+        return;\r
+    case XFA_IDS_CONDITION_IS_NULL:\r
+        wsString = L"condition is null";\r
+        return;\r
+    case XFA_IDS_ILLEGALBREAK:\r
+        wsString = L"illegal break";\r
+        return;\r
+    case XFA_IDS_ILLEGALCONTINUE:\r
+        wsString = L"illegal continue";\r
+        return;\r
+    case XFA_IDS_EXPECTED_OPERATOR:\r
+        wsString = L"expected operator '%s' instead of '%s'";\r
+        return;\r
+    case XFA_IDS_DIVIDE_ZERO:\r
+        wsString = L"divide by zero";\r
+        return;\r
+    case XFA_IDS_CANNOT_COVERT_OBJECT:\r
+        wsString = L"%s.%s can not covert to object";\r
+        return;\r
+    case XFA_IDS_NOT_FOUND_CONTAINER:\r
+        wsString = L"can not found container '%s'";\r
+        return;\r
+    case XFA_IDS_NOT_FOUND_PROPERTY:\r
+        wsString = L"can not found property '%s'";\r
+        return;\r
+    case XFA_IDS_NOT_FOUND_METHOD:\r
+        wsString = L"can not found method '%s'";\r
+        return;\r
+    case XFA_IDS_NOT_FOUND_CONST:\r
+        wsString = L"can not found const '%s'";\r
+        return;\r
+    case XFA_IDS_NOT_ASSIGN_OBJECT:\r
+        wsString = L"can not direct assign value to object";\r
+        return;\r
+    case XFA_IDS_IVALIDATE_INSTRUCTION:\r
+        wsString = L"invalidate instruction";\r
+        return;\r
+    case XFA_IDS_EXPECT_NUMBER:\r
+        wsString = L"expected number instead of '%s'";\r
+        return;\r
+    case XFA_IDS_VALIDATE_OUT_ARRAY:\r
+        wsString = L"validate access index '%s' out of array";\r
+        return;\r
+    case XFA_IDS_CANNOT_ASSIGN_IDENT:\r
+        wsString = L"can not assign to %s";\r
+        return;\r
+    case XFA_IDS_NOT_FOUNT_FUNCTION:\r
+        wsString = L"can not found '%s' function";\r
+        return;\r
+    case XFA_IDS_NOT_ARRAY:\r
+        wsString = L"'%s' doesn't an array";\r
+        return;\r
+    case XFA_IDS_OUT_ARRAY:\r
+        wsString = L"out of range of '%s' array";\r
+        return;\r
+    case XFA_IDS_NOT_SUPPORT_CALC:\r
+        wsString = L"'%s' operator can not support array calculate";\r
+        return;\r
+    case XFA_IDS_ARGUMENT_NOT_ARRAY:\r
+        wsString = L"'%s' function's %d argument can not be array";\r
+        return;\r
+    case XFA_IDS_ARGUMENT_EXPECT_CONTAINER:\r
+        wsString = L"'%s' argument expected a container";\r
+        return;\r
+    case XFA_IDS_ACCESS_PROPERTY_IN_NOT_OBJECT:\r
+        wsString = L"an attempt was made to reference property '%s' of a non-object in SOM expression %s";\r
+        return;\r
+    case XFA_IDS_FUNCTION_IS_BUILDIN:\r
+        wsString = L"function '%s' is buildin";\r
+        return;\r
+    case XFA_IDS_ERROR_MSG:\r
+        wsString = L"%s : %s";\r
+        return;\r
+    case XFA_IDS_INDEX_OUT_OF_BOUNDS:\r
+        wsString = L"Index value is out of bounds";\r
+        return;\r
+    case XFA_IDS_INCORRECT_NUMBER_OF_METHOD:\r
+        wsString = L"Incorrect number of parameters calling method '%s'";\r
+        return;\r
+    case XFA_IDS_ARGUMENT_MISMATCH:\r
+        wsString = L"Argument mismatch in property or function argument";\r
+        return;\r
+    case XFA_IDS_INVALID_ENUMERATE:\r
+        wsString = L"Invalid enumerated value: %s";\r
+        return;\r
+    case XFA_IDS_INVALID_APPEND:\r
+        wsString = L"Invalid append operation: %s cannot have a child element of %s";\r
+        return;\r
+    case XFA_IDS_SOM_EXPECTED_LIST:\r
+        wsString = L"SOM expression returned list when single result was expected";\r
+        return;\r
+    case XFA_IDS_NOT_HAVE_PROPERTY:\r
+        wsString = L"'%s' doesn't have property '%s'";\r
+        return;\r
+    case XFA_IDS_INVALID_NODE_TYPE:\r
+        wsString = L"Invalid node type : '%s'";\r
+        return;\r
+    case XFA_IDS_VIOLATE_BOUNDARY:\r
+        wsString = L"The element [%s] has violated its allowable number of occurrences";\r
+        return;\r
+    case XFA_IDS_SERVER_DENY:\r
+        wsString = L"Server does not permit";\r
+        return;\r
+    case XFA_IDS_ValidateLimit:\r
+        wsString = FX_WSTRC(L"Message limit exceeded. Remaining %d validation errors not reported.");\r
+        return;\r
+    case XFA_IDS_ValidateNullWarning:\r
+        wsString = FX_WSTRC(L"%s cannot be left blank. To ignore validations for %s, click Ignore.");\r
+        return;\r
+    case XFA_IDS_ValidateNullError:\r
+        wsString = FX_WSTRC(L"%s cannot be left blank.");\r
+        return;\r
+    case XFA_IDS_ValidateWarning:\r
+        wsString = FX_WSTRC(L"The value you entered for %s is invalid. To ignore validations for %s, click Ignore.");\r
+        return;\r
+    case XFA_IDS_ValidateError:\r
+        wsString = FX_WSTRC(L"The value you entered for %s is invalid.");\r
+        return;\r
+    }\r
 \r
 }\r
 \r
 FX_BOOL CPDFXFA_App::ShowFileDialog(FX_WSTR wsTitle, FX_WSTR wsFilter, CFX_WideStringArray &wsPathArr, FX_BOOL bOpen)\r
 {\r
-       //if (m_pEnv)\r
-       //{\r
-       //      return m_pEnv->FFI_ShowFileDialog(wsTitle.GetPtr(), wsFilter.GetPtr(), wsPathArr, bOpen);\r
-       //}\r
-       return FALSE;\r
+    return FALSE;\r
 }\r
 \r
 IFWL_AdapterTimerMgr* CPDFXFA_App::GetTimerMgr()\r
 {\r
-       CXFA_FWLAdapterTimerMgr* pAdapter = NULL;\r
-       CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
-       if (pEnv)\r
-               pAdapter = FX_NEW CXFA_FWLAdapterTimerMgr(pEnv);\r
-       return pAdapter;\r
+    CXFA_FWLAdapterTimerMgr* pAdapter = NULL;\r
+    CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0);\r
+    if (pEnv)\r
+        pAdapter = FX_NEW CXFA_FWLAdapterTimerMgr(pEnv);\r
+    return pAdapter;\r
 }\r
index e783532..ccb1ab6 100644 (file)
@@ -215,8 +215,6 @@ FX_SYSTEMTIME CFX_SystemHandler::GetLocalTime()
        return m_pEnv->FFI_GetLocalTime();
 }
 
-
-
 CPDFDoc_Environment::CPDFDoc_Environment(CPDFXFA_Document* pDoc) :
        m_pAnnotHandlerMgr(NULL),
        m_pActionHandler(NULL),
@@ -226,50 +224,34 @@ CPDFDoc_Environment::CPDFDoc_Environment(CPDFXFA_Document* pDoc) :
        m_pDoc(pDoc),
        m_pIFormFiller(NULL)
 {
-
        m_pSysHandler = NULL;
        m_pSysHandler = new CFX_SystemHandler(this);
-
-       //m_pJSRuntimeFactory = pDoc->GetApp()->GetRuntimeFactory();
-       
 }
 
 CPDFDoc_Environment::~CPDFDoc_Environment()
 {
 
-       if ( m_pIFormFiller )
-       {
-               delete m_pIFormFiller;
-               m_pIFormFiller = NULL;
-       }
-
-       if (m_pJSRuntime && FPDFXFA_GetApp()->GetRuntimeFactory())
-               FPDFXFA_GetApp()->GetRuntimeFactory()->DeleteJSRuntime(m_pJSRuntime);
+    delete m_pIFormFiller;
+    m_pIFormFiller = NULL;
 
-       if (FPDFXFA_GetApp()->m_pEnvList.GetSize() == 0)
-       {
-               FPDFXFA_GetApp()->ReleaseRuntime();
-               FPDFXFA_GetApp()->InitRuntime(TRUE);
-       }
+    CPDFXFA_App* pProvider = CPDFXFA_App::GetInstance();
+    if (m_pJSRuntime && pProvider->GetRuntimeFactory())
+        pProvider->GetRuntimeFactory()->DeleteJSRuntime(m_pJSRuntime);
 
-       if(m_pSysHandler)
-       {
-               delete m_pSysHandler;
-               m_pSysHandler = NULL;
-       }
+    if (pProvider->m_pEnvList.GetSize() == 0)
+    {
+        pProvider->ReleaseRuntime();
+        pProvider->InitRuntime(TRUE);
+    }
 
-       if(m_pAnnotHandlerMgr)
-       {
-               delete m_pAnnotHandlerMgr;
-               m_pAnnotHandlerMgr = NULL;
-       }
-       if(m_pActionHandler)
-       {
-               delete m_pActionHandler;
-               m_pActionHandler = NULL;
-       }
+    delete m_pSysHandler;
+    m_pSysHandler = NULL;
 
+    delete m_pAnnotHandlerMgr;
+    m_pAnnotHandlerMgr = NULL;
 
+    delete m_pActionHandler;
+    m_pActionHandler = NULL;
 }
 
 
@@ -278,7 +260,7 @@ IFXJS_Runtime* CPDFDoc_Environment::GetJSRuntime()
        if(!IsJSInitiated())
                return NULL;
        if(!m_pJSRuntime)
-               m_pJSRuntime = FPDFXFA_GetApp()->GetRuntimeFactory()->NewJSRuntime(this);
+               m_pJSRuntime = CPDFXFA_App::GetInstance()->GetRuntimeFactory()->NewJSRuntime(this);
        return m_pJSRuntime;
 }
 
index f3d7cf3..9450a64 100644 (file)
@@ -114,8 +114,8 @@ CJS_Runtime::CJS_Runtime(CPDFDoc_Environment* pApp) :
        m_bRegistered(FALSE),
        m_pFieldEventPath(NULL)
 {
-       if (FPDFXFA_GetApp()->GetJSERuntime()) {
-               m_isolate = (v8::Isolate*)FPDFXFA_GetApp()->GetJSERuntime();
+       if (CPDFXFA_App::GetInstance()->GetJSERuntime()) {
+               m_isolate = (v8::Isolate*)CPDFXFA_App::GetInstance()->GetJSERuntime();
        } else {
                m_pArrayBufferAllocator.reset(new CJS_ArrayBufferAllocator());
                v8::Isolate::CreateParams params;
@@ -127,7 +127,7 @@ CJS_Runtime::CJS_Runtime(CPDFDoc_Environment* pApp) :
        v8::Isolate::Scope isolate_scope(isolate);
        v8::Locker locker(isolate);
        v8::HandleScope handle_scope(isolate);
-       if (FPDFXFA_GetApp()->InitRuntime(FALSE)) {
+       if (CPDFXFA_App::GetInstance()->InitRuntime(FALSE)) {
                CJS_Context * pContext = (CJS_Context*)NewContext();
                JS_InitialRuntime(*this, this, pContext, m_context);
                ReleaseContext(pContext);
index daf5a85..f139380 100644 (file)
@@ -119,22 +119,17 @@ global_alternate::global_alternate(CJS_Object* pJSObject)
 global_alternate::~global_alternate(void)
 {
        ASSERT(m_pApp != NULL);
-
-//     CommitGlobalPersisitentVariables();
        DestroyGlobalPersisitentVariables();
 
-       CJS_RuntimeFactory* pFactory = FPDFXFA_GetApp()->GetRuntimeFactory();
-       ASSERT(pFactory);
-
+       CJS_RuntimeFactory* pFactory = CPDFXFA_App::GetInstance()->GetRuntimeFactory();
        pFactory->ReleaseGlobalData();
 }
-  
+
 void global_alternate::Initial(CPDFDoc_Environment* pApp)
 {
        m_pApp = pApp;
 
-       CJS_RuntimeFactory* pFactory = FPDFXFA_GetApp()->GetRuntimeFactory();
-       ASSERT(pFactory);
+       CJS_RuntimeFactory* pFactory = CPDFXFA_App::GetInstance()->GetRuntimeFactory();
        m_pGlobalData = pFactory->NewGlobalData(pApp);
        UpdateGlobalPersistentVariables();
 }
index ef2a1a8..e7ddcce 100644 (file)
@@ -4,8 +4,9 @@
 \r
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
 \r
-#ifndef _FXFA\r
-#define _FXFA\r
+#ifndef FXFA_H_\r
+#define FXFA_H_\r
+\r
 class IFDE_XMLElement;\r
 class CXFA_Node;\r
 class CXFA_NodeList;\r
@@ -145,66 +146,133 @@ typedef struct _XFA_HWIDGET {
 #define XFA_IDS_ValidateWarning                                        97\r
 #define XFA_IDS_ValidateError                                  98\r
 #define XFA_IDS_ValidateNumberError                            99\r
+\r
+// Probably should be called IXFA_AppDelegate.\r
 class IXFA_AppProvider\r
 {\r
 public:\r
     virtual ~IXFA_AppProvider() { }\r
 \r
-    virtual void               SetAppType(FX_WSTR wsAppType) = 0;\r
-    virtual void               GetAppType(CFX_WideString &wsAppType) = 0;\r
+    /**\r
+     * Specifies the name of the client application in which a form currently exists. Such as Exchange-Pro.\r
+     */\r
+    virtual void SetAppType(const CFX_WideStringC& wsAppType) = 0;\r
+    virtual void GetAppType(CFX_WideString &wsAppType) = 0;\r
+    virtual void SetFoxitAppType(const CFX_WideStringC& wsFoxitAppType) { }\r
+    virtual void GetFoxitAppType(CFX_WideString &wsFoxitAppType) {\r
+        wsFoxitAppType.Empty();\r
+    }\r
+\r
+    /**\r
+     * Returns the language of the running host application. Such as zh_CN\r
+     */\r
+    virtual void GetLanguage(CFX_WideString &wsLanguage) = 0;\r
+\r
+    /**\r
+     * Returns the platform of the machine running the script. Such as WIN\r
+     */\r
+    virtual void GetPlatform(CFX_WideString &wsPlatform) = 0;\r
 \r
-    virtual void               SetFoxitAppType(FX_WSTR wsFoxitAppType) { }\r
-    virtual void               GetFoxitAppType(CFX_WideString &wsFoxitAppType) { }\r
+    /**\r
+     * Indicates the packaging of the application that is running the script. Such as Full\r
+     */\r
+    virtual void GetVariation(CFX_WideString &wsVariation) = 0;\r
+\r
+    /**\r
+     * Indicates the version number of the current application. Such as 9\r
+     */\r
+    virtual void GetVersion(CFX_WideString &wsVersion) = 0;\r
+    virtual void GetFoxitVersion(CFX_WideString &wsFoxitVersion) {\r
+        wsFoxitVersion.Empty();\r
+    }\r
+\r
+    /**\r
+     * Get application name, such as Phantom.\r
+     */\r
+    virtual void GetAppName(CFX_WideString& wsName) = 0;\r
+    virtual void GetFoxitAppName(CFX_WideString& wsFoxitName) {\r
+        wsFoxitName.Empty();\r
+    }\r
 \r
-    virtual void               GetLanguage(CFX_WideString &wsLanguage) = 0;\r
-    virtual void               GetPlatform(CFX_WideString &wsPlatform) = 0;\r
-    virtual void               GetVariation(CFX_WideString &wsVariation) = 0;\r
+    /**\r
+     * Causes the system to play a sound.\r
+     * @param[in] dwType The system code for the appropriate sound.0 (Error)1 (Warning)2 (Question)3 (Status)4 (Default)\r
+     */\r
+    virtual void Beep(FX_DWORD dwType) = 0;\r
 \r
-    virtual void               GetVersion(CFX_WideString &wsVersion) = 0;\r
-    virtual void               GetFoxitVersion(CFX_WideString &wsFoxitVersion) { }\r
+    /**\r
+     * Displays a message box.\r
+     * @param[in] dwIconType    Icon type, refer to XFA_MBICON.\r
+     * @param[in] dwButtonType  Button type, refer to XFA_MESSAGEBUTTON.\r
+     * @return A valid integer representing the value of the button pressed by the user, refer to XFA_ID.\r
+     */\r
+    virtual FX_INT32 MsgBox(FX_WSTR wsMessage, FX_WSTR wsTitle = FX_WSTRC(L""),\r
+                            FX_DWORD dwIconType = 0, FX_DWORD dwButtonType = 0) = 0;\r
 \r
-    virtual void               GetAppName(CFX_WideString& wsName) = 0;\r
-    virtual void               GetFoxitAppName(CFX_WideString& wsFoxitName) { }\r
+    /**\r
+     * Get a response from the user.\r
+     * @param[in] bMark - Mask the user input with * (asterisks) when true,\r
+     */\r
+    virtual void Response(CFX_WideString &wsAnswer, FX_WSTR wsQuestion, FX_WSTR wsTitle = FX_WSTRC(L""),\r
+                          FX_WSTR wsDefaultAnswer = FX_WSTRC(L""), FX_BOOL bMark = TRUE) = 0;\r
 \r
-    virtual void               Beep(FX_DWORD dwType) = 0;\r
+    virtual FX_INT32 GetDocumentCountInBatch() = 0;\r
+    virtual FX_INT32 GetCurDocumentInBatch() = 0;\r
 \r
-    virtual FX_INT32   MsgBox(FX_WSTR wsMessage, FX_WSTR wsTitle = FX_WSTRC(L""), FX_DWORD dwIconType = 0, FX_DWORD dwButtonType = 0) = 0;\r
-    virtual void               Response(CFX_WideString &wsAnswer, FX_WSTR wsQuestion, FX_WSTR wsTitle = FX_WSTRC(L""), FX_WSTR wsDefaultAnswer = FX_WSTRC(L""), FX_BOOL bMark = TRUE) = 0;\r
-    virtual FX_INT32   GetDocumentCountInBatch() = 0;\r
-    virtual FX_INT32   GetCurDocumentInBatch() = 0;\r
+    /**\r
+     * Download something from somewhere.\r
+     * @param[in] wsURL - http, ftp, such as "http://www.w3.org/TR/REC-xml-names/".\r
+     */\r
     virtual IFX_FileRead* DownloadURL(FX_WSTR wsURL) = 0;\r
 \r
-    virtual FX_BOOL            PostRequestURL(FX_WSTR wsURL, FX_WSTR wsData, FX_WSTR wsContentType,\r
-                                       FX_WSTR wsEncode, FX_WSTR wsHeader, CFX_WideString &wsResponse) = 0;\r
+    /**\r
+     * POST data to the given url.\r
+     * @param[in] wsURL         the URL being uploaded.\r
+     * @param[in] wsData        the data being uploaded.\r
+     * @param[in] wsContentType the content type of data including text/html, text/xml, text/plain, multipart/form-data,\r
+     *                          application/x-www-form-urlencoded, application/octet-stream, any valid MIME type.\r
+     * @param[in] wsEncode      the encode of data including UTF-8, UTF-16, ISO8859-1, any recognized [IANA]character encoding\r
+     * @param[in] wsHeader      any additional HTTP headers to be included in the post.\r
+     * @param[out] wsResponse   decoded response from server.\r
+     * @return TRUE Server permitted the post request, FALSE otherwise.\r
+     */\r
+    virtual FX_BOOL PostRequestURL(FX_WSTR wsURL, FX_WSTR wsData, FX_WSTR wsContentType,\r
+                                   FX_WSTR wsEncode, FX_WSTR wsHeader, CFX_WideString &wsResponse) = 0;\r
 \r
-    virtual FX_BOOL            PutRequestURL(FX_WSTR wsURL, FX_WSTR wsData, FX_WSTR wsEncode) = 0;\r
-    virtual void               LoadString(FX_INT32 iStringID, CFX_WideString &wsString) = 0;\r
-    virtual    FX_BOOL         ShowFileDialog(FX_WSTR wsTitle, FX_WSTR wsFilter, CFX_WideStringArray &wsPathArr, FX_BOOL bOpen = TRUE) = 0;\r
+    /**\r
+     * PUT data to the given url.\r
+     * @param[in] wsURL         the URL being uploaded.\r
+     * @param[in] wsData            the data being uploaded.\r
+     * @param[in] wsEncode      the encode of data including UTF-8, UTF-16, ISO8859-1, any recognized [IANA]character encoding\r
+     * @return TRUE Server permitted the post request, FALSE otherwise.\r
+     */\r
+    virtual FX_BOOL     PutRequestURL(FX_WSTR wsURL, FX_WSTR wsData, FX_WSTR wsEncode) = 0;\r
+\r
+    virtual void LoadString(FX_INT32 iStringID, CFX_WideString &wsString) = 0;\r
+    virtual FX_BOOL ShowFileDialog(FX_WSTR wsTitle, FX_WSTR wsFilter, CFX_WideStringArray &wsPathArr, FX_BOOL bOpen = TRUE) = 0;\r
     virtual IFWL_AdapterTimerMgr* GetTimerMgr() = 0;\r
 };\r
 class IXFA_FontMgr\r
 {\r
 public:\r
-    virtual void               Release() = 0;\r
+    static IXFA_FontMgr* CreateDefault();\r
+    virtual ~IXFA_FontMgr();\r
+\r
     virtual IFX_Font*  GetFont(XFA_HDOC hDoc, FX_WSTR wsFontFamily, FX_DWORD dwFontStyles, FX_WORD wCodePage = 0xFFFF) = 0;\r
     virtual IFX_Font*  GetDefaultFont(XFA_HDOC hDoc, FX_WSTR wsFontFamily, FX_DWORD dwFontStyles, FX_WORD wCodePage = 0xFFFF) = 0;\r
-protected:\r
-    ~IXFA_FontMgr() { }\r
 };\r
-IXFA_FontMgr*  XFA_GetDefaultFontMgr();\r
 class IXFA_App\r
 {\r
 public:\r
-    static IXFA_App*   Create(IXFA_AppProvider* pProvider);\r
-    virtual void               Release() = 0;\r
+    static IXFA_App* Create(IXFA_AppProvider* pProvider);\r
+    virtual ~IXFA_App();\r
+\r
     virtual IXFA_DocHandler*   GetDocHandler() = 0;\r
     virtual XFA_HDOC                   CreateDoc(IXFA_DocProvider* pProvider, IFX_FileRead* pStream, FX_BOOL bTakeOverFile = TRUE) = 0;\r
     virtual XFA_HDOC                   CreateDoc(IXFA_DocProvider* pProvider, CPDF_Document* pPDFDoc) = 0;\r
     virtual    IXFA_AppProvider*       GetAppProvider() = 0;\r
     virtual void                               SetDefaultFontMgr(IXFA_FontMgr* pFontMgr) = 0;\r
     virtual IXFA_MenuHandler*  GetMenuHandler() = 0;\r
-protected:\r
-    ~IXFA_App() { }\r
 };\r
 class IXFA_MenuHandler\r
 {\r
@@ -627,4 +695,5 @@ protected:
     ~IXFA_ChecksumContext() { }\r
 };\r
 IXFA_ChecksumContext*  XFA_Checksum_Create();\r
-#endif\r
+\r
+#endif  // FXFA_H_\r
index 67ec95b..abd0246 100644 (file)
@@ -134,9 +134,14 @@ FX_BOOL CXFA_FileRead2::ReadBlock(void* buffer, FX_FILESIZE offset, size_t size)
     }\r
     return FALSE;\r
 }\r
+// static\r
 IXFA_App* IXFA_App::Create(IXFA_AppProvider* pProvider)\r
 {\r
-    return FX_NEW CXFA_FFApp(pProvider);\r
+    return new CXFA_FFApp(pProvider);\r
+}\r
+// virtual\r
+IXFA_App::~IXFA_App()\r
+{\r
 }\r
 CXFA_FFApp::CXFA_FFApp(IXFA_AppProvider* pProvider)\r
     : m_pDocHandler(NULL)\r
index 82d0b95..b99f1fe 100644 (file)
@@ -47,11 +47,8 @@ class CXFA_FFApp : public IXFA_App, public IFWL_AdapterNative
 {\r
 public:\r
     CXFA_FFApp(IXFA_AppProvider* pProvider);\r
-    ~CXFA_FFApp();\r
-    virtual void               Release()\r
-    {\r
-        delete this;\r
-    }\r
+    ~CXFA_FFApp() override;\r
+\r
     virtual IXFA_DocHandler*   GetDocHandler();\r
     virtual XFA_HDOC                   CreateDoc(IXFA_DocProvider* pProvider, IFX_FileRead* pStream, FX_BOOL bTakeOverFile);\r
     virtual XFA_HDOC                   CreateDoc(IXFA_DocProvider* pProvider, CPDF_Document* pPDFDoc);\r
index ef49911..8138e58 100644 (file)
@@ -1010,10 +1010,15 @@ const XFA_FONTINFO* XFA_GetFontINFOByFontName(FX_WSTR wsFontName)
     return NULL;\r
 #endif\r
 }\r
-IXFA_FontMgr* XFA_GetDefaultFontMgr()\r
+// static\r
+IXFA_FontMgr* IXFA_FontMgr::CreateDefault()\r
 {\r
     return FX_NEW CXFA_DefFontMgr;\r
 }\r
+// virtual\r
+IXFA_FontMgr::~IXFA_FontMgr()\r
+{\r
+}\r
 CXFA_DefFontMgr::~CXFA_DefFontMgr()\r
 {\r
     FX_INT32 iCounts = m_CacheFonts.GetSize();\r
index 09e0d19..fd65570 100644 (file)
@@ -17,11 +17,7 @@ class CXFA_DefFontMgr : public IXFA_FontMgr
 {\r
 public:\r
     CXFA_DefFontMgr() {}\r
-    virtual ~CXFA_DefFontMgr();\r
-    virtual    void                    Release()\r
-    {\r
-        delete this;\r
-    }\r
+    ~CXFA_DefFontMgr() override;\r
     virtual IFX_Font*          GetFont(XFA_HDOC hDoc, FX_WSTR wsFontFamily, FX_DWORD dwFontStyles, FX_WORD wCodePage = 0xFFFF);\r
     virtual IFX_Font*          GetDefaultFont(XFA_HDOC hDoc, FX_WSTR wsFontFamily, FX_DWORD dwFontStyles, FX_WORD wCodePage = 0xFFFF);\r
 protected:\r