diff options
Diffstat (limited to 'fpdfsdk')
-rw-r--r-- | fpdfsdk/include/fpdfxfa/fpdfxfa_app.h | 4 | ||||
-rw-r--r-- | fpdfsdk/include/fsdk_mgr.h | 3 | ||||
-rw-r--r-- | fpdfsdk/include/javascript/IJavaScript.h | 21 | ||||
-rw-r--r-- | fpdfsdk/src/fpdfxfa/fpdfxfa_app.cpp | 8 | ||||
-rw-r--r-- | fpdfsdk/src/fsdk_mgr.cpp | 10 | ||||
-rw-r--r-- | fpdfsdk/src/javascript/JS_Runtime.cpp | 22 |
6 files changed, 6 insertions, 62 deletions
diff --git a/fpdfsdk/include/fpdfxfa/fpdfxfa_app.h b/fpdfsdk/include/fpdfxfa/fpdfxfa_app.h index bf96993bd3..49825c3f7f 100644 --- a/fpdfsdk/include/fpdfxfa/fpdfxfa_app.h +++ b/fpdfsdk/include/fpdfxfa/fpdfxfa_app.h @@ -8,7 +8,6 @@ #define FPDFXFA_APP_H_
class IFXJS_Runtime;
-class CJS_RuntimeFactory;
class CPDFXFA_App : public IXFA_AppProvider {
public:
@@ -28,8 +27,6 @@ class CPDFXFA_App : public IXFA_AppProvider { void ReleaseRuntime();
FX_BOOL InitRuntime(FX_BOOL bReset = FALSE);
- CJS_RuntimeFactory* GetRuntimeFactory() { return m_pJSRuntimeFactory; }
-
// IFXA_AppProvider:
void GetAppType(CFX_WideString& wsAppType) override;
void SetAppType(const CFX_WideStringC& wsAppType) override;
@@ -89,7 +86,6 @@ class CPDFXFA_App : public IXFA_AppProvider { IXFA_FontMgr* m_pFontMgr;
FXJSE_HRUNTIME m_hJSERuntime;
IFXJS_Runtime* m_pJSRuntime;
- CJS_RuntimeFactory* m_pJSRuntimeFactory;
CFX_WideString m_csAppType;
};
diff --git a/fpdfsdk/include/fsdk_mgr.h b/fpdfsdk/include/fsdk_mgr.h index c4879aa545..b76b16bd07 100644 --- a/fpdfsdk/include/fsdk_mgr.h +++ b/fpdfsdk/include/fsdk_mgr.h @@ -24,7 +24,6 @@ #include "javascript/IJavaScript.h" class CFFL_IFormFiller; -class CJS_RuntimeFactory; class CPDFSDK_ActionHandler; class CPDFSDK_Annot; class CPDFSDK_Document; @@ -469,7 +468,7 @@ class CPDFDoc_Environment final { private: CPDFSDK_AnnotHandlerMgr* m_pAnnotHandlerMgr; CPDFSDK_ActionHandler* m_pActionHandler; - IFXJS_Runtime* m_pJSRuntime; + nonstd::unique_ptr<IFXJS_Runtime> m_pJSRuntime; FPDF_FORMFILLINFO* const m_pInfo; CPDFSDK_Document* m_pSDKDoc; CPDFXFA_Document* const m_pXFADoc; diff --git a/fpdfsdk/include/javascript/IJavaScript.h b/fpdfsdk/include/javascript/IJavaScript.h index 65dae74ab4..d15ffc237e 100644 --- a/fpdfsdk/include/javascript/IJavaScript.h +++ b/fpdfsdk/include/javascript/IJavaScript.h @@ -134,10 +134,11 @@ class IFXJS_Context { class IFXJS_Runtime { public: + virtual ~IFXJS_Runtime() {} + virtual IFXJS_Context* NewContext() = 0; virtual void ReleaseContext(IFXJS_Context* pContext) = 0; virtual IFXJS_Context* GetCurrentContext() = 0; - virtual void SetReaderDocument(CPDFSDK_Document* pReaderDoc) = 0; virtual CPDFSDK_Document* GetReaderDocument() = 0; @@ -146,24 +147,6 @@ class IFXJS_Runtime { FXJSE_HVALUE hValue) = 0; virtual FX_BOOL SetHValueByName(const CFX_ByteStringC& utf8Name, FXJSE_HVALUE hValue) = 0; - - protected: - virtual ~IFXJS_Runtime() {} -}; - -class CJS_RuntimeFactory { - public: - CJS_RuntimeFactory() : m_bInit(false), m_nRef(0) {} - ~CJS_RuntimeFactory(); - - IFXJS_Runtime* NewJSRuntime(CPDFDoc_Environment* pApp); - void DeleteJSRuntime(IFXJS_Runtime* pRuntime); - void AddRef(); - void Release(); - - private: - bool m_bInit; - int m_nRef; }; #endif // FPDFSDK_INCLUDE_JAVASCRIPT_IJAVASCRIPT_H_ diff --git a/fpdfsdk/src/fpdfxfa/fpdfxfa_app.cpp b/fpdfsdk/src/fpdfxfa/fpdfxfa_app.cpp index 774ec6e4d6..dc5d0686fc 100644 --- a/fpdfsdk/src/fpdfxfa/fpdfxfa_app.cpp +++ b/fpdfsdk/src/fpdfxfa/fpdfxfa_app.cpp @@ -27,19 +27,12 @@ void CPDFXFA_App::ReleaseInstance() { g_pApp = NULL;
}
-CJS_RuntimeFactory* g_GetJSRuntimeFactory() {
- static CJS_RuntimeFactory g_JSRuntimeFactory;
- return &g_JSRuntimeFactory;
-}
-
CPDFXFA_App::CPDFXFA_App()
: m_bInitRuntime(FALSE),
m_pXFAApp(NULL),
m_pFontMgr(NULL),
m_hJSERuntime(NULL),
m_csAppType(JS_STR_VIEWERTYPE_STANDARD) {
- m_pJSRuntimeFactory = g_GetJSRuntimeFactory();
- m_pJSRuntimeFactory->AddRef();
m_pEnvList.RemoveAll();
}
@@ -50,7 +43,6 @@ CPDFXFA_App::~CPDFXFA_App() { delete m_pXFAApp;
m_pXFAApp = NULL;
- m_pJSRuntimeFactory->Release();
FXJSE_Runtime_Release(m_hJSERuntime);
m_hJSERuntime = NULL;
diff --git a/fpdfsdk/src/fsdk_mgr.cpp b/fpdfsdk/src/fsdk_mgr.cpp index 4a55622e57..a3e77e4514 100644 --- a/fpdfsdk/src/fsdk_mgr.cpp +++ b/fpdfsdk/src/fsdk_mgr.cpp @@ -13,6 +13,7 @@ #include "../include/formfiller/FFL_FormFiller.h" #include "../include/javascript/IJavaScript.h" #include "../include/fpdfxfa/fpdfxfa_app.h" +#include "../include/javascript/JS_Runtime.h" #if _FX_OS_ == _FX_ANDROID_ #include "time.h" @@ -209,7 +210,6 @@ CPDFDoc_Environment::CPDFDoc_Environment(CPDFXFA_Document* pDoc, FPDF_FORMFILLINFO* pFFinfo) : m_pAnnotHandlerMgr(NULL), m_pActionHandler(NULL), - m_pJSRuntime(NULL), m_pInfo(pFFinfo), m_pSDKDoc(NULL), m_pXFADoc(pDoc), @@ -222,9 +222,6 @@ CPDFDoc_Environment::~CPDFDoc_Environment() { m_pIFormFiller = NULL; CPDFXFA_App* pProvider = CPDFXFA_App::GetInstance(); - if (m_pJSRuntime && pProvider->GetRuntimeFactory()) - pProvider->GetRuntimeFactory()->DeleteJSRuntime(m_pJSRuntime); - if (pProvider->m_pEnvList.GetSize() == 0) { pProvider->ReleaseRuntime(); pProvider->InitRuntime(TRUE); @@ -386,9 +383,8 @@ IFXJS_Runtime* CPDFDoc_Environment::GetJSRuntime() { if (!IsJSInitiated()) return NULL; if (!m_pJSRuntime) - m_pJSRuntime = - CPDFXFA_App::GetInstance()->GetRuntimeFactory()->NewJSRuntime(this); - return m_pJSRuntime; + m_pJSRuntime.reset(new CJS_Runtime(this)); + return m_pJSRuntime.get(); } CPDFSDK_AnnotHandlerMgr* CPDFDoc_Environment::GetAnnotHandlerMgr() { diff --git a/fpdfsdk/src/javascript/JS_Runtime.cpp b/fpdfsdk/src/javascript/JS_Runtime.cpp index 643cefb92f..e8e48b0c07 100644 --- a/fpdfsdk/src/javascript/JS_Runtime.cpp +++ b/fpdfsdk/src/javascript/JS_Runtime.cpp @@ -29,28 +29,6 @@ #include "../../include/fpdfxfa/fpdfxfa_app.h" #include "../../../xfa/src/fxjse/src/value.h" -CJS_RuntimeFactory::~CJS_RuntimeFactory() {} - -IFXJS_Runtime* CJS_RuntimeFactory::NewJSRuntime(CPDFDoc_Environment* pApp) { - m_bInit = true; - return new CJS_Runtime(pApp); -} -void CJS_RuntimeFactory::AddRef() { - m_nRef++; -} -void CJS_RuntimeFactory::Release() { - if (m_bInit) { - if (--m_nRef == 0) { - FXJS_Release(); - m_bInit = FALSE; - } - } -} - -void CJS_RuntimeFactory::DeleteJSRuntime(IFXJS_Runtime* pRuntime) { - delete (CJS_Runtime*)pRuntime; -} - /* ------------------------------ CJS_Runtime ------------------------------ */ v8::Global<v8::ObjectTemplate>& _getGlobalObjectTemplate(v8::Isolate* pIsolate); |