From e4fde52cc2c827e637c96e8e1f76ba4644cf718a Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Thu, 23 Apr 2015 11:23:10 -0700 Subject: Kill overloaded cast operators in CJS_Value. The red-flag here is the explicit invocation of things like params[1].operator CFX_WideString() rather than static_cast(params[1]) to invoke the conversion. Turns out the above won't compile due to ambiguity given the number of implicit constructors for widestrings. CJS_Value has both constructors and assignment operators for the primitive types, which means that conversions can take place unexpectedly in both directions, a second red flag. We don't want the compiler invoking these at will since it may hide bugs. In fact, when they are removed, three such places were discovered. Also rename ToJSValue to ToV8Value to match the other ToV8xxxxx functions added. R=thestig@chromium.org Review URL: https://codereview.chromium.org/1096813008 --- fpdfsdk/include/javascript/JS_Define.h | 6 +- fpdfsdk/include/javascript/JS_Value.h | 20 ++-- fpdfsdk/src/javascript/Document.cpp | 139 ++++++++++++++------------- fpdfsdk/src/javascript/Field.cpp | 71 +++++++------- fpdfsdk/src/javascript/JS_Value.cpp | 57 +++++------ fpdfsdk/src/javascript/PublicMethods.cpp | 148 +++++++++++++--------------- fpdfsdk/src/javascript/app.cpp | 159 ++++++++++++++----------------- fpdfsdk/src/javascript/color.cpp | 16 ++-- fpdfsdk/src/javascript/event.cpp | 2 +- fpdfsdk/src/javascript/global.cpp | 23 ++--- fpdfsdk/src/javascript/util.cpp | 26 +++-- 11 files changed, 305 insertions(+), 362 deletions(-) diff --git a/fpdfsdk/include/javascript/JS_Define.h b/fpdfsdk/include/javascript/JS_Define.h index 67f283b40e..2a033d15c5 100644 --- a/fpdfsdk/include/javascript/JS_Define.h +++ b/fpdfsdk/include/javascript/JS_Define.h @@ -137,7 +137,7 @@ void JSMethod(const char* method_name_string, JS_Error(isolate, JSFormatErrorString(class_name_string, method_name_string, sError)); return; } - info.GetReturnValue().Set(valueRes.ToJSValue()); + info.GetReturnValue().Set(valueRes.ToV8Value()); } #define JS_STATIC_METHOD(method_name, class_name) \ @@ -404,7 +404,7 @@ void JSGlobalFunc(const char *func_name_string, JS_Error(isolate, JSFormatErrorString(func_name_string, nullptr, sError)); return; } - info.GetReturnValue().Set(valueRes.ToJSValue()); + info.GetReturnValue().Set(valueRes.ToV8Value()); } #define JS_STATIC_GLOBAL_FUN(fun_name) \ @@ -452,7 +452,7 @@ for (int i=0; i() const; - operator v8::Handle() const; - operator CFX_WideString() const; - operator CFX_ByteString() const; - v8::Handle ToJSValue(); + int ToInt() const; + bool ToBool() const; + double ToDouble() const; + float ToFloat() const; + CJS_Object* ToCJSObject() const; + CFX_WideString ToCFXWideString() const; + CFX_ByteString ToCFXByteString() const; + v8::Handle ToV8Object() const; + v8::Handle ToV8Array() const; + v8::Handle ToV8Value() const; void operator = (int iValue); void operator = (bool bValue); diff --git a/fpdfsdk/src/javascript/Document.cpp b/fpdfsdk/src/javascript/Document.cpp index f823d8084f..00721bda82 100644 --- a/fpdfsdk/src/javascript/Document.cpp +++ b/fpdfsdk/src/javascript/Document.cpp @@ -326,7 +326,7 @@ FX_BOOL Document::getField(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ if (params.size() < 1) return FALSE; - CFX_WideString wideName = params[0].operator CFX_WideString(); + CFX_WideString wideName = params[0].ToCFXWideString(); CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); ASSERT(pInterForm != NULL); @@ -364,7 +364,7 @@ FX_BOOL Document::getNthFieldName(IFXJS_Context* cc, const CJS_Parameters& param { ASSERT(m_pDocument != NULL); - int nIndex = params.size() > 0 ? (int)params[0] : -1; + int nIndex = params.size() > 0 ? params[0].ToInt() : -1; if (nIndex == -1) return FALSE; CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); @@ -412,12 +412,12 @@ FX_BOOL Document::mailForm(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ int iLength = params.size(); - FX_BOOL bUI = iLength > 0 ? (FX_BOOL)params[0] : TRUE; - CFX_WideString cTo = iLength > 1 ? (FX_LPCWSTR)params[1].operator CFX_WideString() : L""; - CFX_WideString cCc = iLength > 2 ? (FX_LPCWSTR)params[2].operator CFX_WideString() : L""; - CFX_WideString cBcc = iLength > 3 ? (FX_LPCWSTR)params[3].operator CFX_WideString() : L""; - CFX_WideString cSubject = iLength > 4 ? (FX_LPCWSTR)params[4].operator CFX_WideString() : L""; - CFX_WideString cMsg = iLength > 5 ? (FX_LPCWSTR)params[5].operator CFX_WideString() : L""; + FX_BOOL bUI = iLength > 0 ? params[0].ToBool() : TRUE; + CFX_WideString cTo = iLength > 1 ? params[1].ToCFXWideString() : L""; + CFX_WideString cCc = iLength > 2 ? params[2].ToCFXWideString() : L""; + CFX_WideString cBcc = iLength > 3 ? params[3].ToCFXWideString() : L""; + CFX_WideString cSubject = iLength > 4 ? params[4].ToCFXWideString() : L""; + CFX_WideString cMsg = iLength > 5 ? params[5].ToCFXWideString() : L""; CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); ASSERT(pInterForm != NULL); @@ -460,11 +460,11 @@ FX_BOOL Document::print(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Val { if (params[8].GetType() == VT_fxobject) { - JSFXObject pObj = (JSFXObject)params[8]; + JSFXObject pObj = params[8].ToV8Object(); { if (JS_GetObjDefnID(pObj) == JS_GetObjDefnID(*pRuntime, L"PrintParamsObj")) { - if (CJS_Object* pJSObj = (CJS_Object*)params[8]) + if (CJS_Object* pJSObj = params[8].ToCJSObject()) { if (PrintParamsObj* pprintparamsObj = (PrintParamsObj*)pJSObj->GetEmbedObject()) { @@ -485,21 +485,21 @@ FX_BOOL Document::print(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Val else { if(nlength >= 1) - bUI = params[0]; + bUI = params[0].ToBool(); if(nlength >= 2) - nStart = (int)params[1]; + nStart = params[1].ToInt(); if(nlength >= 3) - nEnd = (int)params[2]; + nEnd = params[2].ToInt(); if(nlength >= 4) - bSilent = params[3]; + bSilent = params[3].ToBool(); if(nlength >= 5) - bShrinkToFit = params[4]; + bShrinkToFit = params[4].ToBool(); if(nlength >= 6) - bPrintAsImage = params[5]; + bPrintAsImage = params[5].ToBool(); if(nlength >= 7) - bReverse = params[6]; + bReverse = params[6].ToBool(); if(nlength >= 8) - bAnnotations = params[7]; + bAnnotations = params[7].ToBool(); } ASSERT(m_pDocument != NULL); @@ -526,7 +526,7 @@ FX_BOOL Document::removeField(IFXJS_Context* cc, const CJS_Parameters& params, C if (params.size() < 1) return TRUE; - CFX_WideString sFieldName = params[0].operator CFX_WideString(); + CFX_WideString sFieldName = params[0].ToCFXWideString(); CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); ASSERT(pInterForm != NULL); @@ -592,7 +592,7 @@ FX_BOOL Document::resetForm(IFXJS_Context* cc, const CJS_Parameters& params, CJS switch (params[0].GetType()) { default: - aName.Attach(params[0]); + aName.Attach(params[0].ToV8Array()); break; case VT_string: aName.SetElement(0,params[0]); @@ -605,7 +605,7 @@ FX_BOOL Document::resetForm(IFXJS_Context* cc, const CJS_Parameters& params, CJS { CJS_Value valElement(isolate); aName.GetElement(i,valElement); - CFX_WideString swVal = valElement.operator CFX_WideString(); + CFX_WideString swVal = valElement.ToCFXWideString(); for (int j=0,jsz=pPDFForm->CountFields(swVal); j 1) - bFDF = params[1]; + bFDF = params[1].ToBool(); if (nSize > 2) - bEmpty = params[2]; + bEmpty = params[2].ToBool(); if (nSize > 3) - aFields.Attach(params[3]); + aFields.Attach(params[3].ToV8Array()); } else if (v.GetType() == VT_object) { - JSObject pObj = (JSObject)params[0]; - v8::Handle pValue = JS_GetObjectElement(isolate,pObj, L"cURL"); + JSObject pObj = params[0].ToV8Object(); + v8::Handle pValue = JS_GetObjectElement(isolate, pObj, L"cURL"); if (!pValue.IsEmpty()) - strURL = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)); - pValue = JS_GetObjectElement(isolate,pObj, L"bFDF"); - bFDF = CJS_Value(isolate,pValue, GET_VALUE_TYPE(pValue)); - pValue = JS_GetObjectElement(isolate,pObj, L"bEmpty"); - bEmpty = CJS_Value(isolate,pValue, GET_VALUE_TYPE(pValue)); - pValue = JS_GetObjectElement(isolate,pObj,L"aFields"); - aFields.Attach(CJS_Value(isolate,pValue, GET_VALUE_TYPE(pValue))); + strURL = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); + pValue = JS_GetObjectElement(isolate, pObj, L"bFDF"); + bFDF = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBool(); + pValue = JS_GetObjectElement(isolate, pObj, L"bEmpty"); + bEmpty = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBool(); + pValue = JS_GetObjectElement(isolate, pObj,L"aFields"); + aFields.Attach(CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToV8Array()); } CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); @@ -710,7 +710,7 @@ FX_BOOL Document::submitForm(IFXJS_Context* cc, const CJS_Parameters& params, CJ { CJS_Value valName(isolate); aFields.GetElement(i, valName); - CFX_WideString sName = valName.operator CFX_WideString(); + CFX_WideString sName = valName.ToCFXWideString(); CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); ASSERT(pPDFForm != NULL); @@ -781,37 +781,42 @@ FX_BOOL Document::mailDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V CFX_WideString cSubject = L""; CFX_WideString cMsg = L""; - - bUI = params.size()>=1?static_cast(params[0]):TRUE; - cTo = params.size()>=2?(const wchar_t*)params[1].operator CFX_WideString():L""; - cCc = params.size()>=3?(const wchar_t*)params[2].operator CFX_WideString():L""; - cBcc = params.size()>=4?(const wchar_t*)params[3].operator CFX_WideString():L""; - cSubject = params.size()>=5?(const wchar_t*)params[4].operator CFX_WideString():L""; - cMsg = params.size()>=6?(const wchar_t*)params[5].operator CFX_WideString():L""; + if (params.size() >= 1) + bUI = params[0].ToBool(); + if (params.size() >= 2) + cTo = params[1].ToCFXWideString(); + if (params.size() >= 3) + cCc = params[2].ToCFXWideString(); + if (params.size() >= 4) + cBcc = params[3].ToCFXWideString(); + if (params.size() >= 5) + cSubject = params[4].ToCFXWideString(); + if (params.size() >= 6) + cMsg = params[5].ToCFXWideString(); v8::Isolate* isolate = GetIsolate(cc); - if(params.size()>=1 && params[0].GetType() == VT_object) + if(params.size() >= 1 && params[0].GetType() == VT_object) { - JSObject pObj = (JSObject )params[0]; + JSObject pObj = params[0].ToV8Object(); v8::Handle pValue = JS_GetObjectElement(isolate,pObj, L"bUI"); - bUI = (int)CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)); + bUI = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToInt(); pValue = JS_GetObjectElement(isolate,pObj, L"cTo"); - cTo = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); + cTo = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString(); pValue = JS_GetObjectElement(isolate,pObj, L"cCc"); - cCc = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); + cCc = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString(); pValue = JS_GetObjectElement(isolate,pObj, L"cBcc"); - cBcc = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); + cBcc = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString(); pValue = JS_GetObjectElement(isolate,pObj, L"cSubject"); - cSubject = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); + cSubject = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString(); pValue = JS_GetObjectElement(isolate,pObj, L"cMsg"); - cMsg = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); + cMsg = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString(); } @@ -1459,12 +1464,12 @@ FX_BOOL Document::addIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V CJS_Runtime* pRuntime = pContext->GetJSRuntime(); ASSERT(pRuntime != NULL); - CFX_WideString swIconName = params[0].operator CFX_WideString(); + CFX_WideString swIconName = params[0].ToCFXWideString(); - JSFXObject pJSIcon = (JSFXObject)params[1]; + JSFXObject pJSIcon = params[1].ToV8Object(); if (JS_GetObjDefnID(pJSIcon) != JS_GetObjDefnID(*pRuntime, L"Icon")) return FALSE; - CJS_EmbedObj* pEmbedObj = ((CJS_Object*)params[1])->GetEmbedObject(); + CJS_EmbedObj* pEmbedObj = params[1].ToCJSObject()->GetEmbedObject(); if (!pEmbedObj)return FALSE; Icon* pIcon = (Icon*)pEmbedObj; @@ -1527,7 +1532,7 @@ FX_BOOL Document::getIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V if (params.size() != 1)return FALSE; if(!m_pIconTree) return FALSE; - CFX_WideString swIconName = params[0].operator CFX_WideString(); + CFX_WideString swIconName = params[0].ToCFXWideString(); int iIconCounts = m_pIconTree->GetLength(); CJS_Context* pContext = (CJS_Context *)cc; @@ -1563,7 +1568,7 @@ FX_BOOL Document::removeIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJ if (params.size() != 1)return FALSE; if(!m_pIconTree) return FALSE; - CFX_WideString swIconName = params[0].operator CFX_WideString(); + CFX_WideString swIconName = params[0].ToCFXWideString(); return TRUE; } @@ -1603,9 +1608,9 @@ FX_BOOL Document::getPageNthWord(IFXJS_Context* cc, const CJS_Parameters& params if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE; - int nPageNo = params.GetSize() > 0 ? (int)params[0] : 0; - int nWordNo = params.GetSize() > 1 ? (int)params[1] : 0; - bool bStrip = params.GetSize() > 2 ? (bool)params[2] : true; + int nPageNo = params.GetSize() > 0 ? params[0].ToInt() : 0; + int nWordNo = params.GetSize() > 1 ? params[1].ToInt() : 0; + bool bStrip = params.GetSize() > 2 ? params[2].ToBool() : true; CPDF_Document* pDocument = m_pDocument->GetDocument(); if (!pDocument) return FALSE; @@ -1675,7 +1680,7 @@ FX_BOOL Document::getPageNumWords(IFXJS_Context* cc, const CJS_Parameters& param if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE; - int nPageNo = params.GetSize() > 0 ? (int)params[0] : 0; + int nPageNo = params.GetSize() > 0 ? params[0].ToInt() : 0; CPDF_Document* pDocument = m_pDocument->GetDocument(); ASSERT(pDocument != NULL); @@ -1847,22 +1852,22 @@ FX_BOOL Document::deletePages(IFXJS_Context* cc, const CJS_Parameters& params, C { if (params[0].GetType() == VT_object) { - JSObject pObj = (JSObject )params[0]; - v8::Handle pValue = JS_GetObjectElement(isolate,pObj, L"nStart"); - nStart = (int)CJS_Value(m_isolate,pValue,GET_VALUE_TYPE(pValue)); + JSObject pObj = params[0].ToV8Object(); + v8::Handle pValue = JS_GetObjectElement(isolate, pObj, L"nStart"); + nStart = CJS_Value(m_isolate, pValue, GET_VALUE_TYPE(pValue)).ToInt(); - pValue = JS_GetObjectElement(isolate,pObj, L"nEnd"); - nEnd = (int)CJS_Value(m_isolate,pValue,GET_VALUE_TYPE(pValue)); + pValue = JS_GetObjectElement(isolate, pObj, L"nEnd"); + nEnd = CJS_Value(m_isolate, pValue, GET_VALUE_TYPE(pValue)).ToInt(); } else { - nStart = (int)params[0]; + nStart = params[0].ToInt(); } } else { - nStart = (int)params[0]; - nEnd = (int)params[1]; + nStart = params[0].ToInt(); + nEnd = params[1].ToInt(); } int nTotal = m_pDocument->GetPageCount(); diff --git a/fpdfsdk/src/javascript/Field.cpp b/fpdfsdk/src/javascript/Field.cpp index 85b7d12c3f..36bd1caf42 100644 --- a/fpdfsdk/src/javascript/Field.cpp +++ b/fpdfsdk/src/javascript/Field.cpp @@ -1072,7 +1072,7 @@ FX_BOOL Field::currentValueIndices(IFXJS_Context* cc, CJS_PropValue& vp, CFX_Wid for (int i=0,sz=SelArray.GetLength(); iGetSelectedIndex(i); ElementValue = pFormField->GetOptionValue(iIndex); - if (FXSYS_wcslen((FX_LPCWSTR)ElementValue.operator CFX_WideString()) == 0) + if (FXSYS_wcslen(ElementValue.ToCFXWideString().c_str()) == 0) ElementValue = pFormField->GetOptionLabel(iIndex); ValueArray.SetElement(i, ElementValue); } @@ -3374,8 +3374,8 @@ FX_BOOL Field::buttonGetCaption(IFXJS_Context* cc, const CJS_Parameters& params, int nface = 0; int iSize = params.size(); - if ( iSize >= 1) - nface = (FX_INT32) params[0]; + if (iSize >= 1) + nface = params[0].ToInt(); CFX_PtrArray FieldArray; GetFormFields(m_FieldName,FieldArray); @@ -3410,8 +3410,8 @@ FX_BOOL Field::buttonGetIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJ int nface = 0; int iSize = params.size(); - if ( iSize >= 1) - nface = (FX_INT32) params[0]; + if (iSize >= 1) + nface = params[0].ToInt(); CFX_PtrArray FieldArray; GetFormFields(m_FieldName,FieldArray); @@ -3519,15 +3519,14 @@ FX_BOOL Field::checkThisBox(IFXJS_Context* cc, const CJS_Parameters& params, CJS if (!m_bCanSet) return FALSE; int iSize = params.size(); - int nWidget = -1; - if ( iSize >= 1) - nWidget= (FX_INT32) params[0]; - else + if (iSize < 1) return FALSE; - FX_BOOL bCheckit = TRUE; - if ( iSize >= 2) - bCheckit = params[1]; + int nWidget = params[0].ToInt(); + + FX_BOOL bCheckit = TRUE; + if (iSize >= 2) + bCheckit = params[1].ToBool(); CFX_PtrArray FieldArray; GetFormFields(m_FieldName,FieldArray); @@ -3535,9 +3534,9 @@ FX_BOOL Field::checkThisBox(IFXJS_Context* cc, const CJS_Parameters& params, CJS CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); ASSERT(pFormField != NULL); - + if (pFormField->GetFieldType() != FIELDTYPE_CHECKBOX && pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON) - return FALSE; + return FALSE; if(nWidget <0 || nWidget >= pFormField->CountControls()) return FALSE; if (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON) @@ -3546,7 +3545,6 @@ FX_BOOL Field::checkThisBox(IFXJS_Context* cc, const CJS_Parameters& params, CJS pFormField->CheckControl(nWidget, bCheckit, TRUE); UpdateFormField(m_pDocument, pFormField, TRUE, TRUE, TRUE); - return TRUE; } @@ -3562,14 +3560,10 @@ FX_BOOL Field::defaultIsChecked(IFXJS_Context* cc, const CJS_Parameters& params, if (!m_bCanSet) return FALSE; int iSize = params.size(); - int nWidget = -1; - if ( iSize >= 1) - nWidget= (FX_INT32) params[0]; - else + if (iSize < 1) return FALSE; - //FX_BOOL bIsDefaultChecked = TRUE; - //if ( iSize >= 2) - // bIsDefaultChecked = params[1]; + + int nWidget = params[0].ToInt(); CFX_PtrArray FieldArray; GetFormFields(m_FieldName,FieldArray); @@ -3665,16 +3659,15 @@ FX_BOOL Field::getArray(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Val FX_BOOL Field::getItemAt(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError) { ASSERT(m_pDocument != NULL); + int iSize = params.size(); int nIdx = -1; - if (params.size() >=1) - nIdx = (FX_INT32) params[0]; + if (iSize >= 1) + nIdx = params[0].ToInt(); + FX_BOOL bExport = TRUE; - int iSize = params.size(); - if ( iSize >= 2) - { - bExport =(FX_BOOL) params[1]; - } + if (iSize >= 2) + bExport = params[1].ToBool(); CFX_PtrArray FieldArray; GetFormFields(m_FieldName,FieldArray); @@ -3720,8 +3713,8 @@ FX_BOOL Field::isBoxChecked(IFXJS_Context* cc, const CJS_Parameters& params, CJS ASSERT(m_pDocument != NULL); int nIndex = -1; - if (params.size() >=1) - nIndex = (FX_INT32) params[0]; + if (params.size() >= 1) + nIndex = params[0].ToInt(); CFX_PtrArray FieldArray; GetFormFields(m_FieldName,FieldArray); @@ -3755,8 +3748,8 @@ FX_BOOL Field::isDefaultChecked(IFXJS_Context* cc, const CJS_Parameters& params, ASSERT(m_pDocument != NULL); int nIndex = -1; - if (params.size() >=1) - nIndex = (FX_INT32) params[0]; + if (params.size() >= 1) + nIndex = params[0].ToInt(); CFX_PtrArray FieldArray; GetFormFields(m_FieldName,FieldArray); diff --git a/fpdfsdk/src/javascript/JS_Value.cpp b/fpdfsdk/src/javascript/JS_Value.cpp index 6743daa4d5..be374895e4 100644 --- a/fpdfsdk/src/javascript/JS_Value.cpp +++ b/fpdfsdk/src/javascript/JS_Value.cpp @@ -85,7 +85,7 @@ void CJS_Value::Attach(v8::Handle pValue,FXJSVALUETYPE t) void CJS_Value::Attach(CJS_Value *pValue) { if (pValue) - Attach(pValue->ToJSValue(),pValue->GetType()); + Attach(pValue->ToV8Value(), pValue->GetType()); } void CJS_Value::Detach() @@ -96,63 +96,53 @@ void CJS_Value::Detach() /* ---------------------------------------------------------------------------------------- */ -CJS_Value::operator int() const +int CJS_Value::ToInt() const { - return JS_ToInt32(m_pValue); - } -CJS_Value::operator bool() const +bool CJS_Value::ToBool() const { - return JS_ToBoolean(m_pValue); - } -CJS_Value::operator double() const +double CJS_Value::ToDouble() const { - return JS_ToNumber(m_pValue); - } -CJS_Value::operator float() const +float CJS_Value::ToFloat() const { - - return (float)JS_ToNumber(m_pValue); - + return (float)ToDouble(); } -CJS_Value::operator CJS_Object *() const +CJS_Object* CJS_Value::ToCJSObject() const { - v8::Handle pObj = JS_ToObject(m_pValue); return (CJS_Object*)JS_GetPrivate(m_isolate, pObj); } -CJS_Value::operator v8::Handle() const +v8::Handle CJS_Value::ToV8Object() const { return JS_ToObject(m_pValue); } -CJS_Value::operator CFX_WideString() const +CFX_WideString CJS_Value::ToCFXWideString() const { return JS_ToString(m_pValue); } -CJS_Value::operator CFX_ByteString() const +CFX_ByteString CJS_Value::ToCFXByteString() const { - return CFX_ByteString::FromUnicode(operator CFX_WideString()); + return CFX_ByteString::FromUnicode(ToCFXWideString()); } -v8::Handle CJS_Value::ToJSValue() +v8::Handle CJS_Value::ToV8Value() const { return m_pValue; } - -CJS_Value::operator v8::Handle() const +v8::HandleCJS_Value::ToV8Array() const { if (IsArrayObject()) return v8::Handle::Cast(JS_ToObject(m_pValue)); @@ -245,7 +235,7 @@ void CJS_Value::operator = (CJS_Date & date) void CJS_Value::operator = (CJS_Value value) { - m_pValue = value.ToJSValue(); + m_pValue = value.ToV8Value(); m_eType = value.m_eType; } @@ -342,7 +332,7 @@ void CJS_PropValue::operator <<(int iValue) void CJS_PropValue::operator >>(int & iValue) const { ASSERT(m_bIsSetting); - iValue = CJS_Value::operator int(); + iValue = CJS_Value::ToInt(); } @@ -355,8 +345,7 @@ void CJS_PropValue::operator <<(bool bValue) void CJS_PropValue::operator >>(bool& bValue) const { ASSERT(m_bIsSetting); - bValue = CJS_Value::operator bool(); - + bValue = CJS_Value::ToBool(); } void CJS_PropValue::operator <<(double dValue) @@ -368,7 +357,7 @@ void CJS_PropValue::operator <<(double dValue) void CJS_PropValue::operator >>(double& dValue) const { ASSERT(m_bIsSetting); - dValue = CJS_Value::operator double(); + dValue = CJS_Value::ToDouble(); } void CJS_PropValue::operator <<(CJS_Object* pObj) @@ -380,7 +369,7 @@ void CJS_PropValue::operator <<(CJS_Object* pObj) void CJS_PropValue::operator >>(CJS_Object*& ppObj) const { ASSERT(m_bIsSetting); - ppObj = CJS_Value::operator CJS_Object *(); + ppObj = CJS_Value::ToCJSObject(); } void CJS_PropValue::operator <<(CJS_Document* pJsDoc) @@ -392,7 +381,7 @@ void CJS_PropValue::operator <<(CJS_Document* pJsDoc) void CJS_PropValue::operator >>(CJS_Document*& ppJsDoc) const { ASSERT(m_bIsSetting); - ppJsDoc = static_cast(CJS_Value::operator CJS_Object *()); + ppJsDoc = static_cast(CJS_Value::ToCJSObject()); } void CJS_PropValue::operator<<(JSFXObject pObj) @@ -404,7 +393,7 @@ void CJS_PropValue::operator<<(JSFXObject pObj) void CJS_PropValue::operator>>(JSFXObject &ppObj) const { ASSERT(m_bIsSetting); - ppObj = CJS_Value::operator JSFXObject (); + ppObj = CJS_Value::ToV8Object(); } @@ -426,7 +415,7 @@ void CJS_PropValue::operator <<(CFX_ByteString string) void CJS_PropValue::operator >>(CFX_ByteString &string) const { ASSERT(m_bIsSetting); - string = CJS_Value::operator CFX_ByteString(); + string = CJS_Value::ToCFXByteString(); } void CJS_PropValue::operator <<(FX_LPCWSTR c_string) @@ -438,7 +427,7 @@ void CJS_PropValue::operator <<(FX_LPCWSTR c_string) void CJS_PropValue::operator >>(CFX_WideString &wide_string) const { ASSERT(m_bIsSetting); - wide_string = CJS_Value::operator CFX_WideString(); + wide_string = CJS_Value::ToCFXWideString(); } void CJS_PropValue::operator <<(CFX_WideString wide_string) @@ -508,7 +497,7 @@ void CJS_Array::SetElement(unsigned index,CJS_Value value) if (m_pArray.IsEmpty()) m_pArray = JS_NewArray(m_isolate); - JS_PutArrayElement(m_pArray,index,value.ToJSValue(),value.GetType()); + JS_PutArrayElement(m_pArray, index, value.ToV8Value(), value.GetType()); } int CJS_Array::GetLength() diff --git a/fpdfsdk/src/javascript/PublicMethods.cpp b/fpdfsdk/src/javascript/PublicMethods.cpp index e3479f1fa4..ff5b9a787a 100644 --- a/fpdfsdk/src/javascript/PublicMethods.cpp +++ b/fpdfsdk/src/javascript/PublicMethods.cpp @@ -430,7 +430,7 @@ CJS_Array CJS_PublicMethods::AF_MakeArrayFromList(v8::Isolate* isolate, CJS_Valu val.ConvertToArray(StrArray); return StrArray; } - CFX_WideString wsStr = val.operator CFX_WideString(); + CFX_WideString wsStr = val.ToCFXWideString(); CFX_ByteString t = CFX_ByteString::FromUnicode(wsStr); const char * p = (const char *)t; @@ -1071,12 +1071,12 @@ FX_BOOL CJS_PublicMethods::AFNumber_Format(IFXJS_Context* cc, const CJS_Paramete if (strValue.IsEmpty()) return TRUE; - int iDec = params[0]; - int iSepStyle = params[1]; - int iNegStyle = params[2]; + int iDec = params[0].ToInt(); + int iSepStyle = params[1].ToInt(); + int iNegStyle = params[2].ToInt(); // params[3] is iCurrStyle, it's not used. - std::wstring wstrCurrency(params[4].operator CFX_WideString()); - FX_BOOL bCurrencyPrepend = params[5]; + std::wstring wstrCurrency(params[4].ToCFXWideString()); + FX_BOOL bCurrencyPrepend = params[5].ToBool(); if (iDec < 0) iDec = -iDec; @@ -1268,7 +1268,7 @@ FX_BOOL CJS_PublicMethods::AFNumber_Keystroke(IFXJS_Context* cc, const CJS_Param if(params.size() < 2) return FALSE; - int iSepStyle = params[1]; + int iSepStyle = params[1].ToInt(); if (iSepStyle < 0 || iSepStyle > 3) iSepStyle = 0; @@ -1406,30 +1406,20 @@ FX_BOOL CJS_PublicMethods::AFPercent_Format(IFXJS_Context* cc, const CJS_Paramet } if(!pEvent->m_pValue) return FALSE; + CFX_WideString& Value = pEvent->Value(); - -// HWND hMainFrame = NULL; -// -// CPDFSDK_FormFillApp *pApp = pContext->GetReaderApp(); -// ASSERT(pApp); -// hMainFrame = pApp->GetMainFrameWnd(); - CFX_ByteString strValue = StrTrim(CFX_ByteString::FromUnicode(Value)); - if (strValue.IsEmpty()) return TRUE; - - int iDec = params[0]; - int iSepStyle = params[1]; - - //ASSERT(iDec > 0); + + int iDec = params[0].ToInt(); if (iDec < 0) iDec = -iDec; - + + int iSepStyle = params[1].ToInt(); if (iSepStyle < 0 || iSepStyle > 3) iSepStyle = 0; - - + ////////////////////////////////////////////////////// //for processing decimal places double dValue = atof(strValue); @@ -1527,16 +1517,16 @@ FX_BOOL CJS_PublicMethods::AFDate_FormatEx(IFXJS_Context* cc, const CJS_Paramete { sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); return FALSE; - } + } if(!pEvent->m_pValue) return FALSE; - CFX_WideString& val = pEvent->Value(); - - CFX_WideString strValue = val; - if (strValue.IsEmpty()) return TRUE; - CFX_WideString sFormat = params[0].operator CFX_WideString(); + CFX_WideString& val = pEvent->Value(); + CFX_WideString strValue = val; + if (strValue.IsEmpty()) + return TRUE; + CFX_WideString sFormat = params[0].ToCFXWideString(); FX_BOOL bWrongFormat = FALSE; double dDate = 0.0f; @@ -1558,9 +1548,8 @@ FX_BOOL CJS_PublicMethods::AFDate_FormatEx(IFXJS_Context* cc, const CJS_Paramete Alert(pContext, swMsg); return FALSE; } - - val = MakeFormatDate(dDate,sFormat); + val = MakeFormatDate(dDate,sFormat); return TRUE; } @@ -1636,17 +1625,17 @@ FX_BOOL CJS_PublicMethods::AFDate_KeystrokeEx(IFXJS_Context* cc, const CJS_Param { sError = L"AFDate_KeystrokeEx's parameters' size r not correct"; return FALSE; - } - + } + if (pEvent->WillCommit()) { if(!pEvent->m_pValue) return FALSE; CFX_WideString strValue = pEvent->Value(); - if (strValue.IsEmpty()) return TRUE; - - CFX_WideString sFormat = params[0].operator CFX_WideString(); + if (strValue.IsEmpty()) + return TRUE; + CFX_WideString sFormat = params[0].ToCFXWideString(); FX_BOOL bWrongFormat = FALSE; double dRet = MakeRegularDate(strValue,sFormat,bWrongFormat); if (bWrongFormat || JS_PortIsNan(dRet)) @@ -1674,7 +1663,7 @@ FX_BOOL CJS_PublicMethods::AFDate_Format(IFXJS_Context* cc, const CJS_Parameters return FALSE; } - int iIndex = params[0]; + int iIndex = params[0].ToInt(); FX_LPCWSTR cFormats[] = {L"m/d", L"m/d/yy", L"mm/dd/yy", L"mm/yy", L"d-mmm", L"d-mmm-yy", L"dd-mmm-yy", L"yy-mm-dd", L"mmm-yy", L"mmmm-yy", L"mmm d, yyyy", L"mmmm d, yyyy", L"m/d/yy h:MM tt", L"m/d/yy HH:MM" }; @@ -1705,7 +1694,7 @@ FX_BOOL CJS_PublicMethods::AFDate_Keystroke(IFXJS_Context* cc, const CJS_Paramet return FALSE; } - int iIndex = params[0]; + int iIndex = params[0].ToInt(); FX_LPCWSTR cFormats[] = {L"m/d", L"m/d/yy", L"mm/dd/yy", L"mm/yy", L"d-mmm", L"d-mmm-yy", L"dd-mmm-yy", L"yy-mm-dd", L"mmm-yy", L"mmmm-yy", L"mmm d, yyyy", L"mmmm d, yyyy", L"m/d/yy h:MM tt", L"m/d/yy HH:MM" }; @@ -1735,7 +1724,7 @@ FX_BOOL CJS_PublicMethods::AFTime_Format(IFXJS_Context* cc, const CJS_Parameters return FALSE; } - int iIndex = params[0]; + int iIndex = params[0].ToInt(); FX_LPCWSTR cFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss", L"h:MM:ss tt"}; ASSERT(iIndexGetEventHandler(); ASSERT(pEvent != NULL); @@ -1858,11 +1847,12 @@ FX_BOOL CJS_PublicMethods::AFSpecial_KeystrokeEx(IFXJS_Context* cc, const CJS_Pa return FALSE; CFX_WideString& valEvent = pEvent->Value(); - CFX_WideString wstrMask = params[0].operator CFX_WideString(); - if (wstrMask.IsEmpty()) return TRUE; - + CFX_WideString wstrMask = params[0].ToCFXWideString(); + if (wstrMask.IsEmpty()) + return TRUE; + std::wstring wstrValue(valEvent); - + if (pEvent->WillCommit()) { if (wstrValue.empty()) @@ -1871,7 +1861,7 @@ FX_BOOL CJS_PublicMethods::AFSpecial_KeystrokeEx(IFXJS_Context* cc, const CJS_Pa for (std::wstring::iterator it = wstrValue.begin(); it != wstrValue.end(); it++) { wchar_t w_Value = *it; - if (!maskSatisfied(w_Value,wstrMask[iIndexMask])) + if (!maskSatisfied(w_Value,wstrMask[iIndexMask])) break; iIndexMask++; } @@ -1884,31 +1874,27 @@ FX_BOOL CJS_PublicMethods::AFSpecial_KeystrokeEx(IFXJS_Context* cc, const CJS_Pa return TRUE; } - CFX_WideString &wideChange = pEvent->Change(); std::wstring wChange(wideChange); - if (wChange.empty()) return TRUE; - int iIndexMask = pEvent->SelStart(); - //iIndexMask++; - - + + int iIndexMask = pEvent->SelStart(); + if (wstrValue.length() - (pEvent->SelEnd()-pEvent->SelStart()) + wChange.length() > (FX_DWORD)wstrMask.GetLength()) { Alert(pContext, JSGetStringFromID(pContext, IDS_STRING_JSPARAM_TOOLONG)); pEvent->Rc() = FALSE; return TRUE; } - - + if (iIndexMask >= wstrMask.GetLength() && (!wChange.empty())) { Alert(pContext, JSGetStringFromID(pContext, IDS_STRING_JSPARAM_TOOLONG)); pEvent->Rc() = FALSE; return TRUE; } - + for (std::wstring::iterator it = wChange.begin(); it != wChange.end(); it++) { if (iIndexMask >= wstrMask.GetLength()) @@ -1920,21 +1906,18 @@ FX_BOOL CJS_PublicMethods::AFSpecial_KeystrokeEx(IFXJS_Context* cc, const CJS_Pa wchar_t w_Mask = wstrMask[iIndexMask]; if (!isReservedMaskChar(w_Mask)) { - //wChange.insert(it,w_Mask); *it = w_Mask; } wchar_t w_Change = *it; - - if (!maskSatisfied(w_Change,w_Mask)) + if (!maskSatisfied(w_Change,w_Mask)) { pEvent->Rc() = FALSE; return TRUE; } iIndexMask++; } - - wideChange = wChange.c_str(); - + + wideChange = wChange.c_str(); return TRUE; } @@ -1956,7 +1939,7 @@ FX_BOOL CJS_PublicMethods::AFSpecial_Keystroke(IFXJS_Context* cc, const CJS_Para } std::string cFormat; - int iIndex = (int)params[0]; + int iIndex = params[0].ToInt(); if(!pEvent->m_pValue) return FALSE; @@ -2050,8 +2033,8 @@ FX_BOOL CJS_PublicMethods::AFParseDateEx(IFXJS_Context* cc, const CJS_Parameters return FALSE; } - CFX_WideString sValue = params[0].operator CFX_WideString(); - CFX_WideString sFormat = params[1].operator CFX_WideString(); + CFX_WideString sValue = params[0].ToCFXWideString(); + CFX_WideString sFormat = params[1].ToCFXWideString(); FX_BOOL bWrongFormat = FALSE; double dDate = MakeRegularDate(sValue,sFormat,bWrongFormat); @@ -2063,9 +2046,8 @@ FX_BOOL CJS_PublicMethods::AFParseDateEx(IFXJS_Context* cc, const CJS_Parameters Alert((CJS_Context *)cc, swMsg); return FALSE; } - - vRet = dDate; + vRet = dDate; return TRUE; } @@ -2080,7 +2062,7 @@ FX_BOOL CJS_PublicMethods::AFSimple(IFXJS_Context* cc, const CJS_Parameters& par return FALSE; } - vRet = (double)AF_Simple(params[0].operator CFX_WideString(), (double)params[1], (double)params[2]); + vRet = (double)AF_Simple(params[0].ToCFXWideString(), params[1].ToDouble(), params[2].ToDouble()); return TRUE; } @@ -2094,7 +2076,7 @@ FX_BOOL CJS_PublicMethods::AFMakeNumber(IFXJS_Context* cc, const CJS_Parameters& sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); return FALSE; } - vRet = ParseStringToNumber(params[0].operator CFX_WideString()); + vRet = ParseStringToNumber(params[0].ToCFXWideString()); return TRUE; } @@ -2118,7 +2100,7 @@ FX_BOOL CJS_PublicMethods::AFSimple_Calculate(IFXJS_Context* cc, const CJS_Param sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); return FALSE; } - + CPDFSDK_Document* pReaderDoc = pContext->GetReaderDocument(); ASSERT(pReaderDoc != NULL); @@ -2129,7 +2111,7 @@ FX_BOOL CJS_PublicMethods::AFSimple_Calculate(IFXJS_Context* cc, const CJS_Param ASSERT(pInterForm != NULL); double dValue; - CFX_WideString sFunction = params[0].operator CFX_WideString(); + CFX_WideString sFunction = params[0].ToCFXWideString(); if (wcscmp(sFunction, L"PRD") == 0) dValue = 1.0; else @@ -2143,7 +2125,7 @@ FX_BOOL CJS_PublicMethods::AFSimple_Calculate(IFXJS_Context* cc, const CJS_Param { CJS_Value jsValue(isolate); FieldNameArray.GetElement(i,jsValue); - CFX_WideString wsFieldName = jsValue.operator CFX_WideString(); + CFX_WideString wsFieldName = jsValue.ToCFXWideString(); for (int j=0,jsz=pInterForm->CountFields(wsFieldName); jGetEventHandler()->m_pValue) - ((CJS_EventHandler*)pContext->GetEventHandler())->Value() = jsValue; + ((CJS_EventHandler*)pContext->GetEventHandler())->Value() = jsValue.ToCFXWideString(); return TRUE; } @@ -2240,28 +2222,30 @@ FX_BOOL CJS_PublicMethods::AFRange_Validate(IFXJS_Context* cc, const CJS_Paramet if (pEvent->Value().IsEmpty() ) return TRUE; double dEentValue = atof(CFX_ByteString::FromUnicode(pEvent->Value())); - FX_BOOL bGreaterThan, bLessThan; - double dGreaterThan, dLessThan; - bGreaterThan = (FX_BOOL)params[0]; + FX_BOOL bGreaterThan = params[0].ToBool(); + double dGreaterThan = params[1].ToDouble(); + FX_BOOL bLessThan = params[2].ToBool(); + double dLessThan = params[3].ToDouble(); CFX_WideString swMsg; - dGreaterThan = (double)params[1]; - bLessThan = (FX_BOOL)params[2]; - dLessThan = (double)params[3]; if (bGreaterThan && bLessThan) { if (dEentValue < dGreaterThan || dEentValue > dLessThan) - swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE1),(FX_LPCWSTR)params[1].operator CFX_WideString(), (FX_LPCWSTR)params[3].operator CFX_WideString()); + swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE1), + params[1].ToCFXWideString().c_str(), + params[3].ToCFXWideString().c_str()); } else if (bGreaterThan) { if (dEentValue < dGreaterThan) - swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE2), (FX_LPCWSTR)params[1].operator CFX_WideString()); + swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE2), + params[1].ToCFXWideString().c_str()); } else if (bLessThan) { if (dEentValue > dLessThan) - swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE3), (FX_LPCWSTR)params[3].operator CFX_WideString()); + swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE3), + params[3].ToCFXWideString().c_str()); } if (!swMsg.IsEmpty()) @@ -2286,7 +2270,7 @@ FX_BOOL CJS_PublicMethods::AFExtractNums(IFXJS_Context* cc, const CJS_Parameters CJS_Array nums(isolate); - CFX_WideString str = params[0].operator CFX_WideString(); + CFX_WideString str = params[0].ToCFXWideString(); CFX_WideString sPart; if (str.GetAt(0) == L'.' || str.GetAt(0) == L',') diff --git a/fpdfsdk/src/javascript/app.cpp b/fpdfsdk/src/javascript/app.cpp index e17857b12b..57d9cfeaf2 100644 --- a/fpdfsdk/src/javascript/app.cpp +++ b/fpdfsdk/src/javascript/app.cpp @@ -325,19 +325,19 @@ FX_BOOL app::alert(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& v { if (params[0].GetType() == VT_object) { - JSObject pObj = params[0]; + JSObject pObj = params[0].ToV8Object(); { v8::Handle pValue = JS_GetObjectElement(isolate, pObj, L"cMsg"); - swMsg = CJS_Value(isolate,pValue,VT_unknown).operator CFX_WideString(); + swMsg = CJS_Value(isolate, pValue, VT_unknown).ToCFXWideString(); - pValue = JS_GetObjectElement(isolate,pObj,L"cTitle"); - swTitle = CJS_Value(isolate, pValue,VT_unknown).operator CFX_WideString(); + pValue = JS_GetObjectElement(isolate, pObj, L"cTitle"); + swTitle = CJS_Value(isolate, pValue, VT_unknown).ToCFXWideString(); - pValue = JS_GetObjectElement(isolate,pObj,L"nIcon"); - iIcon = (int)CJS_Value(isolate,pValue,VT_unknown); + pValue = JS_GetObjectElement(isolate, pObj, L"nIcon"); + iIcon = CJS_Value(isolate, pValue, VT_unknown).ToInt(); - pValue = JS_GetObjectElement(isolate,pObj,L"nType"); - iType = (int)CJS_Value(isolate,pValue,VT_unknown); + pValue = JS_GetObjectElement(isolate, pObj, L"nType"); + iType = CJS_Value(isolate, pValue, VT_unknown).ToInt(); } if (swMsg == L"") @@ -355,22 +355,12 @@ FX_BOOL app::alert(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& v for(int i = 0; i < iLenth; i++) { carray.GetElement(i, *pValue); - swMsg += (*pValue).operator CFX_WideString(); + swMsg += (*pValue).ToCFXWideString(); if (i < iLenth - 1) swMsg += L", "; } if(pValue) delete pValue; -// if ((iLenth > 1) && pValue) -// { -// delete[]pValue; -// pValue = NULL; -// } -// else if ((iLenth == 1) && pValue) -// { -// delete pValue; -// pValue = NULL; -// } } } @@ -379,7 +369,7 @@ FX_BOOL app::alert(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& v } else if (params[0].GetType() == VT_boolean) { - FX_BOOL bGet = (FX_BOOL)params[0]; + FX_BOOL bGet = params[0].ToBool(); if (bGet) swMsg = L"true"; else @@ -389,7 +379,7 @@ FX_BOOL app::alert(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& v } else { - swMsg = params[0]; + swMsg = params[0].ToCFXWideString(); swTitle = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSALERT); } } @@ -397,7 +387,7 @@ FX_BOOL app::alert(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& v { if (params[0].GetType() == VT_boolean) { - FX_BOOL bGet = (FX_BOOL)params[0]; + FX_BOOL bGet = params[0].ToBool(); if (bGet) swMsg = L"true"; else @@ -405,18 +395,18 @@ FX_BOOL app::alert(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& v } else { - swMsg = params[0]; + swMsg = params[0].ToCFXWideString(); } swTitle = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSALERT); for(int i = 1;iGetJSRuntime(); CPDFDoc_Environment * pEnv = pRuntime->GetReaderApp(); - pEnv->JS_appBeep((int)params[0]); - + pEnv->JS_appBeep(params[0].ToInt()); return TRUE; } - else - { - sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR); - return FALSE; - } + + sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR); + return FALSE; } FX_BOOL app::findComponent(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError) @@ -479,14 +466,14 @@ FX_BOOL app::setInterval(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Va CJS_Runtime* pRuntime = pContext->GetJSRuntime(); ASSERT(pRuntime != NULL); - CFX_WideString script = params.size() > 0 ? (FX_LPCWSTR)(params[0].operator CFX_WideString()) : L""; + CFX_WideString script = params.size() > 0 ? (FX_LPCWSTR)(params[0].ToCFXWideString()) : L""; if (script.IsEmpty()) { sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSAFNUMBER_KEYSTROKE); return TRUE; } - FX_DWORD dwInterval = params.size() > 1 ? (int)params[1] : 1000; + FX_DWORD dwInterval = params.size() > 1 ? params[1].ToInt() : 1000; CPDFDoc_Environment* pApp = pRuntime->GetReaderApp(); ASSERT(pApp); @@ -528,17 +515,18 @@ FX_BOOL app::setTimeOut(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Val CJS_Runtime* pRuntime = pContext->GetJSRuntime(); ASSERT(pRuntime != NULL); - CFX_WideString script = params.size() > 0 ? (FX_LPCWSTR)(params[0].operator CFX_WideString()) : L""; + CFX_WideString script = params.size() > 0 ? (FX_LPCWSTR)(params[0].ToCFXWideString()) : L""; if (script.IsEmpty()) { sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSAFNUMBER_KEYSTROKE); return TRUE; } - FX_DWORD dwTimeOut = params.size() > 1 ? (int)params[1] : 1000; + FX_DWORD dwTimeOut = params.size() > 1 ? params[1].ToInt() : 1000; CPDFDoc_Environment* pApp = pRuntime->GetReaderApp(); ASSERT(pApp); + CJS_Timer* pTimer = new CJS_Timer(this, pApp); m_aTimer.Add(pTimer); @@ -546,12 +534,9 @@ FX_BOOL app::setTimeOut(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Val pTimer->SetRuntime(pRuntime); pTimer->SetJScript(script); pTimer->SetTimeOut(dwTimeOut); -// pTimer->SetStartTime(GetTickCount()); -// pTimer->SetJSTimer(1000); pTimer->SetJSTimer(dwTimeOut); JSFXObject pRetObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"TimerObj")); -// ASSERT(pRetObj != NULL); CJS_TimerObj* pJS_TimerObj = (CJS_TimerObj*)JS_GetPrivate(pRuntime->GetIsolate(),pRetObj); ASSERT(pJS_TimerObj != NULL); @@ -581,11 +566,11 @@ FX_BOOL app::clearTimeOut(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V if (params[0].GetType() == VT_fxobject) { - JSFXObject pObj = (JSFXObject)params[0]; + JSFXObject pObj = params[0].ToV8Object(); { if (JS_GetObjDefnID(pObj) == JS_GetObjDefnID(*pRuntime, L"TimerObj")) { - if (CJS_Object* pJSObj = (CJS_Object*)params[0]) + if (CJS_Object* pJSObj = params[0].ToCJSObject()) { if (TimerObj* pTimerObj = (TimerObj*)pJSObj->GetEmbedObject()) { @@ -629,11 +614,11 @@ FX_BOOL app::clearInterval(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ if (params[0].GetType() == VT_fxobject) { - JSFXObject pObj = (JSFXObject)params[0]; + JSFXObject pObj = params[0].ToV8Object(); { if (JS_GetObjDefnID(pObj) == JS_GetObjDefnID(*pRuntime, L"TimerObj")) { - if (CJS_Object* pJSObj = (CJS_Object*)params[0]) + if (CJS_Object* pJSObj = params[0].ToCJSObject()) { if (TimerObj* pTimerObj = (TimerObj*)pJSObj->GetEmbedObject()) { @@ -717,8 +702,6 @@ FX_BOOL app::goForward(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Valu FX_BOOL app::mailMsg(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError) { CJS_Context* pContext = (CJS_Context*)cc; - ASSERT(pContext != NULL); - v8::Isolate* isolate = GetIsolate(cc); FX_BOOL bUI = TRUE; @@ -727,42 +710,48 @@ FX_BOOL app::mailMsg(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& CFX_WideString cBcc = L""; CFX_WideString cSubject = L""; CFX_WideString cMsg = L""; - if(params.size() < 2) - return FALSE; - - bUI = params.size()>=1?(int)params[0]:TRUE; - cTo = params.size()>=2?(const wchar_t*)(FX_LPCWSTR)params[1].operator CFX_WideString():L""; - cCc = params.size()>=3?(const wchar_t*)(FX_LPCWSTR)params[2].operator CFX_WideString():L""; - cBcc = params.size()>=4?(const wchar_t*)(FX_LPCWSTR)params[3].operator CFX_WideString():L""; - cSubject = params.size()>=5?(const wchar_t*)(FX_LPCWSTR)params[4].operator CFX_WideString():L""; - cMsg = params.size()>=6?(const wchar_t*)(FX_LPCWSTR)params[5].operator CFX_WideString():L""; + if (params.size() < 1) + return FALSE; if (params[0].GetType() == VT_object) { - JSObject pObj = (JSObject)params[0]; + JSObject pObj = params[0].ToV8Object(); - v8::Handle pValue = JS_GetObjectElement(isolate,pObj, L"bUI"); - bUI = (int)CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)); + v8::Handle pValue = JS_GetObjectElement(isolate, pObj, L"bUI"); + bUI = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBool(); pValue = JS_GetObjectElement(isolate, pObj, L"cTo"); - cTo = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); - - pValue = JS_GetObjectElement(isolate,pObj, L"cCc"); - cCc = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); - - pValue = JS_GetObjectElement(isolate,pObj, L"cBcc"); - cBcc = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); - - pValue = JS_GetObjectElement(isolate,pObj, L"cSubject"); - cSubject = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); - - pValue = JS_GetObjectElement(isolate,pObj, L"cMsg"); - cMsg = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); + cTo = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); + + pValue = JS_GetObjectElement(isolate, pObj, L"cCc"); + cCc = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); + + pValue = JS_GetObjectElement(isolate, pObj, L"cBcc"); + cBcc = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); + + pValue = JS_GetObjectElement(isolate, pObj, L"cSubject"); + cSubject = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); + + pValue = JS_GetObjectElement(isolate, pObj, L"cMsg"); + cMsg = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); + } else { + if (params.size() < 2) + return FALSE; + + bUI = params[0].ToBool(); + cTo = params[1].ToCFXWideString(); + + if (params.size() >= 3) + cCc = params[2].ToCFXWideString(); + if (params.size() >= 4) + cBcc = params[3].ToCFXWideString(); + if (params.size() >= 5) + cSubject = params[4].ToCFXWideString(); + if (params.size() >= 6) + cMsg = params[5].ToCFXWideString(); } - - CJS_Runtime* pRuntime = pContext->GetJSRuntime(); ASSERT(pRuntime != NULL); @@ -771,10 +760,8 @@ FX_BOOL app::mailMsg(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& pRuntime->BeginBlock(); pApp->JS_docmailForm(NULL, 0, bUI, cTo.c_str(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(), cMsg.c_str()); - /////////////////////////////////////////////////////////////////////////////////////////////// pRuntime->EndBlock(); - //return bRet; return FALSE; } @@ -864,40 +851,40 @@ FX_BOOL app::response(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value int iLength = params.size(); if (iLength > 0 && params[0].GetType() == VT_object) { - JSObject pObj = (JSObject )params[0]; + JSObject pObj = params[0].ToV8Object(); v8::Handle pValue = JS_GetObjectElement(isolate,pObj,L"cQuestion"); - swQuestion = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); + swQuestion = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString(); pValue = JS_GetObjectElement(isolate,pObj,L"cTitle"); - swTitle = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); + swTitle = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString(); pValue = JS_GetObjectElement(isolate,pObj,L"cDefault"); - swDefault = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); + swDefault = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString(); pValue = JS_GetObjectElement(isolate,pObj,L"cLabel"); - swLabel = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); + swLabel = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString(); pValue = JS_GetObjectElement(isolate,pObj,L"bPassword"); - bPassWord = (bool)CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)); + bPassWord = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToBool(); } else { switch(iLength) { case 5: - swLabel = params[4]; + swLabel = params[4].ToCFXWideString(); // FALLTHROUGH case 4: - bPassWord = params[3]; + bPassWord = params[3].ToBool(); // FALLTHROUGH case 3: - swDefault = params[2]; + swDefault = params[2].ToCFXWideString(); // FALLTHROUGH case 2: - swTitle = params[1]; + swTitle = params[1].ToCFXWideString(); // FALLTHROUGH case 1: - swQuestion = params[0]; + swQuestion = params[0].ToCFXWideString(); // FALLTHROUGH default: break; diff --git a/fpdfsdk/src/javascript/color.cpp b/fpdfsdk/src/javascript/color.cpp index a338624bd9..ddf6ed4361 100644 --- a/fpdfsdk/src/javascript/color.cpp +++ b/fpdfsdk/src/javascript/color.cpp @@ -104,9 +104,8 @@ void color::ConvertArrayToPWLColor(CJS_Array& array, CPWL_Color& color) if (nArrayLen < 1) return; CJS_Value value(array.GetIsolate()); - CFX_ByteString sSpace; array.GetElement(0, value); - sSpace = value; + CFX_ByteString sSpace = value.ToCFXByteString(); double d1 = 0; double d2 = 0; @@ -116,25 +115,25 @@ void color::ConvertArrayToPWLColor(CJS_Array& array, CPWL_Color& color) if (nArrayLen > 1) { array.GetElement(1, value); - d1 = value; + d1 = value.ToDouble(); } if (nArrayLen > 2) { array.GetElement(2, value); - d2 = value; + d2 = value.ToDouble(); } if (nArrayLen > 3) { array.GetElement(3, value); - d3 = value; + d3 = value.ToDouble(); } if (nArrayLen > 4) { array.GetElement(4, value); - d4 = value; + d4 = value.ToDouble(); } if (sSpace == "T") @@ -199,10 +198,9 @@ FX_BOOL color::convert(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Valu CPWL_Color crSource; ConvertArrayToPWLColor(aSource, crSource); - CFX_ByteString sDestSpace = params[1]; - + CFX_ByteString sDestSpace = params[1].ToCFXByteString(); int nColorType = COLORTYPE_TRANSPARENT; - + if (sDestSpace == "T") { nColorType = COLORTYPE_TRANSPARENT; diff --git a/fpdfsdk/src/javascript/event.cpp b/fpdfsdk/src/javascript/event.cpp index 620b43ebfa..fb57e741ee 100644 --- a/fpdfsdk/src/javascript/event.cpp +++ b/fpdfsdk/src/javascript/event.cpp @@ -352,7 +352,7 @@ FX_BOOL event::value(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sErro CFX_WideString & val = pEvent->Value(); if (vp.IsSetting()) { - val = vp; + vp >> val; } else { diff --git a/fpdfsdk/src/javascript/global.cpp b/fpdfsdk/src/javascript/global.cpp index 4ed0d66b1e..6b5d5e2725 100644 --- a/fpdfsdk/src/javascript/global.cpp +++ b/fpdfsdk/src/javascript/global.cpp @@ -174,7 +174,7 @@ FX_BOOL global_alternate::DoProperty(IFXJS_Context* cc, FX_LPCWSTR propname, CJS { bool bData; vp >> bData; - return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_BOOLEAN, 0, (bool)vp, "", v8::Handle(), FALSE); + return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_BOOLEAN, 0, bData, "", v8::Handle(), FALSE); } case VT_string: { @@ -184,20 +184,9 @@ FX_BOOL global_alternate::DoProperty(IFXJS_Context* cc, FX_LPCWSTR propname, CJS } case VT_object: { - JSObject pData = (JSObject)vp; + JSObject pData; + vp >> pData; return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_OBJECT, 0, false, "", pData, FALSE); -// else -// { -// if (vp.IsArrayObject()) -// { -// CJS_Array array; -// vp.ConvertToArray(array); -// return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_OBJECT, 0, false, "", -// (Dobject*)(Darray*)array, FALSE); -// } -// else -// return FALSE; -// } } case VT_null: { @@ -278,14 +267,14 @@ FX_BOOL global_alternate::setPersistent(IFXJS_Context* cc, const CJS_Parameters& return FALSE; } - CFX_ByteString sName = params[0]; + CFX_ByteString sName = params[0].ToCFXByteString(); js_global_data* pData = NULL; if (m_mapGlobal.Lookup(sName, (FX_LPVOID&)pData)) { if (pData && !pData->bDeleted) { - pData->bPersistent = (bool)params[1]; + pData->bPersistent = params[1].ToBool(); return TRUE; } } @@ -434,7 +423,7 @@ void global_alternate::ObjectToArray(v8::Handle pObj, CJS_GlobalVari break; case VT_string: { - CFX_ByteString sValue = CJS_Value(isolate, v, VT_string); + CFX_ByteString sValue = CJS_Value(isolate, v, VT_string).ToCFXByteString(); CJS_KeyValue* pObjElement = new CJS_KeyValue; pObjElement->nType = JS_GLOBALDATA_TYPE_STRING; pObjElement->sKey = sKey; diff --git a/fpdfsdk/src/javascript/util.cpp b/fpdfsdk/src/javascript/util.cpp index 0ac98ddbac..6898d0c1a2 100644 --- a/fpdfsdk/src/javascript/util.cpp +++ b/fpdfsdk/src/javascript/util.cpp @@ -142,7 +142,7 @@ FX_BOOL util::printf(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& int iSize = params.size(); if (iSize < 1) return FALSE; - std::wstring c_ConvChar((const wchar_t*)(FX_LPCWSTR)params[0].operator CFX_WideString()); + std::wstring c_ConvChar(params[0].ToCFXWideString().c_str()); std::vector c_strConvers; int iOffset = 0; int iOffend = 0; @@ -182,13 +182,13 @@ FX_BOOL util::printf(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& switch (ParstDataType(&c_strFormat)) { case UTIL_INT: - strSegment.Format(c_strFormat.c_str(),(int)params[iIndex]); + strSegment.Format(c_strFormat.c_str(), params[iIndex].ToInt()); break; case UTIL_DOUBLE: - strSegment.Format(c_strFormat.c_str(),(double)params[iIndex]); + strSegment.Format(c_strFormat.c_str(), params[iIndex].ToDouble()); break; case UTIL_STRING: - strSegment.Format(c_strFormat.c_str(),(FX_LPCWSTR)params[iIndex].operator CFX_WideString()); + strSegment.Format(c_strFormat.c_str(), params[iIndex].ToCFXWideString().c_str()); break; default: strSegment.Format(L"%S", c_strFormat.c_str()); @@ -229,8 +229,7 @@ FX_BOOL util::printd(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& if (p1.GetType() == VT_number) { - int nFormat = p1; - + int nFormat = p1.ToInt(); CFX_WideString swResult; switch (nFormat) @@ -271,13 +270,12 @@ FX_BOOL util::printd(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& } else if (p1.GetType() == VT_string) { - std::basic_string cFormat = (FX_LPCWSTR)p1.operator CFX_WideString(); + std::basic_string cFormat = p1.ToCFXWideString().c_str(); bool bXFAPicture = false; if (iSize > 2) { - //CJS_Value value; - bXFAPicture = params[2]; + bXFAPicture = params[2].ToBool(); } if (bXFAPicture) @@ -467,8 +465,8 @@ FX_BOOL util::printx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& int iSize = params.size(); if (iSize<2) return FALSE; - CFX_WideString sFormat = params[0].operator CFX_WideString(); - CFX_WideString sSource = params[1].operator CFX_WideString(); + CFX_WideString sFormat = params[0].ToCFXWideString(); + CFX_WideString sSource = params[1].ToCFXWideString(); std::string cFormat = CFX_ByteString::FromUnicode(sFormat).c_str(); std::string cSource = CFX_ByteString::FromUnicode(sSource).c_str(); std::string cDest; @@ -582,9 +580,9 @@ FX_BOOL util::scand(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& int iSize = params.size(); if (iSize < 2) return FALSE; - CFX_WideString sFormat = params[0].operator CFX_WideString(); - CFX_WideString sDate = params[1].operator CFX_WideString(); + CFX_WideString sFormat = params[0].ToCFXWideString(); + CFX_WideString sDate = params[1].ToCFXWideString(); double dDate = JS_GetDateTime(); if (sDate.GetLength() > 0) { @@ -638,7 +636,7 @@ FX_BOOL util::byteToChar(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Va int iSize = params.size(); if (iSize == 0) return FALSE; - int nByte = (int)params[0]; + int nByte = params[0].ToInt(); unsigned char cByte = (unsigned char)nByte; CFX_WideString csValue; csValue.Format(L"%c", cByte); -- cgit v1.2.3