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

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

Issue 1293673003: Tidy up JS_Object.h and JS_Object.cpp. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 5 years, 4 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_Object.cpp
diff --git a/fpdfsdk/src/javascript/JS_Object.cpp b/fpdfsdk/src/javascript/JS_Object.cpp
index ef9bab971d52447dfc0c390969a9db1e9a1a77ad..96e1d1d56492c7487d0d5c795b1151ba6acb0168 100644
--- a/fpdfsdk/src/javascript/JS_Object.cpp
+++ b/fpdfsdk/src/javascript/JS_Object.cpp
@@ -10,12 +10,6 @@
#include "../../include/javascript/JS_Object.h"
#include "../../include/javascript/JS_Context.h"
-JSTimerMap* GetGlobalTimerMap() {
- // Leak the timer array at shutdown.
- static auto* timeMap = new JSTimerMap;
- return timeMap;
-}
-
int FXJS_MsgBox(CPDFDoc_Environment* pApp,
CPDFSDK_PageView* pPageView,
const FX_WCHAR* swMsg,
@@ -39,9 +33,6 @@ CPDFSDK_PageView* FXJS_GetPageView(IFXJS_Context* cc) {
return NULL;
}
-/* --------------------------------- CJS_EmbedObj
- * --------------------------------- */
-
CJS_EmbedObj::CJS_EmbedObj(CJS_Object* pJSObject) : m_pJSObject(pJSObject) {}
CJS_EmbedObj::~CJS_EmbedObj() {
@@ -79,8 +70,6 @@ void CJS_EmbedObj::EndTimer(CJS_Timer* pTimer) {
delete pTimer;
}
-/* --------------------------------- CJS_Object
- * --------------------------------- */
void FreeObject(const v8::WeakCallbackInfo<CJS_Object>& data) {
CJS_Object* pJSObj = data.GetParameter();
pJSObj->ExitInstance();
@@ -101,9 +90,6 @@ CJS_Object::CJS_Object(JSFXObject pObject) : m_pEmbedObj(NULL) {
};
CJS_Object::~CJS_Object(void) {
- delete m_pEmbedObj;
- m_pEmbedObj = NULL;
-
m_pObject.Reset();
};
@@ -137,3 +123,43 @@ void CJS_Object::Alert(CJS_Context* pContext, const FX_WCHAR* swMsg) {
pApp->JS_appAlert(swMsg, NULL, 0, 3);
}
}
+
+FX_UINT CJS_Timer::SetJSTimer(FX_UINT nElapse) {
+ if (m_nTimerID)
+ KillJSTimer();
+ IFX_SystemHandler* pHandler = m_pApp->GetSysHandler();
+ m_nTimerID = pHandler->SetTimer(nElapse, TimerProc);
+ (*GetGlobalTimerMap())[m_nTimerID] = this;
+ m_dwElapse = nElapse;
+ return m_nTimerID;
+}
+
+void CJS_Timer::KillJSTimer() {
+ if (m_nTimerID) {
+ IFX_SystemHandler* pHandler = m_pApp->GetSysHandler();
+ pHandler->KillTimer(m_nTimerID);
+ GetGlobalTimerMap()->erase(m_nTimerID);
+ m_nTimerID = 0;
+ }
+}
+
+// static
+void CJS_Timer::TimerProc(int idEvent) {
+ const auto it = GetGlobalTimerMap()->find(idEvent);
+ if (it != GetGlobalTimerMap()->end()) {
+ CJS_Timer* pTimer = it->second;
+ if (!pTimer->m_bProcessing) {
+ pTimer->m_bProcessing = TRUE;
Lei Zhang 2015/08/13 23:22:24 Not sure if you care to use CFX_AutoRestorer here.
Tom Sepez 2015/08/13 23:28:31 Doesn't seem to have the return paths complexity t
+ if (pTimer->m_pEmbedObj)
+ pTimer->m_pEmbedObj->TimerProc(pTimer);
+ pTimer->m_bProcessing = FALSE;
+ }
+ }
+}
+
+// static
+CJS_Timer::TimerMap* CJS_Timer::GetGlobalTimerMap() {
+ // Leak the timer array at shutdown.
+ static auto* s_TimerMap = new TimerMap;
+ return s_TimerMap;
+}
« fpdfsdk/include/javascript/JS_Object.h ('K') | « fpdfsdk/include/javascript/JS_Object.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698