| 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 "../../include/javascript/JavaScript.h" | 7 #include "../../include/javascript/JavaScript.h" |
| 8 #include "../../include/javascript/IJavaScript.h" | 8 #include "../../include/javascript/IJavaScript.h" |
| 9 #include "../../include/javascript/JS_EventHandler.h" | 9 #include "../../include/javascript/JS_EventHandler.h" |
| 10 #include "../../include/javascript/JS_Runtime.h" | 10 #include "../../include/javascript/JS_Runtime.h" |
| (...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 334 return v8::Local<v8::Context>::New(m_isolate, m_context); | 334 return v8::Local<v8::Context>::New(m_isolate, m_context); |
| 335 } | 335 } |
| 336 | 336 |
| 337 CFX_WideString ChangeObjName(const CFX_WideString& str) | 337 CFX_WideString ChangeObjName(const CFX_WideString& str) |
| 338 { | 338 { |
| 339 CFX_WideString sRet = str; | 339 CFX_WideString sRet = str; |
| 340 sRet.Replace(L"_", L"."); | 340 sRet.Replace(L"_", L"."); |
| 341 return sRet; | 341 return sRet; |
| 342 } | 342 } |
| 343 | 343 |
| 344 void CJS_Runtime::GetObjectNames(CFX_WideStringArray& array) | |
| 345 { | |
| 346 array.RemoveAll(); | |
| 347 | 344 |
| 348 array.Add(CJS_Border::m_pClassName); | |
| 349 array.Add(CJS_Display::m_pClassName); | |
| 350 array.Add(CJS_Font::m_pClassName); | |
| 351 array.Add(CJS_Highlight::m_pClassName); | |
| 352 array.Add(CJS_Position::m_pClassName); | |
| 353 array.Add(CJS_ScaleHow::m_pClassName); | |
| 354 array.Add(CJS_ScaleWhen::m_pClassName); | |
| 355 array.Add(CJS_Style::m_pClassName); | |
| 356 array.Add(CJS_Zoomtype::m_pClassName); | |
| 357 | |
| 358 array.Add(CJS_App::m_pClassName); | |
| 359 array.Add(L"this"); | |
| 360 array.Add(CJS_Event::m_pClassName); | |
| 361 | |
| 362 array.Add(CJS_Global::m_pClassName); | |
| 363 array.Add(CJS_Util::m_pClassName); | |
| 364 } | |
| 365 | |
| 366 void CJS_Runtime::GetObjectConsts(const CFX_WideString& sObjName, CFX_WideString
Array& array) | |
| 367 { | |
| 368 JSConstSpec* pConsts = NULL; | |
| 369 int nSize = 0; | |
| 370 | |
| 371 if (sObjName == CJS_Border::m_pClassName) | |
| 372 CJS_Border::GetConsts(pConsts, nSize); | |
| 373 else if (sObjName == CJS_Display::m_pClassName) | |
| 374 CJS_Display::GetConsts(pConsts, nSize); | |
| 375 else if (sObjName == CJS_Font::m_pClassName) | |
| 376 CJS_Font::GetConsts(pConsts, nSize); | |
| 377 else if (sObjName == CJS_Highlight::m_pClassName) | |
| 378 CJS_Highlight::GetConsts(pConsts, nSize); | |
| 379 else if (sObjName == CJS_Position::m_pClassName) | |
| 380 CJS_Position::GetConsts(pConsts, nSize); | |
| 381 else if (sObjName == CJS_ScaleHow::m_pClassName) | |
| 382 CJS_ScaleHow::GetConsts(pConsts, nSize); | |
| 383 else if (sObjName == CJS_ScaleWhen::m_pClassName) | |
| 384 CJS_ScaleWhen::GetConsts(pConsts, nSize); | |
| 385 else if (sObjName == CJS_Style::m_pClassName) | |
| 386 CJS_Style::GetConsts(pConsts, nSize); | |
| 387 else if (sObjName == CJS_Zoomtype::m_pClassName) | |
| 388 CJS_Zoomtype::GetConsts(pConsts, nSize); | |
| 389 | |
| 390 else if (sObjName == CJS_App::m_pClassName) | |
| 391 CJS_App::GetConsts(pConsts, nSize); | |
| 392 else if (sObjName == CJS_Color::m_pClassName) | |
| 393 CJS_Color::GetConsts(pConsts, nSize); | |
| 394 | |
| 395 else if (sObjName == L"this") | |
| 396 { | |
| 397 if (GetReaderDocument()) | |
| 398 CJS_Document::GetConsts(pConsts, nSize); | |
| 399 else | |
| 400 CJS_App::GetConsts(pConsts, nSize); | |
| 401 } | |
| 402 | |
| 403 if (sObjName == CJS_Event::m_pClassName) | |
| 404 CJS_Event::GetConsts(pConsts, nSize); | |
| 405 else if (sObjName == CJS_Field::m_pClassName) | |
| 406 CJS_Field::GetConsts(pConsts, nSize); | |
| 407 else if (sObjName == CJS_Global::m_pClassName) | |
| 408 CJS_Global::GetConsts(pConsts, nSize); | |
| 409 else if (sObjName == CJS_Util::m_pClassName) | |
| 410 CJS_Util::GetConsts(pConsts, nSize); | |
| 411 | |
| 412 for (int i=0; i<nSize; i++) | |
| 413 array.Add(pConsts[i].pName); | |
| 414 } | |
| 415 | |
| 416 void CJS_Runtime::GetObjectProps(const CFX_WideString& sObjName, CFX_WideStringA
rray& array) | |
| 417 { | |
| 418 JSPropertySpec* pProperties = NULL; | |
| 419 int nSize = 0; | |
| 420 | |
| 421 if (sObjName == CJS_App::m_pClassName) | |
| 422 CJS_App::GetProperties(pProperties, nSize); | |
| 423 else if (sObjName == CJS_Color::m_pClassName) | |
| 424 CJS_Color::GetProperties(pProperties, nSize); | |
| 425 else if (sObjName == L"this") | |
| 426 { | |
| 427 if (GetReaderDocument()) | |
| 428 CJS_Document::GetProperties(pProperties, nSize); | |
| 429 else | |
| 430 CJS_App::GetProperties(pProperties, nSize); | |
| 431 } | |
| 432 else if (sObjName == CJS_Event::m_pClassName) | |
| 433 CJS_Event::GetProperties(pProperties, nSize); | |
| 434 else if (sObjName == CJS_Field::m_pClassName) | |
| 435 CJS_Field::GetProperties(pProperties, nSize); | |
| 436 else if (sObjName == CJS_Global::m_pClassName) | |
| 437 CJS_Global::GetProperties(pProperties, nSize); | |
| 438 else if (sObjName == CJS_Util::m_pClassName) | |
| 439 CJS_Util::GetProperties(pProperties, nSize); | |
| 440 | |
| 441 for (int i=0; i<nSize; i++) | |
| 442 array.Add(pProperties[i].pName); | |
| 443 } | |
| 444 | |
| 445 void CJS_Runtime::GetObjectMethods(const CFX_WideString& sObjName, CFX_WideStrin
gArray& array) | |
| 446 { | |
| 447 JSMethodSpec* pMethods = NULL; | |
| 448 int nSize = 0; | |
| 449 | |
| 450 if (sObjName == CJS_App::m_pClassName) | |
| 451 CJS_App::GetMethods(pMethods, nSize); | |
| 452 else if (sObjName == CJS_Color::m_pClassName) | |
| 453 CJS_Color::GetMethods(pMethods, nSize); | |
| 454 else if (sObjName == L"this") | |
| 455 { | |
| 456 if (GetReaderDocument()) | |
| 457 CJS_Document::GetMethods(pMethods, nSize); | |
| 458 else | |
| 459 CJS_App::GetMethods(pMethods, nSize); | |
| 460 } | |
| 461 else if (sObjName == CJS_Event::m_pClassName) | |
| 462 CJS_Event::GetMethods(pMethods, nSize); | |
| 463 else if (sObjName == CJS_Field::m_pClassName) | |
| 464 CJS_Field::GetMethods(pMethods, nSize); | |
| 465 else if (sObjName == CJS_Global::m_pClassName) | |
| 466 CJS_Global::GetMethods(pMethods, nSize); | |
| 467 else if (sObjName == CJS_Util::m_pClassName) | |
| 468 CJS_Util::GetMethods(pMethods, nSize); | |
| 469 | |
| 470 for (int i=0; i<nSize; i++) | |
| 471 array.Add(pMethods[i].pName); | |
| 472 } | |
| 473 | |
| 474 FX_BOOL CJS_Runtime::IsEntered() | |
| 475 { | |
| 476 return v8::Isolate::GetCurrent() == m_isolate; | |
| 477 } | |
| 478 void CJS_Runtime::Exit() | |
| 479 { | |
| 480 if(m_isolate) m_isolate->Exit(); | |
| 481 } | |
| 482 void CJS_Runtime::Enter() | |
| 483 { | |
| 484 if(m_isolate) m_isolate->Enter(); | |
| 485 } | |
| 486 FX_BOOL CJS_Runtime::GetHValueByName(FX_BSTR utf8Name, FXJSE_HVALUE hValue) | 345 FX_BOOL CJS_Runtime::GetHValueByName(FX_BSTR utf8Name, FXJSE_HVALUE hValue) |
| 487 { | 346 { |
| 488 FX_LPCSTR name = utf8Name.GetCStr(); | 347 FX_LPCSTR name = utf8Name.GetCStr(); |
| 489 | 348 |
| 490 v8::Locker lock(GetIsolate()); | 349 v8::Locker lock(GetIsolate()); |
| 491 v8::Isolate::Scope isolate_scope(GetIsolate()); | 350 v8::Isolate::Scope isolate_scope(GetIsolate()); |
| 492 v8::HandleScope handle_scope(GetIsolate()); | 351 v8::HandleScope handle_scope(GetIsolate()); |
| 493 v8::Local<v8::Context> context = | 352 v8::Local<v8::Context> context = |
| 494 v8::Local<v8::Context>::New(GetIsolate(), m_context); | 353 v8::Local<v8::Context>::New(GetIsolate(), m_context); |
| 495 v8::Context::Scope context_scope(context); | 354 v8::Context::Scope context_scope(context); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 518 v8::Local<v8::Context> context = | 377 v8::Local<v8::Context> context = |
| 519 v8::Local<v8::Context>::New(pIsolate, m_context); | 378 v8::Local<v8::Context>::New(pIsolate, m_context); |
| 520 v8::Context::Scope context_scope(context); | 379 v8::Context::Scope context_scope(context); |
| 521 | 380 |
| 522 //v8::Local<v8::Context> tmpCotext = v8::Local<v8::Context>::New(GetIsol
ate(), m_context); | 381 //v8::Local<v8::Context> tmpCotext = v8::Local<v8::Context>::New(GetIsol
ate(), m_context); |
| 523 v8::Local<v8::Value> propvalue = v8::Local<v8::Value>::New(GetIsolate(),
((CFXJSE_Value*)hValue)->DirectGetValue()); | 382 v8::Local<v8::Value> propvalue = v8::Local<v8::Value>::New(GetIsolate(),
((CFXJSE_Value*)hValue)->DirectGetValue()); |
| 524 context->Global()->Set(v8::String::NewFromUtf8(pIsolate, name, v8::Strin
g::kNormalString, utf8Name.GetLength()), propvalue); | 383 context->Global()->Set(v8::String::NewFromUtf8(pIsolate, name, v8::Strin
g::kNormalString, utf8Name.GetLength()), propvalue); |
| 525 | 384 |
| 526 return TRUE; | 385 return TRUE; |
| 527 } | 386 } |
| OLD | NEW |