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