Index: fpdfsdk/javascript/Field.cpp |
diff --git a/fpdfsdk/javascript/Field.cpp b/fpdfsdk/javascript/Field.cpp |
index 34a24666d96ae38dfba29b789139cd3ff02fedf4..852888179ab0462fd8bcc346afd28007ec21dfa9 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<uint32_t> 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<FX_FLOAT>(Upper_Leftx.ToInt(pRuntime->GetIsolate())); |
+ pArray[1] = |
+ static_cast<FX_FLOAT>(Lower_Righty.ToInt(pRuntime->GetIsolate())); |
+ pArray[2] = |
+ static_cast<FX_FLOAT>(Lower_Rightx.ToInt(pRuntime->GetIsolate())); |
+ pArray[3] = |
+ static_cast<FX_FLOAT>(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<int32_t>(crRect.left)); |
+ Upper_Lefty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.top)); |
+ Lower_Rightx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.right)); |
+ Lower_Righty = CJS_Value(pRuntime, static_cast<int32_t>(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<CFX_WideString> 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<CJS_Value>& 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<CPDF_FormField*> 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<CJS_Value>& params, |
CJS_Value& vRet, |
CFX_WideString& sError) { |
+ CJS_Context* pContext = static_cast<CJS_Context*>(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<CPDF_FormField*> 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<v8::Object> 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<CJS_Value>& 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<CPDF_FormField*> 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<CPDF_FormField*> 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<CJS_Field*>(FXJS_GetPrivate(pRuntime->GetIsolate(), pObj)); |
Field* pField = static_cast<Field*>(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<CJS_Value>& 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<CPDF_FormField*> 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<CJS_Value>& 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<CPDF_FormField*> 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<CJS_Value>& 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<CPDF_FormField*> 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; |
} |