| Index: fpdfsdk/src/javascript/PublicMethods.cpp
|
| diff --git a/fpdfsdk/src/javascript/PublicMethods.cpp b/fpdfsdk/src/javascript/PublicMethods.cpp
|
| index 4e068ec568418426b3be28ce8f3617d2e50cf053..0b3b38f8f184dcb42436308e7ad5ec5648776425 100644
|
| --- a/fpdfsdk/src/javascript/PublicMethods.cpp
|
| +++ b/fpdfsdk/src/javascript/PublicMethods.cpp
|
| @@ -19,19 +19,6 @@
|
| #include "resource.h"
|
| #include "util.h"
|
|
|
| -static v8::Isolate* GetIsolate(IJS_Context* cc) {
|
| - CJS_Context* pContext = (CJS_Context*)cc;
|
| - ASSERT(pContext != NULL);
|
| -
|
| - CJS_Runtime* pRuntime = pContext->GetJSRuntime();
|
| - ASSERT(pRuntime != NULL);
|
| -
|
| - return pRuntime->GetIsolate();
|
| -}
|
| -
|
| -/* -------------------------------- CJS_PublicMethods
|
| - * -------------------------------- */
|
| -
|
| #define DOUBLE_CORRECT 0.000000000000001
|
|
|
| BEGIN_JS_STATIC_GLOBAL_FUN(CJS_PublicMethods)
|
| @@ -346,9 +333,9 @@ FX_BOOL CJS_PublicMethods::ConvertStringToNumber(const FX_WCHAR* swSource,
|
| return bAllDigits;
|
| }
|
|
|
| -CJS_Array CJS_PublicMethods::AF_MakeArrayFromList(v8::Isolate* isolate,
|
| +CJS_Array CJS_PublicMethods::AF_MakeArrayFromList(CJS_Runtime* pRuntime,
|
| CJS_Value val) {
|
| - CJS_Array StrArray(isolate);
|
| + CJS_Array StrArray(pRuntime);
|
| if (val.IsArrayObject()) {
|
| val.ConvertToArray(StrArray);
|
| return StrArray;
|
| @@ -363,14 +350,14 @@ CJS_Array CJS_PublicMethods::AF_MakeArrayFromList(v8::Isolate* isolate,
|
| while (*p) {
|
| const char* pTemp = strchr(p, ch);
|
| if (pTemp == NULL) {
|
| - StrArray.SetElement(nIndex, CJS_Value(isolate, StrTrim(p).c_str()));
|
| + StrArray.SetElement(nIndex, CJS_Value(pRuntime, StrTrim(p).c_str()));
|
| break;
|
| } else {
|
| char* pSub = new char[pTemp - p + 1];
|
| strncpy(pSub, p, pTemp - p);
|
| *(pSub + (pTemp - p)) = '\0';
|
|
|
| - StrArray.SetElement(nIndex, CJS_Value(isolate, StrTrim(pSub).c_str()));
|
| + StrArray.SetElement(nIndex, CJS_Value(pRuntime, StrTrim(pSub).c_str()));
|
| delete[] pSub;
|
|
|
| nIndex++;
|
| @@ -911,21 +898,19 @@ FX_BOOL CJS_PublicMethods::AFNumber_Format(IJS_Context* cc,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| #if _FX_OS_ != _FX_ANDROID_
|
| - v8::Isolate* isolate = ::GetIsolate(cc);
|
| CJS_Context* pContext = (CJS_Context*)cc;
|
| - ASSERT(pContext != NULL);
|
| - CJS_EventHandler* pEvent = pContext->GetEventHandler();
|
| - ASSERT(pEvent != NULL);
|
| -
|
| if (params.size() != 6) {
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
|
| return FALSE;
|
| }
|
| +
|
| + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
|
| + CJS_EventHandler* pEvent = pContext->GetEventHandler();
|
| if (!pEvent->m_pValue)
|
| return FALSE;
|
| +
|
| CFX_WideString& Value = pEvent->Value();
|
| CFX_ByteString strValue = StrTrim(CFX_ByteString::FromUnicode(Value));
|
| -
|
| if (strValue.IsEmpty())
|
| return TRUE;
|
|
|
| @@ -1032,8 +1017,8 @@ FX_BOOL CJS_PublicMethods::AFNumber_Format(IJS_Context* cc,
|
| }
|
| if (iNegStyle == 1 || iNegStyle == 3) {
|
| if (Field* fTarget = pEvent->Target_Field()) {
|
| - CJS_Array arColor(isolate);
|
| - CJS_Value vColElm(isolate);
|
| + CJS_Array arColor(pRuntime);
|
| + CJS_Value vColElm(pRuntime);
|
| vColElm = L"RGB";
|
| arColor.SetElement(0, vColElm);
|
| vColElm = 1;
|
| @@ -1043,7 +1028,7 @@ FX_BOOL CJS_PublicMethods::AFNumber_Format(IJS_Context* cc,
|
|
|
| arColor.SetElement(3, vColElm);
|
|
|
| - CJS_PropValue vProp(isolate);
|
| + CJS_PropValue vProp(pRuntime);
|
| vProp.StartGetting();
|
| vProp << arColor;
|
| vProp.StartSetting();
|
| @@ -1053,8 +1038,8 @@ FX_BOOL CJS_PublicMethods::AFNumber_Format(IJS_Context* cc,
|
| } else {
|
| if (iNegStyle == 1 || iNegStyle == 3) {
|
| if (Field* fTarget = pEvent->Target_Field()) {
|
| - CJS_Array arColor(isolate);
|
| - CJS_Value vColElm(isolate);
|
| + CJS_Array arColor(pRuntime);
|
| + CJS_Value vColElm(pRuntime);
|
| vColElm = L"RGB";
|
| arColor.SetElement(0, vColElm);
|
| vColElm = 0;
|
| @@ -1062,11 +1047,11 @@ FX_BOOL CJS_PublicMethods::AFNumber_Format(IJS_Context* cc,
|
| arColor.SetElement(2, vColElm);
|
| arColor.SetElement(3, vColElm);
|
|
|
| - CJS_PropValue vProp(isolate);
|
| + CJS_PropValue vProp(pRuntime);
|
| vProp.StartGetting();
|
| fTarget->textColor(cc, vProp, sError);
|
|
|
| - CJS_Array aProp(isolate);
|
| + CJS_Array aProp(pRuntime);
|
| vProp.ConvertToArray(aProp);
|
|
|
| CPWL_Color crProp;
|
| @@ -1075,7 +1060,7 @@ FX_BOOL CJS_PublicMethods::AFNumber_Format(IJS_Context* cc,
|
| color::ConvertArrayToPWLColor(arColor, crColor);
|
|
|
| if (crColor != crProp) {
|
| - CJS_PropValue vProp2(isolate);
|
| + CJS_PropValue vProp2(pRuntime);
|
| vProp2.StartGetting();
|
| vProp2 << arColor;
|
| vProp2.StartSetting();
|
| @@ -1472,12 +1457,8 @@ FX_BOOL CJS_PublicMethods::AFDate_Format(IJS_Context* cc,
|
| const CJS_Parameters& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| - v8::Isolate* isolate = ::GetIsolate(cc);
|
| -
|
| + CJS_Context* pContext = (CJS_Context*)cc;
|
| if (params.size() != 1) {
|
| - CJS_Context* pContext = (CJS_Context*)cc;
|
| - ASSERT(pContext != NULL);
|
| -
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
|
| return FALSE;
|
| }
|
| @@ -1502,8 +1483,8 @@ FX_BOOL CJS_PublicMethods::AFDate_Format(IJS_Context* cc,
|
| iIndex = 0;
|
|
|
| CJS_Parameters newParams;
|
| - CJS_Value val(isolate, cFormats[iIndex]);
|
| - newParams.push_back(val);
|
| + newParams.push_back(
|
| + CJS_Value(CJS_Runtime::FromContext(cc), cFormats[iIndex]));
|
| return AFDate_FormatEx(cc, newParams, vRet, sError);
|
| }
|
|
|
| @@ -1512,12 +1493,8 @@ FX_BOOL CJS_PublicMethods::AFDate_Keystroke(IJS_Context* cc,
|
| const CJS_Parameters& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| - v8::Isolate* isolate = ::GetIsolate(cc);
|
| -
|
| + CJS_Context* pContext = (CJS_Context*)cc;
|
| if (params.size() != 1) {
|
| - CJS_Context* pContext = (CJS_Context*)cc;
|
| - ASSERT(pContext != NULL);
|
| -
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
|
| return FALSE;
|
| }
|
| @@ -1542,8 +1519,8 @@ FX_BOOL CJS_PublicMethods::AFDate_Keystroke(IJS_Context* cc,
|
| iIndex = 0;
|
|
|
| CJS_Parameters newParams;
|
| - CJS_Value val(isolate, cFormats[iIndex]);
|
| - newParams.push_back(val);
|
| + newParams.push_back(
|
| + CJS_Value(CJS_Runtime::FromContext(cc), cFormats[iIndex]));
|
| return AFDate_KeystrokeEx(cc, newParams, vRet, sError);
|
| }
|
|
|
| @@ -1552,11 +1529,8 @@ FX_BOOL CJS_PublicMethods::AFTime_Format(IJS_Context* cc,
|
| const CJS_Parameters& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| - v8::Isolate* isolate = ::GetIsolate(cc);
|
| -
|
| + CJS_Context* pContext = (CJS_Context*)cc;
|
| if (params.size() != 1) {
|
| - CJS_Context* pContext = (CJS_Context*)cc;
|
| - ASSERT(pContext != NULL);
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
|
| return FALSE;
|
| }
|
| @@ -1569,8 +1543,8 @@ FX_BOOL CJS_PublicMethods::AFTime_Format(IJS_Context* cc,
|
| iIndex = 0;
|
|
|
| CJS_Parameters newParams;
|
| - CJS_Value val(isolate, cFormats[iIndex]);
|
| - newParams.push_back(val);
|
| + newParams.push_back(
|
| + CJS_Value(CJS_Runtime::FromContext(cc), cFormats[iIndex]));
|
| return AFDate_FormatEx(cc, newParams, vRet, sError);
|
| }
|
|
|
| @@ -1578,10 +1552,8 @@ FX_BOOL CJS_PublicMethods::AFTime_Keystroke(IJS_Context* cc,
|
| const CJS_Parameters& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| - v8::Isolate* isolate = ::GetIsolate(cc);
|
| + CJS_Context* pContext = (CJS_Context*)cc;
|
| if (params.size() != 1) {
|
| - CJS_Context* pContext = (CJS_Context*)cc;
|
| - ASSERT(pContext != NULL);
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
|
| return FALSE;
|
| }
|
| @@ -1594,8 +1566,8 @@ FX_BOOL CJS_PublicMethods::AFTime_Keystroke(IJS_Context* cc,
|
| iIndex = 0;
|
|
|
| CJS_Parameters newParams;
|
| - CJS_Value val(isolate, cFormats[iIndex]);
|
| - newParams.push_back(val);
|
| + newParams.push_back(
|
| + CJS_Value(CJS_Runtime::FromContext(cc), cFormats[iIndex]));
|
| return AFDate_KeystrokeEx(cc, newParams, vRet, sError);
|
| }
|
|
|
| @@ -1762,24 +1734,18 @@ FX_BOOL CJS_PublicMethods::AFSpecial_Keystroke(IJS_Context* cc,
|
| const CJS_Parameters& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| - v8::Isolate* isolate = ::GetIsolate(cc);
|
| -
|
| CJS_Context* pContext = (CJS_Context*)cc;
|
| - ASSERT(pContext != NULL);
|
| - CJS_EventHandler* pEvent = pContext->GetEventHandler();
|
| - ASSERT(pEvent != NULL);
|
| -
|
| if (params.size() != 1) {
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
|
| return FALSE;
|
| }
|
|
|
| - std::string cFormat;
|
| - int iIndex = params[0].ToInt();
|
| -
|
| + CJS_EventHandler* pEvent = pContext->GetEventHandler();
|
| if (!pEvent->m_pValue)
|
| return FALSE;
|
| - // CJS_Value val = pEvent->Value();
|
| +
|
| + std::string cFormat;
|
| + int iIndex = params[0].ToInt();
|
| CFX_WideString& val = pEvent->Value();
|
| std::string strSrc = CFX_ByteString::FromUnicode(val).c_str();
|
| std::wstring wstrChange = pEvent->Change().c_str();
|
| @@ -1810,9 +1776,7 @@ FX_BOOL CJS_PublicMethods::AFSpecial_Keystroke(IJS_Context* cc,
|
| }
|
|
|
| CJS_Parameters params2;
|
| - CJS_Value vMask(isolate, cFormat.c_str());
|
| - params2.push_back(vMask);
|
| -
|
| + params2.push_back(CJS_Value(CJS_Runtime::FromContext(cc), cFormat.c_str()));
|
| return AFSpecial_KeystrokeEx(cc, params2, vRet, sError);
|
| }
|
|
|
| @@ -1924,45 +1888,31 @@ FX_BOOL CJS_PublicMethods::AFSimple_Calculate(IJS_Context* cc,
|
| const CJS_Parameters& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| - v8::Isolate* isolate = ::GetIsolate(cc);
|
| -
|
| CJS_Context* pContext = (CJS_Context*)cc;
|
| - ASSERT(pContext != NULL);
|
| -
|
| if (params.size() != 2) {
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
|
| return FALSE;
|
| }
|
|
|
| CJS_Value params1 = params[1];
|
| -
|
| if (!params1.IsArrayObject() && params1.GetType() != CJS_Value::VT_string) {
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
|
| return FALSE;
|
| }
|
|
|
| CPDFSDK_Document* pReaderDoc = pContext->GetReaderDocument();
|
| - ASSERT(pReaderDoc != NULL);
|
| -
|
| CPDFSDK_InterForm* pReaderInterForm = pReaderDoc->GetInterForm();
|
| - ASSERT(pReaderInterForm != NULL);
|
| -
|
| CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm();
|
| - ASSERT(pInterForm != NULL);
|
|
|
| - double dValue;
|
| CFX_WideString sFunction = params[0].ToCFXWideString();
|
| - if (wcscmp(sFunction.c_str(), L"PRD") == 0)
|
| - dValue = 1.0;
|
| - else
|
| - dValue = 0.0;
|
| -
|
| - CJS_Array FieldNameArray = AF_MakeArrayFromList(isolate, params1);
|
| + 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(isolate);
|
| + CJS_Value jsValue(pRuntime);
|
| FieldNameArray.GetElement(i, jsValue);
|
| CFX_WideString wsFieldName = jsValue.ToCFXWideString();
|
|
|
| @@ -2024,7 +1974,7 @@ FX_BOOL CJS_PublicMethods::AFSimple_Calculate(IJS_Context* cc,
|
|
|
| dValue = (double)floor(dValue * FXSYS_pow((double)10, (double)6) + 0.49) /
|
| FXSYS_pow((double)10, (double)6);
|
| - CJS_Value jsValue(isolate, dValue);
|
| + CJS_Value jsValue(pRuntime, dValue);
|
| if (pContext->GetEventHandler()->m_pValue)
|
| pContext->GetEventHandler()->Value() = jsValue.ToCFXWideString();
|
|
|
| @@ -2085,16 +2035,14 @@ FX_BOOL CJS_PublicMethods::AFExtractNums(IJS_Context* cc,
|
| const CJS_Parameters& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| - v8::Isolate* isolate = ::GetIsolate(cc);
|
| CJS_Context* pContext = (CJS_Context*)cc;
|
| - ASSERT(pContext != NULL);
|
| -
|
| if (params.size() != 1) {
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
|
| return FALSE;
|
| }
|
|
|
| - CJS_Array nums(isolate);
|
| + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
|
| + CJS_Array nums(pRuntime);
|
|
|
| CFX_WideString str = params[0].ToCFXWideString();
|
| CFX_WideString sPart;
|
| @@ -2109,7 +2057,7 @@ FX_BOOL CJS_PublicMethods::AFExtractNums(IJS_Context* cc,
|
| sPart += wc;
|
| } else {
|
| if (sPart.GetLength() > 0) {
|
| - nums.SetElement(nIndex, CJS_Value(isolate, sPart.c_str()));
|
| + nums.SetElement(nIndex, CJS_Value(pRuntime, sPart.c_str()));
|
| sPart = L"";
|
| nIndex++;
|
| }
|
| @@ -2117,7 +2065,7 @@ FX_BOOL CJS_PublicMethods::AFExtractNums(IJS_Context* cc,
|
| }
|
|
|
| if (sPart.GetLength() > 0) {
|
| - nums.SetElement(nIndex, CJS_Value(isolate, sPart.c_str()));
|
| + nums.SetElement(nIndex, CJS_Value(pRuntime, sPart.c_str()));
|
| }
|
|
|
| if (nums.GetLength() > 0)
|
|
|