Chromium Code Reviews| 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( |