diff options
Diffstat (limited to 'fpdfsdk/javascript/PublicMethods.cpp')
-rw-r--r-- | fpdfsdk/javascript/PublicMethods.cpp | 139 |
1 files changed, 81 insertions, 58 deletions
diff --git a/fpdfsdk/javascript/PublicMethods.cpp b/fpdfsdk/javascript/PublicMethods.cpp index aa0efb1fa6..f1e23dbef5 100644 --- a/fpdfsdk/javascript/PublicMethods.cpp +++ b/fpdfsdk/javascript/PublicMethods.cpp @@ -163,10 +163,10 @@ CJS_Array CJS_PublicMethods::AF_MakeArrayFromList(CJS_Runtime* pRuntime, CJS_Value val) { CJS_Array StrArray; if (val.IsArrayObject()) { - val.ConvertToArray(StrArray); + val.ConvertToArray(pRuntime->GetIsolate(), StrArray); return StrArray; } - CFX_WideString wsStr = val.ToCFXWideString(); + CFX_WideString wsStr = val.ToCFXWideString(pRuntime->GetIsolate()); CFX_ByteString t = CFX_ByteString::FromUnicode(wsStr); const char* p = t.c_str(); @@ -743,12 +743,13 @@ FX_BOOL CJS_PublicMethods::AFNumber_Format(IJS_Context* cc, if (strValue.IsEmpty()) return TRUE; - int iDec = params[0].ToInt(); - int iSepStyle = params[1].ToInt(); - int iNegStyle = params[2].ToInt(); + int iDec = params[0].ToInt(pRuntime->GetIsolate()); + int iSepStyle = params[1].ToInt(pRuntime->GetIsolate()); + int iNegStyle = params[2].ToInt(pRuntime->GetIsolate()); // params[3] is iCurrStyle, it's not used. - CFX_WideString wstrCurrency = params[4].ToCFXWideString(); - FX_BOOL bCurrencyPrepend = params[5].ToBool(); + CFX_WideString wstrCurrency = + params[4].ToCFXWideString(pRuntime->GetIsolate()); + FX_BOOL bCurrencyPrepend = params[5].ToBool(pRuntime->GetIsolate()); if (iDec < 0) iDec = -iDec; @@ -837,11 +838,11 @@ FX_BOOL CJS_PublicMethods::AFNumber_Format(IJS_Context* cc, if (Field* fTarget = pEvent->Target_Field()) { CJS_Array arColor; CJS_Value vColElm(pRuntime); - vColElm = L"RGB"; + vColElm = CJS_Value(pRuntime, L"RGB"); arColor.SetElement(pRuntime->GetIsolate(), 0, vColElm); - vColElm = 1; + vColElm = CJS_Value(pRuntime, 1); arColor.SetElement(pRuntime->GetIsolate(), 1, vColElm); - vColElm = 0; + vColElm = CJS_Value(pRuntime, 0); arColor.SetElement(pRuntime->GetIsolate(), 2, vColElm); arColor.SetElement(pRuntime->GetIsolate(), 3, vColElm); @@ -857,9 +858,9 @@ FX_BOOL CJS_PublicMethods::AFNumber_Format(IJS_Context* cc, if (Field* fTarget = pEvent->Target_Field()) { CJS_Array arColor; CJS_Value vColElm(pRuntime); - vColElm = L"RGB"; + vColElm = CJS_Value(pRuntime, L"RGB"); arColor.SetElement(pRuntime->GetIsolate(), 0, vColElm); - vColElm = 0; + vColElm = CJS_Value(pRuntime, 0); arColor.SetElement(pRuntime->GetIsolate(), 1, vColElm); arColor.SetElement(pRuntime->GetIsolate(), 2, vColElm); arColor.SetElement(pRuntime->GetIsolate(), 3, vColElm); @@ -869,7 +870,7 @@ FX_BOOL CJS_PublicMethods::AFNumber_Format(IJS_Context* cc, fTarget->textColor(cc, vProp, sError); CJS_Array aProp; - vProp.ConvertToArray(aProp); + vProp.GetJSValue()->ConvertToArray(pRuntime->GetIsolate(), aProp); CPWL_Color crProp; CPWL_Color crColor; @@ -940,7 +941,8 @@ FX_BOOL CJS_PublicMethods::AFNumber_Keystroke( } } - int iSepStyle = params[1].ToInt(); + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); + int iSepStyle = params[1].ToInt(pRuntime->GetIsolate()); if (iSepStyle < 0 || iSepStyle > 3) iSepStyle = 0; const FX_WCHAR cSep = iSepStyle < 2 ? L'.' : L','; @@ -1000,6 +1002,7 @@ FX_BOOL CJS_PublicMethods::AFPercent_Format( CFX_WideString& sError) { #if _FX_OS_ != _FX_ANDROID_ CJS_Context* pContext = (CJS_Context*)cc; + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); CJS_EventHandler* pEvent = pContext->GetEventHandler(); if (params.size() != 2) { @@ -1014,11 +1017,11 @@ FX_BOOL CJS_PublicMethods::AFPercent_Format( if (strValue.IsEmpty()) return TRUE; - int iDec = params[0].ToInt(); + int iDec = params[0].ToInt(pRuntime->GetIsolate()); if (iDec < 0) iDec = -iDec; - int iSepStyle = params[1].ToInt(); + int iSepStyle = params[1].ToInt(pRuntime->GetIsolate()); if (iSepStyle < 0 || iSepStyle > 3) iSepStyle = 0; @@ -1099,6 +1102,7 @@ FX_BOOL CJS_PublicMethods::AFDate_FormatEx(IJS_Context* cc, CJS_Value& vRet, CFX_WideString& sError) { CJS_Context* pContext = (CJS_Context*)cc; + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); CJS_EventHandler* pEvent = pContext->GetEventHandler(); if (params.size() != 1) { @@ -1113,7 +1117,7 @@ FX_BOOL CJS_PublicMethods::AFDate_FormatEx(IJS_Context* cc, if (strValue.IsEmpty()) return TRUE; - CFX_WideString sFormat = params[0].ToCFXWideString(); + CFX_WideString sFormat = params[0].ToCFXWideString(pRuntime->GetIsolate()); double dDate = 0.0f; if (strValue.Find(L"GMT") != -1) { @@ -1199,6 +1203,7 @@ FX_BOOL CJS_PublicMethods::AFDate_KeystrokeEx( CJS_Value& vRet, CFX_WideString& sError) { CJS_Context* pContext = (CJS_Context*)cc; + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); CJS_EventHandler* pEvent = pContext->GetEventHandler(); if (params.size() != 1) { @@ -1213,7 +1218,7 @@ FX_BOOL CJS_PublicMethods::AFDate_KeystrokeEx( if (strValue.IsEmpty()) return TRUE; - CFX_WideString sFormat = params[0].ToCFXWideString(); + CFX_WideString sFormat = params[0].ToCFXWideString(pRuntime->GetIsolate()); bool bWrongFormat = FALSE; double dRet = MakeRegularDate(strValue, sFormat, &bWrongFormat); if (bWrongFormat || JS_PortIsNan(dRet)) { @@ -1238,7 +1243,8 @@ FX_BOOL CJS_PublicMethods::AFDate_Format(IJS_Context* cc, return FALSE; } - int iIndex = params[0].ToInt(); + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); + int iIndex = params[0].ToInt(pRuntime->GetIsolate()); const FX_WCHAR* cFormats[] = {L"m/d", L"m/d/yy", L"mm/dd/yy", @@ -1275,7 +1281,8 @@ FX_BOOL CJS_PublicMethods::AFDate_Keystroke( return FALSE; } - int iIndex = params[0].ToInt(); + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); + int iIndex = params[0].ToInt(pRuntime->GetIsolate()); const FX_WCHAR* cFormats[] = {L"m/d", L"m/d/yy", L"mm/dd/yy", @@ -1311,7 +1318,8 @@ FX_BOOL CJS_PublicMethods::AFTime_Format(IJS_Context* cc, return FALSE; } - int iIndex = params[0].ToInt(); + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); + int iIndex = params[0].ToInt(pRuntime->GetIsolate()); const FX_WCHAR* cFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss", L"h:MM:ss tt"}; @@ -1335,7 +1343,8 @@ FX_BOOL CJS_PublicMethods::AFTime_Keystroke( return FALSE; } - int iIndex = params[0].ToInt(); + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); + int iIndex = params[0].ToInt(pRuntime->GetIsolate()); const FX_WCHAR* cFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss", L"h:MM:ss tt"}; @@ -1370,7 +1379,6 @@ FX_BOOL CJS_PublicMethods::AFSpecial_Format( CJS_Value& vRet, CFX_WideString& sError) { CJS_Context* pContext = (CJS_Context*)cc; - if (params.size() != 1) { sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); return FALSE; @@ -1380,9 +1388,10 @@ FX_BOOL CJS_PublicMethods::AFSpecial_Format( if (!pEvent->m_pValue) return FALSE; + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); CFX_WideString wsSource = pEvent->Value(); CFX_WideString wsFormat; - switch (params[0].ToInt()) { + switch (params[0].ToInt(pRuntime->GetIsolate())) { case 0: wsFormat = L"99999"; break; @@ -1411,6 +1420,7 @@ FX_BOOL CJS_PublicMethods::AFSpecial_KeystrokeEx( CJS_Value& vRet, CFX_WideString& sError) { CJS_Context* pContext = (CJS_Context*)cc; + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); CJS_EventHandler* pEvent = pContext->GetEventHandler(); if (params.size() < 1) { @@ -1422,7 +1432,7 @@ FX_BOOL CJS_PublicMethods::AFSpecial_KeystrokeEx( return FALSE; CFX_WideString& valEvent = pEvent->Value(); - CFX_WideString wstrMask = params[0].ToCFXWideString(); + CFX_WideString wstrMask = params[0].ToCFXWideString(pRuntime->GetIsolate()); if (wstrMask.IsEmpty()) return TRUE; @@ -1509,7 +1519,8 @@ FX_BOOL CJS_PublicMethods::AFSpecial_Keystroke( return FALSE; const char* cFormat = ""; - switch (params[0].ToInt()) { + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); + switch (params[0].ToInt(pRuntime->GetIsolate())) { case 0: cFormat = "99999"; break; @@ -1537,6 +1548,7 @@ FX_BOOL CJS_PublicMethods::AFMergeChange(IJS_Context* cc, CJS_Value& vRet, CFX_WideString& sError) { CJS_Context* pContext = (CJS_Context*)cc; + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); CJS_EventHandler* pEventHandler = pContext->GetEventHandler(); if (params.size() != 1) { @@ -1549,7 +1561,7 @@ FX_BOOL CJS_PublicMethods::AFMergeChange(IJS_Context* cc, swValue = pEventHandler->Value(); if (pEventHandler->WillCommit()) { - vRet = swValue.c_str(); + vRet = CJS_Value(pRuntime, swValue.c_str()); return TRUE; } @@ -1567,8 +1579,8 @@ FX_BOOL CJS_PublicMethods::AFMergeChange(IJS_Context* cc, else postfix = L""; - vRet = (prefix + pEventHandler->Change() + postfix).c_str(); - + vRet = + CJS_Value(pRuntime, (prefix + pEventHandler->Change() + postfix).c_str()); return TRUE; } @@ -1577,15 +1589,15 @@ FX_BOOL CJS_PublicMethods::AFParseDateEx(IJS_Context* cc, CJS_Value& vRet, CFX_WideString& sError) { CJS_Context* pContext = (CJS_Context*)cc; - ASSERT(pContext); + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); if (params.size() != 2) { sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); return FALSE; } - CFX_WideString sValue = params[0].ToCFXWideString(); - CFX_WideString sFormat = params[1].ToCFXWideString(); + CFX_WideString sValue = params[0].ToCFXWideString(pRuntime->GetIsolate()); + CFX_WideString sFormat = params[1].ToCFXWideString(pRuntime->GetIsolate()); double dDate = MakeRegularDate(sValue, sFormat, nullptr); @@ -1597,7 +1609,7 @@ FX_BOOL CJS_PublicMethods::AFParseDateEx(IJS_Context* cc, return FALSE; } - vRet = dDate; + vRet = CJS_Value(pRuntime, dDate); return TRUE; } @@ -1605,16 +1617,20 @@ FX_BOOL CJS_PublicMethods::AFSimple(IJS_Context* cc, const std::vector<CJS_Value>& params, CJS_Value& vRet, CFX_WideString& sError) { - if (params.size() != 3) { - CJS_Context* pContext = (CJS_Context*)cc; - ASSERT(pContext); + CJS_Context* pContext = (CJS_Context*)cc; + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); + if (params.size() != 3) { sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); return FALSE; } - vRet = (double)AF_Simple(params[0].ToCFXWideString().c_str(), - params[1].ToDouble(), params[2].ToDouble()); + vRet = CJS_Value( + pRuntime, static_cast<double>(AF_Simple( + params[0].ToCFXWideString(pRuntime->GetIsolate()).c_str(), + params[1].ToDouble(pRuntime->GetIsolate()), + params[2].ToDouble(pRuntime->GetIsolate())))); + return TRUE; } @@ -1623,16 +1639,19 @@ FX_BOOL CJS_PublicMethods::AFMakeNumber(IJS_Context* cc, CJS_Value& vRet, CFX_WideString& sError) { CJS_Context* pContext = (CJS_Context*)cc; + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); + if (params.size() != 1) { sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); return FALSE; } - CFX_WideString ws = params[0].ToCFXWideString(); + + CFX_WideString ws = params[0].ToCFXWideString(pRuntime->GetIsolate()); ws.Replace(L",", L"."); - vRet = ws.c_str(); - vRet.MaybeCoerceToNumber(); + vRet = CJS_Value(pRuntime, ws.c_str()); + vRet.MaybeCoerceToNumber(pRuntime->GetIsolate()); if (vRet.GetType() != CJS_Value::VT_number) - vRet = 0; + vRet = CJS_Value(pRuntime, 0); return TRUE; } @@ -1642,6 +1661,8 @@ FX_BOOL CJS_PublicMethods::AFSimple_Calculate( CJS_Value& vRet, CFX_WideString& sError) { CJS_Context* pContext = (CJS_Context*)cc; + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); + if (params.size() != 2) { sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); return FALSE; @@ -1657,17 +1678,17 @@ FX_BOOL CJS_PublicMethods::AFSimple_Calculate( CPDFSDK_InterForm* pReaderInterForm = pReaderDoc->GetInterForm(); CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm(); - CFX_WideString sFunction = params[0].ToCFXWideString(); + CFX_WideString sFunction = params[0].ToCFXWideString(pRuntime->GetIsolate()); double dValue = wcscmp(sFunction.c_str(), L"PRD") == 0 ? 1.0 : 0.0; - CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); CJS_Array FieldNameArray = AF_MakeArrayFromList(pRuntime, params1); int nFieldsCount = 0; for (int i = 0, isz = FieldNameArray.GetLength(); i < isz; i++) { CJS_Value jsValue(pRuntime); FieldNameArray.GetElement(pRuntime->GetIsolate(), i, jsValue); - CFX_WideString wsFieldName = jsValue.ToCFXWideString(); + CFX_WideString wsFieldName = + jsValue.ToCFXWideString(pRuntime->GetIsolate()); for (int j = 0, jsz = pInterForm->CountFields(wsFieldName); j < jsz; j++) { if (CPDF_FormField* pFormField = pInterForm->GetField(j, wsFieldName)) { @@ -1728,7 +1749,8 @@ FX_BOOL CJS_PublicMethods::AFSimple_Calculate( FXSYS_pow((double)10, (double)6); CJS_Value jsValue(pRuntime, dValue); if (pContext->GetEventHandler()->m_pValue) - pContext->GetEventHandler()->Value() = jsValue.ToCFXWideString(); + pContext->GetEventHandler()->Value() = + jsValue.ToCFXWideString(pRuntime->GetIsolate()); return TRUE; } @@ -1742,6 +1764,7 @@ FX_BOOL CJS_PublicMethods::AFRange_Validate( CJS_Value& vRet, CFX_WideString& sError) { CJS_Context* pContext = (CJS_Context*)cc; + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); CJS_EventHandler* pEvent = pContext->GetEventHandler(); if (params.size() != 4) { @@ -1755,25 +1778,25 @@ FX_BOOL CJS_PublicMethods::AFRange_Validate( return TRUE; double dEentValue = atof(CFX_ByteString::FromUnicode(pEvent->Value()).c_str()); - FX_BOOL bGreaterThan = params[0].ToBool(); - double dGreaterThan = params[1].ToDouble(); - FX_BOOL bLessThan = params[2].ToBool(); - double dLessThan = params[3].ToDouble(); + FX_BOOL bGreaterThan = params[0].ToBool(pRuntime->GetIsolate()); + double dGreaterThan = params[1].ToDouble(pRuntime->GetIsolate()); + FX_BOOL bLessThan = params[2].ToBool(pRuntime->GetIsolate()); + double dLessThan = params[3].ToDouble(pRuntime->GetIsolate()); CFX_WideString swMsg; if (bGreaterThan && bLessThan) { if (dEentValue < dGreaterThan || dEentValue > dLessThan) swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE1).c_str(), - params[1].ToCFXWideString().c_str(), - params[3].ToCFXWideString().c_str()); + params[1].ToCFXWideString(pRuntime->GetIsolate()).c_str(), + params[3].ToCFXWideString(pRuntime->GetIsolate()).c_str()); } else if (bGreaterThan) { if (dEentValue < dGreaterThan) swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE2).c_str(), - params[1].ToCFXWideString().c_str()); + params[1].ToCFXWideString(pRuntime->GetIsolate()).c_str()); } else if (bLessThan) { if (dEentValue > dLessThan) swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE3).c_str(), - params[3].ToCFXWideString().c_str()); + params[3].ToCFXWideString(pRuntime->GetIsolate()).c_str()); } if (!swMsg.IsEmpty()) { @@ -1788,15 +1811,15 @@ FX_BOOL CJS_PublicMethods::AFExtractNums(IJS_Context* cc, CJS_Value& vRet, CFX_WideString& sError) { CJS_Context* pContext = (CJS_Context*)cc; + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); + if (params.size() != 1) { sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); return FALSE; } - CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); CJS_Array nums; - - CFX_WideString str = params[0].ToCFXWideString(); + CFX_WideString str = params[0].ToCFXWideString(pRuntime->GetIsolate()); CFX_WideString sPart; if (str.GetAt(0) == L'.' || str.GetAt(0) == L',') @@ -1825,7 +1848,7 @@ FX_BOOL CJS_PublicMethods::AFExtractNums(IJS_Context* cc, if (nums.GetLength() > 0) vRet = CJS_Value(pRuntime, nums); else - vRet.SetNull(); + vRet.SetNull(pRuntime); return TRUE; } |