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

Side by Side Diff: xfa/fxfa/fm2js/xfa_fm2jscontext.cpp

Issue 2045883004: Remove more FXJSE c-method wrappers. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 6 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 "xfa/fxfa/fm2js/xfa_fm2jscontext.h" 7 #include "xfa/fxfa/fm2js/xfa_fm2jscontext.h"
8 8
9 #include <time.h> 9 #include <time.h>
10 10
11 #include "core/fxcrt/include/fx_ext.h" 11 #include "core/fxcrt/include/fx_ext.h"
12 #include "xfa/fgas/localization/fgas_locale.h" 12 #include "xfa/fgas/localization/fgas_locale.h"
13 #include "xfa/fxfa/app/xfa_ffnotify.h" 13 #include "xfa/fxfa/app/xfa_ffnotify.h"
14 #include "xfa/fxfa/fm2js/xfa_program.h" 14 #include "xfa/fxfa/fm2js/xfa_program.h"
15 #include "xfa/fxfa/parser/xfa_document.h" 15 #include "xfa/fxfa/parser/xfa_document.h"
16 #include "xfa/fxfa/parser/xfa_localevalue.h" 16 #include "xfa/fxfa/parser/xfa_localevalue.h"
17 #include "xfa/fxfa/parser/xfa_parser.h" 17 #include "xfa/fxfa/parser/xfa_parser.h"
18 #include "xfa/fxfa/parser/xfa_parser_imp.h" 18 #include "xfa/fxfa/parser/xfa_parser_imp.h"
19 #include "xfa/fxfa/parser/xfa_script_imp.h" 19 #include "xfa/fxfa/parser/xfa_script_imp.h"
20 #include "xfa/fxjse/cfxjse_arguments.h" 20 #include "xfa/fxjse/cfxjse_arguments.h"
21 #include "xfa/fxjse/class.h"
21 #include "xfa/fxjse/value.h" 22 #include "xfa/fxjse/value.h"
22 23
23 namespace { 24 namespace {
24 25
25 const double kFinancialPrecision = 0.00000001; 26 const double kFinancialPrecision = 0.00000001;
26 27
27 struct XFA_FMHtmlReserveCode { 28 struct XFA_FMHtmlReserveCode {
28 uint32_t m_uCode; 29 uint32_t m_uCode;
29 const FX_WCHAR* m_htmlReserve; 30 const FX_WCHAR* m_htmlReserve;
30 }; 31 };
(...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 if (argc < 1) { 537 if (argc < 1) {
537 args.GetReturnValue()->SetNull(); 538 args.GetReturnValue()->SetNull();
538 return; 539 return;
539 } 540 }
540 541
541 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime(); 542 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime();
542 uint32_t uCount = 0; 543 uint32_t uCount = 0;
543 FX_DOUBLE dSum = 0.0; 544 FX_DOUBLE dSum = 0.0;
544 for (int32_t i = 0; i < argc; i++) { 545 for (int32_t i = 0; i < argc; i++) {
545 std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i); 546 std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i);
546 if (FXJSE_Value_IsNull(argValue.get())) 547 if (CFXJSE_Value::IsNull(argValue.get()))
547 continue; 548 continue;
548 549
549 if (!FXJSE_Value_IsArray(argValue.get())) { 550 if (!CFXJSE_Value::IsArray(argValue.get())) {
550 dSum += ValueToDouble(pThis, argValue.get()); 551 dSum += ValueToDouble(pThis, argValue.get());
551 uCount++; 552 uCount++;
552 continue; 553 continue;
553 } 554 }
554 555
555 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 556 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
556 argValue->GetObjectProperty("length", lengthValue.get()); 557 argValue->GetObjectProperty("length", lengthValue.get());
557 int32_t iLength = lengthValue->ToInteger(); 558 int32_t iLength = lengthValue->ToInteger();
558 559
559 if (iLength > 2) { 560 if (iLength > 2) {
560 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 561 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
561 argValue->GetObjectPropertyByIdx(1, propertyValue.get()); 562 argValue->GetObjectPropertyByIdx(1, propertyValue.get());
562 563
563 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 564 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
564 if (FXJSE_Value_IsNull(propertyValue.get())) { 565 if (CFXJSE_Value::IsNull(propertyValue.get())) {
565 for (int32_t j = 2; j < iLength; j++) { 566 for (int32_t j = 2; j < iLength; j++) {
566 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get()); 567 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get());
567 std::unique_ptr<CFXJSE_Value> defaultPropValue( 568 std::unique_ptr<CFXJSE_Value> defaultPropValue(
568 new CFXJSE_Value(pIsolate)); 569 new CFXJSE_Value(pIsolate));
569 GetObjectDefaultValue(jsObjectValue.get(), defaultPropValue.get()); 570 GetObjectDefaultValue(jsObjectValue.get(), defaultPropValue.get());
570 if (FXJSE_Value_IsNull(defaultPropValue.get())) 571 if (CFXJSE_Value::IsNull(defaultPropValue.get()))
571 continue; 572 continue;
572 573
573 dSum += ValueToDouble(pThis, defaultPropValue.get()); 574 dSum += ValueToDouble(pThis, defaultPropValue.get());
574 uCount++; 575 uCount++;
575 } 576 }
576 } else { 577 } else {
577 CFX_ByteString propertyStr; 578 CFX_ByteString propertyStr;
578 propertyValue->ToString(propertyStr); 579 propertyValue->ToString(propertyStr);
579 for (int32_t j = 2; j < iLength; j++) { 580 for (int32_t j = 2; j < iLength; j++) {
580 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get()); 581 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get());
581 std::unique_ptr<CFXJSE_Value> newPropertyValue( 582 std::unique_ptr<CFXJSE_Value> newPropertyValue(
582 new CFXJSE_Value(pIsolate)); 583 new CFXJSE_Value(pIsolate));
583 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(), 584 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(),
584 newPropertyValue.get()); 585 newPropertyValue.get());
585 if (FXJSE_Value_IsNull(newPropertyValue.get())) 586 if (CFXJSE_Value::IsNull(newPropertyValue.get()))
586 continue; 587 continue;
587 588
588 dSum += ValueToDouble(pThis, newPropertyValue.get()); 589 dSum += ValueToDouble(pThis, newPropertyValue.get());
589 uCount++; 590 uCount++;
590 } 591 }
591 } 592 }
592 } 593 }
593 } 594 }
594 if (uCount == 0) { 595 if (uCount == 0) {
595 args.GetReturnValue()->SetNull(); 596 args.GetReturnValue()->SetNull();
(...skipping 25 matching lines...) Expand all
621 622
622 // static 623 // static
623 void CXFA_FM2JSContext::Count(CFXJSE_Value* pThis, 624 void CXFA_FM2JSContext::Count(CFXJSE_Value* pThis,
624 const CFX_ByteStringC& szFuncName, 625 const CFX_ByteStringC& szFuncName,
625 CFXJSE_Arguments& args) { 626 CFXJSE_Arguments& args) {
626 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); 627 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr);
627 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); 628 v8::Isolate* pIsolate = pContext->GetScriptRuntime();
628 int32_t iCount = 0; 629 int32_t iCount = 0;
629 for (int32_t i = 0; i < args.GetLength(); i++) { 630 for (int32_t i = 0; i < args.GetLength(); i++) {
630 std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i); 631 std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i);
631 if (FXJSE_Value_IsNull(argValue.get())) 632 if (CFXJSE_Value::IsNull(argValue.get()))
632 continue; 633 continue;
633 634
634 if (FXJSE_Value_IsArray(argValue.get())) { 635 if (CFXJSE_Value::IsArray(argValue.get())) {
635 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 636 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
636 argValue->GetObjectProperty("length", lengthValue.get()); 637 argValue->GetObjectProperty("length", lengthValue.get());
637 638
638 int32_t iLength = lengthValue->ToInteger(); 639 int32_t iLength = lengthValue->ToInteger();
639 if (iLength <= 2) { 640 if (iLength <= 2) {
640 pContext->ThrowException(XFA_IDS_ARGUMENT_MISMATCH); 641 pContext->ThrowException(XFA_IDS_ARGUMENT_MISMATCH);
641 return; 642 return;
642 } 643 }
643 644
644 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 645 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
645 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 646 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
646 std::unique_ptr<CFXJSE_Value> newPropertyValue( 647 std::unique_ptr<CFXJSE_Value> newPropertyValue(
647 new CFXJSE_Value(pIsolate)); 648 new CFXJSE_Value(pIsolate));
648 argValue->GetObjectPropertyByIdx(1, propertyValue.get()); 649 argValue->GetObjectPropertyByIdx(1, propertyValue.get());
649 argValue->GetObjectPropertyByIdx(2, jsObjectValue.get()); 650 argValue->GetObjectPropertyByIdx(2, jsObjectValue.get());
650 if (FXJSE_Value_IsNull(propertyValue.get())) { 651 if (CFXJSE_Value::IsNull(propertyValue.get())) {
651 for (int32_t j = 2; j < iLength; j++) { 652 for (int32_t j = 2; j < iLength; j++) {
652 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get()); 653 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get());
653 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get()); 654 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get());
654 if (!FXJSE_Value_IsNull(newPropertyValue.get())) 655 if (!CFXJSE_Value::IsNull(newPropertyValue.get()))
655 iCount++; 656 iCount++;
656 } 657 }
657 } else { 658 } else {
658 CFX_ByteString propertyStr; 659 CFX_ByteString propertyStr;
659 propertyValue->ToString(propertyStr); 660 propertyValue->ToString(propertyStr);
660 for (int32_t j = 2; j < iLength; j++) { 661 for (int32_t j = 2; j < iLength; j++) {
661 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get()); 662 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get());
662 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(), 663 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(),
663 newPropertyValue.get()); 664 newPropertyValue.get());
664 iCount += (FXJSE_Value_IsNull(newPropertyValue.get()) ? 0 : 1); 665 iCount += (CFXJSE_Value::IsNull(newPropertyValue.get()) ? 0 : 1);
665 } 666 }
666 } 667 }
667 } else if (FXJSE_Value_IsObject(argValue.get())) { 668 } else if (CFXJSE_Value::IsObject(argValue.get())) {
668 std::unique_ptr<CFXJSE_Value> newPropertyValue( 669 std::unique_ptr<CFXJSE_Value> newPropertyValue(
669 new CFXJSE_Value(pIsolate)); 670 new CFXJSE_Value(pIsolate));
670 GetObjectDefaultValue(argValue.get(), newPropertyValue.get()); 671 GetObjectDefaultValue(argValue.get(), newPropertyValue.get());
671 if (!FXJSE_Value_IsNull(newPropertyValue.get())) 672 if (!CFXJSE_Value::IsNull(newPropertyValue.get()))
672 iCount++; 673 iCount++;
673 } else { 674 } else {
674 iCount++; 675 iCount++;
675 } 676 }
676 } 677 }
677 args.GetReturnValue()->SetInteger(iCount); 678 args.GetReturnValue()->SetInteger(iCount);
678 } 679 }
679 680
680 // static 681 // static
681 void CXFA_FM2JSContext::Floor(CFXJSE_Value* pThis, 682 void CXFA_FM2JSContext::Floor(CFXJSE_Value* pThis,
(...skipping 18 matching lines...) Expand all
700 // static 701 // static
701 void CXFA_FM2JSContext::Max(CFXJSE_Value* pThis, 702 void CXFA_FM2JSContext::Max(CFXJSE_Value* pThis,
702 const CFX_ByteStringC& szFuncName, 703 const CFX_ByteStringC& szFuncName,
703 CFXJSE_Arguments& args) { 704 CFXJSE_Arguments& args) {
704 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); 705 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr);
705 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); 706 v8::Isolate* pIsolate = pContext->GetScriptRuntime();
706 uint32_t uCount = 0; 707 uint32_t uCount = 0;
707 FX_DOUBLE dMaxValue = 0.0; 708 FX_DOUBLE dMaxValue = 0.0;
708 for (int32_t i = 0; i < args.GetLength(); i++) { 709 for (int32_t i = 0; i < args.GetLength(); i++) {
709 std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i); 710 std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i);
710 if (FXJSE_Value_IsNull(argValue.get())) 711 if (CFXJSE_Value::IsNull(argValue.get()))
711 continue; 712 continue;
712 713
713 if (FXJSE_Value_IsArray(argValue.get())) { 714 if (CFXJSE_Value::IsArray(argValue.get())) {
714 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 715 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
715 argValue->GetObjectProperty("length", lengthValue.get()); 716 argValue->GetObjectProperty("length", lengthValue.get());
716 int32_t iLength = lengthValue->ToInteger(); 717 int32_t iLength = lengthValue->ToInteger();
717 if (iLength <= 2) { 718 if (iLength <= 2) {
718 pContext->ThrowException(XFA_IDS_ARGUMENT_MISMATCH); 719 pContext->ThrowException(XFA_IDS_ARGUMENT_MISMATCH);
719 return; 720 return;
720 } 721 }
721 722
722 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 723 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
723 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 724 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
724 std::unique_ptr<CFXJSE_Value> newPropertyValue( 725 std::unique_ptr<CFXJSE_Value> newPropertyValue(
725 new CFXJSE_Value(pIsolate)); 726 new CFXJSE_Value(pIsolate));
726 argValue->GetObjectPropertyByIdx(1, propertyValue.get()); 727 argValue->GetObjectPropertyByIdx(1, propertyValue.get());
727 argValue->GetObjectPropertyByIdx(2, jsObjectValue.get()); 728 argValue->GetObjectPropertyByIdx(2, jsObjectValue.get());
728 if (FXJSE_Value_IsNull(propertyValue.get())) { 729 if (CFXJSE_Value::IsNull(propertyValue.get())) {
729 for (int32_t j = 2; j < iLength; j++) { 730 for (int32_t j = 2; j < iLength; j++) {
730 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get()); 731 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get());
731 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get()); 732 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get());
732 if (FXJSE_Value_IsNull(newPropertyValue.get())) 733 if (CFXJSE_Value::IsNull(newPropertyValue.get()))
733 continue; 734 continue;
734 735
735 uCount++; 736 uCount++;
736 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get()); 737 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get());
737 dMaxValue = (uCount == 1) ? dValue : std::max(dMaxValue, dValue); 738 dMaxValue = (uCount == 1) ? dValue : std::max(dMaxValue, dValue);
738 } 739 }
739 } else { 740 } else {
740 CFX_ByteString propertyStr; 741 CFX_ByteString propertyStr;
741 propertyValue->ToString(propertyStr); 742 propertyValue->ToString(propertyStr);
742 for (int32_t j = 2; j < iLength; j++) { 743 for (int32_t j = 2; j < iLength; j++) {
743 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get()); 744 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get());
744 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(), 745 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(),
745 newPropertyValue.get()); 746 newPropertyValue.get());
746 if (FXJSE_Value_IsNull(newPropertyValue.get())) 747 if (CFXJSE_Value::IsNull(newPropertyValue.get()))
747 continue; 748 continue;
748 749
749 uCount++; 750 uCount++;
750 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get()); 751 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get());
751 dMaxValue = (uCount == 1) ? dValue : std::max(dMaxValue, dValue); 752 dMaxValue = (uCount == 1) ? dValue : std::max(dMaxValue, dValue);
752 } 753 }
753 } 754 }
754 } else if (FXJSE_Value_IsObject(argValue.get())) { 755 } else if (CFXJSE_Value::IsObject(argValue.get())) {
755 std::unique_ptr<CFXJSE_Value> newPropertyValue( 756 std::unique_ptr<CFXJSE_Value> newPropertyValue(
756 new CFXJSE_Value(pIsolate)); 757 new CFXJSE_Value(pIsolate));
757 GetObjectDefaultValue(argValue.get(), newPropertyValue.get()); 758 GetObjectDefaultValue(argValue.get(), newPropertyValue.get());
758 if (FXJSE_Value_IsNull(newPropertyValue.get())) 759 if (CFXJSE_Value::IsNull(newPropertyValue.get()))
759 continue; 760 continue;
760 761
761 uCount++; 762 uCount++;
762 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get()); 763 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get());
763 dMaxValue = (uCount == 1) ? dValue : std::max(dMaxValue, dValue); 764 dMaxValue = (uCount == 1) ? dValue : std::max(dMaxValue, dValue);
764 } else { 765 } else {
765 uCount++; 766 uCount++;
766 FX_DOUBLE dValue = ValueToDouble(pThis, argValue.get()); 767 FX_DOUBLE dValue = ValueToDouble(pThis, argValue.get());
767 dMaxValue = (uCount == 1) ? dValue : std::max(dMaxValue, dValue); 768 dMaxValue = (uCount == 1) ? dValue : std::max(dMaxValue, dValue);
768 } 769 }
769 } 770 }
770 if (uCount == 0) { 771 if (uCount == 0) {
771 args.GetReturnValue()->SetNull(); 772 args.GetReturnValue()->SetNull();
772 return; 773 return;
773 } 774 }
774 775
775 args.GetReturnValue()->SetDouble(dMaxValue); 776 args.GetReturnValue()->SetDouble(dMaxValue);
776 } 777 }
777 778
778 // static 779 // static
779 void CXFA_FM2JSContext::Min(CFXJSE_Value* pThis, 780 void CXFA_FM2JSContext::Min(CFXJSE_Value* pThis,
780 const CFX_ByteStringC& szFuncName, 781 const CFX_ByteStringC& szFuncName,
781 CFXJSE_Arguments& args) { 782 CFXJSE_Arguments& args) {
782 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); 783 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr);
783 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); 784 v8::Isolate* pIsolate = pContext->GetScriptRuntime();
784 uint32_t uCount = 0; 785 uint32_t uCount = 0;
785 FX_DOUBLE dMinValue = 0.0; 786 FX_DOUBLE dMinValue = 0.0;
786 for (int32_t i = 0; i < args.GetLength(); i++) { 787 for (int32_t i = 0; i < args.GetLength(); i++) {
787 std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i); 788 std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i);
788 if (FXJSE_Value_IsNull(argValue.get())) 789 if (CFXJSE_Value::IsNull(argValue.get()))
789 continue; 790 continue;
790 791
791 if (FXJSE_Value_IsArray(argValue.get())) { 792 if (CFXJSE_Value::IsArray(argValue.get())) {
792 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 793 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
793 argValue->GetObjectProperty("length", lengthValue.get()); 794 argValue->GetObjectProperty("length", lengthValue.get());
794 int32_t iLength = lengthValue->ToInteger(); 795 int32_t iLength = lengthValue->ToInteger();
795 if (iLength <= 2) { 796 if (iLength <= 2) {
796 pContext->ThrowException(XFA_IDS_ARGUMENT_MISMATCH); 797 pContext->ThrowException(XFA_IDS_ARGUMENT_MISMATCH);
797 return; 798 return;
798 } 799 }
799 800
800 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 801 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
801 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 802 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
802 std::unique_ptr<CFXJSE_Value> newPropertyValue( 803 std::unique_ptr<CFXJSE_Value> newPropertyValue(
803 new CFXJSE_Value(pIsolate)); 804 new CFXJSE_Value(pIsolate));
804 argValue->GetObjectPropertyByIdx(1, propertyValue.get()); 805 argValue->GetObjectPropertyByIdx(1, propertyValue.get());
805 argValue->GetObjectPropertyByIdx(2, jsObjectValue.get()); 806 argValue->GetObjectPropertyByIdx(2, jsObjectValue.get());
806 if (FXJSE_Value_IsNull(propertyValue.get())) { 807 if (CFXJSE_Value::IsNull(propertyValue.get())) {
807 for (int32_t j = 2; j < iLength; j++) { 808 for (int32_t j = 2; j < iLength; j++) {
808 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get()); 809 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get());
809 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get()); 810 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get());
810 if (FXJSE_Value_IsNull(newPropertyValue.get())) 811 if (CFXJSE_Value::IsNull(newPropertyValue.get()))
811 continue; 812 continue;
812 813
813 uCount++; 814 uCount++;
814 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get()); 815 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get());
815 dMinValue = uCount == 1 ? dValue : std::min(dMinValue, dValue); 816 dMinValue = uCount == 1 ? dValue : std::min(dMinValue, dValue);
816 } 817 }
817 } else { 818 } else {
818 CFX_ByteString propertyStr; 819 CFX_ByteString propertyStr;
819 propertyValue->ToString(propertyStr); 820 propertyValue->ToString(propertyStr);
820 for (int32_t j = 2; j < iLength; j++) { 821 for (int32_t j = 2; j < iLength; j++) {
821 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get()); 822 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get());
822 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(), 823 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(),
823 newPropertyValue.get()); 824 newPropertyValue.get());
824 if (FXJSE_Value_IsNull(newPropertyValue.get())) 825 if (CFXJSE_Value::IsNull(newPropertyValue.get()))
825 continue; 826 continue;
826 827
827 uCount++; 828 uCount++;
828 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get()); 829 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get());
829 dMinValue = uCount == 1 ? dValue : std::min(dMinValue, dValue); 830 dMinValue = uCount == 1 ? dValue : std::min(dMinValue, dValue);
830 } 831 }
831 } 832 }
832 } else if (FXJSE_Value_IsObject(argValue.get())) { 833 } else if (CFXJSE_Value::IsObject(argValue.get())) {
833 std::unique_ptr<CFXJSE_Value> newPropertyValue( 834 std::unique_ptr<CFXJSE_Value> newPropertyValue(
834 new CFXJSE_Value(pIsolate)); 835 new CFXJSE_Value(pIsolate));
835 GetObjectDefaultValue(argValue.get(), newPropertyValue.get()); 836 GetObjectDefaultValue(argValue.get(), newPropertyValue.get());
836 if (FXJSE_Value_IsNull(newPropertyValue.get())) 837 if (CFXJSE_Value::IsNull(newPropertyValue.get()))
837 continue; 838 continue;
838 839
839 uCount++; 840 uCount++;
840 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get()); 841 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get());
841 dMinValue = uCount == 1 ? dValue : std::min(dMinValue, dValue); 842 dMinValue = uCount == 1 ? dValue : std::min(dMinValue, dValue);
842 } else { 843 } else {
843 uCount++; 844 uCount++;
844 FX_DOUBLE dValue = ValueToDouble(pThis, argValue.get()); 845 FX_DOUBLE dValue = ValueToDouble(pThis, argValue.get());
845 dMinValue = uCount == 1 ? dValue : std::min(dMinValue, dValue); 846 dMinValue = uCount == 1 ? dValue : std::min(dMinValue, dValue);
846 } 847 }
(...skipping 11 matching lines...) Expand all
858 const CFX_ByteStringC& szFuncName, 859 const CFX_ByteStringC& szFuncName,
859 CFXJSE_Arguments& args) { 860 CFXJSE_Arguments& args) {
860 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); 861 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr);
861 if (args.GetLength() != 2) { 862 if (args.GetLength() != 2) {
862 pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Mod"); 863 pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Mod");
863 return; 864 return;
864 } 865 }
865 866
866 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); 867 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0);
867 std::unique_ptr<CFXJSE_Value> argTwo = args.GetValue(1); 868 std::unique_ptr<CFXJSE_Value> argTwo = args.GetValue(1);
868 if (FXJSE_Value_IsNull(argOne.get()) || FXJSE_Value_IsNull(argTwo.get())) { 869 if (CFXJSE_Value::IsNull(argOne.get()) ||
870 CFXJSE_Value::IsNull(argTwo.get())) {
869 args.GetReturnValue()->SetNull(); 871 args.GetReturnValue()->SetNull();
870 return; 872 return;
871 } 873 }
872 874
873 bool argOneResult; 875 bool argOneResult;
874 FX_DOUBLE dDividend = ExtractDouble(pThis, argOne.get(), &argOneResult); 876 FX_DOUBLE dDividend = ExtractDouble(pThis, argOne.get(), &argOneResult);
875 bool argTwoResult; 877 bool argTwoResult;
876 FX_DOUBLE dDivisor = ExtractDouble(pThis, argTwo.get(), &argTwoResult); 878 FX_DOUBLE dDivisor = ExtractDouble(pThis, argTwo.get(), &argTwoResult);
877 if (!argOneResult || !argTwoResult) { 879 if (!argOneResult || !argTwoResult) {
878 pContext->ThrowException(XFA_IDS_ARGUMENT_MISMATCH); 880 pContext->ThrowException(XFA_IDS_ARGUMENT_MISMATCH);
(...skipping 14 matching lines...) Expand all
893 const CFX_ByteStringC& szFuncName, 895 const CFX_ByteStringC& szFuncName,
894 CFXJSE_Arguments& args) { 896 CFXJSE_Arguments& args) {
895 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); 897 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr);
896 int32_t argc = args.GetLength(); 898 int32_t argc = args.GetLength();
897 if (argc < 1 || argc > 2) { 899 if (argc < 1 || argc > 2) {
898 pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Round"); 900 pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Round");
899 return; 901 return;
900 } 902 }
901 903
902 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); 904 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0);
903 if (FXJSE_Value_IsNull(argOne.get())) { 905 if (CFXJSE_Value::IsNull(argOne.get())) {
904 args.GetReturnValue()->SetNull(); 906 args.GetReturnValue()->SetNull();
905 return; 907 return;
906 } 908 }
907 909
908 bool dValueRet; 910 bool dValueRet;
909 FX_DOUBLE dValue = ExtractDouble(pThis, argOne.get(), &dValueRet); 911 FX_DOUBLE dValue = ExtractDouble(pThis, argOne.get(), &dValueRet);
910 if (!dValueRet) { 912 if (!dValueRet) {
911 pContext->ThrowException(XFA_IDS_ARGUMENT_MISMATCH); 913 pContext->ThrowException(XFA_IDS_ARGUMENT_MISMATCH);
912 return; 914 return;
913 } 915 }
914 916
915 uint8_t uPrecision = 0; 917 uint8_t uPrecision = 0;
916 if (argc > 1) { 918 if (argc > 1) {
917 std::unique_ptr<CFXJSE_Value> argTwo = args.GetValue(1); 919 std::unique_ptr<CFXJSE_Value> argTwo = args.GetValue(1);
918 if (FXJSE_Value_IsNull(argTwo.get())) { 920 if (CFXJSE_Value::IsNull(argTwo.get())) {
919 args.GetReturnValue()->SetNull(); 921 args.GetReturnValue()->SetNull();
920 return; 922 return;
921 } 923 }
922 924
923 bool dPrecisionRet; 925 bool dPrecisionRet;
924 FX_DOUBLE dPrecision = ExtractDouble(pThis, argTwo.get(), &dPrecisionRet); 926 FX_DOUBLE dPrecision = ExtractDouble(pThis, argTwo.get(), &dPrecisionRet);
925 if (!dPrecisionRet) { 927 if (!dPrecisionRet) {
926 pContext->ThrowException(XFA_IDS_ARGUMENT_MISMATCH); 928 pContext->ThrowException(XFA_IDS_ARGUMENT_MISMATCH);
927 return; 929 return;
928 } 930 }
(...skipping 16 matching lines...) Expand all
945 args.GetReturnValue()->SetNull(); 947 args.GetReturnValue()->SetNull();
946 return; 948 return;
947 } 949 }
948 950
949 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); 951 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr);
950 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); 952 v8::Isolate* pIsolate = pContext->GetScriptRuntime();
951 uint32_t uCount = 0; 953 uint32_t uCount = 0;
952 FX_DOUBLE dSum = 0.0; 954 FX_DOUBLE dSum = 0.0;
953 for (int32_t i = 0; i < argc; i++) { 955 for (int32_t i = 0; i < argc; i++) {
954 std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i); 956 std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i);
955 if (FXJSE_Value_IsNull(argValue.get())) 957 if (CFXJSE_Value::IsNull(argValue.get()))
956 continue; 958 continue;
957 959
958 if (FXJSE_Value_IsArray(argValue.get())) { 960 if (CFXJSE_Value::IsArray(argValue.get())) {
959 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 961 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
960 argValue->GetObjectProperty("length", lengthValue.get()); 962 argValue->GetObjectProperty("length", lengthValue.get());
961 int32_t iLength = lengthValue->ToInteger(); 963 int32_t iLength = lengthValue->ToInteger();
962 if (iLength <= 2) { 964 if (iLength <= 2) {
963 pContext->ThrowException(XFA_IDS_ARGUMENT_MISMATCH); 965 pContext->ThrowException(XFA_IDS_ARGUMENT_MISMATCH);
964 return; 966 return;
965 } 967 }
966 968
967 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 969 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
968 argValue->GetObjectPropertyByIdx(1, propertyValue.get()); 970 argValue->GetObjectPropertyByIdx(1, propertyValue.get());
969 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 971 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
970 std::unique_ptr<CFXJSE_Value> newPropertyValue( 972 std::unique_ptr<CFXJSE_Value> newPropertyValue(
971 new CFXJSE_Value(pIsolate)); 973 new CFXJSE_Value(pIsolate));
972 if (FXJSE_Value_IsNull(propertyValue.get())) { 974 if (CFXJSE_Value::IsNull(propertyValue.get())) {
973 for (int32_t j = 2; j < iLength; j++) { 975 for (int32_t j = 2; j < iLength; j++) {
974 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get()); 976 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get());
975 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get()); 977 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get());
976 if (FXJSE_Value_IsNull(newPropertyValue.get())) 978 if (CFXJSE_Value::IsNull(newPropertyValue.get()))
977 continue; 979 continue;
978 980
979 dSum += ValueToDouble(pThis, jsObjectValue.get()); 981 dSum += ValueToDouble(pThis, jsObjectValue.get());
980 uCount++; 982 uCount++;
981 } 983 }
982 } else { 984 } else {
983 CFX_ByteString propertyStr; 985 CFX_ByteString propertyStr;
984 propertyValue->ToString(propertyStr); 986 propertyValue->ToString(propertyStr);
985 for (int32_t j = 2; j < iLength; j++) { 987 for (int32_t j = 2; j < iLength; j++) {
986 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get()); 988 argValue->GetObjectPropertyByIdx(j, jsObjectValue.get());
987 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(), 989 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(),
988 newPropertyValue.get()); 990 newPropertyValue.get());
989 if (FXJSE_Value_IsNull(newPropertyValue.get())) 991 if (CFXJSE_Value::IsNull(newPropertyValue.get()))
990 continue; 992 continue;
991 993
992 dSum += ValueToDouble(pThis, newPropertyValue.get()); 994 dSum += ValueToDouble(pThis, newPropertyValue.get());
993 uCount++; 995 uCount++;
994 } 996 }
995 } 997 }
996 } else if (FXJSE_Value_IsObject(argValue.get())) { 998 } else if (CFXJSE_Value::IsObject(argValue.get())) {
997 std::unique_ptr<CFXJSE_Value> newPropertyValue( 999 std::unique_ptr<CFXJSE_Value> newPropertyValue(
998 new CFXJSE_Value(pIsolate)); 1000 new CFXJSE_Value(pIsolate));
999 GetObjectDefaultValue(argValue.get(), newPropertyValue.get()); 1001 GetObjectDefaultValue(argValue.get(), newPropertyValue.get());
1000 if (FXJSE_Value_IsNull(newPropertyValue.get())) 1002 if (CFXJSE_Value::IsNull(newPropertyValue.get()))
1001 continue; 1003 continue;
1002 1004
1003 dSum += ValueToDouble(pThis, argValue.get()); 1005 dSum += ValueToDouble(pThis, argValue.get());
1004 uCount++; 1006 uCount++;
1005 } else { 1007 } else {
1006 dSum += ValueToDouble(pThis, argValue.get()); 1008 dSum += ValueToDouble(pThis, argValue.get());
1007 uCount++; 1009 uCount++;
1008 } 1010 }
1009 } 1011 }
1010 if (uCount == 0) { 1012 if (uCount == 0) {
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
1098 int32_t argc = args.GetLength(); 1100 int32_t argc = args.GetLength();
1099 if (argc > 2) { 1101 if (argc > 2) {
1100 ToJSContext(pThis, nullptr) 1102 ToJSContext(pThis, nullptr)
1101 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Date2Num"); 1103 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Date2Num");
1102 return; 1104 return;
1103 } 1105 }
1104 1106
1105 int32_t iStyle = 0; 1107 int32_t iStyle = 0;
1106 if (argc > 0) { 1108 if (argc > 0) {
1107 std::unique_ptr<CFXJSE_Value> argStyle = GetSimpleValue(pThis, args, 0); 1109 std::unique_ptr<CFXJSE_Value> argStyle = GetSimpleValue(pThis, args, 0);
1108 if (FXJSE_Value_IsNull(argStyle.get())) { 1110 if (CFXJSE_Value::IsNull(argStyle.get())) {
1109 args.GetReturnValue()->SetNull(); 1111 args.GetReturnValue()->SetNull();
1110 return; 1112 return;
1111 } 1113 }
1112 1114
1113 iStyle = (int32_t)ValueToFloat(pThis, argStyle.get()); 1115 iStyle = (int32_t)ValueToFloat(pThis, argStyle.get());
1114 if (iStyle < 0 || iStyle > 4) 1116 if (iStyle < 0 || iStyle > 4)
1115 iStyle = 0; 1117 iStyle = 0;
1116 } 1118 }
1117 1119
1118 CFX_ByteString szLocal; 1120 CFX_ByteString szLocal;
1119 if (argc > 1) { 1121 if (argc > 1) {
1120 std::unique_ptr<CFXJSE_Value> argLocal = GetSimpleValue(pThis, args, 1); 1122 std::unique_ptr<CFXJSE_Value> argLocal = GetSimpleValue(pThis, args, 1);
1121 if (FXJSE_Value_IsNull(argLocal.get())) { 1123 if (CFXJSE_Value::IsNull(argLocal.get())) {
1122 args.GetReturnValue()->SetNull(); 1124 args.GetReturnValue()->SetNull();
1123 return; 1125 return;
1124 } 1126 }
1125 ValueToUTF8String(argLocal.get(), szLocal); 1127 ValueToUTF8String(argLocal.get(), szLocal);
1126 } 1128 }
1127 1129
1128 CFX_ByteString formatStr; 1130 CFX_ByteString formatStr;
1129 GetStandardDateFormat(pThis, iStyle, szLocal.AsStringC(), formatStr); 1131 GetStandardDateFormat(pThis, iStyle, szLocal.AsStringC(), formatStr);
1130 args.GetReturnValue()->SetString(formatStr.AsStringC()); 1132 args.GetReturnValue()->SetString(formatStr.AsStringC());
1131 } 1133 }
1132 1134
1133 // static 1135 // static
1134 void CXFA_FM2JSContext::IsoDate2Num(CFXJSE_Value* pThis, 1136 void CXFA_FM2JSContext::IsoDate2Num(CFXJSE_Value* pThis,
1135 const CFX_ByteStringC& szFuncName, 1137 const CFX_ByteStringC& szFuncName,
1136 CFXJSE_Arguments& args) { 1138 CFXJSE_Arguments& args) {
1137 if (args.GetLength() != 1) { 1139 if (args.GetLength() != 1) {
1138 ToJSContext(pThis, nullptr) 1140 ToJSContext(pThis, nullptr)
1139 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"IsoDate2Num"); 1141 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"IsoDate2Num");
1140 return; 1142 return;
1141 } 1143 }
1142 1144
1143 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 1145 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
1144 if (FXJSE_Value_IsNull(argOne.get())) { 1146 if (CFXJSE_Value::IsNull(argOne.get())) {
1145 args.GetReturnValue()->SetNull(); 1147 args.GetReturnValue()->SetNull();
1146 return; 1148 return;
1147 } 1149 }
1148 1150
1149 CFX_ByteString szArgString; 1151 CFX_ByteString szArgString;
1150 ValueToUTF8String(argOne.get(), szArgString); 1152 ValueToUTF8String(argOne.get(), szArgString);
1151 args.GetReturnValue()->SetInteger(DateString2Num(szArgString.AsStringC())); 1153 args.GetReturnValue()->SetInteger(DateString2Num(szArgString.AsStringC()));
1152 } 1154 }
1153 1155
1154 // static 1156 // static
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1217 int32_t argc = args.GetLength(); 1219 int32_t argc = args.GetLength();
1218 if (argc > 2) { 1220 if (argc > 2) {
1219 ToJSContext(pThis, nullptr) 1221 ToJSContext(pThis, nullptr)
1220 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"LocalDateFmt"); 1222 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"LocalDateFmt");
1221 return; 1223 return;
1222 } 1224 }
1223 1225
1224 int32_t iStyle = 0; 1226 int32_t iStyle = 0;
1225 if (argc > 0) { 1227 if (argc > 0) {
1226 std::unique_ptr<CFXJSE_Value> argStyle = GetSimpleValue(pThis, args, 0); 1228 std::unique_ptr<CFXJSE_Value> argStyle = GetSimpleValue(pThis, args, 0);
1227 if (FXJSE_Value_IsNull(argStyle.get())) { 1229 if (CFXJSE_Value::IsNull(argStyle.get())) {
1228 args.GetReturnValue()->SetNull(); 1230 args.GetReturnValue()->SetNull();
1229 return; 1231 return;
1230 } 1232 }
1231 iStyle = (int32_t)ValueToFloat(pThis, argStyle.get()); 1233 iStyle = (int32_t)ValueToFloat(pThis, argStyle.get());
1232 if (iStyle > 4 || iStyle < 0) 1234 if (iStyle > 4 || iStyle < 0)
1233 iStyle = 0; 1235 iStyle = 0;
1234 } 1236 }
1235 1237
1236 CFX_ByteString szLocal; 1238 CFX_ByteString szLocal;
1237 if (argc > 1) { 1239 if (argc > 1) {
1238 std::unique_ptr<CFXJSE_Value> argLocal = GetSimpleValue(pThis, args, 1); 1240 std::unique_ptr<CFXJSE_Value> argLocal = GetSimpleValue(pThis, args, 1);
1239 if (FXJSE_Value_IsNull(argLocal.get())) { 1241 if (CFXJSE_Value::IsNull(argLocal.get())) {
1240 args.GetReturnValue()->SetNull(); 1242 args.GetReturnValue()->SetNull();
1241 return; 1243 return;
1242 } 1244 }
1243 ValueToUTF8String(argLocal.get(), szLocal); 1245 ValueToUTF8String(argLocal.get(), szLocal);
1244 } 1246 }
1245 1247
1246 CFX_ByteString formatStr; 1248 CFX_ByteString formatStr;
1247 GetLocalDateFormat(pThis, iStyle, szLocal.AsStringC(), formatStr, FALSE); 1249 GetLocalDateFormat(pThis, iStyle, szLocal.AsStringC(), formatStr, FALSE);
1248 args.GetReturnValue()->SetString(formatStr.AsStringC()); 1250 args.GetReturnValue()->SetString(formatStr.AsStringC());
1249 } 1251 }
1250 1252
1251 // static 1253 // static
1252 void CXFA_FM2JSContext::LocalTimeFmt(CFXJSE_Value* pThis, 1254 void CXFA_FM2JSContext::LocalTimeFmt(CFXJSE_Value* pThis,
1253 const CFX_ByteStringC& szFuncName, 1255 const CFX_ByteStringC& szFuncName,
1254 CFXJSE_Arguments& args) { 1256 CFXJSE_Arguments& args) {
1255 int32_t argc = args.GetLength(); 1257 int32_t argc = args.GetLength();
1256 if (argc > 2) { 1258 if (argc > 2) {
1257 ToJSContext(pThis, nullptr) 1259 ToJSContext(pThis, nullptr)
1258 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"LocalTimeFmt"); 1260 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"LocalTimeFmt");
1259 return; 1261 return;
1260 } 1262 }
1261 1263
1262 int32_t iStyle = 0; 1264 int32_t iStyle = 0;
1263 if (argc > 0) { 1265 if (argc > 0) {
1264 std::unique_ptr<CFXJSE_Value> argStyle = GetSimpleValue(pThis, args, 0); 1266 std::unique_ptr<CFXJSE_Value> argStyle = GetSimpleValue(pThis, args, 0);
1265 if (FXJSE_Value_IsNull(argStyle.get())) { 1267 if (CFXJSE_Value::IsNull(argStyle.get())) {
1266 args.GetReturnValue()->SetNull(); 1268 args.GetReturnValue()->SetNull();
1267 return; 1269 return;
1268 } 1270 }
1269 iStyle = (int32_t)ValueToFloat(pThis, argStyle.get()); 1271 iStyle = (int32_t)ValueToFloat(pThis, argStyle.get());
1270 if (iStyle > 4 || iStyle < 0) 1272 if (iStyle > 4 || iStyle < 0)
1271 iStyle = 0; 1273 iStyle = 0;
1272 } 1274 }
1273 1275
1274 CFX_ByteString szLocal; 1276 CFX_ByteString szLocal;
1275 if (argc > 1) { 1277 if (argc > 1) {
1276 std::unique_ptr<CFXJSE_Value> argLocal = GetSimpleValue(pThis, args, 1); 1278 std::unique_ptr<CFXJSE_Value> argLocal = GetSimpleValue(pThis, args, 1);
1277 if (FXJSE_Value_IsNull(argLocal.get())) { 1279 if (CFXJSE_Value::IsNull(argLocal.get())) {
1278 args.GetReturnValue()->SetNull(); 1280 args.GetReturnValue()->SetNull();
1279 return; 1281 return;
1280 } 1282 }
1281 ValueToUTF8String(argLocal.get(), szLocal); 1283 ValueToUTF8String(argLocal.get(), szLocal);
1282 } 1284 }
1283 1285
1284 CFX_ByteString formatStr; 1286 CFX_ByteString formatStr;
1285 GetLocalTimeFormat(pThis, iStyle, szLocal.AsStringC(), formatStr, FALSE); 1287 GetLocalTimeFormat(pThis, iStyle, szLocal.AsStringC(), formatStr, FALSE);
1286 args.GetReturnValue()->SetString(formatStr.AsStringC()); 1288 args.GetReturnValue()->SetString(formatStr.AsStringC());
1287 } 1289 }
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
1433 const CFX_ByteStringC& szFuncName, 1435 const CFX_ByteStringC& szFuncName,
1434 CFXJSE_Arguments& args) { 1436 CFXJSE_Arguments& args) {
1435 int32_t argc = args.GetLength(); 1437 int32_t argc = args.GetLength();
1436 if (argc < 1 || argc > 3) { 1438 if (argc < 1 || argc > 3) {
1437 ToJSContext(pThis, nullptr) 1439 ToJSContext(pThis, nullptr)
1438 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Num2GMTime"); 1440 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Num2GMTime");
1439 return; 1441 return;
1440 } 1442 }
1441 1443
1442 std::unique_ptr<CFXJSE_Value> timeValue = GetSimpleValue(pThis, args, 0); 1444 std::unique_ptr<CFXJSE_Value> timeValue = GetSimpleValue(pThis, args, 0);
1443 if (FXJSE_Value_IsNull(timeValue.get())) { 1445 if (CFXJSE_Value::IsNull(timeValue.get())) {
1444 args.GetReturnValue()->SetNull(); 1446 args.GetReturnValue()->SetNull();
1445 return; 1447 return;
1446 } 1448 }
1447 int32_t iTime = (int32_t)ValueToFloat(pThis, timeValue.get()); 1449 int32_t iTime = (int32_t)ValueToFloat(pThis, timeValue.get());
1448 if (FXSYS_abs(iTime) < 1.0) { 1450 if (FXSYS_abs(iTime) < 1.0) {
1449 args.GetReturnValue()->SetNull(); 1451 args.GetReturnValue()->SetNull();
1450 return; 1452 return;
1451 } 1453 }
1452 1454
1453 CFX_ByteString formatString; 1455 CFX_ByteString formatString;
1454 if (argc > 1) { 1456 if (argc > 1) {
1455 std::unique_ptr<CFXJSE_Value> formatValue = GetSimpleValue(pThis, args, 1); 1457 std::unique_ptr<CFXJSE_Value> formatValue = GetSimpleValue(pThis, args, 1);
1456 if (FXJSE_Value_IsNull(formatValue.get())) { 1458 if (CFXJSE_Value::IsNull(formatValue.get())) {
1457 args.GetReturnValue()->SetNull(); 1459 args.GetReturnValue()->SetNull();
1458 return; 1460 return;
1459 } 1461 }
1460 ValueToUTF8String(formatValue.get(), formatString); 1462 ValueToUTF8String(formatValue.get(), formatString);
1461 } 1463 }
1462 1464
1463 CFX_ByteString localString; 1465 CFX_ByteString localString;
1464 if (argc > 2) { 1466 if (argc > 2) {
1465 std::unique_ptr<CFXJSE_Value> localValue = GetSimpleValue(pThis, args, 2); 1467 std::unique_ptr<CFXJSE_Value> localValue = GetSimpleValue(pThis, args, 2);
1466 if (FXJSE_Value_IsNull(localValue.get())) { 1468 if (CFXJSE_Value::IsNull(localValue.get())) {
1467 args.GetReturnValue()->SetNull(); 1469 args.GetReturnValue()->SetNull();
1468 return; 1470 return;
1469 } 1471 }
1470 ValueToUTF8String(localValue.get(), localString); 1472 ValueToUTF8String(localValue.get(), localString);
1471 } 1473 }
1472 1474
1473 CFX_ByteString szGMTTimeString; 1475 CFX_ByteString szGMTTimeString;
1474 Num2AllTime(pThis, iTime, formatString.AsStringC(), localString.AsStringC(), 1476 Num2AllTime(pThis, iTime, formatString.AsStringC(), localString.AsStringC(),
1475 TRUE, szGMTTimeString); 1477 TRUE, szGMTTimeString);
1476 args.GetReturnValue()->SetString(szGMTTimeString.AsStringC()); 1478 args.GetReturnValue()->SetString(szGMTTimeString.AsStringC());
1477 } 1479 }
1478 1480
1479 // static 1481 // static
1480 void CXFA_FM2JSContext::Num2Time(CFXJSE_Value* pThis, 1482 void CXFA_FM2JSContext::Num2Time(CFXJSE_Value* pThis,
1481 const CFX_ByteStringC& szFuncName, 1483 const CFX_ByteStringC& szFuncName,
1482 CFXJSE_Arguments& args) { 1484 CFXJSE_Arguments& args) {
1483 int32_t argc = args.GetLength(); 1485 int32_t argc = args.GetLength();
1484 if (argc < 1 || argc > 3) { 1486 if (argc < 1 || argc > 3) {
1485 ToJSContext(pThis, nullptr) 1487 ToJSContext(pThis, nullptr)
1486 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Num2Time"); 1488 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Num2Time");
1487 return; 1489 return;
1488 } 1490 }
1489 1491
1490 std::unique_ptr<CFXJSE_Value> timeValue = GetSimpleValue(pThis, args, 0); 1492 std::unique_ptr<CFXJSE_Value> timeValue = GetSimpleValue(pThis, args, 0);
1491 if (FXJSE_Value_IsNull(timeValue.get())) { 1493 if (CFXJSE_Value::IsNull(timeValue.get())) {
1492 args.GetReturnValue()->SetNull(); 1494 args.GetReturnValue()->SetNull();
1493 return; 1495 return;
1494 } 1496 }
1495 FX_FLOAT fTime = ValueToFloat(pThis, timeValue.get()); 1497 FX_FLOAT fTime = ValueToFloat(pThis, timeValue.get());
1496 if (FXSYS_fabs(fTime) < 1.0) { 1498 if (FXSYS_fabs(fTime) < 1.0) {
1497 args.GetReturnValue()->SetNull(); 1499 args.GetReturnValue()->SetNull();
1498 return; 1500 return;
1499 } 1501 }
1500 1502
1501 CFX_ByteString formatString; 1503 CFX_ByteString formatString;
1502 if (argc > 1) { 1504 if (argc > 1) {
1503 std::unique_ptr<CFXJSE_Value> formatValue = GetSimpleValue(pThis, args, 1); 1505 std::unique_ptr<CFXJSE_Value> formatValue = GetSimpleValue(pThis, args, 1);
1504 if (FXJSE_Value_IsNull(formatValue.get())) { 1506 if (CFXJSE_Value::IsNull(formatValue.get())) {
1505 args.GetReturnValue()->SetNull(); 1507 args.GetReturnValue()->SetNull();
1506 return; 1508 return;
1507 } 1509 }
1508 ValueToUTF8String(formatValue.get(), formatString); 1510 ValueToUTF8String(formatValue.get(), formatString);
1509 } 1511 }
1510 1512
1511 CFX_ByteString localString; 1513 CFX_ByteString localString;
1512 if (argc > 2) { 1514 if (argc > 2) {
1513 std::unique_ptr<CFXJSE_Value> localValue = GetSimpleValue(pThis, args, 2); 1515 std::unique_ptr<CFXJSE_Value> localValue = GetSimpleValue(pThis, args, 2);
1514 if (FXJSE_Value_IsNull(localValue.get())) { 1516 if (CFXJSE_Value::IsNull(localValue.get())) {
1515 args.GetReturnValue()->SetNull(); 1517 args.GetReturnValue()->SetNull();
1516 return; 1518 return;
1517 } 1519 }
1518 ValueToUTF8String(localValue.get(), localString); 1520 ValueToUTF8String(localValue.get(), localString);
1519 } 1521 }
1520 1522
1521 CFX_ByteString szLocalTimeString; 1523 CFX_ByteString szLocalTimeString;
1522 Num2AllTime(pThis, (int32_t)fTime, formatString.AsStringC(), 1524 Num2AllTime(pThis, (int32_t)fTime, formatString.AsStringC(),
1523 localString.AsStringC(), FALSE, szLocalTimeString); 1525 localString.AsStringC(), FALSE, szLocalTimeString);
1524 args.GetReturnValue()->SetString(szLocalTimeString.AsStringC()); 1526 args.GetReturnValue()->SetString(szLocalTimeString.AsStringC());
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
1641 int32_t argc = args.GetLength(); 1643 int32_t argc = args.GetLength();
1642 if (argc > 2) { 1644 if (argc > 2) {
1643 ToJSContext(pThis, nullptr) 1645 ToJSContext(pThis, nullptr)
1644 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"TimeFmt"); 1646 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"TimeFmt");
1645 return; 1647 return;
1646 } 1648 }
1647 1649
1648 int32_t iStyle = 0; 1650 int32_t iStyle = 0;
1649 if (argc > 0) { 1651 if (argc > 0) {
1650 std::unique_ptr<CFXJSE_Value> argStyle = GetSimpleValue(pThis, args, 0); 1652 std::unique_ptr<CFXJSE_Value> argStyle = GetSimpleValue(pThis, args, 0);
1651 if (FXJSE_Value_IsNull(argStyle.get())) { 1653 if (CFXJSE_Value::IsNull(argStyle.get())) {
1652 args.GetReturnValue()->SetNull(); 1654 args.GetReturnValue()->SetNull();
1653 return; 1655 return;
1654 } 1656 }
1655 iStyle = (int32_t)ValueToFloat(pThis, argStyle.get()); 1657 iStyle = (int32_t)ValueToFloat(pThis, argStyle.get());
1656 if (iStyle > 4 || iStyle < 0) 1658 if (iStyle > 4 || iStyle < 0)
1657 iStyle = 0; 1659 iStyle = 0;
1658 } 1660 }
1659 1661
1660 CFX_ByteString szLocal; 1662 CFX_ByteString szLocal;
1661 if (argc > 1) { 1663 if (argc > 1) {
1662 std::unique_ptr<CFXJSE_Value> argLocal = GetSimpleValue(pThis, args, 1); 1664 std::unique_ptr<CFXJSE_Value> argLocal = GetSimpleValue(pThis, args, 1);
1663 if (FXJSE_Value_IsNull(argLocal.get())) { 1665 if (CFXJSE_Value::IsNull(argLocal.get())) {
1664 args.GetReturnValue()->SetNull(); 1666 args.GetReturnValue()->SetNull();
1665 return; 1667 return;
1666 } 1668 }
1667 ValueToUTF8String(argLocal.get(), szLocal); 1669 ValueToUTF8String(argLocal.get(), szLocal);
1668 } 1670 }
1669 1671
1670 CFX_ByteString formatStr; 1672 CFX_ByteString formatStr;
1671 GetStandardTimeFormat(pThis, iStyle, szLocal.AsStringC(), formatStr); 1673 GetStandardTimeFormat(pThis, iStyle, szLocal.AsStringC(), formatStr);
1672 args.GetReturnValue()->SetString(formatStr.AsStringC()); 1674 args.GetReturnValue()->SetString(formatStr.AsStringC());
1673 } 1675 }
(...skipping 1137 matching lines...) Expand 10 before | Expand all | Expand 10 after
2811 return; 2813 return;
2812 } 2814 }
2813 2815
2814 FX_BOOL bFound = FALSE; 2816 FX_BOOL bFound = FALSE;
2815 FX_BOOL bStopCounterFlags = FALSE; 2817 FX_BOOL bStopCounterFlags = FALSE;
2816 int32_t iArgIndex = 1; 2818 int32_t iArgIndex = 1;
2817 int32_t iValueIndex = 0; 2819 int32_t iValueIndex = 0;
2818 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); 2820 v8::Isolate* pIsolate = pContext->GetScriptRuntime();
2819 while (!bFound && !bStopCounterFlags && (iArgIndex < argc)) { 2821 while (!bFound && !bStopCounterFlags && (iArgIndex < argc)) {
2820 std::unique_ptr<CFXJSE_Value> argIndexValue = args.GetValue(iArgIndex); 2822 std::unique_ptr<CFXJSE_Value> argIndexValue = args.GetValue(iArgIndex);
2821 if (FXJSE_Value_IsArray(argIndexValue.get())) { 2823 if (CFXJSE_Value::IsArray(argIndexValue.get())) {
2822 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 2824 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
2823 argIndexValue->GetObjectProperty("length", lengthValue.get()); 2825 argIndexValue->GetObjectProperty("length", lengthValue.get());
2824 int32_t iLength = lengthValue->ToInteger(); 2826 int32_t iLength = lengthValue->ToInteger();
2825 if (iLength > 3) 2827 if (iLength > 3)
2826 bStopCounterFlags = TRUE; 2828 bStopCounterFlags = TRUE;
2827 2829
2828 iValueIndex += (iLength - 2); 2830 iValueIndex += (iLength - 2);
2829 if (iValueIndex >= iIndex) { 2831 if (iValueIndex >= iIndex) {
2830 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 2832 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
2831 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 2833 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
2832 std::unique_ptr<CFXJSE_Value> newPropertyValue( 2834 std::unique_ptr<CFXJSE_Value> newPropertyValue(
2833 new CFXJSE_Value(pIsolate)); 2835 new CFXJSE_Value(pIsolate));
2834 argIndexValue->GetObjectPropertyByIdx(1, propertyValue.get()); 2836 argIndexValue->GetObjectPropertyByIdx(1, propertyValue.get());
2835 argIndexValue->GetObjectPropertyByIdx( 2837 argIndexValue->GetObjectPropertyByIdx(
2836 (iLength - 1) - (iValueIndex - iIndex), jsObjectValue.get()); 2838 (iLength - 1) - (iValueIndex - iIndex), jsObjectValue.get());
2837 if (FXJSE_Value_IsNull(propertyValue.get())) { 2839 if (CFXJSE_Value::IsNull(propertyValue.get())) {
2838 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get()); 2840 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get());
2839 } else { 2841 } else {
2840 CFX_ByteString propStr; 2842 CFX_ByteString propStr;
2841 propertyValue->ToString(propStr); 2843 propertyValue->ToString(propStr);
2842 jsObjectValue->GetObjectProperty(propStr.AsStringC(), 2844 jsObjectValue->GetObjectProperty(propStr.AsStringC(),
2843 newPropertyValue.get()); 2845 newPropertyValue.get());
2844 } 2846 }
2845 CFX_ByteString bsChoosed; 2847 CFX_ByteString bsChoosed;
2846 ValueToUTF8String(newPropertyValue.get(), bsChoosed); 2848 ValueToUTF8String(newPropertyValue.get(), bsChoosed);
2847 args.GetReturnValue()->SetString(bsChoosed.AsStringC()); 2849 args.GetReturnValue()->SetString(bsChoosed.AsStringC());
(...skipping 18 matching lines...) Expand all
2866 void CXFA_FM2JSContext::Exists(CFXJSE_Value* pThis, 2868 void CXFA_FM2JSContext::Exists(CFXJSE_Value* pThis,
2867 const CFX_ByteStringC& szFuncName, 2869 const CFX_ByteStringC& szFuncName,
2868 CFXJSE_Arguments& args) { 2870 CFXJSE_Arguments& args) {
2869 if (args.GetLength() != 1) { 2871 if (args.GetLength() != 1) {
2870 ToJSContext(pThis, nullptr) 2872 ToJSContext(pThis, nullptr)
2871 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Exists"); 2873 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Exists");
2872 return; 2874 return;
2873 } 2875 }
2874 2876
2875 args.GetReturnValue()->SetInteger( 2877 args.GetReturnValue()->SetInteger(
2876 FXJSE_Value_IsObject(args.GetValue(0).get())); 2878 CFXJSE_Value::IsObject(args.GetValue(0).get()));
2877 } 2879 }
2878 2880
2879 // static 2881 // static
2880 void CXFA_FM2JSContext::HasValue(CFXJSE_Value* pThis, 2882 void CXFA_FM2JSContext::HasValue(CFXJSE_Value* pThis,
2881 const CFX_ByteStringC& szFuncName, 2883 const CFX_ByteStringC& szFuncName,
2882 CFXJSE_Arguments& args) { 2884 CFXJSE_Arguments& args) {
2883 if (args.GetLength() != 1) { 2885 if (args.GetLength() != 1) {
2884 ToJSContext(pThis, nullptr) 2886 ToJSContext(pThis, nullptr)
2885 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"HasValue"); 2887 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"HasValue");
2886 return; 2888 return;
2887 } 2889 }
2888 2890
2889 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 2891 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
2890 if (!FXJSE_Value_IsUTF8String(argOne.get())) { 2892 if (!CFXJSE_Value::IsUTF8String(argOne.get())) {
2891 args.GetReturnValue()->SetInteger(FXJSE_Value_IsNumber(argOne.get()) || 2893 args.GetReturnValue()->SetInteger(CFXJSE_Value::IsNumber(argOne.get()) ||
2892 FXJSE_Value_IsBoolean(argOne.get())); 2894 CFXJSE_Value::IsBoolean(argOne.get()));
2893 return; 2895 return;
2894 } 2896 }
2895 2897
2896 CFX_ByteString valueStr; 2898 CFX_ByteString valueStr;
2897 argOne->ToString(valueStr); 2899 argOne->ToString(valueStr);
2898 valueStr.TrimLeft(); 2900 valueStr.TrimLeft();
2899 args.GetReturnValue()->SetInteger(!valueStr.IsEmpty()); 2901 args.GetReturnValue()->SetInteger(!valueStr.IsEmpty());
2900 } 2902 }
2901 2903
2902 // static 2904 // static
(...skipping 28 matching lines...) Expand all
2931 void CXFA_FM2JSContext::Within(CFXJSE_Value* pThis, 2933 void CXFA_FM2JSContext::Within(CFXJSE_Value* pThis,
2932 const CFX_ByteStringC& szFuncName, 2934 const CFX_ByteStringC& szFuncName,
2933 CFXJSE_Arguments& args) { 2935 CFXJSE_Arguments& args) {
2934 if (args.GetLength() != 3) { 2936 if (args.GetLength() != 3) {
2935 ToJSContext(pThis, nullptr) 2937 ToJSContext(pThis, nullptr)
2936 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Within"); 2938 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Within");
2937 return; 2939 return;
2938 } 2940 }
2939 2941
2940 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 2942 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
2941 if (FXJSE_Value_IsNull(argOne.get())) { 2943 if (CFXJSE_Value::IsNull(argOne.get())) {
2942 args.GetReturnValue()->SetUndefined(); 2944 args.GetReturnValue()->SetUndefined();
2943 return; 2945 return;
2944 } 2946 }
2945 2947
2946 std::unique_ptr<CFXJSE_Value> argLow = GetSimpleValue(pThis, args, 1); 2948 std::unique_ptr<CFXJSE_Value> argLow = GetSimpleValue(pThis, args, 1);
2947 std::unique_ptr<CFXJSE_Value> argHigh = GetSimpleValue(pThis, args, 2); 2949 std::unique_ptr<CFXJSE_Value> argHigh = GetSimpleValue(pThis, args, 2);
2948 if (FXJSE_Value_IsNumber(argOne.get())) { 2950 if (CFXJSE_Value::IsNumber(argOne.get())) {
2949 FX_FLOAT oneNumber = ValueToFloat(pThis, argOne.get()); 2951 FX_FLOAT oneNumber = ValueToFloat(pThis, argOne.get());
2950 FX_FLOAT lowNumber = ValueToFloat(pThis, argLow.get()); 2952 FX_FLOAT lowNumber = ValueToFloat(pThis, argLow.get());
2951 FX_FLOAT heightNumber = ValueToFloat(pThis, argHigh.get()); 2953 FX_FLOAT heightNumber = ValueToFloat(pThis, argHigh.get());
2952 args.GetReturnValue()->SetInteger((oneNumber >= lowNumber) && 2954 args.GetReturnValue()->SetInteger((oneNumber >= lowNumber) &&
2953 (oneNumber <= heightNumber)); 2955 (oneNumber <= heightNumber));
2954 return; 2956 return;
2955 } 2957 }
2956 2958
2957 CFX_ByteString oneString; 2959 CFX_ByteString oneString;
2958 CFX_ByteString lowString; 2960 CFX_ByteString lowString;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
2997 if (utf8ScriptString.IsEmpty()) { 2999 if (utf8ScriptString.IsEmpty()) {
2998 args.GetReturnValue()->SetNull(); 3000 args.GetReturnValue()->SetNull();
2999 return; 3001 return;
3000 } 3002 }
3001 3003
3002 CFX_WideTextBuf wsJavaScriptBuf; 3004 CFX_WideTextBuf wsJavaScriptBuf;
3003 CFX_WideString wsError; 3005 CFX_WideString wsError;
3004 CXFA_FM2JSContext::Translate( 3006 CXFA_FM2JSContext::Translate(
3005 CFX_WideString::FromUTF8(utf8ScriptString.AsStringC()).AsStringC(), 3007 CFX_WideString::FromUTF8(utf8ScriptString.AsStringC()).AsStringC(),
3006 wsJavaScriptBuf, wsError); 3008 wsJavaScriptBuf, wsError);
3007 CFXJSE_Context* pNewContext = 3009 std::unique_ptr<CFXJSE_Context> pNewContext(
3008 FXJSE_Context_Create(pIsolate, nullptr, nullptr); 3010 CFXJSE_Context::Create(pIsolate, nullptr, nullptr));
3009 3011
3010 std::unique_ptr<CFXJSE_Value> returnValue(new CFXJSE_Value(pIsolate)); 3012 std::unique_ptr<CFXJSE_Value> returnValue(new CFXJSE_Value(pIsolate));
3011 CFX_WideString javaScript(wsJavaScriptBuf.AsStringC()); 3013 CFX_WideString javaScript(wsJavaScriptBuf.AsStringC());
3012 FXJSE_ExecuteScript( 3014 pNewContext->ExecuteScript(
3013 pNewContext,
3014 FX_UTF8Encode(javaScript.c_str(), javaScript.GetLength()).c_str(), 3015 FX_UTF8Encode(javaScript.c_str(), javaScript.GetLength()).c_str(),
3015 returnValue.get()); 3016 returnValue.get());
3016 3017
3017 args.GetReturnValue()->Assign(returnValue.get()); 3018 args.GetReturnValue()->Assign(returnValue.get());
3018 FXJSE_Context_Release(pNewContext);
3019 } 3019 }
3020 3020
3021 // static 3021 // static
3022 void CXFA_FM2JSContext::Ref(CFXJSE_Value* pThis, 3022 void CXFA_FM2JSContext::Ref(CFXJSE_Value* pThis,
3023 const CFX_ByteStringC& szFuncName, 3023 const CFX_ByteStringC& szFuncName,
3024 CFXJSE_Arguments& args) { 3024 CFXJSE_Arguments& args) {
3025 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); 3025 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr);
3026 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); 3026 v8::Isolate* pIsolate = pContext->GetScriptRuntime();
3027 if (args.GetLength() != 1) { 3027 if (args.GetLength() != 1) {
3028 pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Ref"); 3028 pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Ref");
3029 return; 3029 return;
3030 } 3030 }
3031 3031
3032 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); 3032 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0);
3033 if (!FXJSE_Value_IsArray(argOne.get()) && 3033 if (!CFXJSE_Value::IsArray(argOne.get()) &&
3034 !FXJSE_Value_IsObject(argOne.get()) && 3034 !CFXJSE_Value::IsObject(argOne.get()) &&
3035 !FXJSE_Value_IsBoolean(argOne.get()) && 3035 !CFXJSE_Value::IsBoolean(argOne.get()) &&
3036 !FXJSE_Value_IsUTF8String(argOne.get()) && 3036 !CFXJSE_Value::IsUTF8String(argOne.get()) &&
3037 !FXJSE_Value_IsNull(argOne.get()) && 3037 !CFXJSE_Value::IsNull(argOne.get()) &&
3038 !FXJSE_Value_IsNumber(argOne.get())) { 3038 !CFXJSE_Value::IsNumber(argOne.get())) {
3039 pContext->ThrowException(XFA_IDS_ARGUMENT_MISMATCH); 3039 pContext->ThrowException(XFA_IDS_ARGUMENT_MISMATCH);
3040 return; 3040 return;
3041 } 3041 }
3042 3042
3043 if (FXJSE_Value_IsBoolean(argOne.get()) || 3043 if (CFXJSE_Value::IsBoolean(argOne.get()) ||
3044 FXJSE_Value_IsUTF8String(argOne.get()) || 3044 CFXJSE_Value::IsUTF8String(argOne.get()) ||
3045 FXJSE_Value_IsNumber(argOne.get())) { 3045 CFXJSE_Value::IsNumber(argOne.get())) {
3046 args.GetReturnValue()->Assign(argOne.get()); 3046 args.GetReturnValue()->Assign(argOne.get());
3047 return; 3047 return;
3048 } 3048 }
3049 3049
3050 CFXJSE_Value* rgValues[3]; 3050 CFXJSE_Value* rgValues[3];
3051 for (int32_t i = 0; i < 3; i++) 3051 for (int32_t i = 0; i < 3; i++)
3052 rgValues[i] = new CFXJSE_Value(pIsolate); 3052 rgValues[i] = new CFXJSE_Value(pIsolate);
3053 3053
3054 int intVal = 3; 3054 int intVal = 3;
3055 if (FXJSE_Value_IsNull(argOne.get())) { 3055 if (CFXJSE_Value::IsNull(argOne.get())) {
3056 intVal = 4; 3056 intVal = 4;
3057 rgValues[2]->SetNull(); 3057 rgValues[2]->SetNull();
3058 } else if (FXJSE_Value_IsArray(argOne.get())) { 3058 } else if (CFXJSE_Value::IsArray(argOne.get())) {
3059 #ifndef NDEBUG 3059 #ifndef NDEBUG
3060 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 3060 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
3061 argOne->GetObjectProperty("length", lengthValue.get()); 3061 argOne->GetObjectProperty("length", lengthValue.get());
3062 ASSERT(lengthValue->ToInteger() >= 3); 3062 ASSERT(lengthValue->ToInteger() >= 3);
3063 #endif 3063 #endif
3064 3064
3065 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 3065 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
3066 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 3066 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
3067 argOne->GetObjectPropertyByIdx(1, propertyValue.get()); 3067 argOne->GetObjectPropertyByIdx(1, propertyValue.get());
3068 argOne->GetObjectPropertyByIdx(2, jsObjectValue.get()); 3068 argOne->GetObjectPropertyByIdx(2, jsObjectValue.get());
3069 if (!FXJSE_Value_IsNull(propertyValue.get()) || 3069 if (!CFXJSE_Value::IsNull(propertyValue.get()) ||
3070 FXJSE_Value_IsNull(jsObjectValue.get())) { 3070 CFXJSE_Value::IsNull(jsObjectValue.get())) {
3071 for (int32_t i = 0; i < 3; i++) 3071 for (int32_t i = 0; i < 3; i++)
3072 delete rgValues[i]; 3072 delete rgValues[i];
3073 3073
3074 pContext->ThrowException(XFA_IDS_ARGUMENT_MISMATCH); 3074 pContext->ThrowException(XFA_IDS_ARGUMENT_MISMATCH);
3075 return; 3075 return;
3076 } 3076 }
3077 3077
3078 rgValues[2]->Assign(jsObjectValue.get()); 3078 rgValues[2]->Assign(jsObjectValue.get());
3079 } else if (FXJSE_Value_IsObject(argOne.get())) { 3079 } else if (CFXJSE_Value::IsObject(argOne.get())) {
3080 rgValues[2]->Assign(argOne.get()); 3080 rgValues[2]->Assign(argOne.get());
3081 } 3081 }
3082 3082
3083 rgValues[0]->SetInteger(intVal); 3083 rgValues[0]->SetInteger(intVal);
3084 rgValues[1]->SetNull(); 3084 rgValues[1]->SetNull();
3085 args.GetReturnValue()->SetArray(3, rgValues); 3085 args.GetReturnValue()->SetArray(3, rgValues);
3086 3086
3087 for (int32_t i = 0; i < 3; i++) 3087 for (int32_t i = 0; i < 3; i++)
3088 delete rgValues[i]; 3088 delete rgValues[i];
3089 } 3089 }
3090 3090
3091 // static 3091 // static
3092 void CXFA_FM2JSContext::UnitType(CFXJSE_Value* pThis, 3092 void CXFA_FM2JSContext::UnitType(CFXJSE_Value* pThis,
3093 const CFX_ByteStringC& szFuncName, 3093 const CFX_ByteStringC& szFuncName,
3094 CFXJSE_Arguments& args) { 3094 CFXJSE_Arguments& args) {
3095 if (args.GetLength() != 1) { 3095 if (args.GetLength() != 1) {
3096 ToJSContext(pThis, nullptr) 3096 ToJSContext(pThis, nullptr)
3097 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"UnitType"); 3097 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"UnitType");
3098 return; 3098 return;
3099 } 3099 }
3100 3100
3101 std::unique_ptr<CFXJSE_Value> unitspanValue = GetSimpleValue(pThis, args, 0); 3101 std::unique_ptr<CFXJSE_Value> unitspanValue = GetSimpleValue(pThis, args, 0);
3102 if (FXJSE_Value_IsNull(unitspanValue.get())) { 3102 if (CFXJSE_Value::IsNull(unitspanValue.get())) {
3103 args.GetReturnValue()->SetNull(); 3103 args.GetReturnValue()->SetNull();
3104 return; 3104 return;
3105 } 3105 }
3106 3106
3107 CFX_ByteString unitspanString; 3107 CFX_ByteString unitspanString;
3108 ValueToUTF8String(unitspanValue.get(), unitspanString); 3108 ValueToUTF8String(unitspanValue.get(), unitspanString);
3109 if (unitspanString.IsEmpty()) { 3109 if (unitspanString.IsEmpty()) {
3110 args.GetReturnValue()->SetString("in"); 3110 args.GetReturnValue()->SetString("in");
3111 return; 3111 return;
3112 } 3112 }
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
3206 const CFX_ByteStringC& szFuncName, 3206 const CFX_ByteStringC& szFuncName,
3207 CFXJSE_Arguments& args) { 3207 CFXJSE_Arguments& args) {
3208 int32_t argc = args.GetLength(); 3208 int32_t argc = args.GetLength();
3209 if (argc < 1 || argc > 2) { 3209 if (argc < 1 || argc > 2) {
3210 ToJSContext(pThis, nullptr) 3210 ToJSContext(pThis, nullptr)
3211 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"UnitValue"); 3211 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"UnitValue");
3212 return; 3212 return;
3213 } 3213 }
3214 3214
3215 std::unique_ptr<CFXJSE_Value> unitspanValue = GetSimpleValue(pThis, args, 0); 3215 std::unique_ptr<CFXJSE_Value> unitspanValue = GetSimpleValue(pThis, args, 0);
3216 if (FXJSE_Value_IsNull(unitspanValue.get())) { 3216 if (CFXJSE_Value::IsNull(unitspanValue.get())) {
3217 args.GetReturnValue()->SetNull(); 3217 args.GetReturnValue()->SetNull();
3218 return; 3218 return;
3219 } 3219 }
3220 3220
3221 CFX_ByteString unitspanString; 3221 CFX_ByteString unitspanString;
3222 ValueToUTF8String(unitspanValue.get(), unitspanString); 3222 ValueToUTF8String(unitspanValue.get(), unitspanString);
3223 const FX_CHAR* pData = unitspanString.c_str(); 3223 const FX_CHAR* pData = unitspanString.c_str();
3224 if (!pData) { 3224 if (!pData) {
3225 args.GetReturnValue()->SetInteger(0); 3225 args.GetReturnValue()->SetInteger(0);
3226 return; 3226 return;
(...skipping 1222 matching lines...) Expand 10 before | Expand all | Expand 10 after
4449 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Rtrim"); 4449 ->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Rtrim");
4450 } 4450 }
4451 } 4451 }
4452 4452
4453 // static 4453 // static
4454 void CXFA_FM2JSContext::Space(CFXJSE_Value* pThis, 4454 void CXFA_FM2JSContext::Space(CFXJSE_Value* pThis,
4455 const CFX_ByteStringC& szFuncName, 4455 const CFX_ByteStringC& szFuncName,
4456 CFXJSE_Arguments& args) { 4456 CFXJSE_Arguments& args) {
4457 if (args.GetLength() == 1) { 4457 if (args.GetLength() == 1) {
4458 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 4458 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
4459 if (FXJSE_Value_IsNull(argOne.get())) { 4459 if (CFXJSE_Value::IsNull(argOne.get())) {
4460 args.GetReturnValue()->SetNull(); 4460 args.GetReturnValue()->SetNull();
4461 } else { 4461 } else {
4462 int32_t count = 0; 4462 int32_t count = 0;
4463 count = ValueToInteger(pThis, argOne.get()); 4463 count = ValueToInteger(pThis, argOne.get());
4464 count = (count < 0) ? 0 : count; 4464 count = (count < 0) ? 0 : count;
4465 CFX_ByteTextBuf spaceString; 4465 CFX_ByteTextBuf spaceString;
4466 int32_t index = 0; 4466 int32_t index = 0;
4467 while (index < count) { 4467 while (index < count) {
4468 spaceString.AppendByte(' '); 4468 spaceString.AppendByte(' ');
4469 index++; 4469 index++;
(...skipping 11 matching lines...) Expand all
4481 void CXFA_FM2JSContext::Str(CFXJSE_Value* pThis, 4481 void CXFA_FM2JSContext::Str(CFXJSE_Value* pThis,
4482 const CFX_ByteStringC& szFuncName, 4482 const CFX_ByteStringC& szFuncName,
4483 CFXJSE_Arguments& args) { 4483 CFXJSE_Arguments& args) {
4484 int32_t argc = args.GetLength(); 4484 int32_t argc = args.GetLength();
4485 if ((argc > 0) && (argc < 4)) { 4485 if ((argc > 0) && (argc < 4)) {
4486 FX_BOOL bFlags = FALSE; 4486 FX_BOOL bFlags = FALSE;
4487 FX_FLOAT fNumber = 0.0f; 4487 FX_FLOAT fNumber = 0.0f;
4488 int32_t iWidth = 10; 4488 int32_t iWidth = 10;
4489 int32_t iPrecision = 0; 4489 int32_t iPrecision = 0;
4490 std::unique_ptr<CFXJSE_Value> numberValue = GetSimpleValue(pThis, args, 0); 4490 std::unique_ptr<CFXJSE_Value> numberValue = GetSimpleValue(pThis, args, 0);
4491 if (FXJSE_Value_IsNull(numberValue.get())) { 4491 if (CFXJSE_Value::IsNull(numberValue.get())) {
4492 bFlags = TRUE; 4492 bFlags = TRUE;
4493 } else { 4493 } else {
4494 fNumber = ValueToFloat(pThis, numberValue.get()); 4494 fNumber = ValueToFloat(pThis, numberValue.get());
4495 } 4495 }
4496 if (argc > 1) { 4496 if (argc > 1) {
4497 std::unique_ptr<CFXJSE_Value> widthValue = GetSimpleValue(pThis, args, 1); 4497 std::unique_ptr<CFXJSE_Value> widthValue = GetSimpleValue(pThis, args, 1);
4498 iWidth = (int32_t)ValueToFloat(pThis, widthValue.get()); 4498 iWidth = (int32_t)ValueToFloat(pThis, widthValue.get());
4499 } 4499 }
4500 if (argc > 2) { 4500 if (argc > 2) {
4501 std::unique_ptr<CFXJSE_Value> precisionValue = 4501 std::unique_ptr<CFXJSE_Value> precisionValue =
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
4602 int32_t argc = args.GetLength(); 4602 int32_t argc = args.GetLength();
4603 if ((argc == 3) || (argc == 4)) { 4603 if ((argc == 3) || (argc == 4)) {
4604 CFX_ByteString sourceString; 4604 CFX_ByteString sourceString;
4605 CFX_ByteString insertString; 4605 CFX_ByteString insertString;
4606 int32_t iLength = 0; 4606 int32_t iLength = 0;
4607 int32_t iStart = 0; 4607 int32_t iStart = 0;
4608 int32_t iDelete = 0; 4608 int32_t iDelete = 0;
4609 std::unique_ptr<CFXJSE_Value> sourceValue = GetSimpleValue(pThis, args, 0); 4609 std::unique_ptr<CFXJSE_Value> sourceValue = GetSimpleValue(pThis, args, 0);
4610 std::unique_ptr<CFXJSE_Value> startValue = GetSimpleValue(pThis, args, 1); 4610 std::unique_ptr<CFXJSE_Value> startValue = GetSimpleValue(pThis, args, 1);
4611 std::unique_ptr<CFXJSE_Value> deleteValue = GetSimpleValue(pThis, args, 2); 4611 std::unique_ptr<CFXJSE_Value> deleteValue = GetSimpleValue(pThis, args, 2);
4612 if (!FXJSE_Value_IsNull(sourceValue.get()) && 4612 if (!CFXJSE_Value::IsNull(sourceValue.get()) &&
4613 !FXJSE_Value_IsNull(startValue.get()) && 4613 !CFXJSE_Value::IsNull(startValue.get()) &&
4614 !FXJSE_Value_IsNull(deleteValue.get())) { 4614 !CFXJSE_Value::IsNull(deleteValue.get())) {
4615 ValueToUTF8String(sourceValue.get(), sourceString); 4615 ValueToUTF8String(sourceValue.get(), sourceString);
4616 iLength = sourceString.GetLength(); 4616 iLength = sourceString.GetLength();
4617 iStart = (int32_t)ValueToFloat(pThis, startValue.get()); 4617 iStart = (int32_t)ValueToFloat(pThis, startValue.get());
4618 if (iStart < 1) { 4618 if (iStart < 1) {
4619 iStart = 1; 4619 iStart = 1;
4620 } 4620 }
4621 if (iStart > iLength) { 4621 if (iStart > iLength) {
4622 iStart = iLength; 4622 iStart = iLength;
4623 } 4623 }
4624 iDelete = (int32_t)ValueToFloat(pThis, deleteValue.get()); 4624 iDelete = (int32_t)ValueToFloat(pThis, deleteValue.get());
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
4763 void CXFA_FM2JSContext::WordNum(CFXJSE_Value* pThis, 4763 void CXFA_FM2JSContext::WordNum(CFXJSE_Value* pThis,
4764 const CFX_ByteStringC& szFuncName, 4764 const CFX_ByteStringC& szFuncName,
4765 CFXJSE_Arguments& args) { 4765 CFXJSE_Arguments& args) {
4766 int32_t argc = args.GetLength(); 4766 int32_t argc = args.GetLength();
4767 if ((argc > 0) && (argc < 4)) { 4767 if ((argc > 0) && (argc < 4)) {
4768 FX_BOOL bFlags = FALSE; 4768 FX_BOOL bFlags = FALSE;
4769 FX_FLOAT fNumber = 0.0f; 4769 FX_FLOAT fNumber = 0.0f;
4770 int32_t iIdentifier = 0; 4770 int32_t iIdentifier = 0;
4771 CFX_ByteString localeString; 4771 CFX_ByteString localeString;
4772 std::unique_ptr<CFXJSE_Value> numberValue = GetSimpleValue(pThis, args, 0); 4772 std::unique_ptr<CFXJSE_Value> numberValue = GetSimpleValue(pThis, args, 0);
4773 if (FXJSE_Value_IsNull(numberValue.get())) { 4773 if (CFXJSE_Value::IsNull(numberValue.get())) {
4774 bFlags = TRUE; 4774 bFlags = TRUE;
4775 } else { 4775 } else {
4776 fNumber = ValueToFloat(pThis, numberValue.get()); 4776 fNumber = ValueToFloat(pThis, numberValue.get());
4777 } 4777 }
4778 if (argc > 1) { 4778 if (argc > 1) {
4779 std::unique_ptr<CFXJSE_Value> identifierValue = 4779 std::unique_ptr<CFXJSE_Value> identifierValue =
4780 GetSimpleValue(pThis, args, 1); 4780 GetSimpleValue(pThis, args, 1);
4781 if (FXJSE_Value_IsNull(identifierValue.get())) { 4781 if (CFXJSE_Value::IsNull(identifierValue.get())) {
4782 bFlags = TRUE; 4782 bFlags = TRUE;
4783 } else { 4783 } else {
4784 iIdentifier = (int32_t)ValueToFloat(pThis, identifierValue.get()); 4784 iIdentifier = (int32_t)ValueToFloat(pThis, identifierValue.get());
4785 } 4785 }
4786 } 4786 }
4787 if (argc > 2) { 4787 if (argc > 2) {
4788 std::unique_ptr<CFXJSE_Value> localeValue = 4788 std::unique_ptr<CFXJSE_Value> localeValue =
4789 GetSimpleValue(pThis, args, 2); 4789 GetSimpleValue(pThis, args, 2);
4790 if (FXJSE_Value_IsNull(localeValue.get())) { 4790 if (CFXJSE_Value::IsNull(localeValue.get())) {
4791 bFlags = TRUE; 4791 bFlags = TRUE;
4792 } else { 4792 } else {
4793 ValueToUTF8String(localeValue.get(), localeString); 4793 ValueToUTF8String(localeValue.get(), localeString);
4794 } 4794 }
4795 } 4795 }
4796 if (!bFlags) { 4796 if (!bFlags) {
4797 if ((fNumber < 0) || (fNumber > 922337203685477550)) { 4797 if ((fNumber < 0) || (fNumber > 922337203685477550)) {
4798 args.GetReturnValue()->SetString("*"); 4798 args.GetReturnValue()->SetString("*");
4799 } else { 4799 } else {
4800 CFX_ByteTextBuf resultBuf; 4800 CFX_ByteTextBuf resultBuf;
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
5142 // static 5142 // static
5143 void CXFA_FM2JSContext::assign_value_operator(CFXJSE_Value* pThis, 5143 void CXFA_FM2JSContext::assign_value_operator(CFXJSE_Value* pThis,
5144 const CFX_ByteStringC& szFuncName, 5144 const CFX_ByteStringC& szFuncName,
5145 CFXJSE_Arguments& args) { 5145 CFXJSE_Arguments& args) {
5146 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); 5146 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr);
5147 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); 5147 v8::Isolate* pIsolate = pContext->GetScriptRuntime();
5148 if (args.GetLength() == 2) { 5148 if (args.GetLength() == 2) {
5149 std::unique_ptr<CFXJSE_Value> lValue = args.GetValue(0); 5149 std::unique_ptr<CFXJSE_Value> lValue = args.GetValue(0);
5150 std::unique_ptr<CFXJSE_Value> rValue = GetSimpleValue(pThis, args, 1); 5150 std::unique_ptr<CFXJSE_Value> rValue = GetSimpleValue(pThis, args, 1);
5151 FX_BOOL bSetStatus = TRUE; 5151 FX_BOOL bSetStatus = TRUE;
5152 if (FXJSE_Value_IsArray(lValue.get())) { 5152 if (CFXJSE_Value::IsArray(lValue.get())) {
5153 std::unique_ptr<CFXJSE_Value> leftLengthValue(new CFXJSE_Value(pIsolate)); 5153 std::unique_ptr<CFXJSE_Value> leftLengthValue(new CFXJSE_Value(pIsolate));
5154 lValue->GetObjectProperty("length", leftLengthValue.get()); 5154 lValue->GetObjectProperty("length", leftLengthValue.get());
5155 int32_t iLeftLength = leftLengthValue->ToInteger(); 5155 int32_t iLeftLength = leftLengthValue->ToInteger();
5156 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 5156 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
5157 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 5157 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
5158 lValue->GetObjectPropertyByIdx(1, propertyValue.get()); 5158 lValue->GetObjectPropertyByIdx(1, propertyValue.get());
5159 if (FXJSE_Value_IsNull(propertyValue.get())) { 5159 if (CFXJSE_Value::IsNull(propertyValue.get())) {
5160 for (int32_t i = 2; i < iLeftLength; i++) { 5160 for (int32_t i = 2; i < iLeftLength; i++) {
5161 lValue->GetObjectPropertyByIdx(i, jsObjectValue.get()); 5161 lValue->GetObjectPropertyByIdx(i, jsObjectValue.get());
5162 bSetStatus = SetObjectDefaultValue(jsObjectValue.get(), rValue.get()); 5162 bSetStatus = SetObjectDefaultValue(jsObjectValue.get(), rValue.get());
5163 if (!bSetStatus) { 5163 if (!bSetStatus) {
5164 pContext->ThrowException(XFA_IDS_NOT_DEFAUL_VALUE); 5164 pContext->ThrowException(XFA_IDS_NOT_DEFAUL_VALUE);
5165 break; 5165 break;
5166 } 5166 }
5167 } 5167 }
5168 } else { 5168 } else {
5169 CFX_ByteString propertyStr; 5169 CFX_ByteString propertyStr;
5170 propertyValue->ToString(propertyStr); 5170 propertyValue->ToString(propertyStr);
5171 for (int32_t i = 2; i < iLeftLength; i++) { 5171 for (int32_t i = 2; i < iLeftLength; i++) {
5172 lValue->GetObjectPropertyByIdx(i, jsObjectValue.get()); 5172 lValue->GetObjectPropertyByIdx(i, jsObjectValue.get());
5173 jsObjectValue->SetObjectProperty(propertyStr.AsStringC(), 5173 jsObjectValue->SetObjectProperty(propertyStr.AsStringC(),
5174 rValue.get()); 5174 rValue.get());
5175 } 5175 }
5176 } 5176 }
5177 } else if (FXJSE_Value_IsObject(lValue.get())) { 5177 } else if (CFXJSE_Value::IsObject(lValue.get())) {
5178 bSetStatus = SetObjectDefaultValue(lValue.get(), rValue.get()); 5178 bSetStatus = SetObjectDefaultValue(lValue.get(), rValue.get());
5179 if (!bSetStatus) { 5179 if (!bSetStatus) {
5180 pContext->ThrowException(XFA_IDS_NOT_DEFAUL_VALUE); 5180 pContext->ThrowException(XFA_IDS_NOT_DEFAUL_VALUE);
5181 } 5181 }
5182 } 5182 }
5183 args.GetReturnValue()->Assign(rValue.get()); 5183 args.GetReturnValue()->Assign(rValue.get());
5184 } else { 5184 } else {
5185 pContext->ThrowException(XFA_IDS_COMPILER_ERROR); 5185 pContext->ThrowException(XFA_IDS_COMPILER_ERROR);
5186 } 5186 }
5187 } 5187 }
5188 5188
5189 // static 5189 // static
5190 void CXFA_FM2JSContext::logical_or_operator(CFXJSE_Value* pThis, 5190 void CXFA_FM2JSContext::logical_or_operator(CFXJSE_Value* pThis,
5191 const CFX_ByteStringC& szFuncName, 5191 const CFX_ByteStringC& szFuncName,
5192 CFXJSE_Arguments& args) { 5192 CFXJSE_Arguments& args) {
5193 if (args.GetLength() == 2) { 5193 if (args.GetLength() == 2) {
5194 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); 5194 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
5195 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); 5195 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
5196 if (FXJSE_Value_IsNull(argFirst.get()) && 5196 if (CFXJSE_Value::IsNull(argFirst.get()) &&
5197 FXJSE_Value_IsNull(argSecond.get())) { 5197 CFXJSE_Value::IsNull(argSecond.get())) {
5198 args.GetReturnValue()->SetNull(); 5198 args.GetReturnValue()->SetNull();
5199 } else { 5199 } else {
5200 FX_FLOAT first = ValueToFloat(pThis, argFirst.get()); 5200 FX_FLOAT first = ValueToFloat(pThis, argFirst.get());
5201 FX_FLOAT second = ValueToFloat(pThis, argSecond.get()); 5201 FX_FLOAT second = ValueToFloat(pThis, argSecond.get());
5202 args.GetReturnValue()->SetInteger((first || second) ? 1 : 0); 5202 args.GetReturnValue()->SetInteger((first || second) ? 1 : 0);
5203 } 5203 }
5204 } else { 5204 } else {
5205 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); 5205 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
5206 } 5206 }
5207 } 5207 }
5208 5208
5209 // static 5209 // static
5210 void CXFA_FM2JSContext::logical_and_operator(CFXJSE_Value* pThis, 5210 void CXFA_FM2JSContext::logical_and_operator(CFXJSE_Value* pThis,
5211 const CFX_ByteStringC& szFuncName, 5211 const CFX_ByteStringC& szFuncName,
5212 CFXJSE_Arguments& args) { 5212 CFXJSE_Arguments& args) {
5213 if (args.GetLength() == 2) { 5213 if (args.GetLength() == 2) {
5214 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); 5214 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
5215 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); 5215 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
5216 if (FXJSE_Value_IsNull(argFirst.get()) && 5216 if (CFXJSE_Value::IsNull(argFirst.get()) &&
5217 FXJSE_Value_IsNull(argSecond.get())) { 5217 CFXJSE_Value::IsNull(argSecond.get())) {
5218 args.GetReturnValue()->SetNull(); 5218 args.GetReturnValue()->SetNull();
5219 } else { 5219 } else {
5220 FX_FLOAT first = ValueToFloat(pThis, argFirst.get()); 5220 FX_FLOAT first = ValueToFloat(pThis, argFirst.get());
5221 FX_FLOAT second = ValueToFloat(pThis, argSecond.get()); 5221 FX_FLOAT second = ValueToFloat(pThis, argSecond.get());
5222 args.GetReturnValue()->SetInteger((first && second) ? 1 : 0); 5222 args.GetReturnValue()->SetInteger((first && second) ? 1 : 0);
5223 } 5223 }
5224 } else { 5224 } else {
5225 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); 5225 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
5226 } 5226 }
5227 } 5227 }
5228 5228
5229 // static 5229 // static
5230 void CXFA_FM2JSContext::equality_operator(CFXJSE_Value* pThis, 5230 void CXFA_FM2JSContext::equality_operator(CFXJSE_Value* pThis,
5231 const CFX_ByteStringC& szFuncName, 5231 const CFX_ByteStringC& szFuncName,
5232 CFXJSE_Arguments& args) { 5232 CFXJSE_Arguments& args) {
5233 if (args.GetLength() == 2) { 5233 if (args.GetLength() == 2) {
5234 if (fm_ref_equal(pThis, args)) { 5234 if (fm_ref_equal(pThis, args)) {
5235 args.GetReturnValue()->SetInteger(1); 5235 args.GetReturnValue()->SetInteger(1);
5236 } else { 5236 } else {
5237 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); 5237 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
5238 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); 5238 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
5239 if (FXJSE_Value_IsNull(argFirst.get()) || 5239 if (CFXJSE_Value::IsNull(argFirst.get()) ||
5240 FXJSE_Value_IsNull(argSecond.get())) { 5240 CFXJSE_Value::IsNull(argSecond.get())) {
5241 args.GetReturnValue()->SetInteger((FXJSE_Value_IsNull(argFirst.get()) && 5241 args.GetReturnValue()->SetInteger(
5242 FXJSE_Value_IsNull(argSecond.get())) 5242 (CFXJSE_Value::IsNull(argFirst.get()) &&
5243 ? 1 5243 CFXJSE_Value::IsNull(argSecond.get()))
5244 : 0); 5244 ? 1
5245 } else if (FXJSE_Value_IsUTF8String(argFirst.get()) && 5245 : 0);
5246 FXJSE_Value_IsUTF8String(argSecond.get())) { 5246 } else if (CFXJSE_Value::IsUTF8String(argFirst.get()) &&
5247 CFXJSE_Value::IsUTF8String(argSecond.get())) {
5247 CFX_ByteString firstOutput; 5248 CFX_ByteString firstOutput;
5248 CFX_ByteString secondOutput; 5249 CFX_ByteString secondOutput;
5249 argFirst->ToString(firstOutput); 5250 argFirst->ToString(firstOutput);
5250 argSecond->ToString(secondOutput); 5251 argSecond->ToString(secondOutput);
5251 args.GetReturnValue()->SetInteger(firstOutput == secondOutput); 5252 args.GetReturnValue()->SetInteger(firstOutput == secondOutput);
5252 } else { 5253 } else {
5253 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); 5254 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
5254 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); 5255 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
5255 args.GetReturnValue()->SetInteger((first == second) ? 1 : 0); 5256 args.GetReturnValue()->SetInteger((first == second) ? 1 : 0);
5256 } 5257 }
5257 } 5258 }
5258 } else { 5259 } else {
5259 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); 5260 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
5260 } 5261 }
5261 } 5262 }
5262 5263
5263 // static 5264 // static
5264 void CXFA_FM2JSContext::notequality_operator(CFXJSE_Value* pThis, 5265 void CXFA_FM2JSContext::notequality_operator(CFXJSE_Value* pThis,
5265 const CFX_ByteStringC& szFuncName, 5266 const CFX_ByteStringC& szFuncName,
5266 CFXJSE_Arguments& args) { 5267 CFXJSE_Arguments& args) {
5267 if (args.GetLength() == 2) { 5268 if (args.GetLength() == 2) {
5268 if (fm_ref_equal(pThis, args)) { 5269 if (fm_ref_equal(pThis, args)) {
5269 args.GetReturnValue()->SetInteger(0); 5270 args.GetReturnValue()->SetInteger(0);
5270 } else { 5271 } else {
5271 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); 5272 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
5272 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); 5273 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
5273 if (FXJSE_Value_IsNull(argFirst.get()) || 5274 if (CFXJSE_Value::IsNull(argFirst.get()) ||
5274 FXJSE_Value_IsNull(argSecond.get())) { 5275 CFXJSE_Value::IsNull(argSecond.get())) {
5275 args.GetReturnValue()->SetInteger((FXJSE_Value_IsNull(argFirst.get()) && 5276 args.GetReturnValue()->SetInteger(
5276 FXJSE_Value_IsNull(argSecond.get())) 5277 (CFXJSE_Value::IsNull(argFirst.get()) &&
5277 ? 0 5278 CFXJSE_Value::IsNull(argSecond.get()))
5278 : 1); 5279 ? 0
5279 } else if (FXJSE_Value_IsUTF8String(argFirst.get()) && 5280 : 1);
5280 FXJSE_Value_IsUTF8String(argSecond.get())) { 5281 } else if (CFXJSE_Value::IsUTF8String(argFirst.get()) &&
5282 CFXJSE_Value::IsUTF8String(argSecond.get())) {
5281 CFX_ByteString firstOutput; 5283 CFX_ByteString firstOutput;
5282 CFX_ByteString secondOutput; 5284 CFX_ByteString secondOutput;
5283 argFirst->ToString(firstOutput); 5285 argFirst->ToString(firstOutput);
5284 argSecond->ToString(secondOutput); 5286 argSecond->ToString(secondOutput);
5285 args.GetReturnValue()->SetInteger(firstOutput != secondOutput); 5287 args.GetReturnValue()->SetInteger(firstOutput != secondOutput);
5286 } else { 5288 } else {
5287 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); 5289 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
5288 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); 5290 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
5289 args.GetReturnValue()->SetInteger(first != second); 5291 args.GetReturnValue()->SetInteger(first != second);
5290 } 5292 }
5291 } 5293 }
5292 } else { 5294 } else {
5293 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); 5295 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
5294 } 5296 }
5295 } 5297 }
5296 5298
5297 // static 5299 // static
5298 FX_BOOL CXFA_FM2JSContext::fm_ref_equal(CFXJSE_Value* pThis, 5300 FX_BOOL CXFA_FM2JSContext::fm_ref_equal(CFXJSE_Value* pThis,
5299 CFXJSE_Arguments& args) { 5301 CFXJSE_Arguments& args) {
5300 FX_BOOL bRet = FALSE; 5302 FX_BOOL bRet = FALSE;
5301 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime(); 5303 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime();
5302 std::unique_ptr<CFXJSE_Value> argFirst = args.GetValue(0); 5304 std::unique_ptr<CFXJSE_Value> argFirst = args.GetValue(0);
5303 std::unique_ptr<CFXJSE_Value> argSecond = args.GetValue(1); 5305 std::unique_ptr<CFXJSE_Value> argSecond = args.GetValue(1);
5304 if (FXJSE_Value_IsArray(argFirst.get()) && 5306 if (CFXJSE_Value::IsArray(argFirst.get()) &&
5305 FXJSE_Value_IsArray(argSecond.get())) { 5307 CFXJSE_Value::IsArray(argSecond.get())) {
5306 std::unique_ptr<CFXJSE_Value> firstFlagValue(new CFXJSE_Value(pIsolate)); 5308 std::unique_ptr<CFXJSE_Value> firstFlagValue(new CFXJSE_Value(pIsolate));
5307 std::unique_ptr<CFXJSE_Value> secondFlagValue(new CFXJSE_Value(pIsolate)); 5309 std::unique_ptr<CFXJSE_Value> secondFlagValue(new CFXJSE_Value(pIsolate));
5308 argFirst->GetObjectPropertyByIdx(0, firstFlagValue.get()); 5310 argFirst->GetObjectPropertyByIdx(0, firstFlagValue.get());
5309 argSecond->GetObjectPropertyByIdx(0, secondFlagValue.get()); 5311 argSecond->GetObjectPropertyByIdx(0, secondFlagValue.get());
5310 if (firstFlagValue->ToInteger() == 3 && secondFlagValue->ToInteger() == 3) { 5312 if (firstFlagValue->ToInteger() == 3 && secondFlagValue->ToInteger() == 3) {
5311 std::unique_ptr<CFXJSE_Value> firstJSObject(new CFXJSE_Value(pIsolate)); 5313 std::unique_ptr<CFXJSE_Value> firstJSObject(new CFXJSE_Value(pIsolate));
5312 std::unique_ptr<CFXJSE_Value> secondJSObject(new CFXJSE_Value(pIsolate)); 5314 std::unique_ptr<CFXJSE_Value> secondJSObject(new CFXJSE_Value(pIsolate));
5313 argFirst->GetObjectPropertyByIdx(2, firstJSObject.get()); 5315 argFirst->GetObjectPropertyByIdx(2, firstJSObject.get());
5314 argSecond->GetObjectPropertyByIdx(2, secondJSObject.get()); 5316 argSecond->GetObjectPropertyByIdx(2, secondJSObject.get());
5315 if (!FXJSE_Value_IsNull(firstJSObject.get()) && 5317 if (!CFXJSE_Value::IsNull(firstJSObject.get()) &&
5316 !FXJSE_Value_IsNull(secondJSObject.get())) { 5318 !CFXJSE_Value::IsNull(secondJSObject.get())) {
5317 bRet = (firstJSObject->ToHostObject(nullptr) == 5319 bRet = (firstJSObject->ToHostObject(nullptr) ==
5318 secondJSObject->ToHostObject(nullptr)); 5320 secondJSObject->ToHostObject(nullptr));
5319 } 5321 }
5320 } 5322 }
5321 } 5323 }
5322 return bRet; 5324 return bRet;
5323 } 5325 }
5324 5326
5325 // static 5327 // static
5326 void CXFA_FM2JSContext::less_operator(CFXJSE_Value* pThis, 5328 void CXFA_FM2JSContext::less_operator(CFXJSE_Value* pThis,
5327 const CFX_ByteStringC& szFuncName, 5329 const CFX_ByteStringC& szFuncName,
5328 CFXJSE_Arguments& args) { 5330 CFXJSE_Arguments& args) {
5329 if (args.GetLength() == 2) { 5331 if (args.GetLength() == 2) {
5330 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); 5332 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
5331 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); 5333 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
5332 if (FXJSE_Value_IsNull(argFirst.get()) || 5334 if (CFXJSE_Value::IsNull(argFirst.get()) ||
5333 FXJSE_Value_IsNull(argSecond.get())) { 5335 CFXJSE_Value::IsNull(argSecond.get())) {
5334 args.GetReturnValue()->SetInteger(0); 5336 args.GetReturnValue()->SetInteger(0);
5335 } else if (FXJSE_Value_IsUTF8String(argFirst.get()) && 5337 } else if (CFXJSE_Value::IsUTF8String(argFirst.get()) &&
5336 FXJSE_Value_IsUTF8String(argSecond.get())) { 5338 CFXJSE_Value::IsUTF8String(argSecond.get())) {
5337 CFX_ByteString firstOutput; 5339 CFX_ByteString firstOutput;
5338 CFX_ByteString secondOutput; 5340 CFX_ByteString secondOutput;
5339 argFirst->ToString(firstOutput); 5341 argFirst->ToString(firstOutput);
5340 argSecond->ToString(secondOutput); 5342 argSecond->ToString(secondOutput);
5341 args.GetReturnValue()->SetInteger( 5343 args.GetReturnValue()->SetInteger(
5342 firstOutput.Compare(secondOutput.AsStringC()) == -1); 5344 firstOutput.Compare(secondOutput.AsStringC()) == -1);
5343 } else { 5345 } else {
5344 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); 5346 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
5345 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); 5347 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
5346 args.GetReturnValue()->SetInteger((first < second) ? 1 : 0); 5348 args.GetReturnValue()->SetInteger((first < second) ? 1 : 0);
5347 } 5349 }
5348 } else { 5350 } else {
5349 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); 5351 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
5350 } 5352 }
5351 } 5353 }
5352 5354
5353 // static 5355 // static
5354 void CXFA_FM2JSContext::lessequal_operator(CFXJSE_Value* pThis, 5356 void CXFA_FM2JSContext::lessequal_operator(CFXJSE_Value* pThis,
5355 const CFX_ByteStringC& szFuncName, 5357 const CFX_ByteStringC& szFuncName,
5356 CFXJSE_Arguments& args) { 5358 CFXJSE_Arguments& args) {
5357 if (args.GetLength() == 2) { 5359 if (args.GetLength() == 2) {
5358 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); 5360 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
5359 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); 5361 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
5360 if (FXJSE_Value_IsNull(argFirst.get()) || 5362 if (CFXJSE_Value::IsNull(argFirst.get()) ||
5361 FXJSE_Value_IsNull(argSecond.get())) { 5363 CFXJSE_Value::IsNull(argSecond.get())) {
5362 args.GetReturnValue()->SetInteger((FXJSE_Value_IsNull(argFirst.get()) && 5364 args.GetReturnValue()->SetInteger((CFXJSE_Value::IsNull(argFirst.get()) &&
5363 FXJSE_Value_IsNull(argSecond.get())) 5365 CFXJSE_Value::IsNull(argSecond.get()))
5364 ? 1 5366 ? 1
5365 : 0); 5367 : 0);
5366 } else if (FXJSE_Value_IsUTF8String(argFirst.get()) && 5368 } else if (CFXJSE_Value::IsUTF8String(argFirst.get()) &&
5367 FXJSE_Value_IsUTF8String(argSecond.get())) { 5369 CFXJSE_Value::IsUTF8String(argSecond.get())) {
5368 CFX_ByteString firstOutput; 5370 CFX_ByteString firstOutput;
5369 CFX_ByteString secondOutput; 5371 CFX_ByteString secondOutput;
5370 argFirst->ToString(firstOutput); 5372 argFirst->ToString(firstOutput);
5371 argSecond->ToString(secondOutput); 5373 argSecond->ToString(secondOutput);
5372 args.GetReturnValue()->SetInteger( 5374 args.GetReturnValue()->SetInteger(
5373 firstOutput.Compare(secondOutput.AsStringC()) != 1); 5375 firstOutput.Compare(secondOutput.AsStringC()) != 1);
5374 } else { 5376 } else {
5375 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); 5377 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
5376 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); 5378 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
5377 args.GetReturnValue()->SetInteger((first <= second) ? 1 : 0); 5379 args.GetReturnValue()->SetInteger((first <= second) ? 1 : 0);
5378 } 5380 }
5379 } else { 5381 } else {
5380 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); 5382 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
5381 } 5383 }
5382 } 5384 }
5383 5385
5384 // static 5386 // static
5385 void CXFA_FM2JSContext::greater_operator(CFXJSE_Value* pThis, 5387 void CXFA_FM2JSContext::greater_operator(CFXJSE_Value* pThis,
5386 const CFX_ByteStringC& szFuncName, 5388 const CFX_ByteStringC& szFuncName,
5387 CFXJSE_Arguments& args) { 5389 CFXJSE_Arguments& args) {
5388 if (args.GetLength() == 2) { 5390 if (args.GetLength() == 2) {
5389 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); 5391 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
5390 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); 5392 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
5391 if (FXJSE_Value_IsNull(argFirst.get()) || 5393 if (CFXJSE_Value::IsNull(argFirst.get()) ||
5392 FXJSE_Value_IsNull(argSecond.get())) { 5394 CFXJSE_Value::IsNull(argSecond.get())) {
5393 args.GetReturnValue()->SetInteger(0); 5395 args.GetReturnValue()->SetInteger(0);
5394 } else if (FXJSE_Value_IsUTF8String(argFirst.get()) && 5396 } else if (CFXJSE_Value::IsUTF8String(argFirst.get()) &&
5395 FXJSE_Value_IsUTF8String(argSecond.get())) { 5397 CFXJSE_Value::IsUTF8String(argSecond.get())) {
5396 CFX_ByteString firstOutput; 5398 CFX_ByteString firstOutput;
5397 CFX_ByteString secondOutput; 5399 CFX_ByteString secondOutput;
5398 argFirst->ToString(firstOutput); 5400 argFirst->ToString(firstOutput);
5399 argSecond->ToString(secondOutput); 5401 argSecond->ToString(secondOutput);
5400 args.GetReturnValue()->SetInteger( 5402 args.GetReturnValue()->SetInteger(
5401 firstOutput.Compare(secondOutput.AsStringC()) == 1); 5403 firstOutput.Compare(secondOutput.AsStringC()) == 1);
5402 } else { 5404 } else {
5403 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); 5405 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
5404 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); 5406 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
5405 args.GetReturnValue()->SetInteger((first > second) ? 1 : 0); 5407 args.GetReturnValue()->SetInteger((first > second) ? 1 : 0);
5406 } 5408 }
5407 } else { 5409 } else {
5408 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); 5410 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
5409 } 5411 }
5410 } 5412 }
5411 5413
5412 // static 5414 // static
5413 void CXFA_FM2JSContext::greaterequal_operator(CFXJSE_Value* pThis, 5415 void CXFA_FM2JSContext::greaterequal_operator(CFXJSE_Value* pThis,
5414 const CFX_ByteStringC& szFuncName, 5416 const CFX_ByteStringC& szFuncName,
5415 CFXJSE_Arguments& args) { 5417 CFXJSE_Arguments& args) {
5416 if (args.GetLength() == 2) { 5418 if (args.GetLength() == 2) {
5417 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); 5419 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
5418 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); 5420 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
5419 if (FXJSE_Value_IsNull(argFirst.get()) || 5421 if (CFXJSE_Value::IsNull(argFirst.get()) ||
5420 FXJSE_Value_IsNull(argSecond.get())) { 5422 CFXJSE_Value::IsNull(argSecond.get())) {
5421 args.GetReturnValue()->SetInteger((FXJSE_Value_IsNull(argFirst.get()) && 5423 args.GetReturnValue()->SetInteger((CFXJSE_Value::IsNull(argFirst.get()) &&
5422 FXJSE_Value_IsNull(argSecond.get())) 5424 CFXJSE_Value::IsNull(argSecond.get()))
5423 ? 1 5425 ? 1
5424 : 0); 5426 : 0);
5425 } else if (FXJSE_Value_IsUTF8String(argFirst.get()) && 5427 } else if (CFXJSE_Value::IsUTF8String(argFirst.get()) &&
5426 FXJSE_Value_IsUTF8String(argSecond.get())) { 5428 CFXJSE_Value::IsUTF8String(argSecond.get())) {
5427 CFX_ByteString firstOutput; 5429 CFX_ByteString firstOutput;
5428 CFX_ByteString secondOutput; 5430 CFX_ByteString secondOutput;
5429 argFirst->ToString(firstOutput); 5431 argFirst->ToString(firstOutput);
5430 argSecond->ToString(secondOutput); 5432 argSecond->ToString(secondOutput);
5431 args.GetReturnValue()->SetInteger( 5433 args.GetReturnValue()->SetInteger(
5432 firstOutput.Compare(secondOutput.AsStringC()) != -1); 5434 firstOutput.Compare(secondOutput.AsStringC()) != -1);
5433 } else { 5435 } else {
5434 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); 5436 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
5435 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); 5437 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
5436 args.GetReturnValue()->SetInteger((first >= second) ? 1 : 0); 5438 args.GetReturnValue()->SetInteger((first >= second) ? 1 : 0);
(...skipping 23 matching lines...) Expand all
5460 } 5462 }
5461 } 5463 }
5462 5464
5463 // static 5465 // static
5464 void CXFA_FM2JSContext::minus_operator(CFXJSE_Value* pThis, 5466 void CXFA_FM2JSContext::minus_operator(CFXJSE_Value* pThis,
5465 const CFX_ByteStringC& szFuncName, 5467 const CFX_ByteStringC& szFuncName,
5466 CFXJSE_Arguments& args) { 5468 CFXJSE_Arguments& args) {
5467 if (args.GetLength() == 2) { 5469 if (args.GetLength() == 2) {
5468 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); 5470 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
5469 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); 5471 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
5470 if (FXJSE_Value_IsNull(argFirst.get()) && 5472 if (CFXJSE_Value::IsNull(argFirst.get()) &&
5471 FXJSE_Value_IsNull(argSecond.get())) { 5473 CFXJSE_Value::IsNull(argSecond.get())) {
5472 args.GetReturnValue()->SetNull(); 5474 args.GetReturnValue()->SetNull();
5473 } else { 5475 } else {
5474 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); 5476 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
5475 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); 5477 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
5476 args.GetReturnValue()->SetDouble(first - second); 5478 args.GetReturnValue()->SetDouble(first - second);
5477 } 5479 }
5478 } else { 5480 } else {
5479 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); 5481 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
5480 } 5482 }
5481 } 5483 }
5482 5484
5483 // static 5485 // static
5484 void CXFA_FM2JSContext::multiple_operator(CFXJSE_Value* pThis, 5486 void CXFA_FM2JSContext::multiple_operator(CFXJSE_Value* pThis,
5485 const CFX_ByteStringC& szFuncName, 5487 const CFX_ByteStringC& szFuncName,
5486 CFXJSE_Arguments& args) { 5488 CFXJSE_Arguments& args) {
5487 if (args.GetLength() == 2) { 5489 if (args.GetLength() == 2) {
5488 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); 5490 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
5489 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); 5491 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
5490 if (FXJSE_Value_IsNull(argFirst.get()) && 5492 if (CFXJSE_Value::IsNull(argFirst.get()) &&
5491 FXJSE_Value_IsNull(argSecond.get())) { 5493 CFXJSE_Value::IsNull(argSecond.get())) {
5492 args.GetReturnValue()->SetNull(); 5494 args.GetReturnValue()->SetNull();
5493 } else { 5495 } else {
5494 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); 5496 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
5495 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); 5497 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
5496 args.GetReturnValue()->SetDouble(first * second); 5498 args.GetReturnValue()->SetDouble(first * second);
5497 } 5499 }
5498 } else { 5500 } else {
5499 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); 5501 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
5500 } 5502 }
5501 } 5503 }
5502 5504
5503 // static 5505 // static
5504 void CXFA_FM2JSContext::divide_operator(CFXJSE_Value* pThis, 5506 void CXFA_FM2JSContext::divide_operator(CFXJSE_Value* pThis,
5505 const CFX_ByteStringC& szFuncName, 5507 const CFX_ByteStringC& szFuncName,
5506 CFXJSE_Arguments& args) { 5508 CFXJSE_Arguments& args) {
5507 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); 5509 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr);
5508 if (args.GetLength() == 2) { 5510 if (args.GetLength() == 2) {
5509 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); 5511 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
5510 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); 5512 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
5511 if (FXJSE_Value_IsNull(argFirst.get()) && 5513 if (CFXJSE_Value::IsNull(argFirst.get()) &&
5512 FXJSE_Value_IsNull(argSecond.get())) { 5514 CFXJSE_Value::IsNull(argSecond.get())) {
5513 args.GetReturnValue()->SetNull(); 5515 args.GetReturnValue()->SetNull();
5514 } else { 5516 } else {
5515 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); 5517 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
5516 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); 5518 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
5517 if (second == 0.0) { 5519 if (second == 0.0) {
5518 pContext->ThrowException(XFA_IDS_DIVIDE_ZERO); 5520 pContext->ThrowException(XFA_IDS_DIVIDE_ZERO);
5519 } else { 5521 } else {
5520 args.GetReturnValue()->SetDouble(first / second); 5522 args.GetReturnValue()->SetDouble(first / second);
5521 } 5523 }
5522 } 5524 }
5523 } else { 5525 } else {
5524 pContext->ThrowException(XFA_IDS_COMPILER_ERROR); 5526 pContext->ThrowException(XFA_IDS_COMPILER_ERROR);
5525 } 5527 }
5526 } 5528 }
5527 5529
5528 // static 5530 // static
5529 void CXFA_FM2JSContext::positive_operator(CFXJSE_Value* pThis, 5531 void CXFA_FM2JSContext::positive_operator(CFXJSE_Value* pThis,
5530 const CFX_ByteStringC& szFuncName, 5532 const CFX_ByteStringC& szFuncName,
5531 CFXJSE_Arguments& args) { 5533 CFXJSE_Arguments& args) {
5532 if (args.GetLength() == 1) { 5534 if (args.GetLength() == 1) {
5533 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 5535 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
5534 if (FXJSE_Value_IsNull(argOne.get())) { 5536 if (CFXJSE_Value::IsNull(argOne.get())) {
5535 args.GetReturnValue()->SetNull(); 5537 args.GetReturnValue()->SetNull();
5536 } else { 5538 } else {
5537 args.GetReturnValue()->SetDouble(0.0 + 5539 args.GetReturnValue()->SetDouble(0.0 +
5538 ValueToDouble(pThis, argOne.get())); 5540 ValueToDouble(pThis, argOne.get()));
5539 } 5541 }
5540 } else { 5542 } else {
5541 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); 5543 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
5542 } 5544 }
5543 } 5545 }
5544 5546
5545 // static 5547 // static
5546 void CXFA_FM2JSContext::negative_operator(CFXJSE_Value* pThis, 5548 void CXFA_FM2JSContext::negative_operator(CFXJSE_Value* pThis,
5547 const CFX_ByteStringC& szFuncName, 5549 const CFX_ByteStringC& szFuncName,
5548 CFXJSE_Arguments& args) { 5550 CFXJSE_Arguments& args) {
5549 if (args.GetLength() == 1) { 5551 if (args.GetLength() == 1) {
5550 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 5552 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
5551 if (FXJSE_Value_IsNull(argOne.get())) { 5553 if (CFXJSE_Value::IsNull(argOne.get())) {
5552 args.GetReturnValue()->SetNull(); 5554 args.GetReturnValue()->SetNull();
5553 } else { 5555 } else {
5554 args.GetReturnValue()->SetDouble(0.0 - 5556 args.GetReturnValue()->SetDouble(0.0 -
5555 ValueToDouble(pThis, argOne.get())); 5557 ValueToDouble(pThis, argOne.get()));
5556 } 5558 }
5557 } else { 5559 } else {
5558 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); 5560 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
5559 } 5561 }
5560 } 5562 }
5561 5563
5562 // static 5564 // static
5563 void CXFA_FM2JSContext::logical_not_operator(CFXJSE_Value* pThis, 5565 void CXFA_FM2JSContext::logical_not_operator(CFXJSE_Value* pThis,
5564 const CFX_ByteStringC& szFuncName, 5566 const CFX_ByteStringC& szFuncName,
5565 CFXJSE_Arguments& args) { 5567 CFXJSE_Arguments& args) {
5566 if (args.GetLength() == 1) { 5568 if (args.GetLength() == 1) {
5567 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 5569 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
5568 if (FXJSE_Value_IsNull(argOne.get())) { 5570 if (CFXJSE_Value::IsNull(argOne.get())) {
5569 args.GetReturnValue()->SetNull(); 5571 args.GetReturnValue()->SetNull();
5570 } else { 5572 } else {
5571 FX_DOUBLE first = ValueToDouble(pThis, argOne.get()); 5573 FX_DOUBLE first = ValueToDouble(pThis, argOne.get());
5572 args.GetReturnValue()->SetInteger((first == 0.0) ? 1 : 0); 5574 args.GetReturnValue()->SetInteger((first == 0.0) ? 1 : 0);
5573 } 5575 }
5574 } else { 5576 } else {
5575 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); 5577 ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
5576 } 5578 }
5577 } 5579 }
5578 5580
(...skipping 12 matching lines...) Expand all
5591 int32_t iIndexFlags = args.GetInt32(3); 5593 int32_t iIndexFlags = args.GetInt32(3);
5592 int32_t iIndexValue = 0; 5594 int32_t iIndexValue = 0;
5593 if (argc > 4) { 5595 if (argc > 4) {
5594 bIsStar = FALSE; 5596 bIsStar = FALSE;
5595 std::unique_ptr<CFXJSE_Value> argIndex = args.GetValue(4); 5597 std::unique_ptr<CFXJSE_Value> argIndex = args.GetValue(4);
5596 iIndexValue = ValueToInteger(pThis, argIndex.get()); 5598 iIndexValue = ValueToInteger(pThis, argIndex.get());
5597 } 5599 }
5598 CFX_ByteString szSomExp; 5600 CFX_ByteString szSomExp;
5599 GenerateSomExpression(szName.AsStringC(), iIndexFlags, iIndexValue, bIsStar, 5601 GenerateSomExpression(szName.AsStringC(), iIndexFlags, iIndexValue, bIsStar,
5600 szSomExp); 5602 szSomExp);
5601 if (FXJSE_Value_IsArray(argAccessor.get())) { 5603 if (CFXJSE_Value::IsArray(argAccessor.get())) {
5602 std::unique_ptr<CFXJSE_Value> pLengthValue(new CFXJSE_Value(pIsolate)); 5604 std::unique_ptr<CFXJSE_Value> pLengthValue(new CFXJSE_Value(pIsolate));
5603 argAccessor->GetObjectProperty("length", pLengthValue.get()); 5605 argAccessor->GetObjectProperty("length", pLengthValue.get());
5604 int32_t iLength = pLengthValue->ToInteger(); 5606 int32_t iLength = pLengthValue->ToInteger();
5605 int32_t iCounter = 0; 5607 int32_t iCounter = 0;
5606 CFXJSE_Value*** hResolveValues = FX_Alloc(CFXJSE_Value**, iLength - 2); 5608 CFXJSE_Value*** hResolveValues = FX_Alloc(CFXJSE_Value**, iLength - 2);
5607 int32_t* iSizes = FX_Alloc(int32_t, iLength - 2); 5609 int32_t* iSizes = FX_Alloc(int32_t, iLength - 2);
5608 for (int32_t i = 0; i < (iLength - 2); i++) { 5610 for (int32_t i = 0; i < (iLength - 2); i++) {
5609 iSizes[i] = 0; 5611 iSizes[i] = 0;
5610 } 5612 }
5611 std::unique_ptr<CFXJSE_Value> hJSObjValue(new CFXJSE_Value(pIsolate)); 5613 std::unique_ptr<CFXJSE_Value> hJSObjValue(new CFXJSE_Value(pIsolate));
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
5660 5662
5661 if (iSizes[i] > 0) { 5663 if (iSizes[i] > 0) {
5662 FX_Free(hResolveValues[i]); 5664 FX_Free(hResolveValues[i]);
5663 } 5665 }
5664 } 5666 }
5665 FX_Free(hResolveValues); 5667 FX_Free(hResolveValues);
5666 FX_Free(iSizes); 5668 FX_Free(iSizes);
5667 } else { 5669 } else {
5668 XFA_RESOLVENODE_RS resoveNodeRS; 5670 XFA_RESOLVENODE_RS resoveNodeRS;
5669 int32_t iRet = 0; 5671 int32_t iRet = 0;
5670 if (FXJSE_Value_IsObject(argAccessor.get()) || 5672 if (CFXJSE_Value::IsObject(argAccessor.get()) ||
5671 (FXJSE_Value_IsNull(argAccessor.get()) && bsAccessorName.IsEmpty())) { 5673 (CFXJSE_Value::IsNull(argAccessor.get()) &&
5674 bsAccessorName.IsEmpty())) {
5672 iRet = ResolveObjects(pThis, argAccessor.get(), szSomExp.AsStringC(), 5675 iRet = ResolveObjects(pThis, argAccessor.get(), szSomExp.AsStringC(),
5673 resoveNodeRS, TRUE, szName.IsEmpty()); 5676 resoveNodeRS, TRUE, szName.IsEmpty());
5674 } else if (!FXJSE_Value_IsObject(argAccessor.get()) && 5677 } else if (!CFXJSE_Value::IsObject(argAccessor.get()) &&
5675 !bsAccessorName.IsEmpty()) { 5678 !bsAccessorName.IsEmpty()) {
5676 FX_BOOL bGetObject = GetObjectByName(pThis, argAccessor.get(), 5679 FX_BOOL bGetObject = GetObjectByName(pThis, argAccessor.get(),
5677 bsAccessorName.AsStringC()); 5680 bsAccessorName.AsStringC());
5678 if (bGetObject) { 5681 if (bGetObject) {
5679 iRet = ResolveObjects(pThis, argAccessor.get(), szSomExp.AsStringC(), 5682 iRet = ResolveObjects(pThis, argAccessor.get(), szSomExp.AsStringC(),
5680 resoveNodeRS, TRUE, szName.IsEmpty()); 5683 resoveNodeRS, TRUE, szName.IsEmpty());
5681 } 5684 }
5682 } 5685 }
5683 if (iRet > 0) { 5686 if (iRet > 0) {
5684 CFXJSE_Value** hResolveValues; 5687 CFXJSE_Value** hResolveValues;
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
5738 int32_t iIndexFlags = args.GetInt32(3); 5741 int32_t iIndexFlags = args.GetInt32(3);
5739 int32_t iIndexValue = 0; 5742 int32_t iIndexValue = 0;
5740 if (argc > 4) { 5743 if (argc > 4) {
5741 bIsStar = FALSE; 5744 bIsStar = FALSE;
5742 std::unique_ptr<CFXJSE_Value> argIndex = args.GetValue(4); 5745 std::unique_ptr<CFXJSE_Value> argIndex = args.GetValue(4);
5743 iIndexValue = ValueToInteger(pThis, argIndex.get()); 5746 iIndexValue = ValueToInteger(pThis, argIndex.get());
5744 } 5747 }
5745 CFX_ByteString szSomExp; 5748 CFX_ByteString szSomExp;
5746 GenerateSomExpression(szName.AsStringC(), iIndexFlags, iIndexValue, bIsStar, 5749 GenerateSomExpression(szName.AsStringC(), iIndexFlags, iIndexValue, bIsStar,
5747 szSomExp); 5750 szSomExp);
5748 if (FXJSE_Value_IsArray(argAccessor.get())) { 5751 if (CFXJSE_Value::IsArray(argAccessor.get())) {
5749 std::unique_ptr<CFXJSE_Value> pLengthValue(new CFXJSE_Value(pIsolate)); 5752 std::unique_ptr<CFXJSE_Value> pLengthValue(new CFXJSE_Value(pIsolate));
5750 argAccessor->GetObjectProperty("length", pLengthValue.get()); 5753 argAccessor->GetObjectProperty("length", pLengthValue.get());
5751 int32_t iLength = pLengthValue->ToInteger(); 5754 int32_t iLength = pLengthValue->ToInteger();
5752 int32_t iCounter = 0; 5755 int32_t iCounter = 0;
5753 CFXJSE_Value*** hResolveValues = FX_Alloc(CFXJSE_Value**, iLength - 2); 5756 CFXJSE_Value*** hResolveValues = FX_Alloc(CFXJSE_Value**, iLength - 2);
5754 int32_t* iSizes = FX_Alloc(int32_t, iLength - 2); 5757 int32_t* iSizes = FX_Alloc(int32_t, iLength - 2);
5755 std::unique_ptr<CFXJSE_Value> hJSObjValue(new CFXJSE_Value(pIsolate)); 5758 std::unique_ptr<CFXJSE_Value> hJSObjValue(new CFXJSE_Value(pIsolate));
5756 FX_BOOL bAttribute = FALSE; 5759 FX_BOOL bAttribute = FALSE;
5757 for (int32_t i = 2; i < iLength; i++) { 5760 for (int32_t i = 2; i < iLength; i++) {
5758 argAccessor->GetObjectPropertyByIdx(i, hJSObjValue.get()); 5761 argAccessor->GetObjectPropertyByIdx(i, hJSObjValue.get());
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
5802 for (int32_t j = 0; j < iSizes[i]; j++) 5805 for (int32_t j = 0; j < iSizes[i]; j++)
5803 delete hResolveValues[i][j]; 5806 delete hResolveValues[i][j];
5804 5807
5805 FX_Free(hResolveValues[i]); 5808 FX_Free(hResolveValues[i]);
5806 } 5809 }
5807 FX_Free(hResolveValues); 5810 FX_Free(hResolveValues);
5808 FX_Free(iSizes); 5811 FX_Free(iSizes);
5809 } else { 5812 } else {
5810 XFA_RESOLVENODE_RS resoveNodeRS; 5813 XFA_RESOLVENODE_RS resoveNodeRS;
5811 int32_t iRet = 0; 5814 int32_t iRet = 0;
5812 if (FXJSE_Value_IsObject(argAccessor.get()) || 5815 if (CFXJSE_Value::IsObject(argAccessor.get()) ||
5813 (FXJSE_Value_IsNull(argAccessor.get()) && bsAccessorName.IsEmpty())) { 5816 (CFXJSE_Value::IsNull(argAccessor.get()) &&
5817 bsAccessorName.IsEmpty())) {
5814 iRet = ResolveObjects(pThis, argAccessor.get(), szSomExp.AsStringC(), 5818 iRet = ResolveObjects(pThis, argAccessor.get(), szSomExp.AsStringC(),
5815 resoveNodeRS, FALSE); 5819 resoveNodeRS, FALSE);
5816 } else if (!FXJSE_Value_IsObject(argAccessor.get()) && 5820 } else if (!CFXJSE_Value::IsObject(argAccessor.get()) &&
5817 !bsAccessorName.IsEmpty()) { 5821 !bsAccessorName.IsEmpty()) {
5818 FX_BOOL bGetObject = GetObjectByName(pThis, argAccessor.get(), 5822 FX_BOOL bGetObject = GetObjectByName(pThis, argAccessor.get(),
5819 bsAccessorName.AsStringC()); 5823 bsAccessorName.AsStringC());
5820 if (bGetObject) { 5824 if (bGetObject) {
5821 iRet = ResolveObjects(pThis, argAccessor.get(), szSomExp.AsStringC(), 5825 iRet = ResolveObjects(pThis, argAccessor.get(), szSomExp.AsStringC(),
5822 resoveNodeRS, FALSE); 5826 resoveNodeRS, FALSE);
5823 } 5827 }
5824 } 5828 }
5825 if (iRet > 0) { 5829 if (iRet > 0) {
5826 CFXJSE_Value** hResolveValues; 5830 CFXJSE_Value** hResolveValues;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
5896 pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Eval"); 5900 pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Eval");
5897 } 5901 }
5898 } 5902 }
5899 5903
5900 // static 5904 // static
5901 void CXFA_FM2JSContext::is_fm_object(CFXJSE_Value* pThis, 5905 void CXFA_FM2JSContext::is_fm_object(CFXJSE_Value* pThis,
5902 const CFX_ByteStringC& szFuncName, 5906 const CFX_ByteStringC& szFuncName,
5903 CFXJSE_Arguments& args) { 5907 CFXJSE_Arguments& args) {
5904 if (args.GetLength() == 1) { 5908 if (args.GetLength() == 1) {
5905 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); 5909 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0);
5906 args.GetReturnValue()->SetBoolean(FXJSE_Value_IsObject(argOne.get())); 5910 args.GetReturnValue()->SetBoolean(CFXJSE_Value::IsObject(argOne.get()));
5907 } else { 5911 } else {
5908 args.GetReturnValue()->SetBoolean(FALSE); 5912 args.GetReturnValue()->SetBoolean(FALSE);
5909 } 5913 }
5910 } 5914 }
5911 5915
5912 // static 5916 // static
5913 void CXFA_FM2JSContext::is_fm_array(CFXJSE_Value* pThis, 5917 void CXFA_FM2JSContext::is_fm_array(CFXJSE_Value* pThis,
5914 const CFX_ByteStringC& szFuncName, 5918 const CFX_ByteStringC& szFuncName,
5915 CFXJSE_Arguments& args) { 5919 CFXJSE_Arguments& args) {
5916 if (args.GetLength() == 1) { 5920 if (args.GetLength() == 1) {
5917 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); 5921 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0);
5918 FX_BOOL bIsArray = FXJSE_Value_IsArray(argOne.get()); 5922 FX_BOOL bIsArray = CFXJSE_Value::IsArray(argOne.get());
5919 args.GetReturnValue()->SetBoolean(bIsArray); 5923 args.GetReturnValue()->SetBoolean(bIsArray);
5920 } else { 5924 } else {
5921 args.GetReturnValue()->SetBoolean(FALSE); 5925 args.GetReturnValue()->SetBoolean(FALSE);
5922 } 5926 }
5923 } 5927 }
5924 5928
5925 // static 5929 // static
5926 void CXFA_FM2JSContext::get_fm_value(CFXJSE_Value* pThis, 5930 void CXFA_FM2JSContext::get_fm_value(CFXJSE_Value* pThis,
5927 const CFX_ByteStringC& szFuncName, 5931 const CFX_ByteStringC& szFuncName,
5928 CFXJSE_Arguments& args) { 5932 CFXJSE_Arguments& args) {
5929 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); 5933 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr);
5930 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); 5934 v8::Isolate* pIsolate = pContext->GetScriptRuntime();
5931 if (args.GetLength() == 1) { 5935 if (args.GetLength() == 1) {
5932 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); 5936 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0);
5933 if (FXJSE_Value_IsArray(argOne.get())) { 5937 if (CFXJSE_Value::IsArray(argOne.get())) {
5934 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 5938 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
5935 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 5939 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
5936 argOne->GetObjectPropertyByIdx(1, propertyValue.get()); 5940 argOne->GetObjectPropertyByIdx(1, propertyValue.get());
5937 argOne->GetObjectPropertyByIdx(2, jsObjectValue.get()); 5941 argOne->GetObjectPropertyByIdx(2, jsObjectValue.get());
5938 if (FXJSE_Value_IsNull(propertyValue.get())) { 5942 if (CFXJSE_Value::IsNull(propertyValue.get())) {
5939 GetObjectDefaultValue(jsObjectValue.get(), args.GetReturnValue()); 5943 GetObjectDefaultValue(jsObjectValue.get(), args.GetReturnValue());
5940 } else { 5944 } else {
5941 CFX_ByteString propertyStr; 5945 CFX_ByteString propertyStr;
5942 propertyValue->ToString(propertyStr); 5946 propertyValue->ToString(propertyStr);
5943 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(), 5947 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(),
5944 args.GetReturnValue()); 5948 args.GetReturnValue());
5945 } 5949 }
5946 } else if (FXJSE_Value_IsObject(argOne.get())) { 5950 } else if (CFXJSE_Value::IsObject(argOne.get())) {
5947 GetObjectDefaultValue(argOne.get(), args.GetReturnValue()); 5951 GetObjectDefaultValue(argOne.get(), args.GetReturnValue());
5948 } else { 5952 } else {
5949 args.GetReturnValue()->Assign(argOne.get()); 5953 args.GetReturnValue()->Assign(argOne.get());
5950 } 5954 }
5951 } else { 5955 } else {
5952 pContext->ThrowException(XFA_IDS_COMPILER_ERROR); 5956 pContext->ThrowException(XFA_IDS_COMPILER_ERROR);
5953 } 5957 }
5954 } 5958 }
5955 5959
5956 // static 5960 // static
5957 void CXFA_FM2JSContext::get_fm_jsobj(CFXJSE_Value* pThis, 5961 void CXFA_FM2JSContext::get_fm_jsobj(CFXJSE_Value* pThis,
5958 const CFX_ByteStringC& szFuncName, 5962 const CFX_ByteStringC& szFuncName,
5959 CFXJSE_Arguments& args) { 5963 CFXJSE_Arguments& args) {
5960 if (args.GetLength() == 1) { 5964 if (args.GetLength() == 1) {
5961 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); 5965 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0);
5962 if (FXJSE_Value_IsArray(argOne.get())) { 5966 if (CFXJSE_Value::IsArray(argOne.get())) {
5963 #ifndef NDEBUG 5967 #ifndef NDEBUG
5964 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); 5968 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr);
5965 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); 5969 v8::Isolate* pIsolate = pContext->GetScriptRuntime();
5966 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 5970 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
5967 argOne->GetObjectProperty("length", lengthValue.get()); 5971 argOne->GetObjectProperty("length", lengthValue.get());
5968 ASSERT(lengthValue->ToInteger() >= 3); 5972 ASSERT(lengthValue->ToInteger() >= 3);
5969 #endif 5973 #endif
5970 argOne->GetObjectPropertyByIdx(2, args.GetReturnValue()); 5974 argOne->GetObjectPropertyByIdx(2, args.GetReturnValue());
5971 } else { 5975 } else {
5972 args.GetReturnValue()->Assign(argOne.get()); 5976 args.GetReturnValue()->Assign(argOne.get());
5973 } 5977 }
5974 } else { 5978 } else {
5975 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); 5979 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr);
5976 pContext->ThrowException(XFA_IDS_COMPILER_ERROR); 5980 pContext->ThrowException(XFA_IDS_COMPILER_ERROR);
5977 } 5981 }
5978 } 5982 }
5979 5983
5980 // static 5984 // static
5981 void CXFA_FM2JSContext::fm_var_filter(CFXJSE_Value* pThis, 5985 void CXFA_FM2JSContext::fm_var_filter(CFXJSE_Value* pThis,
5982 const CFX_ByteStringC& szFuncName, 5986 const CFX_ByteStringC& szFuncName,
5983 CFXJSE_Arguments& args) { 5987 CFXJSE_Arguments& args) {
5984 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); 5988 CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr);
5985 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); 5989 v8::Isolate* pIsolate = pContext->GetScriptRuntime();
5986 if (args.GetLength() == 1) { 5990 if (args.GetLength() == 1) {
5987 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); 5991 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0);
5988 if (FXJSE_Value_IsArray(argOne.get())) { 5992 if (CFXJSE_Value::IsArray(argOne.get())) {
5989 #ifndef NDEBUG 5993 #ifndef NDEBUG
5990 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 5994 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
5991 argOne->GetObjectProperty("length", lengthValue.get()); 5995 argOne->GetObjectProperty("length", lengthValue.get());
5992 ASSERT(lengthValue->ToInteger() >= 3); 5996 ASSERT(lengthValue->ToInteger() >= 3);
5993 #endif 5997 #endif
5994 std::unique_ptr<CFXJSE_Value> flagsValue(new CFXJSE_Value(pIsolate)); 5998 std::unique_ptr<CFXJSE_Value> flagsValue(new CFXJSE_Value(pIsolate));
5995 argOne->GetObjectPropertyByIdx(0, flagsValue.get()); 5999 argOne->GetObjectPropertyByIdx(0, flagsValue.get());
5996 int32_t iFlags = flagsValue->ToInteger(); 6000 int32_t iFlags = flagsValue->ToInteger();
5997 if (iFlags == 4) { 6001 if (iFlags == 4) {
5998 CFXJSE_Value* rgValues[3]; 6002 CFXJSE_Value* rgValues[3];
5999 for (int32_t i = 0; i < 3; i++) 6003 for (int32_t i = 0; i < 3; i++)
6000 rgValues[i] = new CFXJSE_Value(pIsolate); 6004 rgValues[i] = new CFXJSE_Value(pIsolate);
6001 6005
6002 rgValues[0]->SetInteger(3); 6006 rgValues[0]->SetInteger(3);
6003 rgValues[1]->SetNull(); 6007 rgValues[1]->SetNull();
6004 rgValues[2]->SetNull(); 6008 rgValues[2]->SetNull();
6005 args.GetReturnValue()->SetArray(3, rgValues); 6009 args.GetReturnValue()->SetArray(3, rgValues);
6006 for (int32_t i = 0; i < 3; i++) 6010 for (int32_t i = 0; i < 3; i++)
6007 delete rgValues[i]; 6011 delete rgValues[i];
6008 } else if (iFlags == 3) { 6012 } else if (iFlags == 3) {
6009 std::unique_ptr<CFXJSE_Value> objectValue(new CFXJSE_Value(pIsolate)); 6013 std::unique_ptr<CFXJSE_Value> objectValue(new CFXJSE_Value(pIsolate));
6010 argOne->GetObjectPropertyByIdx(2, objectValue.get()); 6014 argOne->GetObjectPropertyByIdx(2, objectValue.get());
6011 if (!FXJSE_Value_IsNull(objectValue.get())) { 6015 if (!CFXJSE_Value::IsNull(objectValue.get())) {
6012 args.GetReturnValue()->Assign(argOne.get()); 6016 args.GetReturnValue()->Assign(argOne.get());
6013 } else { 6017 } else {
6014 pContext->ThrowException(XFA_IDS_COMPILER_ERROR); 6018 pContext->ThrowException(XFA_IDS_COMPILER_ERROR);
6015 } 6019 }
6016 } else { 6020 } else {
6017 std::unique_ptr<CFXJSE_Value> simpleValue = 6021 std::unique_ptr<CFXJSE_Value> simpleValue =
6018 GetSimpleValue(pThis, args, 0); 6022 GetSimpleValue(pThis, args, 0);
6019 args.GetReturnValue()->Assign(simpleValue.get()); 6023 args.GetReturnValue()->Assign(simpleValue.get());
6020 } 6024 }
6021 } else { 6025 } else {
6022 std::unique_ptr<CFXJSE_Value> simpleValue = 6026 std::unique_ptr<CFXJSE_Value> simpleValue =
6023 GetSimpleValue(pThis, args, 0); 6027 GetSimpleValue(pThis, args, 0);
6024 args.GetReturnValue()->Assign(simpleValue.get()); 6028 args.GetReturnValue()->Assign(simpleValue.get());
6025 } 6029 }
6026 } else { 6030 } else {
6027 pContext->ThrowException(XFA_IDS_COMPILER_ERROR); 6031 pContext->ThrowException(XFA_IDS_COMPILER_ERROR);
6028 } 6032 }
6029 } 6033 }
6030 6034
6031 // static 6035 // static
6032 void CXFA_FM2JSContext::concat_fm_object(CFXJSE_Value* pThis, 6036 void CXFA_FM2JSContext::concat_fm_object(CFXJSE_Value* pThis,
6033 const CFX_ByteStringC& szFuncName, 6037 const CFX_ByteStringC& szFuncName,
6034 CFXJSE_Arguments& args) { 6038 CFXJSE_Arguments& args) {
6035 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime(); 6039 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime();
6036 uint32_t iLength = 0; 6040 uint32_t iLength = 0;
6037 int32_t argc = args.GetLength(); 6041 int32_t argc = args.GetLength();
6038 std::vector<std::unique_ptr<CFXJSE_Value>> argValues; 6042 std::vector<std::unique_ptr<CFXJSE_Value>> argValues;
6039 for (int32_t i = 0; i < argc; i++) { 6043 for (int32_t i = 0; i < argc; i++) {
6040 argValues.push_back(args.GetValue(i)); 6044 argValues.push_back(args.GetValue(i));
6041 if (FXJSE_Value_IsArray(argValues[i].get())) { 6045 if (CFXJSE_Value::IsArray(argValues[i].get())) {
6042 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 6046 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
6043 argValues[i]->GetObjectProperty("length", lengthValue.get()); 6047 argValues[i]->GetObjectProperty("length", lengthValue.get());
6044 int32_t length = lengthValue->ToInteger(); 6048 int32_t length = lengthValue->ToInteger();
6045 iLength = iLength + ((length > 2) ? (length - 2) : 0); 6049 iLength = iLength + ((length > 2) ? (length - 2) : 0);
6046 } 6050 }
6047 iLength += 1; 6051 iLength += 1;
6048 } 6052 }
6049 CFXJSE_Value** returnValues = FX_Alloc(CFXJSE_Value*, iLength); 6053 CFXJSE_Value** returnValues = FX_Alloc(CFXJSE_Value*, iLength);
6050 for (int32_t i = 0; i < (int32_t)iLength; i++) 6054 for (int32_t i = 0; i < (int32_t)iLength; i++)
6051 returnValues[i] = new CFXJSE_Value(pIsolate); 6055 returnValues[i] = new CFXJSE_Value(pIsolate);
6052 6056
6053 int32_t index = 0; 6057 int32_t index = 0;
6054 for (int32_t i = 0; i < argc; i++) { 6058 for (int32_t i = 0; i < argc; i++) {
6055 if (FXJSE_Value_IsArray(argValues[i].get())) { 6059 if (CFXJSE_Value::IsArray(argValues[i].get())) {
6056 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 6060 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
6057 argValues[i]->GetObjectProperty("length", lengthValue.get()); 6061 argValues[i]->GetObjectProperty("length", lengthValue.get());
6058 int32_t length = lengthValue->ToInteger(); 6062 int32_t length = lengthValue->ToInteger();
6059 for (int32_t j = 2; j < length; j++) { 6063 for (int32_t j = 2; j < length; j++) {
6060 argValues[i]->GetObjectPropertyByIdx(j, returnValues[index]); 6064 argValues[i]->GetObjectPropertyByIdx(j, returnValues[index]);
6061 index++; 6065 index++;
6062 } 6066 }
6063 } 6067 }
6064 returnValues[index]->Assign(argValues[i].get()); 6068 returnValues[index]->Assign(argValues[i].get());
6065 index++; 6069 index++;
6066 } 6070 }
6067 args.GetReturnValue()->SetArray(iLength, returnValues); 6071 args.GetReturnValue()->SetArray(iLength, returnValues);
6068 for (int32_t i = 0; i < (int32_t)iLength; i++) 6072 for (int32_t i = 0; i < (int32_t)iLength; i++)
6069 delete returnValues[i]; 6073 delete returnValues[i];
6070 6074
6071 FX_Free(returnValues); 6075 FX_Free(returnValues);
6072 } 6076 }
6073 6077
6074 // static 6078 // static
6075 std::unique_ptr<CFXJSE_Value> CXFA_FM2JSContext::GetSimpleValue( 6079 std::unique_ptr<CFXJSE_Value> CXFA_FM2JSContext::GetSimpleValue(
6076 CFXJSE_Value* pThis, 6080 CFXJSE_Value* pThis,
6077 CFXJSE_Arguments& args, 6081 CFXJSE_Arguments& args,
6078 uint32_t index) { 6082 uint32_t index) {
6079 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime(); 6083 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime();
6080 ASSERT(index < (uint32_t)args.GetLength()); 6084 ASSERT(index < (uint32_t)args.GetLength());
6081 std::unique_ptr<CFXJSE_Value> argIndex = args.GetValue(index); 6085 std::unique_ptr<CFXJSE_Value> argIndex = args.GetValue(index);
6082 if (FXJSE_Value_IsArray(argIndex.get())) { 6086 if (CFXJSE_Value::IsArray(argIndex.get())) {
6083 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 6087 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
6084 argIndex->GetObjectProperty("length", lengthValue.get()); 6088 argIndex->GetObjectProperty("length", lengthValue.get());
6085 int32_t iLength = lengthValue->ToInteger(); 6089 int32_t iLength = lengthValue->ToInteger();
6086 std::unique_ptr<CFXJSE_Value> simpleValue(new CFXJSE_Value(pIsolate)); 6090 std::unique_ptr<CFXJSE_Value> simpleValue(new CFXJSE_Value(pIsolate));
6087 if (iLength > 2) { 6091 if (iLength > 2) {
6088 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 6092 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
6089 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 6093 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
6090 argIndex->GetObjectPropertyByIdx(1, propertyValue.get()); 6094 argIndex->GetObjectPropertyByIdx(1, propertyValue.get());
6091 argIndex->GetObjectPropertyByIdx(2, jsObjectValue.get()); 6095 argIndex->GetObjectPropertyByIdx(2, jsObjectValue.get());
6092 if (FXJSE_Value_IsNull(propertyValue.get())) { 6096 if (CFXJSE_Value::IsNull(propertyValue.get())) {
6093 GetObjectDefaultValue(jsObjectValue.get(), simpleValue.get()); 6097 GetObjectDefaultValue(jsObjectValue.get(), simpleValue.get());
6094 } else { 6098 } else {
6095 CFX_ByteString propertyStr; 6099 CFX_ByteString propertyStr;
6096 propertyValue->ToString(propertyStr); 6100 propertyValue->ToString(propertyStr);
6097 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(), 6101 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(),
6098 simpleValue.get()); 6102 simpleValue.get());
6099 } 6103 }
6100 } else { 6104 } else {
6101 simpleValue.get()->SetUndefined(); 6105 simpleValue.get()->SetUndefined();
6102 } 6106 }
6103 return simpleValue; 6107 return simpleValue;
6104 } else if (FXJSE_Value_IsObject(argIndex.get())) { 6108 } else if (CFXJSE_Value::IsObject(argIndex.get())) {
6105 std::unique_ptr<CFXJSE_Value> defaultValue(new CFXJSE_Value(pIsolate)); 6109 std::unique_ptr<CFXJSE_Value> defaultValue(new CFXJSE_Value(pIsolate));
6106 GetObjectDefaultValue(argIndex.get(), defaultValue.get()); 6110 GetObjectDefaultValue(argIndex.get(), defaultValue.get());
6107 return defaultValue; 6111 return defaultValue;
6108 } else { 6112 } else {
6109 return argIndex; 6113 return argIndex;
6110 } 6114 }
6111 } 6115 }
6112 6116
6113 // static 6117 // static
6114 FX_BOOL CXFA_FM2JSContext::ValueIsNull(CFXJSE_Value* pThis, CFXJSE_Value* arg) { 6118 FX_BOOL CXFA_FM2JSContext::ValueIsNull(CFXJSE_Value* pThis, CFXJSE_Value* arg) {
6115 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime(); 6119 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime();
6116 FX_BOOL isNull = FALSE; 6120 FX_BOOL isNull = FALSE;
6117 if (FXJSE_Value_IsNull(arg)) { 6121 if (CFXJSE_Value::IsNull(arg)) {
6118 isNull = TRUE; 6122 isNull = TRUE;
6119 } else if (FXJSE_Value_IsArray(arg)) { 6123 } else if (CFXJSE_Value::IsArray(arg)) {
6120 int32_t iLength = hvalue_get_array_length(pThis, arg); 6124 int32_t iLength = hvalue_get_array_length(pThis, arg);
6121 if (iLength > 2) { 6125 if (iLength > 2) {
6122 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 6126 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
6123 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 6127 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
6124 arg->GetObjectPropertyByIdx(1, propertyValue.get()); 6128 arg->GetObjectPropertyByIdx(1, propertyValue.get());
6125 arg->GetObjectPropertyByIdx(2, jsObjectValue.get()); 6129 arg->GetObjectPropertyByIdx(2, jsObjectValue.get());
6126 if (FXJSE_Value_IsNull(propertyValue.get())) { 6130 if (CFXJSE_Value::IsNull(propertyValue.get())) {
6127 std::unique_ptr<CFXJSE_Value> defaultValue(new CFXJSE_Value(pIsolate)); 6131 std::unique_ptr<CFXJSE_Value> defaultValue(new CFXJSE_Value(pIsolate));
6128 GetObjectDefaultValue(jsObjectValue.get(), defaultValue.get()); 6132 GetObjectDefaultValue(jsObjectValue.get(), defaultValue.get());
6129 if (FXJSE_Value_IsNull(defaultValue.get())) { 6133 if (CFXJSE_Value::IsNull(defaultValue.get())) {
6130 isNull = TRUE; 6134 isNull = TRUE;
6131 } 6135 }
6132 } else { 6136 } else {
6133 CFX_ByteString propertyStr; 6137 CFX_ByteString propertyStr;
6134 propertyValue->ToString(propertyStr); 6138 propertyValue->ToString(propertyStr);
6135 std::unique_ptr<CFXJSE_Value> newPropertyValue( 6139 std::unique_ptr<CFXJSE_Value> newPropertyValue(
6136 new CFXJSE_Value(pIsolate)); 6140 new CFXJSE_Value(pIsolate));
6137 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(), 6141 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(),
6138 newPropertyValue.get()); 6142 newPropertyValue.get());
6139 if (FXJSE_Value_IsNull(newPropertyValue.get())) { 6143 if (CFXJSE_Value::IsNull(newPropertyValue.get())) {
6140 isNull = TRUE; 6144 isNull = TRUE;
6141 } 6145 }
6142 } 6146 }
6143 } else { 6147 } else {
6144 isNull = TRUE; 6148 isNull = TRUE;
6145 } 6149 }
6146 } else if (FXJSE_Value_IsObject(arg)) { 6150 } else if (CFXJSE_Value::IsObject(arg)) {
6147 std::unique_ptr<CFXJSE_Value> defaultValue(new CFXJSE_Value(pIsolate)); 6151 std::unique_ptr<CFXJSE_Value> defaultValue(new CFXJSE_Value(pIsolate));
6148 GetObjectDefaultValue(arg, defaultValue.get()); 6152 GetObjectDefaultValue(arg, defaultValue.get());
6149 if (FXJSE_Value_IsNull(defaultValue.get())) { 6153 if (CFXJSE_Value::IsNull(defaultValue.get())) {
6150 isNull = TRUE; 6154 isNull = TRUE;
6151 } 6155 }
6152 } 6156 }
6153 return isNull; 6157 return isNull;
6154 } 6158 }
6155 6159
6156 // static 6160 // static
6157 int32_t CXFA_FM2JSContext::hvalue_get_array_length(CFXJSE_Value* pThis, 6161 int32_t CXFA_FM2JSContext::hvalue_get_array_length(CFXJSE_Value* pThis,
6158 CFXJSE_Value* arg) { 6162 CFXJSE_Value* arg) {
6159 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime(); 6163 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime();
6160 int32_t iLength = 0; 6164 int32_t iLength = 0;
6161 if (FXJSE_Value_IsArray(arg)) { 6165 if (CFXJSE_Value::IsArray(arg)) {
6162 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 6166 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
6163 arg->GetObjectProperty("length", lengthValue.get()); 6167 arg->GetObjectProperty("length", lengthValue.get());
6164 iLength = lengthValue->ToInteger(); 6168 iLength = lengthValue->ToInteger();
6165 } 6169 }
6166 return iLength; 6170 return iLength;
6167 } 6171 }
6168 6172
6169 // static 6173 // static
6170 FX_BOOL CXFA_FM2JSContext::simpleValueCompare(CFXJSE_Value* pThis, 6174 FX_BOOL CXFA_FM2JSContext::simpleValueCompare(CFXJSE_Value* pThis,
6171 CFXJSE_Value* firstValue, 6175 CFXJSE_Value* firstValue,
6172 CFXJSE_Value* secondValue) { 6176 CFXJSE_Value* secondValue) {
6173 FX_BOOL bReturn = FALSE; 6177 FX_BOOL bReturn = FALSE;
6174 if (FXJSE_Value_IsUTF8String(firstValue)) { 6178 if (CFXJSE_Value::IsUTF8String(firstValue)) {
6175 CFX_ByteString firstString, secondString; 6179 CFX_ByteString firstString, secondString;
6176 ValueToUTF8String(firstValue, firstString); 6180 ValueToUTF8String(firstValue, firstString);
6177 ValueToUTF8String(secondValue, secondString); 6181 ValueToUTF8String(secondValue, secondString);
6178 bReturn = firstString == secondString; 6182 bReturn = firstString == secondString;
6179 } else if (FXJSE_Value_IsNumber(firstValue)) { 6183 } else if (CFXJSE_Value::IsNumber(firstValue)) {
6180 FX_FLOAT first = ValueToFloat(pThis, firstValue); 6184 FX_FLOAT first = ValueToFloat(pThis, firstValue);
6181 FX_FLOAT second = ValueToFloat(pThis, secondValue); 6185 FX_FLOAT second = ValueToFloat(pThis, secondValue);
6182 bReturn = (first == second); 6186 bReturn = (first == second);
6183 } else if (FXJSE_Value_IsBoolean(firstValue)) { 6187 } else if (CFXJSE_Value::IsBoolean(firstValue)) {
6184 bReturn = (firstValue->ToBoolean() == secondValue->ToBoolean()); 6188 bReturn = (firstValue->ToBoolean() == secondValue->ToBoolean());
6185 } else if (FXJSE_Value_IsNull(firstValue) && 6189 } else if (CFXJSE_Value::IsNull(firstValue) &&
6186 FXJSE_Value_IsNull(secondValue)) { 6190 CFXJSE_Value::IsNull(secondValue)) {
6187 bReturn = TRUE; 6191 bReturn = TRUE;
6188 } 6192 }
6189 return bReturn; 6193 return bReturn;
6190 } 6194 }
6191 6195
6192 // static 6196 // static
6193 void CXFA_FM2JSContext::unfoldArgs(CFXJSE_Value* pThis, 6197 void CXFA_FM2JSContext::unfoldArgs(CFXJSE_Value* pThis,
6194 CFXJSE_Arguments& args, 6198 CFXJSE_Arguments& args,
6195 CFXJSE_Value**& resultValues, 6199 CFXJSE_Value**& resultValues,
6196 int32_t& iCount, 6200 int32_t& iCount,
6197 int32_t iStart) { 6201 int32_t iStart) {
6198 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime(); 6202 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime();
6199 iCount = 0; 6203 iCount = 0;
6200 int32_t argc = args.GetLength(); 6204 int32_t argc = args.GetLength();
6201 std::vector<std::unique_ptr<CFXJSE_Value>> argsValue; 6205 std::vector<std::unique_ptr<CFXJSE_Value>> argsValue;
6202 for (int32_t i = 0; i < argc - iStart; i++) { 6206 for (int32_t i = 0; i < argc - iStart; i++) {
6203 argsValue.push_back(args.GetValue(i + iStart)); 6207 argsValue.push_back(args.GetValue(i + iStart));
6204 if (FXJSE_Value_IsArray(argsValue[i].get())) { 6208 if (CFXJSE_Value::IsArray(argsValue[i].get())) {
6205 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 6209 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
6206 argsValue[i]->GetObjectProperty("length", lengthValue.get()); 6210 argsValue[i]->GetObjectProperty("length", lengthValue.get());
6207 int32_t iLength = lengthValue->ToInteger(); 6211 int32_t iLength = lengthValue->ToInteger();
6208 iCount += ((iLength > 2) ? (iLength - 2) : 0); 6212 iCount += ((iLength > 2) ? (iLength - 2) : 0);
6209 } else { 6213 } else {
6210 iCount += 1; 6214 iCount += 1;
6211 } 6215 }
6212 } 6216 }
6213 resultValues = FX_Alloc(CFXJSE_Value*, iCount); 6217 resultValues = FX_Alloc(CFXJSE_Value*, iCount);
6214 for (int32_t i = 0; i < iCount; i++) 6218 for (int32_t i = 0; i < iCount; i++)
6215 resultValues[i] = new CFXJSE_Value(pIsolate); 6219 resultValues[i] = new CFXJSE_Value(pIsolate);
6216 6220
6217 int32_t index = 0; 6221 int32_t index = 0;
6218 for (int32_t i = 0; i < argc - iStart; i++) { 6222 for (int32_t i = 0; i < argc - iStart; i++) {
6219 if (FXJSE_Value_IsArray(argsValue[i].get())) { 6223 if (CFXJSE_Value::IsArray(argsValue[i].get())) {
6220 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 6224 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
6221 argsValue[i]->GetObjectProperty("length", lengthValue.get()); 6225 argsValue[i]->GetObjectProperty("length", lengthValue.get());
6222 int32_t iLength = lengthValue->ToInteger(); 6226 int32_t iLength = lengthValue->ToInteger();
6223 if (iLength > 2) { 6227 if (iLength > 2) {
6224 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 6228 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
6225 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 6229 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
6226 argsValue[i]->GetObjectPropertyByIdx(1, propertyValue.get()); 6230 argsValue[i]->GetObjectPropertyByIdx(1, propertyValue.get());
6227 if (FXJSE_Value_IsNull(propertyValue.get())) { 6231 if (CFXJSE_Value::IsNull(propertyValue.get())) {
6228 for (int32_t j = 2; j < iLength; j++) { 6232 for (int32_t j = 2; j < iLength; j++) {
6229 argsValue[i]->GetObjectPropertyByIdx(j, jsObjectValue.get()); 6233 argsValue[i]->GetObjectPropertyByIdx(j, jsObjectValue.get());
6230 GetObjectDefaultValue(jsObjectValue.get(), resultValues[index]); 6234 GetObjectDefaultValue(jsObjectValue.get(), resultValues[index]);
6231 index++; 6235 index++;
6232 } 6236 }
6233 } else { 6237 } else {
6234 CFX_ByteString propertyString; 6238 CFX_ByteString propertyString;
6235 propertyValue->ToString(propertyString); 6239 propertyValue->ToString(propertyString);
6236 for (int32_t j = 2; j < iLength; j++) { 6240 for (int32_t j = 2; j < iLength; j++) {
6237 argsValue[i]->GetObjectPropertyByIdx(j, jsObjectValue.get()); 6241 argsValue[i]->GetObjectPropertyByIdx(j, jsObjectValue.get());
6238 jsObjectValue->GetObjectProperty(propertyString.AsStringC(), 6242 jsObjectValue->GetObjectProperty(propertyString.AsStringC(),
6239 resultValues[index]); 6243 resultValues[index]);
6240 index++; 6244 index++;
6241 } 6245 }
6242 } 6246 }
6243 } 6247 }
6244 } else if (FXJSE_Value_IsObject(argsValue[i].get())) { 6248 } else if (CFXJSE_Value::IsObject(argsValue[i].get())) {
6245 GetObjectDefaultValue(argsValue[i].get(), resultValues[index]); 6249 GetObjectDefaultValue(argsValue[i].get(), resultValues[index]);
6246 index++; 6250 index++;
6247 } else { 6251 } else {
6248 resultValues[index]->Assign(argsValue[i].get()); 6252 resultValues[index]->Assign(argsValue[i].get());
6249 index++; 6253 index++;
6250 } 6254 }
6251 } 6255 }
6252 } 6256 }
6253 6257
6254 // static 6258 // static
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
6340 CFX_WideString wsSomExpression = CFX_WideString::FromUTF8(bsSomExp); 6344 CFX_WideString wsSomExpression = CFX_WideString::FromUTF8(bsSomExp);
6341 int32_t iRet = -1; 6345 int32_t iRet = -1;
6342 CXFA_Document* pDoc = ToJSContext(pThis, nullptr)->GetDocument(); 6346 CXFA_Document* pDoc = ToJSContext(pThis, nullptr)->GetDocument();
6343 if (!pDoc) { 6347 if (!pDoc) {
6344 return iRet; 6348 return iRet;
6345 } 6349 }
6346 CXFA_ScriptContext* pScriptContext = pDoc->GetScriptContext(); 6350 CXFA_ScriptContext* pScriptContext = pDoc->GetScriptContext();
6347 CXFA_Object* pNode = nullptr; 6351 CXFA_Object* pNode = nullptr;
6348 uint32_t dFlags = 0UL; 6352 uint32_t dFlags = 0UL;
6349 if (bdotAccessor) { 6353 if (bdotAccessor) {
6350 if (FXJSE_Value_IsNull(pRefValue)) { 6354 if (CFXJSE_Value::IsNull(pRefValue)) {
6351 pNode = pScriptContext->GetThisObject(); 6355 pNode = pScriptContext->GetThisObject();
6352 dFlags = XFA_RESOLVENODE_Siblings | XFA_RESOLVENODE_Parent; 6356 dFlags = XFA_RESOLVENODE_Siblings | XFA_RESOLVENODE_Parent;
6353 } else { 6357 } else {
6354 pNode = CXFA_ScriptContext::ToObject(pRefValue, nullptr); 6358 pNode = CXFA_ScriptContext::ToObject(pRefValue, nullptr);
6355 ASSERT(pNode); 6359 ASSERT(pNode);
6356 if (bHasNoResolveName) { 6360 if (bHasNoResolveName) {
6357 CFX_WideString wsName; 6361 CFX_WideString wsName;
6358 if (CXFA_Node* pXFANode = pNode->AsNode()) { 6362 if (CXFA_Node* pXFANode = pNode->AsNode()) {
6359 pXFANode->GetAttribute(XFA_ATTRIBUTE_Name, wsName, FALSE); 6363 pXFANode->GetAttribute(XFA_ATTRIBUTE_Name, wsName, FALSE);
6360 } 6364 }
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
6401 resultValues[i] = new CFXJSE_Value(pIsolate); 6405 resultValues[i] = new CFXJSE_Value(pIsolate);
6402 resultValues[i]->Assign( 6406 resultValues[i]->Assign(
6403 pContext->GetDocument()->GetScriptContext()->GetJSValueFromMap( 6407 pContext->GetDocument()->GetScriptContext()->GetJSValueFromMap(
6404 resoveNodeRS.nodes.GetAt(i))); 6408 resoveNodeRS.nodes.GetAt(i)));
6405 } 6409 }
6406 } else { 6410 } else {
6407 CXFA_ValueArray objectProperties(pIsolate); 6411 CXFA_ValueArray objectProperties(pIsolate);
6408 int32_t iRet = resoveNodeRS.GetAttributeResult(objectProperties); 6412 int32_t iRet = resoveNodeRS.GetAttributeResult(objectProperties);
6409 bAttribute = (iRet == 0); 6413 bAttribute = (iRet == 0);
6410 if (bAttribute) { 6414 if (bAttribute) {
6411 if (FXJSE_Value_IsObject(pParentValue)) { 6415 if (CFXJSE_Value::IsObject(pParentValue)) {
6412 iSize = 1; 6416 iSize = 1;
6413 resultValues = FX_Alloc(CFXJSE_Value*, 1); 6417 resultValues = FX_Alloc(CFXJSE_Value*, 1);
6414 resultValues[0] = new CFXJSE_Value(pIsolate); 6418 resultValues[0] = new CFXJSE_Value(pIsolate);
6415 resultValues[0]->Assign(pParentValue); 6419 resultValues[0]->Assign(pParentValue);
6416 } 6420 }
6417 } else { 6421 } else {
6418 iSize = iRet; 6422 iSize = iRet;
6419 resultValues = FX_Alloc(CFXJSE_Value*, iSize); 6423 resultValues = FX_Alloc(CFXJSE_Value*, iSize);
6420 for (int32_t i = 0; i < iSize; i++) { 6424 for (int32_t i = 0; i < iSize; i++) {
6421 resultValues[i] = new CFXJSE_Value(pIsolate); 6425 resultValues[i] = new CFXJSE_Value(pIsolate);
6422 resultValues[i]->Assign(objectProperties[i]); 6426 resultValues[i]->Assign(objectProperties[i]);
6423 } 6427 }
6424 } 6428 }
6425 } 6429 }
6426 } 6430 }
6427 6431
6428 // static 6432 // static
6429 int32_t CXFA_FM2JSContext::ValueToInteger(CFXJSE_Value* pThis, 6433 int32_t CXFA_FM2JSContext::ValueToInteger(CFXJSE_Value* pThis,
6430 CFXJSE_Value* pValue) { 6434 CFXJSE_Value* pValue) {
6431 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime(); 6435 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime();
6432 int32_t iValue = 0; 6436 int32_t iValue = 0;
6433 if (FXJSE_Value_IsArray(pValue)) { 6437 if (CFXJSE_Value::IsArray(pValue)) {
6434 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 6438 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
6435 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 6439 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
6436 std::unique_ptr<CFXJSE_Value> newPropertyValue(new CFXJSE_Value(pIsolate)); 6440 std::unique_ptr<CFXJSE_Value> newPropertyValue(new CFXJSE_Value(pIsolate));
6437 pValue->GetObjectPropertyByIdx(1, propertyValue.get()); 6441 pValue->GetObjectPropertyByIdx(1, propertyValue.get());
6438 pValue->GetObjectPropertyByIdx(2, jsObjectValue.get()); 6442 pValue->GetObjectPropertyByIdx(2, jsObjectValue.get());
6439 if (FXJSE_Value_IsNull(propertyValue.get())) { 6443 if (CFXJSE_Value::IsNull(propertyValue.get())) {
6440 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get()); 6444 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get());
6441 } else { 6445 } else {
6442 CFX_ByteString propertyStr; 6446 CFX_ByteString propertyStr;
6443 propertyValue->ToString(propertyStr); 6447 propertyValue->ToString(propertyStr);
6444 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(), 6448 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(),
6445 newPropertyValue.get()); 6449 newPropertyValue.get());
6446 } 6450 }
6447 iValue = ValueToInteger(pThis, newPropertyValue.get()); 6451 iValue = ValueToInteger(pThis, newPropertyValue.get());
6448 return iValue; 6452 return iValue;
6449 } else if (FXJSE_Value_IsObject(pValue)) { 6453 } else if (CFXJSE_Value::IsObject(pValue)) {
6450 std::unique_ptr<CFXJSE_Value> newPropertyValue(new CFXJSE_Value(pIsolate)); 6454 std::unique_ptr<CFXJSE_Value> newPropertyValue(new CFXJSE_Value(pIsolate));
6451 GetObjectDefaultValue(pValue, newPropertyValue.get()); 6455 GetObjectDefaultValue(pValue, newPropertyValue.get());
6452 iValue = ValueToInteger(pThis, newPropertyValue.get()); 6456 iValue = ValueToInteger(pThis, newPropertyValue.get());
6453 return iValue; 6457 return iValue;
6454 } else if (FXJSE_Value_IsUTF8String(pValue)) { 6458 } else if (CFXJSE_Value::IsUTF8String(pValue)) {
6455 CFX_ByteString szValue; 6459 CFX_ByteString szValue;
6456 pValue->ToString(szValue); 6460 pValue->ToString(szValue);
6457 iValue = FXSYS_atoi(szValue.c_str()); 6461 iValue = FXSYS_atoi(szValue.c_str());
6458 } else { 6462 } else {
6459 iValue = pValue->ToInteger(); 6463 iValue = pValue->ToInteger();
6460 } 6464 }
6461 return iValue; 6465 return iValue;
6462 } 6466 }
6463 6467
6464 // static 6468 // static
6465 FX_FLOAT CXFA_FM2JSContext::ValueToFloat(CFXJSE_Value* pThis, 6469 FX_FLOAT CXFA_FM2JSContext::ValueToFloat(CFXJSE_Value* pThis,
6466 CFXJSE_Value* arg) { 6470 CFXJSE_Value* arg) {
6467 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime(); 6471 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime();
6468 FX_FLOAT fRet = 0.0f; 6472 FX_FLOAT fRet = 0.0f;
6469 if (FXJSE_Value_IsArray(arg)) { 6473 if (CFXJSE_Value::IsArray(arg)) {
6470 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 6474 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
6471 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 6475 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
6472 std::unique_ptr<CFXJSE_Value> newPropertyValue(new CFXJSE_Value(pIsolate)); 6476 std::unique_ptr<CFXJSE_Value> newPropertyValue(new CFXJSE_Value(pIsolate));
6473 arg->GetObjectPropertyByIdx(1, propertyValue.get()); 6477 arg->GetObjectPropertyByIdx(1, propertyValue.get());
6474 arg->GetObjectPropertyByIdx(2, jsObjectValue.get()); 6478 arg->GetObjectPropertyByIdx(2, jsObjectValue.get());
6475 if (FXJSE_Value_IsNull(propertyValue.get())) { 6479 if (CFXJSE_Value::IsNull(propertyValue.get())) {
6476 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get()); 6480 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get());
6477 } else { 6481 } else {
6478 CFX_ByteString propertyStr; 6482 CFX_ByteString propertyStr;
6479 propertyValue->ToString(propertyStr); 6483 propertyValue->ToString(propertyStr);
6480 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(), 6484 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(),
6481 newPropertyValue.get()); 6485 newPropertyValue.get());
6482 } 6486 }
6483 fRet = ValueToFloat(pThis, newPropertyValue.get()); 6487 fRet = ValueToFloat(pThis, newPropertyValue.get());
6484 } else if (FXJSE_Value_IsObject(arg)) { 6488 } else if (CFXJSE_Value::IsObject(arg)) {
6485 std::unique_ptr<CFXJSE_Value> newPropertyValue(new CFXJSE_Value(pIsolate)); 6489 std::unique_ptr<CFXJSE_Value> newPropertyValue(new CFXJSE_Value(pIsolate));
6486 GetObjectDefaultValue(arg, newPropertyValue.get()); 6490 GetObjectDefaultValue(arg, newPropertyValue.get());
6487 fRet = ValueToFloat(pThis, newPropertyValue.get()); 6491 fRet = ValueToFloat(pThis, newPropertyValue.get());
6488 } else if (FXJSE_Value_IsUTF8String(arg)) { 6492 } else if (CFXJSE_Value::IsUTF8String(arg)) {
6489 CFX_ByteString bsOutput; 6493 CFX_ByteString bsOutput;
6490 arg->ToString(bsOutput); 6494 arg->ToString(bsOutput);
6491 fRet = (FX_FLOAT)XFA_ByteStringToDouble(bsOutput.AsStringC()); 6495 fRet = (FX_FLOAT)XFA_ByteStringToDouble(bsOutput.AsStringC());
6492 } else if (FXJSE_Value_IsUndefined(arg)) { 6496 } else if (CFXJSE_Value::IsUndefined(arg)) {
6493 fRet = 0; 6497 fRet = 0;
6494 } else { 6498 } else {
6495 fRet = arg->ToFloat(); 6499 fRet = arg->ToFloat();
6496 } 6500 }
6497 return fRet; 6501 return fRet;
6498 } 6502 }
6499 6503
6500 // static 6504 // static
6501 FX_DOUBLE CXFA_FM2JSContext::ValueToDouble(CFXJSE_Value* pThis, 6505 FX_DOUBLE CXFA_FM2JSContext::ValueToDouble(CFXJSE_Value* pThis,
6502 CFXJSE_Value* arg) { 6506 CFXJSE_Value* arg) {
6503 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime(); 6507 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime();
6504 FX_DOUBLE dRet = 0; 6508 FX_DOUBLE dRet = 0;
6505 if (FXJSE_Value_IsArray(arg)) { 6509 if (CFXJSE_Value::IsArray(arg)) {
6506 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 6510 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
6507 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 6511 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
6508 std::unique_ptr<CFXJSE_Value> newPropertyValue(new CFXJSE_Value(pIsolate)); 6512 std::unique_ptr<CFXJSE_Value> newPropertyValue(new CFXJSE_Value(pIsolate));
6509 arg->GetObjectPropertyByIdx(1, propertyValue.get()); 6513 arg->GetObjectPropertyByIdx(1, propertyValue.get());
6510 arg->GetObjectPropertyByIdx(2, jsObjectValue.get()); 6514 arg->GetObjectPropertyByIdx(2, jsObjectValue.get());
6511 if (FXJSE_Value_IsNull(propertyValue.get())) { 6515 if (CFXJSE_Value::IsNull(propertyValue.get())) {
6512 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get()); 6516 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get());
6513 } else { 6517 } else {
6514 CFX_ByteString propertyStr; 6518 CFX_ByteString propertyStr;
6515 propertyValue->ToString(propertyStr); 6519 propertyValue->ToString(propertyStr);
6516 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(), 6520 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(),
6517 newPropertyValue.get()); 6521 newPropertyValue.get());
6518 } 6522 }
6519 dRet = ValueToDouble(pThis, newPropertyValue.get()); 6523 dRet = ValueToDouble(pThis, newPropertyValue.get());
6520 } else if (FXJSE_Value_IsObject(arg)) { 6524 } else if (CFXJSE_Value::IsObject(arg)) {
6521 std::unique_ptr<CFXJSE_Value> newPropertyValue(new CFXJSE_Value(pIsolate)); 6525 std::unique_ptr<CFXJSE_Value> newPropertyValue(new CFXJSE_Value(pIsolate));
6522 GetObjectDefaultValue(arg, newPropertyValue.get()); 6526 GetObjectDefaultValue(arg, newPropertyValue.get());
6523 dRet = ValueToDouble(pThis, newPropertyValue.get()); 6527 dRet = ValueToDouble(pThis, newPropertyValue.get());
6524 } else if (FXJSE_Value_IsUTF8String(arg)) { 6528 } else if (CFXJSE_Value::IsUTF8String(arg)) {
6525 CFX_ByteString bsOutput; 6529 CFX_ByteString bsOutput;
6526 arg->ToString(bsOutput); 6530 arg->ToString(bsOutput);
6527 dRet = XFA_ByteStringToDouble(bsOutput.AsStringC()); 6531 dRet = XFA_ByteStringToDouble(bsOutput.AsStringC());
6528 } else if (FXJSE_Value_IsUndefined(arg)) { 6532 } else if (CFXJSE_Value::IsUndefined(arg)) {
6529 dRet = 0; 6533 dRet = 0;
6530 } else { 6534 } else {
6531 dRet = arg->ToDouble(); 6535 dRet = arg->ToDouble();
6532 } 6536 }
6533 return dRet; 6537 return dRet;
6534 } 6538 }
6535 6539
6536 // static. 6540 // static.
6537 double CXFA_FM2JSContext::ExtractDouble(CFXJSE_Value* pThis, 6541 double CXFA_FM2JSContext::ExtractDouble(CFXJSE_Value* pThis,
6538 CFXJSE_Value* src, 6542 CFXJSE_Value* src,
6539 bool* ret) { 6543 bool* ret) {
6540 ASSERT(ret); 6544 ASSERT(ret);
6541 6545
6542 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime(); 6546 v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime();
6543 *ret = true; 6547 *ret = true;
6544 6548
6545 if (FXJSE_Value_IsArray(src)) { 6549 if (CFXJSE_Value::IsArray(src)) {
6546 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 6550 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
6547 src->GetObjectProperty("length", lengthValue.get()); 6551 src->GetObjectProperty("length", lengthValue.get());
6548 int32_t iLength = lengthValue->ToInteger(); 6552 int32_t iLength = lengthValue->ToInteger();
6549 if (iLength <= 2) { 6553 if (iLength <= 2) {
6550 *ret = false; 6554 *ret = false;
6551 return 0.0; 6555 return 0.0;
6552 } 6556 }
6553 6557
6554 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 6558 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
6555 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 6559 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
6556 src->GetObjectPropertyByIdx(1, propertyValue.get()); 6560 src->GetObjectPropertyByIdx(1, propertyValue.get());
6557 src->GetObjectPropertyByIdx(2, jsObjectValue.get()); 6561 src->GetObjectPropertyByIdx(2, jsObjectValue.get());
6558 if (FXJSE_Value_IsNull(propertyValue.get())) 6562 if (CFXJSE_Value::IsNull(propertyValue.get()))
6559 return ValueToDouble(pThis, jsObjectValue.get()); 6563 return ValueToDouble(pThis, jsObjectValue.get());
6560 6564
6561 CFX_ByteString propertyStr; 6565 CFX_ByteString propertyStr;
6562 propertyValue->ToString(propertyStr); 6566 propertyValue->ToString(propertyStr);
6563 std::unique_ptr<CFXJSE_Value> newPropertyValue(new CFXJSE_Value(pIsolate)); 6567 std::unique_ptr<CFXJSE_Value> newPropertyValue(new CFXJSE_Value(pIsolate));
6564 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(), 6568 jsObjectValue->GetObjectProperty(propertyStr.AsStringC(),
6565 newPropertyValue.get()); 6569 newPropertyValue.get());
6566 return ValueToDouble(pThis, newPropertyValue.get()); 6570 return ValueToDouble(pThis, newPropertyValue.get());
6567 } 6571 }
6568 return ValueToDouble(pThis, src); 6572 return ValueToDouble(pThis, src);
6569 } 6573 }
6570 6574
6571 // static 6575 // static
6572 void CXFA_FM2JSContext::ValueToUTF8String(CFXJSE_Value* arg, 6576 void CXFA_FM2JSContext::ValueToUTF8String(CFXJSE_Value* arg,
6573 CFX_ByteString& szOutputString) { 6577 CFX_ByteString& szOutputString) {
6574 if (FXJSE_Value_IsNull(arg) || FXJSE_Value_IsUndefined(arg)) { 6578 if (CFXJSE_Value::IsNull(arg) || CFXJSE_Value::IsUndefined(arg)) {
6575 szOutputString = ""; 6579 szOutputString = "";
6576 } else if (FXJSE_Value_IsBoolean(arg)) { 6580 } else if (CFXJSE_Value::IsBoolean(arg)) {
6577 szOutputString = arg->ToBoolean() ? "1" : "0"; 6581 szOutputString = arg->ToBoolean() ? "1" : "0";
6578 } else { 6582 } else {
6579 szOutputString = ""; 6583 szOutputString = "";
6580 arg->ToString(szOutputString); 6584 arg->ToString(szOutputString);
6581 } 6585 }
6582 } 6586 }
6583 6587
6584 // static. 6588 // static.
6585 int32_t CXFA_FM2JSContext::Translate(const CFX_WideStringC& wsFormcalc, 6589 int32_t CXFA_FM2JSContext::Translate(const CFX_WideStringC& wsFormcalc,
6586 CFX_WideTextBuf& wsJavascript, 6590 CFX_WideTextBuf& wsJavascript,
(...skipping 16 matching lines...) Expand all
6603 return status; 6607 return status;
6604 } 6608 }
6605 program.TranslateProgram(wsJavascript); 6609 program.TranslateProgram(wsJavascript);
6606 return 0; 6610 return 0;
6607 } 6611 }
6608 6612
6609 CXFA_FM2JSContext::CXFA_FM2JSContext(v8::Isolate* pScriptIsolate, 6613 CXFA_FM2JSContext::CXFA_FM2JSContext(v8::Isolate* pScriptIsolate,
6610 CFXJSE_Context* pScriptContext, 6614 CFXJSE_Context* pScriptContext,
6611 CXFA_Document* pDoc) 6615 CXFA_Document* pDoc)
6612 : m_pIsolate(pScriptIsolate), 6616 : m_pIsolate(pScriptIsolate),
6613 m_pFMClass(FXJSE_DefineClass(pScriptContext, &formcalc_fm2js_descriptor)), 6617 m_pFMClass(
6618 CFXJSE_Class::Create(pScriptContext, &formcalc_fm2js_descriptor)),
6614 m_pValue(new CFXJSE_Value(pScriptIsolate)), 6619 m_pValue(new CFXJSE_Value(pScriptIsolate)),
6615 m_pDocument(pDoc) { 6620 m_pDocument(pDoc) {
6616 m_pValue.get()->SetNull(); 6621 m_pValue.get()->SetNull();
6617 m_pValue.get()->SetObject(this, m_pFMClass); 6622 m_pValue.get()->SetObject(this, m_pFMClass);
6618 } 6623 }
6619 6624
6620 CXFA_FM2JSContext::~CXFA_FM2JSContext() {} 6625 CXFA_FM2JSContext::~CXFA_FM2JSContext() {}
6621 6626
6622 void CXFA_FM2JSContext::GlobalPropertyGetter(CFXJSE_Value* pValue) { 6627 void CXFA_FM2JSContext::GlobalPropertyGetter(CFXJSE_Value* pValue) {
6623 pValue->Assign(m_pValue.get()); 6628 pValue->Assign(m_pValue.get());
6624 } 6629 }
6625 6630
6626 void CXFA_FM2JSContext::ThrowException(int32_t iStringID, ...) { 6631 void CXFA_FM2JSContext::ThrowException(int32_t iStringID, ...) {
6627 IXFA_AppProvider* pAppProvider = m_pDocument->GetNotify()->GetAppProvider(); 6632 IXFA_AppProvider* pAppProvider = m_pDocument->GetNotify()->GetAppProvider();
6628 ASSERT(pAppProvider); 6633 ASSERT(pAppProvider);
6629 CFX_WideString wsFormat; 6634 CFX_WideString wsFormat;
6630 pAppProvider->LoadString(iStringID, wsFormat); 6635 pAppProvider->LoadString(iStringID, wsFormat);
6631 CFX_WideString wsMessage; 6636 CFX_WideString wsMessage;
6632 va_list arg_ptr; 6637 va_list arg_ptr;
6633 va_start(arg_ptr, iStringID); 6638 va_start(arg_ptr, iStringID);
6634 wsMessage.FormatV(wsFormat.c_str(), arg_ptr); 6639 wsMessage.FormatV(wsFormat.c_str(), arg_ptr);
6635 va_end(arg_ptr); 6640 va_end(arg_ptr);
6636 FXJSE_ThrowMessage( 6641 FXJSE_ThrowMessage(
6637 "", FX_UTF8Encode(wsMessage.c_str(), wsMessage.GetLength()).AsStringC()); 6642 FX_UTF8Encode(wsMessage.c_str(), wsMessage.GetLength()).AsStringC());
6638 } 6643 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698