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