Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(468)

Side by Side Diff: fpdfsdk/fpdfformfill.cpp

Issue 1857893002: Cleanup the FF Handler proxy methods. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "public/fpdf_formfill.h" 7 #include "public/fpdf_formfill.h"
8 8
9 #include <memory> 9 #include <memory>
10 #include <vector> 10 #include <vector>
11 11
12 #include "core/fpdfapi/fpdf_page/include/cpdf_page.h" 12 #include "core/fpdfapi/fpdf_page/include/cpdf_page.h"
13 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" 13 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h"
14 #include "core/fpdfapi/fpdf_render/include/cpdf_renderoptions.h" 14 #include "core/fpdfapi/fpdf_render/include/cpdf_renderoptions.h"
15 #include "fpdfsdk/include/fsdk_define.h" 15 #include "fpdfsdk/include/fsdk_define.h"
16 #include "fpdfsdk/include/fsdk_mgr.h" 16 #include "fpdfsdk/include/fsdk_mgr.h"
17 #include "public/fpdfview.h" 17 #include "public/fpdfview.h"
18 #include "third_party/base/stl_util.h" 18 #include "third_party/base/stl_util.h"
19 19
20 #ifdef PDF_ENABLE_XFA 20 #ifdef PDF_ENABLE_XFA
21 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_app.h" 21 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_app.h"
22 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_doc.h" 22 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_doc.h"
23 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_page.h" 23 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_page.h"
24 #include "xfa/include/fxfa/xfa_ffapp.h" 24 #include "xfa/include/fxfa/xfa_ffapp.h"
25 #include "xfa/include/fxfa/xfa_ffdocview.h" 25 #include "xfa/include/fxfa/xfa_ffdocview.h"
26 #include "xfa/include/fxfa/xfa_ffpageview.h" 26 #include "xfa/include/fxfa/xfa_ffpageview.h"
27 #include "xfa/include/fxfa/xfa_ffwidget.h"
27 #endif // PDF_ENABLE_XFA 28 #endif // PDF_ENABLE_XFA
28 29
29 namespace { 30 namespace {
30 31
31 CPDFSDK_InterForm* FormHandleToInterForm(FPDF_FORMHANDLE hHandle) { 32 CPDFSDK_InterForm* FormHandleToInterForm(FPDF_FORMHANDLE hHandle) {
32 CPDFSDK_Document* pSDKDoc = CPDFSDK_Document::FromFPDFFormHandle(hHandle); 33 CPDFSDK_Document* pSDKDoc = CPDFSDK_Document::FromFPDFFormHandle(hHandle);
33 return pSDKDoc ? pSDKDoc->GetInterForm() : nullptr; 34 return pSDKDoc ? pSDKDoc->GetInterForm() : nullptr;
34 } 35 }
35 36
36 CPDFSDK_PageView* FormHandleToPageView(FPDF_FORMHANDLE hHandle, 37 CPDFSDK_PageView* FormHandleToPageView(FPDF_FORMHANDLE hHandle,
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 std::unique_ptr<IXFA_WidgetIterator, ReleaseDeleter<IXFA_WidgetIterator>> 94 std::unique_ptr<IXFA_WidgetIterator, ReleaseDeleter<IXFA_WidgetIterator>>
94 pWidgetIterator(pPageView->CreateWidgetIterator( 95 pWidgetIterator(pPageView->CreateWidgetIterator(
95 XFA_TRAVERSEWAY_Form, 96 XFA_TRAVERSEWAY_Form,
96 XFA_WIDGETFILTER_Viewable | XFA_WIDGETFILTER_AllType)); 97 XFA_WIDGETFILTER_Viewable | XFA_WIDGETFILTER_AllType));
97 if (!pWidgetIterator) 98 if (!pWidgetIterator)
98 return -1; 99 return -1;
99 100
100 CXFA_FFWidget* pXFAAnnot = pWidgetIterator->MoveToNext(); 101 CXFA_FFWidget* pXFAAnnot = pWidgetIterator->MoveToNext();
101 while (pXFAAnnot) { 102 while (pXFAAnnot) {
102 CFX_RectF rcBBox; 103 CFX_RectF rcBBox;
103 pWidgetHandler->GetBBox(pXFAAnnot, rcBBox, 0); 104 pXFAAnnot->GetBBox(rcBBox, 0);
104 CFX_FloatRect rcWidget(rcBBox.left, rcBBox.top, rcBBox.left + rcBBox.width, 105 CFX_FloatRect rcWidget(rcBBox.left, rcBBox.top, rcBBox.left + rcBBox.width,
105 rcBBox.top + rcBBox.height); 106 rcBBox.top + rcBBox.height);
106 rcWidget.left -= 1.0f; 107 rcWidget.left -= 1.0f;
107 rcWidget.right += 1.0f; 108 rcWidget.right += 1.0f;
108 rcWidget.bottom -= 1.0f; 109 rcWidget.bottom -= 1.0f;
109 rcWidget.top += 1.0f; 110 rcWidget.top += 1.0f;
110 111
111 if (rcWidget.Contains(static_cast<FX_FLOAT>(page_x), 112 if (rcWidget.Contains(static_cast<FX_FLOAT>(page_x),
112 static_cast<FX_FLOAT>(page_y))) { 113 static_cast<FX_FLOAT>(page_y))) {
113 return FPDF_FORMFIELD_XFA; 114 return FPDF_FORMFIELD_XFA;
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 int rotate, 406 int rotate,
406 int flags) { 407 int flags) {
407 FFLCommon(hHandle, nullptr, recorder, page, start_x, start_y, size_x, size_y, 408 FFLCommon(hHandle, nullptr, recorder, page, start_x, start_y, size_x, size_y,
408 rotate, flags); 409 rotate, flags);
409 } 410 }
410 #endif 411 #endif
411 412
412 #ifdef PDF_ENABLE_XFA 413 #ifdef PDF_ENABLE_XFA
413 DLLEXPORT void STDCALL FPDF_Widget_Undo(FPDF_DOCUMENT document, 414 DLLEXPORT void STDCALL FPDF_Widget_Undo(FPDF_DOCUMENT document,
414 FPDF_WIDGET hWidget) { 415 FPDF_WIDGET hWidget) {
415 if (NULL == hWidget || NULL == document) 416 if (!hWidget || !document)
416 return; 417 return;
417 418
418 CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document; 419 CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
419 if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic && 420 if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic &&
420 pDocument->GetDocType() != XFA_DOCTYPE_Static) 421 pDocument->GetDocType() != XFA_DOCTYPE_Static)
421 return; 422 return;
422 423
423 CXFA_FFMenuHandler* pXFAMenuHander = 424 static_cast<CXFA_FFWidget*>(hWidget)->Undo();
424 CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
425 if (pXFAMenuHander == NULL)
426 return;
427
428 pXFAMenuHander->Undo((CXFA_FFWidget*)hWidget);
429 } 425 }
430 DLLEXPORT void STDCALL FPDF_Widget_Redo(FPDF_DOCUMENT document, 426 DLLEXPORT void STDCALL FPDF_Widget_Redo(FPDF_DOCUMENT document,
431 FPDF_WIDGET hWidget) { 427 FPDF_WIDGET hWidget) {
432 if (NULL == hWidget || NULL == document) 428 if (!hWidget || !document)
433 return; 429 return;
434 430
435 CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document; 431 CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
436 if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic && 432 if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic &&
437 pDocument->GetDocType() != XFA_DOCTYPE_Static) 433 pDocument->GetDocType() != XFA_DOCTYPE_Static)
438 return; 434 return;
439 435
440 CXFA_FFMenuHandler* pXFAMenuHander = 436 static_cast<CXFA_FFWidget*>(hWidget)->Redo();
441 CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
442 if (pXFAMenuHander == NULL)
443 return;
444
445 pXFAMenuHander->Redo((CXFA_FFWidget*)hWidget);
446 } 437 }
447 438
448 DLLEXPORT void STDCALL FPDF_Widget_SelectAll(FPDF_DOCUMENT document, 439 DLLEXPORT void STDCALL FPDF_Widget_SelectAll(FPDF_DOCUMENT document,
449 FPDF_WIDGET hWidget) { 440 FPDF_WIDGET hWidget) {
450 if (NULL == hWidget || NULL == document) 441 if (!hWidget || !document)
451 return; 442 return;
452 443
453 CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document; 444 CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
454 if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic && 445 if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic &&
455 pDocument->GetDocType() != XFA_DOCTYPE_Static) 446 pDocument->GetDocType() != XFA_DOCTYPE_Static)
456 return; 447 return;
457 448
458 CXFA_FFMenuHandler* pXFAMenuHander = 449 static_cast<CXFA_FFWidget*>(hWidget)->SelectAll();
459 CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
460 if (pXFAMenuHander == NULL)
461 return;
462
463 pXFAMenuHander->SelectAll((CXFA_FFWidget*)hWidget);
464 } 450 }
465 DLLEXPORT void STDCALL FPDF_Widget_Copy(FPDF_DOCUMENT document, 451 DLLEXPORT void STDCALL FPDF_Widget_Copy(FPDF_DOCUMENT document,
466 FPDF_WIDGET hWidget, 452 FPDF_WIDGET hWidget,
467 FPDF_WIDESTRING wsText, 453 FPDF_WIDESTRING wsText,
468 FPDF_DWORD* size) { 454 FPDF_DWORD* size) {
469 if (NULL == hWidget || NULL == document) 455 if (!hWidget || !document)
470 return; 456 return;
471 457
472 CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document; 458 CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
473 if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic && 459 if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic &&
474 pDocument->GetDocType() != XFA_DOCTYPE_Static) 460 pDocument->GetDocType() != XFA_DOCTYPE_Static)
475 return; 461 return;
476 462
477 CXFA_FFMenuHandler* pXFAMenuHander =
478 CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
479 if (pXFAMenuHander == NULL)
480 return;
481
482 CFX_WideString wsCpText; 463 CFX_WideString wsCpText;
483 pXFAMenuHander->Copy((CXFA_FFWidget*)hWidget, wsCpText); 464 static_cast<CXFA_FFWidget*>(hWidget)->Copy(wsCpText);
484 465
485 CFX_ByteString bsCpText = wsCpText.UTF16LE_Encode(); 466 CFX_ByteString bsCpText = wsCpText.UTF16LE_Encode();
486 uint32_t len = bsCpText.GetLength() / sizeof(unsigned short); 467 uint32_t len = bsCpText.GetLength() / sizeof(unsigned short);
487 if (wsText == NULL) { 468 if (wsText == NULL) {
488 *size = len; 469 *size = len;
489 return; 470 return;
490 } 471 }
491 472
492 uint32_t real_size = len < *size ? len : *size; 473 uint32_t real_size = len < *size ? len : *size;
493 if (real_size > 0) { 474 if (real_size > 0) {
494 FXSYS_memcpy((void*)wsText, 475 FXSYS_memcpy((void*)wsText,
495 bsCpText.GetBuffer(real_size * sizeof(unsigned short)), 476 bsCpText.GetBuffer(real_size * sizeof(unsigned short)),
496 real_size * sizeof(unsigned short)); 477 real_size * sizeof(unsigned short));
497 bsCpText.ReleaseBuffer(real_size * sizeof(unsigned short)); 478 bsCpText.ReleaseBuffer(real_size * sizeof(unsigned short));
498 } 479 }
499 *size = real_size; 480 *size = real_size;
500 } 481 }
501 482
502 DLLEXPORT void STDCALL FPDF_Widget_Cut(FPDF_DOCUMENT document, 483 DLLEXPORT void STDCALL FPDF_Widget_Cut(FPDF_DOCUMENT document,
503 FPDF_WIDGET hWidget, 484 FPDF_WIDGET hWidget,
504 FPDF_WIDESTRING wsText, 485 FPDF_WIDESTRING wsText,
505 FPDF_DWORD* size) { 486 FPDF_DWORD* size) {
506 if (NULL == hWidget || NULL == document) 487 if (NULL == hWidget || NULL == document)
507 return; 488 return;
508 CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document; 489 CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
509 if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic && 490 if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic &&
510 pDocument->GetDocType() != XFA_DOCTYPE_Static) 491 pDocument->GetDocType() != XFA_DOCTYPE_Static)
511 return; 492 return;
512 493
513 CXFA_FFMenuHandler* pXFAMenuHander =
514 CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
515 if (pXFAMenuHander == NULL)
516 return;
517
518 CFX_WideString wsCpText; 494 CFX_WideString wsCpText;
519 pXFAMenuHander->Cut((CXFA_FFWidget*)hWidget, wsCpText); 495 static_cast<CXFA_FFWidget*>(hWidget)->Cut(wsCpText);
520 496
521 CFX_ByteString bsCpText = wsCpText.UTF16LE_Encode(); 497 CFX_ByteString bsCpText = wsCpText.UTF16LE_Encode();
522 uint32_t len = bsCpText.GetLength() / sizeof(unsigned short); 498 uint32_t len = bsCpText.GetLength() / sizeof(unsigned short);
523 if (wsText == NULL) { 499 if (!wsText) {
524 *size = len; 500 *size = len;
525 return; 501 return;
526 } 502 }
527 503
528 uint32_t real_size = len < *size ? len : *size; 504 uint32_t real_size = len < *size ? len : *size;
529 if (real_size > 0) { 505 if (real_size > 0) {
530 FXSYS_memcpy((void*)wsText, 506 FXSYS_memcpy((void*)wsText,
531 bsCpText.GetBuffer(real_size * sizeof(unsigned short)), 507 bsCpText.GetBuffer(real_size * sizeof(unsigned short)),
532 real_size * sizeof(unsigned short)); 508 real_size * sizeof(unsigned short));
533 bsCpText.ReleaseBuffer(real_size * sizeof(unsigned short)); 509 bsCpText.ReleaseBuffer(real_size * sizeof(unsigned short));
534 } 510 }
535 *size = real_size; 511 *size = real_size;
536 } 512 }
537 513
538 DLLEXPORT void STDCALL FPDF_Widget_Paste(FPDF_DOCUMENT document, 514 DLLEXPORT void STDCALL FPDF_Widget_Paste(FPDF_DOCUMENT document,
539 FPDF_WIDGET hWidget, 515 FPDF_WIDGET hWidget,
540 FPDF_WIDESTRING wsText, 516 FPDF_WIDESTRING wsText,
541 FPDF_DWORD size) { 517 FPDF_DWORD size) {
542 if (NULL == hWidget || NULL == document) 518 if (!hWidget || !document)
543 return; 519 return;
544 520
545 CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document; 521 CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
546 if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic && 522 if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic &&
547 pDocument->GetDocType() != XFA_DOCTYPE_Static) 523 pDocument->GetDocType() != XFA_DOCTYPE_Static)
548 return; 524 return;
549 525
550 CXFA_FFMenuHandler* pXFAMenuHander =
551 CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
552 if (pXFAMenuHander == NULL)
553 return;
554
555 CFX_WideString wstr = CFX_WideString::FromUTF16LE(wsText, size); 526 CFX_WideString wstr = CFX_WideString::FromUTF16LE(wsText, size);
556 pXFAMenuHander->Paste((CXFA_FFWidget*)hWidget, wstr); 527 static_cast<CXFA_FFWidget*>(hWidget)->Paste(wstr);
557 } 528 }
558 529
559 DLLEXPORT void STDCALL 530 DLLEXPORT void STDCALL
560 FPDF_Widget_ReplaceSpellCheckWord(FPDF_DOCUMENT document, 531 FPDF_Widget_ReplaceSpellCheckWord(FPDF_DOCUMENT document,
561 FPDF_WIDGET hWidget, 532 FPDF_WIDGET hWidget,
562 float x, 533 float x,
563 float y, 534 float y,
564 FPDF_BYTESTRING bsText) { 535 FPDF_BYTESTRING bsText) {
565 if (NULL == hWidget || NULL == document) 536 if (!hWidget || !document)
566 return; 537 return;
567 538
568 CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document; 539 CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
569 if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic && 540 if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic &&
570 pDocument->GetDocType() != XFA_DOCTYPE_Static) 541 pDocument->GetDocType() != XFA_DOCTYPE_Static)
571 return; 542 return;
572 543
573 CXFA_FFMenuHandler* pXFAMenuHander =
574 CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
575 if (pXFAMenuHander == NULL)
576 return;
577
578 CFX_PointF ptPopup; 544 CFX_PointF ptPopup;
579 ptPopup.x = x; 545 ptPopup.x = x;
580 ptPopup.y = y; 546 ptPopup.y = y;
581 CFX_ByteStringC bs(bsText); 547 CFX_ByteStringC bs(bsText);
582 pXFAMenuHander->ReplaceSpellCheckWord( 548 static_cast<CXFA_FFWidget*>(hWidget)->ReplaceSpellCheckWord(ptPopup, bs);
583 reinterpret_cast<CXFA_FFWidget*>(hWidget), ptPopup, bs);
584 } 549 }
585 550
586 DLLEXPORT void STDCALL 551 DLLEXPORT void STDCALL
587 FPDF_Widget_GetSpellCheckWords(FPDF_DOCUMENT document, 552 FPDF_Widget_GetSpellCheckWords(FPDF_DOCUMENT document,
588 FPDF_WIDGET hWidget, 553 FPDF_WIDGET hWidget,
589 float x, 554 float x,
590 float y, 555 float y,
591 FPDF_STRINGHANDLE* stringHandle) { 556 FPDF_STRINGHANDLE* stringHandle) {
592 if (!hWidget || !document) 557 if (!hWidget || !document)
593 return; 558 return;
594 559
595 CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document; 560 CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
596 if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic && 561 if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic &&
597 pDocument->GetDocType() != XFA_DOCTYPE_Static) 562 pDocument->GetDocType() != XFA_DOCTYPE_Static)
598 return; 563 return;
599 564
600 CXFA_FFMenuHandler* pXFAMenuHander =
601 CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
602 if (!pXFAMenuHander)
603 return;
604
605 std::vector<CFX_ByteString>* sSuggestWords = new std::vector<CFX_ByteString>; 565 std::vector<CFX_ByteString>* sSuggestWords = new std::vector<CFX_ByteString>;
606 CFX_PointF ptPopup; 566 CFX_PointF ptPopup;
607 ptPopup.x = x; 567 ptPopup.x = x;
608 ptPopup.y = y; 568 ptPopup.y = y;
609 pXFAMenuHander->GetSuggestWords(reinterpret_cast<CXFA_FFWidget*>(hWidget), 569 static_cast<CXFA_FFWidget*>(hWidget)
610 ptPopup, *sSuggestWords); 570 ->GetSuggestWords(ptPopup, *sSuggestWords);
611 *stringHandle = ToFPDFStringHandle(sSuggestWords); 571 *stringHandle = ToFPDFStringHandle(sSuggestWords);
612 } 572 }
613 573
614 DLLEXPORT int STDCALL FPDF_StringHandleCounts(FPDF_STRINGHANDLE sHandle) { 574 DLLEXPORT int STDCALL FPDF_StringHandleCounts(FPDF_STRINGHANDLE sHandle) {
615 std::vector<CFX_ByteString>* sSuggestWords = FromFPDFStringHandle(sHandle); 575 std::vector<CFX_ByteString>* sSuggestWords = FromFPDFStringHandle(sHandle);
616 return sSuggestWords ? pdfium::CollectionSize<int>(*sSuggestWords) : -1; 576 return sSuggestWords ? pdfium::CollectionSize<int>(*sSuggestWords) : -1;
617 } 577 }
618 578
619 DLLEXPORT FPDF_BOOL STDCALL 579 DLLEXPORT FPDF_BOOL STDCALL
620 FPDF_StringHandleGetStringByIndex(FPDF_STRINGHANDLE sHandle, 580 FPDF_StringHandleGetStringByIndex(FPDF_STRINGHANDLE sHandle,
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
759 pActionHandler->DoAction_Page(action, CPDF_AAction::OpenPage, pSDKDoc); 719 pActionHandler->DoAction_Page(action, CPDF_AAction::OpenPage, pSDKDoc);
760 } 720 }
761 } else { 721 } else {
762 if (aa.ActionExist(CPDF_AAction::ClosePage)) { 722 if (aa.ActionExist(CPDF_AAction::ClosePage)) {
763 CPDF_Action action = aa.GetAction(CPDF_AAction::ClosePage); 723 CPDF_Action action = aa.GetAction(CPDF_AAction::ClosePage);
764 pActionHandler->DoAction_Page(action, CPDF_AAction::ClosePage, pSDKDoc); 724 pActionHandler->DoAction_Page(action, CPDF_AAction::ClosePage, pSDKDoc);
765 } 725 }
766 } 726 }
767 } 727 }
768 } 728 }
OLDNEW
« no previous file with comments | « BUILD.gn ('k') | fpdfsdk/fpdfsave.cpp » ('j') | fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698