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

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

Issue 1352393003: Use std::set<> to track active event handlers. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Simpler set manipulations 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
« no previous file with comments | « fpdfsdk/src/javascript/JS_Context.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: fpdfsdk/src/javascript/JS_Runtime.cpp
diff --git a/fpdfsdk/src/javascript/JS_Runtime.cpp b/fpdfsdk/src/javascript/JS_Runtime.cpp
index 43a4dcd3ff8cfdcffbff7145517bd6130d777b2c..1e1486df5c796f6578c07eb71e942b2747c9d32f 100644
--- a/fpdfsdk/src/javascript/JS_Runtime.cpp
+++ b/fpdfsdk/src/javascript/JS_Runtime.cpp
@@ -33,7 +33,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) {
unsigned int embedderDataSlot = 0;
@@ -65,11 +64,9 @@ CJS_Runtime::~CJS_Runtime() {
m_ContextArray.RemoveAll();
FXJS_ReleaseRuntime(GetIsolate(), m_context);
- RemoveEventsInLoop(m_pFieldEventPath);
m_pApp = NULL;
m_pDocument = NULL;
- m_pFieldEventPath = NULL;
m_context.Reset();
if (m_isolateManaged)
@@ -172,75 +169,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;
-}
-
-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;
- }
+bool CJS_Runtime::AddEventToSet(const FieldEvent& event) {
+ return m_FieldEventSet.insert(event).second;
}
-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() {
« no previous file with comments | « fpdfsdk/src/javascript/JS_Context.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698