| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "app.h" | 7 #include "app.h" |
| 8 | 8 |
| 9 #include "../../../third_party/base/nonstd_unique_ptr.h" | 9 #include "../../../third_party/base/nonstd_unique_ptr.h" |
| 10 #include "../../include/fsdk_mgr.h" // For CPDFDoc_Environment. | 10 #include "../../include/fsdk_mgr.h" // For CPDFDoc_Environment. |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 | 117 |
| 118 CJS_Context* pContext = (CJS_Context*)cc; | 118 CJS_Context* pContext = (CJS_Context*)cc; |
| 119 CPDFDoc_Environment* pApp = pContext->GetReaderApp(); | 119 CPDFDoc_Environment* pApp = pContext->GetReaderApp(); |
| 120 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | 120 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
| 121 CPDFSDK_Document* pCurDoc = pContext->GetReaderDocument(); | 121 CPDFSDK_Document* pCurDoc = pContext->GetReaderDocument(); |
| 122 CJS_Array aDocs(pRuntime->GetIsolate()); | 122 CJS_Array aDocs(pRuntime->GetIsolate()); |
| 123 if (CPDFSDK_Document* pDoc = pApp->GetSDKDocument()) { | 123 if (CPDFSDK_Document* pDoc = pApp->GetSDKDocument()) { |
| 124 CJS_Document* pJSDocument = NULL; | 124 CJS_Document* pJSDocument = NULL; |
| 125 if (pDoc == pCurDoc) { | 125 if (pDoc == pCurDoc) { |
| 126 v8::Local<v8::Object> pObj = FXJS_GetThisObj(pRuntime->GetIsolate()); | 126 v8::Local<v8::Object> pObj = FXJS_GetThisObj(pRuntime->GetIsolate()); |
| 127 if (FXJS_GetObjDefnID(pObj) == | 127 if (FXJS_GetObjDefnID(pObj) == CJS_Document::g_nObjDefnID) |
| 128 FXJS_GetObjDefnID(pRuntime->GetIsolate(), L"Document")) | |
| 129 pJSDocument = | 128 pJSDocument = |
| 130 (CJS_Document*)FXJS_GetPrivate(pRuntime->GetIsolate(), pObj); | 129 (CJS_Document*)FXJS_GetPrivate(pRuntime->GetIsolate(), pObj); |
| 131 } else { | 130 } else { |
| 132 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj( | 131 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj( |
| 133 pRuntime->GetIsolate(), pContext, | 132 pRuntime->GetIsolate(), pContext, CJS_Document::g_nObjDefnID); |
| 134 FXJS_GetObjDefnID(pRuntime->GetIsolate(), L"Document")); | |
| 135 pJSDocument = | 133 pJSDocument = |
| 136 (CJS_Document*)FXJS_GetPrivate(pRuntime->GetIsolate(), pObj); | 134 (CJS_Document*)FXJS_GetPrivate(pRuntime->GetIsolate(), pObj); |
| 137 ASSERT(pJSDocument != NULL); | 135 ASSERT(pJSDocument != NULL); |
| 138 } | 136 } |
| 139 aDocs.SetElement(0, CJS_Value(pRuntime->GetIsolate(), pJSDocument)); | 137 aDocs.SetElement(0, CJS_Value(pRuntime->GetIsolate(), pJSDocument)); |
| 140 } | 138 } |
| 141 if (aDocs.GetLength() > 0) | 139 if (aDocs.GetLength() > 0) |
| 142 vp << aDocs; | 140 vp << aDocs; |
| 143 else | 141 else |
| 144 vp.SetNull(); | 142 vp.SetNull(); |
| (...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 407 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | 405 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
| 408 FX_DWORD dwInterval = params.size() > 1 ? params[1].ToInt() : 1000; | 406 FX_DWORD dwInterval = params.size() > 1 ? params[1].ToInt() : 1000; |
| 409 | 407 |
| 410 CPDFDoc_Environment* pApp = pRuntime->GetReaderApp(); | 408 CPDFDoc_Environment* pApp = pRuntime->GetReaderApp(); |
| 411 ASSERT(pApp); | 409 ASSERT(pApp); |
| 412 CJS_Timer* pTimer = | 410 CJS_Timer* pTimer = |
| 413 new CJS_Timer(this, pApp, pRuntime, 0, script, dwInterval, 0); | 411 new CJS_Timer(this, pApp, pRuntime, 0, script, dwInterval, 0); |
| 414 m_aTimer.Add(pTimer); | 412 m_aTimer.Add(pTimer); |
| 415 | 413 |
| 416 v8::Local<v8::Object> pRetObj = FXJS_NewFxDynamicObj( | 414 v8::Local<v8::Object> pRetObj = FXJS_NewFxDynamicObj( |
| 417 pRuntime->GetIsolate(), pContext, | 415 pRuntime->GetIsolate(), pContext, CJS_TimerObj::g_nObjDefnID); |
| 418 FXJS_GetObjDefnID(pRuntime->GetIsolate(), L"TimerObj")); | |
| 419 | |
| 420 CJS_TimerObj* pJS_TimerObj = | 416 CJS_TimerObj* pJS_TimerObj = |
| 421 (CJS_TimerObj*)FXJS_GetPrivate(pRuntime->GetIsolate(), pRetObj); | 417 (CJS_TimerObj*)FXJS_GetPrivate(pRuntime->GetIsolate(), pRetObj); |
| 422 ASSERT(pJS_TimerObj != NULL); | |
| 423 | |
| 424 TimerObj* pTimerObj = (TimerObj*)pJS_TimerObj->GetEmbedObject(); | 418 TimerObj* pTimerObj = (TimerObj*)pJS_TimerObj->GetEmbedObject(); |
| 425 ASSERT(pTimerObj != NULL); | |
| 426 | |
| 427 pTimerObj->SetTimer(pTimer); | 419 pTimerObj->SetTimer(pTimer); |
| 428 | 420 |
| 429 vRet = pRetObj; | 421 vRet = pRetObj; |
| 430 | |
| 431 return TRUE; | 422 return TRUE; |
| 432 } | 423 } |
| 433 | 424 |
| 434 FX_BOOL app::setTimeOut(IFXJS_Context* cc, | 425 FX_BOOL app::setTimeOut(IFXJS_Context* cc, |
| 435 const CJS_Parameters& params, | 426 const CJS_Parameters& params, |
| 436 CJS_Value& vRet, | 427 CJS_Value& vRet, |
| 437 CFX_WideString& sError) { | 428 CFX_WideString& sError) { |
| 438 if (params.size() > 2 || params.size() == 0) { | 429 if (params.size() > 2 || params.size() == 0) { |
| 439 sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR); | 430 sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR); |
| 440 return FALSE; | 431 return FALSE; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 455 FX_DWORD dwTimeOut = params.size() > 1 ? params[1].ToInt() : 1000; | 446 FX_DWORD dwTimeOut = params.size() > 1 ? params[1].ToInt() : 1000; |
| 456 | 447 |
| 457 CPDFDoc_Environment* pApp = pRuntime->GetReaderApp(); | 448 CPDFDoc_Environment* pApp = pRuntime->GetReaderApp(); |
| 458 ASSERT(pApp); | 449 ASSERT(pApp); |
| 459 | 450 |
| 460 CJS_Timer* pTimer = | 451 CJS_Timer* pTimer = |
| 461 new CJS_Timer(this, pApp, pRuntime, 1, script, dwTimeOut, dwTimeOut); | 452 new CJS_Timer(this, pApp, pRuntime, 1, script, dwTimeOut, dwTimeOut); |
| 462 m_aTimer.Add(pTimer); | 453 m_aTimer.Add(pTimer); |
| 463 | 454 |
| 464 v8::Local<v8::Object> pRetObj = FXJS_NewFxDynamicObj( | 455 v8::Local<v8::Object> pRetObj = FXJS_NewFxDynamicObj( |
| 465 pRuntime->GetIsolate(), pContext, | 456 pRuntime->GetIsolate(), pContext, CJS_TimerObj::g_nObjDefnID); |
| 466 FXJS_GetObjDefnID(pRuntime->GetIsolate(), L"TimerObj")); | |
| 467 | |
| 468 CJS_TimerObj* pJS_TimerObj = | 457 CJS_TimerObj* pJS_TimerObj = |
| 469 (CJS_TimerObj*)FXJS_GetPrivate(pRuntime->GetIsolate(), pRetObj); | 458 (CJS_TimerObj*)FXJS_GetPrivate(pRuntime->GetIsolate(), pRetObj); |
| 470 ASSERT(pJS_TimerObj != NULL); | |
| 471 | |
| 472 TimerObj* pTimerObj = (TimerObj*)pJS_TimerObj->GetEmbedObject(); | 459 TimerObj* pTimerObj = (TimerObj*)pJS_TimerObj->GetEmbedObject(); |
| 473 ASSERT(pTimerObj != NULL); | |
| 474 | |
| 475 pTimerObj->SetTimer(pTimer); | 460 pTimerObj->SetTimer(pTimer); |
| 476 | 461 |
| 477 vRet = pRetObj; | 462 vRet = pRetObj; |
| 478 | |
| 479 return TRUE; | 463 return TRUE; |
| 480 } | 464 } |
| 481 | 465 |
| 482 FX_BOOL app::clearTimeOut(IFXJS_Context* cc, | 466 FX_BOOL app::clearTimeOut(IFXJS_Context* cc, |
| 483 const CJS_Parameters& params, | 467 const CJS_Parameters& params, |
| 484 CJS_Value& vRet, | 468 CJS_Value& vRet, |
| 485 CFX_WideString& sError) { | 469 CFX_WideString& sError) { |
| 486 CJS_Context* pContext = (CJS_Context*)cc; | 470 CJS_Context* pContext = (CJS_Context*)cc; |
| 487 ASSERT(pContext != NULL); | |
| 488 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
| 489 ASSERT(pRuntime != NULL); | |
| 490 | |
| 491 if (params.size() != 1) { | 471 if (params.size() != 1) { |
| 492 sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR); | 472 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
| 493 return FALSE; | 473 return FALSE; |
| 494 } | 474 } |
| 495 | 475 |
| 496 if (params[0].GetType() == CJS_Value::VT_fxobject) { | 476 if (params[0].GetType() == CJS_Value::VT_fxobject) { |
| 497 v8::Local<v8::Object> pObj = params[0].ToV8Object(); | 477 v8::Local<v8::Object> pObj = params[0].ToV8Object(); |
| 498 { | 478 if (FXJS_GetObjDefnID(pObj) == CJS_TimerObj::g_nObjDefnID) { |
| 499 if (FXJS_GetObjDefnID(pObj) == | 479 if (CJS_Object* pJSObj = params[0].ToCJSObject()) { |
| 500 FXJS_GetObjDefnID(pRuntime->GetIsolate(), L"TimerObj")) { | 480 if (TimerObj* pTimerObj = (TimerObj*)pJSObj->GetEmbedObject()) { |
| 501 if (CJS_Object* pJSObj = params[0].ToCJSObject()) { | 481 if (CJS_Timer* pTimer = pTimerObj->GetTimer()) { |
| 502 if (TimerObj* pTimerObj = (TimerObj*)pJSObj->GetEmbedObject()) { | 482 pTimer->KillJSTimer(); |
| 503 if (CJS_Timer* pTimer = pTimerObj->GetTimer()) { | |
| 504 pTimer->KillJSTimer(); | |
| 505 | 483 |
| 506 for (int i = 0, sz = m_aTimer.GetSize(); i < sz; i++) { | 484 for (int i = 0, sz = m_aTimer.GetSize(); i < sz; i++) { |
| 507 if (m_aTimer[i] == pTimer) { | 485 if (m_aTimer[i] == pTimer) { |
| 508 m_aTimer.RemoveAt(i); | 486 m_aTimer.RemoveAt(i); |
| 509 break; | 487 break; |
| 510 } | |
| 511 } | 488 } |
| 489 } |
| 512 | 490 |
| 513 delete pTimer; | 491 delete pTimer; |
| 514 pTimerObj->SetTimer(NULL); | 492 pTimerObj->SetTimer(NULL); |
| 515 } | |
| 516 } | 493 } |
| 517 } | 494 } |
| 518 } | 495 } |
| 519 } | 496 } |
| 520 } | 497 } |
| 521 | 498 |
| 522 return TRUE; | 499 return TRUE; |
| 523 } | 500 } |
| 524 | 501 |
| 525 FX_BOOL app::clearInterval(IFXJS_Context* cc, | 502 FX_BOOL app::clearInterval(IFXJS_Context* cc, |
| 526 const CJS_Parameters& params, | 503 const CJS_Parameters& params, |
| 527 CJS_Value& vRet, | 504 CJS_Value& vRet, |
| 528 CFX_WideString& sError) { | 505 CFX_WideString& sError) { |
| 529 CJS_Context* pContext = (CJS_Context*)cc; | 506 CJS_Context* pContext = (CJS_Context*)cc; |
| 530 ASSERT(pContext != NULL); | |
| 531 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
| 532 ASSERT(pRuntime != NULL); | |
| 533 | |
| 534 if (params.size() != 1) { | 507 if (params.size() != 1) { |
| 535 sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR); | 508 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
| 536 return FALSE; | 509 return FALSE; |
| 537 } | 510 } |
| 538 | 511 |
| 539 if (params[0].GetType() == CJS_Value::VT_fxobject) { | 512 if (params[0].GetType() == CJS_Value::VT_fxobject) { |
| 540 v8::Local<v8::Object> pObj = params[0].ToV8Object(); | 513 v8::Local<v8::Object> pObj = params[0].ToV8Object(); |
| 541 { | 514 if (FXJS_GetObjDefnID(pObj) == CJS_TimerObj::g_nObjDefnID) { |
| 542 if (FXJS_GetObjDefnID(pObj) == | 515 if (CJS_Object* pJSObj = params[0].ToCJSObject()) { |
| 543 FXJS_GetObjDefnID(pRuntime->GetIsolate(), L"TimerObj")) { | 516 if (TimerObj* pTimerObj = (TimerObj*)pJSObj->GetEmbedObject()) { |
| 544 if (CJS_Object* pJSObj = params[0].ToCJSObject()) { | 517 if (CJS_Timer* pTimer = pTimerObj->GetTimer()) { |
| 545 if (TimerObj* pTimerObj = (TimerObj*)pJSObj->GetEmbedObject()) { | 518 pTimer->KillJSTimer(); |
| 546 if (CJS_Timer* pTimer = pTimerObj->GetTimer()) { | |
| 547 pTimer->KillJSTimer(); | |
| 548 | 519 |
| 549 for (int i = 0, sz = m_aTimer.GetSize(); i < sz; i++) { | 520 for (int i = 0, sz = m_aTimer.GetSize(); i < sz; i++) { |
| 550 if (m_aTimer[i] == pTimer) { | 521 if (m_aTimer[i] == pTimer) { |
| 551 m_aTimer.RemoveAt(i); | 522 m_aTimer.RemoveAt(i); |
| 552 break; | 523 break; |
| 553 } | |
| 554 } | 524 } |
| 525 } |
| 555 | 526 |
| 556 delete pTimer; | 527 delete pTimer; |
| 557 pTimerObj->SetTimer(NULL); | 528 pTimerObj->SetTimer(NULL); |
| 558 } | |
| 559 } | 529 } |
| 560 } | 530 } |
| 561 } | 531 } |
| 562 } | 532 } |
| 563 } | 533 } |
| 564 | 534 |
| 565 return TRUE; | 535 return TRUE; |
| 566 } | 536 } |
| 567 | 537 |
| 568 FX_BOOL app::execMenuItem(IFXJS_Context* cc, | 538 FX_BOOL app::execMenuItem(IFXJS_Context* cc, |
| (...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 848 CFX_WideString& sError) { | 818 CFX_WideString& sError) { |
| 849 return FALSE; | 819 return FALSE; |
| 850 } | 820 } |
| 851 | 821 |
| 852 FX_BOOL app::execDialog(IFXJS_Context* cc, | 822 FX_BOOL app::execDialog(IFXJS_Context* cc, |
| 853 const CJS_Parameters& params, | 823 const CJS_Parameters& params, |
| 854 CJS_Value& vRet, | 824 CJS_Value& vRet, |
| 855 CFX_WideString& sError) { | 825 CFX_WideString& sError) { |
| 856 return TRUE; | 826 return TRUE; |
| 857 } | 827 } |
| OLD | NEW |