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 "Document.h" | 7 #include "Document.h" |
8 | 8 |
9 #include "../../../third_party/base/numerics/safe_math.h" | 9 #include "../../../third_party/base/numerics/safe_math.h" |
10 #include "../../include/fsdk_mgr.h" // For CPDFDoc_Environment. | 10 #include "../../include/fsdk_mgr.h" // For CPDFDoc_Environment. |
(...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
559 } | 559 } |
560 | 560 |
561 // reset filed values within a document. | 561 // reset filed values within a document. |
562 // comment: | 562 // comment: |
563 // note: if the fields names r not rational, aodbe is dumb for it. | 563 // note: if the fields names r not rational, aodbe is dumb for it. |
564 | 564 |
565 FX_BOOL Document::resetForm(IJS_Context* cc, | 565 FX_BOOL Document::resetForm(IJS_Context* cc, |
566 const CJS_Parameters& params, | 566 const CJS_Parameters& params, |
567 CJS_Value& vRet, | 567 CJS_Value& vRet, |
568 CFX_WideString& sError) { | 568 CFX_WideString& sError) { |
569 ASSERT(m_pDocument != NULL); | |
570 | |
571 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || | 569 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || |
572 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) || | 570 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) || |
573 m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) | 571 m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) |
574 return FALSE; | 572 return FALSE; |
575 | 573 |
576 CPDFSDK_InterForm* pInterForm = | 574 CPDFSDK_InterForm* pInterForm = |
577 (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); | 575 (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); |
578 ASSERT(pInterForm != NULL); | |
579 | |
580 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); | 576 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); |
581 ASSERT(pPDFForm != NULL); | 577 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
582 | 578 CJS_Array aName(pRuntime); |
583 v8::Isolate* isolate = GetIsolate(cc); | |
584 CJS_Array aName(isolate); | |
585 | 579 |
586 if (params.size() > 0) { | 580 if (params.size() > 0) { |
587 switch (params[0].GetType()) { | 581 switch (params[0].GetType()) { |
588 default: | 582 default: |
589 aName.Attach(params[0].ToV8Array()); | 583 aName.Attach(params[0].ToV8Array()); |
590 break; | 584 break; |
591 case CJS_Value::VT_string: | 585 case CJS_Value::VT_string: |
592 aName.SetElement(0, params[0]); | 586 aName.SetElement(0, params[0]); |
593 break; | 587 break; |
594 } | 588 } |
595 | 589 |
596 CFX_PtrArray aFields; | 590 CFX_PtrArray aFields; |
597 | 591 |
598 for (int i = 0, isz = aName.GetLength(); i < isz; i++) { | 592 for (int i = 0, isz = aName.GetLength(); i < isz; i++) { |
599 CJS_Value valElement(isolate); | 593 CJS_Value valElement(pRuntime); |
600 aName.GetElement(i, valElement); | 594 aName.GetElement(i, valElement); |
601 CFX_WideString swVal = valElement.ToCFXWideString(); | 595 CFX_WideString swVal = valElement.ToCFXWideString(); |
602 | |
603 for (int j = 0, jsz = pPDFForm->CountFields(swVal); j < jsz; j++) { | 596 for (int j = 0, jsz = pPDFForm->CountFields(swVal); j < jsz; j++) { |
604 aFields.Add((void*)pPDFForm->GetField(j, swVal)); | 597 aFields.Add((void*)pPDFForm->GetField(j, swVal)); |
605 } | 598 } |
606 } | 599 } |
607 | 600 |
608 if (aFields.GetSize() > 0) { | 601 if (aFields.GetSize() > 0) { |
609 pPDFForm->ResetForm(aFields, TRUE, TRUE); | 602 pPDFForm->ResetForm(aFields, TRUE, TRUE); |
610 m_pDocument->SetChangeMark(); | 603 m_pDocument->SetChangeMark(); |
611 } | 604 } |
612 } else { | 605 } else { |
613 pPDFForm->ResetForm(TRUE); | 606 pPDFForm->ResetForm(TRUE); |
614 m_pDocument->SetChangeMark(); | 607 m_pDocument->SetChangeMark(); |
615 } | 608 } |
616 | 609 |
617 return TRUE; | 610 return TRUE; |
618 } | 611 } |
619 | 612 |
620 FX_BOOL Document::saveAs(IJS_Context* cc, | 613 FX_BOOL Document::saveAs(IJS_Context* cc, |
621 const CJS_Parameters& params, | 614 const CJS_Parameters& params, |
622 CJS_Value& vRet, | 615 CJS_Value& vRet, |
623 CFX_WideString& sError) { | 616 CFX_WideString& sError) { |
624 // Unsafe, not supported. | 617 // Unsafe, not supported. |
625 return TRUE; | 618 return TRUE; |
626 } | 619 } |
627 | 620 |
628 FX_BOOL Document::submitForm(IJS_Context* cc, | 621 FX_BOOL Document::submitForm(IJS_Context* cc, |
629 const CJS_Parameters& params, | 622 const CJS_Parameters& params, |
630 CJS_Value& vRet, | 623 CJS_Value& vRet, |
631 CFX_WideString& sError) { | 624 CFX_WideString& sError) { |
632 ASSERT(m_pDocument != NULL); | |
633 CJS_Context* pContext = (CJS_Context*)cc; | 625 CJS_Context* pContext = (CJS_Context*)cc; |
634 int nSize = params.size(); | 626 int nSize = params.size(); |
635 if (nSize < 1) { | 627 if (nSize < 1) { |
636 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 628 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
637 return FALSE; | 629 return FALSE; |
638 } | 630 } |
639 | 631 |
| 632 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
| 633 v8::Isolate* isolate = pRuntime->GetIsolate(); |
| 634 CJS_Array aFields(pRuntime); |
640 CFX_WideString strURL; | 635 CFX_WideString strURL; |
641 FX_BOOL bFDF = TRUE; | 636 FX_BOOL bFDF = TRUE; |
642 FX_BOOL bEmpty = FALSE; | 637 FX_BOOL bEmpty = FALSE; |
643 v8::Isolate* isolate = GetIsolate(cc); | |
644 CJS_Array aFields(isolate); | |
645 | 638 |
646 CJS_Value v = params[0]; | 639 CJS_Value v = params[0]; |
647 if (v.GetType() == CJS_Value::VT_string) { | 640 if (v.GetType() == CJS_Value::VT_string) { |
648 strURL = params[0].ToCFXWideString(); | 641 strURL = params[0].ToCFXWideString(); |
649 if (nSize > 1) | 642 if (nSize > 1) |
650 bFDF = params[1].ToBool(); | 643 bFDF = params[1].ToBool(); |
651 if (nSize > 2) | 644 if (nSize > 2) |
652 bEmpty = params[2].ToBool(); | 645 bEmpty = params[2].ToBool(); |
653 if (nSize > 3) | 646 if (nSize > 3) |
654 aFields.Attach(params[3].ToV8Array()); | 647 aFields.Attach(params[3].ToV8Array()); |
655 } else if (v.GetType() == CJS_Value::VT_object) { | 648 } else if (v.GetType() == CJS_Value::VT_object) { |
656 v8::Local<v8::Object> pObj = params[0].ToV8Object(); | 649 v8::Local<v8::Object> pObj = params[0].ToV8Object(); |
657 v8::Local<v8::Value> pValue = FXJS_GetObjectElement(isolate, pObj, L"cURL"); | 650 v8::Local<v8::Value> pValue = FXJS_GetObjectElement(isolate, pObj, L"cURL"); |
658 if (!pValue.IsEmpty()) | 651 if (!pValue.IsEmpty()) |
659 strURL = | 652 strURL = |
660 CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); | 653 CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); |
| 654 |
661 pValue = FXJS_GetObjectElement(isolate, pObj, L"bFDF"); | 655 pValue = FXJS_GetObjectElement(isolate, pObj, L"bFDF"); |
662 bFDF = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBool(); | 656 bFDF = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToBool(); |
| 657 |
663 pValue = FXJS_GetObjectElement(isolate, pObj, L"bEmpty"); | 658 pValue = FXJS_GetObjectElement(isolate, pObj, L"bEmpty"); |
664 bEmpty = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBool(); | 659 bEmpty = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToBool(); |
| 660 |
665 pValue = FXJS_GetObjectElement(isolate, pObj, L"aFields"); | 661 pValue = FXJS_GetObjectElement(isolate, pObj, L"aFields"); |
666 aFields.Attach( | 662 aFields.Attach( |
667 CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToV8Array()); | 663 CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToV8Array()); |
668 } | 664 } |
669 | 665 |
670 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
671 CPDFSDK_InterForm* pInterForm = | 666 CPDFSDK_InterForm* pInterForm = |
672 (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); | 667 (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); |
673 CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm(); | 668 CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm(); |
674 FX_BOOL bAll = (aFields.GetLength() == 0); | 669 FX_BOOL bAll = (aFields.GetLength() == 0); |
675 if (bAll && bEmpty) { | 670 if (bAll && bEmpty) { |
676 if (pPDFInterForm->CheckRequiredFields()) { | 671 if (pPDFInterForm->CheckRequiredFields()) { |
677 pRuntime->BeginBlock(); | 672 pRuntime->BeginBlock(); |
678 pInterForm->SubmitForm(strURL, FALSE); | 673 pInterForm->SubmitForm(strURL, FALSE); |
679 pRuntime->EndBlock(); | 674 pRuntime->EndBlock(); |
680 } | 675 } |
681 return TRUE; | 676 return TRUE; |
682 } | 677 } |
683 | 678 |
684 CFX_PtrArray fieldObjects; | 679 CFX_PtrArray fieldObjects; |
685 for (int i = 0, sz = aFields.GetLength(); i < sz; i++) { | 680 for (int i = 0, sz = aFields.GetLength(); i < sz; i++) { |
686 CJS_Value valName(isolate); | 681 CJS_Value valName(pRuntime); |
687 aFields.GetElement(i, valName); | 682 aFields.GetElement(i, valName); |
688 | 683 |
689 CFX_WideString sName = valName.ToCFXWideString(); | 684 CFX_WideString sName = valName.ToCFXWideString(); |
690 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); | 685 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); |
691 for (int j = 0, jsz = pPDFForm->CountFields(sName); j < jsz; ++j) { | 686 for (int j = 0, jsz = pPDFForm->CountFields(sName); j < jsz; ++j) { |
692 CPDF_FormField* pField = pPDFForm->GetField(j, sName); | 687 CPDF_FormField* pField = pPDFForm->GetField(j, sName); |
693 if (!bEmpty && pField->GetValue().IsEmpty()) | 688 if (!bEmpty && pField->GetValue().IsEmpty()) |
694 continue; | 689 continue; |
695 | 690 |
696 fieldObjects.Add(pField); | 691 fieldObjects.Add(pField); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
728 FX_BOOL Document::bookmarkRoot(IJS_Context* cc, | 723 FX_BOOL Document::bookmarkRoot(IJS_Context* cc, |
729 CJS_PropValue& vp, | 724 CJS_PropValue& vp, |
730 CFX_WideString& sError) { | 725 CFX_WideString& sError) { |
731 return TRUE; | 726 return TRUE; |
732 } | 727 } |
733 | 728 |
734 FX_BOOL Document::mailDoc(IJS_Context* cc, | 729 FX_BOOL Document::mailDoc(IJS_Context* cc, |
735 const CJS_Parameters& params, | 730 const CJS_Parameters& params, |
736 CJS_Value& vRet, | 731 CJS_Value& vRet, |
737 CFX_WideString& sError) { | 732 CFX_WideString& sError) { |
738 ASSERT(m_pDocument != NULL); | |
739 | |
740 FX_BOOL bUI = TRUE; | 733 FX_BOOL bUI = TRUE; |
741 CFX_WideString cTo = L""; | 734 CFX_WideString cTo = L""; |
742 CFX_WideString cCc = L""; | 735 CFX_WideString cCc = L""; |
743 CFX_WideString cBcc = L""; | 736 CFX_WideString cBcc = L""; |
744 CFX_WideString cSubject = L""; | 737 CFX_WideString cSubject = L""; |
745 CFX_WideString cMsg = L""; | 738 CFX_WideString cMsg = L""; |
746 | 739 |
747 if (params.size() >= 1) | 740 if (params.size() >= 1) |
748 bUI = params[0].ToBool(); | 741 bUI = params[0].ToBool(); |
749 if (params.size() >= 2) | 742 if (params.size() >= 2) |
750 cTo = params[1].ToCFXWideString(); | 743 cTo = params[1].ToCFXWideString(); |
751 if (params.size() >= 3) | 744 if (params.size() >= 3) |
752 cCc = params[2].ToCFXWideString(); | 745 cCc = params[2].ToCFXWideString(); |
753 if (params.size() >= 4) | 746 if (params.size() >= 4) |
754 cBcc = params[3].ToCFXWideString(); | 747 cBcc = params[3].ToCFXWideString(); |
755 if (params.size() >= 5) | 748 if (params.size() >= 5) |
756 cSubject = params[4].ToCFXWideString(); | 749 cSubject = params[4].ToCFXWideString(); |
757 if (params.size() >= 6) | 750 if (params.size() >= 6) |
758 cMsg = params[5].ToCFXWideString(); | 751 cMsg = params[5].ToCFXWideString(); |
759 | 752 |
760 v8::Isolate* isolate = GetIsolate(cc); | 753 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
| 754 v8::Isolate* isolate = pRuntime->GetIsolate(); |
761 | 755 |
762 if (params.size() >= 1 && params[0].GetType() == CJS_Value::VT_object) { | 756 if (params.size() >= 1 && params[0].GetType() == CJS_Value::VT_object) { |
763 v8::Local<v8::Object> pObj = params[0].ToV8Object(); | 757 v8::Local<v8::Object> pObj = params[0].ToV8Object(); |
764 | 758 |
765 v8::Local<v8::Value> pValue = FXJS_GetObjectElement(isolate, pObj, L"bUI"); | 759 v8::Local<v8::Value> pValue = FXJS_GetObjectElement(isolate, pObj, L"bUI"); |
766 bUI = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToInt(); | 760 bUI = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToInt(); |
767 | 761 |
768 pValue = FXJS_GetObjectElement(isolate, pObj, L"cTo"); | 762 pValue = FXJS_GetObjectElement(isolate, pObj, L"cTo"); |
769 cTo = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); | 763 cTo = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); |
770 | 764 |
771 pValue = FXJS_GetObjectElement(isolate, pObj, L"cCc"); | 765 pValue = FXJS_GetObjectElement(isolate, pObj, L"cCc"); |
772 cCc = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); | 766 cCc = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); |
773 | 767 |
774 pValue = FXJS_GetObjectElement(isolate, pObj, L"cBcc"); | 768 pValue = FXJS_GetObjectElement(isolate, pObj, L"cBcc"); |
775 cBcc = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); | 769 cBcc = |
| 770 CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); |
776 | 771 |
777 pValue = FXJS_GetObjectElement(isolate, pObj, L"cSubject"); | 772 pValue = FXJS_GetObjectElement(isolate, pObj, L"cSubject"); |
778 cSubject = | 773 cSubject = |
779 CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); | 774 CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); |
780 | 775 |
781 pValue = FXJS_GetObjectElement(isolate, pObj, L"cMsg"); | 776 pValue = FXJS_GetObjectElement(isolate, pObj, L"cMsg"); |
782 cMsg = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); | 777 cMsg = |
| 778 CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); |
783 } | 779 } |
784 | 780 |
785 CJS_Context* pContext = (CJS_Context*)cc; | |
786 ASSERT(pContext != NULL); | |
787 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
788 ASSERT(pRuntime != NULL); | |
789 | |
790 pRuntime->BeginBlock(); | 781 pRuntime->BeginBlock(); |
791 CPDFDoc_Environment* pEnv = pRuntime->GetReaderApp(); | 782 CPDFDoc_Environment* pEnv = pRuntime->GetReaderApp(); |
792 pEnv->JS_docmailForm(NULL, 0, bUI, cTo.c_str(), cSubject.c_str(), cCc.c_str(), | 783 pEnv->JS_docmailForm(NULL, 0, bUI, cTo.c_str(), cSubject.c_str(), cCc.c_str(), |
793 cBcc.c_str(), cMsg.c_str()); | 784 cBcc.c_str(), cMsg.c_str()); |
794 pRuntime->EndBlock(); | 785 pRuntime->EndBlock(); |
795 | 786 |
796 return TRUE; | 787 return TRUE; |
797 } | 788 } |
798 | 789 |
799 FX_BOOL Document::author(IJS_Context* cc, | 790 FX_BOOL Document::author(IJS_Context* cc, |
(...skipping 635 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1435 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | 1426 CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
1436 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); | 1427 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); |
1437 return FALSE; | 1428 return FALSE; |
1438 } | 1429 } |
1439 | 1430 |
1440 if (!m_pIconTree) { | 1431 if (!m_pIconTree) { |
1441 vp.SetNull(); | 1432 vp.SetNull(); |
1442 return TRUE; | 1433 return TRUE; |
1443 } | 1434 } |
1444 | 1435 |
1445 CJS_Array Icons(m_isolate); | 1436 CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
| 1437 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
| 1438 CJS_Array Icons(pRuntime); |
1446 IconElement* pIconElement = NULL; | 1439 IconElement* pIconElement = NULL; |
1447 int iIconTreeLength = m_pIconTree->GetLength(); | 1440 int iIconTreeLength = m_pIconTree->GetLength(); |
1448 | |
1449 CJS_Context* pContext = (CJS_Context*)cc; | |
1450 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
1451 | |
1452 for (int i = 0; i < iIconTreeLength; i++) { | 1441 for (int i = 0; i < iIconTreeLength; i++) { |
1453 pIconElement = (*m_pIconTree)[i]; | 1442 pIconElement = (*m_pIconTree)[i]; |
1454 | 1443 |
1455 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj( | 1444 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj( |
1456 pRuntime->GetIsolate(), pContext, CJS_Icon::g_nObjDefnID); | 1445 pRuntime->GetIsolate(), pContext, CJS_Icon::g_nObjDefnID); |
1457 if (pObj.IsEmpty()) | 1446 if (pObj.IsEmpty()) |
1458 return FALSE; | 1447 return FALSE; |
1459 | 1448 |
1460 CJS_Icon* pJS_Icon = (CJS_Icon*)FXJS_GetPrivate(m_isolate, pObj); | 1449 CJS_Icon* pJS_Icon = (CJS_Icon*)FXJS_GetPrivate(m_isolate, pObj); |
1461 if (!pJS_Icon) | 1450 if (!pJS_Icon) |
1462 return FALSE; | 1451 return FALSE; |
1463 | 1452 |
1464 Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject(); | 1453 Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject(); |
1465 if (!pIcon) | 1454 if (!pIcon) |
1466 return FALSE; | 1455 return FALSE; |
1467 | 1456 |
1468 pIcon->SetStream(pIconElement->IconStream->GetStream()); | 1457 pIcon->SetStream(pIconElement->IconStream->GetStream()); |
1469 pIcon->SetIconName(pIconElement->IconName); | 1458 pIcon->SetIconName(pIconElement->IconName); |
1470 Icons.SetElement(i, CJS_Value(m_isolate, pJS_Icon)); | 1459 Icons.SetElement(i, CJS_Value(pRuntime, pJS_Icon)); |
1471 } | 1460 } |
1472 | 1461 |
1473 vp << Icons; | 1462 vp << Icons; |
1474 return TRUE; | 1463 return TRUE; |
1475 } | 1464 } |
1476 | 1465 |
1477 FX_BOOL Document::getIcon(IJS_Context* cc, | 1466 FX_BOOL Document::getIcon(IJS_Context* cc, |
1478 const CJS_Parameters& params, | 1467 const CJS_Parameters& params, |
1479 CJS_Value& vRet, | 1468 CJS_Value& vRet, |
1480 CFX_WideString& sError) { | 1469 CFX_WideString& sError) { |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1798 FX_BOOL Document::zoomType(IJS_Context* cc, | 1787 FX_BOOL Document::zoomType(IJS_Context* cc, |
1799 CJS_PropValue& vp, | 1788 CJS_PropValue& vp, |
1800 CFX_WideString& sError) { | 1789 CFX_WideString& sError) { |
1801 return TRUE; | 1790 return TRUE; |
1802 } | 1791 } |
1803 | 1792 |
1804 FX_BOOL Document::deletePages(IJS_Context* cc, | 1793 FX_BOOL Document::deletePages(IJS_Context* cc, |
1805 const CJS_Parameters& params, | 1794 const CJS_Parameters& params, |
1806 CJS_Value& vRet, | 1795 CJS_Value& vRet, |
1807 CFX_WideString& sError) { | 1796 CFX_WideString& sError) { |
1808 v8::Isolate* isolate = GetIsolate(cc); | |
1809 ASSERT(m_pDocument != NULL); | |
1810 | |
1811 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || | 1797 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || |
1812 m_pDocument->GetPermissions(FPDFPERM_ASSEMBLE))) | 1798 m_pDocument->GetPermissions(FPDFPERM_ASSEMBLE))) |
1813 return FALSE; | 1799 return FALSE; |
1814 | 1800 |
| 1801 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
| 1802 v8::Isolate* isolate = pRuntime->GetIsolate(); |
| 1803 |
1815 int iSize = params.size(); | 1804 int iSize = params.size(); |
1816 | |
1817 int nStart = 0; | 1805 int nStart = 0; |
1818 int nEnd = 0; | 1806 int nEnd = 0; |
1819 | |
1820 if (iSize < 1) { | 1807 if (iSize < 1) { |
1821 } else if (iSize == 1) { | 1808 } else if (iSize == 1) { |
1822 if (params[0].GetType() == CJS_Value::VT_object) { | 1809 if (params[0].GetType() == CJS_Value::VT_object) { |
1823 v8::Local<v8::Object> pObj = params[0].ToV8Object(); | 1810 v8::Local<v8::Object> pObj = params[0].ToV8Object(); |
1824 v8::Local<v8::Value> pValue = | 1811 v8::Local<v8::Value> pValue = |
1825 FXJS_GetObjectElement(isolate, pObj, L"nStart"); | 1812 FXJS_GetObjectElement(isolate, pObj, L"nStart"); |
1826 nStart = CJS_Value(m_isolate, pValue, GET_VALUE_TYPE(pValue)).ToInt(); | 1813 nStart = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToInt(); |
1827 pValue = FXJS_GetObjectElement(isolate, pObj, L"nEnd"); | 1814 pValue = FXJS_GetObjectElement(isolate, pObj, L"nEnd"); |
1828 nEnd = CJS_Value(m_isolate, pValue, GET_VALUE_TYPE(pValue)).ToInt(); | 1815 nEnd = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToInt(); |
1829 } else { | 1816 } else { |
1830 nStart = params[0].ToInt(); | 1817 nStart = params[0].ToInt(); |
1831 } | 1818 } |
1832 } else { | 1819 } else { |
1833 nStart = params[0].ToInt(); | 1820 nStart = params[0].ToInt(); |
1834 nEnd = params[1].ToInt(); | 1821 nEnd = params[1].ToInt(); |
1835 } | 1822 } |
1836 | 1823 |
1837 int nTotal = m_pDocument->GetPageCount(); | 1824 int nTotal = m_pDocument->GetPageCount(); |
1838 | |
1839 if (nStart < 0) | 1825 if (nStart < 0) |
1840 nStart = 0; | 1826 nStart = 0; |
1841 if (nStart >= nTotal) | 1827 if (nStart >= nTotal) |
1842 nStart = nTotal - 1; | 1828 nStart = nTotal - 1; |
1843 | 1829 |
1844 if (nEnd < 0) | 1830 if (nEnd < 0) |
1845 nEnd = 0; | 1831 nEnd = 0; |
1846 if (nEnd >= nTotal) | 1832 if (nEnd >= nTotal) |
1847 nEnd = nTotal - 1; | 1833 nEnd = nTotal - 1; |
1848 | 1834 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1917 CFX_DWordArray DelArray; | 1903 CFX_DWordArray DelArray; |
1918 | 1904 |
1919 for (int j = DelArray.GetSize() - 1; j >= 0; j--) { | 1905 for (int j = DelArray.GetSize() - 1; j >= 0; j--) { |
1920 m_DelayData.RemoveAt(DelArray[j]); | 1906 m_DelayData.RemoveAt(DelArray[j]); |
1921 } | 1907 } |
1922 } | 1908 } |
1923 | 1909 |
1924 CJS_Document* Document::GetCJSDoc() const { | 1910 CJS_Document* Document::GetCJSDoc() const { |
1925 return static_cast<CJS_Document*>(m_pJSObject); | 1911 return static_cast<CJS_Document*>(m_pJSObject); |
1926 } | 1912 } |
OLD | NEW |