| Index: fpdfsdk/javascript/Document.cpp
|
| diff --git a/fpdfsdk/javascript/Document.cpp b/fpdfsdk/javascript/Document.cpp
|
| index 8175fba697b0bdb81fd2dfbf35b5dbbcb9a6572d..40e13125300627163b261402160b98226a4903ef 100644
|
| --- a/fpdfsdk/javascript/Document.cpp
|
| +++ b/fpdfsdk/javascript/Document.cpp
|
| @@ -201,10 +201,8 @@ FX_BOOL Document::dirty(IJS_Context* cc,
|
| FX_BOOL Document::ADBE(IJS_Context* cc,
|
| CJS_PropValue& vp,
|
| CFX_WideString& sError) {
|
| - if (vp.IsGetting()) {
|
| - vp.SetNull();
|
| - } else {
|
| - }
|
| + if (vp.IsGetting())
|
| + vp.GetJSValue()->SetNull(CJS_Runtime::FromContext(cc));
|
|
|
| return TRUE;
|
| }
|
| @@ -283,31 +281,33 @@ FX_BOOL Document::getField(IJS_Context* cc,
|
| const std::vector<CJS_Value>& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| - CJS_Context* pContext = (CJS_Context*)cc;
|
| + CJS_Context* pContext = static_cast<CJS_Context*>(cc);
|
| +
|
| if (params.size() < 1) {
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
|
| return FALSE;
|
| }
|
|
|
| - CFX_WideString wideName = params[0].ToCFXWideString();
|
| + CJS_Runtime* pRuntime = pContext->GetJSRuntime();
|
| + v8::Isolate* pIsolate = pRuntime->GetIsolate();
|
|
|
| + CFX_WideString wideName = params[0].ToCFXWideString(pIsolate);
|
| CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
|
| CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
|
| if (pPDFForm->CountFields(wideName) <= 0) {
|
| - vRet.SetNull();
|
| + vRet.SetNull(pRuntime);
|
| return TRUE;
|
| }
|
|
|
| - CJS_Runtime* pRuntime = pContext->GetJSRuntime();
|
| - v8::Local<v8::Object> pFieldObj = FXJS_NewFxDynamicObj(
|
| - pRuntime->GetIsolate(), pRuntime, CJS_Field::g_nObjDefnID);
|
| + v8::Local<v8::Object> pFieldObj =
|
| + FXJS_NewFxDynamicObj(pIsolate, pRuntime, CJS_Field::g_nObjDefnID);
|
|
|
| - v8::Isolate* isolate = GetIsolate(cc);
|
| - CJS_Field* pJSField = (CJS_Field*)FXJS_GetPrivate(isolate, pFieldObj);
|
| - Field* pField = (Field*)pJSField->GetEmbedObject();
|
| + CJS_Field* pJSField =
|
| + static_cast<CJS_Field*>(FXJS_GetPrivate(pIsolate, pFieldObj));
|
| + Field* pField = static_cast<Field*>(pJSField->GetEmbedObject());
|
| pField->AttachField(this, wideName);
|
|
|
| - vRet = pJSField;
|
| + vRet = CJS_Value(pRuntime, pJSField);
|
| return TRUE;
|
| }
|
|
|
| @@ -316,13 +316,17 @@ FX_BOOL Document::getNthFieldName(IJS_Context* cc,
|
| const std::vector<CJS_Value>& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| - CJS_Context* pContext = (CJS_Context*)cc;
|
| + CJS_Context* pContext = static_cast<CJS_Context*>(cc);
|
| +
|
| if (params.size() != 1) {
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
|
| return FALSE;
|
| }
|
|
|
| - int nIndex = params[0].ToInt();
|
| + CJS_Runtime* pRuntime = pContext->GetJSRuntime();
|
| + v8::Isolate* pIsolate = pRuntime->GetIsolate();
|
| +
|
| + int nIndex = params[0].ToInt(pIsolate);
|
| if (nIndex < 0) {
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR);
|
| return FALSE;
|
| @@ -334,7 +338,7 @@ FX_BOOL Document::getNthFieldName(IJS_Context* cc,
|
| if (!pField)
|
| return FALSE;
|
|
|
| - vRet = pField->GetFullName().c_str();
|
| + vRet = CJS_Value(pRuntime, pField->GetFullName().c_str());
|
| return TRUE;
|
| }
|
|
|
| @@ -373,28 +377,30 @@ FX_BOOL Document::mailForm(IJS_Context* cc,
|
| const std::vector<CJS_Value>& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| + CJS_Context* pContext = static_cast<CJS_Context*>(cc);
|
| +
|
| if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS))
|
| return FALSE;
|
|
|
| int iLength = params.size();
|
| + CJS_Runtime* pRuntime = pContext->GetJSRuntime();
|
| + v8::Isolate* pIsolate = pRuntime->GetIsolate();
|
|
|
| - 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"";
|
| + FX_BOOL bUI = iLength > 0 ? params[0].ToBool(pIsolate) : TRUE;
|
| + CFX_WideString cTo = iLength > 1 ? params[1].ToCFXWideString(pIsolate) : L"";
|
| + CFX_WideString cCc = iLength > 2 ? params[2].ToCFXWideString(pIsolate) : L"";
|
| + CFX_WideString cBcc = iLength > 3 ? params[3].ToCFXWideString(pIsolate) : L"";
|
| + CFX_WideString cSubject =
|
| + iLength > 4 ? params[4].ToCFXWideString(pIsolate) : L"";
|
| + CFX_WideString cMsg = iLength > 5 ? params[5].ToCFXWideString(pIsolate) : L"";
|
|
|
| CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
|
| CFX_ByteTextBuf textBuf;
|
| if (!pInterForm->ExportFormToFDFTextBuf(textBuf))
|
| return FALSE;
|
|
|
| - CJS_Context* pContext = (CJS_Context*)cc;
|
| - CPDFDoc_Environment* pEnv = pContext->GetReaderApp();
|
| - CJS_Runtime* pRuntime = pContext->GetJSRuntime();
|
| -
|
| pRuntime->BeginBlock();
|
| + CPDFDoc_Environment* pEnv = pContext->GetReaderApp();
|
| pEnv->JS_docmailForm(textBuf.GetBuffer(), textBuf.GetLength(), bUI,
|
| cTo.c_str(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(),
|
| cMsg.c_str());
|
| @@ -406,6 +412,10 @@ FX_BOOL Document::print(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();
|
| + v8::Isolate* pIsolate = pRuntime->GetIsolate();
|
| +
|
| FX_BOOL bUI = TRUE;
|
| int nStart = 0;
|
| int nEnd = 0;
|
| @@ -418,9 +428,9 @@ FX_BOOL Document::print(IJS_Context* cc,
|
| int nlength = params.size();
|
| if (nlength == 9) {
|
| if (params[8].GetType() == CJS_Value::VT_object) {
|
| - v8::Local<v8::Object> pObj = params[8].ToV8Object();
|
| + v8::Local<v8::Object> pObj = params[8].ToV8Object(pIsolate);
|
| if (FXJS_GetObjDefnID(pObj) == CJS_PrintParamsObj::g_nObjDefnID) {
|
| - if (CJS_Object* pJSObj = params[8].ToCJSObject()) {
|
| + if (CJS_Object* pJSObj = params[8].ToCJSObject(pIsolate)) {
|
| if (PrintParamsObj* pprintparamsObj =
|
| static_cast<PrintParamsObj*>(pJSObj->GetEmbedObject())) {
|
| bUI = pprintparamsObj->bUI;
|
| @@ -437,21 +447,21 @@ FX_BOOL Document::print(IJS_Context* cc,
|
| }
|
| } else {
|
| if (nlength >= 1)
|
| - bUI = params[0].ToBool();
|
| + bUI = params[0].ToBool(pIsolate);
|
| if (nlength >= 2)
|
| - nStart = params[1].ToInt();
|
| + nStart = params[1].ToInt(pIsolate);
|
| if (nlength >= 3)
|
| - nEnd = params[2].ToInt();
|
| + nEnd = params[2].ToInt(pIsolate);
|
| if (nlength >= 4)
|
| - bSilent = params[3].ToBool();
|
| + bSilent = params[3].ToBool(pIsolate);
|
| if (nlength >= 5)
|
| - bShrinkToFit = params[4].ToBool();
|
| + bShrinkToFit = params[4].ToBool(pIsolate);
|
| if (nlength >= 6)
|
| - bPrintAsImage = params[5].ToBool();
|
| + bPrintAsImage = params[5].ToBool(pIsolate);
|
| if (nlength >= 7)
|
| - bReverse = params[6].ToBool();
|
| + bReverse = params[6].ToBool(pIsolate);
|
| if (nlength >= 8)
|
| - bAnnotations = params[7].ToBool();
|
| + bAnnotations = params[7].ToBool(pIsolate);
|
| }
|
|
|
| if (CPDFDoc_Environment* pEnv = m_pDocument->GetEnv()) {
|
| @@ -474,13 +484,17 @@ FX_BOOL Document::removeField(IJS_Context* cc,
|
| m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM)))
|
| return FALSE;
|
|
|
| - CJS_Context* pContext = (CJS_Context*)cc;
|
| + CJS_Context* pContext = static_cast<CJS_Context*>(cc);
|
| +
|
| if (params.size() != 1) {
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
|
| return FALSE;
|
| }
|
|
|
| - CFX_WideString sFieldName = params[0].ToCFXWideString();
|
| + CJS_Runtime* pRuntime = pContext->GetJSRuntime();
|
| + v8::Isolate* pIsolate = pRuntime->GetIsolate();
|
| +
|
| + CFX_WideString sFieldName = params[0].ToCFXWideString(pIsolate);
|
| CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
|
| std::vector<CPDFSDK_Widget*> widgets;
|
| pInterForm->GetWidgets(sFieldName, &widgets);
|
| @@ -515,6 +529,8 @@ FX_BOOL Document::resetForm(IJS_Context* cc,
|
| const std::vector<CJS_Value>& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| + CJS_Context* pContext = static_cast<CJS_Context*>(cc);
|
| +
|
| if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) ||
|
| m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) ||
|
| m_pDocument->GetPermissions(FPDFPERM_FILL_FORM)))
|
| @@ -522,7 +538,6 @@ FX_BOOL Document::resetForm(IJS_Context* cc,
|
|
|
| CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
|
| CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
|
| - CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
|
| CJS_Array aName;
|
|
|
| if (params.empty()) {
|
| @@ -531,9 +546,12 @@ FX_BOOL Document::resetForm(IJS_Context* cc,
|
| return TRUE;
|
| }
|
|
|
| + CJS_Runtime* pRuntime = pContext->GetJSRuntime();
|
| + v8::Isolate* pIsolate = pRuntime->GetIsolate();
|
| +
|
| switch (params[0].GetType()) {
|
| default:
|
| - aName.Attach(params[0].ToV8Array());
|
| + aName.Attach(params[0].ToV8Array(pIsolate));
|
| break;
|
| case CJS_Value::VT_string:
|
| aName.SetElement(pRuntime->GetIsolate(), 0, params[0]);
|
| @@ -544,7 +562,7 @@ FX_BOOL Document::resetForm(IJS_Context* cc,
|
| for (int i = 0, isz = aName.GetLength(); i < isz; ++i) {
|
| CJS_Value valElement(pRuntime);
|
| aName.GetElement(pRuntime->GetIsolate(), i, valElement);
|
| - CFX_WideString swVal = valElement.ToCFXWideString();
|
| + CFX_WideString swVal = valElement.ToCFXWideString(pIsolate);
|
| for (int j = 0, jsz = pPDFForm->CountFields(swVal); j < jsz; ++j)
|
| aFields.push_back(pPDFForm->GetField(j, swVal));
|
| }
|
| @@ -569,43 +587,46 @@ FX_BOOL Document::submitForm(IJS_Context* cc,
|
| const std::vector<CJS_Value>& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| - CJS_Context* pContext = (CJS_Context*)cc;
|
| + CJS_Context* pContext = static_cast<CJS_Context*>(cc);
|
| +
|
| int nSize = params.size();
|
| if (nSize < 1) {
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
|
| return FALSE;
|
| }
|
|
|
| - CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
|
| - v8::Isolate* isolate = pRuntime->GetIsolate();
|
| CJS_Array aFields;
|
| CFX_WideString strURL;
|
| FX_BOOL bFDF = TRUE;
|
| FX_BOOL bEmpty = FALSE;
|
|
|
| + CJS_Runtime* pRuntime = pContext->GetJSRuntime();
|
| + v8::Isolate* pIsolate = pRuntime->GetIsolate();
|
| +
|
| CJS_Value v = params[0];
|
| if (v.GetType() == CJS_Value::VT_string) {
|
| - strURL = params[0].ToCFXWideString();
|
| + strURL = params[0].ToCFXWideString(pIsolate);
|
| if (nSize > 1)
|
| - bFDF = params[1].ToBool();
|
| + bFDF = params[1].ToBool(pIsolate);
|
| if (nSize > 2)
|
| - bEmpty = params[2].ToBool();
|
| + bEmpty = params[2].ToBool(pIsolate);
|
| if (nSize > 3)
|
| - aFields.Attach(params[3].ToV8Array());
|
| + aFields.Attach(params[3].ToV8Array(pIsolate));
|
| } else if (v.GetType() == CJS_Value::VT_object) {
|
| - v8::Local<v8::Object> pObj = params[0].ToV8Object();
|
| - v8::Local<v8::Value> pValue = FXJS_GetObjectElement(isolate, pObj, L"cURL");
|
| + v8::Local<v8::Object> pObj = params[0].ToV8Object(pIsolate);
|
| + v8::Local<v8::Value> pValue =
|
| + FXJS_GetObjectElement(pIsolate, pObj, L"cURL");
|
| if (!pValue.IsEmpty())
|
| - strURL = CJS_Value(pRuntime, pValue).ToCFXWideString();
|
| + strURL = CJS_Value(pRuntime, pValue).ToCFXWideString(pIsolate);
|
|
|
| - pValue = FXJS_GetObjectElement(isolate, pObj, L"bFDF");
|
| - bFDF = CJS_Value(pRuntime, pValue).ToBool();
|
| + pValue = FXJS_GetObjectElement(pIsolate, pObj, L"bFDF");
|
| + bFDF = CJS_Value(pRuntime, pValue).ToBool(pIsolate);
|
|
|
| - pValue = FXJS_GetObjectElement(isolate, pObj, L"bEmpty");
|
| - bEmpty = CJS_Value(pRuntime, pValue).ToBool();
|
| + pValue = FXJS_GetObjectElement(pIsolate, pObj, L"bEmpty");
|
| + bEmpty = CJS_Value(pRuntime, pValue).ToBool(pIsolate);
|
|
|
| - pValue = FXJS_GetObjectElement(isolate, pObj, L"aFields");
|
| - aFields.Attach(CJS_Value(pRuntime, pValue).ToV8Array());
|
| + pValue = FXJS_GetObjectElement(pIsolate, pObj, L"aFields");
|
| + aFields.Attach(CJS_Value(pRuntime, pValue).ToV8Array(pIsolate));
|
| }
|
|
|
| CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
|
| @@ -624,7 +645,7 @@ FX_BOOL Document::submitForm(IJS_Context* cc,
|
| CJS_Value valName(pRuntime);
|
| aFields.GetElement(pRuntime->GetIsolate(), i, valName);
|
|
|
| - CFX_WideString sName = valName.ToCFXWideString();
|
| + CFX_WideString sName = valName.ToCFXWideString(pIsolate);
|
| CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
|
| for (int j = 0, jsz = pPDFForm->CountFields(sName); j < jsz; ++j) {
|
| CPDF_FormField* pField = pPDFForm->GetField(j, sName);
|
| @@ -661,6 +682,10 @@ FX_BOOL Document::mailDoc(IJS_Context* cc,
|
| const std::vector<CJS_Value>& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| + CJS_Context* pContext = static_cast<CJS_Context*>(cc);
|
| +
|
| + // TODO(tsepez): Check maximum number of allowed params.
|
| +
|
| FX_BOOL bUI = TRUE;
|
| CFX_WideString cTo = L"";
|
| CFX_WideString cCc = L"";
|
| @@ -668,42 +693,42 @@ FX_BOOL Document::mailDoc(IJS_Context* cc,
|
| CFX_WideString cSubject = L"";
|
| CFX_WideString cMsg = L"";
|
|
|
| + CJS_Runtime* pRuntime = pContext->GetJSRuntime();
|
| + v8::Isolate* pIsolate = pRuntime->GetIsolate();
|
| +
|
| if (params.size() >= 1)
|
| - bUI = params[0].ToBool();
|
| + bUI = params[0].ToBool(pIsolate);
|
| if (params.size() >= 2)
|
| - cTo = params[1].ToCFXWideString();
|
| + cTo = params[1].ToCFXWideString(pIsolate);
|
| if (params.size() >= 3)
|
| - cCc = params[2].ToCFXWideString();
|
| + cCc = params[2].ToCFXWideString(pIsolate);
|
| if (params.size() >= 4)
|
| - cBcc = params[3].ToCFXWideString();
|
| + cBcc = params[3].ToCFXWideString(pIsolate);
|
| if (params.size() >= 5)
|
| - cSubject = params[4].ToCFXWideString();
|
| + cSubject = params[4].ToCFXWideString(pIsolate);
|
| if (params.size() >= 6)
|
| - cMsg = params[5].ToCFXWideString();
|
| -
|
| - CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
|
| - v8::Isolate* isolate = pRuntime->GetIsolate();
|
| + cMsg = params[5].ToCFXWideString(pIsolate);
|
|
|
| if (params.size() >= 1 && params[0].GetType() == CJS_Value::VT_object) {
|
| - v8::Local<v8::Object> pObj = params[0].ToV8Object();
|
| + v8::Local<v8::Object> pObj = params[0].ToV8Object(pIsolate);
|
|
|
| - v8::Local<v8::Value> pValue = FXJS_GetObjectElement(isolate, pObj, L"bUI");
|
| - bUI = CJS_Value(pRuntime, pValue).ToInt();
|
| + v8::Local<v8::Value> pValue = FXJS_GetObjectElement(pIsolate, pObj, L"bUI");
|
| + bUI = CJS_Value(pRuntime, pValue).ToInt(pIsolate);
|
|
|
| - pValue = FXJS_GetObjectElement(isolate, pObj, L"cTo");
|
| - cTo = CJS_Value(pRuntime, pValue).ToCFXWideString();
|
| + pValue = FXJS_GetObjectElement(pIsolate, pObj, L"cTo");
|
| + cTo = CJS_Value(pRuntime, pValue).ToCFXWideString(pIsolate);
|
|
|
| - pValue = FXJS_GetObjectElement(isolate, pObj, L"cCc");
|
| - cCc = CJS_Value(pRuntime, pValue).ToCFXWideString();
|
| + pValue = FXJS_GetObjectElement(pIsolate, pObj, L"cCc");
|
| + cCc = CJS_Value(pRuntime, pValue).ToCFXWideString(pIsolate);
|
|
|
| - pValue = FXJS_GetObjectElement(isolate, pObj, L"cBcc");
|
| - cBcc = CJS_Value(pRuntime, pValue).ToCFXWideString();
|
| + pValue = FXJS_GetObjectElement(pIsolate, pObj, L"cBcc");
|
| + cBcc = CJS_Value(pRuntime, pValue).ToCFXWideString(pIsolate);
|
|
|
| - pValue = FXJS_GetObjectElement(isolate, pObj, L"cSubject");
|
| - cSubject = CJS_Value(pRuntime, pValue).ToCFXWideString();
|
| + pValue = FXJS_GetObjectElement(pIsolate, pObj, L"cSubject");
|
| + cSubject = CJS_Value(pRuntime, pValue).ToCFXWideString(pIsolate);
|
|
|
| - pValue = FXJS_GetObjectElement(isolate, pObj, L"cMsg");
|
| - cMsg = CJS_Value(pRuntime, pValue).ToCFXWideString();
|
| + pValue = FXJS_GetObjectElement(pIsolate, pObj, L"cMsg");
|
| + cMsg = CJS_Value(pRuntime, pValue).ToCFXWideString(pIsolate);
|
| }
|
|
|
| pRuntime->BeginBlock();
|
| @@ -1028,7 +1053,7 @@ FX_BOOL Document::getAnnots(IJS_Context* cc,
|
| const std::vector<CJS_Value>& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| - vRet.SetNull();
|
| + vRet.SetNull(CJS_Runtime::FromContext(cc));
|
| return TRUE;
|
| }
|
|
|
| @@ -1036,7 +1061,7 @@ FX_BOOL Document::getAnnot3D(IJS_Context* cc,
|
| const std::vector<CJS_Value>& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| - vRet.SetNull();
|
| + vRet.SetNull(CJS_Runtime::FromContext(cc));
|
| return TRUE;
|
| }
|
|
|
| @@ -1044,7 +1069,6 @@ FX_BOOL Document::getAnnots3D(IJS_Context* cc,
|
| const std::vector<CJS_Value>& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| - vRet = CJS_Value::VT_undefined;
|
| return TRUE;
|
| }
|
|
|
| @@ -1071,25 +1095,30 @@ FX_BOOL Document::addIcon(IJS_Context* cc,
|
| const std::vector<CJS_Value>& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| - CJS_Context* pContext = (CJS_Context*)cc;
|
| + CJS_Context* pContext = static_cast<CJS_Context*>(cc);
|
| +
|
| if (params.size() != 2) {
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
|
| return FALSE;
|
| }
|
| - CFX_WideString swIconName = params[0].ToCFXWideString();
|
| +
|
| + CJS_Runtime* pRuntime = pContext->GetJSRuntime();
|
| + v8::Isolate* pIsolate = pRuntime->GetIsolate();
|
| +
|
| + CFX_WideString swIconName = params[0].ToCFXWideString(pIsolate);
|
|
|
| if (params[1].GetType() != CJS_Value::VT_object) {
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR);
|
| return FALSE;
|
| }
|
|
|
| - v8::Local<v8::Object> pJSIcon = params[1].ToV8Object();
|
| + v8::Local<v8::Object> pJSIcon = params[1].ToV8Object(pIsolate);
|
| if (FXJS_GetObjDefnID(pJSIcon) != CJS_Icon::g_nObjDefnID) {
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR);
|
| return FALSE;
|
| }
|
|
|
| - CJS_EmbedObj* pEmbedObj = params[1].ToCJSObject()->GetEmbedObject();
|
| + CJS_EmbedObj* pEmbedObj = params[1].ToCJSObject(pIsolate)->GetEmbedObject();
|
| if (!pEmbedObj) {
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR);
|
| return FALSE;
|
| @@ -1103,18 +1132,18 @@ FX_BOOL Document::addIcon(IJS_Context* cc,
|
| FX_BOOL Document::icons(IJS_Context* cc,
|
| CJS_PropValue& vp,
|
| CFX_WideString& sError) {
|
| + CJS_Context* pContext = static_cast<CJS_Context*>(cc);
|
| if (vp.IsSetting()) {
|
| - CJS_Context* pContext = static_cast<CJS_Context*>(cc);
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
|
| return FALSE;
|
| }
|
|
|
| + CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
|
| if (m_IconList.empty()) {
|
| - vp.SetNull();
|
| + vp.GetJSValue()->SetNull(pRuntime);
|
| return TRUE;
|
| }
|
|
|
| - CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
|
| CJS_Array Icons;
|
|
|
| int i = 0;
|
| @@ -1146,7 +1175,7 @@ FX_BOOL Document::getIcon(IJS_Context* cc,
|
| const std::vector<CJS_Value>& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| - CJS_Context* pContext = (CJS_Context*)cc;
|
| + CJS_Context* pContext = static_cast<CJS_Context*>(cc);
|
| if (params.size() != 1) {
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
|
| return FALSE;
|
| @@ -1155,8 +1184,10 @@ FX_BOOL Document::getIcon(IJS_Context* cc,
|
| if (m_IconList.empty())
|
| return FALSE;
|
|
|
| - CFX_WideString swIconName = params[0].ToCFXWideString();
|
| CJS_Runtime* pRuntime = pContext->GetJSRuntime();
|
| + v8::Isolate* pIsolate = pRuntime->GetIsolate();
|
| +
|
| + CFX_WideString swIconName = params[0].ToCFXWideString(pIsolate);
|
|
|
| for (const auto& pIconElement : m_IconList) {
|
| if (pIconElement->IconName == swIconName) {
|
| @@ -1177,7 +1208,7 @@ FX_BOOL Document::getIcon(IJS_Context* cc,
|
|
|
| pIcon->SetIconName(swIconName);
|
| pIcon->SetStream(pRetIcon->GetStream());
|
| - vRet = pJS_Icon;
|
| + vRet = CJS_Value(pRuntime, pJS_Icon);
|
| return TRUE;
|
| }
|
| }
|
| @@ -1231,18 +1262,24 @@ FX_BOOL Document::getPageNthWord(IJS_Context* cc,
|
| const std::vector<CJS_Value>& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| + CJS_Context* pContext = static_cast<CJS_Context*>(cc);
|
| +
|
| + // TODO(tsepez): check maximum allowable params.
|
| +
|
| if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS))
|
| return FALSE;
|
|
|
| - int nPageNo = params.size() > 0 ? params[0].ToInt() : 0;
|
| - int nWordNo = params.size() > 1 ? params[1].ToInt() : 0;
|
| - bool bStrip = params.size() > 2 ? params[2].ToBool() : true;
|
| + CJS_Runtime* pRuntime = pContext->GetJSRuntime();
|
| + v8::Isolate* pIsolate = pRuntime->GetIsolate();
|
| +
|
| + int nPageNo = params.size() > 0 ? params[0].ToInt(pIsolate) : 0;
|
| + int nWordNo = params.size() > 1 ? params[1].ToInt(pIsolate) : 0;
|
| + bool bStrip = params.size() > 2 ? params[2].ToBool(pIsolate) : true;
|
|
|
| CPDF_Document* pDocument = m_pDocument->GetPDFDocument();
|
| if (!pDocument)
|
| return FALSE;
|
|
|
| - CJS_Context* pContext = static_cast<CJS_Context*>(cc);
|
| if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) {
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR);
|
| return FALSE;
|
| @@ -1274,7 +1311,7 @@ FX_BOOL Document::getPageNthWord(IJS_Context* cc,
|
| swRet.TrimRight();
|
| }
|
|
|
| - vRet = swRet.c_str();
|
| + vRet = CJS_Value(pRuntime, swRet.c_str());
|
| return TRUE;
|
| }
|
|
|
| @@ -1292,12 +1329,16 @@ FX_BOOL Document::getPageNumWords(IJS_Context* cc,
|
| const std::vector<CJS_Value>& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| + CJS_Context* pContext = static_cast<CJS_Context*>(cc);
|
| +
|
| if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS))
|
| return FALSE;
|
|
|
| - int nPageNo = params.size() > 0 ? params[0].ToInt() : 0;
|
| + CJS_Runtime* pRuntime = pContext->GetJSRuntime();
|
| + v8::Isolate* pIsolate = pRuntime->GetIsolate();
|
| +
|
| + int nPageNo = params.size() > 0 ? params[0].ToInt(pIsolate) : 0;
|
| CPDF_Document* pDocument = m_pDocument->GetPDFDocument();
|
| - CJS_Context* pContext = static_cast<CJS_Context*>(cc);
|
| if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) {
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR);
|
| return FALSE;
|
| @@ -1316,7 +1357,7 @@ FX_BOOL Document::getPageNumWords(IJS_Context* cc,
|
| nWords += CountWords(pPageObj->AsText());
|
| }
|
|
|
| - vRet = nWords;
|
| + vRet = CJS_Value(pRuntime, nWords);
|
| return TRUE;
|
| }
|
|
|
| @@ -1331,7 +1372,7 @@ FX_BOOL Document::getPrintParams(IJS_Context* cc,
|
|
|
| // Not implemented yet.
|
|
|
| - vRet = pRetObj;
|
| + vRet = CJS_Value(pRuntime, pRetObj);
|
| return TRUE;
|
| }
|
|
|
| @@ -1474,18 +1515,20 @@ FX_BOOL Document::gotoNamedDest(IJS_Context* cc,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| CJS_Context* context = (CJS_Context*)cc;
|
| +
|
| if (params.size() != 1) {
|
| sError = JSGetStringFromID(context, IDS_STRING_JSPARAMERROR);
|
| return FALSE;
|
| }
|
|
|
| + CJS_Runtime* runtime = context->GetJSRuntime();
|
| + CFX_WideString wideName = params[0].ToCFXWideString(runtime->GetIsolate());
|
| + CFX_ByteString utf8Name = wideName.UTF8Encode();
|
| +
|
| CPDF_Document* pDocument = m_pDocument->GetPDFDocument();
|
| if (!pDocument)
|
| return FALSE;
|
|
|
| - CFX_WideString wideName = params[0].ToCFXWideString();
|
| - CFX_ByteString utf8Name = wideName.UTF8Encode();
|
| -
|
| CPDF_NameTree nameTree(pDocument, "Dests");
|
| CPDF_Array* destArray = nameTree.LookupNamedDest(pDocument, utf8Name);
|
| if (!destArray)
|
| @@ -1505,7 +1548,6 @@ FX_BOOL Document::gotoNamedDest(IJS_Context* cc,
|
| scrollPositionArraySize = j;
|
| }
|
|
|
| - CJS_Runtime* runtime = context->GetJSRuntime();
|
| runtime->BeginBlock();
|
| CPDFDoc_Environment* pApp = m_pDocument->GetEnv();
|
| pApp->FFI_DoGoToAction(dest.GetPageIndex(pDocument), dest.GetZoomMode(),
|
|
|