diff options
author | Tom Sepez <tsepez@chromium.org> | 2015-02-05 15:52:15 -0800 |
---|---|---|
committer | Tom Sepez <tsepez@chromium.org> | 2015-02-05 15:52:15 -0800 |
commit | e3dbe4db199586bee83f7db3ace142d4c71d0a18 (patch) | |
tree | 5b903a9de317429b99d35cb41a1640570fb9b5fc /fpdfsdk/src/javascript | |
parent | 219b3dab7e184bf8742f61527e37053b04903ff0 (diff) | |
download | pdfium-e3dbe4db199586bee83f7db3ace142d4c71d0a18.tar.xz |
Merge to master: Kill off some dodgy JS callbacks
Note that this work was done opposite the usual branch order, because I
didn't want to kill things in master that turned out to be in use in XFA.
Original Review URL: https://codereview.chromium.org/883393007
TBR=jam@chromium.org
Review URL: https://codereview.chromium.org/903893002
Diffstat (limited to 'fpdfsdk/src/javascript')
-rw-r--r-- | fpdfsdk/src/javascript/Document.cpp | 698 | ||||
-rw-r--r-- | fpdfsdk/src/javascript/JS_Object.cpp | 7 | ||||
-rw-r--r-- | fpdfsdk/src/javascript/app.cpp | 329 | ||||
-rw-r--r-- | fpdfsdk/src/javascript/report.cpp | 17 |
4 files changed, 169 insertions, 882 deletions
diff --git a/fpdfsdk/src/javascript/Document.cpp b/fpdfsdk/src/javascript/Document.cpp index 8f7a8f29e3..410650af49 100644 --- a/fpdfsdk/src/javascript/Document.cpp +++ b/fpdfsdk/src/javascript/Document.cpp @@ -1,7 +1,7 @@ // Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - + // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #include "../../include/javascript/JavaScript.h" @@ -78,7 +78,7 @@ BEGIN_JS_STATIC_PROP(CJS_Document) JS_STATIC_PROP_ENTRY(external) JS_STATIC_PROP_ENTRY(filesize) JS_STATIC_PROP_ENTRY(icons) - JS_STATIC_PROP_ENTRY(info) + JS_STATIC_PROP_ENTRY(info) JS_STATIC_PROP_ENTRY(keywords) JS_STATIC_PROP_ENTRY(layout) JS_STATIC_PROP_ENTRY(media) @@ -87,7 +87,7 @@ BEGIN_JS_STATIC_PROP(CJS_Document) JS_STATIC_PROP_ENTRY(mouseY) JS_STATIC_PROP_ENTRY(numFields) JS_STATIC_PROP_ENTRY(numPages) - JS_STATIC_PROP_ENTRY(pageNum) + JS_STATIC_PROP_ENTRY(pageNum) JS_STATIC_PROP_ENTRY(pageWindowRect) JS_STATIC_PROP_ENTRY(path) JS_STATIC_PROP_ENTRY(producer) @@ -137,7 +137,7 @@ BEGIN_JS_STATIC_METHOD(CJS_Document) 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(mailDoc, 0) END_JS_STATIC_METHOD() IMPLEMENT_JS_CLASS(CJS_Document, Document) @@ -149,7 +149,7 @@ FX_BOOL CJS_Document::InitInstance(IFXJS_Context* cc) Document* pDoc = (Document*)GetEmbedObject(); ASSERT(pDoc != NULL); - + pDoc->AttachDoc(pContext->GetReaderDocument()); pDoc->SetIsolate(pContext->GetJSRuntime()->GetIsolate()); return TRUE; @@ -181,7 +181,7 @@ Document::~Document() delete pData; pData = NULL; m_DelayData.SetAt(i, NULL); - + } } @@ -253,14 +253,14 @@ FX_BOOL Document::pageNum(OBJ_PROP_PARAMS) ASSERT(m_pDocument != NULL); if (vp.IsGetting()) - { + { if (CPDFSDK_PageView* pPageView = m_pDocument->GetCurrentView()) { vp << pPageView->GetPageIndex(); } } else - { + { int iPageCount = m_pDocument->GetPageCount(); int iPageNum = 0; @@ -289,131 +289,37 @@ FX_BOOL Document::pageNum(OBJ_PROP_PARAMS) FX_BOOL Document::ParserParams(JSObject* pObj,CJS_AnnotObj& annotobj) { + // Not supported. return TRUE; } FX_BOOL Document::addAnnot(OBJ_METHOD_PARAMS) { + // Not supported. return TRUE; } FX_BOOL Document::addField(OBJ_METHOD_PARAMS) { - //Doesn't support. + // Not supported. return TRUE; } -//exports form fields as a tab-delimited text file to a local hard disk. -//comment: need reader support -//note : watch the third parameter:cPath, for what case it can be safely saved? -//int CPDFSDK_InterForm::ExportAsText(FX_BOOL bNoPassword,StringArray aFields,String cPath); -//return value, int the index of the parameters illegal, the index is based on 1. - FX_BOOL Document::exportAsText(OBJ_METHOD_PARAMS) { - if (IsSafeMode(cc)) return TRUE; + // Unsafe, not supported. return TRUE; } -//exports form fields as a fdf file to the local hard drive -//comment: need reader supports -//note:the last parameter hasn't been confirmed.because the previous one blocks the way. -//int CPDFSDK_Document::ExportAsFDF(FX_BOOL bAllFields,BOOL bNoPassword,StringArray aFields,FX_BOOL bFlags,String cPath,FX_BOOL bAnnotations); - FX_BOOL Document::exportAsFDF(OBJ_METHOD_PARAMS) { - v8::Isolate* isolate = GetIsolate(cc); - if (IsSafeMode(cc)) return TRUE; - - ASSERT(m_pDocument != NULL); - - if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE; - - FX_BOOL bAllFields = params.size() > 0 ? (FX_BOOL)params[0] : FALSE; - FX_BOOL bNoPassWord = params.size() > 1 ? (FX_BOOL)params[1] : TRUE; - FX_BOOL bWhole = params.size() > 2 ? (params[2].GetType() == VT_null) : TRUE; - CJS_Array arrayFileds(isolate); - if (!bWhole) - arrayFileds.Attach(params[2]); - //FX_BOOL bFlags = params.size() > 3 ? (FX_BOOL)params[3] : FALSE; - CFX_WideString swFilePath = params.size() > 4 ? (FX_LPCWSTR)params[4].operator CFX_WideString() : L""; - - if (swFilePath.IsEmpty()) - { - CPDFDoc_Environment* pEnv = m_pDocument->GetEnv(); - swFilePath = pEnv->JS_fieldBrowse(); - if(swFilePath.IsEmpty()) - return TRUE; - } - else - { - swFilePath = app::PDFPathToSysPath(swFilePath); - } - - m_pDocument->SetFocusAnnot(NULL); - - CPDFSDK_InterForm* pInterForm= (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); - ASSERT(pInterForm != NULL); - - CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); - ASSERT(pPDFForm != NULL); - - CFX_PtrArray aFields; - - if (bWhole) - { - for (int j=0,jsz=pPDFForm->CountFields(); j<jsz; j++) - { - aFields.Add(pPDFForm->GetField(j)); - } - } - else - { - for (int i=0,isz=arrayFileds.GetLength(); i<isz; i++) - { - CJS_Value valName(isolate); - arrayFileds.GetElement(i,valName); - CFX_WideString swName = valName.operator CFX_WideString(); - - for (int j=0, jsz=pPDFForm->CountFields(swName); j<jsz; j++) - { - aFields.Add(pPDFForm->GetField(j, swName)); - } - } - } - - CFX_PtrArray fields; - - for (int i=0,sz=aFields.GetSize(); i<sz; i++) - { - CPDF_FormField* pField = (CPDF_FormField*)aFields[i]; - - if (!bAllFields) - if (pField->GetValue() == L"") - continue; - - if (bNoPassWord) - if (pField->GetFieldFlags() & 0x2000) - continue; - - fields.Add((void*)pField); - } - - return pInterForm->ExportFieldsToFDFFile(swFilePath, fields, TRUE); + // Unsafe, not supported. + return TRUE; } -//exports form fields an XFDF file to the local hard drive -//comment: need reder supports -//note:the last parameter can't be test -//int CPDFSDK_Document::ExportAsXFDF(FX_BOOL bAllFields,FX_BOOL bNoPassWord,StringArray aFields,String cPath,FX_BOOL bAnnoatations); - FX_BOOL Document::exportAsXFDF(OBJ_METHOD_PARAMS) { - if (IsSafeMode(cc)) return TRUE; - ASSERT(m_pDocument != NULL); - - if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE; - + // Unsafe, not supported. return TRUE; } @@ -436,7 +342,7 @@ FX_BOOL Document::getField(OBJ_METHOD_PARAMS) CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); ASSERT(pPDFForm != NULL); - if (pPDFForm->CountFields(wideName) <= 0) + if (pPDFForm->CountFields(wideName) <= 0) { vRet.SetNull(); return TRUE; @@ -452,7 +358,7 @@ FX_BOOL Document::getField(OBJ_METHOD_PARAMS) CJS_Field * pJSField = (CJS_Field*)JS_GetPrivate(isolate,pFieldObj); ASSERT(pJSField != NULL); - Field * pField = (Field *)pJSField->GetEmbedObject(); + Field * pField = (Field *)pJSField->GetEmbedObject(); ASSERT(pField != NULL); pField->AttachField(this, wideName); @@ -461,10 +367,7 @@ FX_BOOL Document::getField(OBJ_METHOD_PARAMS) return TRUE; } -//Gets the name of the nth field in the document -//comment: -//note: the parameter nIndex, if it is not available - +//Gets the name of the nth field in the document FX_BOOL Document::getNthFieldName(OBJ_METHOD_PARAMS) { ASSERT(m_pDocument != NULL); @@ -483,90 +386,24 @@ FX_BOOL Document::getNthFieldName(OBJ_METHOD_PARAMS) return FALSE; vRet = pField->GetFullName(); - return TRUE; + return TRUE; } -//imports the specified fdf file. -//comments: need reader suppport -//note:once the cpath is illigl then a file dialog box pops up in order to ask user to chooose the file -//int CPDFSDK_Document::importAnFDF(String cPath); - FX_BOOL Document::importAnFDF(OBJ_METHOD_PARAMS) { - if (IsSafeMode(cc)) return TRUE; - ASSERT(m_pDocument != NULL); - - if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || - m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) || - m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) return FALSE; - - - CFX_WideString swPath; - - if (params.size() > 0) - swPath = params[0]; - - if (swPath.IsEmpty()) - { - CPDFDoc_Environment* pEnv = m_pDocument->GetEnv(); - swPath = pEnv->JS_fieldBrowse(); - if(swPath.IsEmpty()) - return TRUE; - } - else - { - swPath = app::PDFPathToSysPath(swPath); - } - - m_pDocument->SetFocusAnnot(NULL); - - CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); - ASSERT(pInterForm != NULL); - - if (!pInterForm->ImportFormFromFDFFile(swPath, TRUE)) - return FALSE; - - m_pDocument->SetChangeMark(); -// CPDFDoc_Environment* pEnv = m_pDocument->GetEnv(); -// ASSERT(pEnv != NULL); -// IUndo* pUndo = IUndo::GetUndo(pEnv); -// ASSERT(pUndo != NULL); -// pUndo->Reset(m_pDocument); - + // Unsafe, not supported. return TRUE; } -//imports and specified XFDF file containing XML form data -//comment: need reader supports -//note: same as up -//int CPDFSDK_Document::importAnFDF(String cPath) - FX_BOOL Document::importAnXFDF(OBJ_METHOD_PARAMS) { - if (IsSafeMode(cc)) return TRUE; - ASSERT(m_pDocument != NULL); - - if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || - m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) || - m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) return FALSE; - + // Unsafe, not supported. return TRUE; } -//imports and specified text file -//commnet: need reader supports -//note: same as up,when nRow is not rational,adobe is dumb for it. -//int CPDFSDK_Document::importTextData(String cPath,int nRow); - FX_BOOL Document::importTextData(OBJ_METHOD_PARAMS) { - if (IsSafeMode(cc)) return TRUE; - ASSERT(m_pDocument != NULL); - - if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || - m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) || - m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) return FALSE; - + // Unsafe, not supported. return TRUE; } @@ -650,7 +487,7 @@ FX_BOOL Document::print(OBJ_METHOD_PARAMS) } } } - } + } } } else @@ -674,7 +511,7 @@ FX_BOOL Document::print(OBJ_METHOD_PARAMS) } ASSERT(m_pDocument != NULL); - + if (CPDFDoc_Environment* pEnv = m_pDocument->GetEnv()) { pEnv->JS_docprint(bUI, nStart, nEnd, bSilent, bShrinkToFit, bPrintAsImage, bReverse, bAnnotations); @@ -691,7 +528,7 @@ FX_BOOL Document::removeField(OBJ_METHOD_PARAMS) { ASSERT(m_pDocument != NULL); - if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || + if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM))) return FALSE; if (params.size() < 1) @@ -725,7 +562,7 @@ FX_BOOL Document::removeField(OBJ_METHOD_PARAMS) CPDF_Page* pPage = pWidget->GetPDFPage(); ASSERT(pPage != NULL); - + CPDFSDK_PageView* pPageView = m_pDocument->GetPageView(pPage); pPageView->DeleteAnnot(pWidget); @@ -745,7 +582,7 @@ FX_BOOL Document::resetForm(OBJ_METHOD_PARAMS) { ASSERT(m_pDocument != NULL); - if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || + if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) || m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) return FALSE; @@ -776,12 +613,12 @@ FX_BOOL Document::resetForm(OBJ_METHOD_PARAMS) { CJS_Value valElement(isolate); aName.GetElement(i,valElement); - CFX_WideString swVal = valElement.operator CFX_WideString(); - + CFX_WideString swVal = valElement.operator CFX_WideString(); + for (int j=0,jsz=pPDFForm->CountFields(swVal); j<jsz; j++) { aFields.Add((void*)pPDFForm->GetField(j,swVal)); - } + } } if (aFields.GetSize() > 0) @@ -804,14 +641,8 @@ FX_BOOL Document::resetForm(OBJ_METHOD_PARAMS) FX_BOOL Document::saveAs(OBJ_METHOD_PARAMS) { - - if (IsSafeMode(cc)) return TRUE; - - ASSERT(m_pDocument != NULL); - -// m_pDocument->DoSaveAs(); - - return TRUE; + // Unsafe, not supported. + return TRUE; } @@ -853,7 +684,7 @@ FX_BOOL Document::submitForm(OBJ_METHOD_PARAMS) 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))); - } + } CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); ASSERT(pInterForm != NULL); @@ -869,7 +700,7 @@ FX_BOOL Document::submitForm(OBJ_METHOD_PARAMS) CJS_Runtime* pRuntime = pContext->GetJSRuntime(); ASSERT(pRuntime != NULL); - + if (pPDFInterForm->CheckRequiredFields()) { pRuntime->BeginBlock(); @@ -880,7 +711,7 @@ FX_BOOL Document::submitForm(OBJ_METHOD_PARAMS) return TRUE; } else - { + { CFX_PtrArray fieldObjects; for (int i=0,sz=aFields.GetLength(); i<sz; i++) @@ -907,7 +738,7 @@ FX_BOOL Document::submitForm(OBJ_METHOD_PARAMS) CJS_Runtime* pRuntime = pContext->GetJSRuntime(); ASSERT(pRuntime != NULL); - + if (pPDFInterForm->CheckRequiredFields(&fieldObjects, TRUE)) { pRuntime->BeginBlock(); @@ -943,7 +774,7 @@ FX_BOOL Document::ExtractFolderName(CPDFSDK_Document *pDoc,CFX_ByteString &strFo } FX_BOOL Document::bookmarkRoot(OBJ_PROP_PARAMS) -{ +{ return TRUE; } @@ -957,7 +788,7 @@ FX_BOOL Document::mailDoc(OBJ_METHOD_PARAMS) CFX_WideString cBcc = L""; CFX_WideString cSubject = L""; CFX_WideString cMsg = L""; - + bUI = params.size()>=1?static_cast<FX_BOOL>(params[0]):TRUE; cTo = params.size()>=2?(const wchar_t*)params[1].operator CFX_WideString():L""; @@ -965,7 +796,7 @@ FX_BOOL Document::mailDoc(OBJ_METHOD_PARAMS) 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""; - + v8::Isolate* isolate = GetIsolate(cc); if(params.size()>=1 && params[0].GetType() == VT_object) @@ -989,7 +820,7 @@ FX_BOOL Document::mailDoc(OBJ_METHOD_PARAMS) pValue = JS_GetObjectElement(isolate,pObj, L"cMsg"); cMsg = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); - + } CJS_Context* pContext = (CJS_Context*)cc; @@ -1064,7 +895,7 @@ FX_BOOL Document::info(OBJ_PROP_PARAMS) JS_PutObjectString(isolate,pObj, L"ModDate", cwModDate); JS_PutObjectString(isolate,pObj, L"Trapped", cwTrapped); -// It's to be compatible to non-standard info dictionary. +// It's to be compatible to non-standard info dictionary. FX_POSITION pos = pDictionary->GetStartPos(); while(pos) { @@ -1155,7 +986,7 @@ FX_BOOL Document::delay(OBJ_PROP_PARAMS) m_bDelay = b; - if (m_bDelay) + if (m_bDelay) { for (int i=0,sz=m_DelayData.GetSize(); i<sz; i++) delete m_DelayData.GetAt(i); @@ -1356,7 +1187,7 @@ FX_BOOL Document::filesize(OBJ_PROP_PARAMS) FX_BOOL Document::mouseX(OBJ_PROP_PARAMS) { - return TRUE; + return TRUE; } FX_BOOL Document::mouseY(OBJ_PROP_PARAMS) @@ -1487,7 +1318,7 @@ FX_BOOL Document::pageWindowRect(OBJ_PROP_PARAMS) } FX_BOOL Document::layout(OBJ_PROP_PARAMS) -{ +{ return TRUE; } @@ -1501,8 +1332,8 @@ FX_BOOL Document::closeDoc(OBJ_METHOD_PARAMS) ASSERT(m_pDocument != NULL); - - + + return TRUE; } @@ -1537,7 +1368,7 @@ FX_BOOL Document::getAnnots3D(OBJ_METHOD_PARAMS) } FX_BOOL Document::getOCGs(OBJ_METHOD_PARAMS) -{ +{ return TRUE; } @@ -1577,7 +1408,7 @@ void IconTree::InsertIconElement(IconElement* pNewIcon) void IconTree::DeleteIconTree() { if (!m_pHead || !m_pEnd)return; - + IconElement* pTemp = NULL; while(m_pEnd != m_pHead) { @@ -1614,12 +1445,12 @@ IconElement* IconTree::operator [](int iIndex) void IconTree::DeleteIconElement(CFX_WideString swIconName) { IconElement* pTemp = m_pHead; - int iLoopCount = m_iLength; + int iLoopCount = m_iLength; for (int i = 0; i < iLoopCount - 1; i++) { if (pTemp == m_pEnd) break; - + if (m_pHead->IconName == swIconName) { m_pHead = m_pHead->NextIcon; @@ -1662,7 +1493,7 @@ FX_BOOL Document::addIcon(OBJ_METHOD_PARAMS) ASSERT(pRuntime != NULL); CFX_WideString swIconName = params[0].operator CFX_WideString(); - + JSFXObject pJSIcon = (JSFXObject)params[1]; if (JS_GetObjDefnID(pJSIcon) != JS_GetObjDefnID(*pRuntime, L"Icon")) return FALSE; @@ -1702,10 +1533,10 @@ FX_BOOL Document::icons(OBJ_PROP_PARAMS) for (int i = 0; i < iIconTreeLength; i++) { pIconElement = (*m_pIconTree)[i]; - + JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"Icon")); if (pObj.IsEmpty()) return FALSE; - + CJS_Icon * pJS_Icon = (CJS_Icon *)JS_GetPrivate(pObj); if (!pJS_Icon) return FALSE; @@ -1737,10 +1568,10 @@ FX_BOOL Document::getIcon(OBJ_METHOD_PARAMS) if ((*m_pIconTree)[i]->IconName == swIconName) { Icon* pRetIcon = (*m_pIconTree)[i]->IconStream; - + JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"Icon")); if (pObj.IsEmpty()) return FALSE; - + CJS_Icon * pJS_Icon = (CJS_Icon *)JS_GetPrivate(pObj); if (!pJS_Icon) return FALSE; @@ -1768,71 +1599,8 @@ FX_BOOL Document::removeIcon(OBJ_METHOD_PARAMS) FX_BOOL Document::createDataObject(OBJ_METHOD_PARAMS) { - if (IsSafeMode(cc)) return TRUE; - ASSERT(m_pDocument != NULL); - - CFX_WideString swName = L""; - CFX_ByteString sbName = ""; - CFX_WideString swValue = L""; - CFX_WideString swMIMEType = L""; - CFX_WideString swCryptFilter = L""; - CFX_ByteString sbFileValue = ""; - - int iParamSize = params.size(); - for (int i = 0; i < iParamSize; i++) - { - if (i == 0) - swName = params[0]; - if (i == 1) - swValue = params[1]; - if (i == 2) - swMIMEType = params[2]; - if (i == 3) - swCryptFilter = params[4]; - } - - FILE* pFile = NULL; - - //CFileStatus fileStatus; - const int BUFSIZE = 17; - FX_BYTE buf[BUFSIZE]; - FX_BYTE *pBuffer = NULL; - char* pBuf = NULL; - int nFileSize = 0; - sbFileValue = CFX_ByteString::FromUnicode(swValue); - sbName = CFX_ByteString::FromUnicode(swName); - int iBufLength = sbFileValue.GetLength(); - pBuf = (char*)malloc(sizeof(char) * iBufLength); - pBuf = sbFileValue.GetBuffer(iBufLength); - - if ( NULL == (pFile = FXSYS_fopen( sbName.GetBuffer(sbName.GetLength()), "wb+" )) ) - { - return FALSE; - } - - fwrite( pBuf, sizeof(char), iBufLength, pFile ); - fclose( pFile ); - pFile = NULL; - - pFile = FXSYS_fopen( sbName.GetBuffer(sbName.GetLength()), "rb+" ); - fseek( pFile, 0, SEEK_END ); - nFileSize = ftell( pFile ); - - pBuffer = new FX_BYTE[nFileSize]; - fseek( pFile, 0, SEEK_SET ); - size_t s = fread( pBuffer, sizeof(char), nFileSize, pFile ); - if(s == 0) - { - delete[] pBuffer; - return FALSE; - } - - CRYPT_MD5Generate(pBuffer, nFileSize, buf); - buf[BUFSIZE - 1] = 0; - CFX_WideString csCheckSum((FX_LPCWSTR)buf, 16); - delete[] pBuffer; - - return TRUE; + // Unsafe, not implemented. + return TRUE; } FX_BOOL Document::media(OBJ_PROP_PARAMS) @@ -1844,7 +1612,7 @@ FX_BOOL Document::calculateNow(OBJ_METHOD_PARAMS) { ASSERT(m_pDocument != NULL); - if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || + if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) || m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) return FALSE; @@ -1861,8 +1629,6 @@ FX_BOOL Document::Collab(OBJ_PROP_PARAMS) FX_BOOL Document::getPageNthWord(OBJ_METHOD_PARAMS) { - //if (IsSafeMode(cc)) return TRUE; - ASSERT(m_pDocument != NULL); if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE; @@ -1925,8 +1691,6 @@ FX_BOOL Document::getPageNthWord(OBJ_METHOD_PARAMS) FX_BOOL Document::getPageNthWordQuads(OBJ_METHOD_PARAMS) { - //if (IsSafeMode(cc)) return TRUE; - ASSERT(m_pDocument != NULL); if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE; @@ -2020,7 +1784,7 @@ int Document::CountWords(CPDF_TextObject* pTextObj) if (ISLATINWORD(unicode) && bIsLatin) continue; - + bIsLatin = ISLATINWORD(unicode); if (unicode != 0x20) nWords++; @@ -2057,10 +1821,10 @@ CFX_WideString Document::GetObjWordStr(CPDF_TextObject* pTextObj, int nWordIndex { } else - { + { bIsLatin = ISLATINWORD(unicode); if (unicode != 0x20) - nWords++; + nWords++; } if (nWords-1 == nWordIndex) @@ -2093,28 +1857,17 @@ FX_BOOL Document::zoomType(OBJ_PROP_PARAMS) FX_BOOL Document::deletePages(OBJ_METHOD_PARAMS) { - - - - - - v8::Isolate* isolate = GetIsolate(cc); -// if (pEnv->GetAppName().Compare(PHANTOM) != 0) -// return TRUE; - - //if (IsSafeMode(cc)) return TRUE; - ASSERT(m_pDocument != NULL); - if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || + if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || m_pDocument->GetPermissions(FPDFPERM_ASSEMBLE))) return FALSE; int iSize = params.size(); - + int nStart = 0; int nEnd = 0; - + if (iSize < 1) { } @@ -2150,336 +1903,33 @@ FX_BOOL Document::deletePages(OBJ_METHOD_PARAMS) if (nEnd < nStart) nEnd = nStart; - + return TRUE; } FX_BOOL Document::extractPages(OBJ_METHOD_PARAMS) { - - - - - - - v8::Isolate* isolate = GetIsolate(cc); - - if (IsSafeMode(cc)) return TRUE; - - ASSERT(m_pDocument != NULL); - - if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT)) return FALSE; - - int iSize = params.size(); - - int nTotal = m_pDocument->GetPageCount(); - int nStart = 0; - int nEnd = nTotal - 1; - - CFX_WideString swFilePath; - - if (iSize < 1) - { - } - else if (iSize == 1) - { - if (params[0].GetType() == VT_object) - { - JSObject pObj = (JSObject )params[0]; - v8::Handle<v8::Value> pValue = JS_GetObjectElement(isolate,pObj, L"nStart"); - nStart = (int)CJS_Value(m_isolate,pValue,GET_VALUE_TYPE(pValue)); - - pValue = JS_GetObjectElement(isolate,pObj, L"nEnd"); - nEnd = (int)CJS_Value(m_isolate,pValue,GET_VALUE_TYPE(pValue)); - - pValue = JS_GetObjectElement(isolate,pObj, L"cPath"); - swFilePath = CJS_Value(m_isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); - } - else - { - nStart = (int)params[0]; - } - } - else if (iSize == 2) - { - nStart = (int)params[0]; - nEnd = (int)params[1]; - } - else - { - nStart = (int)params[0]; - nEnd = (int)params[1]; - swFilePath = params[2].operator CFX_WideString(); - } - - if (nEnd < nStart) - nEnd = nStart; - - CPDF_Document *pNewDoc = new CPDF_Document; - pNewDoc->CreateNewDoc(); - - CFX_WordArray array; - for (int i=nStart; i<=nEnd; i++) - array.Add(i); - -// m_pDocument->ExtractPages(array, pNewDoc); - - if (swFilePath.IsEmpty()) - { - - } - else - { - swFilePath = app::PDFPathToSysPath(swFilePath); - CPDF_Creator PDFCreater(pNewDoc); - PDFCreater.Create(swFilePath); - delete pNewDoc; -// pEnv->OpenDocument(swFilePath); - vRet.SetNull(); - } - - return TRUE; + // Unsafe, not supported. + return TRUE; } FX_BOOL Document::insertPages(OBJ_METHOD_PARAMS) { - - - - - - - v8::Isolate* isolate = GetIsolate(cc); - - if (IsSafeMode(cc)) return TRUE; - - ASSERT(m_pDocument != NULL); - - if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || - m_pDocument->GetPermissions(FPDFPERM_ASSEMBLE))) return FALSE; - - int iSize = params.size(); - - int nStart = 0; - int nEnd = 0; - int nPage = 0; - - CFX_WideString swFilePath; - - if (iSize < 1) - { - } - else if (iSize == 1) - { - if (params[0].GetType() == VT_object) - { - JSObject pObj = (JSObject )params[0]; - - v8::Handle<v8::Value> pValue = JS_GetObjectElement(isolate,pObj, L"nPage"); - nPage = (int)CJS_Value(m_isolate,pValue,GET_VALUE_TYPE(pValue)); - - pValue = JS_GetObjectElement(isolate,pObj, L"cPath"); - swFilePath = CJS_Value(m_isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); - - pValue = JS_GetObjectElement(isolate,pObj, L"nStart"); - nStart = (int)CJS_Value(m_isolate,pValue,GET_VALUE_TYPE(pValue)); - - pValue = JS_GetObjectElement(isolate,pObj, L"nEnd"); - nEnd = (int)CJS_Value(m_isolate,pValue,GET_VALUE_TYPE(pValue)); - } - else - { - nPage = (int)params[0]; - } - } - else - { - nPage = (int)params[0]; - - if (iSize >= 2) - swFilePath = params[1].operator CFX_WideString(); - - if (iSize >= 3) - nStart = (int)params[2]; - - if (iSize >= 4) - nEnd = (int)params[3]; - } - - nPage++; - - if (nPage < 0) - nPage = 0; - - if (nPage > m_pDocument->GetPageCount()) - nPage = m_pDocument->GetPageCount(); - - if (swFilePath.IsEmpty()) return FALSE; - - swFilePath = app::PDFPathToSysPath(swFilePath); - - CPDF_Parser pdfParser; - pdfParser.StartParse(swFilePath, FALSE); - CPDF_Document* pSrcDoc = pdfParser.GetDocument(); - - if (!pSrcDoc) - { - pdfParser.CloseParser(); - return FALSE; - } - - int nTotal = pSrcDoc->GetPageCount(); - - if (nStart < 0) nStart = 0; - if (nStart >= nTotal) nStart = nTotal - 1; - - if (nEnd < 0) nEnd = 0; - if (nEnd >= nTotal) nEnd = nTotal - 1; - - if (nEnd < nStart) nEnd = nStart; - - CFX_WordArray array; - for (int i=nStart; i<=nEnd; i++) - array.Add(i); - -// m_pDocument->InsertPages(nPage, pSrcDoc, array); - - pdfParser.CloseParser(); - - return TRUE; + // Unsafe, not supported. + return TRUE; } FX_BOOL Document::replacePages(OBJ_METHOD_PARAMS) { - - - - - - - v8::Isolate* isolate = GetIsolate(cc); - - if (IsSafeMode(cc)) return TRUE; - - ASSERT(m_pDocument != NULL); - - if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || - m_pDocument->GetPermissions(FPDFPERM_ASSEMBLE))) return FALSE; - - int iSize = params.size(); - - int nStart = -1; - int nEnd = -1; - int nPage = 0; - - CFX_WideString swFilePath; - - if (iSize < 1) - { - } - else if (iSize == 1) - { - if (params[0].GetType() == VT_object) - { - JSObject pObj = (JSObject )params[0]; - - v8::Handle<v8::Value> pValue = JS_GetObjectElement(isolate,pObj, L"nPage"); - nPage = (int)CJS_Value(m_isolate,pValue,GET_VALUE_TYPE(pValue)); - - pValue = JS_GetObjectElement(isolate,pObj, L"cPath"); - swFilePath = CJS_Value(m_isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); - - pValue = JS_GetObjectElement(isolate,pObj, L"nStart"); - nStart = (int)CJS_Value(m_isolate,pValue,GET_VALUE_TYPE(pValue)); - - pValue = JS_GetObjectElement(isolate,pObj, L"nEnd"); - nEnd = (int)CJS_Value(m_isolate,pValue,GET_VALUE_TYPE(pValue)); - } - else - { - nPage = (int)params[0]; - } - } - else - { - nPage = (int)params[0]; - - if (iSize >= 2) - swFilePath = params[1].operator CFX_WideString(); - - if (iSize >= 3) - nStart = (int)params[2]; - - if (iSize >= 4) - nEnd = (int)params[3]; - } - - if (nPage < 0) - nPage = 0; - - if (nPage >= m_pDocument->GetPageCount()) - nPage = m_pDocument->GetPageCount() - 1; - - if (swFilePath.IsEmpty()) return FALSE; - - swFilePath = app::PDFPathToSysPath(swFilePath); - - CPDF_Parser pdfParser; - pdfParser.StartParse(swFilePath, FALSE); - CPDF_Document* pSrcDoc = pdfParser.GetDocument(); - - if (!pSrcDoc) - { - pdfParser.CloseParser(); - return FALSE; - } - - int nTotal = pSrcDoc->GetPageCount(); - - if (nStart < 0) - { - if (nEnd < 0) - { - nStart = 0; - nEnd = nTotal - 1; - } - else - { - nStart = 0; - } - } - else - { - if (nEnd < 0) - { - nEnd = nStart; - } - else - { - if (nStart >= nTotal) nStart = nTotal - 1; - if (nEnd >= nTotal) nEnd = nTotal - 1; - - if (nEnd < nStart) nEnd = nStart; - } - } - - CFX_WordArray array; - for (int i=nStart; i<=nEnd; i++) - array.Add(i); - -// m_pDocument->ReplacePages(nPage, pSrcDoc, array); - - pdfParser.CloseParser(); - - return TRUE; + // Unsafe, not supported. + return TRUE; } FX_BOOL Document::getURL(OBJ_METHOD_PARAMS) { - if (IsSafeMode(cc)) return TRUE; - - return TRUE; + // Unsafe, not supported. + return TRUE; } void Document::AddDelayData(CJS_DelayData* pData) @@ -2519,7 +1969,7 @@ void Document::AddDelayAnnotData(CJS_AnnotObj *pData) void Document::DoAnnotDelay() { CFX_DWordArray DelArray; - + for (int j=DelArray.GetSize()-1; j>=0; j--) { m_DelayData.RemoveAt(DelArray[j]); diff --git a/fpdfsdk/src/javascript/JS_Object.cpp b/fpdfsdk/src/javascript/JS_Object.cpp index 8a019d40e8..6c0c868e4c 100644 --- a/fpdfsdk/src/javascript/JS_Object.cpp +++ b/fpdfsdk/src/javascript/JS_Object.cpp @@ -87,13 +87,6 @@ void CJS_EmbedObj::EndTimer(CJS_Timer* pTimer) delete pTimer; } -FX_BOOL CJS_EmbedObj::IsSafeMode(IFXJS_Context* cc) -{ - ASSERT(cc != NULL); - - return TRUE; -} - /* --------------------------------- CJS_Object --------------------------------- */ void FreeObject(const v8::WeakCallbackData<v8::Object, CJS_Object>& data) { diff --git a/fpdfsdk/src/javascript/app.cpp b/fpdfsdk/src/javascript/app.cpp index cac129de46..c1dd41faff 100644 --- a/fpdfsdk/src/javascript/app.cpp +++ b/fpdfsdk/src/javascript/app.cpp @@ -1,7 +1,7 @@ // Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - + // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #include "../../include/javascript/JavaScript.h" @@ -45,7 +45,7 @@ TimerObj::TimerObj(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject), m_pTimer(NULL) { - + } TimerObj::~TimerObj() @@ -89,7 +89,7 @@ BEGIN_JS_STATIC_PROP(CJS_App) JS_STATIC_PROP_ENTRY(runtimeHighlight) JS_STATIC_PROP_ENTRY(viewerType) JS_STATIC_PROP_ENTRY(viewerVariation) - JS_STATIC_PROP_ENTRY(viewerVersion) + JS_STATIC_PROP_ENTRY(viewerVersion) END_JS_STATIC_PROP() BEGIN_JS_STATIC_METHOD(CJS_App) @@ -104,7 +104,7 @@ BEGIN_JS_STATIC_METHOD(CJS_App) JS_STATIC_METHOD_ENTRY(goBack, 0) JS_STATIC_METHOD_ENTRY(goForward, 0) JS_STATIC_METHOD_ENTRY(launchURL, 0) - JS_STATIC_METHOD_ENTRY(mailMsg, 0) + JS_STATIC_METHOD_ENTRY(mailMsg, 0) JS_STATIC_METHOD_ENTRY(newFDF, 0) JS_STATIC_METHOD_ENTRY(newDoc, 0) JS_STATIC_METHOD_ENTRY(openDoc, 0) @@ -140,29 +140,29 @@ FX_BOOL app::activeDocs(OBJ_PROP_PARAMS) CJS_Context* pContext = (CJS_Context *)cc; ASSERT(pContext != NULL); - + CPDFDoc_Environment* pApp = pContext->GetReaderApp(); ASSERT(pApp != NULL); CJS_Runtime* pRuntime = pContext->GetJSRuntime(); ASSERT(pRuntime != NULL); - + CPDFSDK_Document* pCurDoc = pContext->GetReaderDocument(); - + CJS_Array aDocs(pRuntime->GetIsolate()); // int iNumDocs = pApp->CountDocuments(); - -// for(int iIndex = 0; iIndex<iNumDocs; iIndex++) -// { + +// for(int iIndex = 0; iIndex<iNumDocs; iIndex++) +// { CPDFSDK_Document* pDoc = pApp->GetCurrentDoc(); if (pDoc) { CJS_Document * pJSDocument = NULL; - + if (pDoc == pCurDoc) { JSFXObject pObj = JS_GetThisObj(*pRuntime); - + if (JS_GetObjDefnID(pObj) == JS_GetObjDefnID(*pRuntime, L"Document")) { pJSDocument = (CJS_Document*)JS_GetPrivate(pRuntime->GetIsolate(),pObj); @@ -173,15 +173,15 @@ FX_BOOL app::activeDocs(OBJ_PROP_PARAMS) JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime,L"Document")); pJSDocument = (CJS_Document*)JS_GetPrivate(pRuntime->GetIsolate(),pObj); ASSERT(pJSDocument != NULL); - - + + // pDocument->AttachDoc(pDoc); } - + aDocs.SetElement(0,CJS_Value(pRuntime->GetIsolate(),pJSDocument)); } // } - + if (aDocs.GetLength() > 0) vp << aDocs; else @@ -201,31 +201,31 @@ FX_BOOL app::calculate(OBJ_PROP_PARAMS) CJS_Context* pContext = (CJS_Context*)cc; ASSERT(pContext != NULL); - + CPDFDoc_Environment* pApp = pContext->GetReaderApp(); ASSERT(pApp != NULL); - + CJS_Runtime* pRuntime = pContext->GetJSRuntime(); ASSERT(pRuntime != NULL); CJS_Array aDocs(pRuntime->GetIsolate()); -// int iNumDocs = pApp->CountDocuments(); -// -// for (int iIndex = 0;iIndex < iNumDocs; iIndex++) -// { +// int iNumDocs = pApp->CountDocuments(); +// +// for (int iIndex = 0;iIndex < iNumDocs; iIndex++) +// { if (CPDFSDK_Document* pDoc = pApp->GetCurrentDoc()) { CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDoc->GetInterForm(); ASSERT(pInterForm != NULL); pInterForm->EnableCalculate((FX_BOOL)m_bCalculate); - } + } // } } else { vp << (bool)m_bCalculate; } - + return TRUE; } @@ -236,30 +236,18 @@ FX_BOOL app::formsVersion(OBJ_PROP_PARAMS) vp << JS_NUM_FORMSVERSION; return TRUE; } - + return FALSE; } FX_BOOL app::viewerType(OBJ_PROP_PARAMS) { - - - - - - if (vp.IsGetting()) { -// if (pApp->GetAppName() == PHANTOM) -// vp << JS_STR_VIEWERTYPE_STANDARD; -// else -// vp << JS_STR_VIEWERTYPE_READER; vp << L"unknown"; - - //vp << pApp->GetAppTitle(); return TRUE; } - + return FALSE; } @@ -270,7 +258,7 @@ FX_BOOL app::viewerVariation(OBJ_PROP_PARAMS) vp << JS_STR_VIEWERVARIATION; return TRUE; } - + return FALSE; } @@ -281,7 +269,7 @@ FX_BOOL app::viewerVersion(OBJ_PROP_PARAMS) vp << JS_STR_VIEWERVERSION; return TRUE; } - + return FALSE; } @@ -292,7 +280,7 @@ FX_BOOL app::platform(OBJ_PROP_PARAMS) vp << JS_STR_PLATFORM; return TRUE; } - + return FALSE; } @@ -303,7 +291,7 @@ FX_BOOL app::language(OBJ_PROP_PARAMS) vp << JS_STR_LANGUANGE; return TRUE; } - + return FALSE; } @@ -425,7 +413,7 @@ FX_BOOL app::alert(OBJ_METHOD_PARAMS) swMsg = params[0]; } swTitle = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSALERT); - + for(int i = 1;i<iSize;i++) { if (i == 1) @@ -433,7 +421,7 @@ FX_BOOL app::alert(OBJ_METHOD_PARAMS) if (i == 2) iType = int(params[i]); if (i == 3) - swTitle = params[i]; + swTitle = params[i]; } } @@ -445,7 +433,7 @@ FX_BOOL app::alert(OBJ_METHOD_PARAMS) pRuntime->BeginBlock(); vRet = MsgBox(pRuntime->GetReaderApp(), JSGetPageView(cc),swMsg,swTitle,iType,iIcon); pRuntime->EndBlock(); - + return TRUE; } @@ -474,7 +462,7 @@ FX_BOOL app::findComponent(OBJ_METHOD_PARAMS) } FX_BOOL app::popUpMenuEx(OBJ_METHOD_PARAMS) -{ +{ return FALSE; } @@ -485,26 +473,26 @@ FX_BOOL app::fs(OBJ_PROP_PARAMS) FX_BOOL app::setInterval(OBJ_METHOD_PARAMS) { - if (params.size() > 2 || params.size() == 0) + if (params.size() > 2 || params.size() == 0) { - sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR); + sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR); return FALSE; } - + CJS_Context* pContext = (CJS_Context*)cc; ASSERT(pContext != NULL); CJS_Runtime* pRuntime = pContext->GetJSRuntime(); ASSERT(pRuntime != NULL); CFX_WideString script = params.size() > 0 ? (FX_LPCWSTR)(params[0].operator CFX_WideString()) : L""; - if (script.IsEmpty()) + if (script.IsEmpty()) { sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSAFNUMBER_KEYSTROKE); return TRUE; } FX_DWORD dwInterval = params.size() > 1 ? (int)params[1] : 1000; - + CPDFDoc_Environment* pApp = pRuntime->GetReaderApp(); ASSERT(pApp); CJS_Timer* pTimer = new CJS_Timer(this, pApp); @@ -516,19 +504,19 @@ FX_BOOL app::setInterval(OBJ_METHOD_PARAMS) pTimer->SetTimeOut(0); // pTimer->SetStartTime(GetTickCount()); pTimer->SetJSTimer(dwInterval); - + JSFXObject pRetObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"TimerObj")); - + CJS_TimerObj* pJS_TimerObj = (CJS_TimerObj*)JS_GetPrivate(pRuntime->GetIsolate(),pRetObj); ASSERT(pJS_TimerObj != NULL); - + TimerObj* pTimerObj = (TimerObj*)pJS_TimerObj->GetEmbedObject(); ASSERT(pTimerObj != NULL); - - pTimerObj->SetTimer(pTimer); - + + pTimerObj->SetTimer(pTimer); + vRet = pRetObj; - + return TRUE; } @@ -536,29 +524,29 @@ FX_BOOL app::setTimeOut(OBJ_METHOD_PARAMS) { if (params.size() > 2 || params.size() == 0) { - sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR); + sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR); return FALSE; } - + CJS_Context* pContext = (CJS_Context*)cc; ASSERT(pContext != NULL); CJS_Runtime* pRuntime = pContext->GetJSRuntime(); ASSERT(pRuntime != NULL); - + CFX_WideString script = params.size() > 0 ? (FX_LPCWSTR)(params[0].operator CFX_WideString()) : L""; - if (script.IsEmpty()) + if (script.IsEmpty()) { sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSAFNUMBER_KEYSTROKE); return TRUE; } - + FX_DWORD dwTimeOut = params.size() > 1 ? (int)params[1] : 1000; - + CPDFDoc_Environment* pApp = pRuntime->GetReaderApp(); ASSERT(pApp); CJS_Timer* pTimer = new CJS_Timer(this, pApp); m_aTimer.Add(pTimer); - + pTimer->SetType(1); pTimer->SetRuntime(pRuntime); pTimer->SetJScript(script); @@ -566,20 +554,20 @@ FX_BOOL app::setTimeOut(OBJ_METHOD_PARAMS) // 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); - + TimerObj* pTimerObj = (TimerObj*)pJS_TimerObj->GetEmbedObject(); ASSERT(pTimerObj != NULL); - - pTimerObj->SetTimer(pTimer); - + + pTimerObj->SetTimer(pTimer); + vRet = pRetObj; - + return TRUE; } @@ -589,13 +577,13 @@ FX_BOOL app::clearTimeOut(OBJ_METHOD_PARAMS) ASSERT(pContext != NULL); CJS_Runtime* pRuntime = pContext->GetJSRuntime(); ASSERT(pRuntime != NULL); - + if (params.size() != 1) { - sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR); + sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR); return FALSE; } - + if (params[0].GetType() == VT_fxobject) { JSFXObject pObj = (JSFXObject)params[0]; @@ -609,7 +597,7 @@ FX_BOOL app::clearTimeOut(OBJ_METHOD_PARAMS) if (CJS_Timer* pTimer = pTimerObj->GetTimer()) { pTimer->KillJSTimer(); - + for (int i=0,sz=m_aTimer.GetSize(); i<sz; i++) { if (m_aTimer[i] == pTimer) @@ -618,7 +606,7 @@ FX_BOOL app::clearTimeOut(OBJ_METHOD_PARAMS) break; } } - + delete pTimer; pTimerObj->SetTimer(NULL); } @@ -627,7 +615,7 @@ FX_BOOL app::clearTimeOut(OBJ_METHOD_PARAMS) } } } - + return TRUE; } @@ -640,10 +628,10 @@ FX_BOOL app::clearInterval(OBJ_METHOD_PARAMS) if (params.size() != 1) { - sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR); + sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR); return FALSE; } - + if (params[0].GetType() == VT_fxobject) { JSFXObject pObj = (JSFXObject)params[0]; @@ -657,7 +645,7 @@ FX_BOOL app::clearInterval(OBJ_METHOD_PARAMS) if (CJS_Timer* pTimer = pTimerObj->GetTimer()) { pTimer->KillJSTimer(); - + for (int i=0,sz=m_aTimer.GetSize(); i<sz; i++) { if (m_aTimer[i] == pTimer) @@ -666,7 +654,7 @@ FX_BOOL app::clearInterval(OBJ_METHOD_PARAMS) break; } } - + delete pTimer; pTimerObj->SetTimer(NULL); } @@ -675,12 +663,12 @@ FX_BOOL app::clearInterval(OBJ_METHOD_PARAMS) } } } - + return TRUE; } FX_BOOL app::execMenuItem(OBJ_METHOD_PARAMS) -{ +{ return FALSE; } @@ -701,7 +689,7 @@ void app::TimerProc(CJS_Timer* pTimer) } break; } - + } void app::RunJsScript(CJS_Runtime* pRuntime,const CFX_WideString& wsScript) @@ -721,24 +709,14 @@ void app::RunJsScript(CJS_Runtime* pRuntime,const CFX_WideString& wsScript) FX_BOOL app::goBack(OBJ_METHOD_PARAMS) { - - - - - - - return TRUE; + // Not supported. + return TRUE; } FX_BOOL app::goForward(OBJ_METHOD_PARAMS) -{ - - - - - - - return TRUE; +{ + // Not supported. + return TRUE; } FX_BOOL app::mailMsg(OBJ_METHOD_PARAMS) @@ -762,7 +740,7 @@ FX_BOOL app::mailMsg(OBJ_METHOD_PARAMS) 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""; + cMsg = params.size()>=6?(const wchar_t*)(FX_LPCWSTR)params[5].operator CFX_WideString():L""; if (params[0].GetType() == VT_object) @@ -787,8 +765,8 @@ FX_BOOL app::mailMsg(OBJ_METHOD_PARAMS) pValue = JS_GetObjectElement(isolate,pObj, L"cMsg"); cMsg = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); } - - + + CJS_Runtime* pRuntime = pContext->GetJSRuntime(); ASSERT(pRuntime != NULL); @@ -807,25 +785,8 @@ FX_BOOL app::mailMsg(OBJ_METHOD_PARAMS) FX_BOOL app::launchURL(OBJ_METHOD_PARAMS) { - if (IsSafeMode(cc)) return TRUE; - - CJS_Context* pContext = (CJS_Context*)cc; - ASSERT(pContext != NULL); - - - - - CFX_WideString swURL = params[0].operator CFX_WideString(); - - CJS_Runtime* pRuntime = pContext->GetJSRuntime(); - ASSERT(pRuntime != NULL); - - pRuntime->BeginBlock(); -// FX_BOOL bRet = pApp->OpenURL(swURL); - pRuntime->EndBlock(); - -// return bRet; - return FALSE; + // Unsafe, not supported. + return TRUE; } FX_BOOL app::runtimeHighlight(OBJ_PROP_PARAMS) @@ -855,90 +816,14 @@ FX_BOOL app::popUpMenu(OBJ_METHOD_PARAMS) FX_BOOL app::browseForDoc(OBJ_METHOD_PARAMS) { - //This method may trigger a "file save" dialog,while enable user to save contents of the document. - //Such action is considered to be unsafe. - if (IsSafeMode(cc)) return TRUE; - - v8::Isolate* isolate = GetIsolate(cc); - - bool bSave = false; - CFX_ByteString cFilenameInit = CFX_ByteString(); - CFX_ByteString cFSInit = CFX_ByteString(); - - if(params.size()>0 && (params[0].GetType() == VT_object)) - { - JSObject pObj = (JSObject )params[0]; - - v8::Handle<v8::Value> pValue = JS_GetObjectElement(isolate,pObj,L"bSave"); - bSave = (bool)CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)); - - pValue = JS_GetObjectElement(isolate, pObj,L"cFilenameInit"); - { - CJS_Value t = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)); - cFilenameInit = t.operator CFX_ByteString(); - } - - pValue = JS_GetObjectElement(isolate,pObj,L"cFSInit"); - { - CJS_Value t = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)); - cFSInit = t.operator CFX_ByteString(); - } - } - else - { - if(params.size() >= 1) - { - bSave = (bool)params[0]; - } - if(params.size() >= 2) - { - CJS_Value t = params[1]; - cFilenameInit = t.operator CFX_ByteString(); - } - if(params.size() >= 3) - { - CJS_Value t = params[2]; - cFSInit = t.operator CFX_ByteString(); - } - } - CJS_Context* pContext = (CJS_Context *)cc; - ASSERT(pContext != NULL); - - CPDFDoc_Environment* pApp = pContext->GetReaderApp(); - ASSERT(pApp != NULL); - - CJS_Runtime* pRuntime = pContext->GetJSRuntime(); - ASSERT(pRuntime != NULL); - - CFX_WideString wsFileNameInit = CFX_WideString::FromLocal(cFilenameInit); - CFX_WideString wsFSInit = CFX_WideString::FromLocal(cFSInit); - CFX_WideString wsFilePath = pApp->JS_appbrowseForDoc(bSave, wsFileNameInit); - if(wsFilePath.IsEmpty()) - return FALSE; - - JSFXObject pRetObj = JS_NewFxDynamicObj(*pRuntime, pContext, -1); - - JS_PutObjectString(isolate,pRetObj, L"cPath", SysPathToPDFPath(wsFilePath)); - JS_PutObjectString(isolate,pRetObj, L"cURL", SysPathToPDFPath(wsFilePath)); - - if (!cFSInit.IsEmpty()) - { - JS_PutObjectString(isolate,pRetObj, L"cFS", CFX_WideString::FromLocal(cFSInit.GetBuffer(cFSInit.GetLength()))); - } - else - { - JS_PutObjectString(isolate,pRetObj, L"cFS", CFX_WideString::FromLocal("DOS")); - } - - vRet = pRetObj; - - return TRUE; + // Unsafe, not supported. + return TRUE; } CFX_WideString app::SysPathToPDFPath(const CFX_WideString& sOldPath) { CFX_WideString sRet = L"/"; - + for (int i=0,sz=sOldPath.GetLength(); i<sz; i++) { wchar_t c = sOldPath.GetAt(i); @@ -957,47 +842,8 @@ CFX_WideString app::SysPathToPDFPath(const CFX_WideString& sOldPath) } } } - - return sRet; -} - -CFX_WideString app::PDFPathToSysPath(const CFX_WideString& sOldPath) -{ - //strLPath = "D:\temporay.fdf"; - CFX_WideString strOPath = sOldPath; - strOPath.TrimLeft(); - strOPath.TrimRight(); - - if (strOPath.GetAt(0) == L'/' && strOPath.GetAt(2) == L'/') - { - wchar_t c_Drive = strOPath.GetAt(1); - if ((c_Drive >= L'a' && c_Drive <= L'z' )||( c_Drive >= L'A' && c_Drive <= L'Z')) - { - strOPath.Replace(L"/",L"\\"); - //strOPath.SetAt(0,''); - strOPath.Insert(2,':'); - strOPath.Delete(0); - } - } - - return strOPath; -} -CFX_WideString app::RelativePathToSysPath(const CFX_WideString& sOldPath, const CFX_WideString& sFilePath) -{ -// if (!PathIsRelative(sOldPath)) return sOldPath; - - int nSplit = 0; - for (int i=sFilePath.GetLength()-1; i>=0; i--) - { - if (sFilePath[i] == '\\' || sFilePath[i] == '/') - { - nSplit = i; - break; - } - } - - return sFilePath.Left(nSplit+1) + sOldPath; + return sRet; } FX_BOOL app::newDoc(OBJ_METHOD_PARAMS) @@ -1099,4 +945,3 @@ FX_BOOL app::execDialog(OBJ_METHOD_PARAMS) { return TRUE; } - diff --git a/fpdfsdk/src/javascript/report.cpp b/fpdfsdk/src/javascript/report.cpp index 9cb9da5051..189ab87d32 100644 --- a/fpdfsdk/src/javascript/report.cpp +++ b/fpdfsdk/src/javascript/report.cpp @@ -1,7 +1,7 @@ // Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - + // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #include "../../include/javascript/JavaScript.h" @@ -19,13 +19,13 @@ END_JS_STATIC_CONST() BEGIN_JS_STATIC_PROP(CJS_Report) END_JS_STATIC_PROP() -BEGIN_JS_STATIC_METHOD(CJS_Report) +BEGIN_JS_STATIC_METHOD(CJS_Report) JS_STATIC_METHOD_ENTRY(save, 1) JS_STATIC_METHOD_ENTRY(writeText,1) END_JS_STATIC_METHOD() IMPLEMENT_JS_CLASS(CJS_Report, Report) - + Report::Report(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject) { @@ -33,18 +33,17 @@ Report::Report(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject) Report::~Report() { - + } FX_BOOL Report::writeText(OBJ_METHOD_PARAMS) { - if (IsSafeMode(cc)) return TRUE; - return TRUE; + // Unsafe, not supported. + return TRUE; } FX_BOOL Report::save(OBJ_METHOD_PARAMS) { - if (IsSafeMode(cc)) return TRUE; - return TRUE; + // Unsafe, not supported. + return TRUE; } - |