Index: fpdfsdk/src/javascript/JS_Runtime.cpp |
diff --git a/fpdfsdk/src/javascript/JS_Runtime.cpp b/fpdfsdk/src/javascript/JS_Runtime.cpp |
index 99966532153092542a14e8f1b51701f477eab7ec..5350e30a21176b3ab16dca82f23775d6e16d8e47 100644 |
--- a/fpdfsdk/src/javascript/JS_Runtime.cpp |
+++ b/fpdfsdk/src/javascript/JS_Runtime.cpp |
@@ -36,7 +36,6 @@ CJS_Runtime::CJS_Runtime(CPDFDoc_Environment* pApp) |
: m_pApp(pApp), |
m_pDocument(NULL), |
m_bBlocking(FALSE), |
- m_pFieldEventPath(NULL), |
m_isolate(NULL), |
m_isolateManaged(false) { |
if (CPDFXFA_App::GetInstance()->GetJSERuntime()) { |
@@ -84,11 +83,9 @@ CJS_Runtime::~CJS_Runtime() { |
delete m_ContextArray.GetAt(i); |
m_ContextArray.RemoveAll(); |
- RemoveEventsInLoop(m_pFieldEventPath); |
m_pApp = NULL; |
m_pDocument = NULL; |
- m_pFieldEventPath = NULL; |
m_context.Reset(); |
if (m_isolateManaged) |
@@ -194,75 +191,12 @@ void CJS_Runtime::SetReaderDocument(CPDFSDK_Document* pReaderDoc) { |
} |
} |
-FX_BOOL CJS_Runtime::AddEventToLoop(const CFX_WideString& sTargetName, |
- JS_EVENT_T eEventType) { |
- if (m_pFieldEventPath == NULL) { |
- m_pFieldEventPath = new CJS_FieldEvent; |
- m_pFieldEventPath->sTargetName = sTargetName; |
- m_pFieldEventPath->eEventType = eEventType; |
- m_pFieldEventPath->pNext = NULL; |
- |
- return TRUE; |
- } |
- |
- // to search |
- CJS_FieldEvent* p = m_pFieldEventPath; |
- CJS_FieldEvent* pLast = m_pFieldEventPath; |
- while (p) { |
- if (p->eEventType == eEventType && p->sTargetName == sTargetName) |
- return FALSE; |
- |
- pLast = p; |
- p = p->pNext; |
- } |
- |
- // to add |
- CJS_FieldEvent* pNew = new CJS_FieldEvent; |
- pNew->sTargetName = sTargetName; |
- pNew->eEventType = eEventType; |
- pNew->pNext = NULL; |
- |
- pLast->pNext = pNew; |
- |
- return TRUE; |
+bool CJS_Runtime::AddEventToSet(const FieldEvent& event) { |
+ return m_FieldEventSet.insert(event).second; |
} |
-void CJS_Runtime::RemoveEventInLoop(const CFX_WideString& sTargetName, |
- JS_EVENT_T eEventType) { |
- FX_BOOL bFind = FALSE; |
- |
- CJS_FieldEvent* p = m_pFieldEventPath; |
- CJS_FieldEvent* pLast = NULL; |
- while (p) { |
- if (p->eEventType == eEventType && p->sTargetName == sTargetName) { |
- bFind = TRUE; |
- break; |
- } |
- |
- pLast = p; |
- p = p->pNext; |
- } |
- |
- if (bFind) { |
- RemoveEventsInLoop(p); |
- |
- if (p == m_pFieldEventPath) |
- m_pFieldEventPath = NULL; |
- |
- if (pLast) |
- pLast->pNext = NULL; |
- } |
-} |
- |
-void CJS_Runtime::RemoveEventsInLoop(CJS_FieldEvent* pStart) { |
- CJS_FieldEvent* p = pStart; |
- |
- while (p) { |
- CJS_FieldEvent* pOld = p; |
- p = pOld->pNext; |
- |
- delete pOld; |
- } |
+void CJS_Runtime::RemoveEventFromSet(const FieldEvent& event) { |
+ m_FieldEventSet.erase(event); |
} |
v8::Local<v8::Context> CJS_Runtime::NewJSContext() { |