OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "fpdfsdk/javascript/Document.h" | 7 #include "fpdfsdk/javascript/Document.h" |
8 | 8 |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 JS_STATIC_METHOD_ENTRY(submitForm) | 142 JS_STATIC_METHOD_ENTRY(submitForm) |
143 JS_STATIC_METHOD_ENTRY(syncAnnotScan) | 143 JS_STATIC_METHOD_ENTRY(syncAnnotScan) |
144 JS_STATIC_METHOD_ENTRY(mailDoc) | 144 JS_STATIC_METHOD_ENTRY(mailDoc) |
145 END_JS_STATIC_METHOD() | 145 END_JS_STATIC_METHOD() |
146 | 146 |
147 IMPLEMENT_JS_CLASS(CJS_Document, Document) | 147 IMPLEMENT_JS_CLASS(CJS_Document, Document) |
148 | 148 |
149 void CJS_Document::InitInstance(IJS_Runtime* pIRuntime) { | 149 void CJS_Document::InitInstance(IJS_Runtime* pIRuntime) { |
150 CJS_Runtime* pRuntime = static_cast<CJS_Runtime*>(pIRuntime); | 150 CJS_Runtime* pRuntime = static_cast<CJS_Runtime*>(pIRuntime); |
151 Document* pDoc = static_cast<Document*>(GetEmbedObject()); | 151 Document* pDoc = static_cast<Document*>(GetEmbedObject()); |
152 pDoc->AttachDoc(pRuntime->GetReaderDocument()); | 152 pDoc->SetFormFillEnv(pRuntime->GetFormFillEnv()); |
153 } | 153 } |
154 | 154 |
155 Document::Document(CJS_Object* pJSObject) | 155 Document::Document(CJS_Object* pJSObject) |
156 : CJS_EmbedObj(pJSObject), | 156 : CJS_EmbedObj(pJSObject), |
157 m_pDocument(nullptr), | 157 m_pFormFillEnv(nullptr), |
158 m_cwBaseURL(L""), | 158 m_cwBaseURL(L""), |
159 m_bDelay(FALSE) {} | 159 m_bDelay(FALSE) {} |
160 | 160 |
161 Document::~Document() { | 161 Document::~Document() { |
162 } | 162 } |
163 | 163 |
164 // the total number of fileds in document. | 164 // the total number of fileds in document. |
165 FX_BOOL Document::numFields(IJS_Context* cc, | 165 FX_BOOL Document::numFields(IJS_Context* cc, |
166 CJS_PropValue& vp, | 166 CJS_PropValue& vp, |
167 CFX_WideString& sError) { | 167 CFX_WideString& sError) { |
168 if (vp.IsSetting()) { | 168 if (vp.IsSetting()) { |
169 sError = JSGetStringFromID(IDS_STRING_JSREADONLY); | 169 sError = JSGetStringFromID(IDS_STRING_JSREADONLY); |
170 return FALSE; | 170 return FALSE; |
171 } | 171 } |
172 if (!m_pDocument) { | 172 if (!m_pFormFillEnv) { |
173 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 173 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
174 return FALSE; | 174 return FALSE; |
175 } | 175 } |
176 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 176 CPDFSDK_InterForm* pInterForm = |
| 177 m_pFormFillEnv->GetSDKDocument()->GetInterForm(); |
177 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); | 178 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); |
178 vp << static_cast<int>(pPDFForm->CountFields(CFX_WideString())); | 179 vp << static_cast<int>(pPDFForm->CountFields(CFX_WideString())); |
179 return TRUE; | 180 return TRUE; |
180 } | 181 } |
181 | 182 |
182 FX_BOOL Document::dirty(IJS_Context* cc, | 183 FX_BOOL Document::dirty(IJS_Context* cc, |
183 CJS_PropValue& vp, | 184 CJS_PropValue& vp, |
184 CFX_WideString& sError) { | 185 CFX_WideString& sError) { |
185 if (!m_pDocument) { | 186 if (!m_pFormFillEnv) { |
186 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 187 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
187 return FALSE; | 188 return FALSE; |
188 } | 189 } |
189 if (vp.IsGetting()) { | 190 if (vp.IsGetting()) { |
190 vp << !!m_pDocument->GetChangeMark(); | 191 vp << !!m_pFormFillEnv->GetSDKDocument()->GetChangeMark(); |
191 } else { | 192 } else { |
192 bool bChanged = false; | 193 bool bChanged = false; |
193 vp >> bChanged; | 194 vp >> bChanged; |
194 | 195 |
195 if (bChanged) | 196 if (bChanged) |
196 m_pDocument->SetChangeMark(); | 197 m_pFormFillEnv->GetSDKDocument()->SetChangeMark(); |
197 else | 198 else |
198 m_pDocument->ClearChangeMark(); | 199 m_pFormFillEnv->GetSDKDocument()->ClearChangeMark(); |
199 } | 200 } |
200 return TRUE; | 201 return TRUE; |
201 } | 202 } |
202 | 203 |
203 FX_BOOL Document::ADBE(IJS_Context* cc, | 204 FX_BOOL Document::ADBE(IJS_Context* cc, |
204 CJS_PropValue& vp, | 205 CJS_PropValue& vp, |
205 CFX_WideString& sError) { | 206 CFX_WideString& sError) { |
206 if (vp.IsGetting()) | 207 if (vp.IsGetting()) |
207 vp.GetJSValue()->SetNull(CJS_Runtime::FromContext(cc)); | 208 vp.GetJSValue()->SetNull(CJS_Runtime::FromContext(cc)); |
208 | 209 |
209 return TRUE; | 210 return TRUE; |
210 } | 211 } |
211 | 212 |
212 FX_BOOL Document::pageNum(IJS_Context* cc, | 213 FX_BOOL Document::pageNum(IJS_Context* cc, |
213 CJS_PropValue& vp, | 214 CJS_PropValue& vp, |
214 CFX_WideString& sError) { | 215 CFX_WideString& sError) { |
215 if (!m_pDocument) { | 216 if (!m_pFormFillEnv) { |
216 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 217 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
217 return FALSE; | 218 return FALSE; |
218 } | 219 } |
219 if (vp.IsGetting()) { | 220 if (vp.IsGetting()) { |
220 if (CPDFSDK_PageView* pPageView = m_pDocument->GetCurrentView()) { | 221 if (CPDFSDK_PageView* pPageView = |
| 222 m_pFormFillEnv->GetSDKDocument()->GetCurrentView()) { |
221 vp << pPageView->GetPageIndex(); | 223 vp << pPageView->GetPageIndex(); |
222 } | 224 } |
223 } else { | 225 } else { |
224 int iPageCount = m_pDocument->GetPageCount(); | 226 int iPageCount = m_pFormFillEnv->GetSDKDocument()->GetPageCount(); |
225 int iPageNum = 0; | 227 int iPageNum = 0; |
226 vp >> iPageNum; | 228 vp >> iPageNum; |
227 | 229 |
228 CPDFSDK_FormFillEnvironment* pEnv = m_pDocument->GetEnv(); | |
229 if (iPageNum >= 0 && iPageNum < iPageCount) { | 230 if (iPageNum >= 0 && iPageNum < iPageCount) { |
230 pEnv->JS_docgotoPage(iPageNum); | 231 m_pFormFillEnv->JS_docgotoPage(iPageNum); |
231 } else if (iPageNum >= iPageCount) { | 232 } else if (iPageNum >= iPageCount) { |
232 pEnv->JS_docgotoPage(iPageCount - 1); | 233 m_pFormFillEnv->JS_docgotoPage(iPageCount - 1); |
233 } else if (iPageNum < 0) { | 234 } else if (iPageNum < 0) { |
234 pEnv->JS_docgotoPage(0); | 235 m_pFormFillEnv->JS_docgotoPage(0); |
235 } | 236 } |
236 } | 237 } |
237 | 238 |
238 return TRUE; | 239 return TRUE; |
239 } | 240 } |
240 | 241 |
241 FX_BOOL Document::addAnnot(IJS_Context* cc, | 242 FX_BOOL Document::addAnnot(IJS_Context* cc, |
242 const std::vector<CJS_Value>& params, | 243 const std::vector<CJS_Value>& params, |
243 CJS_Value& vRet, | 244 CJS_Value& vRet, |
244 CFX_WideString& sError) { | 245 CFX_WideString& sError) { |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
284 // valiable filed name in this document | 285 // valiable filed name in this document |
285 | 286 |
286 FX_BOOL Document::getField(IJS_Context* cc, | 287 FX_BOOL Document::getField(IJS_Context* cc, |
287 const std::vector<CJS_Value>& params, | 288 const std::vector<CJS_Value>& params, |
288 CJS_Value& vRet, | 289 CJS_Value& vRet, |
289 CFX_WideString& sError) { | 290 CFX_WideString& sError) { |
290 if (params.size() < 1) { | 291 if (params.size() < 1) { |
291 sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); | 292 sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); |
292 return FALSE; | 293 return FALSE; |
293 } | 294 } |
294 if (!m_pDocument) { | 295 if (!m_pFormFillEnv) { |
295 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 296 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
296 return FALSE; | 297 return FALSE; |
297 } | 298 } |
298 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | 299 CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
299 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | 300 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
300 CFX_WideString wideName = params[0].ToCFXWideString(pRuntime); | 301 CFX_WideString wideName = params[0].ToCFXWideString(pRuntime); |
301 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 302 CPDFSDK_InterForm* pInterForm = |
| 303 m_pFormFillEnv->GetSDKDocument()->GetInterForm(); |
302 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); | 304 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); |
303 if (pPDFForm->CountFields(wideName) <= 0) { | 305 if (pPDFForm->CountFields(wideName) <= 0) { |
304 vRet.SetNull(pRuntime); | 306 vRet.SetNull(pRuntime); |
305 return TRUE; | 307 return TRUE; |
306 } | 308 } |
307 | 309 |
308 v8::Local<v8::Object> pFieldObj = | 310 v8::Local<v8::Object> pFieldObj = |
309 pRuntime->NewFxDynamicObj(CJS_Field::g_nObjDefnID); | 311 pRuntime->NewFxDynamicObj(CJS_Field::g_nObjDefnID); |
310 CJS_Field* pJSField = | 312 CJS_Field* pJSField = |
311 static_cast<CJS_Field*>(pRuntime->GetObjectPrivate(pFieldObj)); | 313 static_cast<CJS_Field*>(pRuntime->GetObjectPrivate(pFieldObj)); |
312 Field* pField = static_cast<Field*>(pJSField->GetEmbedObject()); | 314 Field* pField = static_cast<Field*>(pJSField->GetEmbedObject()); |
313 pField->AttachField(this, wideName); | 315 pField->AttachField(this, wideName); |
314 | 316 |
315 vRet = CJS_Value(pRuntime, pJSField); | 317 vRet = CJS_Value(pRuntime, pJSField); |
316 return TRUE; | 318 return TRUE; |
317 } | 319 } |
318 | 320 |
319 // Gets the name of the nth field in the document | 321 // Gets the name of the nth field in the document |
320 FX_BOOL Document::getNthFieldName(IJS_Context* cc, | 322 FX_BOOL Document::getNthFieldName(IJS_Context* cc, |
321 const std::vector<CJS_Value>& params, | 323 const std::vector<CJS_Value>& params, |
322 CJS_Value& vRet, | 324 CJS_Value& vRet, |
323 CFX_WideString& sError) { | 325 CFX_WideString& sError) { |
324 if (params.size() != 1) { | 326 if (params.size() != 1) { |
325 sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); | 327 sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); |
326 return FALSE; | 328 return FALSE; |
327 } | 329 } |
328 if (!m_pDocument) { | 330 if (!m_pFormFillEnv) { |
329 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 331 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
330 return FALSE; | 332 return FALSE; |
331 } | 333 } |
332 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | 334 CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
333 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | 335 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
334 int nIndex = params[0].ToInt(pRuntime); | 336 int nIndex = params[0].ToInt(pRuntime); |
335 if (nIndex < 0) { | 337 if (nIndex < 0) { |
336 sError = JSGetStringFromID(IDS_STRING_JSVALUEERROR); | 338 sError = JSGetStringFromID(IDS_STRING_JSVALUEERROR); |
337 return FALSE; | 339 return FALSE; |
338 } | 340 } |
339 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 341 CPDFSDK_InterForm* pInterForm = |
| 342 m_pFormFillEnv->GetSDKDocument()->GetInterForm(); |
340 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); | 343 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); |
341 CPDF_FormField* pField = pPDFForm->GetField(nIndex, CFX_WideString()); | 344 CPDF_FormField* pField = pPDFForm->GetField(nIndex, CFX_WideString()); |
342 if (!pField) | 345 if (!pField) |
343 return FALSE; | 346 return FALSE; |
344 | 347 |
345 vRet = CJS_Value(pRuntime, pField->GetFullName().c_str()); | 348 vRet = CJS_Value(pRuntime, pField->GetFullName().c_str()); |
346 return TRUE; | 349 return TRUE; |
347 } | 350 } |
348 | 351 |
349 FX_BOOL Document::importAnFDF(IJS_Context* cc, | 352 FX_BOOL Document::importAnFDF(IJS_Context* cc, |
(...skipping 24 matching lines...) Expand all Loading... |
374 // all recipients. | 377 // all recipients. |
375 // comment: need reader supports | 378 // comment: need reader supports |
376 // note: | 379 // note: |
377 // int CPDFSDK_Document::mailForm(FX_BOOL bUI,String cto,string ccc,string | 380 // int CPDFSDK_Document::mailForm(FX_BOOL bUI,String cto,string ccc,string |
378 // cbcc,string cSubject,string cms); | 381 // cbcc,string cSubject,string cms); |
379 | 382 |
380 FX_BOOL Document::mailForm(IJS_Context* cc, | 383 FX_BOOL Document::mailForm(IJS_Context* cc, |
381 const std::vector<CJS_Value>& params, | 384 const std::vector<CJS_Value>& params, |
382 CJS_Value& vRet, | 385 CJS_Value& vRet, |
383 CFX_WideString& sError) { | 386 CFX_WideString& sError) { |
384 if (!m_pDocument) { | 387 if (!m_pFormFillEnv) { |
385 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 388 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
386 return FALSE; | 389 return FALSE; |
387 } | 390 } |
388 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) { | 391 if (!m_pFormFillEnv->GetSDKDocument()->GetPermissions( |
| 392 FPDFPERM_EXTRACT_ACCESS)) { |
389 sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); | 393 sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); |
390 return FALSE; | 394 return FALSE; |
391 } | 395 } |
392 | 396 |
393 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | 397 CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
394 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | 398 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
395 | 399 |
396 int iLength = params.size(); | 400 int iLength = params.size(); |
397 FX_BOOL bUI = iLength > 0 ? params[0].ToBool(pRuntime) : TRUE; | 401 FX_BOOL bUI = iLength > 0 ? params[0].ToBool(pRuntime) : TRUE; |
398 CFX_WideString cTo = iLength > 1 ? params[1].ToCFXWideString(pRuntime) : L""; | 402 CFX_WideString cTo = iLength > 1 ? params[1].ToCFXWideString(pRuntime) : L""; |
399 CFX_WideString cCc = iLength > 2 ? params[2].ToCFXWideString(pRuntime) : L""; | 403 CFX_WideString cCc = iLength > 2 ? params[2].ToCFXWideString(pRuntime) : L""; |
400 CFX_WideString cBcc = iLength > 3 ? params[3].ToCFXWideString(pRuntime) : L""; | 404 CFX_WideString cBcc = iLength > 3 ? params[3].ToCFXWideString(pRuntime) : L""; |
401 CFX_WideString cSubject = | 405 CFX_WideString cSubject = |
402 iLength > 4 ? params[4].ToCFXWideString(pRuntime) : L""; | 406 iLength > 4 ? params[4].ToCFXWideString(pRuntime) : L""; |
403 CFX_WideString cMsg = iLength > 5 ? params[5].ToCFXWideString(pRuntime) : L""; | 407 CFX_WideString cMsg = iLength > 5 ? params[5].ToCFXWideString(pRuntime) : L""; |
404 | 408 |
405 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 409 CPDFSDK_InterForm* pInterForm = |
| 410 m_pFormFillEnv->GetSDKDocument()->GetInterForm(); |
406 CFX_ByteTextBuf textBuf; | 411 CFX_ByteTextBuf textBuf; |
407 if (!pInterForm->ExportFormToFDFTextBuf(textBuf)) | 412 if (!pInterForm->ExportFormToFDFTextBuf(textBuf)) |
408 return FALSE; | 413 return FALSE; |
409 | 414 |
410 pRuntime->BeginBlock(); | 415 pRuntime->BeginBlock(); |
411 CPDFSDK_FormFillEnvironment* pEnv = pContext->GetFormFillEnv(); | 416 CPDFSDK_FormFillEnvironment* pEnv = pContext->GetFormFillEnv(); |
412 pEnv->JS_docmailForm(textBuf.GetBuffer(), textBuf.GetLength(), bUI, | 417 pEnv->JS_docmailForm(textBuf.GetBuffer(), textBuf.GetLength(), bUI, |
413 cTo.c_str(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(), | 418 cTo.c_str(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(), |
414 cMsg.c_str()); | 419 cMsg.c_str()); |
415 pRuntime->EndBlock(); | 420 pRuntime->EndBlock(); |
416 return TRUE; | 421 return TRUE; |
417 } | 422 } |
418 | 423 |
419 FX_BOOL Document::print(IJS_Context* cc, | 424 FX_BOOL Document::print(IJS_Context* cc, |
420 const std::vector<CJS_Value>& params, | 425 const std::vector<CJS_Value>& params, |
421 CJS_Value& vRet, | 426 CJS_Value& vRet, |
422 CFX_WideString& sError) { | 427 CFX_WideString& sError) { |
423 if (!m_pDocument) { | 428 if (!m_pFormFillEnv) { |
424 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 429 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
425 return FALSE; | 430 return FALSE; |
426 } | 431 } |
427 | 432 |
428 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | 433 CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
429 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | 434 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
430 | 435 |
431 FX_BOOL bUI = TRUE; | 436 FX_BOOL bUI = TRUE; |
432 int nStart = 0; | 437 int nStart = 0; |
433 int nEnd = 0; | 438 int nEnd = 0; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
470 if (nlength >= 5) | 475 if (nlength >= 5) |
471 bShrinkToFit = params[4].ToBool(pRuntime); | 476 bShrinkToFit = params[4].ToBool(pRuntime); |
472 if (nlength >= 6) | 477 if (nlength >= 6) |
473 bPrintAsImage = params[5].ToBool(pRuntime); | 478 bPrintAsImage = params[5].ToBool(pRuntime); |
474 if (nlength >= 7) | 479 if (nlength >= 7) |
475 bReverse = params[6].ToBool(pRuntime); | 480 bReverse = params[6].ToBool(pRuntime); |
476 if (nlength >= 8) | 481 if (nlength >= 8) |
477 bAnnotations = params[7].ToBool(pRuntime); | 482 bAnnotations = params[7].ToBool(pRuntime); |
478 } | 483 } |
479 | 484 |
480 if (CPDFSDK_FormFillEnvironment* pEnv = m_pDocument->GetEnv()) { | 485 if (m_pFormFillEnv) { |
481 pEnv->JS_docprint(bUI, nStart, nEnd, bSilent, bShrinkToFit, bPrintAsImage, | 486 m_pFormFillEnv->JS_docprint(bUI, nStart, nEnd, bSilent, bShrinkToFit, |
482 bReverse, bAnnotations); | 487 bPrintAsImage, bReverse, bAnnotations); |
483 return TRUE; | 488 return TRUE; |
484 } | 489 } |
485 return FALSE; | 490 return FALSE; |
486 } | 491 } |
487 | 492 |
488 // removes the specified field from the document. | 493 // removes the specified field from the document. |
489 // comment: | 494 // comment: |
490 // note: if the filed name is not rational, adobe is dumb for it. | 495 // note: if the filed name is not rational, adobe is dumb for it. |
491 | 496 |
492 FX_BOOL Document::removeField(IJS_Context* cc, | 497 FX_BOOL Document::removeField(IJS_Context* cc, |
493 const std::vector<CJS_Value>& params, | 498 const std::vector<CJS_Value>& params, |
494 CJS_Value& vRet, | 499 CJS_Value& vRet, |
495 CFX_WideString& sError) { | 500 CFX_WideString& sError) { |
496 if (params.size() != 1) { | 501 if (params.size() != 1) { |
497 sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); | 502 sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); |
498 return FALSE; | 503 return FALSE; |
499 } | 504 } |
500 if (!m_pDocument) { | 505 if (!m_pFormFillEnv) { |
501 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 506 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
502 return FALSE; | 507 return FALSE; |
503 } | 508 } |
504 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || | 509 if (!(m_pFormFillEnv->GetSDKDocument()->GetPermissions(FPDFPERM_MODIFY) || |
505 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM))) { | 510 m_pFormFillEnv->GetSDKDocument()->GetPermissions( |
| 511 FPDFPERM_ANNOT_FORM))) { |
506 sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); | 512 sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); |
507 return FALSE; | 513 return FALSE; |
508 } | 514 } |
509 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | 515 CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
510 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | 516 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
511 CFX_WideString sFieldName = params[0].ToCFXWideString(pRuntime); | 517 CFX_WideString sFieldName = params[0].ToCFXWideString(pRuntime); |
512 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 518 CPDFSDK_InterForm* pInterForm = |
| 519 m_pFormFillEnv->GetSDKDocument()->GetInterForm(); |
513 std::vector<CPDFSDK_Widget*> widgets; | 520 std::vector<CPDFSDK_Widget*> widgets; |
514 pInterForm->GetWidgets(sFieldName, &widgets); | 521 pInterForm->GetWidgets(sFieldName, &widgets); |
515 if (widgets.empty()) | 522 if (widgets.empty()) |
516 return TRUE; | 523 return TRUE; |
517 | 524 |
518 for (CPDFSDK_Widget* pWidget : widgets) { | 525 for (CPDFSDK_Widget* pWidget : widgets) { |
519 CFX_FloatRect rcAnnot = pWidget->GetRect(); | 526 CFX_FloatRect rcAnnot = pWidget->GetRect(); |
520 --rcAnnot.left; | 527 --rcAnnot.left; |
521 --rcAnnot.bottom; | 528 --rcAnnot.bottom; |
522 ++rcAnnot.right; | 529 ++rcAnnot.right; |
523 ++rcAnnot.top; | 530 ++rcAnnot.top; |
524 | 531 |
525 std::vector<CFX_FloatRect> aRefresh(1, rcAnnot); | 532 std::vector<CFX_FloatRect> aRefresh(1, rcAnnot); |
526 UnderlyingPageType* pPage = pWidget->GetUnderlyingPage(); | 533 UnderlyingPageType* pPage = pWidget->GetUnderlyingPage(); |
527 ASSERT(pPage); | 534 ASSERT(pPage); |
528 | 535 |
529 // If there is currently no pageview associated with the page being used | 536 // If there is currently no pageview associated with the page being used |
530 // do not create one. We may be in the process of tearing down the document | 537 // do not create one. We may be in the process of tearing down the document |
531 // and creating a new pageview at this point will cause bad things. | 538 // and creating a new pageview at this point will cause bad things. |
532 CPDFSDK_PageView* pPageView = m_pDocument->GetPageView(pPage, false); | 539 CPDFSDK_PageView* pPageView = |
| 540 m_pFormFillEnv->GetSDKDocument()->GetPageView(pPage, false); |
533 if (pPageView) { | 541 if (pPageView) { |
534 #if PDF_ENABLE_XFA | 542 #if PDF_ENABLE_XFA |
535 pPageView->DeleteAnnot(pWidget); | 543 pPageView->DeleteAnnot(pWidget); |
536 #endif // PDF_ENABLE_XFA | 544 #endif // PDF_ENABLE_XFA |
537 pPageView->UpdateRects(aRefresh); | 545 pPageView->UpdateRects(aRefresh); |
538 } | 546 } |
539 } | 547 } |
540 m_pDocument->SetChangeMark(); | 548 m_pFormFillEnv->GetSDKDocument()->SetChangeMark(); |
541 | 549 |
542 return TRUE; | 550 return TRUE; |
543 } | 551 } |
544 | 552 |
545 // reset filed values within a document. | 553 // reset filed values within a document. |
546 // comment: | 554 // comment: |
547 // note: if the fields names r not rational, aodbe is dumb for it. | 555 // note: if the fields names r not rational, aodbe is dumb for it. |
548 | 556 |
549 FX_BOOL Document::resetForm(IJS_Context* cc, | 557 FX_BOOL Document::resetForm(IJS_Context* cc, |
550 const std::vector<CJS_Value>& params, | 558 const std::vector<CJS_Value>& params, |
551 CJS_Value& vRet, | 559 CJS_Value& vRet, |
552 CFX_WideString& sError) { | 560 CFX_WideString& sError) { |
553 if (!m_pDocument) { | 561 if (!m_pFormFillEnv) { |
554 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 562 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
555 return FALSE; | 563 return FALSE; |
556 } | 564 } |
557 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || | 565 if (!(m_pFormFillEnv->GetSDKDocument()->GetPermissions(FPDFPERM_MODIFY) || |
558 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) || | 566 m_pFormFillEnv->GetSDKDocument()->GetPermissions(FPDFPERM_ANNOT_FORM) || |
559 m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) { | 567 m_pFormFillEnv->GetSDKDocument()->GetPermissions(FPDFPERM_FILL_FORM))) { |
560 sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); | 568 sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); |
561 return FALSE; | 569 return FALSE; |
562 } | 570 } |
563 | 571 |
564 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 572 CPDFSDK_InterForm* pInterForm = |
| 573 m_pFormFillEnv->GetSDKDocument()->GetInterForm(); |
565 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); | 574 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); |
566 CJS_Array aName; | 575 CJS_Array aName; |
567 | 576 |
568 if (params.empty()) { | 577 if (params.empty()) { |
569 pPDFForm->ResetForm(TRUE); | 578 pPDFForm->ResetForm(TRUE); |
570 m_pDocument->SetChangeMark(); | 579 m_pFormFillEnv->GetSDKDocument()->SetChangeMark(); |
571 return TRUE; | 580 return TRUE; |
572 } | 581 } |
573 | 582 |
574 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | 583 CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
575 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | 584 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
576 | 585 |
577 switch (params[0].GetType()) { | 586 switch (params[0].GetType()) { |
578 default: | 587 default: |
579 aName.Attach(params[0].ToV8Array(pRuntime)); | 588 aName.Attach(params[0].ToV8Array(pRuntime)); |
580 break; | 589 break; |
581 case CJS_Value::VT_string: | 590 case CJS_Value::VT_string: |
582 aName.SetElement(pRuntime, 0, params[0]); | 591 aName.SetElement(pRuntime, 0, params[0]); |
583 break; | 592 break; |
584 } | 593 } |
585 | 594 |
586 std::vector<CPDF_FormField*> aFields; | 595 std::vector<CPDF_FormField*> aFields; |
587 for (int i = 0, isz = aName.GetLength(pRuntime); i < isz; ++i) { | 596 for (int i = 0, isz = aName.GetLength(pRuntime); i < isz; ++i) { |
588 CJS_Value valElement(pRuntime); | 597 CJS_Value valElement(pRuntime); |
589 aName.GetElement(pRuntime, i, valElement); | 598 aName.GetElement(pRuntime, i, valElement); |
590 CFX_WideString swVal = valElement.ToCFXWideString(pRuntime); | 599 CFX_WideString swVal = valElement.ToCFXWideString(pRuntime); |
591 for (int j = 0, jsz = pPDFForm->CountFields(swVal); j < jsz; ++j) | 600 for (int j = 0, jsz = pPDFForm->CountFields(swVal); j < jsz; ++j) |
592 aFields.push_back(pPDFForm->GetField(j, swVal)); | 601 aFields.push_back(pPDFForm->GetField(j, swVal)); |
593 } | 602 } |
594 | 603 |
595 if (!aFields.empty()) { | 604 if (!aFields.empty()) { |
596 pPDFForm->ResetForm(aFields, TRUE, TRUE); | 605 pPDFForm->ResetForm(aFields, TRUE, TRUE); |
597 m_pDocument->SetChangeMark(); | 606 m_pFormFillEnv->GetSDKDocument()->SetChangeMark(); |
598 } | 607 } |
599 | 608 |
600 return TRUE; | 609 return TRUE; |
601 } | 610 } |
602 | 611 |
603 FX_BOOL Document::saveAs(IJS_Context* cc, | 612 FX_BOOL Document::saveAs(IJS_Context* cc, |
604 const std::vector<CJS_Value>& params, | 613 const std::vector<CJS_Value>& params, |
605 CJS_Value& vRet, | 614 CJS_Value& vRet, |
606 CFX_WideString& sError) { | 615 CFX_WideString& sError) { |
607 // Unsafe, not supported. | 616 // Unsafe, not supported. |
608 return TRUE; | 617 return TRUE; |
609 } | 618 } |
610 | 619 |
611 FX_BOOL Document::syncAnnotScan(IJS_Context* cc, | 620 FX_BOOL Document::syncAnnotScan(IJS_Context* cc, |
612 const std::vector<CJS_Value>& params, | 621 const std::vector<CJS_Value>& params, |
613 CJS_Value& vRet, | 622 CJS_Value& vRet, |
614 CFX_WideString& sError) { | 623 CFX_WideString& sError) { |
615 return TRUE; | 624 return TRUE; |
616 } | 625 } |
617 | 626 |
618 FX_BOOL Document::submitForm(IJS_Context* cc, | 627 FX_BOOL Document::submitForm(IJS_Context* cc, |
619 const std::vector<CJS_Value>& params, | 628 const std::vector<CJS_Value>& params, |
620 CJS_Value& vRet, | 629 CJS_Value& vRet, |
621 CFX_WideString& sError) { | 630 CFX_WideString& sError) { |
622 int nSize = params.size(); | 631 int nSize = params.size(); |
623 if (nSize < 1) { | 632 if (nSize < 1) { |
624 sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); | 633 sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); |
625 return FALSE; | 634 return FALSE; |
626 } | 635 } |
627 if (!m_pDocument) { | 636 if (!m_pFormFillEnv) { |
628 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 637 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
629 return FALSE; | 638 return FALSE; |
630 } | 639 } |
631 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | 640 CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
632 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | 641 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
633 CJS_Array aFields; | 642 CJS_Array aFields; |
634 CFX_WideString strURL; | 643 CFX_WideString strURL; |
635 FX_BOOL bFDF = TRUE; | 644 FX_BOOL bFDF = TRUE; |
636 FX_BOOL bEmpty = FALSE; | 645 FX_BOOL bEmpty = FALSE; |
637 CJS_Value v = params[0]; | 646 CJS_Value v = params[0]; |
(...skipping 14 matching lines...) Expand all Loading... |
652 pValue = pRuntime->GetObjectProperty(pObj, L"bFDF"); | 661 pValue = pRuntime->GetObjectProperty(pObj, L"bFDF"); |
653 bFDF = CJS_Value(pRuntime, pValue).ToBool(pRuntime); | 662 bFDF = CJS_Value(pRuntime, pValue).ToBool(pRuntime); |
654 | 663 |
655 pValue = pRuntime->GetObjectProperty(pObj, L"bEmpty"); | 664 pValue = pRuntime->GetObjectProperty(pObj, L"bEmpty"); |
656 bEmpty = CJS_Value(pRuntime, pValue).ToBool(pRuntime); | 665 bEmpty = CJS_Value(pRuntime, pValue).ToBool(pRuntime); |
657 | 666 |
658 pValue = pRuntime->GetObjectProperty(pObj, L"aFields"); | 667 pValue = pRuntime->GetObjectProperty(pObj, L"aFields"); |
659 aFields.Attach(CJS_Value(pRuntime, pValue).ToV8Array(pRuntime)); | 668 aFields.Attach(CJS_Value(pRuntime, pValue).ToV8Array(pRuntime)); |
660 } | 669 } |
661 | 670 |
662 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 671 CPDFSDK_InterForm* pInterForm = |
| 672 m_pFormFillEnv->GetSDKDocument()->GetInterForm(); |
663 CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm(); | 673 CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm(); |
664 if (aFields.GetLength(pRuntime) == 0 && bEmpty) { | 674 if (aFields.GetLength(pRuntime) == 0 && bEmpty) { |
665 if (pPDFInterForm->CheckRequiredFields(nullptr, true)) { | 675 if (pPDFInterForm->CheckRequiredFields(nullptr, true)) { |
666 pRuntime->BeginBlock(); | 676 pRuntime->BeginBlock(); |
667 pInterForm->SubmitForm(strURL, FALSE); | 677 pInterForm->SubmitForm(strURL, FALSE); |
668 pRuntime->EndBlock(); | 678 pRuntime->EndBlock(); |
669 } | 679 } |
670 return TRUE; | 680 return TRUE; |
671 } | 681 } |
672 | 682 |
(...skipping 14 matching lines...) Expand all Loading... |
687 } | 697 } |
688 | 698 |
689 if (pPDFInterForm->CheckRequiredFields(&fieldObjects, true)) { | 699 if (pPDFInterForm->CheckRequiredFields(&fieldObjects, true)) { |
690 pRuntime->BeginBlock(); | 700 pRuntime->BeginBlock(); |
691 pInterForm->SubmitFields(strURL, fieldObjects, true, !bFDF); | 701 pInterForm->SubmitFields(strURL, fieldObjects, true, !bFDF); |
692 pRuntime->EndBlock(); | 702 pRuntime->EndBlock(); |
693 } | 703 } |
694 return TRUE; | 704 return TRUE; |
695 } | 705 } |
696 | 706 |
697 void Document::AttachDoc(CPDFSDK_Document* pDoc) { | 707 void Document::SetFormFillEnv(CPDFSDK_FormFillEnvironment* pFormFillEnv) { |
698 m_pDocument.Reset(pDoc); | 708 m_pFormFillEnv.Reset(pFormFillEnv); |
699 } | 709 } |
700 | 710 |
701 FX_BOOL Document::bookmarkRoot(IJS_Context* cc, | 711 FX_BOOL Document::bookmarkRoot(IJS_Context* cc, |
702 CJS_PropValue& vp, | 712 CJS_PropValue& vp, |
703 CFX_WideString& sError) { | 713 CFX_WideString& sError) { |
704 return TRUE; | 714 return TRUE; |
705 } | 715 } |
706 | 716 |
707 FX_BOOL Document::mailDoc(IJS_Context* cc, | 717 FX_BOOL Document::mailDoc(IJS_Context* cc, |
708 const std::vector<CJS_Value>& params, | 718 const std::vector<CJS_Value>& params, |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
750 cBcc = CJS_Value(pRuntime, pValue).ToCFXWideString(pRuntime); | 760 cBcc = CJS_Value(pRuntime, pValue).ToCFXWideString(pRuntime); |
751 | 761 |
752 pValue = pRuntime->GetObjectProperty(pObj, L"cSubject"); | 762 pValue = pRuntime->GetObjectProperty(pObj, L"cSubject"); |
753 cSubject = CJS_Value(pRuntime, pValue).ToCFXWideString(pRuntime); | 763 cSubject = CJS_Value(pRuntime, pValue).ToCFXWideString(pRuntime); |
754 | 764 |
755 pValue = pRuntime->GetObjectProperty(pObj, L"cMsg"); | 765 pValue = pRuntime->GetObjectProperty(pObj, L"cMsg"); |
756 cMsg = CJS_Value(pRuntime, pValue).ToCFXWideString(pRuntime); | 766 cMsg = CJS_Value(pRuntime, pValue).ToCFXWideString(pRuntime); |
757 } | 767 } |
758 | 768 |
759 pRuntime->BeginBlock(); | 769 pRuntime->BeginBlock(); |
760 CPDFSDK_FormFillEnvironment* pEnv = pRuntime->GetReaderEnv(); | 770 CPDFSDK_FormFillEnvironment* pEnv = pRuntime->GetFormFillEnv(); |
761 pEnv->JS_docmailForm(nullptr, 0, bUI, cTo.c_str(), cSubject.c_str(), | 771 pEnv->JS_docmailForm(nullptr, 0, bUI, cTo.c_str(), cSubject.c_str(), |
762 cCc.c_str(), cBcc.c_str(), cMsg.c_str()); | 772 cCc.c_str(), cBcc.c_str(), cMsg.c_str()); |
763 pRuntime->EndBlock(); | 773 pRuntime->EndBlock(); |
764 | 774 |
765 return TRUE; | 775 return TRUE; |
766 } | 776 } |
767 | 777 |
768 FX_BOOL Document::author(IJS_Context* cc, | 778 FX_BOOL Document::author(IJS_Context* cc, |
769 CJS_PropValue& vp, | 779 CJS_PropValue& vp, |
770 CFX_WideString& sError) { | 780 CFX_WideString& sError) { |
771 return getPropertyInternal(cc, vp, "Author", sError); | 781 return getPropertyInternal(cc, vp, "Author", sError); |
772 } | 782 } |
773 | 783 |
774 FX_BOOL Document::info(IJS_Context* cc, | 784 FX_BOOL Document::info(IJS_Context* cc, |
775 CJS_PropValue& vp, | 785 CJS_PropValue& vp, |
776 CFX_WideString& sError) { | 786 CFX_WideString& sError) { |
777 if (vp.IsSetting()) { | 787 if (vp.IsSetting()) { |
778 sError = JSGetStringFromID(IDS_STRING_JSREADONLY); | 788 sError = JSGetStringFromID(IDS_STRING_JSREADONLY); |
779 return FALSE; | 789 return FALSE; |
780 } | 790 } |
781 if (!m_pDocument) { | 791 if (!m_pFormFillEnv) { |
782 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 792 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
783 return FALSE; | 793 return FALSE; |
784 } | 794 } |
785 CPDF_Dictionary* pDictionary = m_pDocument->GetPDFDocument()->GetInfo(); | 795 CPDF_Dictionary* pDictionary = |
| 796 m_pFormFillEnv->GetSDKDocument()->GetPDFDocument()->GetInfo(); |
786 if (!pDictionary) | 797 if (!pDictionary) |
787 return FALSE; | 798 return FALSE; |
788 | 799 |
789 CFX_WideString cwAuthor = pDictionary->GetUnicodeTextFor("Author"); | 800 CFX_WideString cwAuthor = pDictionary->GetUnicodeTextFor("Author"); |
790 CFX_WideString cwTitle = pDictionary->GetUnicodeTextFor("Title"); | 801 CFX_WideString cwTitle = pDictionary->GetUnicodeTextFor("Title"); |
791 CFX_WideString cwSubject = pDictionary->GetUnicodeTextFor("Subject"); | 802 CFX_WideString cwSubject = pDictionary->GetUnicodeTextFor("Subject"); |
792 CFX_WideString cwKeywords = pDictionary->GetUnicodeTextFor("Keywords"); | 803 CFX_WideString cwKeywords = pDictionary->GetUnicodeTextFor("Keywords"); |
793 CFX_WideString cwCreator = pDictionary->GetUnicodeTextFor("Creator"); | 804 CFX_WideString cwCreator = pDictionary->GetUnicodeTextFor("Creator"); |
794 CFX_WideString cwProducer = pDictionary->GetUnicodeTextFor("Producer"); | 805 CFX_WideString cwProducer = pDictionary->GetUnicodeTextFor("Producer"); |
795 CFX_WideString cwCreationDate = | 806 CFX_WideString cwCreationDate = |
(...skipping 29 matching lines...) Expand all Loading... |
825 } | 836 } |
826 } | 837 } |
827 vp << pObj; | 838 vp << pObj; |
828 return TRUE; | 839 return TRUE; |
829 } | 840 } |
830 | 841 |
831 FX_BOOL Document::getPropertyInternal(IJS_Context* cc, | 842 FX_BOOL Document::getPropertyInternal(IJS_Context* cc, |
832 CJS_PropValue& vp, | 843 CJS_PropValue& vp, |
833 const CFX_ByteString& propName, | 844 const CFX_ByteString& propName, |
834 CFX_WideString& sError) { | 845 CFX_WideString& sError) { |
835 if (!m_pDocument) { | 846 if (!m_pFormFillEnv) { |
836 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 847 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
837 return FALSE; | 848 return FALSE; |
838 } | 849 } |
839 CPDF_Dictionary* pDictionary = m_pDocument->GetPDFDocument()->GetInfo(); | 850 CPDF_Dictionary* pDictionary = |
| 851 m_pFormFillEnv->GetSDKDocument()->GetPDFDocument()->GetInfo(); |
840 if (!pDictionary) | 852 if (!pDictionary) |
841 return FALSE; | 853 return FALSE; |
842 | 854 |
843 if (vp.IsGetting()) { | 855 if (vp.IsGetting()) { |
844 vp << pDictionary->GetUnicodeTextFor(propName); | 856 vp << pDictionary->GetUnicodeTextFor(propName); |
845 } else { | 857 } else { |
846 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) { | 858 if (!m_pFormFillEnv->GetSDKDocument()->GetPermissions(FPDFPERM_MODIFY)) { |
847 sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); | 859 sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); |
848 return FALSE; | 860 return FALSE; |
849 } | 861 } |
850 CFX_WideString csProperty; | 862 CFX_WideString csProperty; |
851 vp >> csProperty; | 863 vp >> csProperty; |
852 pDictionary->SetStringFor(propName, PDF_EncodeText(csProperty)); | 864 pDictionary->SetStringFor(propName, PDF_EncodeText(csProperty)); |
853 m_pDocument->SetChangeMark(); | 865 m_pFormFillEnv->GetSDKDocument()->SetChangeMark(); |
854 } | 866 } |
855 return TRUE; | 867 return TRUE; |
856 } | 868 } |
857 | 869 |
858 FX_BOOL Document::creationDate(IJS_Context* cc, | 870 FX_BOOL Document::creationDate(IJS_Context* cc, |
859 CJS_PropValue& vp, | 871 CJS_PropValue& vp, |
860 CFX_WideString& sError) { | 872 CFX_WideString& sError) { |
861 return getPropertyInternal(cc, vp, "CreationDate", sError); | 873 return getPropertyInternal(cc, vp, "CreationDate", sError); |
862 } | 874 } |
863 | 875 |
864 FX_BOOL Document::creator(IJS_Context* cc, | 876 FX_BOOL Document::creator(IJS_Context* cc, |
865 CJS_PropValue& vp, | 877 CJS_PropValue& vp, |
866 CFX_WideString& sError) { | 878 CFX_WideString& sError) { |
867 return getPropertyInternal(cc, vp, "Creator", sError); | 879 return getPropertyInternal(cc, vp, "Creator", sError); |
868 } | 880 } |
869 | 881 |
870 FX_BOOL Document::delay(IJS_Context* cc, | 882 FX_BOOL Document::delay(IJS_Context* cc, |
871 CJS_PropValue& vp, | 883 CJS_PropValue& vp, |
872 CFX_WideString& sError) { | 884 CFX_WideString& sError) { |
873 if (!m_pDocument) { | 885 if (!m_pFormFillEnv) { |
874 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 886 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
875 return FALSE; | 887 return FALSE; |
876 } | 888 } |
877 if (vp.IsGetting()) { | 889 if (vp.IsGetting()) { |
878 vp << m_bDelay; | 890 vp << m_bDelay; |
879 } else { | 891 } else { |
880 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) { | 892 if (!m_pFormFillEnv->GetSDKDocument()->GetPermissions(FPDFPERM_MODIFY)) { |
881 sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); | 893 sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); |
882 return FALSE; | 894 return FALSE; |
883 } | 895 } |
884 vp >> m_bDelay; | 896 vp >> m_bDelay; |
885 if (m_bDelay) { | 897 if (m_bDelay) { |
886 m_DelayData.clear(); | 898 m_DelayData.clear(); |
887 } else { | 899 } else { |
888 std::list<std::unique_ptr<CJS_DelayData>> DelayDataToProcess; | 900 std::list<std::unique_ptr<CJS_DelayData>> DelayDataToProcess; |
889 DelayDataToProcess.swap(m_DelayData); | 901 DelayDataToProcess.swap(m_DelayData); |
890 for (const auto& pData : DelayDataToProcess) { | 902 for (const auto& pData : DelayDataToProcess) |
891 if (m_pDocument.Get()) | 903 Field::DoDelay(m_pFormFillEnv.Get(), pData.get()); |
892 Field::DoDelay(m_pDocument->GetEnv(), pData.get()); | |
893 } | |
894 } | 904 } |
895 } | 905 } |
896 return TRUE; | 906 return TRUE; |
897 } | 907 } |
898 | 908 |
899 FX_BOOL Document::keywords(IJS_Context* cc, | 909 FX_BOOL Document::keywords(IJS_Context* cc, |
900 CJS_PropValue& vp, | 910 CJS_PropValue& vp, |
901 CFX_WideString& sError) { | 911 CFX_WideString& sError) { |
902 return getPropertyInternal(cc, vp, "Keywords", sError); | 912 return getPropertyInternal(cc, vp, "Keywords", sError); |
903 } | 913 } |
(...skipping 12 matching lines...) Expand all Loading... |
916 | 926 |
917 FX_BOOL Document::subject(IJS_Context* cc, | 927 FX_BOOL Document::subject(IJS_Context* cc, |
918 CJS_PropValue& vp, | 928 CJS_PropValue& vp, |
919 CFX_WideString& sError) { | 929 CFX_WideString& sError) { |
920 return getPropertyInternal(cc, vp, "Subject", sError); | 930 return getPropertyInternal(cc, vp, "Subject", sError); |
921 } | 931 } |
922 | 932 |
923 FX_BOOL Document::title(IJS_Context* cc, | 933 FX_BOOL Document::title(IJS_Context* cc, |
924 CJS_PropValue& vp, | 934 CJS_PropValue& vp, |
925 CFX_WideString& sError) { | 935 CFX_WideString& sError) { |
926 if (!m_pDocument || !m_pDocument->GetUnderlyingDocument()) { | 936 if (!m_pFormFillEnv || !m_pFormFillEnv->GetUnderlyingDocument()) { |
927 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 937 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
928 return FALSE; | 938 return FALSE; |
929 } | 939 } |
930 return getPropertyInternal(cc, vp, "Title", sError); | 940 return getPropertyInternal(cc, vp, "Title", sError); |
931 } | 941 } |
932 | 942 |
933 FX_BOOL Document::numPages(IJS_Context* cc, | 943 FX_BOOL Document::numPages(IJS_Context* cc, |
934 CJS_PropValue& vp, | 944 CJS_PropValue& vp, |
935 CFX_WideString& sError) { | 945 CFX_WideString& sError) { |
936 if (vp.IsSetting()) { | 946 if (vp.IsSetting()) { |
937 sError = JSGetStringFromID(IDS_STRING_JSREADONLY); | 947 sError = JSGetStringFromID(IDS_STRING_JSREADONLY); |
938 return FALSE; | 948 return FALSE; |
939 } | 949 } |
940 if (!m_pDocument) { | 950 if (!m_pFormFillEnv) { |
941 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 951 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
942 return FALSE; | 952 return FALSE; |
943 } | 953 } |
944 vp << m_pDocument->GetPageCount(); | 954 vp << m_pFormFillEnv->GetSDKDocument()->GetPageCount(); |
945 return TRUE; | 955 return TRUE; |
946 } | 956 } |
947 | 957 |
948 FX_BOOL Document::external(IJS_Context* cc, | 958 FX_BOOL Document::external(IJS_Context* cc, |
949 CJS_PropValue& vp, | 959 CJS_PropValue& vp, |
950 CFX_WideString& sError) { | 960 CFX_WideString& sError) { |
951 // In Chrome case, should always return true. | 961 // In Chrome case, should always return true. |
952 if (vp.IsGetting()) { | 962 if (vp.IsGetting()) { |
953 vp << true; | 963 vp << true; |
954 } | 964 } |
(...skipping 23 matching lines...) Expand all Loading... |
978 return TRUE; | 988 return TRUE; |
979 } | 989 } |
980 | 990 |
981 FX_BOOL Document::URL(IJS_Context* cc, | 991 FX_BOOL Document::URL(IJS_Context* cc, |
982 CJS_PropValue& vp, | 992 CJS_PropValue& vp, |
983 CFX_WideString& sError) { | 993 CFX_WideString& sError) { |
984 if (vp.IsSetting()) { | 994 if (vp.IsSetting()) { |
985 sError = JSGetStringFromID(IDS_STRING_JSREADONLY); | 995 sError = JSGetStringFromID(IDS_STRING_JSREADONLY); |
986 return FALSE; | 996 return FALSE; |
987 } | 997 } |
988 if (!m_pDocument) { | 998 if (!m_pFormFillEnv) { |
989 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 999 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
990 return FALSE; | 1000 return FALSE; |
991 } | 1001 } |
992 vp << m_pDocument->GetPath(); | 1002 vp << m_pFormFillEnv->GetSDKDocument()->GetPath(); |
993 return TRUE; | 1003 return TRUE; |
994 } | 1004 } |
995 | 1005 |
996 FX_BOOL Document::baseURL(IJS_Context* cc, | 1006 FX_BOOL Document::baseURL(IJS_Context* cc, |
997 CJS_PropValue& vp, | 1007 CJS_PropValue& vp, |
998 CFX_WideString& sError) { | 1008 CFX_WideString& sError) { |
999 if (vp.IsGetting()) { | 1009 if (vp.IsGetting()) { |
1000 vp << m_cwBaseURL; | 1010 vp << m_cwBaseURL; |
1001 } else { | 1011 } else { |
1002 vp >> m_cwBaseURL; | 1012 vp >> m_cwBaseURL; |
1003 } | 1013 } |
1004 return TRUE; | 1014 return TRUE; |
1005 } | 1015 } |
1006 | 1016 |
1007 FX_BOOL Document::calculate(IJS_Context* cc, | 1017 FX_BOOL Document::calculate(IJS_Context* cc, |
1008 CJS_PropValue& vp, | 1018 CJS_PropValue& vp, |
1009 CFX_WideString& sError) { | 1019 CFX_WideString& sError) { |
1010 if (!m_pDocument) { | 1020 if (!m_pFormFillEnv) { |
1011 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 1021 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
1012 return FALSE; | 1022 return FALSE; |
1013 } | 1023 } |
1014 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 1024 CPDFSDK_InterForm* pInterForm = |
| 1025 m_pFormFillEnv->GetSDKDocument()->GetInterForm(); |
1015 if (vp.IsGetting()) { | 1026 if (vp.IsGetting()) { |
1016 vp << !!pInterForm->IsCalculateEnabled(); | 1027 vp << !!pInterForm->IsCalculateEnabled(); |
1017 } else { | 1028 } else { |
1018 bool bCalculate; | 1029 bool bCalculate; |
1019 vp >> bCalculate; | 1030 vp >> bCalculate; |
1020 pInterForm->EnableCalculate(bCalculate); | 1031 pInterForm->EnableCalculate(bCalculate); |
1021 } | 1032 } |
1022 return TRUE; | 1033 return TRUE; |
1023 } | 1034 } |
1024 | 1035 |
1025 FX_BOOL Document::documentFileName(IJS_Context* cc, | 1036 FX_BOOL Document::documentFileName(IJS_Context* cc, |
1026 CJS_PropValue& vp, | 1037 CJS_PropValue& vp, |
1027 CFX_WideString& sError) { | 1038 CFX_WideString& sError) { |
1028 if (vp.IsSetting()) { | 1039 if (vp.IsSetting()) { |
1029 sError = JSGetStringFromID(IDS_STRING_JSREADONLY); | 1040 sError = JSGetStringFromID(IDS_STRING_JSREADONLY); |
1030 return FALSE; | 1041 return FALSE; |
1031 } | 1042 } |
1032 if (!m_pDocument) { | 1043 if (!m_pFormFillEnv) { |
1033 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 1044 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
1034 return FALSE; | 1045 return FALSE; |
1035 } | 1046 } |
1036 CFX_WideString wsFilePath = m_pDocument->GetPath(); | 1047 CFX_WideString wsFilePath = m_pFormFillEnv->GetSDKDocument()->GetPath(); |
1037 int32_t i = wsFilePath.GetLength() - 1; | 1048 int32_t i = wsFilePath.GetLength() - 1; |
1038 for (; i >= 0; i--) { | 1049 for (; i >= 0; i--) { |
1039 if (wsFilePath.GetAt(i) == L'\\' || wsFilePath.GetAt(i) == L'/') | 1050 if (wsFilePath.GetAt(i) == L'\\' || wsFilePath.GetAt(i) == L'/') |
1040 break; | 1051 break; |
1041 } | 1052 } |
1042 if (i >= 0 && i < wsFilePath.GetLength() - 1) { | 1053 if (i >= 0 && i < wsFilePath.GetLength() - 1) { |
1043 vp << (wsFilePath.GetBuffer(wsFilePath.GetLength()) + i + 1); | 1054 vp << (wsFilePath.GetBuffer(wsFilePath.GetLength()) + i + 1); |
1044 } else { | 1055 } else { |
1045 vp << L""; | 1056 vp << L""; |
1046 } | 1057 } |
1047 return TRUE; | 1058 return TRUE; |
1048 } | 1059 } |
1049 | 1060 |
1050 FX_BOOL Document::path(IJS_Context* cc, | 1061 FX_BOOL Document::path(IJS_Context* cc, |
1051 CJS_PropValue& vp, | 1062 CJS_PropValue& vp, |
1052 CFX_WideString& sError) { | 1063 CFX_WideString& sError) { |
1053 if (vp.IsSetting()) { | 1064 if (vp.IsSetting()) { |
1054 sError = JSGetStringFromID(IDS_STRING_JSREADONLY); | 1065 sError = JSGetStringFromID(IDS_STRING_JSREADONLY); |
1055 return FALSE; | 1066 return FALSE; |
1056 } | 1067 } |
1057 if (!m_pDocument) { | 1068 if (!m_pFormFillEnv) { |
1058 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 1069 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
1059 return FALSE; | 1070 return FALSE; |
1060 } | 1071 } |
1061 vp << app::SysPathToPDFPath(m_pDocument->GetPath()); | 1072 vp << app::SysPathToPDFPath(m_pFormFillEnv->GetSDKDocument()->GetPath()); |
1062 return TRUE; | 1073 return TRUE; |
1063 } | 1074 } |
1064 | 1075 |
1065 FX_BOOL Document::pageWindowRect(IJS_Context* cc, | 1076 FX_BOOL Document::pageWindowRect(IJS_Context* cc, |
1066 CJS_PropValue& vp, | 1077 CJS_PropValue& vp, |
1067 CFX_WideString& sError) { | 1078 CFX_WideString& sError) { |
1068 return TRUE; | 1079 return TRUE; |
1069 } | 1080 } |
1070 | 1081 |
1071 FX_BOOL Document::layout(IJS_Context* cc, | 1082 FX_BOOL Document::layout(IJS_Context* cc, |
(...skipping 24 matching lines...) Expand all Loading... |
1096 } | 1107 } |
1097 | 1108 |
1098 FX_BOOL Document::getAnnot(IJS_Context* cc, | 1109 FX_BOOL Document::getAnnot(IJS_Context* cc, |
1099 const std::vector<CJS_Value>& params, | 1110 const std::vector<CJS_Value>& params, |
1100 CJS_Value& vRet, | 1111 CJS_Value& vRet, |
1101 CFX_WideString& sError) { | 1112 CFX_WideString& sError) { |
1102 if (params.size() != 2) { | 1113 if (params.size() != 2) { |
1103 sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); | 1114 sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); |
1104 return FALSE; | 1115 return FALSE; |
1105 } | 1116 } |
1106 if (!m_pDocument) { | 1117 if (!m_pFormFillEnv) { |
1107 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 1118 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
1108 return FALSE; | 1119 return FALSE; |
1109 } | 1120 } |
1110 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | 1121 CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
1111 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | 1122 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
1112 int nPageNo = params[0].ToInt(pRuntime); | 1123 int nPageNo = params[0].ToInt(pRuntime); |
1113 CFX_WideString swAnnotName = params[1].ToCFXWideString(pRuntime); | 1124 CFX_WideString swAnnotName = params[1].ToCFXWideString(pRuntime); |
1114 CPDFSDK_PageView* pPageView = m_pDocument->GetPageView(nPageNo); | 1125 CPDFSDK_PageView* pPageView = |
| 1126 m_pFormFillEnv->GetSDKDocument()->GetPageView(nPageNo); |
1115 if (!pPageView) | 1127 if (!pPageView) |
1116 return FALSE; | 1128 return FALSE; |
1117 | 1129 |
1118 CPDFSDK_AnnotIterator annotIterator(pPageView, false); | 1130 CPDFSDK_AnnotIterator annotIterator(pPageView, false); |
1119 CPDFSDK_BAAnnot* pSDKBAAnnot = nullptr; | 1131 CPDFSDK_BAAnnot* pSDKBAAnnot = nullptr; |
1120 while (CPDFSDK_Annot* pSDKAnnotCur = annotIterator.Next()) { | 1132 while (CPDFSDK_Annot* pSDKAnnotCur = annotIterator.Next()) { |
1121 CPDFSDK_BAAnnot* pBAAnnot = static_cast<CPDFSDK_BAAnnot*>(pSDKAnnotCur); | 1133 CPDFSDK_BAAnnot* pBAAnnot = static_cast<CPDFSDK_BAAnnot*>(pSDKAnnotCur); |
1122 if (pBAAnnot && pBAAnnot->GetAnnotName() == swAnnotName) { | 1134 if (pBAAnnot && pBAAnnot->GetAnnotName() == swAnnotName) { |
1123 pSDKBAAnnot = pBAAnnot; | 1135 pSDKBAAnnot = pBAAnnot; |
1124 break; | 1136 break; |
(...skipping 20 matching lines...) Expand all Loading... |
1145 pAnnot->SetSDKAnnot(pSDKBAAnnot); | 1157 pAnnot->SetSDKAnnot(pSDKBAAnnot); |
1146 | 1158 |
1147 vRet = CJS_Value(pRuntime, pJS_Annot); | 1159 vRet = CJS_Value(pRuntime, pJS_Annot); |
1148 return TRUE; | 1160 return TRUE; |
1149 } | 1161 } |
1150 | 1162 |
1151 FX_BOOL Document::getAnnots(IJS_Context* cc, | 1163 FX_BOOL Document::getAnnots(IJS_Context* cc, |
1152 const std::vector<CJS_Value>& params, | 1164 const std::vector<CJS_Value>& params, |
1153 CJS_Value& vRet, | 1165 CJS_Value& vRet, |
1154 CFX_WideString& sError) { | 1166 CFX_WideString& sError) { |
1155 if (!m_pDocument) { | 1167 if (!m_pFormFillEnv) { |
1156 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 1168 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
1157 return FALSE; | 1169 return FALSE; |
1158 } | 1170 } |
1159 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | 1171 CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
1160 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | 1172 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
1161 | 1173 |
1162 // TODO(tonikitoo): Add support supported parameters as per | 1174 // TODO(tonikitoo): Add support supported parameters as per |
1163 // the PDF spec. | 1175 // the PDF spec. |
1164 | 1176 |
1165 int nPageNo = m_pDocument->GetPageCount(); | 1177 int nPageNo = m_pFormFillEnv->GetSDKDocument()->GetPageCount(); |
1166 CJS_Array annots; | 1178 CJS_Array annots; |
1167 | 1179 |
1168 for (int i = 0; i < nPageNo; ++i) { | 1180 for (int i = 0; i < nPageNo; ++i) { |
1169 CPDFSDK_PageView* pPageView = m_pDocument->GetPageView(i); | 1181 CPDFSDK_PageView* pPageView = |
| 1182 m_pFormFillEnv->GetSDKDocument()->GetPageView(i); |
1170 if (!pPageView) | 1183 if (!pPageView) |
1171 return FALSE; | 1184 return FALSE; |
1172 | 1185 |
1173 CPDFSDK_AnnotIterator annotIterator(pPageView, false); | 1186 CPDFSDK_AnnotIterator annotIterator(pPageView, false); |
1174 while (CPDFSDK_Annot* pSDKAnnotCur = annotIterator.Next()) { | 1187 while (CPDFSDK_Annot* pSDKAnnotCur = annotIterator.Next()) { |
1175 CPDFSDK_BAAnnot* pSDKBAAnnot = | 1188 CPDFSDK_BAAnnot* pSDKBAAnnot = |
1176 static_cast<CPDFSDK_BAAnnot*>(pSDKAnnotCur); | 1189 static_cast<CPDFSDK_BAAnnot*>(pSDKAnnotCur); |
1177 if (!pSDKBAAnnot) | 1190 if (!pSDKBAAnnot) |
1178 return FALSE; | 1191 return FALSE; |
1179 | 1192 |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1372 FX_BOOL Document::media(IJS_Context* cc, | 1385 FX_BOOL Document::media(IJS_Context* cc, |
1373 CJS_PropValue& vp, | 1386 CJS_PropValue& vp, |
1374 CFX_WideString& sError) { | 1387 CFX_WideString& sError) { |
1375 return TRUE; | 1388 return TRUE; |
1376 } | 1389 } |
1377 | 1390 |
1378 FX_BOOL Document::calculateNow(IJS_Context* cc, | 1391 FX_BOOL Document::calculateNow(IJS_Context* cc, |
1379 const std::vector<CJS_Value>& params, | 1392 const std::vector<CJS_Value>& params, |
1380 CJS_Value& vRet, | 1393 CJS_Value& vRet, |
1381 CFX_WideString& sError) { | 1394 CFX_WideString& sError) { |
1382 if (!m_pDocument) { | 1395 if (!m_pFormFillEnv) { |
1383 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 1396 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
1384 return FALSE; | 1397 return FALSE; |
1385 } | 1398 } |
1386 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || | 1399 if (!(m_pFormFillEnv->GetSDKDocument()->GetPermissions(FPDFPERM_MODIFY) || |
1387 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) || | 1400 m_pFormFillEnv->GetSDKDocument()->GetPermissions(FPDFPERM_ANNOT_FORM) || |
1388 m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) { | 1401 m_pFormFillEnv->GetSDKDocument()->GetPermissions(FPDFPERM_FILL_FORM))) { |
1389 sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); | 1402 sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); |
1390 return FALSE; | 1403 return FALSE; |
1391 } | 1404 } |
1392 m_pDocument->GetInterForm()->OnCalculate(); | 1405 m_pFormFillEnv->GetSDKDocument()->GetInterForm()->OnCalculate(); |
1393 return TRUE; | 1406 return TRUE; |
1394 } | 1407 } |
1395 | 1408 |
1396 FX_BOOL Document::Collab(IJS_Context* cc, | 1409 FX_BOOL Document::Collab(IJS_Context* cc, |
1397 CJS_PropValue& vp, | 1410 CJS_PropValue& vp, |
1398 CFX_WideString& sError) { | 1411 CFX_WideString& sError) { |
1399 return TRUE; | 1412 return TRUE; |
1400 } | 1413 } |
1401 | 1414 |
1402 FX_BOOL Document::getPageNthWord(IJS_Context* cc, | 1415 FX_BOOL Document::getPageNthWord(IJS_Context* cc, |
1403 const std::vector<CJS_Value>& params, | 1416 const std::vector<CJS_Value>& params, |
1404 CJS_Value& vRet, | 1417 CJS_Value& vRet, |
1405 CFX_WideString& sError) { | 1418 CFX_WideString& sError) { |
1406 if (!m_pDocument) { | 1419 if (!m_pFormFillEnv) { |
1407 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 1420 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
1408 return FALSE; | 1421 return FALSE; |
1409 } | 1422 } |
1410 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) { | 1423 if (!m_pFormFillEnv->GetSDKDocument()->GetPermissions( |
| 1424 FPDFPERM_EXTRACT_ACCESS)) { |
1411 sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); | 1425 sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); |
1412 return FALSE; | 1426 return FALSE; |
1413 } | 1427 } |
1414 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); | 1428 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
1415 | 1429 |
1416 // TODO(tsepez): check maximum allowable params. | 1430 // TODO(tsepez): check maximum allowable params. |
1417 | 1431 |
1418 int nPageNo = params.size() > 0 ? params[0].ToInt(pRuntime) : 0; | 1432 int nPageNo = params.size() > 0 ? params[0].ToInt(pRuntime) : 0; |
1419 int nWordNo = params.size() > 1 ? params[1].ToInt(pRuntime) : 0; | 1433 int nWordNo = params.size() > 1 ? params[1].ToInt(pRuntime) : 0; |
1420 bool bStrip = params.size() > 2 ? params[2].ToBool(pRuntime) : true; | 1434 bool bStrip = params.size() > 2 ? params[2].ToBool(pRuntime) : true; |
1421 | 1435 |
1422 CPDF_Document* pDocument = m_pDocument->GetPDFDocument(); | 1436 CPDF_Document* pDocument = m_pFormFillEnv->GetSDKDocument()->GetPDFDocument(); |
1423 if (!pDocument) | 1437 if (!pDocument) |
1424 return FALSE; | 1438 return FALSE; |
1425 | 1439 |
1426 if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) { | 1440 if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) { |
1427 sError = JSGetStringFromID(IDS_STRING_JSVALUEERROR); | 1441 sError = JSGetStringFromID(IDS_STRING_JSVALUEERROR); |
1428 return FALSE; | 1442 return FALSE; |
1429 } | 1443 } |
1430 | 1444 |
1431 CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); | 1445 CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); |
1432 if (!pPageDict) | 1446 if (!pPageDict) |
(...skipping 22 matching lines...) Expand all Loading... |
1455 } | 1469 } |
1456 | 1470 |
1457 vRet = CJS_Value(pRuntime, swRet.c_str()); | 1471 vRet = CJS_Value(pRuntime, swRet.c_str()); |
1458 return TRUE; | 1472 return TRUE; |
1459 } | 1473 } |
1460 | 1474 |
1461 FX_BOOL Document::getPageNthWordQuads(IJS_Context* cc, | 1475 FX_BOOL Document::getPageNthWordQuads(IJS_Context* cc, |
1462 const std::vector<CJS_Value>& params, | 1476 const std::vector<CJS_Value>& params, |
1463 CJS_Value& vRet, | 1477 CJS_Value& vRet, |
1464 CFX_WideString& sError) { | 1478 CFX_WideString& sError) { |
1465 if (!m_pDocument) { | 1479 if (!m_pFormFillEnv) { |
1466 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 1480 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
1467 return FALSE; | 1481 return FALSE; |
1468 } | 1482 } |
1469 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) { | 1483 if (!m_pFormFillEnv->GetSDKDocument()->GetPermissions( |
| 1484 FPDFPERM_EXTRACT_ACCESS)) { |
1470 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 1485 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
1471 return FALSE; | 1486 return FALSE; |
1472 } | 1487 } |
1473 return FALSE; | 1488 return FALSE; |
1474 } | 1489 } |
1475 | 1490 |
1476 FX_BOOL Document::getPageNumWords(IJS_Context* cc, | 1491 FX_BOOL Document::getPageNumWords(IJS_Context* cc, |
1477 const std::vector<CJS_Value>& params, | 1492 const std::vector<CJS_Value>& params, |
1478 CJS_Value& vRet, | 1493 CJS_Value& vRet, |
1479 CFX_WideString& sError) { | 1494 CFX_WideString& sError) { |
1480 if (!m_pDocument) { | 1495 if (!m_pFormFillEnv) { |
1481 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 1496 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
1482 return FALSE; | 1497 return FALSE; |
1483 } | 1498 } |
1484 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) { | 1499 if (!m_pFormFillEnv->GetSDKDocument()->GetPermissions( |
| 1500 FPDFPERM_EXTRACT_ACCESS)) { |
1485 sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); | 1501 sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); |
1486 return FALSE; | 1502 return FALSE; |
1487 } | 1503 } |
1488 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); | 1504 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
1489 int nPageNo = params.size() > 0 ? params[0].ToInt(pRuntime) : 0; | 1505 int nPageNo = params.size() > 0 ? params[0].ToInt(pRuntime) : 0; |
1490 CPDF_Document* pDocument = m_pDocument->GetPDFDocument(); | 1506 CPDF_Document* pDocument = m_pFormFillEnv->GetSDKDocument()->GetPDFDocument(); |
1491 if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) { | 1507 if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) { |
1492 sError = JSGetStringFromID(IDS_STRING_JSVALUEERROR); | 1508 sError = JSGetStringFromID(IDS_STRING_JSVALUEERROR); |
1493 return FALSE; | 1509 return FALSE; |
1494 } | 1510 } |
1495 | 1511 |
1496 CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); | 1512 CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); |
1497 if (!pPageDict) | 1513 if (!pPageDict) |
1498 return FALSE; | 1514 return FALSE; |
1499 | 1515 |
1500 CPDF_Page page(pDocument, pPageDict, true); | 1516 CPDF_Page page(pDocument, pPageDict, true); |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1660 } | 1676 } |
1661 | 1677 |
1662 FX_BOOL Document::gotoNamedDest(IJS_Context* cc, | 1678 FX_BOOL Document::gotoNamedDest(IJS_Context* cc, |
1663 const std::vector<CJS_Value>& params, | 1679 const std::vector<CJS_Value>& params, |
1664 CJS_Value& vRet, | 1680 CJS_Value& vRet, |
1665 CFX_WideString& sError) { | 1681 CFX_WideString& sError) { |
1666 if (params.size() != 1) { | 1682 if (params.size() != 1) { |
1667 sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); | 1683 sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); |
1668 return FALSE; | 1684 return FALSE; |
1669 } | 1685 } |
1670 if (!m_pDocument) { | 1686 if (!m_pFormFillEnv) { |
1671 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); | 1687 sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); |
1672 return FALSE; | 1688 return FALSE; |
1673 } | 1689 } |
1674 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); | 1690 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
1675 CFX_WideString wideName = params[0].ToCFXWideString(pRuntime); | 1691 CFX_WideString wideName = params[0].ToCFXWideString(pRuntime); |
1676 CFX_ByteString utf8Name = wideName.UTF8Encode(); | 1692 CFX_ByteString utf8Name = wideName.UTF8Encode(); |
1677 CPDF_Document* pDocument = m_pDocument->GetPDFDocument(); | 1693 CPDF_Document* pDocument = m_pFormFillEnv->GetSDKDocument()->GetPDFDocument(); |
1678 if (!pDocument) | 1694 if (!pDocument) |
1679 return FALSE; | 1695 return FALSE; |
1680 | 1696 |
1681 CPDF_NameTree nameTree(pDocument, "Dests"); | 1697 CPDF_NameTree nameTree(pDocument, "Dests"); |
1682 CPDF_Array* destArray = nameTree.LookupNamedDest(pDocument, utf8Name); | 1698 CPDF_Array* destArray = nameTree.LookupNamedDest(pDocument, utf8Name); |
1683 if (!destArray) | 1699 if (!destArray) |
1684 return FALSE; | 1700 return FALSE; |
1685 | 1701 |
1686 CPDF_Dest dest(destArray); | 1702 CPDF_Dest dest(destArray); |
1687 const CPDF_Array* arrayObject = ToArray(dest.GetObject()); | 1703 const CPDF_Array* arrayObject = ToArray(dest.GetObject()); |
1688 | 1704 |
1689 std::unique_ptr<float[]> scrollPositionArray; | 1705 std::unique_ptr<float[]> scrollPositionArray; |
1690 int scrollPositionArraySize = 0; | 1706 int scrollPositionArraySize = 0; |
1691 | 1707 |
1692 if (arrayObject) { | 1708 if (arrayObject) { |
1693 scrollPositionArray.reset(new float[arrayObject->GetCount()]); | 1709 scrollPositionArray.reset(new float[arrayObject->GetCount()]); |
1694 int j = 0; | 1710 int j = 0; |
1695 for (size_t i = 2; i < arrayObject->GetCount(); i++) | 1711 for (size_t i = 2; i < arrayObject->GetCount(); i++) |
1696 scrollPositionArray[j++] = arrayObject->GetFloatAt(i); | 1712 scrollPositionArray[j++] = arrayObject->GetFloatAt(i); |
1697 scrollPositionArraySize = j; | 1713 scrollPositionArraySize = j; |
1698 } | 1714 } |
1699 | 1715 |
1700 pRuntime->BeginBlock(); | 1716 pRuntime->BeginBlock(); |
1701 CPDFSDK_FormFillEnvironment* pApp = m_pDocument->GetEnv(); | 1717 m_pFormFillEnv->DoGoToAction(dest.GetPageIndex(pDocument), dest.GetZoomMode(), |
1702 pApp->DoGoToAction(dest.GetPageIndex(pDocument), dest.GetZoomMode(), | 1718 scrollPositionArray.get(), |
1703 scrollPositionArray.get(), scrollPositionArraySize); | 1719 scrollPositionArraySize); |
1704 pRuntime->EndBlock(); | 1720 pRuntime->EndBlock(); |
1705 | 1721 |
1706 return TRUE; | 1722 return TRUE; |
1707 } | 1723 } |
1708 | 1724 |
1709 void Document::AddDelayData(CJS_DelayData* pData) { | 1725 void Document::AddDelayData(CJS_DelayData* pData) { |
1710 m_DelayData.push_back(std::unique_ptr<CJS_DelayData>(pData)); | 1726 m_DelayData.push_back(std::unique_ptr<CJS_DelayData>(pData)); |
1711 } | 1727 } |
1712 | 1728 |
1713 void Document::DoFieldDelay(const CFX_WideString& sFieldName, | 1729 void Document::DoFieldDelay(const CFX_WideString& sFieldName, |
1714 int nControlIndex) { | 1730 int nControlIndex) { |
1715 std::vector<std::unique_ptr<CJS_DelayData>> DelayDataForFieldAndControlIndex; | 1731 std::vector<std::unique_ptr<CJS_DelayData>> DelayDataForFieldAndControlIndex; |
1716 auto iter = m_DelayData.begin(); | 1732 auto iter = m_DelayData.begin(); |
1717 while (iter != m_DelayData.end()) { | 1733 while (iter != m_DelayData.end()) { |
1718 auto old = iter++; | 1734 auto old = iter++; |
1719 if ((*old)->sFieldName == sFieldName && | 1735 if ((*old)->sFieldName == sFieldName && |
1720 (*old)->nControlIndex == nControlIndex) { | 1736 (*old)->nControlIndex == nControlIndex) { |
1721 DelayDataForFieldAndControlIndex.push_back(std::move(*old)); | 1737 DelayDataForFieldAndControlIndex.push_back(std::move(*old)); |
1722 m_DelayData.erase(old); | 1738 m_DelayData.erase(old); |
1723 } | 1739 } |
1724 } | 1740 } |
1725 | 1741 |
1726 for (const auto& pData : DelayDataForFieldAndControlIndex) { | 1742 for (const auto& pData : DelayDataForFieldAndControlIndex) |
1727 if (m_pDocument.Get()) | 1743 Field::DoDelay(m_pFormFillEnv.Get(), pData.get()); |
1728 Field::DoDelay(m_pDocument->GetEnv(), pData.get()); | |
1729 } | |
1730 } | 1744 } |
1731 | 1745 |
1732 CJS_Document* Document::GetCJSDoc() const { | 1746 CJS_Document* Document::GetCJSDoc() const { |
1733 return static_cast<CJS_Document*>(m_pJSObject); | 1747 return static_cast<CJS_Document*>(m_pJSObject); |
1734 } | 1748 } |
OLD | NEW |