diff options
author | Tom Sepez <tsepez@chromium.org> | 2015-10-08 12:04:40 -0700 |
---|---|---|
committer | Tom Sepez <tsepez@chromium.org> | 2015-10-08 12:04:40 -0700 |
commit | 287b63d9ab410783d71cf37291f09fd57d3059b4 (patch) | |
tree | f7694e057d86f98833830ea1a34c2a2bbdca8399 /fpdfsdk/src/javascript/PublicMethods.cpp | |
parent | 4fa0e27ba39f49ba92fb4c160ab836a6f1dd2893 (diff) | |
download | pdfium-287b63d9ab410783d71cf37291f09fd57d3059b4.tar.xz |
Wean CJS_Value off of v8::Isolate.
CJS_Values should belong to CJS_Runtimes so that we may
eventually cram much of the v8 dependencies down into fxjs.
This is a first step; the remaining split in this code between
isolate and CJS_Runtime goes away when fxjs provides a CFXJS_Runtime
object, and the CJS_Runtime is-a/has-a CFXJS_Runtime. But that can't
happen until this is resolved.
R=thestig@chromium.org
Review URL: https://codereview.chromium.org/1394103002 .
Diffstat (limited to 'fpdfsdk/src/javascript/PublicMethods.cpp')
-rw-r--r-- | fpdfsdk/src/javascript/PublicMethods.cpp | 136 |
1 files changed, 42 insertions, 94 deletions
diff --git a/fpdfsdk/src/javascript/PublicMethods.cpp b/fpdfsdk/src/javascript/PublicMethods.cpp index 528577d9ec..4743d3dff3 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; @@ -1031,8 +1016,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; @@ -1042,7 +1027,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(); @@ -1052,8 +1037,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; @@ -1061,11 +1046,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; @@ -1074,7 +1059,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(); @@ -1470,12 +1455,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; } @@ -1500,8 +1481,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); } @@ -1510,12 +1491,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; } @@ -1540,8 +1517,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); } @@ -1550,11 +1527,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; } @@ -1567,8 +1541,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); } @@ -1576,10 +1550,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; } @@ -1592,8 +1564,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); } @@ -1760,24 +1732,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(); @@ -1808,9 +1774,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); } @@ -1922,45 +1886,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(); @@ -2022,7 +1972,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(); @@ -2083,16 +2033,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; @@ -2107,7 +2055,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++; } @@ -2115,7 +2063,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) |