Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Unified Diff: fpdfsdk/src/javascript/JS_GlobalData.cpp

Issue 1338993005: Get CJS_RuntimeFactory out of the CJS_GlobalData management business. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: fpdfsdk/src/javascript/JS_GlobalData.cpp
diff --git a/fpdfsdk/src/javascript/JS_GlobalData.cpp b/fpdfsdk/src/javascript/JS_GlobalData.cpp
index 0a21a9253c3760481995187130cd988ea0bc53a4..94669e8191f46f2fb1fc85297751814378a07946 100644
--- a/fpdfsdk/src/javascript/JS_GlobalData.cpp
+++ b/fpdfsdk/src/javascript/JS_GlobalData.cpp
@@ -99,19 +99,32 @@ static const uint8_t JS_RC4KEY[] = {
0x0e, 0xd0, 0x6b, 0xbb, 0xd5, 0x75, 0x55, 0x8b, 0x6e, 0x6b, 0x19, 0xa0,
0xf8, 0x77, 0xd5, 0xa3};
-CJS_GlobalData::CJS_GlobalData(CPDFDoc_Environment* pApp) {
- // IBaseAnnot* pBaseAnnot = IBaseAnnot::GetBaseAnnot(m_pApp);
- // ASSERT(pBaseAnnot != NULL);
- //
- // m_sFilePath = pBaseAnnot->GetUserPath();
- m_sFilePath += SDK_JS_GLOBALDATA_FILENAME;
+CJS_GlobalData* CJS_GlobalData::g_Instance = nullptr;
+
+// static
+CJS_GlobalData* CJS_GlobalData::GetRetainedInstance(CPDFDoc_Environment* pApp) {
+ if (!g_Instance) {
+ g_Instance = new CJS_GlobalData(pApp);
+ }
+ g_Instance->m_RefCount += 1;
Lei Zhang 2015/09/14 20:53:28 just ++, and -- in Release?
Tom Sepez 2015/09/14 21:31:24 Done.
+ return g_Instance;
+}
+void CJS_GlobalData::Release() {
+ m_RefCount -= 1;
+ if (!m_RefCount) {
+ delete g_Instance;
+ g_Instance = nullptr;
+ }
+}
+
+CJS_GlobalData::CJS_GlobalData(CPDFDoc_Environment* pApp) : m_RefCount(0) {
+ m_sFilePath += SDK_JS_GLOBALDATA_FILENAME;
LoadGlobalPersistentVariables();
}
CJS_GlobalData::~CJS_GlobalData() {
SaveGlobalPersisitentVariables();
-
for (int i = 0, sz = m_arrayGlobalData.GetSize(); i < sz; i++)
delete m_arrayGlobalData.GetAt(i);
@@ -119,19 +132,12 @@ CJS_GlobalData::~CJS_GlobalData() {
}
int CJS_GlobalData::FindGlobalVariable(const FX_CHAR* propname) {
- ASSERT(propname != NULL);
-
- int nRet = -1;
-
for (int i = 0, sz = m_arrayGlobalData.GetSize(); i < sz; i++) {
CJS_GlobalData_Element* pTemp = m_arrayGlobalData.GetAt(i);
- if (pTemp->data.sKey[0] == *propname && pTemp->data.sKey == propname) {
- nRet = i;
- break;
- }
+ if (pTemp->data.sKey[0] == *propname && pTemp->data.sKey == propname)
+ return i;
}
-
- return nRet;
+ return -1;
}
CJS_GlobalData_Element* CJS_GlobalData::GetGlobalVariable(

Powered by Google App Engine
This is Rietveld 408576698