Chromium Code Reviews| Index: fpdfsdk/src/javascript/Document.cpp |
| diff --git a/fpdfsdk/src/javascript/Document.cpp b/fpdfsdk/src/javascript/Document.cpp |
| index 00721bda825b9a26b05f9e24f4db85a763a959f8..624cad7eb2c53e183d99d00a0e7a77e17a088460 100644 |
| --- a/fpdfsdk/src/javascript/Document.cpp |
| +++ b/fpdfsdk/src/javascript/Document.cpp |
| @@ -98,46 +98,46 @@ BEGIN_JS_STATIC_PROP(CJS_Document) |
| END_JS_STATIC_PROP() |
| BEGIN_JS_STATIC_METHOD(CJS_Document) |
| - JS_STATIC_METHOD_ENTRY(addAnnot,0) |
| - JS_STATIC_METHOD_ENTRY(addField, 4) |
| - JS_STATIC_METHOD_ENTRY(addLink, 0) |
| - JS_STATIC_METHOD_ENTRY(addIcon, 0) |
| - JS_STATIC_METHOD_ENTRY(calculateNow, 0) |
| - JS_STATIC_METHOD_ENTRY(closeDoc, 0) |
| - JS_STATIC_METHOD_ENTRY(createDataObject, 0) |
| - JS_STATIC_METHOD_ENTRY(deletePages, 2) |
| - JS_STATIC_METHOD_ENTRY(exportAsText, 3) |
| - JS_STATIC_METHOD_ENTRY(exportAsFDF, 6) |
| - JS_STATIC_METHOD_ENTRY(exportAsXFDF, 5) |
| - JS_STATIC_METHOD_ENTRY(extractPages, 3) |
| - JS_STATIC_METHOD_ENTRY(getAnnot, 0) |
| - JS_STATIC_METHOD_ENTRY(getAnnots, 2) |
| - JS_STATIC_METHOD_ENTRY(getAnnot3D, 2) |
| - JS_STATIC_METHOD_ENTRY(getAnnots3D, 1) |
| - JS_STATIC_METHOD_ENTRY(getField, 1) |
| - JS_STATIC_METHOD_ENTRY(getIcon, 0) |
| - JS_STATIC_METHOD_ENTRY(getLinks, 0) |
| - JS_STATIC_METHOD_ENTRY(getNthFieldName, 1) |
| - JS_STATIC_METHOD_ENTRY(getOCGs, 0) |
| - JS_STATIC_METHOD_ENTRY(getPageBox, 0) |
| - JS_STATIC_METHOD_ENTRY(getPageNthWord, 3) |
| - JS_STATIC_METHOD_ENTRY(getPageNthWordQuads, 2) |
| - JS_STATIC_METHOD_ENTRY(getPageNumWords, 1) |
| - JS_STATIC_METHOD_ENTRY(getPrintParams, 0) |
| - JS_STATIC_METHOD_ENTRY(getURL, 2) |
| - JS_STATIC_METHOD_ENTRY(importAnFDF, 1) |
| - JS_STATIC_METHOD_ENTRY(importAnXFDF, 1) |
| - JS_STATIC_METHOD_ENTRY(importTextData, 2) |
| - JS_STATIC_METHOD_ENTRY(insertPages, 4) |
| - JS_STATIC_METHOD_ENTRY(mailForm, 6) |
| - JS_STATIC_METHOD_ENTRY(print, 9) |
| - JS_STATIC_METHOD_ENTRY(removeField, 1) |
| - JS_STATIC_METHOD_ENTRY(replacePages, 4) |
| - JS_STATIC_METHOD_ENTRY(resetForm, 1) |
| - JS_STATIC_METHOD_ENTRY(removeIcon, 0) |
| - JS_STATIC_METHOD_ENTRY(saveAs, 5) |
| - JS_STATIC_METHOD_ENTRY(submitForm, 23) |
| - JS_STATIC_METHOD_ENTRY(mailDoc, 0) |
| + JS_STATIC_METHOD_ENTRY(addAnnot) |
| + JS_STATIC_METHOD_ENTRY(addField) |
| + JS_STATIC_METHOD_ENTRY(addLink) |
| + JS_STATIC_METHOD_ENTRY(addIcon) |
| + JS_STATIC_METHOD_ENTRY(calculateNow) |
| + JS_STATIC_METHOD_ENTRY(closeDoc) |
| + JS_STATIC_METHOD_ENTRY(createDataObject) |
| + JS_STATIC_METHOD_ENTRY(deletePages) |
| + JS_STATIC_METHOD_ENTRY(exportAsText) |
| + JS_STATIC_METHOD_ENTRY(exportAsFDF) |
| + JS_STATIC_METHOD_ENTRY(exportAsXFDF) |
| + JS_STATIC_METHOD_ENTRY(extractPages) |
| + JS_STATIC_METHOD_ENTRY(getAnnot) |
| + JS_STATIC_METHOD_ENTRY(getAnnots) |
| + JS_STATIC_METHOD_ENTRY(getAnnot3D) |
| + JS_STATIC_METHOD_ENTRY(getAnnots3D) |
| + JS_STATIC_METHOD_ENTRY(getField) |
| + JS_STATIC_METHOD_ENTRY(getIcon) |
| + JS_STATIC_METHOD_ENTRY(getLinks) |
| + JS_STATIC_METHOD_ENTRY(getNthFieldName) |
| + JS_STATIC_METHOD_ENTRY(getOCGs) |
| + JS_STATIC_METHOD_ENTRY(getPageBox) |
| + JS_STATIC_METHOD_ENTRY(getPageNthWord) |
| + JS_STATIC_METHOD_ENTRY(getPageNthWordQuads) |
| + JS_STATIC_METHOD_ENTRY(getPageNumWords) |
| + JS_STATIC_METHOD_ENTRY(getPrintParams) |
| + JS_STATIC_METHOD_ENTRY(getURL) |
| + JS_STATIC_METHOD_ENTRY(importAnFDF) |
| + JS_STATIC_METHOD_ENTRY(importAnXFDF) |
| + JS_STATIC_METHOD_ENTRY(importTextData) |
| + JS_STATIC_METHOD_ENTRY(insertPages) |
| + JS_STATIC_METHOD_ENTRY(mailForm) |
| + JS_STATIC_METHOD_ENTRY(print) |
| + JS_STATIC_METHOD_ENTRY(removeField) |
| + JS_STATIC_METHOD_ENTRY(replacePages) |
| + JS_STATIC_METHOD_ENTRY(resetForm) |
| + JS_STATIC_METHOD_ENTRY(removeIcon) |
| + JS_STATIC_METHOD_ENTRY(saveAs) |
| + JS_STATIC_METHOD_ENTRY(submitForm) |
| + JS_STATIC_METHOD_ENTRY(mailDoc) |
| END_JS_STATIC_METHOD() |
| IMPLEMENT_JS_CLASS(CJS_Document, Document) |
| @@ -321,58 +321,51 @@ FX_BOOL Document::exportAsXFDF(IFXJS_Context* cc, const CJS_Parameters& params, |
| FX_BOOL Document::getField(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError) |
| { |
| - v8::Isolate* isolate = GetIsolate(cc); |
| - ASSERT(m_pDocument != NULL); |
| - |
| - if (params.size() < 1) return FALSE; |
| + CJS_Context* pContext = (CJS_Context*)cc; |
| + if (params.size() < 1) { |
| + sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
| + return FALSE; |
| + } |
| CFX_WideString wideName = params[0].ToCFXWideString(); |
| CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); |
| - ASSERT(pInterForm != NULL); |
| - |
| CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); |
| - ASSERT(pPDFForm != NULL); |
| - |
| if (pPDFForm->CountFields(wideName) <= 0) |
| { |
| vRet.SetNull(); |
| return TRUE; |
| } |
| - CJS_Context* pContext = (CJS_Context*)cc; |
| - ASSERT(pContext != NULL); |
| CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
| - ASSERT(pRuntime != NULL); |
| - |
| - JSFXObject pFieldObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"Field")); |
| - |
| - CJS_Field * pJSField = (CJS_Field*)JS_GetPrivate(isolate,pFieldObj); |
| - ASSERT(pJSField != NULL); |
| - |
| - Field * pField = (Field *)pJSField->GetEmbedObject(); |
| - ASSERT(pField != NULL); |
| + JSFXObject pFieldObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"Field")); |
| + v8::Isolate* isolate = GetIsolate(cc); |
| + CJS_Field* pJSField = (CJS_Field*)JS_GetPrivate(isolate,pFieldObj); |
| + Field* pField = (Field *)pJSField->GetEmbedObject(); |
| pField->AttachField(this, wideName); |
| - vRet = pJSField; |
| + vRet = pJSField; |
| return TRUE; |
| } |
| //Gets the name of the nth field in the document |
| FX_BOOL Document::getNthFieldName(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError) |
| { |
| - ASSERT(m_pDocument != NULL); |
| + CJS_Context* pContext = (CJS_Context*)cc; |
| + if (params.size() != 1) { |
| + sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
| + return FALSE; |
| + } |
| - int nIndex = params.size() > 0 ? params[0].ToInt() : -1; |
| - if (nIndex == -1) return FALSE; |
| + int nIndex = params[0].ToInt(); |
| + if (nIndex < 0) { |
| + sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR); |
| + return FALSE; |
| + } |
| CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); |
| - ASSERT(pInterForm != NULL); |
| - |
| CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); |
| - ASSERT(pPDFForm != NULL); |
| - |
| CPDF_FormField* pField = pPDFForm->GetField(nIndex); |
| if (!pField) |
| return FALSE; |
| @@ -523,11 +516,13 @@ FX_BOOL Document::removeField(IFXJS_Context* cc, const CJS_Parameters& params, C |
| if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || |
| m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM))) return FALSE; |
| - if (params.size() < 1) |
| - return TRUE; |
| + CJS_Context* pContext = (CJS_Context*)cc; |
| + if (params.size() != 1) { |
| + sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
| + return FALSE; |
| + } |
| CFX_WideString sFieldName = params[0].ToCFXWideString(); |
| - |
| CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); |
| ASSERT(pInterForm != NULL); |
| @@ -641,11 +636,12 @@ FX_BOOL Document::saveAs(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Va |
| FX_BOOL Document::submitForm(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError) |
| { |
| ASSERT(m_pDocument != NULL); |
| - |
| -// if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE; |
| - |
| + CJS_Context* pContext = (CJS_Context*)cc; |
|
brucedawson
2015/05/01 17:16:36
This newly added pContext variable now shadows two
|
| int nSize = params.size(); |
| - if (nSize < 1) return FALSE; |
| + if (nSize < 1) { |
| + sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
| + return FALSE; |
| + } |
| CFX_WideString strURL; |
| FX_BOOL bFDF = TRUE; |
| @@ -1457,22 +1453,28 @@ void IconTree::DeleteIconElement(CFX_WideString swIconName) |
| FX_BOOL Document::addIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError) |
| { |
| - if (params.size() != 2)return FALSE; |
| - |
| CJS_Context* pContext = (CJS_Context*)cc; |
| - ASSERT(pContext != NULL); |
| - CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
| - ASSERT(pRuntime != NULL); |
| + if (params.size() != 2) { |
| + sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
| + return FALSE; |
| + } |
| CFX_WideString swIconName = params[0].ToCFXWideString(); |
| - |
| JSFXObject pJSIcon = params[1].ToV8Object(); |
| - if (JS_GetObjDefnID(pJSIcon) != JS_GetObjDefnID(*pRuntime, L"Icon")) return FALSE; |
| + |
| + CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
| + if (JS_GetObjDefnID(pJSIcon) != JS_GetObjDefnID(*pRuntime, L"Icon")) { |
| + sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR); |
| + return FALSE; |
| + } |
| CJS_EmbedObj* pEmbedObj = params[1].ToCJSObject()->GetEmbedObject(); |
| - if (!pEmbedObj)return FALSE; |
| - Icon* pIcon = (Icon*)pEmbedObj; |
| + if (!pEmbedObj) { |
| + sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR); |
| + return FALSE; |
| + } |
| + Icon* pIcon = (Icon*)pEmbedObj; |
| if (!m_pIconTree) |
| m_pIconTree = new IconTree(); |
| @@ -1529,13 +1531,17 @@ FX_BOOL Document::icons(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE |
| FX_BOOL Document::getIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError) |
| { |
| - if (params.size() != 1)return FALSE; |
| + CJS_Context* pContext = (CJS_Context *)cc; |
| + if (params.size() != 1) { |
| + sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
| + return FALSE; |
| + } |
| + |
| if(!m_pIconTree) |
| return FALSE; |
| CFX_WideString swIconName = params[0].ToCFXWideString(); |
| int iIconCounts = m_pIconTree->GetLength(); |
| - CJS_Context* pContext = (CJS_Context *)cc; |
| CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
| for (int i = 0; i < iIconCounts; i++) |
| @@ -1565,7 +1571,12 @@ FX_BOOL Document::getIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V |
| FX_BOOL Document::removeIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError) |
| { |
| - if (params.size() != 1)return FALSE; |
| + CJS_Context* pContext = (CJS_Context *)cc; |
| + if (params.size() != 1) { |
| + sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
| + return FALSE; |
| + } |
| + |
| if(!m_pIconTree) |
| return FALSE; |
| CFX_WideString swIconName = params[0].ToCFXWideString(); |
| @@ -1615,10 +1626,10 @@ FX_BOOL Document::getPageNthWord(IFXJS_Context* cc, const CJS_Parameters& params |
| CPDF_Document* pDocument = m_pDocument->GetDocument(); |
| if (!pDocument) return FALSE; |
| + CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
| if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) |
| { |
| - CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
| - sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
| + sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR); |
| return FALSE; |
| } |
| @@ -1685,10 +1696,10 @@ FX_BOOL Document::getPageNumWords(IFXJS_Context* cc, const CJS_Parameters& param |
| CPDF_Document* pDocument = m_pDocument->GetDocument(); |
| ASSERT(pDocument != NULL); |
| + CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
| if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) |
| { |
| - CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
| - sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
| + sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR); |
| return FALSE; |
| } |
| @@ -1724,13 +1735,12 @@ FX_BOOL Document::getPageNumWords(IFXJS_Context* cc, const CJS_Parameters& param |
| FX_BOOL Document::getPrintParams(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError) |
| { |
| CJS_Context* pContext = (CJS_Context*)cc; |
| - ASSERT(pContext != NULL); |
| CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
| - ASSERT(pRuntime != NULL); |
| JSFXObject pRetObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"PrintParamsObj")); |
| - //not implemented yet. |
| - vRet = pRetObj; |
| + // Not implemented yet. |
| + |
| + vRet = pRetObj; |
| return TRUE; |
| } |