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

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

Issue 2029043002: Change ThrowScriptErrorMessage() to ThrowException(). (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@value_toobject_cleanup
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
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 return false; 494 return false;
495 } 495 }
496 496
497 } // namespace 497 } // namespace
498 498
499 // static 499 // static
500 void CXFA_FM2JSContext::Abs(CFXJSE_Value* pThis, 500 void CXFA_FM2JSContext::Abs(CFXJSE_Value* pThis,
501 const CFX_ByteStringC& szFuncName, 501 const CFX_ByteStringC& szFuncName,
502 CFXJSE_Arguments& args) { 502 CFXJSE_Arguments& args) {
503 if (args.GetLength() != 1) { 503 if (args.GetLength() != 1) {
504 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 504 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
505 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Abs"); 505 L"Abs");
506 return; 506 return;
507 } 507 }
508 508
509 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); 509 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0);
510 if (ValueIsNull(pThis, argOne.get())) { 510 if (ValueIsNull(pThis, argOne.get())) {
511 FXJSE_Value_SetNull(args.GetReturnValue()); 511 FXJSE_Value_SetNull(args.GetReturnValue());
512 return; 512 return;
513 } 513 }
514 514
515 FX_DOUBLE dValue = ValueToDouble(pThis, argOne.get()); 515 FX_DOUBLE dValue = ValueToDouble(pThis, argOne.get());
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 } 591 }
592 592
593 FXJSE_Value_SetDouble(args.GetReturnValue(), dSum / uCount); 593 FXJSE_Value_SetDouble(args.GetReturnValue(), dSum / uCount);
594 } 594 }
595 595
596 // static 596 // static
597 void CXFA_FM2JSContext::Ceil(CFXJSE_Value* pThis, 597 void CXFA_FM2JSContext::Ceil(CFXJSE_Value* pThis,
598 const CFX_ByteStringC& szFuncName, 598 const CFX_ByteStringC& szFuncName,
599 CFXJSE_Arguments& args) { 599 CFXJSE_Arguments& args) {
600 if (args.GetLength() != 1) { 600 if (args.GetLength() != 1) {
601 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 601 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
602 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Ceil"); 602 L"Ceil");
603 return; 603 return;
604 } 604 }
605 605
606 std::unique_ptr<CFXJSE_Value> argValue = GetSimpleValue(pThis, args, 0); 606 std::unique_ptr<CFXJSE_Value> argValue = GetSimpleValue(pThis, args, 0);
607 if (ValueIsNull(pThis, argValue.get())) { 607 if (ValueIsNull(pThis, argValue.get())) {
608 FXJSE_Value_SetNull(args.GetReturnValue()); 608 FXJSE_Value_SetNull(args.GetReturnValue());
609 return; 609 return;
610 } 610 }
611 611
612 FXJSE_Value_SetFloat(args.GetReturnValue(), 612 FXJSE_Value_SetFloat(args.GetReturnValue(),
(...skipping 11 matching lines...) Expand all
624 std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i); 624 std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i);
625 if (FXJSE_Value_IsNull(argValue.get())) 625 if (FXJSE_Value_IsNull(argValue.get()))
626 continue; 626 continue;
627 627
628 if (FXJSE_Value_IsArray(argValue.get())) { 628 if (FXJSE_Value_IsArray(argValue.get())) {
629 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 629 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
630 FXJSE_Value_GetObjectProp(argValue.get(), "length", lengthValue.get()); 630 FXJSE_Value_GetObjectProp(argValue.get(), "length", lengthValue.get());
631 631
632 int32_t iLength = FXJSE_Value_ToInteger(lengthValue.get()); 632 int32_t iLength = FXJSE_Value_ToInteger(lengthValue.get());
633 if (iLength <= 2) { 633 if (iLength <= 2) {
634 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 634 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
635 return; 635 return;
636 } 636 }
637 637
638 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 638 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
639 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 639 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
640 std::unique_ptr<CFXJSE_Value> newPropertyValue( 640 std::unique_ptr<CFXJSE_Value> newPropertyValue(
641 new CFXJSE_Value(pIsolate)); 641 new CFXJSE_Value(pIsolate));
642 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 1, propertyValue.get()); 642 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 1, propertyValue.get());
643 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 2, jsObjectValue.get()); 643 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 2, jsObjectValue.get());
644 if (FXJSE_Value_IsNull(propertyValue.get())) { 644 if (FXJSE_Value_IsNull(propertyValue.get())) {
(...skipping 27 matching lines...) Expand all
672 } 672 }
673 } 673 }
674 FXJSE_Value_SetInteger(args.GetReturnValue(), iCount); 674 FXJSE_Value_SetInteger(args.GetReturnValue(), iCount);
675 } 675 }
676 676
677 // static 677 // static
678 void CXFA_FM2JSContext::Floor(CFXJSE_Value* pThis, 678 void CXFA_FM2JSContext::Floor(CFXJSE_Value* pThis,
679 const CFX_ByteStringC& szFuncName, 679 const CFX_ByteStringC& szFuncName,
680 CFXJSE_Arguments& args) { 680 CFXJSE_Arguments& args) {
681 if (args.GetLength() != 1) { 681 if (args.GetLength() != 1) {
682 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 682 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
683 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Floor"); 683 L"Floor");
684 return; 684 return;
685 } 685 }
686 686
687 std::unique_ptr<CFXJSE_Value> argValue = GetSimpleValue(pThis, args, 0); 687 std::unique_ptr<CFXJSE_Value> argValue = GetSimpleValue(pThis, args, 0);
688 if (ValueIsNull(pThis, argValue.get())) { 688 if (ValueIsNull(pThis, argValue.get())) {
689 FXJSE_Value_SetNull(args.GetReturnValue()); 689 FXJSE_Value_SetNull(args.GetReturnValue());
690 return; 690 return;
691 } 691 }
692 692
693 FXJSE_Value_SetFloat(args.GetReturnValue(), 693 FXJSE_Value_SetFloat(args.GetReturnValue(),
(...skipping 11 matching lines...) Expand all
705 for (int32_t i = 0; i < args.GetLength(); i++) { 705 for (int32_t i = 0; i < args.GetLength(); i++) {
706 std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i); 706 std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i);
707 if (FXJSE_Value_IsNull(argValue.get())) 707 if (FXJSE_Value_IsNull(argValue.get()))
708 continue; 708 continue;
709 709
710 if (FXJSE_Value_IsArray(argValue.get())) { 710 if (FXJSE_Value_IsArray(argValue.get())) {
711 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 711 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
712 FXJSE_Value_GetObjectProp(argValue.get(), "length", lengthValue.get()); 712 FXJSE_Value_GetObjectProp(argValue.get(), "length", lengthValue.get());
713 int32_t iLength = FXJSE_Value_ToInteger(lengthValue.get()); 713 int32_t iLength = FXJSE_Value_ToInteger(lengthValue.get());
714 if (iLength <= 2) { 714 if (iLength <= 2) {
715 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 715 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
716 return; 716 return;
717 } 717 }
718 718
719 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 719 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
720 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 720 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
721 std::unique_ptr<CFXJSE_Value> newPropertyValue( 721 std::unique_ptr<CFXJSE_Value> newPropertyValue(
722 new CFXJSE_Value(pIsolate)); 722 new CFXJSE_Value(pIsolate));
723 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 1, propertyValue.get()); 723 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 1, propertyValue.get());
724 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 2, jsObjectValue.get()); 724 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 2, jsObjectValue.get());
725 if (FXJSE_Value_IsNull(propertyValue.get())) { 725 if (FXJSE_Value_IsNull(propertyValue.get())) {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
786 for (int32_t i = 0; i < args.GetLength(); i++) { 786 for (int32_t i = 0; i < args.GetLength(); i++) {
787 std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i); 787 std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i);
788 if (FXJSE_Value_IsNull(argValue.get())) 788 if (FXJSE_Value_IsNull(argValue.get()))
789 continue; 789 continue;
790 790
791 if (FXJSE_Value_IsArray(argValue.get())) { 791 if (FXJSE_Value_IsArray(argValue.get())) {
792 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 792 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
793 FXJSE_Value_GetObjectProp(argValue.get(), "length", lengthValue.get()); 793 FXJSE_Value_GetObjectProp(argValue.get(), "length", lengthValue.get());
794 int32_t iLength = FXJSE_Value_ToInteger(lengthValue.get()); 794 int32_t iLength = FXJSE_Value_ToInteger(lengthValue.get());
795 if (iLength <= 2) { 795 if (iLength <= 2) {
796 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 796 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
797 return; 797 return;
798 } 798 }
799 799
800 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 800 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
801 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 801 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
802 std::unique_ptr<CFXJSE_Value> newPropertyValue( 802 std::unique_ptr<CFXJSE_Value> newPropertyValue(
803 new CFXJSE_Value(pIsolate)); 803 new CFXJSE_Value(pIsolate));
804 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 1, propertyValue.get()); 804 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 1, propertyValue.get());
805 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 2, jsObjectValue.get()); 805 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 2, jsObjectValue.get());
806 if (FXJSE_Value_IsNull(propertyValue.get())) { 806 if (FXJSE_Value_IsNull(propertyValue.get())) {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
856 FXJSE_Value_SetDouble(args.GetReturnValue(), dMinValue); 856 FXJSE_Value_SetDouble(args.GetReturnValue(), dMinValue);
857 } 857 }
858 858
859 // static 859 // static
860 void CXFA_FM2JSContext::Mod(CFXJSE_Value* pThis, 860 void CXFA_FM2JSContext::Mod(CFXJSE_Value* pThis,
861 const CFX_ByteStringC& szFuncName, 861 const CFX_ByteStringC& szFuncName,
862 CFXJSE_Arguments& args) { 862 CFXJSE_Arguments& args) {
863 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 863 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
864 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); 864 v8::Isolate* pIsolate = pContext->GetScriptRuntime();
865 if (args.GetLength() != 2) { 865 if (args.GetLength() != 2) {
866 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 866 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Mod");
867 L"Mod");
868 return; 867 return;
869 } 868 }
870 869
871 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); 870 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0);
872 std::unique_ptr<CFXJSE_Value> argTwo = args.GetValue(1); 871 std::unique_ptr<CFXJSE_Value> argTwo = args.GetValue(1);
873 if (FXJSE_Value_IsNull(argOne.get()) || FXJSE_Value_IsNull(argTwo.get())) { 872 if (FXJSE_Value_IsNull(argOne.get()) || FXJSE_Value_IsNull(argTwo.get())) {
874 FXJSE_Value_SetNull(args.GetReturnValue()); 873 FXJSE_Value_SetNull(args.GetReturnValue());
875 return; 874 return;
876 } 875 }
877 876
878 FX_DOUBLE dDividend = 0.0; 877 FX_DOUBLE dDividend = 0.0;
879 FX_DOUBLE dDividor = 0.0; 878 FX_DOUBLE dDividor = 0.0;
880 if (FXJSE_Value_IsArray(argOne.get())) { 879 if (FXJSE_Value_IsArray(argOne.get())) {
881 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 880 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
882 FXJSE_Value_GetObjectProp(argOne.get(), "length", lengthValue.get()); 881 FXJSE_Value_GetObjectProp(argOne.get(), "length", lengthValue.get());
883 int32_t iLength = FXJSE_Value_ToInteger(lengthValue.get()); 882 int32_t iLength = FXJSE_Value_ToInteger(lengthValue.get());
884 if (iLength <= 2) { 883 if (iLength <= 2) {
885 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 884 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
886 return; 885 return;
887 } 886 }
888 887
889 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 888 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
890 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 889 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
891 FXJSE_Value_GetObjectPropByIdx(argOne.get(), 1, propertyValue.get()); 890 FXJSE_Value_GetObjectPropByIdx(argOne.get(), 1, propertyValue.get());
892 FXJSE_Value_GetObjectPropByIdx(argOne.get(), 2, jsObjectValue.get()); 891 FXJSE_Value_GetObjectPropByIdx(argOne.get(), 2, jsObjectValue.get());
893 if (FXJSE_Value_IsNull(propertyValue.get())) { 892 if (FXJSE_Value_IsNull(propertyValue.get())) {
894 dDividend = ValueToDouble(pThis, jsObjectValue.get()); 893 dDividend = ValueToDouble(pThis, jsObjectValue.get());
895 } else { 894 } else {
896 CFX_ByteString propertyStr; 895 CFX_ByteString propertyStr;
897 FXJSE_Value_ToUTF8String(propertyValue.get(), propertyStr); 896 FXJSE_Value_ToUTF8String(propertyValue.get(), propertyStr);
898 std::unique_ptr<CFXJSE_Value> newPropertyValue( 897 std::unique_ptr<CFXJSE_Value> newPropertyValue(
899 new CFXJSE_Value(pIsolate)); 898 new CFXJSE_Value(pIsolate));
900 FXJSE_Value_GetObjectProp(jsObjectValue.get(), propertyStr.AsStringC(), 899 FXJSE_Value_GetObjectProp(jsObjectValue.get(), propertyStr.AsStringC(),
901 newPropertyValue.get()); 900 newPropertyValue.get());
902 dDividend = ValueToDouble(pThis, newPropertyValue.get()); 901 dDividend = ValueToDouble(pThis, newPropertyValue.get());
903 } 902 }
904 } else { 903 } else {
905 dDividend = ValueToDouble(pThis, argOne.get()); 904 dDividend = ValueToDouble(pThis, argOne.get());
906 } 905 }
907 906
908 if (FXJSE_Value_IsArray(argTwo.get())) { 907 if (FXJSE_Value_IsArray(argTwo.get())) {
909 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 908 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
910 FXJSE_Value_GetObjectProp(argTwo.get(), "length", lengthValue.get()); 909 FXJSE_Value_GetObjectProp(argTwo.get(), "length", lengthValue.get());
911 int32_t iLength = FXJSE_Value_ToInteger(lengthValue.get()); 910 int32_t iLength = FXJSE_Value_ToInteger(lengthValue.get());
912 if (iLength <= 2) { 911 if (iLength <= 2) {
913 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 912 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
914 return; 913 return;
915 } 914 }
916 915
917 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 916 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
918 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 917 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
919 FXJSE_Value_GetObjectPropByIdx(argTwo.get(), 1, propertyValue.get()); 918 FXJSE_Value_GetObjectPropByIdx(argTwo.get(), 1, propertyValue.get());
920 FXJSE_Value_GetObjectPropByIdx(argTwo.get(), 2, jsObjectValue.get()); 919 FXJSE_Value_GetObjectPropByIdx(argTwo.get(), 2, jsObjectValue.get());
921 if (FXJSE_Value_IsNull(propertyValue.get())) { 920 if (FXJSE_Value_IsNull(propertyValue.get())) {
922 dDividor = ValueToDouble(pThis, jsObjectValue.get()); 921 dDividor = ValueToDouble(pThis, jsObjectValue.get());
923 } else { 922 } else {
924 CFX_ByteString propertyStr; 923 CFX_ByteString propertyStr;
925 FXJSE_Value_ToUTF8String(propertyValue.get(), propertyStr); 924 FXJSE_Value_ToUTF8String(propertyValue.get(), propertyStr);
926 std::unique_ptr<CFXJSE_Value> newPropertyValue( 925 std::unique_ptr<CFXJSE_Value> newPropertyValue(
927 new CFXJSE_Value(pIsolate)); 926 new CFXJSE_Value(pIsolate));
928 FXJSE_Value_GetObjectProp(jsObjectValue.get(), propertyStr.AsStringC(), 927 FXJSE_Value_GetObjectProp(jsObjectValue.get(), propertyStr.AsStringC(),
929 newPropertyValue.get()); 928 newPropertyValue.get());
930 dDividor = ValueToDouble(pThis, newPropertyValue.get()); 929 dDividor = ValueToDouble(pThis, newPropertyValue.get());
931 } 930 }
932 } else { 931 } else {
933 dDividor = ValueToDouble(pThis, argTwo.get()); 932 dDividor = ValueToDouble(pThis, argTwo.get());
934 } 933 }
935 934
936 if (dDividor == 0) { 935 if (dDividor == 0) {
937 pContext->ThrowScriptErrorMessage(XFA_IDS_DIVIDE_ZERO); 936 pContext->Throw(XFA_IDS_DIVIDE_ZERO);
938 return; 937 return;
939 } 938 }
940 939
941 FXJSE_Value_SetDouble(args.GetReturnValue(), 940 FXJSE_Value_SetDouble(args.GetReturnValue(),
942 dDividend - dDividor * (int32_t)(dDividend / dDividor)); 941 dDividend - dDividor * (int32_t)(dDividend / dDividor));
943 } 942 }
944 943
945 // static 944 // static
946 void CXFA_FM2JSContext::Round(CFXJSE_Value* pThis, 945 void CXFA_FM2JSContext::Round(CFXJSE_Value* pThis,
947 const CFX_ByteStringC& szFuncName, 946 const CFX_ByteStringC& szFuncName,
948 CFXJSE_Arguments& args) { 947 CFXJSE_Arguments& args) {
949 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 948 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
950 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); 949 v8::Isolate* pIsolate = pContext->GetScriptRuntime();
951 int32_t argc = args.GetLength(); 950 int32_t argc = args.GetLength();
952 uint8_t uPrecision = 0; 951 uint8_t uPrecision = 0;
953 952
954 if (argc != 1 && argc != 2) { 953 if (argc != 1 && argc != 2) {
955 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 954 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Round");
956 L"Round");
957 return; 955 return;
958 } 956 }
959 957
960 if (argc == 1) { 958 if (argc == 1) {
961 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); 959 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0);
962 if (FXJSE_Value_IsNull(argOne.get())) { 960 if (FXJSE_Value_IsNull(argOne.get())) {
963 FXJSE_Value_SetNull(args.GetReturnValue()); 961 FXJSE_Value_SetNull(args.GetReturnValue());
964 return; 962 return;
965 } 963 }
966 964
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
1067 for (int32_t i = 0; i < argc; i++) { 1065 for (int32_t i = 0; i < argc; i++) {
1068 std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i); 1066 std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i);
1069 if (FXJSE_Value_IsNull(argValue.get())) 1067 if (FXJSE_Value_IsNull(argValue.get()))
1070 continue; 1068 continue;
1071 1069
1072 if (FXJSE_Value_IsArray(argValue.get())) { 1070 if (FXJSE_Value_IsArray(argValue.get())) {
1073 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 1071 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
1074 FXJSE_Value_GetObjectProp(argValue.get(), "length", lengthValue.get()); 1072 FXJSE_Value_GetObjectProp(argValue.get(), "length", lengthValue.get());
1075 int32_t iLength = FXJSE_Value_ToInteger(lengthValue.get()); 1073 int32_t iLength = FXJSE_Value_ToInteger(lengthValue.get());
1076 if (iLength <= 2) { 1074 if (iLength <= 2) {
1077 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 1075 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
1078 return; 1076 return;
1079 } 1077 }
1080 1078
1081 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 1079 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
1082 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 1, propertyValue.get()); 1080 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 1, propertyValue.get());
1083 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 1081 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
1084 std::unique_ptr<CFXJSE_Value> newPropertyValue( 1082 std::unique_ptr<CFXJSE_Value> newPropertyValue(
1085 new CFXJSE_Value(pIsolate)); 1083 new CFXJSE_Value(pIsolate));
1086 if (FXJSE_Value_IsNull(propertyValue.get())) { 1084 if (FXJSE_Value_IsNull(propertyValue.get())) {
1087 for (int32_t j = 2; j < iLength; j++) { 1085 for (int32_t j = 2; j < iLength; j++) {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1130 } 1128 }
1131 1129
1132 FXJSE_Value_SetDouble(args.GetReturnValue(), dSum); 1130 FXJSE_Value_SetDouble(args.GetReturnValue(), dSum);
1133 } 1131 }
1134 1132
1135 // static 1133 // static
1136 void CXFA_FM2JSContext::Date(CFXJSE_Value* pThis, 1134 void CXFA_FM2JSContext::Date(CFXJSE_Value* pThis,
1137 const CFX_ByteStringC& szFuncName, 1135 const CFX_ByteStringC& szFuncName,
1138 CFXJSE_Arguments& args) { 1136 CFXJSE_Arguments& args) {
1139 if (args.GetLength() != 0) { 1137 if (args.GetLength() != 0) {
1140 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 1138 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
1141 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Date"); 1139 L"Date");
1142 return; 1140 return;
1143 } 1141 }
1144 1142
1145 time_t currentTime; 1143 time_t currentTime;
1146 time(&currentTime); 1144 time(&currentTime);
1147 struct tm* pTmStruct = gmtime(&currentTime); 1145 struct tm* pTmStruct = gmtime(&currentTime);
1148 1146
1149 CFX_ByteString bufferYear; 1147 CFX_ByteString bufferYear;
1150 CFX_ByteString bufferMon; 1148 CFX_ByteString bufferMon;
1151 CFX_ByteString bufferDay; 1149 CFX_ByteString bufferDay;
1152 bufferYear.Format("%d", pTmStruct->tm_year + 1900); 1150 bufferYear.Format("%d", pTmStruct->tm_year + 1900);
1153 bufferMon.Format("%02d", pTmStruct->tm_mon + 1); 1151 bufferMon.Format("%02d", pTmStruct->tm_mon + 1);
1154 bufferDay.Format("%02d", pTmStruct->tm_mday); 1152 bufferDay.Format("%02d", pTmStruct->tm_mday);
1155 1153
1156 CFX_ByteString bufferCurrent = bufferYear + bufferMon + bufferDay; 1154 CFX_ByteString bufferCurrent = bufferYear + bufferMon + bufferDay;
1157 FXJSE_Value_SetInteger(args.GetReturnValue(), 1155 FXJSE_Value_SetInteger(args.GetReturnValue(),
1158 DateString2Num(bufferCurrent.AsStringC())); 1156 DateString2Num(bufferCurrent.AsStringC()));
1159 } 1157 }
1160 1158
1161 // static 1159 // static
1162 void CXFA_FM2JSContext::Date2Num(CFXJSE_Value* pThis, 1160 void CXFA_FM2JSContext::Date2Num(CFXJSE_Value* pThis,
1163 const CFX_ByteStringC& szFuncName, 1161 const CFX_ByteStringC& szFuncName,
1164 CFXJSE_Arguments& args) { 1162 CFXJSE_Arguments& args) {
1165 int32_t argc = args.GetLength(); 1163 int32_t argc = args.GetLength();
1166 if ((argc <= 0) || (argc >= 4)) { 1164 if ((argc <= 0) || (argc >= 4)) {
1167 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 1165 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
1168 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Date2Num"); 1166 L"Date2Num");
1169 return; 1167 return;
1170 } 1168 }
1171 1169
1172 std::unique_ptr<CFXJSE_Value> dateValue = GetSimpleValue(pThis, args, 0); 1170 std::unique_ptr<CFXJSE_Value> dateValue = GetSimpleValue(pThis, args, 0);
1173 if (ValueIsNull(pThis, dateValue.get())) { 1171 if (ValueIsNull(pThis, dateValue.get())) {
1174 FXJSE_Value_SetNull(args.GetReturnValue()); 1172 FXJSE_Value_SetNull(args.GetReturnValue());
1175 return; 1173 return;
1176 } 1174 }
1177 1175
1178 CFX_ByteString dateString; 1176 CFX_ByteString dateString;
(...skipping 29 matching lines...) Expand all
1208 FXJSE_Value_SetInteger(args.GetReturnValue(), 1206 FXJSE_Value_SetInteger(args.GetReturnValue(),
1209 DateString2Num(szIsoDateString.AsStringC())); 1207 DateString2Num(szIsoDateString.AsStringC()));
1210 } 1208 }
1211 1209
1212 // static 1210 // static
1213 void CXFA_FM2JSContext::DateFmt(CFXJSE_Value* pThis, 1211 void CXFA_FM2JSContext::DateFmt(CFXJSE_Value* pThis,
1214 const CFX_ByteStringC& szFuncName, 1212 const CFX_ByteStringC& szFuncName,
1215 CFXJSE_Arguments& args) { 1213 CFXJSE_Arguments& args) {
1216 int32_t argc = args.GetLength(); 1214 int32_t argc = args.GetLength();
1217 if (argc >= 3) { 1215 if (argc >= 3) {
1218 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 1216 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
1219 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Date2Num"); 1217 L"Date2Num");
1220 return; 1218 return;
1221 } 1219 }
1222 1220
1223 int32_t iStyle = 0; 1221 int32_t iStyle = 0;
1224 if (argc > 0) { 1222 if (argc > 0) {
1225 std::unique_ptr<CFXJSE_Value> argStyle = GetSimpleValue(pThis, args, 0); 1223 std::unique_ptr<CFXJSE_Value> argStyle = GetSimpleValue(pThis, args, 0);
1226 if (FXJSE_Value_IsNull(argStyle.get())) { 1224 if (FXJSE_Value_IsNull(argStyle.get())) {
1227 FXJSE_Value_SetNull(args.GetReturnValue()); 1225 FXJSE_Value_SetNull(args.GetReturnValue());
1228 return; 1226 return;
1229 } 1227 }
(...skipping 19 matching lines...) Expand all
1249 formatStr = ""; 1247 formatStr = "";
1250 1248
1251 FXJSE_Value_SetUTF8String(args.GetReturnValue(), formatStr.AsStringC()); 1249 FXJSE_Value_SetUTF8String(args.GetReturnValue(), formatStr.AsStringC());
1252 } 1250 }
1253 1251
1254 // static 1252 // static
1255 void CXFA_FM2JSContext::IsoDate2Num(CFXJSE_Value* pThis, 1253 void CXFA_FM2JSContext::IsoDate2Num(CFXJSE_Value* pThis,
1256 const CFX_ByteStringC& szFuncName, 1254 const CFX_ByteStringC& szFuncName,
1257 CFXJSE_Arguments& args) { 1255 CFXJSE_Arguments& args) {
1258 if (args.GetLength() != 1) { 1256 if (args.GetLength() != 1) {
1259 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 1257 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
1260 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"IsoDate2Num"); 1258 L"IsoDate2Num");
1261 return; 1259 return;
1262 } 1260 }
1263 1261
1264 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 1262 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
1265 if (FXJSE_Value_IsNull(argOne.get())) { 1263 if (FXJSE_Value_IsNull(argOne.get())) {
1266 FXJSE_Value_SetNull(args.GetReturnValue()); 1264 FXJSE_Value_SetNull(args.GetReturnValue());
1267 return; 1265 return;
1268 } 1266 }
1269 1267
1270 CFX_ByteString szArgString; 1268 CFX_ByteString szArgString;
1271 ValueToUTF8String(argOne.get(), szArgString); 1269 ValueToUTF8String(argOne.get(), szArgString);
1272 FXJSE_Value_SetInteger(args.GetReturnValue(), 1270 FXJSE_Value_SetInteger(args.GetReturnValue(),
1273 DateString2Num(szArgString.AsStringC())); 1271 DateString2Num(szArgString.AsStringC()));
1274 } 1272 }
1275 1273
1276 // static 1274 // static
1277 void CXFA_FM2JSContext::IsoTime2Num(CFXJSE_Value* pThis, 1275 void CXFA_FM2JSContext::IsoTime2Num(CFXJSE_Value* pThis,
1278 const CFX_ByteStringC& szFuncName, 1276 const CFX_ByteStringC& szFuncName,
1279 CFXJSE_Arguments& args) { 1277 CFXJSE_Arguments& args) {
1280 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 1278 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
1281 if (args.GetLength() != 1) { 1279 if (args.GetLength() != 1) {
1282 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 1280 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"IsoTime2Num");
1283 L"IsoTime2Num");
1284 return; 1281 return;
1285 } 1282 }
1286 1283
1287 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 1284 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
1288 if (ValueIsNull(pThis, argOne.get())) { 1285 if (ValueIsNull(pThis, argOne.get())) {
1289 FXJSE_Value_SetNull(args.GetReturnValue()); 1286 FXJSE_Value_SetNull(args.GetReturnValue());
1290 return; 1287 return;
1291 } 1288 }
1292 1289
1293 CXFA_Document* pDoc = pContext->GetDocument(); 1290 CXFA_Document* pDoc = pContext->GetDocument();
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
1362 CFX_ByteString formatStr; 1359 CFX_ByteString formatStr;
1363 GetLocalDateFormat(pThis, iStyle, szLocal.AsStringC(), formatStr, FALSE); 1360 GetLocalDateFormat(pThis, iStyle, szLocal.AsStringC(), formatStr, FALSE);
1364 if (formatStr.IsEmpty()) { 1361 if (formatStr.IsEmpty()) {
1365 formatStr = ""; 1362 formatStr = "";
1366 } 1363 }
1367 FXJSE_Value_SetUTF8String(args.GetReturnValue(), formatStr.AsStringC()); 1364 FXJSE_Value_SetUTF8String(args.GetReturnValue(), formatStr.AsStringC());
1368 } else { 1365 } else {
1369 FXJSE_Value_SetNull(args.GetReturnValue()); 1366 FXJSE_Value_SetNull(args.GetReturnValue());
1370 } 1367 }
1371 } else { 1368 } else {
1372 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 1369 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
1373 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"LocalDateFmt"); 1370 L"LocalDateFmt");
1374 } 1371 }
1375 } 1372 }
1376 1373
1377 // static 1374 // static
1378 void CXFA_FM2JSContext::LocalTimeFmt(CFXJSE_Value* pThis, 1375 void CXFA_FM2JSContext::LocalTimeFmt(CFXJSE_Value* pThis,
1379 const CFX_ByteStringC& szFuncName, 1376 const CFX_ByteStringC& szFuncName,
1380 CFXJSE_Arguments& args) { 1377 CFXJSE_Arguments& args) {
1381 int32_t argc = args.GetLength(); 1378 int32_t argc = args.GetLength();
1382 if (argc < 3) { 1379 if (argc < 3) {
1383 FX_BOOL bFlags = FALSE; 1380 FX_BOOL bFlags = FALSE;
(...skipping 21 matching lines...) Expand all
1405 CFX_ByteString formatStr; 1402 CFX_ByteString formatStr;
1406 GetLocalTimeFormat(pThis, iStyle, szLocal.AsStringC(), formatStr, FALSE); 1403 GetLocalTimeFormat(pThis, iStyle, szLocal.AsStringC(), formatStr, FALSE);
1407 if (formatStr.IsEmpty()) { 1404 if (formatStr.IsEmpty()) {
1408 formatStr = ""; 1405 formatStr = "";
1409 } 1406 }
1410 FXJSE_Value_SetUTF8String(args.GetReturnValue(), formatStr.AsStringC()); 1407 FXJSE_Value_SetUTF8String(args.GetReturnValue(), formatStr.AsStringC());
1411 } else { 1408 } else {
1412 FXJSE_Value_SetNull(args.GetReturnValue()); 1409 FXJSE_Value_SetNull(args.GetReturnValue());
1413 } 1410 }
1414 } else { 1411 } else {
1415 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 1412 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
1416 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"LocalTimeFmt"); 1413 L"LocalTimeFmt");
1417 } 1414 }
1418 } 1415 }
1419 1416
1420 // static 1417 // static
1421 void CXFA_FM2JSContext::Num2Date(CFXJSE_Value* pThis, 1418 void CXFA_FM2JSContext::Num2Date(CFXJSE_Value* pThis,
1422 const CFX_ByteStringC& szFuncName, 1419 const CFX_ByteStringC& szFuncName,
1423 CFXJSE_Arguments& args) { 1420 CFXJSE_Arguments& args) {
1424 int32_t argc = args.GetLength(); 1421 int32_t argc = args.GetLength();
1425 if ((argc > 0) && (argc < 4)) { 1422 if ((argc > 0) && (argc < 4)) {
1426 FX_BOOL bFlags = FALSE; 1423 FX_BOOL bFlags = FALSE;
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
1552 szLocalDateString); 1549 szLocalDateString);
1553 if (szLocalDateString.IsEmpty()) { 1550 if (szLocalDateString.IsEmpty()) {
1554 szLocalDateString = ""; 1551 szLocalDateString = "";
1555 } 1552 }
1556 FXJSE_Value_SetUTF8String(args.GetReturnValue(), 1553 FXJSE_Value_SetUTF8String(args.GetReturnValue(),
1557 szLocalDateString.AsStringC()); 1554 szLocalDateString.AsStringC());
1558 } else { 1555 } else {
1559 FXJSE_Value_SetNull(args.GetReturnValue()); 1556 FXJSE_Value_SetNull(args.GetReturnValue());
1560 } 1557 }
1561 } else { 1558 } else {
1562 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 1559 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
1563 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Num2Date"); 1560 L"Num2Date");
1564 } 1561 }
1565 } 1562 }
1566 1563
1567 // static 1564 // static
1568 void CXFA_FM2JSContext::Num2GMTime(CFXJSE_Value* pThis, 1565 void CXFA_FM2JSContext::Num2GMTime(CFXJSE_Value* pThis,
1569 const CFX_ByteStringC& szFuncName, 1566 const CFX_ByteStringC& szFuncName,
1570 CFXJSE_Arguments& args) { 1567 CFXJSE_Arguments& args) {
1571 int32_t argc = args.GetLength(); 1568 int32_t argc = args.GetLength();
1572 if ((argc > 0) && (argc < 4)) { 1569 if ((argc > 0) && (argc < 4)) {
1573 FX_BOOL bFlags = FALSE; 1570 FX_BOOL bFlags = FALSE;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1606 localString.AsStringC(), TRUE, szGMTTimeString); 1603 localString.AsStringC(), TRUE, szGMTTimeString);
1607 if (szGMTTimeString.IsEmpty()) { 1604 if (szGMTTimeString.IsEmpty()) {
1608 szGMTTimeString = ""; 1605 szGMTTimeString = "";
1609 } 1606 }
1610 FXJSE_Value_SetUTF8String(args.GetReturnValue(), 1607 FXJSE_Value_SetUTF8String(args.GetReturnValue(),
1611 szGMTTimeString.AsStringC()); 1608 szGMTTimeString.AsStringC());
1612 } else { 1609 } else {
1613 FXJSE_Value_SetNull(args.GetReturnValue()); 1610 FXJSE_Value_SetNull(args.GetReturnValue());
1614 } 1611 }
1615 } else { 1612 } else {
1616 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 1613 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
1617 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Num2GMTime"); 1614 L"Num2GMTime");
1618 } 1615 }
1619 } 1616 }
1620 1617
1621 // static 1618 // static
1622 void CXFA_FM2JSContext::Num2Time(CFXJSE_Value* pThis, 1619 void CXFA_FM2JSContext::Num2Time(CFXJSE_Value* pThis,
1623 const CFX_ByteStringC& szFuncName, 1620 const CFX_ByteStringC& szFuncName,
1624 CFXJSE_Arguments& args) { 1621 CFXJSE_Arguments& args) {
1625 int32_t argc = args.GetLength(); 1622 int32_t argc = args.GetLength();
1626 if ((argc > 0) && (argc < 4)) { 1623 if ((argc > 0) && (argc < 4)) {
1627 FX_BOOL bFlags = FALSE; 1624 FX_BOOL bFlags = FALSE;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1660 localString.AsStringC(), FALSE, szLocalTimeString); 1657 localString.AsStringC(), FALSE, szLocalTimeString);
1661 if (szLocalTimeString.IsEmpty()) { 1658 if (szLocalTimeString.IsEmpty()) {
1662 szLocalTimeString = ""; 1659 szLocalTimeString = "";
1663 } 1660 }
1664 FXJSE_Value_SetUTF8String(args.GetReturnValue(), 1661 FXJSE_Value_SetUTF8String(args.GetReturnValue(),
1665 szLocalTimeString.AsStringC()); 1662 szLocalTimeString.AsStringC());
1666 } else { 1663 } else {
1667 FXJSE_Value_SetNull(args.GetReturnValue()); 1664 FXJSE_Value_SetNull(args.GetReturnValue());
1668 } 1665 }
1669 } else { 1666 } else {
1670 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 1667 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
1671 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Num2Time"); 1668 L"Num2Time");
1672 } 1669 }
1673 } 1670 }
1674 1671
1675 // static 1672 // static
1676 void CXFA_FM2JSContext::Time(CFXJSE_Value* pThis, 1673 void CXFA_FM2JSContext::Time(CFXJSE_Value* pThis,
1677 const CFX_ByteStringC& szFuncName, 1674 const CFX_ByteStringC& szFuncName,
1678 CFXJSE_Arguments& args) { 1675 CFXJSE_Arguments& args) {
1679 if (args.GetLength() == 0) { 1676 if (args.GetLength() == 0) {
1680 time_t now; 1677 time_t now;
1681 time(&now); 1678 time(&now);
1682 struct tm* pGmt = gmtime(&now); 1679 struct tm* pGmt = gmtime(&now);
1683 int32_t iGMHour = pGmt->tm_hour; 1680 int32_t iGMHour = pGmt->tm_hour;
1684 int32_t iGMMin = pGmt->tm_min; 1681 int32_t iGMMin = pGmt->tm_min;
1685 int32_t iGMSec = pGmt->tm_sec; 1682 int32_t iGMSec = pGmt->tm_sec;
1686 FXJSE_Value_SetInteger(args.GetReturnValue(), 1683 FXJSE_Value_SetInteger(args.GetReturnValue(),
1687 ((iGMHour * 3600 + iGMMin * 60 + iGMSec) * 1000)); 1684 ((iGMHour * 3600 + iGMMin * 60 + iGMSec) * 1000));
1688 } else { 1685 } else {
1689 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 1686 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
1690 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Time"); 1687 L"Time");
1691 } 1688 }
1692 } 1689 }
1693 1690
1694 // static 1691 // static
1695 void CXFA_FM2JSContext::Time2Num(CFXJSE_Value* pThis, 1692 void CXFA_FM2JSContext::Time2Num(CFXJSE_Value* pThis,
1696 const CFX_ByteStringC& szFuncName, 1693 const CFX_ByteStringC& szFuncName,
1697 CFXJSE_Arguments& args) { 1694 CFXJSE_Arguments& args) {
1698 int32_t argc = args.GetLength(); 1695 int32_t argc = args.GetLength();
1699 if ((argc > 0) && (argc < 4)) { 1696 if ((argc > 0) && (argc < 4)) {
1700 FX_BOOL bFlags = FALSE; 1697 FX_BOOL bFlags = FALSE;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1773 int32_t iResult = 1770 int32_t iResult =
1774 hour * 3600000 + min * 60000 + second * 1000 + milSecond + 1; 1771 hour * 3600000 + min * 60000 + second * 1000 + milSecond + 1;
1775 FXJSE_Value_SetInteger(args.GetReturnValue(), iResult); 1772 FXJSE_Value_SetInteger(args.GetReturnValue(), iResult);
1776 } else { 1773 } else {
1777 FXJSE_Value_SetInteger(args.GetReturnValue(), 0); 1774 FXJSE_Value_SetInteger(args.GetReturnValue(), 0);
1778 } 1775 }
1779 } else { 1776 } else {
1780 FXJSE_Value_SetNull(args.GetReturnValue()); 1777 FXJSE_Value_SetNull(args.GetReturnValue());
1781 } 1778 }
1782 } else { 1779 } else {
1783 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 1780 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
1784 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Time2Num"); 1781 L"Time2Num");
1785 } 1782 }
1786 } 1783 }
1787 1784
1788 // static 1785 // static
1789 void CXFA_FM2JSContext::TimeFmt(CFXJSE_Value* pThis, 1786 void CXFA_FM2JSContext::TimeFmt(CFXJSE_Value* pThis,
1790 const CFX_ByteStringC& szFuncName, 1787 const CFX_ByteStringC& szFuncName,
1791 CFXJSE_Arguments& args) { 1788 CFXJSE_Arguments& args) {
1792 int32_t argc = args.GetLength(); 1789 int32_t argc = args.GetLength();
1793 if (argc < 3) { 1790 if (argc < 3) {
1794 FX_BOOL bFlags = FALSE; 1791 FX_BOOL bFlags = FALSE;
(...skipping 21 matching lines...) Expand all
1816 CFX_ByteString formatStr; 1813 CFX_ByteString formatStr;
1817 GetStandardTimeFormat(pThis, iStyle, szLocal.AsStringC(), formatStr); 1814 GetStandardTimeFormat(pThis, iStyle, szLocal.AsStringC(), formatStr);
1818 if (formatStr.IsEmpty()) { 1815 if (formatStr.IsEmpty()) {
1819 formatStr = ""; 1816 formatStr = "";
1820 } 1817 }
1821 FXJSE_Value_SetUTF8String(args.GetReturnValue(), formatStr.AsStringC()); 1818 FXJSE_Value_SetUTF8String(args.GetReturnValue(), formatStr.AsStringC());
1822 } else { 1819 } else {
1823 FXJSE_Value_SetNull(args.GetReturnValue()); 1820 FXJSE_Value_SetNull(args.GetReturnValue());
1824 } 1821 }
1825 } else { 1822 } else {
1826 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 1823 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
1827 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"TimeFmt"); 1824 L"TimeFmt");
1828 } 1825 }
1829 } 1826 }
1830 1827
1831 // static 1828 // static
1832 FX_BOOL CXFA_FM2JSContext::IsIsoDateFormat(const FX_CHAR* pData, 1829 FX_BOOL CXFA_FM2JSContext::IsIsoDateFormat(const FX_CHAR* pData,
1833 int32_t iLength, 1830 int32_t iLength,
1834 int32_t& iStyle, 1831 int32_t& iStyle,
1835 int32_t& iYear, 1832 int32_t& iYear,
1836 int32_t& iMonth, 1833 int32_t& iMonth,
1837 int32_t& iDay) { 1834 int32_t& iDay) {
(...skipping 781 matching lines...) Expand 10 before | Expand all | Expand 10 after
2619 (ValueIsNull(pThis, argOne.get()) || ValueIsNull(pThis, argTwo.get()) || 2616 (ValueIsNull(pThis, argOne.get()) || ValueIsNull(pThis, argTwo.get()) ||
2620 ValueIsNull(pThis, argThree.get())); 2617 ValueIsNull(pThis, argThree.get()));
2621 if (bFlags) { 2618 if (bFlags) {
2622 FXJSE_Value_SetNull(args.GetReturnValue()); 2619 FXJSE_Value_SetNull(args.GetReturnValue());
2623 } else { 2620 } else {
2624 nPrincipal = ValueToDouble(pThis, argOne.get()); 2621 nPrincipal = ValueToDouble(pThis, argOne.get());
2625 nPayment = ValueToDouble(pThis, argTwo.get()); 2622 nPayment = ValueToDouble(pThis, argTwo.get());
2626 nPeriods = ValueToDouble(pThis, argThree.get()); 2623 nPeriods = ValueToDouble(pThis, argThree.get());
2627 bFlags = ((nPrincipal <= 0) || (nPayment <= 0) || (nPeriods <= 0)); 2624 bFlags = ((nPrincipal <= 0) || (nPayment <= 0) || (nPeriods <= 0));
2628 if (bFlags) { 2625 if (bFlags) {
2629 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 2626 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
2630 } else { 2627 } else {
2631 FX_DOUBLE r = 2628 FX_DOUBLE r =
2632 2 * (nPeriods * nPayment - nPrincipal) / (nPeriods * nPrincipal); 2629 2 * (nPeriods * nPayment - nPrincipal) / (nPeriods * nPrincipal);
2633 FX_DOUBLE nTemp = 1; 2630 FX_DOUBLE nTemp = 1;
2634 for (int32_t i = 0; i < nPeriods; ++i) { 2631 for (int32_t i = 0; i < nPeriods; ++i) {
2635 nTemp *= (1 + r); 2632 nTemp *= (1 + r);
2636 } 2633 }
2637 FX_DOUBLE nRet = r * nTemp / (nTemp - 1) - nPayment / nPrincipal; 2634 FX_DOUBLE nRet = r * nTemp / (nTemp - 1) - nPayment / nPrincipal;
2638 while (fabs(nRet) > kFinancialPrecision && !bFlags) { 2635 while (fabs(nRet) > kFinancialPrecision && !bFlags) {
2639 FX_DOUBLE nDerivative = 0; 2636 FX_DOUBLE nDerivative = 0;
(...skipping 14 matching lines...) Expand all
2654 } 2651 }
2655 if (bFlags) { 2652 if (bFlags) {
2656 FXJSE_Value_SetNull(args.GetReturnValue()); 2653 FXJSE_Value_SetNull(args.GetReturnValue());
2657 } else { 2654 } else {
2658 r = r * 12; 2655 r = r * 12;
2659 FXJSE_Value_SetDouble(args.GetReturnValue(), r); 2656 FXJSE_Value_SetDouble(args.GetReturnValue(), r);
2660 } 2657 }
2661 } 2658 }
2662 } 2659 }
2663 } else { 2660 } else {
2664 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 2661 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Apr");
2665 L"Apr");
2666 } 2662 }
2667 } 2663 }
2668 2664
2669 // static 2665 // static
2670 void CXFA_FM2JSContext::CTerm(CFXJSE_Value* pThis, 2666 void CXFA_FM2JSContext::CTerm(CFXJSE_Value* pThis,
2671 const CFX_ByteStringC& szFuncName, 2667 const CFX_ByteStringC& szFuncName,
2672 CFXJSE_Arguments& args) { 2668 CFXJSE_Arguments& args) {
2673 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 2669 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
2674 if (args.GetLength() == 3) { 2670 if (args.GetLength() == 3) {
2675 FX_BOOL bFlags = FALSE; 2671 FX_BOOL bFlags = FALSE;
2676 FX_FLOAT nRate = 0; 2672 FX_FLOAT nRate = 0;
2677 FX_FLOAT nFutureValue = 0; 2673 FX_FLOAT nFutureValue = 0;
2678 FX_FLOAT nInitAmount = 0; 2674 FX_FLOAT nInitAmount = 0;
2679 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 2675 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
2680 std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); 2676 std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1);
2681 std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2); 2677 std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2);
2682 bFlags = 2678 bFlags =
2683 (ValueIsNull(pThis, argOne.get()) || ValueIsNull(pThis, argTwo.get()) || 2679 (ValueIsNull(pThis, argOne.get()) || ValueIsNull(pThis, argTwo.get()) ||
2684 ValueIsNull(pThis, argThree.get())); 2680 ValueIsNull(pThis, argThree.get()));
2685 if (bFlags) { 2681 if (bFlags) {
2686 FXJSE_Value_SetNull(args.GetReturnValue()); 2682 FXJSE_Value_SetNull(args.GetReturnValue());
2687 } else { 2683 } else {
2688 nRate = ValueToFloat(pThis, argOne.get()); 2684 nRate = ValueToFloat(pThis, argOne.get());
2689 nFutureValue = ValueToFloat(pThis, argTwo.get()); 2685 nFutureValue = ValueToFloat(pThis, argTwo.get());
2690 nInitAmount = ValueToFloat(pThis, argThree.get()); 2686 nInitAmount = ValueToFloat(pThis, argThree.get());
2691 bFlags = ((nRate <= 0) || (nFutureValue <= 0) || (nInitAmount <= 0)); 2687 bFlags = ((nRate <= 0) || (nFutureValue <= 0) || (nInitAmount <= 0));
2692 if (bFlags) { 2688 if (bFlags) {
2693 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 2689 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
2694 } else { 2690 } else {
2695 FXJSE_Value_SetFloat(args.GetReturnValue(), 2691 FXJSE_Value_SetFloat(args.GetReturnValue(),
2696 FXSYS_log((FX_FLOAT)(nFutureValue / nInitAmount)) / 2692 FXSYS_log((FX_FLOAT)(nFutureValue / nInitAmount)) /
2697 FXSYS_log((FX_FLOAT)(1 + nRate))); 2693 FXSYS_log((FX_FLOAT)(1 + nRate)));
2698 } 2694 }
2699 } 2695 }
2700 } else { 2696 } else {
2701 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 2697 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"CTerm");
2702 L"CTerm");
2703 } 2698 }
2704 } 2699 }
2705 2700
2706 // static 2701 // static
2707 void CXFA_FM2JSContext::FV(CFXJSE_Value* pThis, 2702 void CXFA_FM2JSContext::FV(CFXJSE_Value* pThis,
2708 const CFX_ByteStringC& szFuncName, 2703 const CFX_ByteStringC& szFuncName,
2709 CFXJSE_Arguments& args) { 2704 CFXJSE_Arguments& args) {
2710 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 2705 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
2711 if (args.GetLength() == 3) { 2706 if (args.GetLength() == 3) {
2712 FX_BOOL bFlags = FALSE; 2707 FX_BOOL bFlags = FALSE;
2713 FX_DOUBLE nAmount = 0; 2708 FX_DOUBLE nAmount = 0;
2714 FX_DOUBLE nRate = 0; 2709 FX_DOUBLE nRate = 0;
2715 FX_DOUBLE nPeriod = 0; 2710 FX_DOUBLE nPeriod = 0;
2716 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 2711 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
2717 std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); 2712 std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1);
2718 std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2); 2713 std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2);
2719 bFlags = 2714 bFlags =
2720 (ValueIsNull(pThis, argOne.get()) || ValueIsNull(pThis, argTwo.get()) || 2715 (ValueIsNull(pThis, argOne.get()) || ValueIsNull(pThis, argTwo.get()) ||
2721 ValueIsNull(pThis, argThree.get())); 2716 ValueIsNull(pThis, argThree.get()));
2722 if (bFlags) { 2717 if (bFlags) {
2723 FXJSE_Value_SetNull(args.GetReturnValue()); 2718 FXJSE_Value_SetNull(args.GetReturnValue());
2724 } else { 2719 } else {
2725 nAmount = ValueToDouble(pThis, argOne.get()); 2720 nAmount = ValueToDouble(pThis, argOne.get());
2726 nRate = ValueToDouble(pThis, argTwo.get()); 2721 nRate = ValueToDouble(pThis, argTwo.get());
2727 nPeriod = ValueToDouble(pThis, argThree.get()); 2722 nPeriod = ValueToDouble(pThis, argThree.get());
2728 bFlags = ((nRate < 0) || (nPeriod <= 0) || (nAmount <= 0)); 2723 bFlags = ((nRate < 0) || (nPeriod <= 0) || (nAmount <= 0));
2729 if (bFlags) { 2724 if (bFlags) {
2730 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 2725 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
2731 } else { 2726 } else {
2732 FX_DOUBLE dResult = 0; 2727 FX_DOUBLE dResult = 0;
2733 if (!nRate) { 2728 if (!nRate) {
2734 dResult = nAmount * nPeriod; 2729 dResult = nAmount * nPeriod;
2735 } else { 2730 } else {
2736 FX_DOUBLE nTemp = 1; 2731 FX_DOUBLE nTemp = 1;
2737 for (int i = 0; i < nPeriod; ++i) { 2732 for (int i = 0; i < nPeriod; ++i) {
2738 nTemp *= 1 + nRate; 2733 nTemp *= 1 + nRate;
2739 } 2734 }
2740 dResult = nAmount * (nTemp - 1) / nRate; 2735 dResult = nAmount * (nTemp - 1) / nRate;
2741 } 2736 }
2742 FXJSE_Value_SetDouble(args.GetReturnValue(), dResult); 2737 FXJSE_Value_SetDouble(args.GetReturnValue(), dResult);
2743 } 2738 }
2744 } 2739 }
2745 } else { 2740 } else {
2746 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 2741 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"FV");
2747 L"FV");
2748 } 2742 }
2749 } 2743 }
2750 2744
2751 // static 2745 // static
2752 void CXFA_FM2JSContext::IPmt(CFXJSE_Value* pThis, 2746 void CXFA_FM2JSContext::IPmt(CFXJSE_Value* pThis,
2753 const CFX_ByteStringC& szFuncName, 2747 const CFX_ByteStringC& szFuncName,
2754 CFXJSE_Arguments& args) { 2748 CFXJSE_Arguments& args) {
2755 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 2749 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
2756 if (args.GetLength() == 5) { 2750 if (args.GetLength() == 5) {
2757 FX_BOOL bFlags = FALSE; 2751 FX_BOOL bFlags = FALSE;
(...skipping 16 matching lines...) Expand all
2774 FXJSE_Value_SetNull(args.GetReturnValue()); 2768 FXJSE_Value_SetNull(args.GetReturnValue());
2775 } else { 2769 } else {
2776 nPrincpalAmount = ValueToFloat(pThis, argOne.get()); 2770 nPrincpalAmount = ValueToFloat(pThis, argOne.get());
2777 nRate = ValueToFloat(pThis, argTwo.get()); 2771 nRate = ValueToFloat(pThis, argTwo.get());
2778 nPayment = ValueToFloat(pThis, argThree.get()); 2772 nPayment = ValueToFloat(pThis, argThree.get());
2779 nFirstMonth = ValueToFloat(pThis, argFour.get()); 2773 nFirstMonth = ValueToFloat(pThis, argFour.get());
2780 nNumberOfMonths = ValueToFloat(pThis, argFive.get()); 2774 nNumberOfMonths = ValueToFloat(pThis, argFive.get());
2781 bFlags = ((nPrincpalAmount <= 0) || (nRate <= 0) || (nPayment <= 0) || 2775 bFlags = ((nPrincpalAmount <= 0) || (nRate <= 0) || (nPayment <= 0) ||
2782 (nFirstMonth < 0) || (nNumberOfMonths < 0)); 2776 (nFirstMonth < 0) || (nNumberOfMonths < 0));
2783 if (bFlags) { 2777 if (bFlags) {
2784 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 2778 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
2785 } else { 2779 } else {
2786 FX_FLOAT fResult = 0; 2780 FX_FLOAT fResult = 0;
2787 FX_FLOAT nRateOfMonth = nRate / 12; 2781 FX_FLOAT nRateOfMonth = nRate / 12;
2788 int32_t iNums = 2782 int32_t iNums =
2789 (int32_t)((FXSYS_log10((FX_FLOAT)(nPayment / nPrincpalAmount)) - 2783 (int32_t)((FXSYS_log10((FX_FLOAT)(nPayment / nPrincpalAmount)) -
2790 FXSYS_log10((FX_FLOAT)(nPayment / nPrincpalAmount - 2784 FXSYS_log10((FX_FLOAT)(nPayment / nPrincpalAmount -
2791 nRateOfMonth))) / 2785 nRateOfMonth))) /
2792 FXSYS_log10((FX_FLOAT)(1 + nRateOfMonth))); 2786 FXSYS_log10((FX_FLOAT)(1 + nRateOfMonth)));
2793 int32_t iEnd = (int32_t)(nFirstMonth + nNumberOfMonths - 1); 2787 int32_t iEnd = (int32_t)(nFirstMonth + nNumberOfMonths - 1);
2794 if (iEnd > iNums) { 2788 if (iEnd > iNums) {
(...skipping 12 matching lines...) Expand all
2807 for (; i < iEnd; ++i) { 2801 for (; i < iEnd; ++i) {
2808 nSum += nPrincpalAmount * nRateOfMonth; 2802 nSum += nPrincpalAmount * nRateOfMonth;
2809 nPrincpalAmount -= nPayment - nPrincpalAmount * nRateOfMonth; 2803 nPrincpalAmount -= nPayment - nPrincpalAmount * nRateOfMonth;
2810 } 2804 }
2811 fResult = nSum; 2805 fResult = nSum;
2812 } 2806 }
2813 FXJSE_Value_SetFloat(args.GetReturnValue(), fResult); 2807 FXJSE_Value_SetFloat(args.GetReturnValue(), fResult);
2814 } 2808 }
2815 } 2809 }
2816 } else { 2810 } else {
2817 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 2811 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"IPmt");
2818 L"IPmt");
2819 } 2812 }
2820 } 2813 }
2821 2814
2822 // static 2815 // static
2823 void CXFA_FM2JSContext::NPV(CFXJSE_Value* pThis, 2816 void CXFA_FM2JSContext::NPV(CFXJSE_Value* pThis,
2824 const CFX_ByteStringC& szFuncName, 2817 const CFX_ByteStringC& szFuncName,
2825 CFXJSE_Arguments& args) { 2818 CFXJSE_Arguments& args) {
2826 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 2819 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
2827 int32_t argc = args.GetLength(); 2820 int32_t argc = args.GetLength();
2828 if (argc > 2) { 2821 if (argc > 2) {
2829 FX_BOOL bFlags = FALSE; 2822 FX_BOOL bFlags = FALSE;
2830 std::vector<std::unique_ptr<CFXJSE_Value>> argValues; 2823 std::vector<std::unique_ptr<CFXJSE_Value>> argValues;
2831 for (int32_t i = 0; i < argc; i++) { 2824 for (int32_t i = 0; i < argc; i++) {
2832 argValues.push_back(GetSimpleValue(pThis, args, i)); 2825 argValues.push_back(GetSimpleValue(pThis, args, i));
2833 if (ValueIsNull(pThis, argValues[i].get())) { 2826 if (ValueIsNull(pThis, argValues[i].get())) {
2834 bFlags = TRUE; 2827 bFlags = TRUE;
2835 } 2828 }
2836 } 2829 }
2837 if (!bFlags && argc > 0) { 2830 if (!bFlags && argc > 0) {
2838 FX_DOUBLE nRate = 0; 2831 FX_DOUBLE nRate = 0;
2839 nRate = ValueToDouble(pThis, argValues[0].get()); 2832 nRate = ValueToDouble(pThis, argValues[0].get());
2840 if (nRate <= 0) { 2833 if (nRate <= 0) {
2841 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 2834 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
2842 } else { 2835 } else {
2843 FX_DOUBLE* pData = FX_Alloc(FX_DOUBLE, argc - 1); 2836 FX_DOUBLE* pData = FX_Alloc(FX_DOUBLE, argc - 1);
2844 for (int32_t i = 1; i < argc; i++) { 2837 for (int32_t i = 1; i < argc; i++) {
2845 pData[i - 1] = ValueToDouble(pThis, argValues[i].get()); 2838 pData[i - 1] = ValueToDouble(pThis, argValues[i].get());
2846 } 2839 }
2847 FX_DOUBLE nSum = 0; 2840 FX_DOUBLE nSum = 0;
2848 int32_t iIndex = 0; 2841 int32_t iIndex = 0;
2849 for (int32_t i = 0; i < argc - 1; i++) { 2842 for (int32_t i = 0; i < argc - 1; i++) {
2850 FX_DOUBLE nTemp = 1; 2843 FX_DOUBLE nTemp = 1;
2851 for (int32_t j = 0; j <= i; j++) { 2844 for (int32_t j = 0; j <= i; j++) {
2852 nTemp *= 1 + nRate; 2845 nTemp *= 1 + nRate;
2853 } 2846 }
2854 FX_DOUBLE nNum = *(pData + iIndex++); 2847 FX_DOUBLE nNum = *(pData + iIndex++);
2855 nSum += nNum / nTemp; 2848 nSum += nNum / nTemp;
2856 } 2849 }
2857 FXJSE_Value_SetDouble(args.GetReturnValue(), nSum); 2850 FXJSE_Value_SetDouble(args.GetReturnValue(), nSum);
2858 FX_Free(pData); 2851 FX_Free(pData);
2859 pData = 0; 2852 pData = 0;
2860 } 2853 }
2861 } else { 2854 } else {
2862 FXJSE_Value_SetNull(args.GetReturnValue()); 2855 FXJSE_Value_SetNull(args.GetReturnValue());
2863 } 2856 }
2864 } else { 2857 } else {
2865 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 2858 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"NPV");
2866 L"NPV");
2867 } 2859 }
2868 } 2860 }
2869 2861
2870 // static 2862 // static
2871 void CXFA_FM2JSContext::Pmt(CFXJSE_Value* pThis, 2863 void CXFA_FM2JSContext::Pmt(CFXJSE_Value* pThis,
2872 const CFX_ByteStringC& szFuncName, 2864 const CFX_ByteStringC& szFuncName,
2873 CFXJSE_Arguments& args) { 2865 CFXJSE_Arguments& args) {
2874 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 2866 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
2875 if (args.GetLength() == 3) { 2867 if (args.GetLength() == 3) {
2876 FX_BOOL bFlags = FALSE; 2868 FX_BOOL bFlags = FALSE;
2877 FX_FLOAT nPrincipal = 0; 2869 FX_FLOAT nPrincipal = 0;
2878 FX_FLOAT nRate = 0; 2870 FX_FLOAT nRate = 0;
2879 FX_FLOAT nPeriods = 0; 2871 FX_FLOAT nPeriods = 0;
2880 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 2872 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
2881 std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); 2873 std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1);
2882 std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2); 2874 std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2);
2883 bFlags = 2875 bFlags =
2884 (ValueIsNull(pThis, argOne.get()) || ValueIsNull(pThis, argTwo.get()) || 2876 (ValueIsNull(pThis, argOne.get()) || ValueIsNull(pThis, argTwo.get()) ||
2885 ValueIsNull(pThis, argThree.get())); 2877 ValueIsNull(pThis, argThree.get()));
2886 if (bFlags) { 2878 if (bFlags) {
2887 FXJSE_Value_SetNull(args.GetReturnValue()); 2879 FXJSE_Value_SetNull(args.GetReturnValue());
2888 } else { 2880 } else {
2889 nPrincipal = ValueToFloat(pThis, argOne.get()); 2881 nPrincipal = ValueToFloat(pThis, argOne.get());
2890 nRate = ValueToFloat(pThis, argTwo.get()); 2882 nRate = ValueToFloat(pThis, argTwo.get());
2891 nPeriods = ValueToFloat(pThis, argThree.get()); 2883 nPeriods = ValueToFloat(pThis, argThree.get());
2892 bFlags = ((nPrincipal <= 0) || (nRate <= 0) || (nPeriods <= 0)); 2884 bFlags = ((nPrincipal <= 0) || (nRate <= 0) || (nPeriods <= 0));
2893 if (bFlags) { 2885 if (bFlags) {
2894 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 2886 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
2895 } else { 2887 } else {
2896 FX_FLOAT nSum = 0; 2888 FX_FLOAT nSum = 0;
2897 FX_FLOAT nTmp = 1 + nRate; 2889 FX_FLOAT nTmp = 1 + nRate;
2898 nSum = nTmp; 2890 nSum = nTmp;
2899 for (int32_t i = 0; i < nPeriods - 1; ++i) { 2891 for (int32_t i = 0; i < nPeriods - 1; ++i) {
2900 nSum *= nTmp; 2892 nSum *= nTmp;
2901 } 2893 }
2902 FXJSE_Value_SetFloat(args.GetReturnValue(), 2894 FXJSE_Value_SetFloat(args.GetReturnValue(),
2903 (nPrincipal * nRate * nSum) / (nSum - 1)); 2895 (nPrincipal * nRate * nSum) / (nSum - 1));
2904 } 2896 }
2905 } 2897 }
2906 } else { 2898 } else {
2907 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 2899 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Pmt");
2908 L"Pmt");
2909 } 2900 }
2910 } 2901 }
2911 2902
2912 // static 2903 // static
2913 void CXFA_FM2JSContext::PPmt(CFXJSE_Value* pThis, 2904 void CXFA_FM2JSContext::PPmt(CFXJSE_Value* pThis,
2914 const CFX_ByteStringC& szFuncName, 2905 const CFX_ByteStringC& szFuncName,
2915 CFXJSE_Arguments& args) { 2906 CFXJSE_Arguments& args) {
2916 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 2907 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
2917 if (args.GetLength() == 5) { 2908 if (args.GetLength() == 5) {
2918 FX_BOOL bFlags = FALSE; 2909 FX_BOOL bFlags = FALSE;
(...skipping 16 matching lines...) Expand all
2935 FXJSE_Value_SetNull(args.GetReturnValue()); 2926 FXJSE_Value_SetNull(args.GetReturnValue());
2936 } else { 2927 } else {
2937 nPrincpalAmount = ValueToFloat(pThis, argOne.get()); 2928 nPrincpalAmount = ValueToFloat(pThis, argOne.get());
2938 nRate = ValueToFloat(pThis, argTwo.get()); 2929 nRate = ValueToFloat(pThis, argTwo.get());
2939 nPayment = ValueToFloat(pThis, argThree.get()); 2930 nPayment = ValueToFloat(pThis, argThree.get());
2940 nFirstMonth = ValueToFloat(pThis, argFour.get()); 2931 nFirstMonth = ValueToFloat(pThis, argFour.get());
2941 nNumberOfMonths = ValueToFloat(pThis, argFive.get()); 2932 nNumberOfMonths = ValueToFloat(pThis, argFive.get());
2942 bFlags = ((nPrincpalAmount <= 0) || (nRate <= 0) || (nPayment <= 0) || 2933 bFlags = ((nPrincpalAmount <= 0) || (nRate <= 0) || (nPayment <= 0) ||
2943 (nFirstMonth < 0) || (nNumberOfMonths < 0)); 2934 (nFirstMonth < 0) || (nNumberOfMonths < 0));
2944 if (bFlags) { 2935 if (bFlags) {
2945 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 2936 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
2946 } else { 2937 } else {
2947 int32_t iEnd = (int32_t)(nFirstMonth + nNumberOfMonths - 1); 2938 int32_t iEnd = (int32_t)(nFirstMonth + nNumberOfMonths - 1);
2948 FX_FLOAT nSum = 0; 2939 FX_FLOAT nSum = 0;
2949 FX_FLOAT nRateOfMonth = nRate / 12; 2940 FX_FLOAT nRateOfMonth = nRate / 12;
2950 int32_t iNums = 2941 int32_t iNums =
2951 (int32_t)((FXSYS_log10((FX_FLOAT)(nPayment / nPrincpalAmount)) - 2942 (int32_t)((FXSYS_log10((FX_FLOAT)(nPayment / nPrincpalAmount)) -
2952 FXSYS_log10((FX_FLOAT)(nPayment / nPrincpalAmount - 2943 FXSYS_log10((FX_FLOAT)(nPayment / nPrincpalAmount -
2953 nRateOfMonth))) / 2944 nRateOfMonth))) /
2954 FXSYS_log10((FX_FLOAT)(1 + nRateOfMonth))); 2945 FXSYS_log10((FX_FLOAT)(1 + nRateOfMonth)));
2955 if (iEnd > iNums) { 2946 if (iEnd > iNums) {
2956 iEnd = iNums; 2947 iEnd = iNums;
2957 } 2948 }
2958 if (nPayment < nPrincpalAmount * nRateOfMonth) { 2949 if (nPayment < nPrincpalAmount * nRateOfMonth) {
2959 bFlags = TRUE; 2950 bFlags = TRUE;
2960 } 2951 }
2961 if (!bFlags) { 2952 if (!bFlags) {
2962 int32_t i = 0; 2953 int32_t i = 0;
2963 for (i = 0; i < nFirstMonth - 1; ++i) { 2954 for (i = 0; i < nFirstMonth - 1; ++i) {
2964 nPrincpalAmount -= nPayment - nPrincpalAmount * nRateOfMonth; 2955 nPrincpalAmount -= nPayment - nPrincpalAmount * nRateOfMonth;
2965 } 2956 }
2966 FX_FLOAT nTemp = 0; 2957 FX_FLOAT nTemp = 0;
2967 for (; i < iEnd; ++i) { 2958 for (; i < iEnd; ++i) {
2968 nTemp = nPayment - nPrincpalAmount * nRateOfMonth; 2959 nTemp = nPayment - nPrincpalAmount * nRateOfMonth;
2969 nSum += nTemp; 2960 nSum += nTemp;
2970 nPrincpalAmount -= nTemp; 2961 nPrincpalAmount -= nTemp;
2971 } 2962 }
2972 FXJSE_Value_SetFloat(args.GetReturnValue(), nSum); 2963 FXJSE_Value_SetFloat(args.GetReturnValue(), nSum);
2973 } else { 2964 } else {
2974 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 2965 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
2975 } 2966 }
2976 } 2967 }
2977 } 2968 }
2978 } else { 2969 } else {
2979 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 2970 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"PPmt");
2980 L"PPmt");
2981 } 2971 }
2982 } 2972 }
2983 2973
2984 // static 2974 // static
2985 void CXFA_FM2JSContext::PV(CFXJSE_Value* pThis, 2975 void CXFA_FM2JSContext::PV(CFXJSE_Value* pThis,
2986 const CFX_ByteStringC& szFuncName, 2976 const CFX_ByteStringC& szFuncName,
2987 CFXJSE_Arguments& args) { 2977 CFXJSE_Arguments& args) {
2988 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 2978 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
2989 if (args.GetLength() == 3) { 2979 if (args.GetLength() == 3) {
2990 FX_BOOL bFlags = FALSE; 2980 FX_BOOL bFlags = FALSE;
2991 FX_DOUBLE nAmount = 0; 2981 FX_DOUBLE nAmount = 0;
2992 FX_DOUBLE nRate = 0; 2982 FX_DOUBLE nRate = 0;
2993 FX_DOUBLE nPeriod = 0; 2983 FX_DOUBLE nPeriod = 0;
2994 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 2984 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
2995 std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); 2985 std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1);
2996 std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2); 2986 std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2);
2997 bFlags = 2987 bFlags =
2998 (ValueIsNull(pThis, argOne.get()) || ValueIsNull(pThis, argTwo.get()) || 2988 (ValueIsNull(pThis, argOne.get()) || ValueIsNull(pThis, argTwo.get()) ||
2999 ValueIsNull(pThis, argThree.get())); 2989 ValueIsNull(pThis, argThree.get()));
3000 if (bFlags) { 2990 if (bFlags) {
3001 FXJSE_Value_SetNull(args.GetReturnValue()); 2991 FXJSE_Value_SetNull(args.GetReturnValue());
3002 } else { 2992 } else {
3003 nAmount = ValueToDouble(pThis, argOne.get()); 2993 nAmount = ValueToDouble(pThis, argOne.get());
3004 nRate = ValueToDouble(pThis, argTwo.get()); 2994 nRate = ValueToDouble(pThis, argTwo.get());
3005 nPeriod = ValueToDouble(pThis, argThree.get()); 2995 nPeriod = ValueToDouble(pThis, argThree.get());
3006 bFlags = ((nAmount <= 0) || (nRate < 0) || (nPeriod <= 0)); 2996 bFlags = ((nAmount <= 0) || (nRate < 0) || (nPeriod <= 0));
3007 if (bFlags) { 2997 if (bFlags) {
3008 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 2998 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
3009 } else { 2999 } else {
3010 FX_DOUBLE nTemp = 1; 3000 FX_DOUBLE nTemp = 1;
3011 for (int32_t i = 0; i < nPeriod; ++i) { 3001 for (int32_t i = 0; i < nPeriod; ++i) {
3012 nTemp *= 1 + nRate; 3002 nTemp *= 1 + nRate;
3013 } 3003 }
3014 nTemp = 1 / nTemp; 3004 nTemp = 1 / nTemp;
3015 FXJSE_Value_SetDouble(args.GetReturnValue(), 3005 FXJSE_Value_SetDouble(args.GetReturnValue(),
3016 nAmount * ((1 - nTemp) / nRate)); 3006 nAmount * ((1 - nTemp) / nRate));
3017 } 3007 }
3018 } 3008 }
3019 } else { 3009 } else {
3020 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 3010 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"PV");
3021 L"PV");
3022 } 3011 }
3023 } 3012 }
3024 3013
3025 // static 3014 // static
3026 void CXFA_FM2JSContext::Rate(CFXJSE_Value* pThis, 3015 void CXFA_FM2JSContext::Rate(CFXJSE_Value* pThis,
3027 const CFX_ByteStringC& szFuncName, 3016 const CFX_ByteStringC& szFuncName,
3028 CFXJSE_Arguments& args) { 3017 CFXJSE_Arguments& args) {
3029 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 3018 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
3030 if (args.GetLength() == 3) { 3019 if (args.GetLength() == 3) {
3031 FX_BOOL bFlags = FALSE; 3020 FX_BOOL bFlags = FALSE;
3032 FX_FLOAT nFuture = 0; 3021 FX_FLOAT nFuture = 0;
3033 FX_FLOAT nPresent = 0; 3022 FX_FLOAT nPresent = 0;
3034 FX_FLOAT nTotalNumber = 0; 3023 FX_FLOAT nTotalNumber = 0;
3035 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 3024 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
3036 std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); 3025 std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1);
3037 std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2); 3026 std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2);
3038 bFlags = 3027 bFlags =
3039 (ValueIsNull(pThis, argOne.get()) || ValueIsNull(pThis, argTwo.get()) || 3028 (ValueIsNull(pThis, argOne.get()) || ValueIsNull(pThis, argTwo.get()) ||
3040 ValueIsNull(pThis, argThree.get())); 3029 ValueIsNull(pThis, argThree.get()));
3041 if (bFlags) { 3030 if (bFlags) {
3042 FXJSE_Value_SetNull(args.GetReturnValue()); 3031 FXJSE_Value_SetNull(args.GetReturnValue());
3043 } else { 3032 } else {
3044 nFuture = ValueToFloat(pThis, argOne.get()); 3033 nFuture = ValueToFloat(pThis, argOne.get());
3045 nPresent = ValueToFloat(pThis, argTwo.get()); 3034 nPresent = ValueToFloat(pThis, argTwo.get());
3046 nTotalNumber = ValueToFloat(pThis, argThree.get()); 3035 nTotalNumber = ValueToFloat(pThis, argThree.get());
3047 bFlags = ((nFuture <= 0) || (nPresent < 0) || (nTotalNumber <= 0)); 3036 bFlags = ((nFuture <= 0) || (nPresent < 0) || (nTotalNumber <= 0));
3048 if (bFlags) { 3037 if (bFlags) {
3049 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 3038 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
3050 } else { 3039 } else {
3051 FXJSE_Value_SetFloat(args.GetReturnValue(), 3040 FXJSE_Value_SetFloat(args.GetReturnValue(),
3052 (FXSYS_pow((FX_FLOAT)(nFuture / nPresent), 3041 (FXSYS_pow((FX_FLOAT)(nFuture / nPresent),
3053 (FX_FLOAT)(1 / nTotalNumber)) - 3042 (FX_FLOAT)(1 / nTotalNumber)) -
3054 1)); 3043 1));
3055 } 3044 }
3056 } 3045 }
3057 } else { 3046 } else {
3058 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 3047 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Rate");
3059 L"Rate");
3060 } 3048 }
3061 } 3049 }
3062 3050
3063 // static 3051 // static
3064 void CXFA_FM2JSContext::Term(CFXJSE_Value* pThis, 3052 void CXFA_FM2JSContext::Term(CFXJSE_Value* pThis,
3065 const CFX_ByteStringC& szFuncName, 3053 const CFX_ByteStringC& szFuncName,
3066 CFXJSE_Arguments& args) { 3054 CFXJSE_Arguments& args) {
3067 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 3055 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
3068 if (args.GetLength() == 3) { 3056 if (args.GetLength() == 3) {
3069 FX_BOOL bFlags = FALSE; 3057 FX_BOOL bFlags = FALSE;
3070 FX_FLOAT nMount = 0; 3058 FX_FLOAT nMount = 0;
3071 FX_FLOAT nRate = 0; 3059 FX_FLOAT nRate = 0;
3072 FX_FLOAT nFuture = 0; 3060 FX_FLOAT nFuture = 0;
3073 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 3061 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
3074 std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); 3062 std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1);
3075 std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2); 3063 std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2);
3076 bFlags = 3064 bFlags =
3077 (ValueIsNull(pThis, argOne.get()) || ValueIsNull(pThis, argTwo.get()) || 3065 (ValueIsNull(pThis, argOne.get()) || ValueIsNull(pThis, argTwo.get()) ||
3078 ValueIsNull(pThis, argThree.get())); 3066 ValueIsNull(pThis, argThree.get()));
3079 if (bFlags) { 3067 if (bFlags) {
3080 FXJSE_Value_SetNull(args.GetReturnValue()); 3068 FXJSE_Value_SetNull(args.GetReturnValue());
3081 } else { 3069 } else {
3082 nMount = ValueToFloat(pThis, argOne.get()); 3070 nMount = ValueToFloat(pThis, argOne.get());
3083 nRate = ValueToFloat(pThis, argTwo.get()); 3071 nRate = ValueToFloat(pThis, argTwo.get());
3084 nFuture = ValueToFloat(pThis, argThree.get()); 3072 nFuture = ValueToFloat(pThis, argThree.get());
3085 bFlags = ((nMount <= 0) || (nRate <= 0) || (nFuture <= 0)); 3073 bFlags = ((nMount <= 0) || (nRate <= 0) || (nFuture <= 0));
3086 if (bFlags) { 3074 if (bFlags) {
3087 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 3075 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
3088 } else { 3076 } else {
3089 FXJSE_Value_SetFloat( 3077 FXJSE_Value_SetFloat(
3090 args.GetReturnValue(), 3078 args.GetReturnValue(),
3091 (FXSYS_log((FX_FLOAT)(nFuture / nMount * nRate) + 1) / 3079 (FXSYS_log((FX_FLOAT)(nFuture / nMount * nRate) + 1) /
3092 FXSYS_log((FX_FLOAT)(1 + nRate)))); 3080 FXSYS_log((FX_FLOAT)(1 + nRate))));
3093 } 3081 }
3094 } 3082 }
3095 } else { 3083 } else {
3096 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 3084 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Term");
3097 L"Term");
3098 } 3085 }
3099 } 3086 }
3100 3087
3101 // static 3088 // static
3102 void CXFA_FM2JSContext::Choose(CFXJSE_Value* pThis, 3089 void CXFA_FM2JSContext::Choose(CFXJSE_Value* pThis,
3103 const CFX_ByteStringC& szFuncName, 3090 const CFX_ByteStringC& szFuncName,
3104 CFXJSE_Arguments& args) { 3091 CFXJSE_Arguments& args) {
3105 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 3092 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
3106 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); 3093 v8::Isolate* pIsolate = pContext->GetScriptRuntime();
3107 int32_t argc = args.GetLength(); 3094 int32_t argc = args.GetLength();
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
3171 bFound = TRUE; 3158 bFound = TRUE;
3172 } 3159 }
3173 } 3160 }
3174 iArgIndex++; 3161 iArgIndex++;
3175 } 3162 }
3176 if (!bFound) { 3163 if (!bFound) {
3177 FXJSE_Value_SetUTF8String(args.GetReturnValue(), ""); 3164 FXJSE_Value_SetUTF8String(args.GetReturnValue(), "");
3178 } 3165 }
3179 } 3166 }
3180 } else { 3167 } else {
3181 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 3168 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Choose");
3182 L"Choose");
3183 } 3169 }
3184 } 3170 }
3185 3171
3186 // static 3172 // static
3187 void CXFA_FM2JSContext::Exists(CFXJSE_Value* pThis, 3173 void CXFA_FM2JSContext::Exists(CFXJSE_Value* pThis,
3188 const CFX_ByteStringC& szFuncName, 3174 const CFX_ByteStringC& szFuncName,
3189 CFXJSE_Arguments& args) { 3175 CFXJSE_Arguments& args) {
3190 if (args.GetLength() == 1) { 3176 if (args.GetLength() == 1) {
3191 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); 3177 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0);
3192 FXJSE_Value_SetInteger(args.GetReturnValue(), 3178 FXJSE_Value_SetInteger(args.GetReturnValue(),
3193 FXJSE_Value_IsObject(argOne.get())); 3179 FXJSE_Value_IsObject(argOne.get()));
3194 } else { 3180 } else {
3195 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 3181 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
3196 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Exists"); 3182 L"Exists");
3197 } 3183 }
3198 } 3184 }
3199 3185
3200 // static 3186 // static
3201 void CXFA_FM2JSContext::HasValue(CFXJSE_Value* pThis, 3187 void CXFA_FM2JSContext::HasValue(CFXJSE_Value* pThis,
3202 const CFX_ByteStringC& szFuncName, 3188 const CFX_ByteStringC& szFuncName,
3203 CFXJSE_Arguments& args) { 3189 CFXJSE_Arguments& args) {
3204 if (args.GetLength() == 1) { 3190 if (args.GetLength() == 1) {
3205 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 3191 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
3206 if (FXJSE_Value_IsUTF8String(argOne.get())) { 3192 if (FXJSE_Value_IsUTF8String(argOne.get())) {
3207 CFX_ByteString valueStr; 3193 CFX_ByteString valueStr;
3208 FXJSE_Value_ToUTF8String(argOne.get(), valueStr); 3194 FXJSE_Value_ToUTF8String(argOne.get(), valueStr);
3209 valueStr.TrimLeft(); 3195 valueStr.TrimLeft();
3210 FXJSE_Value_SetInteger(args.GetReturnValue(), (!valueStr.IsEmpty())); 3196 FXJSE_Value_SetInteger(args.GetReturnValue(), (!valueStr.IsEmpty()));
3211 } else if (FXJSE_Value_IsNumber(argOne.get()) || 3197 } else if (FXJSE_Value_IsNumber(argOne.get()) ||
3212 FXJSE_Value_IsBoolean(argOne.get())) { 3198 FXJSE_Value_IsBoolean(argOne.get())) {
3213 FXJSE_Value_SetInteger(args.GetReturnValue(), TRUE); 3199 FXJSE_Value_SetInteger(args.GetReturnValue(), TRUE);
3214 } else { 3200 } else {
3215 FXJSE_Value_SetInteger(args.GetReturnValue(), FALSE); 3201 FXJSE_Value_SetInteger(args.GetReturnValue(), FALSE);
3216 } 3202 }
3217 } else { 3203 } else {
3218 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 3204 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
3219 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"HasValue"); 3205 L"HasValue");
3220 } 3206 }
3221 } 3207 }
3222 3208
3223 // static 3209 // static
3224 void CXFA_FM2JSContext::Oneof(CFXJSE_Value* pThis, 3210 void CXFA_FM2JSContext::Oneof(CFXJSE_Value* pThis,
3225 const CFX_ByteStringC& szFuncName, 3211 const CFX_ByteStringC& szFuncName,
3226 CFXJSE_Arguments& args) { 3212 CFXJSE_Arguments& args) {
3227 if (args.GetLength() > 1) { 3213 if (args.GetLength() > 1) {
3228 FX_BOOL bFlags = FALSE; 3214 FX_BOOL bFlags = FALSE;
3229 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 3215 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
3230 CFXJSE_Value** parametersValue = nullptr; 3216 CFXJSE_Value** parametersValue = nullptr;
3231 int32_t iCount = 0; 3217 int32_t iCount = 0;
3232 unfoldArgs(pThis, args, parametersValue, iCount, 1); 3218 unfoldArgs(pThis, args, parametersValue, iCount, 1);
3233 for (int32_t i = 0; i < iCount; i++) { 3219 for (int32_t i = 0; i < iCount; i++) {
3234 if (simpleValueCompare(pThis, argOne.get(), parametersValue[i])) { 3220 if (simpleValueCompare(pThis, argOne.get(), parametersValue[i])) {
3235 bFlags = TRUE; 3221 bFlags = TRUE;
3236 break; 3222 break;
3237 } 3223 }
3238 } 3224 }
3239 FXJSE_Value_SetInteger(args.GetReturnValue(), bFlags); 3225 FXJSE_Value_SetInteger(args.GetReturnValue(), bFlags);
3240 for (int32_t i = 0; i < iCount; i++) { 3226 for (int32_t i = 0; i < iCount; i++) {
3241 delete parametersValue[i]; 3227 delete parametersValue[i];
3242 } 3228 }
3243 FX_Free(parametersValue); 3229 FX_Free(parametersValue);
3244 } else { 3230 } else {
3245 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 3231 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
3246 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Oneof"); 3232 L"Oneof");
3247 } 3233 }
3248 } 3234 }
3249 3235
3250 // static 3236 // static
3251 void CXFA_FM2JSContext::Within(CFXJSE_Value* pThis, 3237 void CXFA_FM2JSContext::Within(CFXJSE_Value* pThis,
3252 const CFX_ByteStringC& szFuncName, 3238 const CFX_ByteStringC& szFuncName,
3253 CFXJSE_Arguments& args) { 3239 CFXJSE_Arguments& args) {
3254 if (args.GetLength() == 3) { 3240 if (args.GetLength() == 3) {
3255 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 3241 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
3256 if (FXJSE_Value_IsNull(argOne.get())) { 3242 if (FXJSE_Value_IsNull(argOne.get())) {
(...skipping 15 matching lines...) Expand all
3272 ValueToUTF8String(argOne.get(), oneString); 3258 ValueToUTF8String(argOne.get(), oneString);
3273 ValueToUTF8String(argLow.get(), lowString); 3259 ValueToUTF8String(argLow.get(), lowString);
3274 ValueToUTF8String(argHeight.get(), heightString); 3260 ValueToUTF8String(argHeight.get(), heightString);
3275 FXJSE_Value_SetInteger( 3261 FXJSE_Value_SetInteger(
3276 args.GetReturnValue(), 3262 args.GetReturnValue(),
3277 ((oneString.Compare(lowString.AsStringC()) >= 0) && 3263 ((oneString.Compare(lowString.AsStringC()) >= 0) &&
3278 (oneString.Compare(heightString.AsStringC()) <= 0))); 3264 (oneString.Compare(heightString.AsStringC()) <= 0)));
3279 } 3265 }
3280 } 3266 }
3281 } else { 3267 } else {
3282 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 3268 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
3283 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Within"); 3269 L"Within");
3284 } 3270 }
3285 } 3271 }
3286 3272
3287 // static 3273 // static
3288 void CXFA_FM2JSContext::If(CFXJSE_Value* pThis, 3274 void CXFA_FM2JSContext::If(CFXJSE_Value* pThis,
3289 const CFX_ByteStringC& szFuncName, 3275 const CFX_ByteStringC& szFuncName,
3290 CFXJSE_Arguments& args) { 3276 CFXJSE_Arguments& args) {
3291 if (args.GetLength() == 3) { 3277 if (args.GetLength() == 3) {
3292 std::unique_ptr<CFXJSE_Value> argCondition = GetSimpleValue(pThis, args, 0); 3278 std::unique_ptr<CFXJSE_Value> argCondition = GetSimpleValue(pThis, args, 0);
3293 std::unique_ptr<CFXJSE_Value> argFirstValue = 3279 std::unique_ptr<CFXJSE_Value> argFirstValue =
3294 GetSimpleValue(pThis, args, 1); 3280 GetSimpleValue(pThis, args, 1);
3295 std::unique_ptr<CFXJSE_Value> argSecondValue = 3281 std::unique_ptr<CFXJSE_Value> argSecondValue =
3296 GetSimpleValue(pThis, args, 2); 3282 GetSimpleValue(pThis, args, 2);
3297 FX_BOOL bCondition = FXJSE_Value_ToBoolean(argCondition.get()); 3283 FX_BOOL bCondition = FXJSE_Value_ToBoolean(argCondition.get());
3298 FXJSE_Value_Set(args.GetReturnValue(), 3284 FXJSE_Value_Set(args.GetReturnValue(),
3299 bCondition ? argFirstValue.get() : argSecondValue.get()); 3285 bCondition ? argFirstValue.get() : argSecondValue.get());
3300 } else { 3286 } else {
3301 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 3287 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
3302 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"If"); 3288 L"If");
3303 } 3289 }
3304 } 3290 }
3305 3291
3306 // static 3292 // static
3307 void CXFA_FM2JSContext::Eval(CFXJSE_Value* pThis, 3293 void CXFA_FM2JSContext::Eval(CFXJSE_Value* pThis,
3308 const CFX_ByteStringC& szFuncName, 3294 const CFX_ByteStringC& szFuncName,
3309 CFXJSE_Arguments& args) { 3295 CFXJSE_Arguments& args) {
3310 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 3296 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
3311 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); 3297 v8::Isolate* pIsolate = pContext->GetScriptRuntime();
3312 if (args.GetLength() == 1) { 3298 if (args.GetLength() == 1) {
(...skipping 14 matching lines...) Expand all
3327 std::unique_ptr<CFXJSE_Value> returnValue(new CFXJSE_Value(pIsolate)); 3313 std::unique_ptr<CFXJSE_Value> returnValue(new CFXJSE_Value(pIsolate));
3328 javaScript = wsJavaScriptBuf.AsStringC(); 3314 javaScript = wsJavaScriptBuf.AsStringC();
3329 FXJSE_ExecuteScript( 3315 FXJSE_ExecuteScript(
3330 pTempContext, 3316 pTempContext,
3331 FX_UTF8Encode(javaScript.c_str(), javaScript.GetLength()).c_str(), 3317 FX_UTF8Encode(javaScript.c_str(), javaScript.GetLength()).c_str(),
3332 returnValue.get()); 3318 returnValue.get());
3333 FXJSE_Value_Set(args.GetReturnValue(), returnValue.get()); 3319 FXJSE_Value_Set(args.GetReturnValue(), returnValue.get());
3334 FXJSE_Context_Release(pTempContext); 3320 FXJSE_Context_Release(pTempContext);
3335 } 3321 }
3336 } else { 3322 } else {
3337 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 3323 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Eval");
3338 L"Eval");
3339 } 3324 }
3340 } 3325 }
3341 3326
3342 // static 3327 // static
3343 void CXFA_FM2JSContext::Ref(CFXJSE_Value* pThis, 3328 void CXFA_FM2JSContext::Ref(CFXJSE_Value* pThis,
3344 const CFX_ByteStringC& szFuncName, 3329 const CFX_ByteStringC& szFuncName,
3345 CFXJSE_Arguments& args) { 3330 CFXJSE_Arguments& args) {
3346 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 3331 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
3347 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); 3332 v8::Isolate* pIsolate = pContext->GetScriptRuntime();
3348 if (args.GetLength() == 1) { 3333 if (args.GetLength() == 1) {
(...skipping 14 matching lines...) Expand all
3363 #ifndef NDEBUG 3348 #ifndef NDEBUG
3364 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 3349 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
3365 FXJSE_Value_GetObjectProp(argOne.get(), "length", lengthValue.get()); 3350 FXJSE_Value_GetObjectProp(argOne.get(), "length", lengthValue.get());
3366 ASSERT(FXJSE_Value_ToInteger(lengthValue.get()) >= 3); 3351 ASSERT(FXJSE_Value_ToInteger(lengthValue.get()) >= 3);
3367 #endif 3352 #endif
3368 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 3353 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
3369 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 3354 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
3370 FXJSE_Value_GetObjectPropByIdx(argOne.get(), 1, propertyValue.get()); 3355 FXJSE_Value_GetObjectPropByIdx(argOne.get(), 1, propertyValue.get());
3371 FXJSE_Value_GetObjectPropByIdx(argOne.get(), 2, jsObjectValue.get()); 3356 FXJSE_Value_GetObjectPropByIdx(argOne.get(), 2, jsObjectValue.get());
3372 if (FXJSE_Value_IsNull(jsObjectValue.get())) { 3357 if (FXJSE_Value_IsNull(jsObjectValue.get())) {
3373 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 3358 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
3374 } else if (FXJSE_Value_IsNull(propertyValue.get()) && 3359 } else if (FXJSE_Value_IsNull(propertyValue.get()) &&
3375 (!FXJSE_Value_IsNull(jsObjectValue.get()))) { 3360 (!FXJSE_Value_IsNull(jsObjectValue.get()))) {
3376 CFXJSE_Value* rgValues[3]; 3361 CFXJSE_Value* rgValues[3];
3377 for (int32_t i = 0; i < 3; i++) 3362 for (int32_t i = 0; i < 3; i++)
3378 rgValues[i] = new CFXJSE_Value(pIsolate); 3363 rgValues[i] = new CFXJSE_Value(pIsolate);
3379 3364
3380 FXJSE_Value_SetInteger(rgValues[0], 3); 3365 FXJSE_Value_SetInteger(rgValues[0], 3);
3381 FXJSE_Value_SetNull(rgValues[1]); 3366 FXJSE_Value_SetNull(rgValues[1]);
3382 FXJSE_Value_Set(rgValues[2], jsObjectValue.get()); 3367 FXJSE_Value_Set(rgValues[2], jsObjectValue.get());
3383 FXJSE_Value_SetArray(args.GetReturnValue(), 3, rgValues); 3368 FXJSE_Value_SetArray(args.GetReturnValue(), 3, rgValues);
3384 for (int32_t i = 0; i < 3; i++) 3369 for (int32_t i = 0; i < 3; i++)
3385 delete rgValues[i]; 3370 delete rgValues[i];
3386 3371
3387 } else { 3372 } else {
3388 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 3373 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
3389 } 3374 }
3390 } else if (FXJSE_Value_IsObject(argOne.get())) { 3375 } else if (FXJSE_Value_IsObject(argOne.get())) {
3391 CFXJSE_Value* rgValues[3]; 3376 CFXJSE_Value* rgValues[3];
3392 for (int32_t i = 0; i < 3; i++) 3377 for (int32_t i = 0; i < 3; i++)
3393 rgValues[i] = new CFXJSE_Value(pIsolate); 3378 rgValues[i] = new CFXJSE_Value(pIsolate);
3394 3379
3395 FXJSE_Value_SetInteger(rgValues[0], 3); 3380 FXJSE_Value_SetInteger(rgValues[0], 3);
3396 FXJSE_Value_SetNull(rgValues[1]); 3381 FXJSE_Value_SetNull(rgValues[1]);
3397 FXJSE_Value_Set(rgValues[2], argOne.get()); 3382 FXJSE_Value_Set(rgValues[2], argOne.get());
3398 FXJSE_Value_SetArray(args.GetReturnValue(), 3, rgValues); 3383 FXJSE_Value_SetArray(args.GetReturnValue(), 3, rgValues);
3399 3384
3400 for (int32_t i = 0; i < 3; i++) 3385 for (int32_t i = 0; i < 3; i++)
3401 delete rgValues[i]; 3386 delete rgValues[i];
3402 } else if (FXJSE_Value_IsBoolean(argOne.get()) || 3387 } else if (FXJSE_Value_IsBoolean(argOne.get()) ||
3403 FXJSE_Value_IsUTF8String(argOne.get()) || 3388 FXJSE_Value_IsUTF8String(argOne.get()) ||
3404 FXJSE_Value_IsNumber(argOne.get())) { 3389 FXJSE_Value_IsNumber(argOne.get())) {
3405 FXJSE_Value_Set(args.GetReturnValue(), argOne.get()); 3390 FXJSE_Value_Set(args.GetReturnValue(), argOne.get());
3406 } else { 3391 } else {
3407 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 3392 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
3408 } 3393 }
3409 } else { 3394 } else {
3410 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 3395 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Ref");
3411 L"Ref");
3412 } 3396 }
3413 } 3397 }
3414 3398
3415 // static 3399 // static
3416 void CXFA_FM2JSContext::UnitType(CFXJSE_Value* pThis, 3400 void CXFA_FM2JSContext::UnitType(CFXJSE_Value* pThis,
3417 const CFX_ByteStringC& szFuncName, 3401 const CFX_ByteStringC& szFuncName,
3418 CFXJSE_Arguments& args) { 3402 CFXJSE_Arguments& args) {
3419 if (args.GetLength() == 1) { 3403 if (args.GetLength() == 1) {
3420 std::unique_ptr<CFXJSE_Value> unitspanValue = 3404 std::unique_ptr<CFXJSE_Value> unitspanValue =
3421 GetSimpleValue(pThis, args, 0); 3405 GetSimpleValue(pThis, args, 0);
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
3516 break; 3500 break;
3517 case VALUETYPE_ISMP: 3501 case VALUETYPE_ISMP:
3518 FXJSE_Value_SetUTF8String(args.GetReturnValue(), "mp"); 3502 FXJSE_Value_SetUTF8String(args.GetReturnValue(), "mp");
3519 break; 3503 break;
3520 default: 3504 default:
3521 FXJSE_Value_SetUTF8String(args.GetReturnValue(), "in"); 3505 FXJSE_Value_SetUTF8String(args.GetReturnValue(), "in");
3522 break; 3506 break;
3523 } 3507 }
3524 } 3508 }
3525 } else { 3509 } else {
3526 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 3510 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
3527 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"UnitType"); 3511 L"UnitType");
3528 } 3512 }
3529 } 3513 }
3530 3514
3531 // static 3515 // static
3532 void CXFA_FM2JSContext::UnitValue(CFXJSE_Value* pThis, 3516 void CXFA_FM2JSContext::UnitValue(CFXJSE_Value* pThis,
3533 const CFX_ByteStringC& szFuncName, 3517 const CFX_ByteStringC& szFuncName,
3534 CFXJSE_Arguments& args) { 3518 CFXJSE_Arguments& args) {
3535 int32_t argc = args.GetLength(); 3519 int32_t argc = args.GetLength();
3536 if ((argc == 1) || (argc == 2)) { 3520 if ((argc == 1) || (argc == 2)) {
3537 std::unique_ptr<CFXJSE_Value> unitspanValue = 3521 std::unique_ptr<CFXJSE_Value> unitspanValue =
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
3672 } else { 3656 } else {
3673 dResult = dFirstNumber / 72000; 3657 dResult = dFirstNumber / 72000;
3674 } 3658 }
3675 } 3659 }
3676 FXJSE_Value_SetDouble(args.GetReturnValue(), dResult); 3660 FXJSE_Value_SetDouble(args.GetReturnValue(), dResult);
3677 } else { 3661 } else {
3678 FXJSE_Value_SetInteger(args.GetReturnValue(), 0); 3662 FXJSE_Value_SetInteger(args.GetReturnValue(), 0);
3679 } 3663 }
3680 } 3664 }
3681 } else { 3665 } else {
3682 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 3666 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
3683 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"UnitValue"); 3667 L"UnitValue");
3684 } 3668 }
3685 } 3669 }
3686 3670
3687 // static 3671 // static
3688 void CXFA_FM2JSContext::At(CFXJSE_Value* pThis, 3672 void CXFA_FM2JSContext::At(CFXJSE_Value* pThis,
3689 const CFX_ByteStringC& szFuncName, 3673 const CFX_ByteStringC& szFuncName,
3690 CFXJSE_Arguments& args) { 3674 CFXJSE_Arguments& args) {
3691 if (args.GetLength() == 2) { 3675 if (args.GetLength() == 2) {
3692 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 3676 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
3693 std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); 3677 std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1);
3694 if (ValueIsNull(pThis, argOne.get()) || ValueIsNull(pThis, argTwo.get())) { 3678 if (ValueIsNull(pThis, argOne.get()) || ValueIsNull(pThis, argTwo.get())) {
3695 FXJSE_Value_SetNull(args.GetReturnValue()); 3679 FXJSE_Value_SetNull(args.GetReturnValue());
3696 } else { 3680 } else {
3697 CFX_ByteString stringTwo; 3681 CFX_ByteString stringTwo;
3698 ValueToUTF8String(argTwo.get(), stringTwo); 3682 ValueToUTF8String(argTwo.get(), stringTwo);
3699 if (stringTwo.IsEmpty()) { 3683 if (stringTwo.IsEmpty()) {
3700 FXJSE_Value_SetInteger(args.GetReturnValue(), 1); 3684 FXJSE_Value_SetInteger(args.GetReturnValue(), 1);
3701 } else { 3685 } else {
3702 CFX_ByteString stringOne; 3686 CFX_ByteString stringOne;
3703 ValueToUTF8String(argOne.get(), stringOne); 3687 ValueToUTF8String(argOne.get(), stringOne);
3704 FX_STRSIZE iPosition = stringOne.Find(stringTwo.AsStringC()); 3688 FX_STRSIZE iPosition = stringOne.Find(stringTwo.AsStringC());
3705 FXJSE_Value_SetInteger(args.GetReturnValue(), iPosition + 1); 3689 FXJSE_Value_SetInteger(args.GetReturnValue(), iPosition + 1);
3706 } 3690 }
3707 } 3691 }
3708 } else { 3692 } else {
3709 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 3693 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
3710 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"At"); 3694 L"At");
3711 } 3695 }
3712 } 3696 }
3713 3697
3714 // static 3698 // static
3715 void CXFA_FM2JSContext::Concat(CFXJSE_Value* pThis, 3699 void CXFA_FM2JSContext::Concat(CFXJSE_Value* pThis,
3716 const CFX_ByteStringC& szFuncName, 3700 const CFX_ByteStringC& szFuncName,
3717 CFXJSE_Arguments& args) { 3701 CFXJSE_Arguments& args) {
3718 int32_t argc = args.GetLength(); 3702 int32_t argc = args.GetLength();
3719 if (argc >= 1) { 3703 if (argc >= 1) {
3720 CFX_ByteString resultString; 3704 CFX_ByteString resultString;
3721 FX_BOOL bAllNull = TRUE; 3705 FX_BOOL bAllNull = TRUE;
3722 3706
3723 for (int32_t i = 0; i < argc; i++) { 3707 for (int32_t i = 0; i < argc; i++) {
3724 std::unique_ptr<CFXJSE_Value> value = GetSimpleValue(pThis, args, i); 3708 std::unique_ptr<CFXJSE_Value> value = GetSimpleValue(pThis, args, i);
3725 if (!ValueIsNull(pThis, value.get())) { 3709 if (!ValueIsNull(pThis, value.get())) {
3726 CFX_ByteString valueStr; 3710 CFX_ByteString valueStr;
3727 ValueToUTF8String(value.get(), valueStr); 3711 ValueToUTF8String(value.get(), valueStr);
3728 resultString += valueStr; 3712 resultString += valueStr;
3729 bAllNull = FALSE; 3713 bAllNull = FALSE;
3730 } 3714 }
3731 } 3715 }
3732 3716
3733 if (bAllNull) { 3717 if (bAllNull) {
3734 FXJSE_Value_SetNull(args.GetReturnValue()); 3718 FXJSE_Value_SetNull(args.GetReturnValue());
3735 } else { 3719 } else {
3736 FXJSE_Value_SetUTF8String(args.GetReturnValue(), 3720 FXJSE_Value_SetUTF8String(args.GetReturnValue(),
3737 resultString.AsStringC()); 3721 resultString.AsStringC());
3738 } 3722 }
3739 } else { 3723 } else {
3740 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 3724 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
3741 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Concat"); 3725 L"Concat");
3742 } 3726 }
3743 } 3727 }
3744 3728
3745 // static 3729 // static
3746 void CXFA_FM2JSContext::Decode(CFXJSE_Value* pThis, 3730 void CXFA_FM2JSContext::Decode(CFXJSE_Value* pThis,
3747 const CFX_ByteStringC& szFuncName, 3731 const CFX_ByteStringC& szFuncName,
3748 CFXJSE_Arguments& args) { 3732 CFXJSE_Arguments& args) {
3749 int32_t argc = args.GetLength(); 3733 int32_t argc = args.GetLength();
3750 if (argc == 1) { 3734 if (argc == 1) {
3751 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 3735 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
(...skipping 20 matching lines...) Expand all
3772 if (identifyString.EqualNoCase("html")) { 3756 if (identifyString.EqualNoCase("html")) {
3773 DecodeHTML(toDecodeString.AsStringC(), resultBuf); 3757 DecodeHTML(toDecodeString.AsStringC(), resultBuf);
3774 } else if (identifyString.EqualNoCase("xml")) { 3758 } else if (identifyString.EqualNoCase("xml")) {
3775 DecodeXML(toDecodeString.AsStringC(), resultBuf); 3759 DecodeXML(toDecodeString.AsStringC(), resultBuf);
3776 } else { 3760 } else {
3777 DecodeURL(toDecodeString.AsStringC(), resultBuf); 3761 DecodeURL(toDecodeString.AsStringC(), resultBuf);
3778 } 3762 }
3779 FXJSE_Value_SetUTF8String(args.GetReturnValue(), resultBuf.AsStringC()); 3763 FXJSE_Value_SetUTF8String(args.GetReturnValue(), resultBuf.AsStringC());
3780 } 3764 }
3781 } else { 3765 } else {
3782 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 3766 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
3783 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Decode"); 3767 L"Decode");
3784 } 3768 }
3785 } 3769 }
3786 3770
3787 // static 3771 // static
3788 void CXFA_FM2JSContext::DecodeURL(const CFX_ByteStringC& szURLString, 3772 void CXFA_FM2JSContext::DecodeURL(const CFX_ByteStringC& szURLString,
3789 CFX_ByteTextBuf& szResultString) { 3773 CFX_ByteTextBuf& szResultString) {
3790 CFX_WideString wsURLString = CFX_WideString::FromUTF8(szURLString); 3774 CFX_WideString wsURLString = CFX_WideString::FromUTF8(szURLString);
3791 const FX_WCHAR* pData = wsURLString.c_str(); 3775 const FX_WCHAR* pData = wsURLString.c_str();
3792 int32_t iLen = wsURLString.GetLength(); 3776 int32_t iLen = wsURLString.GetLength();
3793 int32_t i = 0; 3777 int32_t i = 0;
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
4046 if (identifyString.EqualNoCase("html")) { 4030 if (identifyString.EqualNoCase("html")) {
4047 EncodeHTML(toEncodeString.AsStringC(), resultBuf); 4031 EncodeHTML(toEncodeString.AsStringC(), resultBuf);
4048 } else if (identifyString.EqualNoCase("xml")) { 4032 } else if (identifyString.EqualNoCase("xml")) {
4049 EncodeXML(toEncodeString.AsStringC(), resultBuf); 4033 EncodeXML(toEncodeString.AsStringC(), resultBuf);
4050 } else { 4034 } else {
4051 EncodeURL(toEncodeString.AsStringC(), resultBuf); 4035 EncodeURL(toEncodeString.AsStringC(), resultBuf);
4052 } 4036 }
4053 FXJSE_Value_SetUTF8String(args.GetReturnValue(), resultBuf.AsStringC()); 4037 FXJSE_Value_SetUTF8String(args.GetReturnValue(), resultBuf.AsStringC());
4054 } 4038 }
4055 } else { 4039 } else {
4056 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 4040 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
4057 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Encode"); 4041 L"Encode");
4058 } 4042 }
4059 } 4043 }
4060 4044
4061 // static 4045 // static
4062 void CXFA_FM2JSContext::EncodeURL(const CFX_ByteStringC& szURLString, 4046 void CXFA_FM2JSContext::EncodeURL(const CFX_ByteStringC& szURLString,
4063 CFX_ByteTextBuf& szResultBuf) { 4047 CFX_ByteTextBuf& szResultBuf) {
4064 CFX_WideString wsURLString = CFX_WideString::FromUTF8(szURLString); 4048 CFX_WideString wsURLString = CFX_WideString::FromUTF8(szURLString);
4065 CFX_WideTextBuf wsResultBuf; 4049 CFX_WideTextBuf wsResultBuf;
4066 FX_WCHAR ch = 0; 4050 FX_WCHAR ch = 0;
4067 int32_t iLength = wsURLString.GetLength(); 4051 int32_t iLength = wsURLString.GetLength();
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
4422 CFX_WideString wsRet; 4406 CFX_WideString wsRet;
4423 if (localeValue.FormatPatterns(wsRet, wsPattern, pLocale, 4407 if (localeValue.FormatPatterns(wsRet, wsPattern, pLocale,
4424 XFA_VALUEPICTURE_Display)) { 4408 XFA_VALUEPICTURE_Display)) {
4425 FXJSE_Value_SetUTF8String( 4409 FXJSE_Value_SetUTF8String(
4426 args.GetReturnValue(), 4410 args.GetReturnValue(),
4427 FX_UTF8Encode(wsRet.c_str(), wsRet.GetLength()).AsStringC()); 4411 FX_UTF8Encode(wsRet.c_str(), wsRet.GetLength()).AsStringC());
4428 } else { 4412 } else {
4429 FXJSE_Value_SetUTF8String(args.GetReturnValue(), ""); 4413 FXJSE_Value_SetUTF8String(args.GetReturnValue(), "");
4430 } 4414 }
4431 } else { 4415 } else {
4432 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 4416 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Format");
4433 L"Format");
4434 } 4417 }
4435 } 4418 }
4436 4419
4437 // static 4420 // static
4438 void CXFA_FM2JSContext::Left(CFXJSE_Value* pThis, 4421 void CXFA_FM2JSContext::Left(CFXJSE_Value* pThis,
4439 const CFX_ByteStringC& szFuncName, 4422 const CFX_ByteStringC& szFuncName,
4440 CFXJSE_Arguments& args) { 4423 CFXJSE_Arguments& args) {
4441 if (args.GetLength() == 2) { 4424 if (args.GetLength() == 2) {
4442 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 4425 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
4443 std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); 4426 std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1);
4444 FX_BOOL argIsNull = FALSE; 4427 FX_BOOL argIsNull = FALSE;
4445 if ((ValueIsNull(pThis, argOne.get())) || 4428 if ((ValueIsNull(pThis, argOne.get())) ||
4446 (ValueIsNull(pThis, argTwo.get()))) { 4429 (ValueIsNull(pThis, argTwo.get()))) {
4447 argIsNull = TRUE; 4430 argIsNull = TRUE;
4448 } 4431 }
4449 if (argIsNull) { 4432 if (argIsNull) {
4450 FXJSE_Value_SetNull(args.GetReturnValue()); 4433 FXJSE_Value_SetNull(args.GetReturnValue());
4451 } else { 4434 } else {
4452 CFX_ByteString sourceString; 4435 CFX_ByteString sourceString;
4453 ValueToUTF8String(argOne.get(), sourceString); 4436 ValueToUTF8String(argOne.get(), sourceString);
4454 int32_t count = ValueToInteger(pThis, argTwo.get()); 4437 int32_t count = ValueToInteger(pThis, argTwo.get());
4455 if (count < 0) { 4438 if (count < 0) {
4456 count = 0; 4439 count = 0;
4457 } 4440 }
4458 FXJSE_Value_SetUTF8String(args.GetReturnValue(), 4441 FXJSE_Value_SetUTF8String(args.GetReturnValue(),
4459 sourceString.Left(count).AsStringC()); 4442 sourceString.Left(count).AsStringC());
4460 } 4443 }
4461 } else { 4444 } else {
4462 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 4445 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
4463 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Left"); 4446 L"Left");
4464 } 4447 }
4465 } 4448 }
4466 4449
4467 // static 4450 // static
4468 void CXFA_FM2JSContext::Len(CFXJSE_Value* pThis, 4451 void CXFA_FM2JSContext::Len(CFXJSE_Value* pThis,
4469 const CFX_ByteStringC& szFuncName, 4452 const CFX_ByteStringC& szFuncName,
4470 CFXJSE_Arguments& args) { 4453 CFXJSE_Arguments& args) {
4471 if (args.GetLength() == 1) { 4454 if (args.GetLength() == 1) {
4472 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 4455 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
4473 if (ValueIsNull(pThis, argOne.get())) { 4456 if (ValueIsNull(pThis, argOne.get())) {
4474 FXJSE_Value_SetNull(args.GetReturnValue()); 4457 FXJSE_Value_SetNull(args.GetReturnValue());
4475 } else { 4458 } else {
4476 CFX_ByteString sourceString; 4459 CFX_ByteString sourceString;
4477 ValueToUTF8String(argOne.get(), sourceString); 4460 ValueToUTF8String(argOne.get(), sourceString);
4478 FXJSE_Value_SetInteger(args.GetReturnValue(), sourceString.GetLength()); 4461 FXJSE_Value_SetInteger(args.GetReturnValue(), sourceString.GetLength());
4479 } 4462 }
4480 } else { 4463 } else {
4481 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 4464 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
4482 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Len"); 4465 L"Len");
4483 } 4466 }
4484 } 4467 }
4485 4468
4486 // static 4469 // static
4487 void CXFA_FM2JSContext::Lower(CFXJSE_Value* pThis, 4470 void CXFA_FM2JSContext::Lower(CFXJSE_Value* pThis,
4488 const CFX_ByteStringC& szFuncName, 4471 const CFX_ByteStringC& szFuncName,
4489 CFXJSE_Arguments& args) { 4472 CFXJSE_Arguments& args) {
4490 int32_t argc = args.GetLength(); 4473 int32_t argc = args.GetLength();
4491 if ((argc > 0) && (argc < 3)) { 4474 if ((argc > 0) && (argc < 3)) {
4492 CFX_ByteString argString; 4475 CFX_ByteString argString;
(...skipping 21 matching lines...) Expand all
4514 lowStringBuf.AppendChar(ch); 4497 lowStringBuf.AppendChar(ch);
4515 ++i; 4498 ++i;
4516 } 4499 }
4517 lowStringBuf.AppendChar(0); 4500 lowStringBuf.AppendChar(0);
4518 FXJSE_Value_SetUTF8String( 4501 FXJSE_Value_SetUTF8String(
4519 args.GetReturnValue(), 4502 args.GetReturnValue(),
4520 FX_UTF8Encode(lowStringBuf.GetBuffer(), lowStringBuf.GetLength()) 4503 FX_UTF8Encode(lowStringBuf.GetBuffer(), lowStringBuf.GetLength())
4521 .AsStringC()); 4504 .AsStringC());
4522 } 4505 }
4523 } else { 4506 } else {
4524 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 4507 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
4525 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Lower"); 4508 L"Lower");
4526 } 4509 }
4527 } 4510 }
4528 4511
4529 // static 4512 // static
4530 void CXFA_FM2JSContext::Ltrim(CFXJSE_Value* pThis, 4513 void CXFA_FM2JSContext::Ltrim(CFXJSE_Value* pThis,
4531 const CFX_ByteStringC& szFuncName, 4514 const CFX_ByteStringC& szFuncName,
4532 CFXJSE_Arguments& args) { 4515 CFXJSE_Arguments& args) {
4533 if (args.GetLength() == 1) { 4516 if (args.GetLength() == 1) {
4534 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 4517 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
4535 if (ValueIsNull(pThis, argOne.get())) { 4518 if (ValueIsNull(pThis, argOne.get())) {
4536 FXJSE_Value_SetNull(args.GetReturnValue()); 4519 FXJSE_Value_SetNull(args.GetReturnValue());
4537 } else { 4520 } else {
4538 CFX_ByteString sourceString; 4521 CFX_ByteString sourceString;
4539 ValueToUTF8String(argOne.get(), sourceString); 4522 ValueToUTF8String(argOne.get(), sourceString);
4540 sourceString.TrimLeft(); 4523 sourceString.TrimLeft();
4541 FXJSE_Value_SetUTF8String(args.GetReturnValue(), 4524 FXJSE_Value_SetUTF8String(args.GetReturnValue(),
4542 sourceString.AsStringC()); 4525 sourceString.AsStringC());
4543 } 4526 }
4544 } else { 4527 } else {
4545 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 4528 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
4546 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Ltrim"); 4529 L"Ltrim");
4547 } 4530 }
4548 } 4531 }
4549 4532
4550 // static 4533 // static
4551 void CXFA_FM2JSContext::Parse(CFXJSE_Value* pThis, 4534 void CXFA_FM2JSContext::Parse(CFXJSE_Value* pThis,
4552 const CFX_ByteStringC& szFuncName, 4535 const CFX_ByteStringC& szFuncName,
4553 CFXJSE_Arguments& args) { 4536 CFXJSE_Arguments& args) {
4554 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 4537 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
4555 if (args.GetLength() == 2) { 4538 if (args.GetLength() == 2) {
4556 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 4539 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
4675 szParsedValue.AsStringC()); 4658 szParsedValue.AsStringC());
4676 } else { 4659 } else {
4677 FXJSE_Value_SetUTF8String(args.GetReturnValue(), ""); 4660 FXJSE_Value_SetUTF8String(args.GetReturnValue(), "");
4678 } 4661 }
4679 } 4662 }
4680 } break; 4663 } break;
4681 } 4664 }
4682 } 4665 }
4683 } 4666 }
4684 } else { 4667 } else {
4685 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 4668 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Parse");
4686 L"Parse");
4687 } 4669 }
4688 } 4670 }
4689 4671
4690 // static 4672 // static
4691 void CXFA_FM2JSContext::Replace(CFXJSE_Value* pThis, 4673 void CXFA_FM2JSContext::Replace(CFXJSE_Value* pThis,
4692 const CFX_ByteStringC& szFuncName, 4674 const CFX_ByteStringC& szFuncName,
4693 CFXJSE_Arguments& args) { 4675 CFXJSE_Arguments& args) {
4694 int32_t argc = args.GetLength(); 4676 int32_t argc = args.GetLength();
4695 if ((argc == 2) || (argc == 3)) { 4677 if ((argc == 2) || (argc == 3)) {
4696 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 4678 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
4735 } else { 4717 } else {
4736 resultString.AppendChar(ch); 4718 resultString.AppendChar(ch);
4737 } 4719 }
4738 } else { 4720 } else {
4739 resultString.AppendChar(ch); 4721 resultString.AppendChar(ch);
4740 } 4722 }
4741 } 4723 }
4742 resultString.AppendChar(0); 4724 resultString.AppendChar(0);
4743 FXJSE_Value_SetUTF8String(args.GetReturnValue(), resultString.AsStringC()); 4725 FXJSE_Value_SetUTF8String(args.GetReturnValue(), resultString.AsStringC());
4744 } else { 4726 } else {
4745 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 4727 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
4746 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Replace"); 4728 L"Replace");
4747 } 4729 }
4748 } 4730 }
4749 4731
4750 // static 4732 // static
4751 void CXFA_FM2JSContext::Right(CFXJSE_Value* pThis, 4733 void CXFA_FM2JSContext::Right(CFXJSE_Value* pThis,
4752 const CFX_ByteStringC& szFuncName, 4734 const CFX_ByteStringC& szFuncName,
4753 CFXJSE_Arguments& args) { 4735 CFXJSE_Arguments& args) {
4754 if (args.GetLength() == 2) { 4736 if (args.GetLength() == 2) {
4755 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 4737 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
4756 std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); 4738 std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1);
4757 FX_BOOL argIsNull = FALSE; 4739 FX_BOOL argIsNull = FALSE;
4758 if ((ValueIsNull(pThis, argOne.get())) || 4740 if ((ValueIsNull(pThis, argOne.get())) ||
4759 (ValueIsNull(pThis, argTwo.get()))) { 4741 (ValueIsNull(pThis, argTwo.get()))) {
4760 argIsNull = TRUE; 4742 argIsNull = TRUE;
4761 } 4743 }
4762 if (argIsNull) { 4744 if (argIsNull) {
4763 FXJSE_Value_SetNull(args.GetReturnValue()); 4745 FXJSE_Value_SetNull(args.GetReturnValue());
4764 } else { 4746 } else {
4765 CFX_ByteString sourceString; 4747 CFX_ByteString sourceString;
4766 ValueToUTF8String(argOne.get(), sourceString); 4748 ValueToUTF8String(argOne.get(), sourceString);
4767 int32_t count = ValueToInteger(pThis, argTwo.get()); 4749 int32_t count = ValueToInteger(pThis, argTwo.get());
4768 if (count < 0) { 4750 if (count < 0) {
4769 count = 0; 4751 count = 0;
4770 } 4752 }
4771 FXJSE_Value_SetUTF8String(args.GetReturnValue(), 4753 FXJSE_Value_SetUTF8String(args.GetReturnValue(),
4772 sourceString.Right(count).AsStringC()); 4754 sourceString.Right(count).AsStringC());
4773 } 4755 }
4774 } else { 4756 } else {
4775 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 4757 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
4776 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Right"); 4758 L"Right");
4777 } 4759 }
4778 } 4760 }
4779 4761
4780 // static 4762 // static
4781 void CXFA_FM2JSContext::Rtrim(CFXJSE_Value* pThis, 4763 void CXFA_FM2JSContext::Rtrim(CFXJSE_Value* pThis,
4782 const CFX_ByteStringC& szFuncName, 4764 const CFX_ByteStringC& szFuncName,
4783 CFXJSE_Arguments& args) { 4765 CFXJSE_Arguments& args) {
4784 if (args.GetLength() == 1) { 4766 if (args.GetLength() == 1) {
4785 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 4767 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
4786 if (ValueIsNull(pThis, argOne.get())) { 4768 if (ValueIsNull(pThis, argOne.get())) {
4787 FXJSE_Value_SetNull(args.GetReturnValue()); 4769 FXJSE_Value_SetNull(args.GetReturnValue());
4788 } else { 4770 } else {
4789 CFX_ByteString sourceString; 4771 CFX_ByteString sourceString;
4790 ValueToUTF8String(argOne.get(), sourceString); 4772 ValueToUTF8String(argOne.get(), sourceString);
4791 sourceString.TrimRight(); 4773 sourceString.TrimRight();
4792 FXJSE_Value_SetUTF8String(args.GetReturnValue(), 4774 FXJSE_Value_SetUTF8String(args.GetReturnValue(),
4793 sourceString.AsStringC()); 4775 sourceString.AsStringC());
4794 } 4776 }
4795 } else { 4777 } else {
4796 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 4778 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
4797 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Rtrim"); 4779 L"Rtrim");
4798 } 4780 }
4799 } 4781 }
4800 4782
4801 // static 4783 // static
4802 void CXFA_FM2JSContext::Space(CFXJSE_Value* pThis, 4784 void CXFA_FM2JSContext::Space(CFXJSE_Value* pThis,
4803 const CFX_ByteStringC& szFuncName, 4785 const CFX_ByteStringC& szFuncName,
4804 CFXJSE_Arguments& args) { 4786 CFXJSE_Arguments& args) {
4805 if (args.GetLength() == 1) { 4787 if (args.GetLength() == 1) {
4806 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 4788 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
4807 if (FXJSE_Value_IsNull(argOne.get())) { 4789 if (FXJSE_Value_IsNull(argOne.get())) {
4808 FXJSE_Value_SetNull(args.GetReturnValue()); 4790 FXJSE_Value_SetNull(args.GetReturnValue());
4809 } else { 4791 } else {
4810 int32_t count = 0; 4792 int32_t count = 0;
4811 count = ValueToInteger(pThis, argOne.get()); 4793 count = ValueToInteger(pThis, argOne.get());
4812 count = (count < 0) ? 0 : count; 4794 count = (count < 0) ? 0 : count;
4813 CFX_ByteTextBuf spaceString; 4795 CFX_ByteTextBuf spaceString;
4814 int32_t index = 0; 4796 int32_t index = 0;
4815 while (index < count) { 4797 while (index < count) {
4816 spaceString.AppendByte(' '); 4798 spaceString.AppendByte(' ');
4817 index++; 4799 index++;
4818 } 4800 }
4819 spaceString.AppendByte(0); 4801 spaceString.AppendByte(0);
4820 FXJSE_Value_SetUTF8String(args.GetReturnValue(), spaceString.AsStringC()); 4802 FXJSE_Value_SetUTF8String(args.GetReturnValue(), spaceString.AsStringC());
4821 } 4803 }
4822 } else { 4804 } else {
4823 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 4805 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
4824 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Space"); 4806 L"Space");
4825 } 4807 }
4826 } 4808 }
4827 4809
4828 // static 4810 // static
4829 void CXFA_FM2JSContext::Str(CFXJSE_Value* pThis, 4811 void CXFA_FM2JSContext::Str(CFXJSE_Value* pThis,
4830 const CFX_ByteStringC& szFuncName, 4812 const CFX_ByteStringC& szFuncName,
4831 CFXJSE_Arguments& args) { 4813 CFXJSE_Arguments& args) {
4832 int32_t argc = args.GetLength(); 4814 int32_t argc = args.GetLength();
4833 if ((argc > 0) && (argc < 4)) { 4815 if ((argc > 0) && (argc < 4)) {
4834 FX_BOOL bFlags = FALSE; 4816 FX_BOOL bFlags = FALSE;
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
4931 ++i; 4913 ++i;
4932 } 4914 }
4933 resultBuf.AppendChar(0); 4915 resultBuf.AppendChar(0);
4934 } 4916 }
4935 } 4917 }
4936 FXJSE_Value_SetUTF8String(args.GetReturnValue(), resultBuf.AsStringC()); 4918 FXJSE_Value_SetUTF8String(args.GetReturnValue(), resultBuf.AsStringC());
4937 } else { 4919 } else {
4938 FXJSE_Value_SetNull(args.GetReturnValue()); 4920 FXJSE_Value_SetNull(args.GetReturnValue());
4939 } 4921 }
4940 } else { 4922 } else {
4941 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 4923 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
4942 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Str"); 4924 L"Str");
4943 } 4925 }
4944 } 4926 }
4945 4927
4946 // static 4928 // static
4947 void CXFA_FM2JSContext::Stuff(CFXJSE_Value* pThis, 4929 void CXFA_FM2JSContext::Stuff(CFXJSE_Value* pThis,
4948 const CFX_ByteStringC& szFuncName, 4930 const CFX_ByteStringC& szFuncName,
4949 CFXJSE_Arguments& args) { 4931 CFXJSE_Arguments& args) {
4950 int32_t argc = args.GetLength(); 4932 int32_t argc = args.GetLength();
4951 if ((argc == 3) || (argc == 4)) { 4933 if ((argc == 3) || (argc == 4)) {
4952 CFX_ByteString sourceString; 4934 CFX_ByteString sourceString;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
4988 } 4970 }
4989 resultString << insertString.AsStringC(); 4971 resultString << insertString.AsStringC();
4990 i = iStart + iDelete; 4972 i = iStart + iDelete;
4991 while (i < iLength) { 4973 while (i < iLength) {
4992 resultString.AppendChar(sourceString.GetAt(i)); 4974 resultString.AppendChar(sourceString.GetAt(i));
4993 ++i; 4975 ++i;
4994 } 4976 }
4995 resultString.AppendChar(0); 4977 resultString.AppendChar(0);
4996 FXJSE_Value_SetUTF8String(args.GetReturnValue(), resultString.AsStringC()); 4978 FXJSE_Value_SetUTF8String(args.GetReturnValue(), resultString.AsStringC());
4997 } else { 4979 } else {
4998 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 4980 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
4999 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Stuff"); 4981 L"Stuff");
5000 } 4982 }
5001 } 4983 }
5002 4984
5003 // static 4985 // static
5004 void CXFA_FM2JSContext::Substr(CFXJSE_Value* pThis, 4986 void CXFA_FM2JSContext::Substr(CFXJSE_Value* pThis,
5005 const CFX_ByteStringC& szFuncName, 4987 const CFX_ByteStringC& szFuncName,
5006 CFXJSE_Arguments& args) { 4988 CFXJSE_Arguments& args) {
5007 if (args.GetLength() == 3) { 4989 if (args.GetLength() == 3) {
5008 std::unique_ptr<CFXJSE_Value> stringValue = GetSimpleValue(pThis, args, 0); 4990 std::unique_ptr<CFXJSE_Value> stringValue = GetSimpleValue(pThis, args, 0);
5009 std::unique_ptr<CFXJSE_Value> startValue = GetSimpleValue(pThis, args, 1); 4991 std::unique_ptr<CFXJSE_Value> startValue = GetSimpleValue(pThis, args, 1);
(...skipping 21 matching lines...) Expand all
5031 } 5013 }
5032 if (iCount <= 0) { 5014 if (iCount <= 0) {
5033 iCount = 0; 5015 iCount = 0;
5034 } 5016 }
5035 iStart -= 1; 5017 iStart -= 1;
5036 FXJSE_Value_SetUTF8String(args.GetReturnValue(), 5018 FXJSE_Value_SetUTF8String(args.GetReturnValue(),
5037 szSourceStr.Mid(iStart, iCount).AsStringC()); 5019 szSourceStr.Mid(iStart, iCount).AsStringC());
5038 } 5020 }
5039 } 5021 }
5040 } else { 5022 } else {
5041 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 5023 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
5042 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Substr"); 5024 L"Substr");
5043 } 5025 }
5044 } 5026 }
5045 5027
5046 // static 5028 // static
5047 void CXFA_FM2JSContext::Uuid(CFXJSE_Value* pThis, 5029 void CXFA_FM2JSContext::Uuid(CFXJSE_Value* pThis,
5048 const CFX_ByteStringC& szFuncName, 5030 const CFX_ByteStringC& szFuncName,
5049 CFXJSE_Arguments& args) { 5031 CFXJSE_Arguments& args) {
5050 int32_t argc = args.GetLength(); 5032 int32_t argc = args.GetLength();
5051 if ((argc == 0) || (argc == 1)) { 5033 if ((argc == 0) || (argc == 1)) {
5052 int32_t iNum = 0; 5034 int32_t iNum = 0;
5053 if (argc == 1) { 5035 if (argc == 1) {
5054 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 5036 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
5055 iNum = (int32_t)ValueToFloat(pThis, argOne.get()); 5037 iNum = (int32_t)ValueToFloat(pThis, argOne.get());
5056 } 5038 }
5057 FX_GUID guid; 5039 FX_GUID guid;
5058 FX_GUID_CreateV4(&guid); 5040 FX_GUID_CreateV4(&guid);
5059 CFX_ByteString bsUId; 5041 CFX_ByteString bsUId;
5060 FX_GUID_ToString(&guid, bsUId, iNum); 5042 FX_GUID_ToString(&guid, bsUId, iNum);
5061 FXJSE_Value_SetUTF8String(args.GetReturnValue(), bsUId.AsStringC()); 5043 FXJSE_Value_SetUTF8String(args.GetReturnValue(), bsUId.AsStringC());
5062 } else { 5044 } else {
5063 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 5045 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
5064 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Uuid"); 5046 L"Uuid");
5065 } 5047 }
5066 } 5048 }
5067 5049
5068 // static 5050 // static
5069 void CXFA_FM2JSContext::Upper(CFXJSE_Value* pThis, 5051 void CXFA_FM2JSContext::Upper(CFXJSE_Value* pThis,
5070 const CFX_ByteStringC& szFuncName, 5052 const CFX_ByteStringC& szFuncName,
5071 CFXJSE_Arguments& args) { 5053 CFXJSE_Arguments& args) {
5072 int32_t argc = args.GetLength(); 5054 int32_t argc = args.GetLength();
5073 if ((argc > 0) && (argc < 3)) { 5055 if ((argc > 0) && (argc < 3)) {
5074 CFX_ByteString argString; 5056 CFX_ByteString argString;
(...skipping 21 matching lines...) Expand all
5096 upperStringBuf.AppendChar(ch); 5078 upperStringBuf.AppendChar(ch);
5097 ++i; 5079 ++i;
5098 } 5080 }
5099 upperStringBuf.AppendChar(0); 5081 upperStringBuf.AppendChar(0);
5100 FXJSE_Value_SetUTF8String( 5082 FXJSE_Value_SetUTF8String(
5101 args.GetReturnValue(), 5083 args.GetReturnValue(),
5102 FX_UTF8Encode(upperStringBuf.GetBuffer(), upperStringBuf.GetLength()) 5084 FX_UTF8Encode(upperStringBuf.GetBuffer(), upperStringBuf.GetLength())
5103 .AsStringC()); 5085 .AsStringC());
5104 } 5086 }
5105 } else { 5087 } else {
5106 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 5088 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
5107 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Upper"); 5089 L"Upper");
5108 } 5090 }
5109 } 5091 }
5110 5092
5111 // static 5093 // static
5112 void CXFA_FM2JSContext::WordNum(CFXJSE_Value* pThis, 5094 void CXFA_FM2JSContext::WordNum(CFXJSE_Value* pThis,
5113 const CFX_ByteStringC& szFuncName, 5095 const CFX_ByteStringC& szFuncName,
5114 CFXJSE_Arguments& args) { 5096 CFXJSE_Arguments& args) {
5115 int32_t argc = args.GetLength(); 5097 int32_t argc = args.GetLength();
5116 if ((argc > 0) && (argc < 4)) { 5098 if ((argc > 0) && (argc < 4)) {
5117 FX_BOOL bFlags = FALSE; 5099 FX_BOOL bFlags = FALSE;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
5149 CFX_ByteTextBuf resultBuf; 5131 CFX_ByteTextBuf resultBuf;
5150 CFX_ByteString numberString; 5132 CFX_ByteString numberString;
5151 numberString.Format("%.2f", fNumber); 5133 numberString.Format("%.2f", fNumber);
5152 WordUS(numberString.AsStringC(), iIdentifier, resultBuf); 5134 WordUS(numberString.AsStringC(), iIdentifier, resultBuf);
5153 FXJSE_Value_SetUTF8String(args.GetReturnValue(), resultBuf.AsStringC()); 5135 FXJSE_Value_SetUTF8String(args.GetReturnValue(), resultBuf.AsStringC());
5154 } 5136 }
5155 } else { 5137 } else {
5156 FXJSE_Value_SetNull(args.GetReturnValue()); 5138 FXJSE_Value_SetNull(args.GetReturnValue());
5157 } 5139 }
5158 } else { 5140 } else {
5159 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 5141 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD,
5160 XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"WordNum"); 5142 L"WordNum");
5161 } 5143 }
5162 } 5144 }
5163 5145
5164 // static 5146 // static
5165 void CXFA_FM2JSContext::TrillionUS(const CFX_ByteStringC& szData, 5147 void CXFA_FM2JSContext::TrillionUS(const CFX_ByteStringC& szData,
5166 CFX_ByteTextBuf& strBuf) { 5148 CFX_ByteTextBuf& strBuf) {
5167 CFX_ByteStringC pUnits[] = {"zero", "one", "two", "three", "four", 5149 CFX_ByteStringC pUnits[] = {"zero", "one", "two", "three", "four",
5168 "five", "six", "seven", "eight", "nine"}; 5150 "five", "six", "seven", "eight", "nine"};
5169 CFX_ByteStringC pCapUnits[] = {"Zero", "One", "Two", "Three", "Four", 5151 CFX_ByteStringC pCapUnits[] = {"Zero", "One", "Two", "Three", "Four",
5170 "Five", "Six", "Seven", "Eight", "Nine"}; 5152 "Five", "Six", "Seven", "Eight", "Nine"};
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
5383 if (pFile) { 5365 if (pFile) {
5384 int32_t size = pFile->GetSize(); 5366 int32_t size = pFile->GetSize();
5385 uint8_t* pData = FX_Alloc(uint8_t, size); 5367 uint8_t* pData = FX_Alloc(uint8_t, size);
5386 pFile->ReadBlock(pData, size); 5368 pFile->ReadBlock(pData, size);
5387 FXJSE_Value_SetUTF8String(args.GetReturnValue(), 5369 FXJSE_Value_SetUTF8String(args.GetReturnValue(),
5388 CFX_ByteStringC(pData, size)); 5370 CFX_ByteStringC(pData, size));
5389 FX_Free(pData); 5371 FX_Free(pData);
5390 pFile->Release(); 5372 pFile->Release();
5391 } 5373 }
5392 } else { 5374 } else {
5393 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 5375 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Get");
5394 L"Get");
5395 } 5376 }
5396 } 5377 }
5397 5378
5398 // static 5379 // static
5399 void CXFA_FM2JSContext::Post(CFXJSE_Value* pThis, 5380 void CXFA_FM2JSContext::Post(CFXJSE_Value* pThis,
5400 const CFX_ByteStringC& szFuncName, 5381 const CFX_ByteStringC& szFuncName,
5401 CFXJSE_Arguments& args) { 5382 CFXJSE_Arguments& args) {
5402 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 5383 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
5403 int32_t argc = args.GetLength(); 5384 int32_t argc = args.GetLength();
5404 if ((argc >= 2) && (argc <= 5)) { 5385 if ((argc >= 2) && (argc <= 5)) {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
5438 CFX_WideString::FromUTF8(bsData.AsStringC()), 5419 CFX_WideString::FromUTF8(bsData.AsStringC()),
5439 CFX_WideString::FromUTF8(bsContentType.AsStringC()), 5420 CFX_WideString::FromUTF8(bsContentType.AsStringC()),
5440 CFX_WideString::FromUTF8(bsEncode.AsStringC()), 5421 CFX_WideString::FromUTF8(bsEncode.AsStringC()),
5441 CFX_WideString::FromUTF8(bsHeader.AsStringC()), decodedResponse); 5422 CFX_WideString::FromUTF8(bsHeader.AsStringC()), decodedResponse);
5442 if (bFlags) { 5423 if (bFlags) {
5443 FXJSE_Value_SetUTF8String( 5424 FXJSE_Value_SetUTF8String(
5444 args.GetReturnValue(), 5425 args.GetReturnValue(),
5445 FX_UTF8Encode(decodedResponse.c_str(), decodedResponse.GetLength()) 5426 FX_UTF8Encode(decodedResponse.c_str(), decodedResponse.GetLength())
5446 .AsStringC()); 5427 .AsStringC());
5447 } else { 5428 } else {
5448 pContext->ThrowScriptErrorMessage(XFA_IDS_SERVER_DENY); 5429 pContext->Throw(XFA_IDS_SERVER_DENY);
5449 } 5430 }
5450 } else { 5431 } else {
5451 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 5432 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Post");
5452 L"Post");
5453 } 5433 }
5454 } 5434 }
5455 5435
5456 // static 5436 // static
5457 void CXFA_FM2JSContext::Put(CFXJSE_Value* pThis, 5437 void CXFA_FM2JSContext::Put(CFXJSE_Value* pThis,
5458 const CFX_ByteStringC& szFuncName, 5438 const CFX_ByteStringC& szFuncName,
5459 CFXJSE_Arguments& args) { 5439 CFXJSE_Arguments& args) {
5460 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 5440 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
5461 int32_t argc = args.GetLength(); 5441 int32_t argc = args.GetLength();
5462 if ((argc == 2) || (argc == 3)) { 5442 if ((argc == 2) || (argc == 3)) {
(...skipping 17 matching lines...) Expand all
5480 std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2); 5460 std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2);
5481 ValueToUTF8String(argThree.get(), bsEncode); 5461 ValueToUTF8String(argThree.get(), bsEncode);
5482 } 5462 }
5483 FX_BOOL bFlags = pAppProvider->PutRequestURL( 5463 FX_BOOL bFlags = pAppProvider->PutRequestURL(
5484 CFX_WideString::FromUTF8(bsURL.AsStringC()), 5464 CFX_WideString::FromUTF8(bsURL.AsStringC()),
5485 CFX_WideString::FromUTF8(bsData.AsStringC()), 5465 CFX_WideString::FromUTF8(bsData.AsStringC()),
5486 CFX_WideString::FromUTF8(bsEncode.AsStringC())); 5466 CFX_WideString::FromUTF8(bsEncode.AsStringC()));
5487 if (bFlags) { 5467 if (bFlags) {
5488 FXJSE_Value_SetUTF8String(args.GetReturnValue(), ""); 5468 FXJSE_Value_SetUTF8String(args.GetReturnValue(), "");
5489 } else { 5469 } else {
5490 pContext->ThrowScriptErrorMessage(XFA_IDS_SERVER_DENY); 5470 pContext->Throw(XFA_IDS_SERVER_DENY);
5491 } 5471 }
5492 } else { 5472 } else {
5493 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 5473 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Put");
5494 L"Put");
5495 } 5474 }
5496 } 5475 }
5497 5476
5498 // static 5477 // static
5499 void CXFA_FM2JSContext::assign_value_operator(CFXJSE_Value* pThis, 5478 void CXFA_FM2JSContext::assign_value_operator(CFXJSE_Value* pThis,
5500 const CFX_ByteStringC& szFuncName, 5479 const CFX_ByteStringC& szFuncName,
5501 CFXJSE_Arguments& args) { 5480 CFXJSE_Arguments& args) {
5502 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 5481 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
5503 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); 5482 v8::Isolate* pIsolate = pContext->GetScriptRuntime();
5504 if (args.GetLength() == 2) { 5483 if (args.GetLength() == 2) {
5505 std::unique_ptr<CFXJSE_Value> lValue = args.GetValue(0); 5484 std::unique_ptr<CFXJSE_Value> lValue = args.GetValue(0);
5506 std::unique_ptr<CFXJSE_Value> rValue = GetSimpleValue(pThis, args, 1); 5485 std::unique_ptr<CFXJSE_Value> rValue = GetSimpleValue(pThis, args, 1);
5507 FX_BOOL bSetStatus = TRUE; 5486 FX_BOOL bSetStatus = TRUE;
5508 if (FXJSE_Value_IsArray(lValue.get())) { 5487 if (FXJSE_Value_IsArray(lValue.get())) {
5509 std::unique_ptr<CFXJSE_Value> leftLengthValue(new CFXJSE_Value(pIsolate)); 5488 std::unique_ptr<CFXJSE_Value> leftLengthValue(new CFXJSE_Value(pIsolate));
5510 FXJSE_Value_GetObjectProp(lValue.get(), "length", leftLengthValue.get()); 5489 FXJSE_Value_GetObjectProp(lValue.get(), "length", leftLengthValue.get());
5511 int32_t iLeftLength = FXJSE_Value_ToInteger(leftLengthValue.get()); 5490 int32_t iLeftLength = FXJSE_Value_ToInteger(leftLengthValue.get());
5512 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); 5491 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
5513 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); 5492 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
5514 FXJSE_Value_GetObjectPropByIdx(lValue.get(), 1, propertyValue.get()); 5493 FXJSE_Value_GetObjectPropByIdx(lValue.get(), 1, propertyValue.get());
5515 if (FXJSE_Value_IsNull(propertyValue.get())) { 5494 if (FXJSE_Value_IsNull(propertyValue.get())) {
5516 for (int32_t i = 2; i < iLeftLength; i++) { 5495 for (int32_t i = 2; i < iLeftLength; i++) {
5517 FXJSE_Value_GetObjectPropByIdx(lValue.get(), i, jsObjectValue.get()); 5496 FXJSE_Value_GetObjectPropByIdx(lValue.get(), i, jsObjectValue.get());
5518 bSetStatus = SetObjectDefaultValue(jsObjectValue.get(), rValue.get()); 5497 bSetStatus = SetObjectDefaultValue(jsObjectValue.get(), rValue.get());
5519 if (!bSetStatus) { 5498 if (!bSetStatus) {
5520 pContext->ThrowScriptErrorMessage(XFA_IDS_NOT_DEFAUL_VALUE); 5499 pContext->Throw(XFA_IDS_NOT_DEFAUL_VALUE);
5521 break; 5500 break;
5522 } 5501 }
5523 } 5502 }
5524 } else { 5503 } else {
5525 CFX_ByteString propertyStr; 5504 CFX_ByteString propertyStr;
5526 FXJSE_Value_ToUTF8String(propertyValue.get(), propertyStr); 5505 FXJSE_Value_ToUTF8String(propertyValue.get(), propertyStr);
5527 for (int32_t i = 2; i < iLeftLength; i++) { 5506 for (int32_t i = 2; i < iLeftLength; i++) {
5528 FXJSE_Value_GetObjectPropByIdx(lValue.get(), i, jsObjectValue.get()); 5507 FXJSE_Value_GetObjectPropByIdx(lValue.get(), i, jsObjectValue.get());
5529 FXJSE_Value_SetObjectProp(jsObjectValue.get(), 5508 FXJSE_Value_SetObjectProp(jsObjectValue.get(),
5530 propertyStr.AsStringC(), rValue.get()); 5509 propertyStr.AsStringC(), rValue.get());
5531 } 5510 }
5532 } 5511 }
5533 } else if (FXJSE_Value_IsObject(lValue.get())) { 5512 } else if (FXJSE_Value_IsObject(lValue.get())) {
5534 bSetStatus = SetObjectDefaultValue(lValue.get(), rValue.get()); 5513 bSetStatus = SetObjectDefaultValue(lValue.get(), rValue.get());
5535 if (!bSetStatus) { 5514 if (!bSetStatus) {
5536 pContext->ThrowScriptErrorMessage(XFA_IDS_NOT_DEFAUL_VALUE); 5515 pContext->Throw(XFA_IDS_NOT_DEFAUL_VALUE);
5537 } 5516 }
5538 } 5517 }
5539 FXJSE_Value_Set(args.GetReturnValue(), rValue.get()); 5518 FXJSE_Value_Set(args.GetReturnValue(), rValue.get());
5540 } else { 5519 } else {
5541 pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); 5520 pContext->Throw(XFA_IDS_COMPILER_ERROR);
5542 } 5521 }
5543 } 5522 }
5544 5523
5545 // static 5524 // static
5546 void CXFA_FM2JSContext::logical_or_operator(CFXJSE_Value* pThis, 5525 void CXFA_FM2JSContext::logical_or_operator(CFXJSE_Value* pThis,
5547 const CFX_ByteStringC& szFuncName, 5526 const CFX_ByteStringC& szFuncName,
5548 CFXJSE_Arguments& args) { 5527 CFXJSE_Arguments& args) {
5549 if (args.GetLength() == 2) { 5528 if (args.GetLength() == 2) {
5550 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); 5529 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
5551 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); 5530 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
5552 if (FXJSE_Value_IsNull(argFirst.get()) && 5531 if (FXJSE_Value_IsNull(argFirst.get()) &&
5553 FXJSE_Value_IsNull(argSecond.get())) { 5532 FXJSE_Value_IsNull(argSecond.get())) {
5554 FXJSE_Value_SetNull(args.GetReturnValue()); 5533 FXJSE_Value_SetNull(args.GetReturnValue());
5555 } else { 5534 } else {
5556 FX_FLOAT first = ValueToFloat(pThis, argFirst.get()); 5535 FX_FLOAT first = ValueToFloat(pThis, argFirst.get());
5557 FX_FLOAT second = ValueToFloat(pThis, argSecond.get()); 5536 FX_FLOAT second = ValueToFloat(pThis, argSecond.get());
5558 FXJSE_Value_SetInteger(args.GetReturnValue(), (first || second) ? 1 : 0); 5537 FXJSE_Value_SetInteger(args.GetReturnValue(), (first || second) ? 1 : 0);
5559 } 5538 }
5560 } else { 5539 } else {
5561 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 5540 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_COMPILER_ERROR);
5562 XFA_IDS_COMPILER_ERROR);
5563 } 5541 }
5564 } 5542 }
5565 5543
5566 // static 5544 // static
5567 void CXFA_FM2JSContext::logical_and_operator(CFXJSE_Value* pThis, 5545 void CXFA_FM2JSContext::logical_and_operator(CFXJSE_Value* pThis,
5568 const CFX_ByteStringC& szFuncName, 5546 const CFX_ByteStringC& szFuncName,
5569 CFXJSE_Arguments& args) { 5547 CFXJSE_Arguments& args) {
5570 if (args.GetLength() == 2) { 5548 if (args.GetLength() == 2) {
5571 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); 5549 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
5572 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); 5550 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
5573 if (FXJSE_Value_IsNull(argFirst.get()) && 5551 if (FXJSE_Value_IsNull(argFirst.get()) &&
5574 FXJSE_Value_IsNull(argSecond.get())) { 5552 FXJSE_Value_IsNull(argSecond.get())) {
5575 FXJSE_Value_SetNull(args.GetReturnValue()); 5553 FXJSE_Value_SetNull(args.GetReturnValue());
5576 } else { 5554 } else {
5577 FX_FLOAT first = ValueToFloat(pThis, argFirst.get()); 5555 FX_FLOAT first = ValueToFloat(pThis, argFirst.get());
5578 FX_FLOAT second = ValueToFloat(pThis, argSecond.get()); 5556 FX_FLOAT second = ValueToFloat(pThis, argSecond.get());
5579 FXJSE_Value_SetInteger(args.GetReturnValue(), (first && second) ? 1 : 0); 5557 FXJSE_Value_SetInteger(args.GetReturnValue(), (first && second) ? 1 : 0);
5580 } 5558 }
5581 } else { 5559 } else {
5582 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 5560 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_COMPILER_ERROR);
5583 XFA_IDS_COMPILER_ERROR);
5584 } 5561 }
5585 } 5562 }
5586 5563
5587 // static 5564 // static
5588 void CXFA_FM2JSContext::equality_operator(CFXJSE_Value* pThis, 5565 void CXFA_FM2JSContext::equality_operator(CFXJSE_Value* pThis,
5589 const CFX_ByteStringC& szFuncName, 5566 const CFX_ByteStringC& szFuncName,
5590 CFXJSE_Arguments& args) { 5567 CFXJSE_Arguments& args) {
5591 if (args.GetLength() == 2) { 5568 if (args.GetLength() == 2) {
5592 if (fm_ref_equal(pThis, args)) { 5569 if (fm_ref_equal(pThis, args)) {
5593 FXJSE_Value_SetInteger(args.GetReturnValue(), 1); 5570 FXJSE_Value_SetInteger(args.GetReturnValue(), 1);
(...skipping 16 matching lines...) Expand all
5610 FXJSE_Value_SetInteger(args.GetReturnValue(), 5587 FXJSE_Value_SetInteger(args.GetReturnValue(),
5611 firstOutput == secondOutput); 5588 firstOutput == secondOutput);
5612 } else { 5589 } else {
5613 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); 5590 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
5614 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); 5591 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
5615 FXJSE_Value_SetInteger(args.GetReturnValue(), 5592 FXJSE_Value_SetInteger(args.GetReturnValue(),
5616 (first == second) ? 1 : 0); 5593 (first == second) ? 1 : 0);
5617 } 5594 }
5618 } 5595 }
5619 } else { 5596 } else {
5620 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 5597 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_COMPILER_ERROR);
5621 XFA_IDS_COMPILER_ERROR);
5622 } 5598 }
5623 } 5599 }
5624 5600
5625 // static 5601 // static
5626 void CXFA_FM2JSContext::notequality_operator(CFXJSE_Value* pThis, 5602 void CXFA_FM2JSContext::notequality_operator(CFXJSE_Value* pThis,
5627 const CFX_ByteStringC& szFuncName, 5603 const CFX_ByteStringC& szFuncName,
5628 CFXJSE_Arguments& args) { 5604 CFXJSE_Arguments& args) {
5629 if (args.GetLength() == 2) { 5605 if (args.GetLength() == 2) {
5630 if (fm_ref_equal(pThis, args)) { 5606 if (fm_ref_equal(pThis, args)) {
5631 FXJSE_Value_SetInteger(args.GetReturnValue(), 0); 5607 FXJSE_Value_SetInteger(args.GetReturnValue(), 0);
(...skipping 15 matching lines...) Expand all
5647 FXJSE_Value_ToUTF8String(argSecond.get(), secondOutput); 5623 FXJSE_Value_ToUTF8String(argSecond.get(), secondOutput);
5648 FXJSE_Value_SetInteger(args.GetReturnValue(), 5624 FXJSE_Value_SetInteger(args.GetReturnValue(),
5649 firstOutput != secondOutput); 5625 firstOutput != secondOutput);
5650 } else { 5626 } else {
5651 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); 5627 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
5652 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); 5628 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
5653 FXJSE_Value_SetInteger(args.GetReturnValue(), first != second); 5629 FXJSE_Value_SetInteger(args.GetReturnValue(), first != second);
5654 } 5630 }
5655 } 5631 }
5656 } else { 5632 } else {
5657 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 5633 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_COMPILER_ERROR);
5658 XFA_IDS_COMPILER_ERROR);
5659 } 5634 }
5660 } 5635 }
5661 5636
5662 // static 5637 // static
5663 FX_BOOL CXFA_FM2JSContext::fm_ref_equal(CFXJSE_Value* pThis, 5638 FX_BOOL CXFA_FM2JSContext::fm_ref_equal(CFXJSE_Value* pThis,
5664 CFXJSE_Arguments& args) { 5639 CFXJSE_Arguments& args) {
5665 FX_BOOL bRet = FALSE; 5640 FX_BOOL bRet = FALSE;
5666 v8::Isolate* pIsolate = pThis->ToJSContext(nullptr)->GetScriptRuntime(); 5641 v8::Isolate* pIsolate = pThis->ToJSContext(nullptr)->GetScriptRuntime();
5667 std::unique_ptr<CFXJSE_Value> argFirst = args.GetValue(0); 5642 std::unique_ptr<CFXJSE_Value> argFirst = args.GetValue(0);
5668 std::unique_ptr<CFXJSE_Value> argSecond = args.GetValue(1); 5643 std::unique_ptr<CFXJSE_Value> argSecond = args.GetValue(1);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
5706 FXJSE_Value_ToUTF8String(argSecond.get(), secondOutput); 5681 FXJSE_Value_ToUTF8String(argSecond.get(), secondOutput);
5707 FXJSE_Value_SetInteger( 5682 FXJSE_Value_SetInteger(
5708 args.GetReturnValue(), 5683 args.GetReturnValue(),
5709 firstOutput.Compare(secondOutput.AsStringC()) == -1); 5684 firstOutput.Compare(secondOutput.AsStringC()) == -1);
5710 } else { 5685 } else {
5711 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); 5686 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
5712 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); 5687 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
5713 FXJSE_Value_SetInteger(args.GetReturnValue(), (first < second) ? 1 : 0); 5688 FXJSE_Value_SetInteger(args.GetReturnValue(), (first < second) ? 1 : 0);
5714 } 5689 }
5715 } else { 5690 } else {
5716 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 5691 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_COMPILER_ERROR);
5717 XFA_IDS_COMPILER_ERROR);
5718 } 5692 }
5719 } 5693 }
5720 5694
5721 // static 5695 // static
5722 void CXFA_FM2JSContext::lessequal_operator(CFXJSE_Value* pThis, 5696 void CXFA_FM2JSContext::lessequal_operator(CFXJSE_Value* pThis,
5723 const CFX_ByteStringC& szFuncName, 5697 const CFX_ByteStringC& szFuncName,
5724 CFXJSE_Arguments& args) { 5698 CFXJSE_Arguments& args) {
5725 if (args.GetLength() == 2) { 5699 if (args.GetLength() == 2) {
5726 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); 5700 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
5727 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); 5701 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
(...skipping 12 matching lines...) Expand all
5740 FXJSE_Value_ToUTF8String(argSecond.get(), secondOutput); 5714 FXJSE_Value_ToUTF8String(argSecond.get(), secondOutput);
5741 FXJSE_Value_SetInteger( 5715 FXJSE_Value_SetInteger(
5742 args.GetReturnValue(), 5716 args.GetReturnValue(),
5743 firstOutput.Compare(secondOutput.AsStringC()) != 1); 5717 firstOutput.Compare(secondOutput.AsStringC()) != 1);
5744 } else { 5718 } else {
5745 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); 5719 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
5746 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); 5720 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
5747 FXJSE_Value_SetInteger(args.GetReturnValue(), (first <= second) ? 1 : 0); 5721 FXJSE_Value_SetInteger(args.GetReturnValue(), (first <= second) ? 1 : 0);
5748 } 5722 }
5749 } else { 5723 } else {
5750 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 5724 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_COMPILER_ERROR);
5751 XFA_IDS_COMPILER_ERROR);
5752 } 5725 }
5753 } 5726 }
5754 5727
5755 // static 5728 // static
5756 void CXFA_FM2JSContext::greater_operator(CFXJSE_Value* pThis, 5729 void CXFA_FM2JSContext::greater_operator(CFXJSE_Value* pThis,
5757 const CFX_ByteStringC& szFuncName, 5730 const CFX_ByteStringC& szFuncName,
5758 CFXJSE_Arguments& args) { 5731 CFXJSE_Arguments& args) {
5759 if (args.GetLength() == 2) { 5732 if (args.GetLength() == 2) {
5760 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); 5733 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
5761 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); 5734 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
5762 if (FXJSE_Value_IsNull(argFirst.get()) || 5735 if (FXJSE_Value_IsNull(argFirst.get()) ||
5763 FXJSE_Value_IsNull(argSecond.get())) { 5736 FXJSE_Value_IsNull(argSecond.get())) {
5764 FXJSE_Value_SetInteger(args.GetReturnValue(), 0); 5737 FXJSE_Value_SetInteger(args.GetReturnValue(), 0);
5765 } else if (FXJSE_Value_IsUTF8String(argFirst.get()) && 5738 } else if (FXJSE_Value_IsUTF8String(argFirst.get()) &&
5766 FXJSE_Value_IsUTF8String(argSecond.get())) { 5739 FXJSE_Value_IsUTF8String(argSecond.get())) {
5767 CFX_ByteString firstOutput; 5740 CFX_ByteString firstOutput;
5768 CFX_ByteString secondOutput; 5741 CFX_ByteString secondOutput;
5769 FXJSE_Value_ToUTF8String(argFirst.get(), firstOutput); 5742 FXJSE_Value_ToUTF8String(argFirst.get(), firstOutput);
5770 FXJSE_Value_ToUTF8String(argSecond.get(), secondOutput); 5743 FXJSE_Value_ToUTF8String(argSecond.get(), secondOutput);
5771 FXJSE_Value_SetInteger( 5744 FXJSE_Value_SetInteger(
5772 args.GetReturnValue(), 5745 args.GetReturnValue(),
5773 firstOutput.Compare(secondOutput.AsStringC()) == 1); 5746 firstOutput.Compare(secondOutput.AsStringC()) == 1);
5774 } else { 5747 } else {
5775 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); 5748 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
5776 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); 5749 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
5777 FXJSE_Value_SetInteger(args.GetReturnValue(), (first > second) ? 1 : 0); 5750 FXJSE_Value_SetInteger(args.GetReturnValue(), (first > second) ? 1 : 0);
5778 } 5751 }
5779 } else { 5752 } else {
5780 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 5753 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_COMPILER_ERROR);
5781 XFA_IDS_COMPILER_ERROR);
5782 } 5754 }
5783 } 5755 }
5784 5756
5785 // static 5757 // static
5786 void CXFA_FM2JSContext::greaterequal_operator(CFXJSE_Value* pThis, 5758 void CXFA_FM2JSContext::greaterequal_operator(CFXJSE_Value* pThis,
5787 const CFX_ByteStringC& szFuncName, 5759 const CFX_ByteStringC& szFuncName,
5788 CFXJSE_Arguments& args) { 5760 CFXJSE_Arguments& args) {
5789 if (args.GetLength() == 2) { 5761 if (args.GetLength() == 2) {
5790 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); 5762 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
5791 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); 5763 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
(...skipping 12 matching lines...) Expand all
5804 FXJSE_Value_ToUTF8String(argSecond.get(), secondOutput); 5776 FXJSE_Value_ToUTF8String(argSecond.get(), secondOutput);
5805 FXJSE_Value_SetInteger( 5777 FXJSE_Value_SetInteger(
5806 args.GetReturnValue(), 5778 args.GetReturnValue(),
5807 firstOutput.Compare(secondOutput.AsStringC()) != -1); 5779 firstOutput.Compare(secondOutput.AsStringC()) != -1);
5808 } else { 5780 } else {
5809 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); 5781 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
5810 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); 5782 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
5811 FXJSE_Value_SetInteger(args.GetReturnValue(), (first >= second) ? 1 : 0); 5783 FXJSE_Value_SetInteger(args.GetReturnValue(), (first >= second) ? 1 : 0);
5812 } 5784 }
5813 } else { 5785 } else {
5814 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 5786 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_COMPILER_ERROR);
5815 XFA_IDS_COMPILER_ERROR);
5816 } 5787 }
5817 } 5788 }
5818 5789
5819 // static 5790 // static
5820 void CXFA_FM2JSContext::plus_operator(CFXJSE_Value* pThis, 5791 void CXFA_FM2JSContext::plus_operator(CFXJSE_Value* pThis,
5821 const CFX_ByteStringC& szFuncName, 5792 const CFX_ByteStringC& szFuncName,
5822 CFXJSE_Arguments& args) { 5793 CFXJSE_Arguments& args) {
5823 if (args.GetLength() == 2) { 5794 if (args.GetLength() == 2) {
5824 std::unique_ptr<CFXJSE_Value> argFirst = args.GetValue(0); 5795 std::unique_ptr<CFXJSE_Value> argFirst = args.GetValue(0);
5825 std::unique_ptr<CFXJSE_Value> argSecond = args.GetValue(1); 5796 std::unique_ptr<CFXJSE_Value> argSecond = args.GetValue(1);
5826 if (ValueIsNull(pThis, argFirst.get()) && 5797 if (ValueIsNull(pThis, argFirst.get()) &&
5827 ValueIsNull(pThis, argSecond.get())) { 5798 ValueIsNull(pThis, argSecond.get())) {
5828 FXJSE_Value_SetNull(args.GetReturnValue()); 5799 FXJSE_Value_SetNull(args.GetReturnValue());
5829 } else { 5800 } else {
5830 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); 5801 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
5831 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); 5802 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
5832 FXJSE_Value_SetDouble(args.GetReturnValue(), first + second); 5803 FXJSE_Value_SetDouble(args.GetReturnValue(), first + second);
5833 } 5804 }
5834 } else { 5805 } else {
5835 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 5806 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_COMPILER_ERROR);
5836 XFA_IDS_COMPILER_ERROR);
5837 } 5807 }
5838 } 5808 }
5839 5809
5840 // static 5810 // static
5841 void CXFA_FM2JSContext::minus_operator(CFXJSE_Value* pThis, 5811 void CXFA_FM2JSContext::minus_operator(CFXJSE_Value* pThis,
5842 const CFX_ByteStringC& szFuncName, 5812 const CFX_ByteStringC& szFuncName,
5843 CFXJSE_Arguments& args) { 5813 CFXJSE_Arguments& args) {
5844 if (args.GetLength() == 2) { 5814 if (args.GetLength() == 2) {
5845 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); 5815 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
5846 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); 5816 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
5847 if (FXJSE_Value_IsNull(argFirst.get()) && 5817 if (FXJSE_Value_IsNull(argFirst.get()) &&
5848 FXJSE_Value_IsNull(argSecond.get())) { 5818 FXJSE_Value_IsNull(argSecond.get())) {
5849 FXJSE_Value_SetNull(args.GetReturnValue()); 5819 FXJSE_Value_SetNull(args.GetReturnValue());
5850 } else { 5820 } else {
5851 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); 5821 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
5852 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); 5822 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
5853 FXJSE_Value_SetDouble(args.GetReturnValue(), first - second); 5823 FXJSE_Value_SetDouble(args.GetReturnValue(), first - second);
5854 } 5824 }
5855 } else { 5825 } else {
5856 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 5826 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_COMPILER_ERROR);
5857 XFA_IDS_COMPILER_ERROR);
5858 } 5827 }
5859 } 5828 }
5860 5829
5861 // static 5830 // static
5862 void CXFA_FM2JSContext::multiple_operator(CFXJSE_Value* pThis, 5831 void CXFA_FM2JSContext::multiple_operator(CFXJSE_Value* pThis,
5863 const CFX_ByteStringC& szFuncName, 5832 const CFX_ByteStringC& szFuncName,
5864 CFXJSE_Arguments& args) { 5833 CFXJSE_Arguments& args) {
5865 if (args.GetLength() == 2) { 5834 if (args.GetLength() == 2) {
5866 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); 5835 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
5867 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); 5836 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
5868 if (FXJSE_Value_IsNull(argFirst.get()) && 5837 if (FXJSE_Value_IsNull(argFirst.get()) &&
5869 FXJSE_Value_IsNull(argSecond.get())) { 5838 FXJSE_Value_IsNull(argSecond.get())) {
5870 FXJSE_Value_SetNull(args.GetReturnValue()); 5839 FXJSE_Value_SetNull(args.GetReturnValue());
5871 } else { 5840 } else {
5872 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); 5841 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
5873 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); 5842 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
5874 FXJSE_Value_SetDouble(args.GetReturnValue(), first * second); 5843 FXJSE_Value_SetDouble(args.GetReturnValue(), first * second);
5875 } 5844 }
5876 } else { 5845 } else {
5877 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 5846 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_COMPILER_ERROR);
5878 XFA_IDS_COMPILER_ERROR);
5879 } 5847 }
5880 } 5848 }
5881 5849
5882 // static 5850 // static
5883 void CXFA_FM2JSContext::divide_operator(CFXJSE_Value* pThis, 5851 void CXFA_FM2JSContext::divide_operator(CFXJSE_Value* pThis,
5884 const CFX_ByteStringC& szFuncName, 5852 const CFX_ByteStringC& szFuncName,
5885 CFXJSE_Arguments& args) { 5853 CFXJSE_Arguments& args) {
5886 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 5854 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
5887 if (args.GetLength() == 2) { 5855 if (args.GetLength() == 2) {
5888 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); 5856 std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
5889 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); 5857 std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
5890 if (FXJSE_Value_IsNull(argFirst.get()) && 5858 if (FXJSE_Value_IsNull(argFirst.get()) &&
5891 FXJSE_Value_IsNull(argSecond.get())) { 5859 FXJSE_Value_IsNull(argSecond.get())) {
5892 FXJSE_Value_SetNull(args.GetReturnValue()); 5860 FXJSE_Value_SetNull(args.GetReturnValue());
5893 } else { 5861 } else {
5894 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); 5862 FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
5895 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); 5863 FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
5896 if (second == 0.0) { 5864 if (second == 0.0) {
5897 pContext->ThrowScriptErrorMessage(XFA_IDS_DIVIDE_ZERO); 5865 pContext->Throw(XFA_IDS_DIVIDE_ZERO);
5898 } else { 5866 } else {
5899 FXJSE_Value_SetDouble(args.GetReturnValue(), first / second); 5867 FXJSE_Value_SetDouble(args.GetReturnValue(), first / second);
5900 } 5868 }
5901 } 5869 }
5902 } else { 5870 } else {
5903 pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); 5871 pContext->Throw(XFA_IDS_COMPILER_ERROR);
5904 } 5872 }
5905 } 5873 }
5906 5874
5907 // static 5875 // static
5908 void CXFA_FM2JSContext::positive_operator(CFXJSE_Value* pThis, 5876 void CXFA_FM2JSContext::positive_operator(CFXJSE_Value* pThis,
5909 const CFX_ByteStringC& szFuncName, 5877 const CFX_ByteStringC& szFuncName,
5910 CFXJSE_Arguments& args) { 5878 CFXJSE_Arguments& args) {
5911 if (args.GetLength() == 1) { 5879 if (args.GetLength() == 1) {
5912 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 5880 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
5913 if (FXJSE_Value_IsNull(argOne.get())) { 5881 if (FXJSE_Value_IsNull(argOne.get())) {
5914 FXJSE_Value_SetNull(args.GetReturnValue()); 5882 FXJSE_Value_SetNull(args.GetReturnValue());
5915 } else { 5883 } else {
5916 FXJSE_Value_SetDouble(args.GetReturnValue(), 5884 FXJSE_Value_SetDouble(args.GetReturnValue(),
5917 0.0 + ValueToDouble(pThis, argOne.get())); 5885 0.0 + ValueToDouble(pThis, argOne.get()));
5918 } 5886 }
5919 } else { 5887 } else {
5920 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 5888 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_COMPILER_ERROR);
5921 XFA_IDS_COMPILER_ERROR);
5922 } 5889 }
5923 } 5890 }
5924 5891
5925 // static 5892 // static
5926 void CXFA_FM2JSContext::negative_operator(CFXJSE_Value* pThis, 5893 void CXFA_FM2JSContext::negative_operator(CFXJSE_Value* pThis,
5927 const CFX_ByteStringC& szFuncName, 5894 const CFX_ByteStringC& szFuncName,
5928 CFXJSE_Arguments& args) { 5895 CFXJSE_Arguments& args) {
5929 if (args.GetLength() == 1) { 5896 if (args.GetLength() == 1) {
5930 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 5897 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
5931 if (FXJSE_Value_IsNull(argOne.get())) { 5898 if (FXJSE_Value_IsNull(argOne.get())) {
5932 FXJSE_Value_SetNull(args.GetReturnValue()); 5899 FXJSE_Value_SetNull(args.GetReturnValue());
5933 } else { 5900 } else {
5934 FXJSE_Value_SetDouble(args.GetReturnValue(), 5901 FXJSE_Value_SetDouble(args.GetReturnValue(),
5935 0.0 - ValueToDouble(pThis, argOne.get())); 5902 0.0 - ValueToDouble(pThis, argOne.get()));
5936 } 5903 }
5937 } else { 5904 } else {
5938 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 5905 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_COMPILER_ERROR);
5939 XFA_IDS_COMPILER_ERROR);
5940 } 5906 }
5941 } 5907 }
5942 5908
5943 // static 5909 // static
5944 void CXFA_FM2JSContext::logical_not_operator(CFXJSE_Value* pThis, 5910 void CXFA_FM2JSContext::logical_not_operator(CFXJSE_Value* pThis,
5945 const CFX_ByteStringC& szFuncName, 5911 const CFX_ByteStringC& szFuncName,
5946 CFXJSE_Arguments& args) { 5912 CFXJSE_Arguments& args) {
5947 if (args.GetLength() == 1) { 5913 if (args.GetLength() == 1) {
5948 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 5914 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
5949 if (FXJSE_Value_IsNull(argOne.get())) { 5915 if (FXJSE_Value_IsNull(argOne.get())) {
5950 FXJSE_Value_SetNull(args.GetReturnValue()); 5916 FXJSE_Value_SetNull(args.GetReturnValue());
5951 } else { 5917 } else {
5952 FX_DOUBLE first = ValueToDouble(pThis, argOne.get()); 5918 FX_DOUBLE first = ValueToDouble(pThis, argOne.get());
5953 FXJSE_Value_SetInteger(args.GetReturnValue(), (first == 0.0) ? 1 : 0); 5919 FXJSE_Value_SetInteger(args.GetReturnValue(), (first == 0.0) ? 1 : 0);
5954 } 5920 }
5955 } else { 5921 } else {
5956 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 5922 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_COMPILER_ERROR);
5957 XFA_IDS_COMPILER_ERROR);
5958 } 5923 }
5959 } 5924 }
5960 5925
5961 // static 5926 // static
5962 void CXFA_FM2JSContext::dot_accessor(CFXJSE_Value* pThis, 5927 void CXFA_FM2JSContext::dot_accessor(CFXJSE_Value* pThis,
5963 const CFX_ByteStringC& szFuncName, 5928 const CFX_ByteStringC& szFuncName,
5964 CFXJSE_Arguments& args) { 5929 CFXJSE_Arguments& args) {
5965 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 5930 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
5966 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); 5931 v8::Isolate* pIsolate = pContext->GetScriptRuntime();
5967 int32_t argc = args.GetLength(); 5932 int32_t argc = args.GetLength();
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
6026 FXJSE_Value_SetArray(args.GetReturnValue(), (iCounter + 2), rgValues); 5991 FXJSE_Value_SetArray(args.GetReturnValue(), (iCounter + 2), rgValues);
6027 for (int32_t i = 0; i < (iCounter + 2); i++) 5992 for (int32_t i = 0; i < (iCounter + 2); i++)
6028 delete rgValues[i]; 5993 delete rgValues[i];
6029 5994
6030 FX_Free(rgValues); 5995 FX_Free(rgValues);
6031 } else { 5996 } else {
6032 CFX_WideString wsPropertyName = 5997 CFX_WideString wsPropertyName =
6033 CFX_WideString::FromUTF8(szName.AsStringC()); 5998 CFX_WideString::FromUTF8(szName.AsStringC());
6034 CFX_WideString wsSomExpression = 5999 CFX_WideString wsSomExpression =
6035 CFX_WideString::FromUTF8(szSomExp.AsStringC()); 6000 CFX_WideString::FromUTF8(szSomExp.AsStringC());
6036 pContext->ThrowScriptErrorMessage(XFA_IDS_ACCESS_PROPERTY_IN_NOT_OBJECT, 6001 pContext->Throw(XFA_IDS_ACCESS_PROPERTY_IN_NOT_OBJECT,
6037 wsPropertyName.c_str(), 6002 wsPropertyName.c_str(), wsSomExpression.c_str());
6038 wsSomExpression.c_str());
6039 } 6003 }
6040 for (int32_t i = 0; i < iLength - 2; i++) { 6004 for (int32_t i = 0; i < iLength - 2; i++) {
6041 for (int32_t j = 0; j < iSizes[i]; j++) 6005 for (int32_t j = 0; j < iSizes[i]; j++)
6042 delete hResolveValues[i][j]; 6006 delete hResolveValues[i][j];
6043 6007
6044 if (iSizes[i] > 0) { 6008 if (iSizes[i] > 0) {
6045 FX_Free(hResolveValues[i]); 6009 FX_Free(hResolveValues[i]);
6046 } 6010 }
6047 } 6011 }
6048 FX_Free(hResolveValues); 6012 FX_Free(hResolveValues);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
6089 FX_Free(rgValues); 6053 FX_Free(rgValues);
6090 for (int32_t i = 0; i < iSize; i++) 6054 for (int32_t i = 0; i < iSize; i++)
6091 delete hResolveValues[i]; 6055 delete hResolveValues[i];
6092 6056
6093 FX_Free(hResolveValues); 6057 FX_Free(hResolveValues);
6094 } else { 6058 } else {
6095 CFX_WideString wsPropertyName = 6059 CFX_WideString wsPropertyName =
6096 CFX_WideString::FromUTF8(szName.AsStringC()); 6060 CFX_WideString::FromUTF8(szName.AsStringC());
6097 CFX_WideString wsSomExpression = 6061 CFX_WideString wsSomExpression =
6098 CFX_WideString::FromUTF8(szSomExp.AsStringC()); 6062 CFX_WideString::FromUTF8(szSomExp.AsStringC());
6099 pContext->ThrowScriptErrorMessage(XFA_IDS_ACCESS_PROPERTY_IN_NOT_OBJECT, 6063 pContext->Throw(XFA_IDS_ACCESS_PROPERTY_IN_NOT_OBJECT,
6100 wsPropertyName.c_str(), 6064 wsPropertyName.c_str(), wsSomExpression.c_str());
6101 wsSomExpression.c_str());
6102 } 6065 }
6103 } 6066 }
6104 } else { 6067 } else {
6105 pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); 6068 pContext->Throw(XFA_IDS_COMPILER_ERROR);
6106 } 6069 }
6107 } 6070 }
6108 6071
6109 // static 6072 // static
6110 void CXFA_FM2JSContext::dotdot_accessor(CFXJSE_Value* pThis, 6073 void CXFA_FM2JSContext::dotdot_accessor(CFXJSE_Value* pThis,
6111 const CFX_ByteStringC& szFuncName, 6074 const CFX_ByteStringC& szFuncName,
6112 CFXJSE_Arguments& args) { 6075 CFXJSE_Arguments& args) {
6113 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 6076 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
6114 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); 6077 v8::Isolate* pIsolate = pContext->GetScriptRuntime();
6115 int32_t argc = args.GetLength(); 6078 int32_t argc = args.GetLength();
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
6171 FXJSE_Value_SetArray(args.GetReturnValue(), (iCounter + 2), rgValues); 6134 FXJSE_Value_SetArray(args.GetReturnValue(), (iCounter + 2), rgValues);
6172 for (int32_t i = 0; i < (iCounter + 2); i++) 6135 for (int32_t i = 0; i < (iCounter + 2); i++)
6173 delete rgValues[i]; 6136 delete rgValues[i];
6174 6137
6175 FX_Free(rgValues); 6138 FX_Free(rgValues);
6176 } else { 6139 } else {
6177 CFX_WideString wsPropertyName = 6140 CFX_WideString wsPropertyName =
6178 CFX_WideString::FromUTF8(szName.AsStringC()); 6141 CFX_WideString::FromUTF8(szName.AsStringC());
6179 CFX_WideString wsSomExpression = 6142 CFX_WideString wsSomExpression =
6180 CFX_WideString::FromUTF8(szSomExp.AsStringC()); 6143 CFX_WideString::FromUTF8(szSomExp.AsStringC());
6181 pContext->ThrowScriptErrorMessage(XFA_IDS_ACCESS_PROPERTY_IN_NOT_OBJECT, 6144 pContext->Throw(XFA_IDS_ACCESS_PROPERTY_IN_NOT_OBJECT,
6182 wsPropertyName.c_str(), 6145 wsPropertyName.c_str(), wsSomExpression.c_str());
6183 wsSomExpression.c_str());
6184 } 6146 }
6185 for (int32_t i = 0; i < iLength - 2; i++) { 6147 for (int32_t i = 0; i < iLength - 2; i++) {
6186 for (int32_t j = 0; j < iSizes[i]; j++) 6148 for (int32_t j = 0; j < iSizes[i]; j++)
6187 delete hResolveValues[i][j]; 6149 delete hResolveValues[i][j];
6188 6150
6189 FX_Free(hResolveValues[i]); 6151 FX_Free(hResolveValues[i]);
6190 } 6152 }
6191 FX_Free(hResolveValues); 6153 FX_Free(hResolveValues);
6192 FX_Free(iSizes); 6154 FX_Free(iSizes);
6193 } else { 6155 } else {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
6232 FX_Free(rgValues); 6194 FX_Free(rgValues);
6233 for (int32_t i = 0; i < iSize; i++) 6195 for (int32_t i = 0; i < iSize; i++)
6234 delete hResolveValues[i]; 6196 delete hResolveValues[i];
6235 6197
6236 FX_Free(hResolveValues); 6198 FX_Free(hResolveValues);
6237 } else { 6199 } else {
6238 CFX_WideString wsPropertyName = 6200 CFX_WideString wsPropertyName =
6239 CFX_WideString::FromUTF8(szName.AsStringC()); 6201 CFX_WideString::FromUTF8(szName.AsStringC());
6240 CFX_WideString wsSomExpression = 6202 CFX_WideString wsSomExpression =
6241 CFX_WideString::FromUTF8(szSomExp.AsStringC()); 6203 CFX_WideString::FromUTF8(szSomExp.AsStringC());
6242 pContext->ThrowScriptErrorMessage(XFA_IDS_ACCESS_PROPERTY_IN_NOT_OBJECT, 6204 pContext->Throw(XFA_IDS_ACCESS_PROPERTY_IN_NOT_OBJECT,
6243 wsPropertyName.c_str(), 6205 wsPropertyName.c_str(), wsSomExpression.c_str());
6244 wsSomExpression.c_str());
6245 } 6206 }
6246 } 6207 }
6247 } else { 6208 } else {
6248 pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); 6209 pContext->Throw(XFA_IDS_COMPILER_ERROR);
6249 } 6210 }
6250 } 6211 }
6251 6212
6252 // static 6213 // static
6253 void CXFA_FM2JSContext::eval_translation(CFXJSE_Value* pThis, 6214 void CXFA_FM2JSContext::eval_translation(CFXJSE_Value* pThis,
6254 const CFX_ByteStringC& szFuncName, 6215 const CFX_ByteStringC& szFuncName,
6255 CFXJSE_Arguments& args) { 6216 CFXJSE_Arguments& args) {
6256 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 6217 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
6257 if (args.GetLength() == 1) { 6218 if (args.GetLength() == 1) {
6258 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); 6219 std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
6259 CFX_ByteString argString; 6220 CFX_ByteString argString;
6260 ValueToUTF8String(argOne.get(), argString); 6221 ValueToUTF8String(argOne.get(), argString);
6261 if (argString.IsEmpty()) { 6222 if (argString.IsEmpty()) {
6262 pContext->ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); 6223 pContext->Throw(XFA_IDS_ARGUMENT_MISMATCH);
6263 } else { 6224 } else {
6264 CFX_WideString scriptString = 6225 CFX_WideString scriptString =
6265 CFX_WideString::FromUTF8(argString.AsStringC()); 6226 CFX_WideString::FromUTF8(argString.AsStringC());
6266 CFX_WideTextBuf wsJavaScriptBuf; 6227 CFX_WideTextBuf wsJavaScriptBuf;
6267 CFX_WideString wsError; 6228 CFX_WideString wsError;
6268 CXFA_FM2JSContext::Translate(scriptString.AsStringC(), wsJavaScriptBuf, 6229 CXFA_FM2JSContext::Translate(scriptString.AsStringC(), wsJavaScriptBuf,
6269 wsError); 6230 wsError);
6270 if (wsError.IsEmpty()) { 6231 if (wsError.IsEmpty()) {
6271 CFX_WideString javaScript = wsJavaScriptBuf.MakeString(); 6232 CFX_WideString javaScript = wsJavaScriptBuf.MakeString();
6272 FXJSE_Value_SetUTF8String( 6233 FXJSE_Value_SetUTF8String(
6273 args.GetReturnValue(), 6234 args.GetReturnValue(),
6274 FX_UTF8Encode(javaScript.c_str(), javaScript.GetLength()) 6235 FX_UTF8Encode(javaScript.c_str(), javaScript.GetLength())
6275 .AsStringC()); 6236 .AsStringC());
6276 } else { 6237 } else {
6277 pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); 6238 pContext->Throw(XFA_IDS_COMPILER_ERROR);
6278 } 6239 }
6279 } 6240 }
6280 } else { 6241 } else {
6281 pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, 6242 pContext->Throw(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Eval");
6282 L"Eval");
6283 } 6243 }
6284 } 6244 }
6285 6245
6286 // static 6246 // static
6287 void CXFA_FM2JSContext::is_fm_object(CFXJSE_Value* pThis, 6247 void CXFA_FM2JSContext::is_fm_object(CFXJSE_Value* pThis,
6288 const CFX_ByteStringC& szFuncName, 6248 const CFX_ByteStringC& szFuncName,
6289 CFXJSE_Arguments& args) { 6249 CFXJSE_Arguments& args) {
6290 if (args.GetLength() == 1) { 6250 if (args.GetLength() == 1) {
6291 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); 6251 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0);
6292 FXJSE_Value_SetBoolean(args.GetReturnValue(), 6252 FXJSE_Value_SetBoolean(args.GetReturnValue(),
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
6329 FXJSE_Value_ToUTF8String(propertyValue.get(), propertyStr); 6289 FXJSE_Value_ToUTF8String(propertyValue.get(), propertyStr);
6330 FXJSE_Value_GetObjectProp(jsObjectValue.get(), propertyStr.AsStringC(), 6290 FXJSE_Value_GetObjectProp(jsObjectValue.get(), propertyStr.AsStringC(),
6331 args.GetReturnValue()); 6291 args.GetReturnValue());
6332 } 6292 }
6333 } else if (FXJSE_Value_IsObject(argOne.get())) { 6293 } else if (FXJSE_Value_IsObject(argOne.get())) {
6334 GetObjectDefaultValue(argOne.get(), args.GetReturnValue()); 6294 GetObjectDefaultValue(argOne.get(), args.GetReturnValue());
6335 } else { 6295 } else {
6336 FXJSE_Value_Set(args.GetReturnValue(), argOne.get()); 6296 FXJSE_Value_Set(args.GetReturnValue(), argOne.get());
6337 } 6297 }
6338 } else { 6298 } else {
6339 pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); 6299 pContext->Throw(XFA_IDS_COMPILER_ERROR);
6340 } 6300 }
6341 } 6301 }
6342 6302
6343 // static 6303 // static
6344 void CXFA_FM2JSContext::get_fm_jsobj(CFXJSE_Value* pThis, 6304 void CXFA_FM2JSContext::get_fm_jsobj(CFXJSE_Value* pThis,
6345 const CFX_ByteStringC& szFuncName, 6305 const CFX_ByteStringC& szFuncName,
6346 CFXJSE_Arguments& args) { 6306 CFXJSE_Arguments& args) {
6347 if (args.GetLength() == 1) { 6307 if (args.GetLength() == 1) {
6348 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); 6308 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0);
6349 if (FXJSE_Value_IsArray(argOne.get())) { 6309 if (FXJSE_Value_IsArray(argOne.get())) {
6350 #ifndef NDEBUG 6310 #ifndef NDEBUG
6351 v8::Isolate* pIsolate = pThis->ToJSContext(nullptr)->GetScriptRuntime(); 6311 v8::Isolate* pIsolate = pThis->ToJSContext(nullptr)->GetScriptRuntime();
6352 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); 6312 std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate));
6353 FXJSE_Value_GetObjectProp(argOne.get(), "length", lengthValue.get()); 6313 FXJSE_Value_GetObjectProp(argOne.get(), "length", lengthValue.get());
6354 ASSERT(FXJSE_Value_ToInteger(lengthValue.get()) >= 3); 6314 ASSERT(FXJSE_Value_ToInteger(lengthValue.get()) >= 3);
6355 #endif 6315 #endif
6356 FXJSE_Value_GetObjectPropByIdx(argOne.get(), 2, args.GetReturnValue()); 6316 FXJSE_Value_GetObjectPropByIdx(argOne.get(), 2, args.GetReturnValue());
6357 } else { 6317 } else {
6358 FXJSE_Value_Set(args.GetReturnValue(), argOne.get()); 6318 FXJSE_Value_Set(args.GetReturnValue(), argOne.get());
6359 } 6319 }
6360 } else { 6320 } else {
6361 pThis->ToJSContext(nullptr)->ThrowScriptErrorMessage( 6321 pThis->ToJSContext(nullptr)->Throw(XFA_IDS_COMPILER_ERROR);
6362 XFA_IDS_COMPILER_ERROR);
6363 } 6322 }
6364 } 6323 }
6365 6324
6366 // static 6325 // static
6367 void CXFA_FM2JSContext::fm_var_filter(CFXJSE_Value* pThis, 6326 void CXFA_FM2JSContext::fm_var_filter(CFXJSE_Value* pThis,
6368 const CFX_ByteStringC& szFuncName, 6327 const CFX_ByteStringC& szFuncName,
6369 CFXJSE_Arguments& args) { 6328 CFXJSE_Arguments& args) {
6370 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr); 6329 CXFA_FM2JSContext* pContext = pThis->ToJSContext(nullptr);
6371 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); 6330 v8::Isolate* pIsolate = pContext->GetScriptRuntime();
6372 if (args.GetLength() == 1) { 6331 if (args.GetLength() == 1) {
(...skipping 17 matching lines...) Expand all
6390 FXJSE_Value_SetNull(rgValues[2]); 6349 FXJSE_Value_SetNull(rgValues[2]);
6391 FXJSE_Value_SetArray(args.GetReturnValue(), 3, rgValues); 6350 FXJSE_Value_SetArray(args.GetReturnValue(), 3, rgValues);
6392 for (int32_t i = 0; i < 3; i++) 6351 for (int32_t i = 0; i < 3; i++)
6393 delete rgValues[i]; 6352 delete rgValues[i];
6394 } else if (iFlags == 3) { 6353 } else if (iFlags == 3) {
6395 std::unique_ptr<CFXJSE_Value> objectValue(new CFXJSE_Value(pIsolate)); 6354 std::unique_ptr<CFXJSE_Value> objectValue(new CFXJSE_Value(pIsolate));
6396 FXJSE_Value_GetObjectPropByIdx(argOne.get(), 2, objectValue.get()); 6355 FXJSE_Value_GetObjectPropByIdx(argOne.get(), 2, objectValue.get());
6397 if (!FXJSE_Value_IsNull(objectValue.get())) { 6356 if (!FXJSE_Value_IsNull(objectValue.get())) {
6398 FXJSE_Value_Set(args.GetReturnValue(), argOne.get()); 6357 FXJSE_Value_Set(args.GetReturnValue(), argOne.get());
6399 } else { 6358 } else {
6400 pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); 6359 pContext->Throw(XFA_IDS_COMPILER_ERROR);
6401 } 6360 }
6402 } else { 6361 } else {
6403 std::unique_ptr<CFXJSE_Value> simpleValue = 6362 std::unique_ptr<CFXJSE_Value> simpleValue =
6404 GetSimpleValue(pThis, args, 0); 6363 GetSimpleValue(pThis, args, 0);
6405 FXJSE_Value_Set(args.GetReturnValue(), simpleValue.get()); 6364 FXJSE_Value_Set(args.GetReturnValue(), simpleValue.get());
6406 } 6365 }
6407 } else { 6366 } else {
6408 std::unique_ptr<CFXJSE_Value> simpleValue = 6367 std::unique_ptr<CFXJSE_Value> simpleValue =
6409 GetSimpleValue(pThis, args, 0); 6368 GetSimpleValue(pThis, args, 0);
6410 FXJSE_Value_Set(args.GetReturnValue(), simpleValue.get()); 6369 FXJSE_Value_Set(args.GetReturnValue(), simpleValue.get());
6411 } 6370 }
6412 } else { 6371 } else {
6413 pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); 6372 pContext->Throw(XFA_IDS_COMPILER_ERROR);
6414 } 6373 }
6415 } 6374 }
6416 6375
6417 // static 6376 // static
6418 void CXFA_FM2JSContext::concat_fm_object(CFXJSE_Value* pThis, 6377 void CXFA_FM2JSContext::concat_fm_object(CFXJSE_Value* pThis,
6419 const CFX_ByteStringC& szFuncName, 6378 const CFX_ByteStringC& szFuncName,
6420 CFXJSE_Arguments& args) { 6379 CFXJSE_Arguments& args) {
6421 v8::Isolate* pIsolate = pThis->ToJSContext(nullptr)->GetScriptRuntime(); 6380 v8::Isolate* pIsolate = pThis->ToJSContext(nullptr)->GetScriptRuntime();
6422 uint32_t iLength = 0; 6381 uint32_t iLength = 0;
6423 int32_t argc = args.GetLength(); 6382 int32_t argc = args.GetLength();
(...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after
6978 FXJSE_Value_SetNull(m_pValue.get()); 6937 FXJSE_Value_SetNull(m_pValue.get());
6979 FXJSE_Value_SetObject(m_pValue.get(), this, m_pFMClass); 6938 FXJSE_Value_SetObject(m_pValue.get(), this, m_pFMClass);
6980 } 6939 }
6981 6940
6982 CXFA_FM2JSContext::~CXFA_FM2JSContext() {} 6941 CXFA_FM2JSContext::~CXFA_FM2JSContext() {}
6983 6942
6984 void CXFA_FM2JSContext::GlobalPropertyGetter(CFXJSE_Value* pValue) { 6943 void CXFA_FM2JSContext::GlobalPropertyGetter(CFXJSE_Value* pValue) {
6985 FXJSE_Value_Set(pValue, m_pValue.get()); 6944 FXJSE_Value_Set(pValue, m_pValue.get());
6986 } 6945 }
6987 6946
6988 void CXFA_FM2JSContext::ThrowScriptErrorMessage(int32_t iStringID, ...) { 6947 void CXFA_FM2JSContext::Throw(int32_t iStringID, ...) {
6989 IXFA_AppProvider* pAppProvider = m_pDocument->GetNotify()->GetAppProvider(); 6948 IXFA_AppProvider* pAppProvider = m_pDocument->GetNotify()->GetAppProvider();
6990 ASSERT(pAppProvider); 6949 ASSERT(pAppProvider);
6991 CFX_WideString wsFormat; 6950 CFX_WideString wsFormat;
6992 pAppProvider->LoadString(iStringID, wsFormat); 6951 pAppProvider->LoadString(iStringID, wsFormat);
6993 CFX_WideString wsMessage; 6952 CFX_WideString wsMessage;
6994 va_list arg_ptr; 6953 va_list arg_ptr;
6995 va_start(arg_ptr, iStringID); 6954 va_start(arg_ptr, iStringID);
6996 wsMessage.FormatV(wsFormat.c_str(), arg_ptr); 6955 wsMessage.FormatV(wsFormat.c_str(), arg_ptr);
6997 va_end(arg_ptr); 6956 va_end(arg_ptr);
6998 FXJSE_ThrowMessage( 6957 FXJSE_ThrowMessage(
6999 "", FX_UTF8Encode(wsMessage.c_str(), wsMessage.GetLength()).AsStringC()); 6958 "", FX_UTF8Encode(wsMessage.c_str(), wsMessage.GetLength()).AsStringC());
7000 } 6959 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698