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 <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
194 else | 194 else |
195 m_pDocument->ClearChangeMark(); | 195 m_pDocument->ClearChangeMark(); |
196 } | 196 } |
197 | 197 |
198 return TRUE; | 198 return TRUE; |
199 } | 199 } |
200 | 200 |
201 FX_BOOL Document::ADBE(IJS_Context* cc, | 201 FX_BOOL Document::ADBE(IJS_Context* cc, |
202 CJS_PropValue& vp, | 202 CJS_PropValue& vp, |
203 CFX_WideString& sError) { | 203 CFX_WideString& sError) { |
204 if (vp.IsGetting()) { | 204 if (vp.IsGetting()) |
205 vp.SetNull(); | 205 vp.GetJSValue()->SetNull(CJS_Runtime::FromContext(cc)); |
206 } else { | |
207 } | |
208 | 206 |
209 return TRUE; | 207 return TRUE; |
210 } | 208 } |
211 | 209 |
212 FX_BOOL Document::pageNum(IJS_Context* cc, | 210 FX_BOOL Document::pageNum(IJS_Context* cc, |
213 CJS_PropValue& vp, | 211 CJS_PropValue& vp, |
214 CFX_WideString& sError) { | 212 CFX_WideString& sError) { |
215 if (vp.IsGetting()) { | 213 if (vp.IsGetting()) { |
216 if (CPDFSDK_PageView* pPageView = m_pDocument->GetCurrentView()) { | 214 if (CPDFSDK_PageView* pPageView = m_pDocument->GetCurrentView()) { |
217 vp << pPageView->GetPageIndex(); | 215 vp << pPageView->GetPageIndex(); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
276 | 274 |
277 // Maps a field object in PDF document to a JavaScript variable | 275 // Maps a field object in PDF document to a JavaScript variable |
278 // comment: | 276 // comment: |
279 // note: the paremter cName, this is clue how to treat if the cName is not a | 277 // note: the paremter cName, this is clue how to treat if the cName is not a |
280 // valiable filed name in this document | 278 // valiable filed name in this document |
281 | 279 |
282 FX_BOOL Document::getField(IJS_Context* cc, | 280 FX_BOOL Document::getField(IJS_Context* cc, |
283 const std::vector<CJS_Value>& params, | 281 const std::vector<CJS_Value>& params, |
284 CJS_Value& vRet, | 282 CJS_Value& vRet, |
285 CFX_WideString& sError) { | 283 CFX_WideString& sError) { |
286 CJS_Context* pContext = (CJS_Context*)cc; | 284 CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
285 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
dsinclair
2016/08/09 19:25:33
Move 285 and 286 down to 293 where they're first n
Tom Sepez
2016/08/09 20:33:23
Done.
| |
286 v8::Isolate* pIsolate = pRuntime->GetIsolate(); | |
287 | |
287 if (params.size() < 1) { | 288 if (params.size() < 1) { |
288 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 289 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
289 return FALSE; | 290 return FALSE; |
290 } | 291 } |
291 | 292 |
292 CFX_WideString wideName = params[0].ToCFXWideString(); | 293 CFX_WideString wideName = params[0].ToCFXWideString(pIsolate); |
293 | 294 |
294 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 295 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); |
295 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); | 296 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); |
296 if (pPDFForm->CountFields(wideName) <= 0) { | 297 if (pPDFForm->CountFields(wideName) <= 0) { |
297 vRet.SetNull(); | 298 vRet.SetNull(pRuntime); |
298 return TRUE; | 299 return TRUE; |
299 } | 300 } |
300 | 301 |
301 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | 302 v8::Local<v8::Object> pFieldObj = |
302 v8::Local<v8::Object> pFieldObj = FXJS_NewFxDynamicObj( | 303 FXJS_NewFxDynamicObj(pIsolate, pRuntime, CJS_Field::g_nObjDefnID); |
dsinclair
2016/08/09 19:25:32
Does this always take the isolate from the runtime
Tom Sepez
2016/08/09 20:33:23
That's a follow-on. Ideally, there'd be a CFXJS_R
| |
303 pRuntime->GetIsolate(), pRuntime, CJS_Field::g_nObjDefnID); | |
304 | 304 |
305 v8::Isolate* isolate = GetIsolate(cc); | 305 CJS_Field* pJSField = (CJS_Field*)FXJS_GetPrivate(pIsolate, pFieldObj); |
dsinclair
2016/08/09 19:25:32
static_cast
Tom Sepez
2016/08/09 20:33:24
Done.
| |
306 CJS_Field* pJSField = (CJS_Field*)FXJS_GetPrivate(isolate, pFieldObj); | |
307 Field* pField = (Field*)pJSField->GetEmbedObject(); | 306 Field* pField = (Field*)pJSField->GetEmbedObject(); |
dsinclair
2016/08/09 19:25:32
static_cast
Tom Sepez
2016/08/09 20:33:24
Done.
| |
308 pField->AttachField(this, wideName); | 307 pField->AttachField(this, wideName); |
309 | 308 |
310 vRet = pJSField; | 309 vRet = CJS_Value(pRuntime, pJSField); |
311 return TRUE; | 310 return TRUE; |
312 } | 311 } |
313 | 312 |
314 // Gets the name of the nth field in the document | 313 // Gets the name of the nth field in the document |
315 FX_BOOL Document::getNthFieldName(IJS_Context* cc, | 314 FX_BOOL Document::getNthFieldName(IJS_Context* cc, |
316 const std::vector<CJS_Value>& params, | 315 const std::vector<CJS_Value>& params, |
317 CJS_Value& vRet, | 316 CJS_Value& vRet, |
318 CFX_WideString& sError) { | 317 CFX_WideString& sError) { |
319 CJS_Context* pContext = (CJS_Context*)cc; | 318 CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
319 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
dsinclair
2016/08/09 19:25:32
Down to 327?
Tom Sepez
2016/08/09 20:33:23
Done.
| |
320 v8::Isolate* pIsolate = pRuntime->GetIsolate(); | |
321 | |
320 if (params.size() != 1) { | 322 if (params.size() != 1) { |
321 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 323 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
322 return FALSE; | 324 return FALSE; |
323 } | 325 } |
324 | 326 |
325 int nIndex = params[0].ToInt(); | 327 int nIndex = params[0].ToInt(pIsolate); |
326 if (nIndex < 0) { | 328 if (nIndex < 0) { |
327 sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR); | 329 sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR); |
328 return FALSE; | 330 return FALSE; |
329 } | 331 } |
330 | 332 |
331 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 333 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); |
332 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); | 334 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); |
333 CPDF_FormField* pField = pPDFForm->GetField(nIndex); | 335 CPDF_FormField* pField = pPDFForm->GetField(nIndex); |
334 if (!pField) | 336 if (!pField) |
335 return FALSE; | 337 return FALSE; |
336 | 338 |
337 vRet = pField->GetFullName().c_str(); | 339 vRet = CJS_Value(pRuntime, pField->GetFullName().c_str()); |
338 return TRUE; | 340 return TRUE; |
339 } | 341 } |
340 | 342 |
341 FX_BOOL Document::importAnFDF(IJS_Context* cc, | 343 FX_BOOL Document::importAnFDF(IJS_Context* cc, |
342 const std::vector<CJS_Value>& params, | 344 const std::vector<CJS_Value>& params, |
343 CJS_Value& vRet, | 345 CJS_Value& vRet, |
344 CFX_WideString& sError) { | 346 CFX_WideString& sError) { |
345 // Unsafe, not supported. | 347 // Unsafe, not supported. |
346 return TRUE; | 348 return TRUE; |
347 } | 349 } |
(...skipping 18 matching lines...) Expand all Loading... | |
366 // all recipients. | 368 // all recipients. |
367 // comment: need reader supports | 369 // comment: need reader supports |
368 // note: | 370 // note: |
369 // int CPDFSDK_Document::mailForm(FX_BOOL bUI,String cto,string ccc,string | 371 // int CPDFSDK_Document::mailForm(FX_BOOL bUI,String cto,string ccc,string |
370 // cbcc,string cSubject,string cms); | 372 // cbcc,string cSubject,string cms); |
371 | 373 |
372 FX_BOOL Document::mailForm(IJS_Context* cc, | 374 FX_BOOL Document::mailForm(IJS_Context* cc, |
373 const std::vector<CJS_Value>& params, | 375 const std::vector<CJS_Value>& params, |
374 CJS_Value& vRet, | 376 CJS_Value& vRet, |
375 CFX_WideString& sError) { | 377 CFX_WideString& sError) { |
378 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | |
379 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
380 v8::Isolate* pIsolate = pRuntime->GetIsolate(); | |
dsinclair
2016/08/09 19:25:32
Down to 387
Tom Sepez
2016/08/09 20:33:23
Done.
| |
381 | |
376 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) | 382 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) |
377 return FALSE; | 383 return FALSE; |
378 | 384 |
379 int iLength = params.size(); | 385 int iLength = params.size(); |
380 | 386 |
381 FX_BOOL bUI = iLength > 0 ? params[0].ToBool() : TRUE; | 387 FX_BOOL bUI = iLength > 0 ? params[0].ToBool(pIsolate) : TRUE; |
382 CFX_WideString cTo = iLength > 1 ? params[1].ToCFXWideString() : L""; | 388 CFX_WideString cTo = iLength > 1 ? params[1].ToCFXWideString(pIsolate) : L""; |
383 CFX_WideString cCc = iLength > 2 ? params[2].ToCFXWideString() : L""; | 389 CFX_WideString cCc = iLength > 2 ? params[2].ToCFXWideString(pIsolate) : L""; |
384 CFX_WideString cBcc = iLength > 3 ? params[3].ToCFXWideString() : L""; | 390 CFX_WideString cBcc = iLength > 3 ? params[3].ToCFXWideString(pIsolate) : L""; |
385 CFX_WideString cSubject = iLength > 4 ? params[4].ToCFXWideString() : L""; | 391 CFX_WideString cSubject = |
386 CFX_WideString cMsg = iLength > 5 ? params[5].ToCFXWideString() : L""; | 392 iLength > 4 ? params[4].ToCFXWideString(pIsolate) : L""; |
393 CFX_WideString cMsg = iLength > 5 ? params[5].ToCFXWideString(pIsolate) : L""; | |
387 | 394 |
388 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 395 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); |
389 CFX_ByteTextBuf textBuf; | 396 CFX_ByteTextBuf textBuf; |
390 if (!pInterForm->ExportFormToFDFTextBuf(textBuf)) | 397 if (!pInterForm->ExportFormToFDFTextBuf(textBuf)) |
391 return FALSE; | 398 return FALSE; |
392 | 399 |
393 CJS_Context* pContext = (CJS_Context*)cc; | 400 pRuntime->BeginBlock(); |
394 CPDFDoc_Environment* pEnv = pContext->GetReaderApp(); | 401 CPDFDoc_Environment* pEnv = pContext->GetReaderApp(); |
dsinclair
2016/08/09 19:25:32
This was outside the Begin/End block previously, n
Tom Sepez
2016/08/09 20:33:23
Nope, it just guards against re-entrancy in the em
| |
395 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
396 | |
397 pRuntime->BeginBlock(); | |
398 pEnv->JS_docmailForm(textBuf.GetBuffer(), textBuf.GetLength(), bUI, | 402 pEnv->JS_docmailForm(textBuf.GetBuffer(), textBuf.GetLength(), bUI, |
399 cTo.c_str(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(), | 403 cTo.c_str(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(), |
400 cMsg.c_str()); | 404 cMsg.c_str()); |
401 pRuntime->EndBlock(); | 405 pRuntime->EndBlock(); |
402 return TRUE; | 406 return TRUE; |
403 } | 407 } |
404 | 408 |
405 FX_BOOL Document::print(IJS_Context* cc, | 409 FX_BOOL Document::print(IJS_Context* cc, |
406 const std::vector<CJS_Value>& params, | 410 const std::vector<CJS_Value>& params, |
407 CJS_Value& vRet, | 411 CJS_Value& vRet, |
408 CFX_WideString& sError) { | 412 CFX_WideString& sError) { |
413 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | |
414 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
415 v8::Isolate* pIsolate = pRuntime->GetIsolate(); | |
416 | |
409 FX_BOOL bUI = TRUE; | 417 FX_BOOL bUI = TRUE; |
410 int nStart = 0; | 418 int nStart = 0; |
411 int nEnd = 0; | 419 int nEnd = 0; |
412 FX_BOOL bSilent = FALSE; | 420 FX_BOOL bSilent = FALSE; |
413 FX_BOOL bShrinkToFit = FALSE; | 421 FX_BOOL bShrinkToFit = FALSE; |
414 FX_BOOL bPrintAsImage = FALSE; | 422 FX_BOOL bPrintAsImage = FALSE; |
415 FX_BOOL bReverse = FALSE; | 423 FX_BOOL bReverse = FALSE; |
416 FX_BOOL bAnnotations = FALSE; | 424 FX_BOOL bAnnotations = FALSE; |
417 | 425 |
418 int nlength = params.size(); | 426 int nlength = params.size(); |
419 if (nlength == 9) { | 427 if (nlength == 9) { |
420 if (params[8].GetType() == CJS_Value::VT_object) { | 428 if (params[8].GetType() == CJS_Value::VT_object) { |
421 v8::Local<v8::Object> pObj = params[8].ToV8Object(); | 429 v8::Local<v8::Object> pObj = params[8].ToV8Object(pIsolate); |
422 if (FXJS_GetObjDefnID(pObj) == CJS_PrintParamsObj::g_nObjDefnID) { | 430 if (FXJS_GetObjDefnID(pObj) == CJS_PrintParamsObj::g_nObjDefnID) { |
423 if (CJS_Object* pJSObj = params[8].ToCJSObject()) { | 431 if (CJS_Object* pJSObj = params[8].ToCJSObject(pIsolate)) { |
424 if (PrintParamsObj* pprintparamsObj = | 432 if (PrintParamsObj* pprintparamsObj = |
425 static_cast<PrintParamsObj*>(pJSObj->GetEmbedObject())) { | 433 static_cast<PrintParamsObj*>(pJSObj->GetEmbedObject())) { |
426 bUI = pprintparamsObj->bUI; | 434 bUI = pprintparamsObj->bUI; |
427 nStart = pprintparamsObj->nStart; | 435 nStart = pprintparamsObj->nStart; |
428 nEnd = pprintparamsObj->nEnd; | 436 nEnd = pprintparamsObj->nEnd; |
429 bSilent = pprintparamsObj->bSilent; | 437 bSilent = pprintparamsObj->bSilent; |
430 bShrinkToFit = pprintparamsObj->bShrinkToFit; | 438 bShrinkToFit = pprintparamsObj->bShrinkToFit; |
431 bPrintAsImage = pprintparamsObj->bPrintAsImage; | 439 bPrintAsImage = pprintparamsObj->bPrintAsImage; |
432 bReverse = pprintparamsObj->bReverse; | 440 bReverse = pprintparamsObj->bReverse; |
433 bAnnotations = pprintparamsObj->bAnnotations; | 441 bAnnotations = pprintparamsObj->bAnnotations; |
434 } | 442 } |
435 } | 443 } |
436 } | 444 } |
437 } | 445 } |
438 } else { | 446 } else { |
439 if (nlength >= 1) | 447 if (nlength >= 1) |
440 bUI = params[0].ToBool(); | 448 bUI = params[0].ToBool(pIsolate); |
441 if (nlength >= 2) | 449 if (nlength >= 2) |
442 nStart = params[1].ToInt(); | 450 nStart = params[1].ToInt(pIsolate); |
443 if (nlength >= 3) | 451 if (nlength >= 3) |
444 nEnd = params[2].ToInt(); | 452 nEnd = params[2].ToInt(pIsolate); |
445 if (nlength >= 4) | 453 if (nlength >= 4) |
446 bSilent = params[3].ToBool(); | 454 bSilent = params[3].ToBool(pIsolate); |
447 if (nlength >= 5) | 455 if (nlength >= 5) |
448 bShrinkToFit = params[4].ToBool(); | 456 bShrinkToFit = params[4].ToBool(pIsolate); |
449 if (nlength >= 6) | 457 if (nlength >= 6) |
450 bPrintAsImage = params[5].ToBool(); | 458 bPrintAsImage = params[5].ToBool(pIsolate); |
451 if (nlength >= 7) | 459 if (nlength >= 7) |
452 bReverse = params[6].ToBool(); | 460 bReverse = params[6].ToBool(pIsolate); |
453 if (nlength >= 8) | 461 if (nlength >= 8) |
454 bAnnotations = params[7].ToBool(); | 462 bAnnotations = params[7].ToBool(pIsolate); |
455 } | 463 } |
456 | 464 |
457 if (CPDFDoc_Environment* pEnv = m_pDocument->GetEnv()) { | 465 if (CPDFDoc_Environment* pEnv = m_pDocument->GetEnv()) { |
458 pEnv->JS_docprint(bUI, nStart, nEnd, bSilent, bShrinkToFit, bPrintAsImage, | 466 pEnv->JS_docprint(bUI, nStart, nEnd, bSilent, bShrinkToFit, bPrintAsImage, |
459 bReverse, bAnnotations); | 467 bReverse, bAnnotations); |
460 return TRUE; | 468 return TRUE; |
461 } | 469 } |
462 return FALSE; | 470 return FALSE; |
463 } | 471 } |
464 | 472 |
465 // removes the specified field from the document. | 473 // removes the specified field from the document. |
466 // comment: | 474 // comment: |
467 // note: if the filed name is not retional, adobe is dumb for it. | 475 // note: if the filed name is not retional, adobe is dumb for it. |
468 | 476 |
469 FX_BOOL Document::removeField(IJS_Context* cc, | 477 FX_BOOL Document::removeField(IJS_Context* cc, |
470 const std::vector<CJS_Value>& params, | 478 const std::vector<CJS_Value>& params, |
471 CJS_Value& vRet, | 479 CJS_Value& vRet, |
472 CFX_WideString& sError) { | 480 CFX_WideString& sError) { |
481 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | |
482 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
483 v8::Isolate* pIsolate = pRuntime->GetIsolate(); | |
dsinclair
2016/08/09 19:25:32
Move to 488?
Tom Sepez
2016/08/09 20:33:23
Done.
| |
484 | |
473 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || | 485 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || |
474 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM))) | 486 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM))) |
475 return FALSE; | 487 return FALSE; |
476 | 488 |
477 CJS_Context* pContext = (CJS_Context*)cc; | |
478 if (params.size() != 1) { | 489 if (params.size() != 1) { |
479 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 490 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
480 return FALSE; | 491 return FALSE; |
481 } | 492 } |
482 | 493 |
483 CFX_WideString sFieldName = params[0].ToCFXWideString(); | 494 CFX_WideString sFieldName = params[0].ToCFXWideString(pIsolate); |
484 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 495 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); |
485 std::vector<CPDFSDK_Widget*> widgets; | 496 std::vector<CPDFSDK_Widget*> widgets; |
486 pInterForm->GetWidgets(sFieldName, &widgets); | 497 pInterForm->GetWidgets(sFieldName, &widgets); |
487 if (widgets.empty()) | 498 if (widgets.empty()) |
488 return TRUE; | 499 return TRUE; |
489 | 500 |
490 for (CPDFSDK_Widget* pWidget : widgets) { | 501 for (CPDFSDK_Widget* pWidget : widgets) { |
491 CFX_FloatRect rcAnnot = pWidget->GetRect(); | 502 CFX_FloatRect rcAnnot = pWidget->GetRect(); |
492 --rcAnnot.left; | 503 --rcAnnot.left; |
493 --rcAnnot.bottom; | 504 --rcAnnot.bottom; |
(...skipping 14 matching lines...) Expand all Loading... | |
508 } | 519 } |
509 | 520 |
510 // reset filed values within a document. | 521 // reset filed values within a document. |
511 // comment: | 522 // comment: |
512 // note: if the fields names r not rational, aodbe is dumb for it. | 523 // note: if the fields names r not rational, aodbe is dumb for it. |
513 | 524 |
514 FX_BOOL Document::resetForm(IJS_Context* cc, | 525 FX_BOOL Document::resetForm(IJS_Context* cc, |
515 const std::vector<CJS_Value>& params, | 526 const std::vector<CJS_Value>& params, |
516 CJS_Value& vRet, | 527 CJS_Value& vRet, |
517 CFX_WideString& sError) { | 528 CFX_WideString& sError) { |
529 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | |
530 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
531 v8::Isolate* pIsolate = pRuntime->GetIsolate(); | |
dsinclair
2016/08/09 19:25:32
Move to 548?
Tom Sepez
2016/08/09 20:33:23
Done.
| |
532 | |
518 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || | 533 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || |
519 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) || | 534 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) || |
520 m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) | 535 m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) |
521 return FALSE; | 536 return FALSE; |
522 | 537 |
523 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 538 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); |
524 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); | 539 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); |
525 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); | |
526 CJS_Array aName; | 540 CJS_Array aName; |
527 | 541 |
528 if (params.empty()) { | 542 if (params.empty()) { |
529 pPDFForm->ResetForm(TRUE); | 543 pPDFForm->ResetForm(TRUE); |
530 m_pDocument->SetChangeMark(); | 544 m_pDocument->SetChangeMark(); |
531 return TRUE; | 545 return TRUE; |
532 } | 546 } |
533 | 547 |
534 switch (params[0].GetType()) { | 548 switch (params[0].GetType()) { |
535 default: | 549 default: |
536 aName.Attach(params[0].ToV8Array()); | 550 aName.Attach(params[0].ToV8Array(pIsolate)); |
537 break; | 551 break; |
538 case CJS_Value::VT_string: | 552 case CJS_Value::VT_string: |
539 aName.SetElement(pRuntime->GetIsolate(), 0, params[0]); | 553 aName.SetElement(pRuntime->GetIsolate(), 0, params[0]); |
540 break; | 554 break; |
541 } | 555 } |
542 | 556 |
543 std::vector<CPDF_FormField*> aFields; | 557 std::vector<CPDF_FormField*> aFields; |
544 for (int i = 0, isz = aName.GetLength(); i < isz; ++i) { | 558 for (int i = 0, isz = aName.GetLength(); i < isz; ++i) { |
545 CJS_Value valElement(pRuntime); | 559 CJS_Value valElement(pRuntime); |
546 aName.GetElement(pRuntime->GetIsolate(), i, valElement); | 560 aName.GetElement(pRuntime->GetIsolate(), i, valElement); |
547 CFX_WideString swVal = valElement.ToCFXWideString(); | 561 CFX_WideString swVal = valElement.ToCFXWideString(pIsolate); |
548 for (int j = 0, jsz = pPDFForm->CountFields(swVal); j < jsz; ++j) | 562 for (int j = 0, jsz = pPDFForm->CountFields(swVal); j < jsz; ++j) |
549 aFields.push_back(pPDFForm->GetField(j, swVal)); | 563 aFields.push_back(pPDFForm->GetField(j, swVal)); |
550 } | 564 } |
551 | 565 |
552 if (!aFields.empty()) { | 566 if (!aFields.empty()) { |
553 pPDFForm->ResetForm(aFields, TRUE, TRUE); | 567 pPDFForm->ResetForm(aFields, TRUE, TRUE); |
554 m_pDocument->SetChangeMark(); | 568 m_pDocument->SetChangeMark(); |
555 } | 569 } |
556 | 570 |
557 return TRUE; | 571 return TRUE; |
558 } | 572 } |
559 | 573 |
560 FX_BOOL Document::saveAs(IJS_Context* cc, | 574 FX_BOOL Document::saveAs(IJS_Context* cc, |
561 const std::vector<CJS_Value>& params, | 575 const std::vector<CJS_Value>& params, |
562 CJS_Value& vRet, | 576 CJS_Value& vRet, |
563 CFX_WideString& sError) { | 577 CFX_WideString& sError) { |
564 // Unsafe, not supported. | 578 // Unsafe, not supported. |
565 return TRUE; | 579 return TRUE; |
566 } | 580 } |
567 | 581 |
568 FX_BOOL Document::submitForm(IJS_Context* cc, | 582 FX_BOOL Document::submitForm(IJS_Context* cc, |
569 const std::vector<CJS_Value>& params, | 583 const std::vector<CJS_Value>& params, |
570 CJS_Value& vRet, | 584 CJS_Value& vRet, |
571 CFX_WideString& sError) { | 585 CFX_WideString& sError) { |
572 CJS_Context* pContext = (CJS_Context*)cc; | 586 CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
587 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
dsinclair
2016/08/09 19:25:32
Move to 596?
Tom Sepez
2016/08/09 20:33:23
Done.
| |
588 v8::Isolate* pIsolate = pRuntime->GetIsolate(); | |
589 | |
573 int nSize = params.size(); | 590 int nSize = params.size(); |
574 if (nSize < 1) { | 591 if (nSize < 1) { |
575 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 592 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
576 return FALSE; | 593 return FALSE; |
577 } | 594 } |
578 | 595 |
579 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); | |
580 v8::Isolate* isolate = pRuntime->GetIsolate(); | 596 v8::Isolate* isolate = pRuntime->GetIsolate(); |
581 CJS_Array aFields; | 597 CJS_Array aFields; |
582 CFX_WideString strURL; | 598 CFX_WideString strURL; |
583 FX_BOOL bFDF = TRUE; | 599 FX_BOOL bFDF = TRUE; |
584 FX_BOOL bEmpty = FALSE; | 600 FX_BOOL bEmpty = FALSE; |
585 | 601 |
586 CJS_Value v = params[0]; | 602 CJS_Value v = params[0]; |
587 if (v.GetType() == CJS_Value::VT_string) { | 603 if (v.GetType() == CJS_Value::VT_string) { |
588 strURL = params[0].ToCFXWideString(); | 604 strURL = params[0].ToCFXWideString(pIsolate); |
589 if (nSize > 1) | 605 if (nSize > 1) |
590 bFDF = params[1].ToBool(); | 606 bFDF = params[1].ToBool(pIsolate); |
591 if (nSize > 2) | 607 if (nSize > 2) |
592 bEmpty = params[2].ToBool(); | 608 bEmpty = params[2].ToBool(pIsolate); |
593 if (nSize > 3) | 609 if (nSize > 3) |
594 aFields.Attach(params[3].ToV8Array()); | 610 aFields.Attach(params[3].ToV8Array(pIsolate)); |
595 } else if (v.GetType() == CJS_Value::VT_object) { | 611 } else if (v.GetType() == CJS_Value::VT_object) { |
596 v8::Local<v8::Object> pObj = params[0].ToV8Object(); | 612 v8::Local<v8::Object> pObj = params[0].ToV8Object(pIsolate); |
597 v8::Local<v8::Value> pValue = FXJS_GetObjectElement(isolate, pObj, L"cURL"); | 613 v8::Local<v8::Value> pValue = FXJS_GetObjectElement(isolate, pObj, L"cURL"); |
598 if (!pValue.IsEmpty()) | 614 if (!pValue.IsEmpty()) |
599 strURL = CJS_Value(pRuntime, pValue).ToCFXWideString(); | 615 strURL = CJS_Value(pRuntime, pValue).ToCFXWideString(pIsolate); |
600 | 616 |
601 pValue = FXJS_GetObjectElement(isolate, pObj, L"bFDF"); | 617 pValue = FXJS_GetObjectElement(isolate, pObj, L"bFDF"); |
602 bFDF = CJS_Value(pRuntime, pValue).ToBool(); | 618 bFDF = CJS_Value(pRuntime, pValue).ToBool(pIsolate); |
603 | 619 |
604 pValue = FXJS_GetObjectElement(isolate, pObj, L"bEmpty"); | 620 pValue = FXJS_GetObjectElement(isolate, pObj, L"bEmpty"); |
605 bEmpty = CJS_Value(pRuntime, pValue).ToBool(); | 621 bEmpty = CJS_Value(pRuntime, pValue).ToBool(pIsolate); |
606 | 622 |
607 pValue = FXJS_GetObjectElement(isolate, pObj, L"aFields"); | 623 pValue = FXJS_GetObjectElement(isolate, pObj, L"aFields"); |
608 aFields.Attach(CJS_Value(pRuntime, pValue).ToV8Array()); | 624 aFields.Attach(CJS_Value(pRuntime, pValue).ToV8Array(pIsolate)); |
609 } | 625 } |
610 | 626 |
611 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 627 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); |
612 CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm(); | 628 CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm(); |
613 if (aFields.GetLength() == 0 && bEmpty) { | 629 if (aFields.GetLength() == 0 && bEmpty) { |
614 if (pPDFInterForm->CheckRequiredFields(nullptr, true)) { | 630 if (pPDFInterForm->CheckRequiredFields(nullptr, true)) { |
615 pRuntime->BeginBlock(); | 631 pRuntime->BeginBlock(); |
616 pInterForm->SubmitForm(strURL, FALSE); | 632 pInterForm->SubmitForm(strURL, FALSE); |
617 pRuntime->EndBlock(); | 633 pRuntime->EndBlock(); |
618 } | 634 } |
619 return TRUE; | 635 return TRUE; |
620 } | 636 } |
621 | 637 |
622 std::vector<CPDF_FormField*> fieldObjects; | 638 std::vector<CPDF_FormField*> fieldObjects; |
623 for (int i = 0, sz = aFields.GetLength(); i < sz; ++i) { | 639 for (int i = 0, sz = aFields.GetLength(); i < sz; ++i) { |
624 CJS_Value valName(pRuntime); | 640 CJS_Value valName(pRuntime); |
625 aFields.GetElement(pRuntime->GetIsolate(), i, valName); | 641 aFields.GetElement(pRuntime->GetIsolate(), i, valName); |
626 | 642 |
627 CFX_WideString sName = valName.ToCFXWideString(); | 643 CFX_WideString sName = valName.ToCFXWideString(pIsolate); |
628 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); | 644 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); |
629 for (int j = 0, jsz = pPDFForm->CountFields(sName); j < jsz; ++j) { | 645 for (int j = 0, jsz = pPDFForm->CountFields(sName); j < jsz; ++j) { |
630 CPDF_FormField* pField = pPDFForm->GetField(j, sName); | 646 CPDF_FormField* pField = pPDFForm->GetField(j, sName); |
631 if (!bEmpty && pField->GetValue().IsEmpty()) | 647 if (!bEmpty && pField->GetValue().IsEmpty()) |
632 continue; | 648 continue; |
633 | 649 |
634 fieldObjects.push_back(pField); | 650 fieldObjects.push_back(pField); |
635 } | 651 } |
636 } | 652 } |
637 | 653 |
(...skipping 16 matching lines...) Expand all Loading... | |
654 FX_BOOL Document::bookmarkRoot(IJS_Context* cc, | 670 FX_BOOL Document::bookmarkRoot(IJS_Context* cc, |
655 CJS_PropValue& vp, | 671 CJS_PropValue& vp, |
656 CFX_WideString& sError) { | 672 CFX_WideString& sError) { |
657 return TRUE; | 673 return TRUE; |
658 } | 674 } |
659 | 675 |
660 FX_BOOL Document::mailDoc(IJS_Context* cc, | 676 FX_BOOL Document::mailDoc(IJS_Context* cc, |
661 const std::vector<CJS_Value>& params, | 677 const std::vector<CJS_Value>& params, |
662 CJS_Value& vRet, | 678 CJS_Value& vRet, |
663 CFX_WideString& sError) { | 679 CFX_WideString& sError) { |
680 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | |
681 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
dsinclair
2016/08/09 19:25:33
...
Tom Sepez
2016/08/09 20:33:23
Done.
| |
682 v8::Isolate* pIsolate = pRuntime->GetIsolate(); | |
683 | |
664 FX_BOOL bUI = TRUE; | 684 FX_BOOL bUI = TRUE; |
665 CFX_WideString cTo = L""; | 685 CFX_WideString cTo = L""; |
666 CFX_WideString cCc = L""; | 686 CFX_WideString cCc = L""; |
667 CFX_WideString cBcc = L""; | 687 CFX_WideString cBcc = L""; |
668 CFX_WideString cSubject = L""; | 688 CFX_WideString cSubject = L""; |
669 CFX_WideString cMsg = L""; | 689 CFX_WideString cMsg = L""; |
670 | 690 |
671 if (params.size() >= 1) | 691 if (params.size() >= 1) |
672 bUI = params[0].ToBool(); | 692 bUI = params[0].ToBool(pIsolate); |
673 if (params.size() >= 2) | 693 if (params.size() >= 2) |
674 cTo = params[1].ToCFXWideString(); | 694 cTo = params[1].ToCFXWideString(pIsolate); |
675 if (params.size() >= 3) | 695 if (params.size() >= 3) |
676 cCc = params[2].ToCFXWideString(); | 696 cCc = params[2].ToCFXWideString(pIsolate); |
677 if (params.size() >= 4) | 697 if (params.size() >= 4) |
678 cBcc = params[3].ToCFXWideString(); | 698 cBcc = params[3].ToCFXWideString(pIsolate); |
679 if (params.size() >= 5) | 699 if (params.size() >= 5) |
680 cSubject = params[4].ToCFXWideString(); | 700 cSubject = params[4].ToCFXWideString(pIsolate); |
681 if (params.size() >= 6) | 701 if (params.size() >= 6) |
682 cMsg = params[5].ToCFXWideString(); | 702 cMsg = params[5].ToCFXWideString(pIsolate); |
683 | |
684 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); | |
685 v8::Isolate* isolate = pRuntime->GetIsolate(); | |
686 | 703 |
687 if (params.size() >= 1 && params[0].GetType() == CJS_Value::VT_object) { | 704 if (params.size() >= 1 && params[0].GetType() == CJS_Value::VT_object) { |
688 v8::Local<v8::Object> pObj = params[0].ToV8Object(); | 705 v8::Local<v8::Object> pObj = params[0].ToV8Object(pIsolate); |
689 | 706 |
690 v8::Local<v8::Value> pValue = FXJS_GetObjectElement(isolate, pObj, L"bUI"); | 707 v8::Local<v8::Value> pValue = FXJS_GetObjectElement(pIsolate, pObj, L"bUI"); |
691 bUI = CJS_Value(pRuntime, pValue).ToInt(); | 708 bUI = CJS_Value(pRuntime, pValue).ToInt(pIsolate); |
692 | 709 |
693 pValue = FXJS_GetObjectElement(isolate, pObj, L"cTo"); | 710 pValue = FXJS_GetObjectElement(pIsolate, pObj, L"cTo"); |
694 cTo = CJS_Value(pRuntime, pValue).ToCFXWideString(); | 711 cTo = CJS_Value(pRuntime, pValue).ToCFXWideString(pIsolate); |
695 | 712 |
696 pValue = FXJS_GetObjectElement(isolate, pObj, L"cCc"); | 713 pValue = FXJS_GetObjectElement(pIsolate, pObj, L"cCc"); |
697 cCc = CJS_Value(pRuntime, pValue).ToCFXWideString(); | 714 cCc = CJS_Value(pRuntime, pValue).ToCFXWideString(pIsolate); |
698 | 715 |
699 pValue = FXJS_GetObjectElement(isolate, pObj, L"cBcc"); | 716 pValue = FXJS_GetObjectElement(pIsolate, pObj, L"cBcc"); |
700 cBcc = CJS_Value(pRuntime, pValue).ToCFXWideString(); | 717 cBcc = CJS_Value(pRuntime, pValue).ToCFXWideString(pIsolate); |
701 | 718 |
702 pValue = FXJS_GetObjectElement(isolate, pObj, L"cSubject"); | 719 pValue = FXJS_GetObjectElement(pIsolate, pObj, L"cSubject"); |
703 cSubject = CJS_Value(pRuntime, pValue).ToCFXWideString(); | 720 cSubject = CJS_Value(pRuntime, pValue).ToCFXWideString(pIsolate); |
704 | 721 |
705 pValue = FXJS_GetObjectElement(isolate, pObj, L"cMsg"); | 722 pValue = FXJS_GetObjectElement(pIsolate, pObj, L"cMsg"); |
706 cMsg = CJS_Value(pRuntime, pValue).ToCFXWideString(); | 723 cMsg = CJS_Value(pRuntime, pValue).ToCFXWideString(pIsolate); |
707 } | 724 } |
708 | 725 |
709 pRuntime->BeginBlock(); | 726 pRuntime->BeginBlock(); |
710 CPDFDoc_Environment* pEnv = pRuntime->GetReaderApp(); | 727 CPDFDoc_Environment* pEnv = pRuntime->GetReaderApp(); |
711 pEnv->JS_docmailForm(nullptr, 0, bUI, cTo.c_str(), cSubject.c_str(), | 728 pEnv->JS_docmailForm(nullptr, 0, bUI, cTo.c_str(), cSubject.c_str(), |
712 cCc.c_str(), cBcc.c_str(), cMsg.c_str()); | 729 cCc.c_str(), cBcc.c_str(), cMsg.c_str()); |
713 pRuntime->EndBlock(); | 730 pRuntime->EndBlock(); |
714 | 731 |
715 return TRUE; | 732 return TRUE; |
716 } | 733 } |
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1021 const std::vector<CJS_Value>& params, | 1038 const std::vector<CJS_Value>& params, |
1022 CJS_Value& vRet, | 1039 CJS_Value& vRet, |
1023 CFX_WideString& sError) { | 1040 CFX_WideString& sError) { |
1024 return TRUE; | 1041 return TRUE; |
1025 } | 1042 } |
1026 | 1043 |
1027 FX_BOOL Document::getAnnots(IJS_Context* cc, | 1044 FX_BOOL Document::getAnnots(IJS_Context* cc, |
1028 const std::vector<CJS_Value>& params, | 1045 const std::vector<CJS_Value>& params, |
1029 CJS_Value& vRet, | 1046 CJS_Value& vRet, |
1030 CFX_WideString& sError) { | 1047 CFX_WideString& sError) { |
1031 vRet.SetNull(); | 1048 vRet.SetNull(CJS_Runtime::FromContext(cc)); |
1032 return TRUE; | 1049 return TRUE; |
1033 } | 1050 } |
1034 | 1051 |
1035 FX_BOOL Document::getAnnot3D(IJS_Context* cc, | 1052 FX_BOOL Document::getAnnot3D(IJS_Context* cc, |
1036 const std::vector<CJS_Value>& params, | 1053 const std::vector<CJS_Value>& params, |
1037 CJS_Value& vRet, | 1054 CJS_Value& vRet, |
1038 CFX_WideString& sError) { | 1055 CFX_WideString& sError) { |
1039 vRet.SetNull(); | 1056 vRet.SetNull(CJS_Runtime::FromContext(cc)); |
1040 return TRUE; | 1057 return TRUE; |
1041 } | 1058 } |
1042 | 1059 |
1043 FX_BOOL Document::getAnnots3D(IJS_Context* cc, | 1060 FX_BOOL Document::getAnnots3D(IJS_Context* cc, |
1044 const std::vector<CJS_Value>& params, | 1061 const std::vector<CJS_Value>& params, |
1045 CJS_Value& vRet, | 1062 CJS_Value& vRet, |
1046 CFX_WideString& sError) { | 1063 CFX_WideString& sError) { |
1047 vRet = CJS_Value::VT_undefined; | |
dsinclair
2016/08/09 19:25:32
Is this no longer needed?
Tom Sepez
2016/08/09 20:33:23
It was wrong. Not setting a value results in JS g
| |
1048 return TRUE; | 1064 return TRUE; |
1049 } | 1065 } |
1050 | 1066 |
1051 FX_BOOL Document::getOCGs(IJS_Context* cc, | 1067 FX_BOOL Document::getOCGs(IJS_Context* cc, |
1052 const std::vector<CJS_Value>& params, | 1068 const std::vector<CJS_Value>& params, |
1053 CJS_Value& vRet, | 1069 CJS_Value& vRet, |
1054 CFX_WideString& sError) { | 1070 CFX_WideString& sError) { |
1055 return TRUE; | 1071 return TRUE; |
1056 } | 1072 } |
1057 | 1073 |
1058 FX_BOOL Document::getLinks(IJS_Context* cc, | 1074 FX_BOOL Document::getLinks(IJS_Context* cc, |
1059 const std::vector<CJS_Value>& params, | 1075 const std::vector<CJS_Value>& params, |
1060 CJS_Value& vRet, | 1076 CJS_Value& vRet, |
1061 CFX_WideString& sError) { | 1077 CFX_WideString& sError) { |
1062 return TRUE; | 1078 return TRUE; |
1063 } | 1079 } |
1064 | 1080 |
1065 bool Document::IsEnclosedInRect(CFX_FloatRect rect, CFX_FloatRect LinkRect) { | 1081 bool Document::IsEnclosedInRect(CFX_FloatRect rect, CFX_FloatRect LinkRect) { |
1066 return (rect.left <= LinkRect.left && rect.top <= LinkRect.top && | 1082 return (rect.left <= LinkRect.left && rect.top <= LinkRect.top && |
1067 rect.right >= LinkRect.right && rect.bottom >= LinkRect.bottom); | 1083 rect.right >= LinkRect.right && rect.bottom >= LinkRect.bottom); |
1068 } | 1084 } |
1069 | 1085 |
1070 FX_BOOL Document::addIcon(IJS_Context* cc, | 1086 FX_BOOL Document::addIcon(IJS_Context* cc, |
1071 const std::vector<CJS_Value>& params, | 1087 const std::vector<CJS_Value>& params, |
1072 CJS_Value& vRet, | 1088 CJS_Value& vRet, |
1073 CFX_WideString& sError) { | 1089 CFX_WideString& sError) { |
1074 CJS_Context* pContext = (CJS_Context*)cc; | 1090 CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
1091 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
dsinclair
2016/08/09 19:25:32
...
Tom Sepez
2016/08/09 20:33:24
Done.
| |
1092 v8::Isolate* pIsolate = pRuntime->GetIsolate(); | |
1093 | |
1075 if (params.size() != 2) { | 1094 if (params.size() != 2) { |
1076 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 1095 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
1077 return FALSE; | 1096 return FALSE; |
1078 } | 1097 } |
1079 CFX_WideString swIconName = params[0].ToCFXWideString(); | 1098 CFX_WideString swIconName = params[0].ToCFXWideString(pIsolate); |
1080 | 1099 |
1081 if (params[1].GetType() != CJS_Value::VT_object) { | 1100 if (params[1].GetType() != CJS_Value::VT_object) { |
1082 sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR); | 1101 sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR); |
1083 return FALSE; | 1102 return FALSE; |
1084 } | 1103 } |
1085 | 1104 |
1086 v8::Local<v8::Object> pJSIcon = params[1].ToV8Object(); | 1105 v8::Local<v8::Object> pJSIcon = params[1].ToV8Object(pIsolate); |
1087 if (FXJS_GetObjDefnID(pJSIcon) != CJS_Icon::g_nObjDefnID) { | 1106 if (FXJS_GetObjDefnID(pJSIcon) != CJS_Icon::g_nObjDefnID) { |
1088 sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR); | 1107 sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR); |
1089 return FALSE; | 1108 return FALSE; |
1090 } | 1109 } |
1091 | 1110 |
1092 CJS_EmbedObj* pEmbedObj = params[1].ToCJSObject()->GetEmbedObject(); | 1111 CJS_EmbedObj* pEmbedObj = params[1].ToCJSObject(pIsolate)->GetEmbedObject(); |
1093 if (!pEmbedObj) { | 1112 if (!pEmbedObj) { |
1094 sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR); | 1113 sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR); |
1095 return FALSE; | 1114 return FALSE; |
1096 } | 1115 } |
1097 | 1116 |
1098 m_IconList.push_back(std::unique_ptr<IconElement>( | 1117 m_IconList.push_back(std::unique_ptr<IconElement>( |
1099 new IconElement(swIconName, (Icon*)pEmbedObj))); | 1118 new IconElement(swIconName, (Icon*)pEmbedObj))); |
1100 return TRUE; | 1119 return TRUE; |
1101 } | 1120 } |
1102 | 1121 |
1103 FX_BOOL Document::icons(IJS_Context* cc, | 1122 FX_BOOL Document::icons(IJS_Context* cc, |
1104 CJS_PropValue& vp, | 1123 CJS_PropValue& vp, |
1105 CFX_WideString& sError) { | 1124 CFX_WideString& sError) { |
1125 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | |
1126 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); | |
dsinclair
2016/08/09 19:25:32
...
Tom Sepez
2016/08/09 20:33:23
Done.
| |
1127 | |
1106 if (vp.IsSetting()) { | 1128 if (vp.IsSetting()) { |
1107 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | |
1108 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); | 1129 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); |
1109 return FALSE; | 1130 return FALSE; |
1110 } | 1131 } |
1111 | 1132 |
1112 if (m_IconList.empty()) { | 1133 if (m_IconList.empty()) { |
1113 vp.SetNull(); | 1134 vp.GetJSValue()->SetNull(pRuntime); |
1114 return TRUE; | 1135 return TRUE; |
1115 } | 1136 } |
1116 | 1137 |
1117 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); | |
1118 CJS_Array Icons; | 1138 CJS_Array Icons; |
1119 | 1139 |
1120 int i = 0; | 1140 int i = 0; |
1121 for (const auto& pIconElement : m_IconList) { | 1141 for (const auto& pIconElement : m_IconList) { |
1122 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj( | 1142 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj( |
1123 pRuntime->GetIsolate(), pRuntime, CJS_Icon::g_nObjDefnID); | 1143 pRuntime->GetIsolate(), pRuntime, CJS_Icon::g_nObjDefnID); |
1124 if (pObj.IsEmpty()) | 1144 if (pObj.IsEmpty()) |
1125 return FALSE; | 1145 return FALSE; |
1126 | 1146 |
1127 CJS_Icon* pJS_Icon = (CJS_Icon*)FXJS_GetPrivate(m_isolate, pObj); | 1147 CJS_Icon* pJS_Icon = (CJS_Icon*)FXJS_GetPrivate(m_isolate, pObj); |
(...skipping 11 matching lines...) Expand all Loading... | |
1139 } | 1159 } |
1140 | 1160 |
1141 vp << Icons; | 1161 vp << Icons; |
1142 return TRUE; | 1162 return TRUE; |
1143 } | 1163 } |
1144 | 1164 |
1145 FX_BOOL Document::getIcon(IJS_Context* cc, | 1165 FX_BOOL Document::getIcon(IJS_Context* cc, |
1146 const std::vector<CJS_Value>& params, | 1166 const std::vector<CJS_Value>& params, |
1147 CJS_Value& vRet, | 1167 CJS_Value& vRet, |
1148 CFX_WideString& sError) { | 1168 CFX_WideString& sError) { |
1149 CJS_Context* pContext = (CJS_Context*)cc; | 1169 CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
1170 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
dsinclair
2016/08/09 19:25:32
...
Tom Sepez
2016/08/09 20:33:23
Done.
| |
1171 v8::Isolate* pIsolate = pRuntime->GetIsolate(); | |
1172 | |
1150 if (params.size() != 1) { | 1173 if (params.size() != 1) { |
1151 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 1174 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
1152 return FALSE; | 1175 return FALSE; |
1153 } | 1176 } |
1154 | 1177 |
1155 if (m_IconList.empty()) | 1178 if (m_IconList.empty()) |
1156 return FALSE; | 1179 return FALSE; |
1157 | 1180 |
1158 CFX_WideString swIconName = params[0].ToCFXWideString(); | 1181 CFX_WideString swIconName = params[0].ToCFXWideString(pIsolate); |
1159 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
1160 | 1182 |
1161 for (const auto& pIconElement : m_IconList) { | 1183 for (const auto& pIconElement : m_IconList) { |
1162 if (pIconElement->IconName == swIconName) { | 1184 if (pIconElement->IconName == swIconName) { |
1163 Icon* pRetIcon = pIconElement->IconStream; | 1185 Icon* pRetIcon = pIconElement->IconStream; |
1164 | 1186 |
1165 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj( | 1187 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj( |
1166 pRuntime->GetIsolate(), pRuntime, CJS_Icon::g_nObjDefnID); | 1188 pRuntime->GetIsolate(), pRuntime, CJS_Icon::g_nObjDefnID); |
1167 if (pObj.IsEmpty()) | 1189 if (pObj.IsEmpty()) |
1168 return FALSE; | 1190 return FALSE; |
1169 | 1191 |
1170 CJS_Icon* pJS_Icon = (CJS_Icon*)FXJS_GetPrivate(m_isolate, pObj); | 1192 CJS_Icon* pJS_Icon = (CJS_Icon*)FXJS_GetPrivate(m_isolate, pObj); |
1171 if (!pJS_Icon) | 1193 if (!pJS_Icon) |
1172 return FALSE; | 1194 return FALSE; |
1173 | 1195 |
1174 Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject(); | 1196 Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject(); |
1175 if (!pIcon) | 1197 if (!pIcon) |
1176 return FALSE; | 1198 return FALSE; |
1177 | 1199 |
1178 pIcon->SetIconName(swIconName); | 1200 pIcon->SetIconName(swIconName); |
1179 pIcon->SetStream(pRetIcon->GetStream()); | 1201 pIcon->SetStream(pRetIcon->GetStream()); |
1180 vRet = pJS_Icon; | 1202 vRet = CJS_Value(pRuntime, pJS_Icon); |
1181 return TRUE; | 1203 return TRUE; |
1182 } | 1204 } |
1183 } | 1205 } |
1184 | 1206 |
1185 return FALSE; | 1207 return FALSE; |
1186 } | 1208 } |
1187 | 1209 |
1188 FX_BOOL Document::removeIcon(IJS_Context* cc, | 1210 FX_BOOL Document::removeIcon(IJS_Context* cc, |
1189 const std::vector<CJS_Value>& params, | 1211 const std::vector<CJS_Value>& params, |
1190 CJS_Value& vRet, | 1212 CJS_Value& vRet, |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1224 FX_BOOL Document::Collab(IJS_Context* cc, | 1246 FX_BOOL Document::Collab(IJS_Context* cc, |
1225 CJS_PropValue& vp, | 1247 CJS_PropValue& vp, |
1226 CFX_WideString& sError) { | 1248 CFX_WideString& sError) { |
1227 return TRUE; | 1249 return TRUE; |
1228 } | 1250 } |
1229 | 1251 |
1230 FX_BOOL Document::getPageNthWord(IJS_Context* cc, | 1252 FX_BOOL Document::getPageNthWord(IJS_Context* cc, |
1231 const std::vector<CJS_Value>& params, | 1253 const std::vector<CJS_Value>& params, |
1232 CJS_Value& vRet, | 1254 CJS_Value& vRet, |
1233 CFX_WideString& sError) { | 1255 CFX_WideString& sError) { |
1256 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | |
dsinclair
2016/08/09 19:25:32
...
Tom Sepez
2016/08/09 20:33:23
Done.
| |
1257 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
1258 v8::Isolate* pIsolate = pRuntime->GetIsolate(); | |
1259 | |
1234 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) | 1260 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) |
1235 return FALSE; | 1261 return FALSE; |
1236 | 1262 |
1237 int nPageNo = params.size() > 0 ? params[0].ToInt() : 0; | 1263 int nPageNo = params.size() > 0 ? params[0].ToInt(pIsolate) : 0; |
1238 int nWordNo = params.size() > 1 ? params[1].ToInt() : 0; | 1264 int nWordNo = params.size() > 1 ? params[1].ToInt(pIsolate) : 0; |
1239 bool bStrip = params.size() > 2 ? params[2].ToBool() : true; | 1265 bool bStrip = params.size() > 2 ? params[2].ToBool(pIsolate) : true; |
1240 | 1266 |
1241 CPDF_Document* pDocument = m_pDocument->GetPDFDocument(); | 1267 CPDF_Document* pDocument = m_pDocument->GetPDFDocument(); |
1242 if (!pDocument) | 1268 if (!pDocument) |
1243 return FALSE; | 1269 return FALSE; |
1244 | 1270 |
1245 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | |
1246 if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) { | 1271 if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) { |
1247 sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR); | 1272 sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR); |
1248 return FALSE; | 1273 return FALSE; |
1249 } | 1274 } |
1250 | 1275 |
1251 CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); | 1276 CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); |
1252 if (!pPageDict) | 1277 if (!pPageDict) |
1253 return FALSE; | 1278 return FALSE; |
1254 | 1279 |
1255 CPDF_Page page(pDocument, pPageDict, true); | 1280 CPDF_Page page(pDocument, pPageDict, true); |
(...skipping 11 matching lines...) Expand all Loading... | |
1267 } | 1292 } |
1268 nWords += nObjWords; | 1293 nWords += nObjWords; |
1269 } | 1294 } |
1270 } | 1295 } |
1271 | 1296 |
1272 if (bStrip) { | 1297 if (bStrip) { |
1273 swRet.TrimLeft(); | 1298 swRet.TrimLeft(); |
1274 swRet.TrimRight(); | 1299 swRet.TrimRight(); |
1275 } | 1300 } |
1276 | 1301 |
1277 vRet = swRet.c_str(); | 1302 vRet = CJS_Value(pRuntime, swRet.c_str()); |
1278 return TRUE; | 1303 return TRUE; |
1279 } | 1304 } |
1280 | 1305 |
1281 FX_BOOL Document::getPageNthWordQuads(IJS_Context* cc, | 1306 FX_BOOL Document::getPageNthWordQuads(IJS_Context* cc, |
1282 const std::vector<CJS_Value>& params, | 1307 const std::vector<CJS_Value>& params, |
1283 CJS_Value& vRet, | 1308 CJS_Value& vRet, |
1284 CFX_WideString& sError) { | 1309 CFX_WideString& sError) { |
1285 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) | 1310 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) |
1286 return FALSE; | 1311 return FALSE; |
1287 | 1312 |
1288 return FALSE; | 1313 return FALSE; |
1289 } | 1314 } |
1290 | 1315 |
1291 FX_BOOL Document::getPageNumWords(IJS_Context* cc, | 1316 FX_BOOL Document::getPageNumWords(IJS_Context* cc, |
1292 const std::vector<CJS_Value>& params, | 1317 const std::vector<CJS_Value>& params, |
1293 CJS_Value& vRet, | 1318 CJS_Value& vRet, |
1294 CFX_WideString& sError) { | 1319 CFX_WideString& sError) { |
1320 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | |
1321 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
1322 v8::Isolate* pIsolate = pRuntime->GetIsolate(); | |
dsinclair
2016/08/09 19:25:33
...
Tom Sepez
2016/08/09 20:33:23
Done.
| |
1323 | |
1295 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) | 1324 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) |
1296 return FALSE; | 1325 return FALSE; |
1297 | 1326 |
1298 int nPageNo = params.size() > 0 ? params[0].ToInt() : 0; | 1327 int nPageNo = params.size() > 0 ? params[0].ToInt(pIsolate) : 0; |
1299 CPDF_Document* pDocument = m_pDocument->GetPDFDocument(); | 1328 CPDF_Document* pDocument = m_pDocument->GetPDFDocument(); |
1300 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | |
1301 if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) { | 1329 if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) { |
1302 sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR); | 1330 sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR); |
1303 return FALSE; | 1331 return FALSE; |
1304 } | 1332 } |
1305 | 1333 |
1306 CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); | 1334 CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); |
1307 if (!pPageDict) | 1335 if (!pPageDict) |
1308 return FALSE; | 1336 return FALSE; |
1309 | 1337 |
1310 CPDF_Page page(pDocument, pPageDict, true); | 1338 CPDF_Page page(pDocument, pPageDict, true); |
1311 page.ParseContent(); | 1339 page.ParseContent(); |
1312 | 1340 |
1313 int nWords = 0; | 1341 int nWords = 0; |
1314 for (auto& pPageObj : *page.GetPageObjectList()) { | 1342 for (auto& pPageObj : *page.GetPageObjectList()) { |
1315 if (pPageObj->IsText()) | 1343 if (pPageObj->IsText()) |
1316 nWords += CountWords(pPageObj->AsText()); | 1344 nWords += CountWords(pPageObj->AsText()); |
1317 } | 1345 } |
1318 | 1346 |
1319 vRet = nWords; | 1347 vRet = CJS_Value(pRuntime, nWords); |
1320 return TRUE; | 1348 return TRUE; |
1321 } | 1349 } |
1322 | 1350 |
1323 FX_BOOL Document::getPrintParams(IJS_Context* cc, | 1351 FX_BOOL Document::getPrintParams(IJS_Context* cc, |
1324 const std::vector<CJS_Value>& params, | 1352 const std::vector<CJS_Value>& params, |
1325 CJS_Value& vRet, | 1353 CJS_Value& vRet, |
1326 CFX_WideString& sError) { | 1354 CFX_WideString& sError) { |
1327 CJS_Context* pContext = (CJS_Context*)cc; | 1355 CJS_Context* pContext = (CJS_Context*)cc; |
1328 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | 1356 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
1329 v8::Local<v8::Object> pRetObj = FXJS_NewFxDynamicObj( | 1357 v8::Local<v8::Object> pRetObj = FXJS_NewFxDynamicObj( |
1330 pRuntime->GetIsolate(), pRuntime, CJS_PrintParamsObj::g_nObjDefnID); | 1358 pRuntime->GetIsolate(), pRuntime, CJS_PrintParamsObj::g_nObjDefnID); |
1331 | 1359 |
1332 // Not implemented yet. | 1360 // Not implemented yet. |
1333 | 1361 |
1334 vRet = pRetObj; | 1362 vRet = CJS_Value(pRuntime, pRetObj); |
1335 return TRUE; | 1363 return TRUE; |
1336 } | 1364 } |
1337 | 1365 |
1338 #define ISLATINWORD(u) (u != 0x20 && u <= 0x28FF) | 1366 #define ISLATINWORD(u) (u != 0x20 && u <= 0x28FF) |
1339 | 1367 |
1340 int Document::CountWords(CPDF_TextObject* pTextObj) { | 1368 int Document::CountWords(CPDF_TextObject* pTextObj) { |
1341 if (!pTextObj) | 1369 if (!pTextObj) |
1342 return 0; | 1370 return 0; |
1343 | 1371 |
1344 int nWords = 0; | 1372 int nWords = 0; |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1467 CFX_WideString& sError) { | 1495 CFX_WideString& sError) { |
1468 // Unsafe, not supported. | 1496 // Unsafe, not supported. |
1469 return TRUE; | 1497 return TRUE; |
1470 } | 1498 } |
1471 | 1499 |
1472 FX_BOOL Document::gotoNamedDest(IJS_Context* cc, | 1500 FX_BOOL Document::gotoNamedDest(IJS_Context* cc, |
1473 const std::vector<CJS_Value>& params, | 1501 const std::vector<CJS_Value>& params, |
1474 CJS_Value& vRet, | 1502 CJS_Value& vRet, |
1475 CFX_WideString& sError) { | 1503 CFX_WideString& sError) { |
1476 CJS_Context* context = (CJS_Context*)cc; | 1504 CJS_Context* context = (CJS_Context*)cc; |
1505 CJS_Runtime* runtime = context->GetJSRuntime(); | |
dsinclair
2016/08/09 19:25:32
...
Tom Sepez
2016/08/09 20:33:23
Done.
| |
1506 | |
1477 if (params.size() != 1) { | 1507 if (params.size() != 1) { |
1478 sError = JSGetStringFromID(context, IDS_STRING_JSPARAMERROR); | 1508 sError = JSGetStringFromID(context, IDS_STRING_JSPARAMERROR); |
1479 return FALSE; | 1509 return FALSE; |
1480 } | 1510 } |
1481 | 1511 |
1482 CPDF_Document* pDocument = m_pDocument->GetPDFDocument(); | 1512 CPDF_Document* pDocument = m_pDocument->GetPDFDocument(); |
1483 if (!pDocument) | 1513 if (!pDocument) |
1484 return FALSE; | 1514 return FALSE; |
1485 | 1515 |
1486 CFX_WideString wideName = params[0].ToCFXWideString(); | 1516 CFX_WideString wideName = params[0].ToCFXWideString(runtime->GetIsolate()); |
1487 CFX_ByteString utf8Name = wideName.UTF8Encode(); | 1517 CFX_ByteString utf8Name = wideName.UTF8Encode(); |
1488 | 1518 |
1489 CPDF_NameTree nameTree(pDocument, "Dests"); | 1519 CPDF_NameTree nameTree(pDocument, "Dests"); |
1490 CPDF_Array* destArray = nameTree.LookupNamedDest(pDocument, utf8Name); | 1520 CPDF_Array* destArray = nameTree.LookupNamedDest(pDocument, utf8Name); |
1491 if (!destArray) | 1521 if (!destArray) |
1492 return FALSE; | 1522 return FALSE; |
1493 | 1523 |
1494 CPDF_Dest dest(destArray); | 1524 CPDF_Dest dest(destArray); |
1495 const CPDF_Array* arrayObject = ToArray(dest.GetObject()); | 1525 const CPDF_Array* arrayObject = ToArray(dest.GetObject()); |
1496 | 1526 |
1497 std::unique_ptr<float[]> scrollPositionArray; | 1527 std::unique_ptr<float[]> scrollPositionArray; |
1498 int scrollPositionArraySize = 0; | 1528 int scrollPositionArraySize = 0; |
1499 | 1529 |
1500 if (arrayObject) { | 1530 if (arrayObject) { |
1501 scrollPositionArray.reset(new float[arrayObject->GetCount()]); | 1531 scrollPositionArray.reset(new float[arrayObject->GetCount()]); |
1502 int j = 0; | 1532 int j = 0; |
1503 for (size_t i = 2; i < arrayObject->GetCount(); i++) | 1533 for (size_t i = 2; i < arrayObject->GetCount(); i++) |
1504 scrollPositionArray[j++] = arrayObject->GetFloatAt(i); | 1534 scrollPositionArray[j++] = arrayObject->GetFloatAt(i); |
1505 scrollPositionArraySize = j; | 1535 scrollPositionArraySize = j; |
1506 } | 1536 } |
1507 | 1537 |
1508 CJS_Runtime* runtime = context->GetJSRuntime(); | |
1509 runtime->BeginBlock(); | 1538 runtime->BeginBlock(); |
1510 CPDFDoc_Environment* pApp = m_pDocument->GetEnv(); | 1539 CPDFDoc_Environment* pApp = m_pDocument->GetEnv(); |
1511 pApp->FFI_DoGoToAction(dest.GetPageIndex(pDocument), dest.GetZoomMode(), | 1540 pApp->FFI_DoGoToAction(dest.GetPageIndex(pDocument), dest.GetZoomMode(), |
1512 scrollPositionArray.get(), scrollPositionArraySize); | 1541 scrollPositionArray.get(), scrollPositionArraySize); |
1513 runtime->EndBlock(); | 1542 runtime->EndBlock(); |
1514 | 1543 |
1515 return TRUE; | 1544 return TRUE; |
1516 } | 1545 } |
1517 | 1546 |
1518 void Document::AddDelayData(CJS_DelayData* pData) { | 1547 void Document::AddDelayData(CJS_DelayData* pData) { |
(...skipping 13 matching lines...) Expand all Loading... | |
1532 } | 1561 } |
1533 } | 1562 } |
1534 | 1563 |
1535 for (const auto& pData : DelayDataForFieldAndControlIndex) | 1564 for (const auto& pData : DelayDataForFieldAndControlIndex) |
1536 Field::DoDelay(m_pDocument, pData.get()); | 1565 Field::DoDelay(m_pDocument, pData.get()); |
1537 } | 1566 } |
1538 | 1567 |
1539 CJS_Document* Document::GetCJSDoc() const { | 1568 CJS_Document* Document::GetCJSDoc() const { |
1540 return static_cast<CJS_Document*>(m_pJSObject); | 1569 return static_cast<CJS_Document*>(m_pJSObject); |
1541 } | 1570 } |
OLD | NEW |