| 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() {
|
|
|