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

Side by Side Diff: fpdfsdk/src/javascript/app.cpp

Issue 1382263002: Store object definition ID in each js_class. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Remove lookup by name Created 5 years, 2 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 unified diff | Download patch
OLDNEW
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 "../../../third_party/base/nonstd_unique_ptr.h" 7 #include "../../../third_party/base/nonstd_unique_ptr.h"
8 #include "../../include/javascript/JavaScript.h" 8 #include "../../include/javascript/JavaScript.h"
9 #include "../../include/javascript/IJavaScript.h" 9 #include "../../include/javascript/IJavaScript.h"
10 #include "../../include/javascript/JS_Define.h" 10 #include "../../include/javascript/JS_Define.h"
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 116
117 CJS_Context* pContext = (CJS_Context*)cc; 117 CJS_Context* pContext = (CJS_Context*)cc;
118 CPDFDoc_Environment* pApp = pContext->GetReaderApp(); 118 CPDFDoc_Environment* pApp = pContext->GetReaderApp();
119 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 119 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
120 CPDFSDK_Document* pCurDoc = pContext->GetReaderDocument(); 120 CPDFSDK_Document* pCurDoc = pContext->GetReaderDocument();
121 CJS_Array aDocs(pRuntime->GetIsolate()); 121 CJS_Array aDocs(pRuntime->GetIsolate());
122 if (CPDFSDK_Document* pDoc = pApp->GetSDKDocument()) { 122 if (CPDFSDK_Document* pDoc = pApp->GetSDKDocument()) {
123 CJS_Document* pJSDocument = NULL; 123 CJS_Document* pJSDocument = NULL;
124 if (pDoc == pCurDoc) { 124 if (pDoc == pCurDoc) {
125 v8::Local<v8::Object> pObj = FXJS_GetThisObj(pRuntime->GetIsolate()); 125 v8::Local<v8::Object> pObj = FXJS_GetThisObj(pRuntime->GetIsolate());
126 if (FXJS_GetObjDefnID(pObj) == 126 if (FXJS_GetObjDefnID(pObj) == CJS_Document::g_nObjDefnID)
127 FXJS_GetObjDefnID(pRuntime->GetIsolate(), L"Document"))
128 pJSDocument = 127 pJSDocument =
129 (CJS_Document*)FXJS_GetPrivate(pRuntime->GetIsolate(), pObj); 128 (CJS_Document*)FXJS_GetPrivate(pRuntime->GetIsolate(), pObj);
130 } else { 129 } else {
131 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj( 130 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj(
132 pRuntime->GetIsolate(), pContext, 131 pRuntime->GetIsolate(), pContext, CJS_Document::g_nObjDefnID);
133 FXJS_GetObjDefnID(pRuntime->GetIsolate(), L"Document"));
134 pJSDocument = 132 pJSDocument =
135 (CJS_Document*)FXJS_GetPrivate(pRuntime->GetIsolate(), pObj); 133 (CJS_Document*)FXJS_GetPrivate(pRuntime->GetIsolate(), pObj);
136 ASSERT(pJSDocument != NULL); 134 ASSERT(pJSDocument != NULL);
137 } 135 }
138 aDocs.SetElement(0, CJS_Value(pRuntime->GetIsolate(), pJSDocument)); 136 aDocs.SetElement(0, CJS_Value(pRuntime->GetIsolate(), pJSDocument));
139 } 137 }
140 if (aDocs.GetLength() > 0) 138 if (aDocs.GetLength() > 0)
141 vp << aDocs; 139 vp << aDocs;
142 else 140 else
143 vp.SetNull(); 141 vp.SetNull();
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 406
409 CPDFDoc_Environment* pApp = pRuntime->GetReaderApp(); 407 CPDFDoc_Environment* pApp = pRuntime->GetReaderApp();
410 ASSERT(pApp); 408 ASSERT(pApp);
411 CJS_Timer* pTimer = new CJS_Timer(this, pApp); 409 CJS_Timer* pTimer = new CJS_Timer(this, pApp);
412 m_aTimer.Add(pTimer); 410 m_aTimer.Add(pTimer);
413 411
414 pTimer->SetType(0); 412 pTimer->SetType(0);
415 pTimer->SetRuntime(pRuntime); 413 pTimer->SetRuntime(pRuntime);
416 pTimer->SetJScript(script); 414 pTimer->SetJScript(script);
417 pTimer->SetTimeOut(0); 415 pTimer->SetTimeOut(0);
418 // pTimer->SetStartTime(GetTickCount());
419 pTimer->SetJSTimer(dwInterval); 416 pTimer->SetJSTimer(dwInterval);
420 417
421 v8::Local<v8::Object> pRetObj = FXJS_NewFxDynamicObj( 418 v8::Local<v8::Object> pRetObj = FXJS_NewFxDynamicObj(
422 pRuntime->GetIsolate(), pContext, 419 pRuntime->GetIsolate(), pContext, CJS_TimerObj::g_nObjDefnID);
423 FXJS_GetObjDefnID(pRuntime->GetIsolate(), L"TimerObj"));
424
425 CJS_TimerObj* pJS_TimerObj = 420 CJS_TimerObj* pJS_TimerObj =
426 (CJS_TimerObj*)FXJS_GetPrivate(pRuntime->GetIsolate(), pRetObj); 421 (CJS_TimerObj*)FXJS_GetPrivate(pRuntime->GetIsolate(), pRetObj);
427 ASSERT(pJS_TimerObj != NULL);
428
429 TimerObj* pTimerObj = (TimerObj*)pJS_TimerObj->GetEmbedObject(); 422 TimerObj* pTimerObj = (TimerObj*)pJS_TimerObj->GetEmbedObject();
430 ASSERT(pTimerObj != NULL);
431
432 pTimerObj->SetTimer(pTimer); 423 pTimerObj->SetTimer(pTimer);
433 424
434 vRet = pRetObj; 425 vRet = pRetObj;
435
436 return TRUE; 426 return TRUE;
437 } 427 }
438 428
439 FX_BOOL app::setTimeOut(IFXJS_Context* cc, 429 FX_BOOL app::setTimeOut(IFXJS_Context* cc,
440 const CJS_Parameters& params, 430 const CJS_Parameters& params,
441 CJS_Value& vRet, 431 CJS_Value& vRet,
442 CFX_WideString& sError) { 432 CFX_WideString& sError) {
443 if (params.size() > 2 || params.size() == 0) { 433 if (params.size() > 2 || params.size() == 0) {
444 sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR); 434 sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR);
445 return FALSE; 435 return FALSE;
(...skipping 19 matching lines...) Expand all
465 CJS_Timer* pTimer = new CJS_Timer(this, pApp); 455 CJS_Timer* pTimer = new CJS_Timer(this, pApp);
466 m_aTimer.Add(pTimer); 456 m_aTimer.Add(pTimer);
467 457
468 pTimer->SetType(1); 458 pTimer->SetType(1);
469 pTimer->SetRuntime(pRuntime); 459 pTimer->SetRuntime(pRuntime);
470 pTimer->SetJScript(script); 460 pTimer->SetJScript(script);
471 pTimer->SetTimeOut(dwTimeOut); 461 pTimer->SetTimeOut(dwTimeOut);
472 pTimer->SetJSTimer(dwTimeOut); 462 pTimer->SetJSTimer(dwTimeOut);
473 463
474 v8::Local<v8::Object> pRetObj = FXJS_NewFxDynamicObj( 464 v8::Local<v8::Object> pRetObj = FXJS_NewFxDynamicObj(
475 pRuntime->GetIsolate(), pContext, 465 pRuntime->GetIsolate(), pContext, CJS_TimerObj::g_nObjDefnID);
476 FXJS_GetObjDefnID(pRuntime->GetIsolate(), L"TimerObj"));
477
478 CJS_TimerObj* pJS_TimerObj = 466 CJS_TimerObj* pJS_TimerObj =
479 (CJS_TimerObj*)FXJS_GetPrivate(pRuntime->GetIsolate(), pRetObj); 467 (CJS_TimerObj*)FXJS_GetPrivate(pRuntime->GetIsolate(), pRetObj);
480 ASSERT(pJS_TimerObj != NULL);
481
482 TimerObj* pTimerObj = (TimerObj*)pJS_TimerObj->GetEmbedObject(); 468 TimerObj* pTimerObj = (TimerObj*)pJS_TimerObj->GetEmbedObject();
483 ASSERT(pTimerObj != NULL);
484
485 pTimerObj->SetTimer(pTimer); 469 pTimerObj->SetTimer(pTimer);
486 470
487 vRet = pRetObj; 471 vRet = pRetObj;
488
489 return TRUE; 472 return TRUE;
490 } 473 }
491 474
492 FX_BOOL app::clearTimeOut(IFXJS_Context* cc, 475 FX_BOOL app::clearTimeOut(IFXJS_Context* cc,
493 const CJS_Parameters& params, 476 const CJS_Parameters& params,
494 CJS_Value& vRet, 477 CJS_Value& vRet,
495 CFX_WideString& sError) { 478 CFX_WideString& sError) {
496 CJS_Context* pContext = (CJS_Context*)cc; 479 CJS_Context* pContext = (CJS_Context*)cc;
497 ASSERT(pContext != NULL);
498 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
499 ASSERT(pRuntime != NULL);
500
501 if (params.size() != 1) { 480 if (params.size() != 1) {
502 sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR); 481 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
503 return FALSE; 482 return FALSE;
504 } 483 }
505 484
506 if (params[0].GetType() == CJS_Value::VT_fxobject) { 485 if (params[0].GetType() == CJS_Value::VT_fxobject) {
507 v8::Local<v8::Object> pObj = params[0].ToV8Object(); 486 v8::Local<v8::Object> pObj = params[0].ToV8Object();
508 { 487 if (FXJS_GetObjDefnID(pObj) == CJS_TimerObj::g_nObjDefnID) {
509 if (FXJS_GetObjDefnID(pObj) ==
510 FXJS_GetObjDefnID(pRuntime->GetIsolate(), L"TimerObj")) {
511 if (CJS_Object* pJSObj = params[0].ToCJSObject()) { 488 if (CJS_Object* pJSObj = params[0].ToCJSObject()) {
512 if (TimerObj* pTimerObj = (TimerObj*)pJSObj->GetEmbedObject()) { 489 if (TimerObj* pTimerObj = (TimerObj*)pJSObj->GetEmbedObject()) {
513 if (CJS_Timer* pTimer = pTimerObj->GetTimer()) { 490 if (CJS_Timer* pTimer = pTimerObj->GetTimer()) {
514 pTimer->KillJSTimer(); 491 pTimer->KillJSTimer();
515 492
516 for (int i = 0, sz = m_aTimer.GetSize(); i < sz; i++) { 493 for (int i = 0, sz = m_aTimer.GetSize(); i < sz; i++) {
517 if (m_aTimer[i] == pTimer) { 494 if (m_aTimer[i] == pTimer) {
518 m_aTimer.RemoveAt(i); 495 m_aTimer.RemoveAt(i);
519 break; 496 break;
520 } 497 }
521 } 498 }
522 499
523 delete pTimer; 500 delete pTimer;
524 pTimerObj->SetTimer(NULL); 501 pTimerObj->SetTimer(NULL);
525 } 502 }
526 } 503 }
527 } 504 }
528 }
529 } 505 }
530 } 506 }
531 507
532 return TRUE; 508 return TRUE;
533 } 509 }
534 510
535 FX_BOOL app::clearInterval(IFXJS_Context* cc, 511 FX_BOOL app::clearInterval(IFXJS_Context* cc,
536 const CJS_Parameters& params, 512 const CJS_Parameters& params,
537 CJS_Value& vRet, 513 CJS_Value& vRet,
538 CFX_WideString& sError) { 514 CFX_WideString& sError) {
539 CJS_Context* pContext = (CJS_Context*)cc; 515 CJS_Context* pContext = (CJS_Context*)cc;
540 ASSERT(pContext != NULL);
541 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
542 ASSERT(pRuntime != NULL);
543
544 if (params.size() != 1) { 516 if (params.size() != 1) {
545 sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR); 517 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
546 return FALSE; 518 return FALSE;
547 } 519 }
548 520
549 if (params[0].GetType() == CJS_Value::VT_fxobject) { 521 if (params[0].GetType() == CJS_Value::VT_fxobject) {
550 v8::Local<v8::Object> pObj = params[0].ToV8Object(); 522 v8::Local<v8::Object> pObj = params[0].ToV8Object();
551 { 523 if (FXJS_GetObjDefnID(pObj) == CJS_TimerObj::g_nObjDefnID) {
552 if (FXJS_GetObjDefnID(pObj) ==
553 FXJS_GetObjDefnID(pRuntime->GetIsolate(), L"TimerObj")) {
554 if (CJS_Object* pJSObj = params[0].ToCJSObject()) { 524 if (CJS_Object* pJSObj = params[0].ToCJSObject()) {
555 if (TimerObj* pTimerObj = (TimerObj*)pJSObj->GetEmbedObject()) { 525 if (TimerObj* pTimerObj = (TimerObj*)pJSObj->GetEmbedObject()) {
556 if (CJS_Timer* pTimer = pTimerObj->GetTimer()) { 526 if (CJS_Timer* pTimer = pTimerObj->GetTimer()) {
557 pTimer->KillJSTimer(); 527 pTimer->KillJSTimer();
558 528
559 for (int i = 0, sz = m_aTimer.GetSize(); i < sz; i++) { 529 for (int i = 0, sz = m_aTimer.GetSize(); i < sz; i++) {
560 if (m_aTimer[i] == pTimer) { 530 if (m_aTimer[i] == pTimer) {
561 m_aTimer.RemoveAt(i); 531 m_aTimer.RemoveAt(i);
562 break; 532 break;
563 } 533 }
564 } 534 }
565 535
566 delete pTimer; 536 delete pTimer;
567 pTimerObj->SetTimer(NULL); 537 pTimerObj->SetTimer(NULL);
568 } 538 }
569 } 539 }
570 }
571 } 540 }
572 } 541 }
573 } 542 }
574 543
575 return TRUE; 544 return TRUE;
576 } 545 }
577 546
578 FX_BOOL app::execMenuItem(IFXJS_Context* cc, 547 FX_BOOL app::execMenuItem(IFXJS_Context* cc,
579 const CJS_Parameters& params, 548 const CJS_Parameters& params,
580 CJS_Value& vRet, 549 CJS_Value& vRet,
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 CFX_WideString& sError) { 823 CFX_WideString& sError) {
855 return FALSE; 824 return FALSE;
856 } 825 }
857 826
858 FX_BOOL app::execDialog(IFXJS_Context* cc, 827 FX_BOOL app::execDialog(IFXJS_Context* cc,
859 const CJS_Parameters& params, 828 const CJS_Parameters& params,
860 CJS_Value& vRet, 829 CJS_Value& vRet,
861 CFX_WideString& sError) { 830 CFX_WideString& sError) {
862 return TRUE; 831 return TRUE;
863 } 832 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698