From f3dc8c6941635e5c4cc20c8388289f6b148dc9eb Mon Sep 17 00:00:00 2001 From: tsepez Date: Wed, 10 Aug 2016 06:29:29 -0700 Subject: Remove backpointer to CJS_Runtime from CJS_Value Review-Url: https://codereview.chromium.org/2227673005 --- fpdfsdk/javascript/Field.cpp | 161 ++++++++++++++++++++++--------------------- 1 file changed, 81 insertions(+), 80 deletions(-) (limited to 'fpdfsdk/javascript/Field.cpp') diff --git a/fpdfsdk/javascript/Field.cpp b/fpdfsdk/javascript/Field.cpp index 34a24666d9..852888179a 100644 --- a/fpdfsdk/javascript/Field.cpp +++ b/fpdfsdk/javascript/Field.cpp @@ -955,18 +955,18 @@ FX_BOOL Field::currentValueIndices(IJS_Context* cc, return FALSE; std::vector array; - if (vp.GetType() == CJS_Value::VT_number) { + if (vp.GetJSValue()->GetType() == CJS_Value::VT_number) { int iSelecting = 0; vp >> iSelecting; array.push_back(iSelecting); - } else if (vp.IsArrayObject()) { + } else if (vp.GetJSValue()->IsArrayObject()) { CJS_Array SelArray; CJS_Value SelValue(pRuntime); int iSelecting; vp >> SelArray; for (int i = 0, sz = SelArray.GetLength(); i < sz; i++) { SelArray.GetElement(pRuntime->GetIsolate(), i, SelValue); - iSelecting = SelValue.ToInt(); + iSelecting = SelValue.ToInt(pRuntime->GetIsolate()); array.push_back(iSelecting); } } @@ -1375,7 +1375,7 @@ FX_BOOL Field::exportValues(IJS_Context* cc, if (!m_bCanSet) return FALSE; - if (!vp.IsArrayObject()) + if (!vp.GetJSValue()->IsArrayObject()) return FALSE; } else { CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); @@ -1444,7 +1444,7 @@ FX_BOOL Field::fillColor(IJS_Context* cc, if (!m_bCanSet) return FALSE; - if (!vp.IsArrayObject()) + if (!vp.GetJSValue()->IsArrayObject()) return FALSE; vp >> crArray; @@ -2084,7 +2084,7 @@ FX_BOOL Field::rect(IJS_Context* cc, if (vp.IsSetting()) { if (!m_bCanSet) return FALSE; - if (!vp.IsArrayObject()) + if (!vp.GetJSValue()->IsArrayObject()) return FALSE; CJS_Array rcArray; @@ -2095,10 +2095,14 @@ FX_BOOL Field::rect(IJS_Context* cc, rcArray.GetElement(pRuntime->GetIsolate(), 3, Lower_Righty); FX_FLOAT pArray[4] = {0.0f, 0.0f, 0.0f, 0.0f}; - pArray[0] = (FX_FLOAT)Upper_Leftx.ToInt(); - pArray[1] = (FX_FLOAT)Lower_Righty.ToInt(); - pArray[2] = (FX_FLOAT)Lower_Rightx.ToInt(); - pArray[3] = (FX_FLOAT)Upper_Lefty.ToInt(); + pArray[0] = + static_cast(Upper_Leftx.ToInt(pRuntime->GetIsolate())); + pArray[1] = + static_cast(Lower_Righty.ToInt(pRuntime->GetIsolate())); + pArray[2] = + static_cast(Lower_Rightx.ToInt(pRuntime->GetIsolate())); + pArray[3] = + static_cast(Upper_Lefty.ToInt(pRuntime->GetIsolate())); CFX_FloatRect crRect(pArray); if (m_bDelay) { @@ -2119,10 +2123,10 @@ FX_BOOL Field::rect(IJS_Context* cc, return FALSE; CFX_FloatRect crRect = pWidget->GetRect(); - Upper_Leftx = (int32_t)crRect.left; - Upper_Lefty = (int32_t)crRect.top; - Lower_Rightx = (int32_t)crRect.right; - Lower_Righty = (int32_t)crRect.bottom; + Upper_Leftx = CJS_Value(pRuntime, static_cast(crRect.left)); + Upper_Lefty = CJS_Value(pRuntime, static_cast(crRect.top)); + Lower_Rightx = CJS_Value(pRuntime, static_cast(crRect.right)); + Lower_Righty = CJS_Value(pRuntime, static_cast(crRect.bottom)); CJS_Array rcArray; rcArray.SetElement(pRuntime->GetIsolate(), 0, Upper_Leftx); @@ -2309,7 +2313,7 @@ FX_BOOL Field::strokeColor(IJS_Context* cc, if (!m_bCanSet) return FALSE; - if (!vp.IsArrayObject()) + if (!vp.GetJSValue()->IsArrayObject()) return FALSE; vp >> crArray; @@ -2454,7 +2458,7 @@ FX_BOOL Field::textColor(IJS_Context* cc, if (!m_bCanSet) return FALSE; - if (!vp.IsArrayObject()) + if (!vp.GetJSValue()->IsArrayObject()) return FALSE; vp >> crArray; @@ -2698,13 +2702,14 @@ FX_BOOL Field::value(IJS_Context* cc, return FALSE; std::vector strArray; - if (vp.IsArrayObject()) { + if (vp.GetJSValue()->IsArrayObject()) { CJS_Array ValueArray; - vp.ConvertToArray(ValueArray); + vp.GetJSValue()->ConvertToArray(pRuntime->GetIsolate(), ValueArray); for (int i = 0, sz = ValueArray.GetLength(); i < sz; i++) { CJS_Value ElementValue(pRuntime); ValueArray.GetElement(pRuntime->GetIsolate(), i, ElementValue); - strArray.push_back(ElementValue.ToCFXWideString()); + strArray.push_back( + ElementValue.ToCFXWideString(pRuntime->GetIsolate())); } } else { CFX_WideString swValue; @@ -2737,9 +2742,14 @@ FX_BOOL Field::value(IJS_Context* cc, int iIndex; for (int i = 0, sz = pFormField->CountSelectedItems(); i < sz; i++) { iIndex = pFormField->GetSelectedIndex(i); - ElementValue = pFormField->GetOptionValue(iIndex).c_str(); - if (FXSYS_wcslen(ElementValue.ToCFXWideString().c_str()) == 0) - ElementValue = pFormField->GetOptionLabel(iIndex).c_str(); + ElementValue = + CJS_Value(pRuntime, pFormField->GetOptionValue(iIndex).c_str()); + if (FXSYS_wcslen( + ElementValue.ToCFXWideString(pRuntime->GetIsolate()) + .c_str()) == 0) { + ElementValue = CJS_Value( + pRuntime, pFormField->GetOptionLabel(iIndex).c_str()); + } ValueArray.SetElement(pRuntime->GetIsolate(), i, ElementValue); } vp << ValueArray; @@ -2765,7 +2775,7 @@ FX_BOOL Field::value(IJS_Context* cc, break; } } - vp.MaybeCoerceToNumber(); + vp.GetJSValue()->MaybeCoerceToNumber(m_isolate); return TRUE; } @@ -2891,10 +2901,12 @@ FX_BOOL Field::buttonGetCaption(IJS_Context* cc, const std::vector& params, CJS_Value& vRet, CFX_WideString& sError) { + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); + int nface = 0; int iSize = params.size(); if (iSize >= 1) - nface = params[0].ToInt(); + nface = params[0].ToInt(pRuntime->GetIsolate()); std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) @@ -2909,11 +2921,11 @@ FX_BOOL Field::buttonGetCaption(IJS_Context* cc, return FALSE; if (nface == 0) - vRet = pFormControl->GetNormalCaption().c_str(); + vRet = CJS_Value(pRuntime, pFormControl->GetNormalCaption().c_str()); else if (nface == 1) - vRet = pFormControl->GetDownCaption().c_str(); + vRet = CJS_Value(pRuntime, pFormControl->GetDownCaption().c_str()); else if (nface == 2) - vRet = pFormControl->GetRolloverCaption().c_str(); + vRet = CJS_Value(pRuntime, pFormControl->GetRolloverCaption().c_str()); else return FALSE; @@ -2924,10 +2936,13 @@ FX_BOOL Field::buttonGetIcon(IJS_Context* cc, const std::vector& params, CJS_Value& vRet, CFX_WideString& sError) { + CJS_Context* pContext = static_cast(cc); + CJS_Runtime* pRuntime = pContext->GetJSRuntime(); + int nface = 0; int iSize = params.size(); if (iSize >= 1) - nface = params[0].ToInt(); + nface = params[0].ToInt(pRuntime->GetIsolate()); std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) @@ -2941,8 +2956,6 @@ FX_BOOL Field::buttonGetIcon(IJS_Context* cc, if (!pFormControl) return FALSE; - CJS_Context* pContext = (CJS_Context*)cc; - CJS_Runtime* pRuntime = pContext->GetJSRuntime(); v8::Local pObj = FXJS_NewFxDynamicObj( pRuntime->GetIsolate(), pRuntime, CJS_Icon::g_nObjDefnID); ASSERT(pObj.IsEmpty() == FALSE); @@ -2961,8 +2974,7 @@ FX_BOOL Field::buttonGetIcon(IJS_Context* cc, return FALSE; pIcon->SetStream(pIconStream); - vRet = pJS_Icon; - + vRet = CJS_Value(pRuntime, pJS_Icon); return TRUE; } @@ -2991,20 +3003,19 @@ FX_BOOL Field::checkThisBox(IJS_Context* cc, const std::vector& params, CJS_Value& vRet, CFX_WideString& sError) { - ASSERT(m_pDocument); - - if (!m_bCanSet) - return FALSE; - int iSize = params.size(); if (iSize < 1) return FALSE; - int nWidget = params[0].ToInt(); + if (!m_bCanSet) + return FALSE; + + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); + int nWidget = params[0].ToInt(pRuntime->GetIsolate()); bool bCheckit = true; if (iSize >= 2) - bCheckit = params[1].ToBool(); + bCheckit = params[1].ToBool(pRuntime->GetIsolate()); std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) @@ -3045,19 +3056,20 @@ FX_BOOL Field::defaultIsChecked(IJS_Context* cc, if (iSize < 1) return FALSE; - int nWidget = params[0].ToInt(); + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); + int nWidget = params[0].ToInt(pRuntime->GetIsolate()); std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return FALSE; CPDF_FormField* pFormField = FieldArray[0]; - if (nWidget < 0 || nWidget >= pFormField->CountControls()) { - vRet = FALSE; + if (nWidget < 0 || nWidget >= pFormField->CountControls()) return FALSE; - } - vRet = pFormField->GetFieldType() == FIELDTYPE_CHECKBOX || - pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON; + + vRet = CJS_Value(pRuntime, + pFormField->GetFieldType() == FIELDTYPE_CHECKBOX || + pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON); return TRUE; } @@ -3102,10 +3114,8 @@ FX_BOOL Field::getArray(IJS_Context* cc, static_cast(FXJS_GetPrivate(pRuntime->GetIsolate(), pObj)); Field* pField = static_cast(pJSField->GetEmbedObject()); pField->AttachField(m_pJSDoc, *pStr); - - CJS_Value FormFieldValue(pRuntime); - FormFieldValue = pJSField; - FormFieldArray.SetElement(pRuntime->GetIsolate(), j++, FormFieldValue); + FormFieldArray.SetElement(pRuntime->GetIsolate(), j++, + CJS_Value(pRuntime, pJSField)); } vRet = CJS_Value(pRuntime, FormFieldArray); @@ -3116,15 +3126,16 @@ FX_BOOL Field::getItemAt(IJS_Context* cc, const std::vector& params, CJS_Value& vRet, CFX_WideString& sError) { - int iSize = params.size(); + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); + int iSize = params.size(); int nIdx = -1; if (iSize >= 1) - nIdx = params[0].ToInt(); + nIdx = params[0].ToInt(pRuntime->GetIsolate()); FX_BOOL bExport = TRUE; if (iSize >= 2) - bExport = params[1].ToBool(); + bExport = params[1].ToBool(pRuntime->GetIsolate()); std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) @@ -3138,11 +3149,11 @@ FX_BOOL Field::getItemAt(IJS_Context* cc, if (bExport) { CFX_WideString strval = pFormField->GetOptionValue(nIdx); if (strval.IsEmpty()) - vRet = pFormField->GetOptionLabel(nIdx).c_str(); + vRet = CJS_Value(pRuntime, pFormField->GetOptionLabel(nIdx).c_str()); else - vRet = strval.c_str(); + vRet = CJS_Value(pRuntime, strval.c_str()); } else { - vRet = pFormField->GetOptionLabel(nIdx).c_str(); + vRet = CJS_Value(pRuntime, pFormField->GetOptionLabel(nIdx).c_str()); } } else { return FALSE; @@ -3169,9 +3180,11 @@ FX_BOOL Field::isBoxChecked(IJS_Context* cc, const std::vector& params, CJS_Value& vRet, CFX_WideString& sError) { + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); + int nIndex = -1; if (params.size() >= 1) - nIndex = params[0].ToInt(); + nIndex = params[0].ToInt(pRuntime->GetIsolate()); std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) @@ -3179,20 +3192,13 @@ FX_BOOL Field::isBoxChecked(IJS_Context* cc, CPDF_FormField* pFormField = FieldArray[0]; if (nIndex < 0 || nIndex >= pFormField->CountControls()) { - vRet = FALSE; return FALSE; } - if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX) || - (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)) { - if (pFormField->GetControl(nIndex)->IsChecked() != 0) - vRet = TRUE; - else - vRet = FALSE; - } else { - vRet = FALSE; - } - + vRet = CJS_Value(pRuntime, + ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX || + pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON) && + pFormField->GetControl(nIndex)->IsChecked() != 0)); return TRUE; } @@ -3200,29 +3206,24 @@ FX_BOOL Field::isDefaultChecked(IJS_Context* cc, const std::vector& params, CJS_Value& vRet, CFX_WideString& sError) { + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); + int nIndex = -1; if (params.size() >= 1) - nIndex = params[0].ToInt(); + nIndex = params[0].ToInt(pRuntime->GetIsolate()); std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return FALSE; CPDF_FormField* pFormField = FieldArray[0]; - if (nIndex < 0 || nIndex >= pFormField->CountControls()) { - vRet = FALSE; + if (nIndex < 0 || nIndex >= pFormField->CountControls()) return FALSE; - } - if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX) || - (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)) { - if (pFormField->GetControl(nIndex)->IsDefaultChecked() != 0) - vRet = TRUE; - else - vRet = FALSE; - } else { - vRet = FALSE; - } + vRet = CJS_Value(pRuntime, + ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX || + pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON) && + pFormField->GetControl(nIndex)->IsDefaultChecked() != 0)); return TRUE; } -- cgit v1.2.3