Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "../../include/javascript/JavaScript.h" | 7 #include "../../include/javascript/JavaScript.h" |
| 8 #include "../../include/javascript/IJavaScript.h" | 8 #include "../../include/javascript/IJavaScript.h" |
| 9 #include "../../include/javascript/JS_Define.h" | 9 #include "../../include/javascript/JS_Define.h" |
| 10 #include "../../include/javascript/JS_Object.h" | 10 #include "../../include/javascript/JS_Object.h" |
| (...skipping 619 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 630 { | 630 { |
| 631 // Unsafe, not supported. | 631 // Unsafe, not supported. |
| 632 return TRUE; | 632 return TRUE; |
| 633 } | 633 } |
| 634 | 634 |
| 635 | 635 |
| 636 FX_BOOL Document::submitForm(IFXJS_Context* cc, const CJS_Parameters& params, CJ S_Value& vRet, CFX_WideString& sError) | 636 FX_BOOL Document::submitForm(IFXJS_Context* cc, const CJS_Parameters& params, CJ S_Value& vRet, CFX_WideString& sError) |
| 637 { | 637 { |
| 638 ASSERT(m_pDocument != NULL); | 638 ASSERT(m_pDocument != NULL); |
| 639 CJS_Context* pContext = (CJS_Context*)cc; | 639 CJS_Context* pContext = (CJS_Context*)cc; |
| 640 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
|
Lei Zhang
2015/07/21 21:44:47
Why move this up here when we don't use it until m
Tom Sepez
2015/07/22 20:38:24
Ah, right. I was de-duplicating them but the can
| |
| 640 int nSize = params.size(); | 641 int nSize = params.size(); |
| 641 if (nSize < 1) { | 642 if (nSize < 1) { |
| 642 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 643 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
| 643 return FALSE; | 644 return FALSE; |
| 644 } | 645 } |
| 645 | 646 |
| 646 CFX_WideString strURL; | 647 CFX_WideString strURL; |
| 647 FX_BOOL bFDF = TRUE; | 648 FX_BOOL bFDF = TRUE; |
| 648 FX_BOOL bEmpty = FALSE; | 649 FX_BOOL bEmpty = FALSE; |
| 649 v8::Isolate* isolate = GetIsolate(cc); | 650 v8::Isolate* isolate = GetIsolate(cc); |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 668 strURL = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValu e)).ToCFXWideString(); | 669 strURL = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValu e)).ToCFXWideString(); |
| 669 pValue = JS_GetObjectElement(isolate, pObj, L"bFDF"); | 670 pValue = JS_GetObjectElement(isolate, pObj, L"bFDF"); |
| 670 bFDF = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBool (); | 671 bFDF = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBool (); |
| 671 pValue = JS_GetObjectElement(isolate, pObj, L"bEmpty"); | 672 pValue = JS_GetObjectElement(isolate, pObj, L"bEmpty"); |
| 672 bEmpty = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBo ol(); | 673 bEmpty = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBo ol(); |
| 673 pValue = JS_GetObjectElement(isolate, pObj,L"aFields"); | 674 pValue = JS_GetObjectElement(isolate, pObj,L"aFields"); |
| 674 aFields.Attach(CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue) ).ToV8Array()); | 675 aFields.Attach(CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue) ).ToV8Array()); |
| 675 } | 676 } |
| 676 | 677 |
| 677 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInte rForm(); | 678 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInte rForm(); |
| 678 ASSERT(pInterForm != NULL); | |
| 679 CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm(); | 679 CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm(); |
| 680 ASSERT(pPDFInterForm != NULL); | |
| 681 | |
| 682 FX_BOOL bAll = (aFields.GetLength() == 0); | 680 FX_BOOL bAll = (aFields.GetLength() == 0); |
| 683 | |
| 684 if (bAll && bEmpty) | 681 if (bAll && bEmpty) |
| 685 { | 682 { |
| 686 CJS_Context* pContext = (CJS_Context*)cc; | |
| 687 ASSERT(pContext != NULL); | |
| 688 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
| 689 ASSERT(pRuntime != NULL); | |
| 690 | |
| 691 | |
| 692 if (pPDFInterForm->CheckRequiredFields()) | 683 if (pPDFInterForm->CheckRequiredFields()) |
| 693 { | 684 { |
| 694 pRuntime->BeginBlock(); | 685 pRuntime->BeginBlock(); |
| 695 pInterForm->SubmitForm(strURL, FALSE); | 686 pInterForm->SubmitForm(strURL, FALSE); |
| 696 pRuntime->EndBlock(); | 687 pRuntime->EndBlock(); |
| 697 } | 688 } |
| 698 | |
| 699 return TRUE; | |
| 700 } | |
| 701 else | |
| 702 { | |
| 703 CFX_PtrArray fieldObjects; | |
| 704 | |
| 705 for (int i=0,sz=aFields.GetLength(); i<sz; i++) | |
| 706 { | |
| 707 CJS_Value valName(isolate); | |
| 708 aFields.GetElement(i, valName); | |
| 709 CFX_WideString sName = valName.ToCFXWideString(); | |
| 710 | |
| 711 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); | |
| 712 ASSERT(pPDFForm != NULL); | |
| 713 | |
| 714 for (int j=0, jsz=pPDFForm->CountFields(sName); j<jsz; j ++) | |
| 715 { | |
| 716 CPDF_FormField* pField = pPDFForm->GetField(j, s Name); | |
| 717 if (!bEmpty && pField->GetValue().IsEmpty()) | |
| 718 continue; | |
| 719 | |
| 720 fieldObjects.Add(pField); | |
| 721 } | |
| 722 } | |
| 723 | |
| 724 CJS_Context* pContext = (CJS_Context*)cc; | |
| 725 ASSERT(pContext != NULL); | |
| 726 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
| 727 ASSERT(pRuntime != NULL); | |
| 728 | |
| 729 | |
| 730 if (pPDFInterForm->CheckRequiredFields(&fieldObjects, TRUE)) | |
| 731 { | |
| 732 pRuntime->BeginBlock(); | |
| 733 pInterForm->SubmitFields(strURL, fieldObjects, TRUE, !bF DF); | |
| 734 pRuntime->EndBlock(); | |
| 735 } | |
| 736 | |
| 737 return TRUE; | 689 return TRUE; |
| 738 } | 690 } |
| 739 | 691 |
| 692 CFX_PtrArray fieldObjects; | |
| 693 for (int i=0,sz=aFields.GetLength(); i<sz; i++) | |
| 694 { | |
| 695 CJS_Value valName(isolate); | |
| 696 aFields.GetElement(i, valName); | |
| 697 | |
| 698 CFX_WideString sName = valName.ToCFXWideString(); | |
| 699 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); | |
| 700 for (int j = 0, jsz = pPDFForm->CountFields(sName); j < jsz; ++j) | |
| 701 { | |
| 702 CPDF_FormField* pField = pPDFForm->GetField(j, sName); | |
| 703 if (!bEmpty && pField->GetValue().IsEmpty()) | |
| 704 continue; | |
| 705 | |
| 706 fieldObjects.Add(pField); | |
| 707 } | |
| 708 } | |
| 709 | |
| 710 if (pPDFInterForm->CheckRequiredFields(&fieldObjects, TRUE)) | |
| 711 { | |
| 712 pRuntime->BeginBlock(); | |
| 713 pInterForm->SubmitFields(strURL, fieldObjects, TRUE, !bFDF); | |
| 714 pRuntime->EndBlock(); | |
| 715 } | |
| 716 return TRUE; | |
| 740 } | 717 } |
| 741 | 718 |
| 742 //////////////////////////////////////////////////////////////////////////////// ////////////// | 719 //////////////////////////////////////////////////////////////////////////////// ////////////// |
| 743 | 720 |
| 744 void Document::AttachDoc(CPDFSDK_Document *pDoc) | 721 void Document::AttachDoc(CPDFSDK_Document *pDoc) |
| 745 { | 722 { |
| 746 m_pDocument = pDoc; | 723 m_pDocument = pDoc; |
| 747 } | 724 } |
| 748 | 725 |
| 749 CPDFSDK_Document * Document::GetReaderDoc() | 726 CPDFSDK_Document * Document::GetReaderDoc() |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 851 m_pDocument->SetChangeMark(); | 828 m_pDocument->SetChangeMark(); |
| 852 return TRUE; | 829 return TRUE; |
| 853 } | 830 } |
| 854 } | 831 } |
| 855 | 832 |
| 856 FX_BOOL Document::info(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sEr ror) | 833 FX_BOOL Document::info(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sEr ror) |
| 857 { | 834 { |
| 858 ASSERT(m_pDocument != NULL); | 835 ASSERT(m_pDocument != NULL); |
| 859 | 836 |
| 860 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); | 837 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); |
| 861 » if (!pDictionary)return FALSE; | 838 » if (!pDictionary) |
| 839 return FALSE; | |
| 862 | 840 |
| 863 CFX_WideString cwAuthor = pDictionary->GetUnicodeText("A uthor"); | 841 CFX_WideString cwAuthor = pDictionary->GetUnicodeText("A uthor"); |
| 864 CFX_WideString cwTitle = pDictionary->GetUnicodeText("T itle"); | 842 CFX_WideString cwTitle = pDictionary->GetUnicodeText("T itle"); |
| 865 CFX_WideString cwSubject = pDictionary->GetUnicodeText("S ubject"); | 843 CFX_WideString cwSubject = pDictionary->GetUnicodeText("S ubject"); |
| 866 CFX_WideString cwKeywords = pDictionary->GetUnicodeText("K eywords"); | 844 CFX_WideString cwKeywords = pDictionary->GetUnicodeText("K eywords"); |
| 867 CFX_WideString cwCreator = pDictionary->GetUnicodeText("C reator"); | 845 CFX_WideString cwCreator = pDictionary->GetUnicodeText("C reator"); |
| 868 CFX_WideString cwProducer = pDictionary->GetUnicodeText("P roducer"); | 846 CFX_WideString cwProducer = pDictionary->GetUnicodeText("P roducer"); |
| 869 CFX_WideString cwCreationDate = pDictionary->GetUnicodeText("CreationD ate"); | 847 CFX_WideString cwCreationDate = pDictionary->GetUnicodeText("CreationD ate"); |
| 870 CFX_WideString cwModDate = pDictionary->GetUnicodeText("M odDate"); | 848 CFX_WideString cwModDate = pDictionary->GetUnicodeText("M odDate"); |
| 871 CFX_WideString cwTrapped = pDictionary->GetUnicodeText("T rapped"); | 849 CFX_WideString cwTrapped = pDictionary->GetUnicodeText("T rapped"); |
| 872 | 850 |
| 873 v8::Isolate* isolate = GetIsolate(cc); | 851 v8::Isolate* isolate = GetIsolate(cc); |
| 874 if (vp.IsGetting()) | 852 if (vp.IsGetting()) |
| 875 { | 853 { |
| 876 CJS_Context* pContext = (CJS_Context *)cc; | 854 CJS_Context* pContext = (CJS_Context *)cc; |
| 877 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | 855 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
| 878 | |
| 879 JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, -1); | 856 JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, -1); |
| 880 | |
| 881 JS_PutObjectString(isolate, pObj, L"Author", cwAuthor.c_str()); | 857 JS_PutObjectString(isolate, pObj, L"Author", cwAuthor.c_str()); |
| 882 JS_PutObjectString(isolate, pObj, L"Title", cwTitle.c_str()); | 858 JS_PutObjectString(isolate, pObj, L"Title", cwTitle.c_str()); |
| 883 JS_PutObjectString(isolate, pObj, L"Subject", cwSubject.c_str()) ; | 859 JS_PutObjectString(isolate, pObj, L"Subject", cwSubject.c_str()) ; |
| 884 JS_PutObjectString(isolate, pObj, L"Keywords", cwKeywords.c_str( )); | 860 JS_PutObjectString(isolate, pObj, L"Keywords", cwKeywords.c_str( )); |
| 885 JS_PutObjectString(isolate, pObj, L"Creator", cwCreator.c_str()) ; | 861 JS_PutObjectString(isolate, pObj, L"Creator", cwCreator.c_str()) ; |
| 886 JS_PutObjectString(isolate, pObj, L"Producer", cwProducer.c_str( )); | 862 JS_PutObjectString(isolate, pObj, L"Producer", cwProducer.c_str( )); |
| 887 JS_PutObjectString(isolate, pObj, L"CreationDate", cwCreationDat e.c_str()); | 863 JS_PutObjectString(isolate, pObj, L"CreationDate", cwCreationDat e.c_str()); |
| 888 JS_PutObjectString(isolate, pObj, L"ModDate", cwModDate.c_str()) ; | 864 JS_PutObjectString(isolate, pObj, L"ModDate", cwModDate.c_str()) ; |
| 889 JS_PutObjectString(isolate, pObj, L"Trapped", cwTrapped.c_str()) ; | 865 JS_PutObjectString(isolate, pObj, L"Trapped", cwTrapped.c_str()) ; |
| 890 | 866 |
| 891 // It's to be compatible to non-standard info dictionary. | 867 // It's to be compatible to non-standard info dictionary. |
| 892 FX_POSITION pos = pDictionary->GetStartPos(); | 868 FX_POSITION pos = pDictionary->GetStartPos(); |
| 893 while(pos) | 869 while(pos) |
| 894 { | 870 { |
| 895 CFX_ByteString bsKey; | 871 CFX_ByteString bsKey; |
| 896 CPDF_Object* pValueObj = pDictionary->GetNextElement(pos , bsKey); | 872 CPDF_Object* pValueObj = pDictionary->GetNextElement(pos , bsKey); |
| 897 CFX_WideString wsKey = CFX_WideString::FromUTF8(bsKey, bsKey.GetLength()); | 873 CFX_WideString wsKey = CFX_WideString::FromUTF8(bsKey, bsKey.GetLength()); |
| 898 if((pValueObj->GetType()==PDFOBJ_STRING) || (pValueObj-> GetType()==PDFOBJ_NAME) ) | 874 if((pValueObj->GetType()==PDFOBJ_STRING) || (pValueObj-> GetType()==PDFOBJ_NAME) ) |
| 899 JS_PutObjectString(isolate, pObj, wsKey.c_str(), pValueObj->GetUnicodeText().c_str()); | 875 JS_PutObjectString(isolate, pObj, wsKey.c_str(), pValueObj->GetUnicodeText().c_str()); |
| 900 if(pValueObj->GetType()==PDFOBJ_NUMBER) | 876 if(pValueObj->GetType()==PDFOBJ_NUMBER) |
| 901 JS_PutObjectNumber(isolate,pObj, wsKey.c_str(), (float)pValueObj->GetNumber()); | 877 JS_PutObjectNumber(isolate,pObj, wsKey.c_str(), (float)pValueObj->GetNumber()); |
| 902 if(pValueObj->GetType()==PDFOBJ_BOOLEAN) | 878 if(pValueObj->GetType()==PDFOBJ_BOOLEAN) |
| 903 JS_PutObjectBoolean(isolate,pObj, wsKey.c_str(), (bool)pValueObj->GetInteger()); | 879 JS_PutObjectBoolean(isolate,pObj, wsKey.c_str(), (bool)pValueObj->GetInteger()); |
| 904 } | 880 } |
| 905 | |
| 906 vp << pObj; | 881 vp << pObj; |
| 907 return TRUE; | |
| 908 } | 882 } |
| 909 » else | 883 return TRUE; |
| 910 » { | |
| 911 » » return TRUE; | |
| 912 » } | |
| 913 } | 884 } |
| 914 | 885 |
| 915 FX_BOOL Document::creationDate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideStr ing& sError) | 886 FX_BOOL Document::creationDate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideStr ing& sError) |
| 916 { | 887 { |
| 917 ASSERT(m_pDocument != NULL); | |
| 918 | |
| 919 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); | 888 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); |
| 920 » if (!pDictionary)return FALSE; | 889 » if (!pDictionary) |
| 890 return FALSE; | |
| 921 | 891 |
| 922 if (vp.IsGetting()) | 892 if (vp.IsGetting()) |
| 923 { | 893 { |
| 924 vp << pDictionary->GetUnicodeText("CreationDate"); | 894 vp << pDictionary->GetUnicodeText("CreationDate"); |
| 925 return TRUE; | |
| 926 } | 895 } |
| 927 else | 896 else |
| 928 { | 897 { |
| 929 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; | 898 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) |
| 899 return FALSE; | |
| 930 | 900 |
| 931 CFX_WideString csCreationDate; | 901 CFX_WideString csCreationDate; |
| 932 vp >> csCreationDate; | 902 vp >> csCreationDate; |
| 933 pDictionary->SetAtString("CreationDate", PDF_EncodeText(csCreati onDate)); | 903 pDictionary->SetAtString("CreationDate", PDF_EncodeText(csCreati onDate)); |
| 934 m_pDocument->SetChangeMark(); | 904 m_pDocument->SetChangeMark(); |
| 935 | |
| 936 return TRUE; | |
| 937 } | 905 } |
| 906 return TRUE; | |
| 938 } | 907 } |
| 939 | 908 |
| 940 FX_BOOL Document::creator(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) | 909 FX_BOOL Document::creator(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) |
| 941 { | 910 { |
| 942 ASSERT(m_pDocument != NULL); | |
| 943 | |
| 944 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); | 911 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); |
| 945 » if (!pDictionary)return FALSE; | 912 » if (!pDictionary) |
| 913 return FALSE; | |
| 946 | 914 |
| 947 if (vp.IsGetting()) | 915 if (vp.IsGetting()) |
| 948 { | 916 { |
| 949 vp << pDictionary->GetUnicodeText("Creator"); | 917 vp << pDictionary->GetUnicodeText("Creator"); |
| 950 return TRUE; | |
| 951 } | 918 } |
| 952 else | 919 else |
| 953 { | 920 { |
| 954 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; | 921 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) |
| 922 return FALSE; | |
| 955 | 923 |
| 956 CFX_WideString csCreator; | 924 CFX_WideString csCreator; |
| 957 vp >> csCreator; | 925 vp >> csCreator; |
| 958 pDictionary->SetAtString("Creator", PDF_EncodeText(csCreator)); | 926 pDictionary->SetAtString("Creator", PDF_EncodeText(csCreator)); |
| 959 m_pDocument->SetChangeMark(); | 927 m_pDocument->SetChangeMark(); |
| 960 return TRUE; | |
| 961 } | 928 } |
| 929 return TRUE; | |
| 962 } | 930 } |
| 963 | 931 |
| 964 FX_BOOL Document::delay(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror) | 932 FX_BOOL Document::delay(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror) |
| 965 { | 933 { |
| 966 if (vp.IsGetting()) | 934 if (vp.IsGetting()) |
| 967 { | 935 { |
| 968 vp << m_bDelay; | 936 vp << m_bDelay; |
| 969 return TRUE; | |
| 970 } | 937 } |
| 971 else | 938 else |
| 972 { | 939 { |
| 973 » » ASSERT(m_pDocument != NULL); | 940 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) |
| 974 | 941 return FALSE; |
| 975 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; | |
| 976 | 942 |
| 977 bool b; | 943 bool b; |
| 978 vp >> b; | 944 vp >> b; |
| 979 | |
| 980 m_bDelay = b; | 945 m_bDelay = b; |
| 981 | |
| 982 if (m_bDelay) | 946 if (m_bDelay) |
| 983 { | 947 { |
| 984 for (int i=0,sz=m_DelayData.GetSize(); i<sz; i++) | 948 for (int i=0,sz=m_DelayData.GetSize(); i<sz; i++) |
| 985 delete m_DelayData.GetAt(i); | 949 delete m_DelayData.GetAt(i); |
| 986 | 950 |
| 987 m_DelayData.RemoveAll(); | 951 m_DelayData.RemoveAll(); |
| 988 } | 952 } |
| 989 else | 953 else |
| 990 { | 954 { |
| 991 CFX_ArrayTemplate<CJS_DelayData*> DelayDataToProcess; | 955 CFX_ArrayTemplate<CJS_DelayData*> DelayDataToProcess; |
| 992 | |
| 993 for (int i=0,sz=m_DelayData.GetSize(); i < sz; i++) | 956 for (int i=0,sz=m_DelayData.GetSize(); i < sz; i++) |
| 994 { | 957 { |
| 995 if (CJS_DelayData* pData = m_DelayData.GetAt(i)) | 958 if (CJS_DelayData* pData = m_DelayData.GetAt(i)) |
| 996 { | 959 { |
| 997 DelayDataToProcess.Add(pData); | 960 DelayDataToProcess.Add(pData); |
| 998 m_DelayData.SetAt(i, NULL); | 961 m_DelayData.SetAt(i, NULL); |
| 999 } | 962 } |
| 1000 } | 963 } |
| 1001 m_DelayData.RemoveAll(); | 964 m_DelayData.RemoveAll(); |
| 1002 | |
| 1003 for (int i=0,sz=DelayDataToProcess.GetSize(); i < sz; i+ +) | 965 for (int i=0,sz=DelayDataToProcess.GetSize(); i < sz; i+ +) |
| 1004 { | 966 { |
| 1005 CJS_DelayData* pData = DelayDataToProcess.GetAt( i); | 967 CJS_DelayData* pData = DelayDataToProcess.GetAt( i); |
| 1006 Field::DoDelay(m_pDocument, pData); | 968 Field::DoDelay(m_pDocument, pData); |
| 1007 DelayDataToProcess.SetAt(i,NULL); | 969 DelayDataToProcess.SetAt(i,NULL); |
| 1008 delete pData; | 970 delete pData; |
| 1009 } | 971 } |
| 1010 } | 972 } |
| 1011 | 973 } |
| 1012 » » return TRUE; | 974 return TRUE; |
| 1013 » } | |
| 1014 } | 975 } |
| 1015 | 976 |
| 1016 FX_BOOL Document::keywords(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) | 977 FX_BOOL Document::keywords(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) |
| 1017 { | 978 { |
| 1018 ASSERT(m_pDocument != NULL); | |
| 1019 | |
| 1020 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); | 979 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); |
| 1021 » if (!pDictionary)return FALSE; | 980 » if (!pDictionary) |
| 981 return FALSE; | |
| 1022 | 982 |
| 1023 if (vp.IsGetting()) | 983 if (vp.IsGetting()) |
| 1024 { | 984 { |
| 1025 vp << pDictionary->GetUnicodeText("Keywords"); | 985 vp << pDictionary->GetUnicodeText("Keywords"); |
| 1026 return TRUE; | |
| 1027 } | 986 } |
| 1028 else | 987 else |
| 1029 { | 988 { |
| 1030 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; | 989 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) |
| 990 return FALSE; | |
| 1031 | 991 |
| 1032 CFX_WideString csKeywords; | 992 CFX_WideString csKeywords; |
| 1033 vp >> csKeywords; | 993 vp >> csKeywords; |
| 1034 pDictionary->SetAtString("Keywords", PDF_EncodeText(csKeywords)) ; | 994 pDictionary->SetAtString("Keywords", PDF_EncodeText(csKeywords)) ; |
| 1035 m_pDocument->SetChangeMark(); | 995 m_pDocument->SetChangeMark(); |
| 1036 return TRUE; | |
| 1037 } | 996 } |
| 997 return TRUE; | |
| 1038 } | 998 } |
| 1039 | 999 |
| 1040 FX_BOOL Document::modDate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) | 1000 FX_BOOL Document::modDate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) |
| 1041 { | 1001 { |
| 1042 ASSERT(m_pDocument != NULL); | |
| 1043 | |
| 1044 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); | 1002 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); |
| 1045 » if (!pDictionary)return FALSE; | 1003 » if (!pDictionary) |
| 1004 return FALSE; | |
| 1046 | 1005 |
| 1047 if (vp.IsGetting()) | 1006 if (vp.IsGetting()) |
| 1048 { | 1007 { |
| 1049 vp << pDictionary->GetUnicodeText("ModDate"); | 1008 vp << pDictionary->GetUnicodeText("ModDate"); |
| 1050 return TRUE; | |
| 1051 } | 1009 } |
| 1052 else | 1010 else |
| 1053 { | 1011 { |
| 1054 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; | 1012 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) |
| 1013 return FALSE; | |
| 1055 | 1014 |
| 1056 CFX_WideString csmodDate; | 1015 CFX_WideString csmodDate; |
| 1057 vp >> csmodDate; | 1016 vp >> csmodDate; |
| 1058 pDictionary->SetAtString("ModDate", PDF_EncodeText(csmodDate)); | 1017 pDictionary->SetAtString("ModDate", PDF_EncodeText(csmodDate)); |
| 1059 m_pDocument->SetChangeMark(); | 1018 m_pDocument->SetChangeMark(); |
| 1060 return TRUE; | |
| 1061 } | 1019 } |
| 1020 return TRUE; | |
| 1062 } | 1021 } |
| 1063 | 1022 |
| 1064 FX_BOOL Document::producer(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) | 1023 FX_BOOL Document::producer(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) |
| 1065 { | 1024 { |
| 1066 ASSERT(m_pDocument != NULL); | |
| 1067 | |
| 1068 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); | 1025 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); |
| 1069 » if (!pDictionary)return FALSE; | 1026 » if (!pDictionary) |
| 1027 return FALSE; | |
| 1070 | 1028 |
| 1071 if (vp.IsGetting()) | 1029 if (vp.IsGetting()) |
| 1072 { | 1030 { |
| 1073 vp << pDictionary->GetUnicodeText("Producer"); | 1031 vp << pDictionary->GetUnicodeText("Producer"); |
| 1074 return TRUE; | |
| 1075 } | 1032 } |
| 1076 else | 1033 else |
| 1077 { | 1034 { |
| 1078 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; | 1035 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) |
| 1036 return FALSE; | |
| 1079 | 1037 |
| 1080 CFX_WideString csproducer; | 1038 CFX_WideString csproducer; |
| 1081 vp >> csproducer; | 1039 vp >> csproducer; |
| 1082 pDictionary->SetAtString("Producer", PDF_EncodeText(csproducer)) ; | 1040 pDictionary->SetAtString("Producer", PDF_EncodeText(csproducer)) ; |
| 1083 m_pDocument->SetChangeMark(); | 1041 m_pDocument->SetChangeMark(); |
| 1084 return TRUE; | |
| 1085 } | 1042 } |
| 1043 return TRUE; | |
| 1086 } | 1044 } |
| 1087 | 1045 |
| 1088 FX_BOOL Document::subject(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) | 1046 FX_BOOL Document::subject(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) |
| 1089 { | 1047 { |
| 1090 ASSERT(m_pDocument != NULL); | |
| 1091 | |
| 1092 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); | 1048 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); |
| 1093 » if (!pDictionary)return FALSE; | 1049 » if (!pDictionary) |
| 1050 return FALSE; | |
| 1094 | 1051 |
| 1095 if (vp.IsGetting()) | 1052 if (vp.IsGetting()) |
| 1096 { | 1053 { |
| 1097 vp << pDictionary->GetUnicodeText("Subject"); | 1054 vp << pDictionary->GetUnicodeText("Subject"); |
| 1098 return TRUE; | |
| 1099 } | 1055 } |
| 1100 else | 1056 else |
| 1101 { | 1057 { |
| 1102 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; | 1058 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) |
| 1059 return FALSE; | |
| 1103 | 1060 |
| 1104 CFX_WideString cssubject; | 1061 CFX_WideString cssubject; |
| 1105 vp >> cssubject; | 1062 vp >> cssubject; |
| 1106 pDictionary->SetAtString("Subject", PDF_EncodeText(cssubject)); | 1063 pDictionary->SetAtString("Subject", PDF_EncodeText(cssubject)); |
| 1107 m_pDocument->SetChangeMark(); | 1064 m_pDocument->SetChangeMark(); |
| 1108 return TRUE; | |
| 1109 } | 1065 } |
| 1066 return TRUE; | |
| 1110 } | 1067 } |
| 1111 | 1068 |
| 1112 FX_BOOL Document::title(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror) | 1069 FX_BOOL Document::title(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror) |
| 1113 { | 1070 { |
| 1114 ASSERT(m_pDocument != NULL); | |
| 1115 | |
| 1116 if (m_pDocument == NULL || m_pDocument->GetDocument() == NULL) | 1071 if (m_pDocument == NULL || m_pDocument->GetDocument() == NULL) |
| 1117 return FALSE; | 1072 return FALSE; |
| 1118 | 1073 |
| 1119 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); | 1074 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); |
| 1120 » if (!pDictionary)return FALSE; | 1075 » if (!pDictionary) |
| 1076 return FALSE; | |
| 1121 | 1077 |
| 1122 if (vp.IsGetting()) | 1078 if (vp.IsGetting()) |
| 1123 { | 1079 { |
| 1124 vp << pDictionary->GetUnicodeText("Title"); | 1080 vp << pDictionary->GetUnicodeText("Title"); |
| 1125 return TRUE; | |
| 1126 } | 1081 } |
| 1127 else | 1082 else |
| 1128 { | 1083 { |
| 1129 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; | 1084 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) |
| 1085 return FALSE; | |
| 1130 | 1086 |
| 1131 CFX_WideString cstitle; | 1087 CFX_WideString cstitle; |
| 1132 vp >> cstitle; | 1088 vp >> cstitle; |
| 1133 pDictionary->SetAtString("Title", PDF_EncodeText(cstitle)); | 1089 pDictionary->SetAtString("Title", PDF_EncodeText(cstitle)); |
| 1134 m_pDocument->SetChangeMark(); | 1090 m_pDocument->SetChangeMark(); |
| 1135 return TRUE; | |
| 1136 } | 1091 } |
| 1092 return TRUE; | |
| 1137 } | 1093 } |
| 1138 | 1094 |
| 1139 FX_BOOL Document::numPages(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) | 1095 FX_BOOL Document::numPages(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) |
| 1140 { | 1096 { |
| 1141 if (vp.IsSetting()) { | 1097 if (vp.IsSetting()) { |
| 1142 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | 1098 CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
| 1143 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); | 1099 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); |
| 1144 return FALSE; | 1100 return FALSE; |
| 1145 } | 1101 } |
| 1146 vp << m_pDocument->GetPageCount(); | 1102 vp << m_pDocument->GetPageCount(); |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1350 return TRUE; | 1306 return TRUE; |
| 1351 } | 1307 } |
| 1352 | 1308 |
| 1353 FX_BOOL Document::getLinks(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError) | 1309 FX_BOOL Document::getLinks(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError) |
| 1354 { | 1310 { |
| 1355 return TRUE; | 1311 return TRUE; |
| 1356 } | 1312 } |
| 1357 | 1313 |
| 1358 bool Document::IsEnclosedInRect(CFX_FloatRect rect, CFX_FloatRect LinkRect) | 1314 bool Document::IsEnclosedInRect(CFX_FloatRect rect, CFX_FloatRect LinkRect) |
| 1359 { | 1315 { |
| 1360 » if (rect.left <= LinkRect.left | 1316 » return (rect.left <= LinkRect.left && |
| 1361 » && rect.top <= LinkRect.top | 1317 rect.top <= LinkRect.top && |
| 1362 » && rect.right >= LinkRect.right | 1318 rect.right >= LinkRect.right && |
| 1363 » && rect.bottom >= LinkRect.bottom) | 1319 rect.bottom >= LinkRect.bottom); |
| 1364 » » return true; | |
| 1365 » else | |
| 1366 » » return false; | |
| 1367 } | 1320 } |
| 1368 | 1321 |
| 1369 void IconTree::InsertIconElement(IconElement* pNewIcon) | 1322 void IconTree::InsertIconElement(IconElement* pNewIcon) |
| 1370 { | 1323 { |
| 1371 if (!pNewIcon)return; | 1324 if (!pNewIcon)return; |
| 1372 | 1325 |
| 1373 if (m_pHead == NULL && m_pEnd == NULL) | 1326 if (m_pHead == NULL && m_pEnd == NULL) |
| 1374 { | 1327 { |
| 1375 m_pHead = m_pEnd = pNewIcon; | 1328 m_pHead = m_pEnd = pNewIcon; |
| 1376 m_iLength++; | 1329 m_iLength++; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1409 { | 1362 { |
| 1410 if (iIndex >= 0 && iIndex <= m_iLength) | 1363 if (iIndex >= 0 && iIndex <= m_iLength) |
| 1411 { | 1364 { |
| 1412 IconElement* pTemp = m_pHead; | 1365 IconElement* pTemp = m_pHead; |
| 1413 for (int i = 0; i < iIndex; i++) | 1366 for (int i = 0; i < iIndex; i++) |
| 1414 { | 1367 { |
| 1415 pTemp = pTemp->NextIcon; | 1368 pTemp = pTemp->NextIcon; |
| 1416 } | 1369 } |
| 1417 return pTemp; | 1370 return pTemp; |
| 1418 } | 1371 } |
| 1419 » else | 1372 return NULL; |
| 1420 » » return NULL; | |
| 1421 } | 1373 } |
| 1422 | 1374 |
| 1423 FX_BOOL Document::addIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError) | 1375 FX_BOOL Document::addIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError) |
| 1424 { | 1376 { |
| 1425 CJS_Context* pContext = (CJS_Context*)cc; | 1377 CJS_Context* pContext = (CJS_Context*)cc; |
| 1426 if (params.size() != 2) { | 1378 if (params.size() != 2) { |
| 1427 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 1379 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
| 1428 return FALSE; | 1380 return FALSE; |
| 1429 } | 1381 } |
| 1430 | 1382 |
| (...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1883 { | 1835 { |
| 1884 m_DelayData.RemoveAt(DelArray[j]); | 1836 m_DelayData.RemoveAt(DelArray[j]); |
| 1885 } | 1837 } |
| 1886 } | 1838 } |
| 1887 | 1839 |
| 1888 CJS_Document* Document::GetCJSDoc() const | 1840 CJS_Document* Document::GetCJSDoc() const |
| 1889 { | 1841 { |
| 1890 return static_cast<CJS_Document*>(m_pJSObject); | 1842 return static_cast<CJS_Document*>(m_pJSObject); |
| 1891 } | 1843 } |
| 1892 | 1844 |
| OLD | NEW |