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

Side by Side Diff: fpdfsdk/javascript/PublicMethods.cpp

Issue 2245863002: Push v8::Isolate into CFXJS_Engine class (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Null isolate before letting CFXJS_Engine dtor invoked Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « fpdfsdk/javascript/JS_Value.cpp ('k') | fpdfsdk/javascript/app.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "fpdfsdk/javascript/PublicMethods.h" 7 #include "fpdfsdk/javascript/PublicMethods.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <vector> 10 #include <vector>
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 if (FXSYS_wcsicmp(sFuction, L"MAX") == 0) { 156 if (FXSYS_wcsicmp(sFuction, L"MAX") == 0) {
157 return std::max(dValue1, dValue2); 157 return std::max(dValue1, dValue2);
158 } 158 }
159 return dValue1; 159 return dValue1;
160 } 160 }
161 161
162 CJS_Array CJS_PublicMethods::AF_MakeArrayFromList(CJS_Runtime* pRuntime, 162 CJS_Array CJS_PublicMethods::AF_MakeArrayFromList(CJS_Runtime* pRuntime,
163 CJS_Value val) { 163 CJS_Value val) {
164 CJS_Array StrArray; 164 CJS_Array StrArray;
165 if (val.IsArrayObject()) { 165 if (val.IsArrayObject()) {
166 val.ConvertToArray(pRuntime->GetIsolate(), StrArray); 166 val.ConvertToArray(pRuntime, StrArray);
167 return StrArray; 167 return StrArray;
168 } 168 }
169 CFX_WideString wsStr = val.ToCFXWideString(pRuntime->GetIsolate()); 169 CFX_WideString wsStr = val.ToCFXWideString(pRuntime);
170 CFX_ByteString t = CFX_ByteString::FromUnicode(wsStr); 170 CFX_ByteString t = CFX_ByteString::FromUnicode(wsStr);
171 const char* p = t.c_str(); 171 const char* p = t.c_str();
172 172
173 int ch = ','; 173 int ch = ',';
174 int nIndex = 0; 174 int nIndex = 0;
175 175
176 while (*p) { 176 while (*p) {
177 const char* pTemp = strchr(p, ch); 177 const char* pTemp = strchr(p, ch);
178 if (!pTemp) { 178 if (!pTemp) {
179 StrArray.SetElement( 179 StrArray.SetElement(
180 pRuntime->GetIsolate(), nIndex, 180 pRuntime, nIndex,
181 CJS_Value(pRuntime, StrTrim(CFX_ByteString(p)).c_str())); 181 CJS_Value(pRuntime, StrTrim(CFX_ByteString(p)).c_str()));
182 break; 182 break;
183 } 183 }
184 184
185 char* pSub = new char[pTemp - p + 1]; 185 char* pSub = new char[pTemp - p + 1];
186 strncpy(pSub, p, pTemp - p); 186 strncpy(pSub, p, pTemp - p);
187 *(pSub + (pTemp - p)) = '\0'; 187 *(pSub + (pTemp - p)) = '\0';
188 188
189 StrArray.SetElement( 189 StrArray.SetElement(
190 pRuntime->GetIsolate(), nIndex, 190 pRuntime, nIndex,
191 CJS_Value(pRuntime, StrTrim(CFX_ByteString(pSub)).c_str())); 191 CJS_Value(pRuntime, StrTrim(CFX_ByteString(pSub)).c_str()));
192 delete[] pSub; 192 delete[] pSub;
193 193
194 nIndex++; 194 nIndex++;
195 p = ++pTemp; 195 p = ++pTemp;
196 } 196 }
197 return StrArray; 197 return StrArray;
198 } 198 }
199 199
200 int CJS_PublicMethods::ParseStringInteger(const CFX_WideString& str, 200 int CJS_PublicMethods::ParseStringInteger(const CFX_WideString& str,
(...skipping 535 matching lines...) Expand 10 before | Expand all | Expand 10 after
736 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 736 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
737 CJS_EventHandler* pEvent = pContext->GetEventHandler(); 737 CJS_EventHandler* pEvent = pContext->GetEventHandler();
738 if (!pEvent->m_pValue) 738 if (!pEvent->m_pValue)
739 return FALSE; 739 return FALSE;
740 740
741 CFX_WideString& Value = pEvent->Value(); 741 CFX_WideString& Value = pEvent->Value();
742 CFX_ByteString strValue = StrTrim(CFX_ByteString::FromUnicode(Value)); 742 CFX_ByteString strValue = StrTrim(CFX_ByteString::FromUnicode(Value));
743 if (strValue.IsEmpty()) 743 if (strValue.IsEmpty())
744 return TRUE; 744 return TRUE;
745 745
746 int iDec = params[0].ToInt(pRuntime->GetIsolate()); 746 int iDec = params[0].ToInt(pRuntime);
747 int iSepStyle = params[1].ToInt(pRuntime->GetIsolate()); 747 int iSepStyle = params[1].ToInt(pRuntime);
748 int iNegStyle = params[2].ToInt(pRuntime->GetIsolate()); 748 int iNegStyle = params[2].ToInt(pRuntime);
749 // params[3] is iCurrStyle, it's not used. 749 // params[3] is iCurrStyle, it's not used.
750 CFX_WideString wstrCurrency = 750 CFX_WideString wstrCurrency = params[4].ToCFXWideString(pRuntime);
751 params[4].ToCFXWideString(pRuntime->GetIsolate()); 751 FX_BOOL bCurrencyPrepend = params[5].ToBool(pRuntime);
752 FX_BOOL bCurrencyPrepend = params[5].ToBool(pRuntime->GetIsolate());
753 752
754 if (iDec < 0) 753 if (iDec < 0)
755 iDec = -iDec; 754 iDec = -iDec;
756 755
757 if (iSepStyle < 0 || iSepStyle > 3) 756 if (iSepStyle < 0 || iSepStyle > 3)
758 iSepStyle = 0; 757 iSepStyle = 0;
759 758
760 if (iNegStyle < 0 || iNegStyle > 3) 759 if (iNegStyle < 0 || iNegStyle > 3)
761 iNegStyle = 0; 760 iNegStyle = 0;
762 761
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
832 if (iNegStyle == 0) { 831 if (iNegStyle == 0) {
833 Value = L"-" + Value; 832 Value = L"-" + Value;
834 } else if (iNegStyle == 2 || iNegStyle == 3) { 833 } else if (iNegStyle == 2 || iNegStyle == 3) {
835 Value = L"(" + Value + L")"; 834 Value = L"(" + Value + L")";
836 } 835 }
837 if (iNegStyle == 1 || iNegStyle == 3) { 836 if (iNegStyle == 1 || iNegStyle == 3) {
838 if (Field* fTarget = pEvent->Target_Field()) { 837 if (Field* fTarget = pEvent->Target_Field()) {
839 CJS_Array arColor; 838 CJS_Array arColor;
840 CJS_Value vColElm(pRuntime); 839 CJS_Value vColElm(pRuntime);
841 vColElm = CJS_Value(pRuntime, L"RGB"); 840 vColElm = CJS_Value(pRuntime, L"RGB");
842 arColor.SetElement(pRuntime->GetIsolate(), 0, vColElm); 841 arColor.SetElement(pRuntime, 0, vColElm);
843 vColElm = CJS_Value(pRuntime, 1); 842 vColElm = CJS_Value(pRuntime, 1);
844 arColor.SetElement(pRuntime->GetIsolate(), 1, vColElm); 843 arColor.SetElement(pRuntime, 1, vColElm);
845 vColElm = CJS_Value(pRuntime, 0); 844 vColElm = CJS_Value(pRuntime, 0);
846 arColor.SetElement(pRuntime->GetIsolate(), 2, vColElm); 845 arColor.SetElement(pRuntime, 2, vColElm);
847 arColor.SetElement(pRuntime->GetIsolate(), 3, vColElm); 846 arColor.SetElement(pRuntime, 3, vColElm);
848 847
849 CJS_PropValue vProp(pRuntime); 848 CJS_PropValue vProp(pRuntime);
850 vProp.StartGetting(); 849 vProp.StartGetting();
851 vProp << arColor; 850 vProp << arColor;
852 vProp.StartSetting(); 851 vProp.StartSetting();
853 fTarget->textColor(cc, vProp, sError); // red 852 fTarget->textColor(cc, vProp, sError); // red
854 } 853 }
855 } 854 }
856 } else { 855 } else {
857 if (iNegStyle == 1 || iNegStyle == 3) { 856 if (iNegStyle == 1 || iNegStyle == 3) {
858 if (Field* fTarget = pEvent->Target_Field()) { 857 if (Field* fTarget = pEvent->Target_Field()) {
859 CJS_Array arColor; 858 CJS_Array arColor;
860 CJS_Value vColElm(pRuntime); 859 CJS_Value vColElm(pRuntime);
861 vColElm = CJS_Value(pRuntime, L"RGB"); 860 vColElm = CJS_Value(pRuntime, L"RGB");
862 arColor.SetElement(pRuntime->GetIsolate(), 0, vColElm); 861 arColor.SetElement(pRuntime, 0, vColElm);
863 vColElm = CJS_Value(pRuntime, 0); 862 vColElm = CJS_Value(pRuntime, 0);
864 arColor.SetElement(pRuntime->GetIsolate(), 1, vColElm); 863 arColor.SetElement(pRuntime, 1, vColElm);
865 arColor.SetElement(pRuntime->GetIsolate(), 2, vColElm); 864 arColor.SetElement(pRuntime, 2, vColElm);
866 arColor.SetElement(pRuntime->GetIsolate(), 3, vColElm); 865 arColor.SetElement(pRuntime, 3, vColElm);
867 866
868 CJS_PropValue vProp(pRuntime); 867 CJS_PropValue vProp(pRuntime);
869 vProp.StartGetting(); 868 vProp.StartGetting();
870 fTarget->textColor(cc, vProp, sError); 869 fTarget->textColor(cc, vProp, sError);
871 870
872 CJS_Array aProp; 871 CJS_Array aProp;
873 vProp.GetJSValue()->ConvertToArray(pRuntime->GetIsolate(), aProp); 872 vProp.GetJSValue()->ConvertToArray(pRuntime, aProp);
874 873
875 CPWL_Color crProp; 874 CPWL_Color crProp;
876 CPWL_Color crColor; 875 CPWL_Color crColor;
877 color::ConvertArrayToPWLColor(pRuntime, aProp, &crProp); 876 color::ConvertArrayToPWLColor(pRuntime, aProp, &crProp);
878 color::ConvertArrayToPWLColor(pRuntime, arColor, &crColor); 877 color::ConvertArrayToPWLColor(pRuntime, arColor, &crColor);
879 878
880 if (crColor != crProp) { 879 if (crColor != crProp) {
881 CJS_PropValue vProp2(pRuntime); 880 CJS_PropValue vProp2(pRuntime);
882 vProp2.StartGetting(); 881 vProp2.StartGetting();
883 vProp2 << arColor; 882 vProp2 << arColor;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
935 if (bHasSign) { 934 if (bHasSign) {
936 // can't insert "change" in front to sign postion. 935 // can't insert "change" in front to sign postion.
937 if (pEvent->SelStart() == 0) { 936 if (pEvent->SelStart() == 0) {
938 FX_BOOL& bRc = pEvent->Rc(); 937 FX_BOOL& bRc = pEvent->Rc();
939 bRc = FALSE; 938 bRc = FALSE;
940 return TRUE; 939 return TRUE;
941 } 940 }
942 } 941 }
943 942
944 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 943 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
945 int iSepStyle = params[1].ToInt(pRuntime->GetIsolate()); 944 int iSepStyle = params[1].ToInt(pRuntime);
946 if (iSepStyle < 0 || iSepStyle > 3) 945 if (iSepStyle < 0 || iSepStyle > 3)
947 iSepStyle = 0; 946 iSepStyle = 0;
948 const FX_WCHAR cSep = iSepStyle < 2 ? L'.' : L','; 947 const FX_WCHAR cSep = iSepStyle < 2 ? L'.' : L',';
949 948
950 bool bHasSep = wstrValue.Find(cSep) != -1; 949 bool bHasSep = wstrValue.Find(cSep) != -1;
951 for (FX_STRSIZE i = 0; i < wstrChange.GetLength(); ++i) { 950 for (FX_STRSIZE i = 0; i < wstrChange.GetLength(); ++i) {
952 if (wstrChange[i] == cSep) { 951 if (wstrChange[i] == cSep) {
953 if (bHasSep) { 952 if (bHasSep) {
954 FX_BOOL& bRc = pEvent->Rc(); 953 FX_BOOL& bRc = pEvent->Rc();
955 bRc = FALSE; 954 bRc = FALSE;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1010 return FALSE; 1009 return FALSE;
1011 } 1010 }
1012 if (!pEvent->m_pValue) 1011 if (!pEvent->m_pValue)
1013 return FALSE; 1012 return FALSE;
1014 1013
1015 CFX_WideString& Value = pEvent->Value(); 1014 CFX_WideString& Value = pEvent->Value();
1016 CFX_ByteString strValue = StrTrim(CFX_ByteString::FromUnicode(Value)); 1015 CFX_ByteString strValue = StrTrim(CFX_ByteString::FromUnicode(Value));
1017 if (strValue.IsEmpty()) 1016 if (strValue.IsEmpty())
1018 return TRUE; 1017 return TRUE;
1019 1018
1020 int iDec = params[0].ToInt(pRuntime->GetIsolate()); 1019 int iDec = params[0].ToInt(pRuntime);
1021 if (iDec < 0) 1020 if (iDec < 0)
1022 iDec = -iDec; 1021 iDec = -iDec;
1023 1022
1024 int iSepStyle = params[1].ToInt(pRuntime->GetIsolate()); 1023 int iSepStyle = params[1].ToInt(pRuntime);
1025 if (iSepStyle < 0 || iSepStyle > 3) 1024 if (iSepStyle < 0 || iSepStyle > 3)
1026 iSepStyle = 0; 1025 iSepStyle = 0;
1027 1026
1028 // for processing decimal places 1027 // for processing decimal places
1029 double dValue = atof(strValue.c_str()); 1028 double dValue = atof(strValue.c_str());
1030 dValue *= 100; 1029 dValue *= 100;
1031 if (iDec > 0) 1030 if (iDec > 0)
1032 dValue += DOUBLE_CORRECT; 1031 dValue += DOUBLE_CORRECT;
1033 1032
1034 int iDec2; 1033 int iDec2;
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
1110 return FALSE; 1109 return FALSE;
1111 } 1110 }
1112 if (!pEvent->m_pValue) 1111 if (!pEvent->m_pValue)
1113 return FALSE; 1112 return FALSE;
1114 1113
1115 CFX_WideString& val = pEvent->Value(); 1114 CFX_WideString& val = pEvent->Value();
1116 CFX_WideString strValue = val; 1115 CFX_WideString strValue = val;
1117 if (strValue.IsEmpty()) 1116 if (strValue.IsEmpty())
1118 return TRUE; 1117 return TRUE;
1119 1118
1120 CFX_WideString sFormat = params[0].ToCFXWideString(pRuntime->GetIsolate()); 1119 CFX_WideString sFormat = params[0].ToCFXWideString(pRuntime);
1121 double dDate = 0.0f; 1120 double dDate = 0.0f;
1122 1121
1123 if (strValue.Find(L"GMT") != -1) { 1122 if (strValue.Find(L"GMT") != -1) {
1124 // for GMT format time 1123 // for GMT format time
1125 // such as "Tue Aug 11 14:24:16 GMT+08002009" 1124 // such as "Tue Aug 11 14:24:16 GMT+08002009"
1126 dDate = MakeInterDate(strValue); 1125 dDate = MakeInterDate(strValue);
1127 } else { 1126 } else {
1128 dDate = MakeRegularDate(strValue, sFormat, nullptr); 1127 dDate = MakeRegularDate(strValue, sFormat, nullptr);
1129 } 1128 }
1130 1129
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1211 return FALSE; 1210 return FALSE;
1212 } 1211 }
1213 1212
1214 if (pEvent->WillCommit()) { 1213 if (pEvent->WillCommit()) {
1215 if (!pEvent->m_pValue) 1214 if (!pEvent->m_pValue)
1216 return FALSE; 1215 return FALSE;
1217 CFX_WideString strValue = pEvent->Value(); 1216 CFX_WideString strValue = pEvent->Value();
1218 if (strValue.IsEmpty()) 1217 if (strValue.IsEmpty())
1219 return TRUE; 1218 return TRUE;
1220 1219
1221 CFX_WideString sFormat = params[0].ToCFXWideString(pRuntime->GetIsolate()); 1220 CFX_WideString sFormat = params[0].ToCFXWideString(pRuntime);
1222 bool bWrongFormat = FALSE; 1221 bool bWrongFormat = FALSE;
1223 double dRet = MakeRegularDate(strValue, sFormat, &bWrongFormat); 1222 double dRet = MakeRegularDate(strValue, sFormat, &bWrongFormat);
1224 if (bWrongFormat || JS_PortIsNan(dRet)) { 1223 if (bWrongFormat || JS_PortIsNan(dRet)) {
1225 CFX_WideString swMsg; 1224 CFX_WideString swMsg;
1226 swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE).c_str(), 1225 swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE).c_str(),
1227 sFormat.c_str()); 1226 sFormat.c_str());
1228 AlertIfPossible(pContext, swMsg.c_str()); 1227 AlertIfPossible(pContext, swMsg.c_str());
1229 pEvent->Rc() = FALSE; 1228 pEvent->Rc() = FALSE;
1230 return TRUE; 1229 return TRUE;
1231 } 1230 }
1232 } 1231 }
1233 return TRUE; 1232 return TRUE;
1234 } 1233 }
1235 1234
1236 FX_BOOL CJS_PublicMethods::AFDate_Format(IJS_Context* cc, 1235 FX_BOOL CJS_PublicMethods::AFDate_Format(IJS_Context* cc,
1237 const std::vector<CJS_Value>& params, 1236 const std::vector<CJS_Value>& params,
1238 CJS_Value& vRet, 1237 CJS_Value& vRet,
1239 CFX_WideString& sError) { 1238 CFX_WideString& sError) {
1240 CJS_Context* pContext = (CJS_Context*)cc; 1239 CJS_Context* pContext = (CJS_Context*)cc;
1241 if (params.size() != 1) { 1240 if (params.size() != 1) {
1242 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 1241 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1243 return FALSE; 1242 return FALSE;
1244 } 1243 }
1245 1244
1246 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 1245 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
1247 int iIndex = params[0].ToInt(pRuntime->GetIsolate()); 1246 int iIndex = params[0].ToInt(pRuntime);
1248 const FX_WCHAR* cFormats[] = {L"m/d", 1247 const FX_WCHAR* cFormats[] = {L"m/d",
1249 L"m/d/yy", 1248 L"m/d/yy",
1250 L"mm/dd/yy", 1249 L"mm/dd/yy",
1251 L"mm/yy", 1250 L"mm/yy",
1252 L"d-mmm", 1251 L"d-mmm",
1253 L"d-mmm-yy", 1252 L"d-mmm-yy",
1254 L"dd-mmm-yy", 1253 L"dd-mmm-yy",
1255 L"yy-mm-dd", 1254 L"yy-mm-dd",
1256 L"mmm-yy", 1255 L"mmm-yy",
1257 L"mmmm-yy", 1256 L"mmmm-yy",
(...skipping 17 matching lines...) Expand all
1275 const std::vector<CJS_Value>& params, 1274 const std::vector<CJS_Value>& params,
1276 CJS_Value& vRet, 1275 CJS_Value& vRet,
1277 CFX_WideString& sError) { 1276 CFX_WideString& sError) {
1278 CJS_Context* pContext = (CJS_Context*)cc; 1277 CJS_Context* pContext = (CJS_Context*)cc;
1279 if (params.size() != 1) { 1278 if (params.size() != 1) {
1280 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 1279 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1281 return FALSE; 1280 return FALSE;
1282 } 1281 }
1283 1282
1284 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 1283 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
1285 int iIndex = params[0].ToInt(pRuntime->GetIsolate()); 1284 int iIndex = params[0].ToInt(pRuntime);
1286 const FX_WCHAR* cFormats[] = {L"m/d", 1285 const FX_WCHAR* cFormats[] = {L"m/d",
1287 L"m/d/yy", 1286 L"m/d/yy",
1288 L"mm/dd/yy", 1287 L"mm/dd/yy",
1289 L"mm/yy", 1288 L"mm/yy",
1290 L"d-mmm", 1289 L"d-mmm",
1291 L"d-mmm-yy", 1290 L"d-mmm-yy",
1292 L"dd-mmm-yy", 1291 L"dd-mmm-yy",
1293 L"yy-mm-dd", 1292 L"yy-mm-dd",
1294 L"mmm-yy", 1293 L"mmm-yy",
1295 L"mmmm-yy", 1294 L"mmmm-yy",
(...skipping 16 matching lines...) Expand all
1312 const std::vector<CJS_Value>& params, 1311 const std::vector<CJS_Value>& params,
1313 CJS_Value& vRet, 1312 CJS_Value& vRet,
1314 CFX_WideString& sError) { 1313 CFX_WideString& sError) {
1315 CJS_Context* pContext = (CJS_Context*)cc; 1314 CJS_Context* pContext = (CJS_Context*)cc;
1316 if (params.size() != 1) { 1315 if (params.size() != 1) {
1317 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 1316 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1318 return FALSE; 1317 return FALSE;
1319 } 1318 }
1320 1319
1321 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 1320 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
1322 int iIndex = params[0].ToInt(pRuntime->GetIsolate()); 1321 int iIndex = params[0].ToInt(pRuntime);
1323 const FX_WCHAR* cFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss", 1322 const FX_WCHAR* cFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss",
1324 L"h:MM:ss tt"}; 1323 L"h:MM:ss tt"};
1325 1324
1326 if (iIndex < 0 || (static_cast<size_t>(iIndex) >= FX_ArraySize(cFormats))) 1325 if (iIndex < 0 || (static_cast<size_t>(iIndex) >= FX_ArraySize(cFormats)))
1327 iIndex = 0; 1326 iIndex = 0;
1328 1327
1329 std::vector<CJS_Value> newParams; 1328 std::vector<CJS_Value> newParams;
1330 newParams.push_back( 1329 newParams.push_back(
1331 CJS_Value(CJS_Runtime::FromContext(cc), cFormats[iIndex])); 1330 CJS_Value(CJS_Runtime::FromContext(cc), cFormats[iIndex]));
1332 return AFDate_FormatEx(cc, newParams, vRet, sError); 1331 return AFDate_FormatEx(cc, newParams, vRet, sError);
1333 } 1332 }
1334 1333
1335 FX_BOOL CJS_PublicMethods::AFTime_Keystroke( 1334 FX_BOOL CJS_PublicMethods::AFTime_Keystroke(
1336 IJS_Context* cc, 1335 IJS_Context* cc,
1337 const std::vector<CJS_Value>& params, 1336 const std::vector<CJS_Value>& params,
1338 CJS_Value& vRet, 1337 CJS_Value& vRet,
1339 CFX_WideString& sError) { 1338 CFX_WideString& sError) {
1340 CJS_Context* pContext = (CJS_Context*)cc; 1339 CJS_Context* pContext = (CJS_Context*)cc;
1341 if (params.size() != 1) { 1340 if (params.size() != 1) {
1342 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 1341 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1343 return FALSE; 1342 return FALSE;
1344 } 1343 }
1345 1344
1346 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 1345 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
1347 int iIndex = params[0].ToInt(pRuntime->GetIsolate()); 1346 int iIndex = params[0].ToInt(pRuntime);
1348 const FX_WCHAR* cFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss", 1347 const FX_WCHAR* cFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss",
1349 L"h:MM:ss tt"}; 1348 L"h:MM:ss tt"};
1350 1349
1351 if (iIndex < 0 || (static_cast<size_t>(iIndex) >= FX_ArraySize(cFormats))) 1350 if (iIndex < 0 || (static_cast<size_t>(iIndex) >= FX_ArraySize(cFormats)))
1352 iIndex = 0; 1351 iIndex = 0;
1353 1352
1354 std::vector<CJS_Value> newParams; 1353 std::vector<CJS_Value> newParams;
1355 newParams.push_back( 1354 newParams.push_back(
1356 CJS_Value(CJS_Runtime::FromContext(cc), cFormats[iIndex])); 1355 CJS_Value(CJS_Runtime::FromContext(cc), cFormats[iIndex]));
1357 return AFDate_KeystrokeEx(cc, newParams, vRet, sError); 1356 return AFDate_KeystrokeEx(cc, newParams, vRet, sError);
(...skipping 26 matching lines...) Expand all
1384 return FALSE; 1383 return FALSE;
1385 } 1384 }
1386 1385
1387 CJS_EventHandler* pEvent = pContext->GetEventHandler(); 1386 CJS_EventHandler* pEvent = pContext->GetEventHandler();
1388 if (!pEvent->m_pValue) 1387 if (!pEvent->m_pValue)
1389 return FALSE; 1388 return FALSE;
1390 1389
1391 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 1390 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
1392 CFX_WideString wsSource = pEvent->Value(); 1391 CFX_WideString wsSource = pEvent->Value();
1393 CFX_WideString wsFormat; 1392 CFX_WideString wsFormat;
1394 switch (params[0].ToInt(pRuntime->GetIsolate())) { 1393 switch (params[0].ToInt(pRuntime)) {
1395 case 0: 1394 case 0:
1396 wsFormat = L"99999"; 1395 wsFormat = L"99999";
1397 break; 1396 break;
1398 case 1: 1397 case 1:
1399 wsFormat = L"99999-9999"; 1398 wsFormat = L"99999-9999";
1400 break; 1399 break;
1401 case 2: 1400 case 2:
1402 if (util::printx(L"9999999999", wsSource).GetLength() >= 10) 1401 if (util::printx(L"9999999999", wsSource).GetLength() >= 10)
1403 wsFormat = L"(999) 999-9999"; 1402 wsFormat = L"(999) 999-9999";
1404 else 1403 else
(...skipping 20 matching lines...) Expand all
1425 1424
1426 if (params.size() < 1) { 1425 if (params.size() < 1) {
1427 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 1426 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1428 return FALSE; 1427 return FALSE;
1429 } 1428 }
1430 1429
1431 if (!pEvent->m_pValue) 1430 if (!pEvent->m_pValue)
1432 return FALSE; 1431 return FALSE;
1433 CFX_WideString& valEvent = pEvent->Value(); 1432 CFX_WideString& valEvent = pEvent->Value();
1434 1433
1435 CFX_WideString wstrMask = params[0].ToCFXWideString(pRuntime->GetIsolate()); 1434 CFX_WideString wstrMask = params[0].ToCFXWideString(pRuntime);
1436 if (wstrMask.IsEmpty()) 1435 if (wstrMask.IsEmpty())
1437 return TRUE; 1436 return TRUE;
1438 1437
1439 if (pEvent->WillCommit()) { 1438 if (pEvent->WillCommit()) {
1440 if (valEvent.IsEmpty()) 1439 if (valEvent.IsEmpty())
1441 return TRUE; 1440 return TRUE;
1442 1441
1443 FX_STRSIZE iIndexMask = 0; 1442 FX_STRSIZE iIndexMask = 0;
1444 for (; iIndexMask < valEvent.GetLength(); ++iIndexMask) { 1443 for (; iIndexMask < valEvent.GetLength(); ++iIndexMask) {
1445 if (!maskSatisfied(valEvent[iIndexMask], wstrMask[iIndexMask])) 1444 if (!maskSatisfied(valEvent[iIndexMask], wstrMask[iIndexMask]))
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1513 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 1512 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1514 return FALSE; 1513 return FALSE;
1515 } 1514 }
1516 1515
1517 CJS_EventHandler* pEvent = pContext->GetEventHandler(); 1516 CJS_EventHandler* pEvent = pContext->GetEventHandler();
1518 if (!pEvent->m_pValue) 1517 if (!pEvent->m_pValue)
1519 return FALSE; 1518 return FALSE;
1520 1519
1521 const char* cFormat = ""; 1520 const char* cFormat = "";
1522 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 1521 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
1523 switch (params[0].ToInt(pRuntime->GetIsolate())) { 1522 switch (params[0].ToInt(pRuntime)) {
1524 case 0: 1523 case 0:
1525 cFormat = "99999"; 1524 cFormat = "99999";
1526 break; 1525 break;
1527 case 1: 1526 case 1:
1528 cFormat = "999999999"; 1527 cFormat = "999999999";
1529 break; 1528 break;
1530 case 2: 1529 case 2:
1531 if (pEvent->Value().GetLength() + pEvent->Change().GetLength() > 7) 1530 if (pEvent->Value().GetLength() + pEvent->Change().GetLength() > 7)
1532 cFormat = "9999999999"; 1531 cFormat = "9999999999";
1533 else 1532 else
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1589 CJS_Value& vRet, 1588 CJS_Value& vRet,
1590 CFX_WideString& sError) { 1589 CFX_WideString& sError) {
1591 CJS_Context* pContext = (CJS_Context*)cc; 1590 CJS_Context* pContext = (CJS_Context*)cc;
1592 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 1591 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
1593 1592
1594 if (params.size() != 2) { 1593 if (params.size() != 2) {
1595 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 1594 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1596 return FALSE; 1595 return FALSE;
1597 } 1596 }
1598 1597
1599 CFX_WideString sValue = params[0].ToCFXWideString(pRuntime->GetIsolate()); 1598 CFX_WideString sValue = params[0].ToCFXWideString(pRuntime);
1600 CFX_WideString sFormat = params[1].ToCFXWideString(pRuntime->GetIsolate()); 1599 CFX_WideString sFormat = params[1].ToCFXWideString(pRuntime);
1601 1600
1602 double dDate = MakeRegularDate(sValue, sFormat, nullptr); 1601 double dDate = MakeRegularDate(sValue, sFormat, nullptr);
1603 1602
1604 if (JS_PortIsNan(dDate)) { 1603 if (JS_PortIsNan(dDate)) {
1605 CFX_WideString swMsg; 1604 CFX_WideString swMsg;
1606 swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE).c_str(), 1605 swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE).c_str(),
1607 sFormat.c_str()); 1606 sFormat.c_str());
1608 AlertIfPossible((CJS_Context*)cc, swMsg.c_str()); 1607 AlertIfPossible((CJS_Context*)cc, swMsg.c_str());
1609 return FALSE; 1608 return FALSE;
1610 } 1609 }
1611 1610
1612 vRet = CJS_Value(pRuntime, dDate); 1611 vRet = CJS_Value(pRuntime, dDate);
1613 return TRUE; 1612 return TRUE;
1614 } 1613 }
1615 1614
1616 FX_BOOL CJS_PublicMethods::AFSimple(IJS_Context* cc, 1615 FX_BOOL CJS_PublicMethods::AFSimple(IJS_Context* cc,
1617 const std::vector<CJS_Value>& params, 1616 const std::vector<CJS_Value>& params,
1618 CJS_Value& vRet, 1617 CJS_Value& vRet,
1619 CFX_WideString& sError) { 1618 CFX_WideString& sError) {
1620 CJS_Context* pContext = (CJS_Context*)cc; 1619 CJS_Context* pContext = (CJS_Context*)cc;
1621 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 1620 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
1622 1621
1623 if (params.size() != 3) { 1622 if (params.size() != 3) {
1624 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 1623 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1625 return FALSE; 1624 return FALSE;
1626 } 1625 }
1627 1626
1628 vRet = CJS_Value( 1627 vRet = CJS_Value(pRuntime, static_cast<double>(AF_Simple(
1629 pRuntime, static_cast<double>(AF_Simple( 1628 params[0].ToCFXWideString(pRuntime).c_str(),
1630 params[0].ToCFXWideString(pRuntime->GetIsolate()).c_str(), 1629 params[1].ToDouble(pRuntime),
1631 params[1].ToDouble(pRuntime->GetIsolate()), 1630 params[2].ToDouble(pRuntime))));
1632 params[2].ToDouble(pRuntime->GetIsolate()))));
1633 1631
1634 return TRUE; 1632 return TRUE;
1635 } 1633 }
1636 1634
1637 FX_BOOL CJS_PublicMethods::AFMakeNumber(IJS_Context* cc, 1635 FX_BOOL CJS_PublicMethods::AFMakeNumber(IJS_Context* cc,
1638 const std::vector<CJS_Value>& params, 1636 const std::vector<CJS_Value>& params,
1639 CJS_Value& vRet, 1637 CJS_Value& vRet,
1640 CFX_WideString& sError) { 1638 CFX_WideString& sError) {
1641 CJS_Context* pContext = (CJS_Context*)cc; 1639 CJS_Context* pContext = (CJS_Context*)cc;
1642 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 1640 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
1643 1641
1644 if (params.size() != 1) { 1642 if (params.size() != 1) {
1645 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 1643 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1646 return FALSE; 1644 return FALSE;
1647 } 1645 }
1648 1646
1649 CFX_WideString ws = params[0].ToCFXWideString(pRuntime->GetIsolate()); 1647 CFX_WideString ws = params[0].ToCFXWideString(pRuntime);
1650 ws.Replace(L",", L"."); 1648 ws.Replace(L",", L".");
1651 vRet = CJS_Value(pRuntime, ws.c_str()); 1649 vRet = CJS_Value(pRuntime, ws.c_str());
1652 vRet.MaybeCoerceToNumber(pRuntime->GetIsolate()); 1650 vRet.MaybeCoerceToNumber(pRuntime);
1653 if (vRet.GetType() != CJS_Value::VT_number) 1651 if (vRet.GetType() != CJS_Value::VT_number)
1654 vRet = CJS_Value(pRuntime, 0); 1652 vRet = CJS_Value(pRuntime, 0);
1655 return TRUE; 1653 return TRUE;
1656 } 1654 }
1657 1655
1658 FX_BOOL CJS_PublicMethods::AFSimple_Calculate( 1656 FX_BOOL CJS_PublicMethods::AFSimple_Calculate(
1659 IJS_Context* cc, 1657 IJS_Context* cc,
1660 const std::vector<CJS_Value>& params, 1658 const std::vector<CJS_Value>& params,
1661 CJS_Value& vRet, 1659 CJS_Value& vRet,
1662 CFX_WideString& sError) { 1660 CFX_WideString& sError) {
1663 CJS_Context* pContext = (CJS_Context*)cc; 1661 CJS_Context* pContext = (CJS_Context*)cc;
1664 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 1662 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
1665 1663
1666 if (params.size() != 2) { 1664 if (params.size() != 2) {
1667 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 1665 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1668 return FALSE; 1666 return FALSE;
1669 } 1667 }
1670 1668
1671 CJS_Value params1 = params[1]; 1669 CJS_Value params1 = params[1];
1672 if (!params1.IsArrayObject() && params1.GetType() != CJS_Value::VT_string) { 1670 if (!params1.IsArrayObject() && params1.GetType() != CJS_Value::VT_string) {
1673 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 1671 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1674 return FALSE; 1672 return FALSE;
1675 } 1673 }
1676 1674
1677 CPDFSDK_Document* pReaderDoc = pContext->GetReaderDocument(); 1675 CPDFSDK_Document* pReaderDoc = pContext->GetReaderDocument();
1678 CPDFSDK_InterForm* pReaderInterForm = pReaderDoc->GetInterForm(); 1676 CPDFSDK_InterForm* pReaderInterForm = pReaderDoc->GetInterForm();
1679 CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm(); 1677 CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm();
1680 1678
1681 CFX_WideString sFunction = params[0].ToCFXWideString(pRuntime->GetIsolate()); 1679 CFX_WideString sFunction = params[0].ToCFXWideString(pRuntime);
1682 double dValue = wcscmp(sFunction.c_str(), L"PRD") == 0 ? 1.0 : 0.0; 1680 double dValue = wcscmp(sFunction.c_str(), L"PRD") == 0 ? 1.0 : 0.0;
1683 1681
1684 CJS_Array FieldNameArray = AF_MakeArrayFromList(pRuntime, params1); 1682 CJS_Array FieldNameArray = AF_MakeArrayFromList(pRuntime, params1);
1685 int nFieldsCount = 0; 1683 int nFieldsCount = 0;
1686 1684
1687 for (int i = 0, isz = FieldNameArray.GetLength(); i < isz; i++) { 1685 for (int i = 0, isz = FieldNameArray.GetLength(pRuntime); i < isz; i++) {
1688 CJS_Value jsValue(pRuntime); 1686 CJS_Value jsValue(pRuntime);
1689 FieldNameArray.GetElement(pRuntime->GetIsolate(), i, jsValue); 1687 FieldNameArray.GetElement(pRuntime, i, jsValue);
1690 CFX_WideString wsFieldName = 1688 CFX_WideString wsFieldName = jsValue.ToCFXWideString(pRuntime);
1691 jsValue.ToCFXWideString(pRuntime->GetIsolate());
1692 1689
1693 for (int j = 0, jsz = pInterForm->CountFields(wsFieldName); j < jsz; j++) { 1690 for (int j = 0, jsz = pInterForm->CountFields(wsFieldName); j < jsz; j++) {
1694 if (CPDF_FormField* pFormField = pInterForm->GetField(j, wsFieldName)) { 1691 if (CPDF_FormField* pFormField = pInterForm->GetField(j, wsFieldName)) {
1695 double dTemp = 0.0; 1692 double dTemp = 0.0;
1696 switch (pFormField->GetFieldType()) { 1693 switch (pFormField->GetFieldType()) {
1697 case FIELDTYPE_TEXTFIELD: 1694 case FIELDTYPE_TEXTFIELD:
1698 case FIELDTYPE_COMBOBOX: { 1695 case FIELDTYPE_COMBOBOX: {
1699 CFX_WideString trimmed = pFormField->GetValue(); 1696 CFX_WideString trimmed = pFormField->GetValue();
1700 trimmed.TrimRight(); 1697 trimmed.TrimRight();
1701 trimmed.TrimLeft(); 1698 trimmed.TrimLeft();
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1742 } 1739 }
1743 } 1740 }
1744 1741
1745 if (wcscmp(sFunction.c_str(), L"AVG") == 0 && nFieldsCount > 0) 1742 if (wcscmp(sFunction.c_str(), L"AVG") == 0 && nFieldsCount > 0)
1746 dValue /= nFieldsCount; 1743 dValue /= nFieldsCount;
1747 1744
1748 dValue = (double)floor(dValue * FXSYS_pow((double)10, (double)6) + 0.49) / 1745 dValue = (double)floor(dValue * FXSYS_pow((double)10, (double)6) + 0.49) /
1749 FXSYS_pow((double)10, (double)6); 1746 FXSYS_pow((double)10, (double)6);
1750 CJS_Value jsValue(pRuntime, dValue); 1747 CJS_Value jsValue(pRuntime, dValue);
1751 if (pContext->GetEventHandler()->m_pValue) 1748 if (pContext->GetEventHandler()->m_pValue)
1752 pContext->GetEventHandler()->Value() = 1749 pContext->GetEventHandler()->Value() = jsValue.ToCFXWideString(pRuntime);
1753 jsValue.ToCFXWideString(pRuntime->GetIsolate());
1754 1750
1755 return TRUE; 1751 return TRUE;
1756 } 1752 }
1757 1753
1758 /* This function validates the current event to ensure that its value is 1754 /* This function validates the current event to ensure that its value is
1759 ** within the specified range. */ 1755 ** within the specified range. */
1760 1756
1761 FX_BOOL CJS_PublicMethods::AFRange_Validate( 1757 FX_BOOL CJS_PublicMethods::AFRange_Validate(
1762 IJS_Context* cc, 1758 IJS_Context* cc,
1763 const std::vector<CJS_Value>& params, 1759 const std::vector<CJS_Value>& params,
1764 CJS_Value& vRet, 1760 CJS_Value& vRet,
1765 CFX_WideString& sError) { 1761 CFX_WideString& sError) {
1766 CJS_Context* pContext = (CJS_Context*)cc; 1762 CJS_Context* pContext = (CJS_Context*)cc;
1767 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 1763 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
1768 CJS_EventHandler* pEvent = pContext->GetEventHandler(); 1764 CJS_EventHandler* pEvent = pContext->GetEventHandler();
1769 1765
1770 if (params.size() != 4) { 1766 if (params.size() != 4) {
1771 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 1767 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1772 return FALSE; 1768 return FALSE;
1773 } 1769 }
1774 1770
1775 if (!pEvent->m_pValue) 1771 if (!pEvent->m_pValue)
1776 return FALSE; 1772 return FALSE;
1777 if (pEvent->Value().IsEmpty()) 1773 if (pEvent->Value().IsEmpty())
1778 return TRUE; 1774 return TRUE;
1779 double dEentValue = 1775 double dEentValue =
1780 atof(CFX_ByteString::FromUnicode(pEvent->Value()).c_str()); 1776 atof(CFX_ByteString::FromUnicode(pEvent->Value()).c_str());
1781 FX_BOOL bGreaterThan = params[0].ToBool(pRuntime->GetIsolate()); 1777 FX_BOOL bGreaterThan = params[0].ToBool(pRuntime);
1782 double dGreaterThan = params[1].ToDouble(pRuntime->GetIsolate()); 1778 double dGreaterThan = params[1].ToDouble(pRuntime);
1783 FX_BOOL bLessThan = params[2].ToBool(pRuntime->GetIsolate()); 1779 FX_BOOL bLessThan = params[2].ToBool(pRuntime);
1784 double dLessThan = params[3].ToDouble(pRuntime->GetIsolate()); 1780 double dLessThan = params[3].ToDouble(pRuntime);
1785 CFX_WideString swMsg; 1781 CFX_WideString swMsg;
1786 1782
1787 if (bGreaterThan && bLessThan) { 1783 if (bGreaterThan && bLessThan) {
1788 if (dEentValue < dGreaterThan || dEentValue > dLessThan) 1784 if (dEentValue < dGreaterThan || dEentValue > dLessThan)
1789 swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE1).c_str(), 1785 swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE1).c_str(),
1790 params[1].ToCFXWideString(pRuntime->GetIsolate()).c_str(), 1786 params[1].ToCFXWideString(pRuntime).c_str(),
1791 params[3].ToCFXWideString(pRuntime->GetIsolate()).c_str()); 1787 params[3].ToCFXWideString(pRuntime).c_str());
1792 } else if (bGreaterThan) { 1788 } else if (bGreaterThan) {
1793 if (dEentValue < dGreaterThan) 1789 if (dEentValue < dGreaterThan)
1794 swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE2).c_str(), 1790 swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE2).c_str(),
1795 params[1].ToCFXWideString(pRuntime->GetIsolate()).c_str()); 1791 params[1].ToCFXWideString(pRuntime).c_str());
1796 } else if (bLessThan) { 1792 } else if (bLessThan) {
1797 if (dEentValue > dLessThan) 1793 if (dEentValue > dLessThan)
1798 swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE3).c_str(), 1794 swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE3).c_str(),
1799 params[3].ToCFXWideString(pRuntime->GetIsolate()).c_str()); 1795 params[3].ToCFXWideString(pRuntime).c_str());
1800 } 1796 }
1801 1797
1802 if (!swMsg.IsEmpty()) { 1798 if (!swMsg.IsEmpty()) {
1803 AlertIfPossible(pContext, swMsg.c_str()); 1799 AlertIfPossible(pContext, swMsg.c_str());
1804 pEvent->Rc() = FALSE; 1800 pEvent->Rc() = FALSE;
1805 } 1801 }
1806 return TRUE; 1802 return TRUE;
1807 } 1803 }
1808 1804
1809 FX_BOOL CJS_PublicMethods::AFExtractNums(IJS_Context* cc, 1805 FX_BOOL CJS_PublicMethods::AFExtractNums(IJS_Context* cc,
1810 const std::vector<CJS_Value>& params, 1806 const std::vector<CJS_Value>& params,
1811 CJS_Value& vRet, 1807 CJS_Value& vRet,
1812 CFX_WideString& sError) { 1808 CFX_WideString& sError) {
1813 CJS_Context* pContext = (CJS_Context*)cc; 1809 CJS_Context* pContext = (CJS_Context*)cc;
1814 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 1810 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
1815 1811
1816 if (params.size() != 1) { 1812 if (params.size() != 1) {
1817 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 1813 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1818 return FALSE; 1814 return FALSE;
1819 } 1815 }
1820 1816
1821 CJS_Array nums; 1817 CJS_Array nums;
1822 CFX_WideString str = params[0].ToCFXWideString(pRuntime->GetIsolate()); 1818 CFX_WideString str = params[0].ToCFXWideString(pRuntime);
1823 CFX_WideString sPart; 1819 CFX_WideString sPart;
1824 1820
1825 if (str.GetAt(0) == L'.' || str.GetAt(0) == L',') 1821 if (str.GetAt(0) == L'.' || str.GetAt(0) == L',')
1826 str = L"0" + str; 1822 str = L"0" + str;
1827 1823
1828 int nIndex = 0; 1824 int nIndex = 0;
1829 for (int i = 0, sz = str.GetLength(); i < sz; i++) { 1825 for (int i = 0, sz = str.GetLength(); i < sz; i++) {
1830 FX_WCHAR wc = str.GetAt(i); 1826 FX_WCHAR wc = str.GetAt(i);
1831 if (FXSYS_iswdigit(wc)) { 1827 if (FXSYS_iswdigit(wc)) {
1832 sPart += wc; 1828 sPart += wc;
1833 } else { 1829 } else {
1834 if (sPart.GetLength() > 0) { 1830 if (sPart.GetLength() > 0) {
1835 nums.SetElement(pRuntime->GetIsolate(), nIndex, 1831 nums.SetElement(pRuntime, nIndex, CJS_Value(pRuntime, sPart.c_str()));
1836 CJS_Value(pRuntime, sPart.c_str()));
1837 sPart = L""; 1832 sPart = L"";
1838 nIndex++; 1833 nIndex++;
1839 } 1834 }
1840 } 1835 }
1841 } 1836 }
1842 1837
1843 if (sPart.GetLength() > 0) { 1838 if (sPart.GetLength() > 0) {
1844 nums.SetElement(pRuntime->GetIsolate(), nIndex, 1839 nums.SetElement(pRuntime, nIndex, CJS_Value(pRuntime, sPart.c_str()));
1845 CJS_Value(pRuntime, sPart.c_str()));
1846 } 1840 }
1847 1841
1848 if (nums.GetLength() > 0) 1842 if (nums.GetLength(pRuntime) > 0)
1849 vRet = CJS_Value(pRuntime, nums); 1843 vRet = CJS_Value(pRuntime, nums);
1850 else 1844 else
1851 vRet.SetNull(pRuntime); 1845 vRet.SetNull(pRuntime);
1852 1846
1853 return TRUE; 1847 return TRUE;
1854 } 1848 }
OLDNEW
« no previous file with comments | « fpdfsdk/javascript/JS_Value.cpp ('k') | fpdfsdk/javascript/app.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698