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/fsdk_actionhandler.h" | 7 #include "fpdfsdk/fsdk_actionhandler.h" |
8 | 8 |
9 #include <set> | 9 #include <set> |
10 | 10 |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 FX_BOOL CPDFSDK_ActionHandler::ExecuteLinkAction( | 141 FX_BOOL CPDFSDK_ActionHandler::ExecuteLinkAction( |
142 const CPDF_Action& action, | 142 const CPDF_Action& action, |
143 CPDFSDK_Document* pDocument, | 143 CPDFSDK_Document* pDocument, |
144 std::set<CPDF_Dictionary*>* visited) { | 144 std::set<CPDF_Dictionary*>* visited) { |
145 CPDF_Dictionary* pDict = action.GetDict(); | 145 CPDF_Dictionary* pDict = action.GetDict(); |
146 if (pdfium::ContainsKey(*visited, pDict)) | 146 if (pdfium::ContainsKey(*visited, pDict)) |
147 return FALSE; | 147 return FALSE; |
148 | 148 |
149 visited->insert(pDict); | 149 visited->insert(pDict); |
150 | 150 |
151 CPDFSDK_FormFillEnvironment* pEnv = pDocument->GetEnv(); | 151 CPDFSDK_FormFillEnvironment* pFormFillEnv = pDocument->GetEnv(); |
152 ASSERT(pEnv); | 152 ASSERT(pFormFillEnv); |
153 if (action.GetType() == CPDF_Action::JavaScript) { | 153 if (action.GetType() == CPDF_Action::JavaScript) { |
154 if (pEnv->IsJSInitiated()) { | 154 if (pFormFillEnv->IsJSInitiated()) { |
155 CFX_WideString swJS = action.GetJavaScript(); | 155 CFX_WideString swJS = action.GetJavaScript(); |
156 if (!swJS.IsEmpty()) { | 156 if (!swJS.IsEmpty()) { |
157 IJS_Runtime* pRuntime = pDocument->GetJsRuntime(); | 157 IJS_Runtime* pRuntime = pFormFillEnv->GetJSRuntime(); |
158 pRuntime->SetReaderDocument(pDocument); | 158 pRuntime->SetReaderDocument(pDocument); |
159 | 159 |
160 IJS_Context* pContext = pRuntime->NewContext(); | 160 IJS_Context* pContext = pRuntime->NewContext(); |
161 pContext->OnLink_MouseUp(pDocument); | 161 pContext->OnLink_MouseUp(pFormFillEnv); |
162 | 162 |
163 CFX_WideString csInfo; | 163 CFX_WideString csInfo; |
164 FX_BOOL bRet = pContext->RunScript(swJS, &csInfo); | 164 FX_BOOL bRet = pContext->RunScript(swJS, &csInfo); |
165 if (!bRet) { | 165 if (!bRet) { |
166 // FIXME: return error. | 166 // FIXME: return error. |
167 } | 167 } |
168 | 168 |
169 pRuntime->ReleaseContext(pContext); | 169 pRuntime->ReleaseContext(pContext); |
170 } | 170 } |
171 } | 171 } |
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
527 pRuntime->ReleaseContext(pContext); | 527 pRuntime->ReleaseContext(pContext); |
528 } | 528 } |
529 | 529 |
530 void CPDFSDK_ActionHandler::RunDocumentOpenJavaScript( | 530 void CPDFSDK_ActionHandler::RunDocumentOpenJavaScript( |
531 CPDFSDK_Document* pDocument, | 531 CPDFSDK_Document* pDocument, |
532 const CFX_WideString& sScriptName, | 532 const CFX_WideString& sScriptName, |
533 const CFX_WideString& script) { | 533 const CFX_WideString& script) { |
534 IJS_Runtime* pRuntime = pDocument->GetJsRuntime(); | 534 IJS_Runtime* pRuntime = pDocument->GetJsRuntime(); |
535 pRuntime->SetReaderDocument(pDocument); | 535 pRuntime->SetReaderDocument(pDocument); |
536 IJS_Context* pContext = pRuntime->NewContext(); | 536 IJS_Context* pContext = pRuntime->NewContext(); |
537 pContext->OnDoc_Open(pDocument, sScriptName); | 537 pContext->OnDoc_Open(pDocument->GetEnv(), sScriptName); |
538 | 538 |
539 CFX_WideString csInfo; | 539 CFX_WideString csInfo; |
540 FX_BOOL bRet = pContext->RunScript(script, &csInfo); | 540 FX_BOOL bRet = pContext->RunScript(script, &csInfo); |
541 if (!bRet) { | 541 if (!bRet) { |
542 // FIXME: return error. | 542 // FIXME: return error. |
543 } | 543 } |
544 | 544 |
545 pRuntime->ReleaseContext(pContext); | 545 pRuntime->ReleaseContext(pContext); |
546 } | 546 } |
547 | 547 |
548 void CPDFSDK_ActionHandler::RunDocumentPageJavaScript( | 548 void CPDFSDK_ActionHandler::RunDocumentPageJavaScript( |
549 CPDFSDK_Document* pDocument, | 549 CPDFSDK_Document* pDocument, |
550 CPDF_AAction::AActionType type, | 550 CPDF_AAction::AActionType type, |
551 const CFX_WideString& script) { | 551 const CFX_WideString& script) { |
552 IJS_Runtime* pRuntime = pDocument->GetJsRuntime(); | 552 IJS_Runtime* pRuntime = pDocument->GetJsRuntime(); |
553 pRuntime->SetReaderDocument(pDocument); | 553 pRuntime->SetReaderDocument(pDocument); |
554 | 554 |
555 IJS_Context* pContext = pRuntime->NewContext(); | 555 IJS_Context* pContext = pRuntime->NewContext(); |
556 switch (type) { | 556 switch (type) { |
557 case CPDF_AAction::OpenPage: | 557 case CPDF_AAction::OpenPage: |
558 pContext->OnPage_Open(pDocument); | 558 pContext->OnPage_Open(pDocument->GetEnv()); |
559 break; | 559 break; |
560 case CPDF_AAction::ClosePage: | 560 case CPDF_AAction::ClosePage: |
561 pContext->OnPage_Close(pDocument); | 561 pContext->OnPage_Close(pDocument->GetEnv()); |
562 break; | 562 break; |
563 case CPDF_AAction::CloseDocument: | 563 case CPDF_AAction::CloseDocument: |
564 pContext->OnDoc_WillClose(pDocument); | 564 pContext->OnDoc_WillClose(pDocument->GetEnv()); |
565 break; | 565 break; |
566 case CPDF_AAction::SaveDocument: | 566 case CPDF_AAction::SaveDocument: |
567 pContext->OnDoc_WillSave(pDocument); | 567 pContext->OnDoc_WillSave(pDocument->GetEnv()); |
568 break; | 568 break; |
569 case CPDF_AAction::DocumentSaved: | 569 case CPDF_AAction::DocumentSaved: |
570 pContext->OnDoc_DidSave(pDocument); | 570 pContext->OnDoc_DidSave(pDocument->GetEnv()); |
571 break; | 571 break; |
572 case CPDF_AAction::PrintDocument: | 572 case CPDF_AAction::PrintDocument: |
573 pContext->OnDoc_WillPrint(pDocument); | 573 pContext->OnDoc_WillPrint(pDocument->GetEnv()); |
574 break; | 574 break; |
575 case CPDF_AAction::DocumentPrinted: | 575 case CPDF_AAction::DocumentPrinted: |
576 pContext->OnDoc_DidPrint(pDocument); | 576 pContext->OnDoc_DidPrint(pDocument->GetEnv()); |
577 break; | 577 break; |
578 case CPDF_AAction::PageVisible: | 578 case CPDF_AAction::PageVisible: |
579 pContext->OnPage_InView(pDocument); | 579 pContext->OnPage_InView(pDocument->GetEnv()); |
580 break; | 580 break; |
581 case CPDF_AAction::PageInvisible: | 581 case CPDF_AAction::PageInvisible: |
582 pContext->OnPage_OutView(pDocument); | 582 pContext->OnPage_OutView(pDocument->GetEnv()); |
583 break; | 583 break; |
584 default: | 584 default: |
585 ASSERT(FALSE); | 585 ASSERT(FALSE); |
586 break; | 586 break; |
587 } | 587 } |
588 | 588 |
589 CFX_WideString csInfo; | 589 CFX_WideString csInfo; |
590 FX_BOOL bRet = pContext->RunScript(script, &csInfo); | 590 FX_BOOL bRet = pContext->RunScript(script, &csInfo); |
591 if (!bRet) { | 591 if (!bRet) { |
592 // FIXME: return error. | 592 // FIXME: return error. |
(...skipping 30 matching lines...) Expand all Loading... |
623 const CPDF_Action& action, | 623 const CPDF_Action& action, |
624 CPDFSDK_Document* pDocument) { | 624 CPDFSDK_Document* pDocument) { |
625 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); | 625 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); |
626 if (pInterForm->DoAction_ImportData(action)) { | 626 if (pInterForm->DoAction_ImportData(action)) { |
627 pDocument->SetChangeMark(); | 627 pDocument->SetChangeMark(); |
628 return TRUE; | 628 return TRUE; |
629 } | 629 } |
630 | 630 |
631 return FALSE; | 631 return FALSE; |
632 } | 632 } |
OLD | NEW |