John Abd-El-Malek | 3f3b45c | 2014-05-23 17:28:10 -0700 | [diff] [blame] | 1 | // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
Lei Zhang | a6d9f0e | 2015-06-13 00:48:38 -0700 | [diff] [blame] | 4 | |
John Abd-El-Malek | 3f3b45c | 2014-05-23 17:28:10 -0700 | [diff] [blame] | 5 | // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | |
Tom Sepez | 19922bb | 2015-05-28 13:23:12 -0700 | [diff] [blame] | 7 | #ifndef FPDFSDK_INCLUDE_FSDK_ACTIONHANDLER_H_ |
| 8 | #define FPDFSDK_INCLUDE_FSDK_ACTIONHANDLER_H_ |
John Abd-El-Malek | 3f3b45c | 2014-05-23 17:28:10 -0700 | [diff] [blame] | 9 | |
Lei Zhang | aa8bf7e | 2015-12-24 19:13:32 -0800 | [diff] [blame] | 10 | #include <memory> |
Tom Sepez | 6c7508b | 2016-01-20 14:59:25 -0800 | [diff] [blame] | 11 | #include <set> |
Lei Zhang | aa8bf7e | 2015-12-24 19:13:32 -0800 | [diff] [blame] | 12 | |
Dan Sinclair | a8a28e0 | 2016-03-23 15:41:39 -0400 | [diff] [blame] | 13 | #include "core/fxcrt/include/fx_string.h" |
Dan Sinclair | efbc191 | 2016-02-17 16:54:43 -0500 | [diff] [blame] | 14 | #include "fpdfsdk/include/fsdk_baseform.h" |
John Abd-El-Malek | 3f3b45c | 2014-05-23 17:28:10 -0700 | [diff] [blame] | 15 | |
Tom Sepez | 245c80e | 2015-04-08 16:19:33 -0700 | [diff] [blame] | 16 | class CPDFSDK_Annot; |
| 17 | class CPDFSDK_Document; |
| 18 | class CPDF_Bookmark; |
| 19 | class CPDF_Dictionary; |
John Abd-El-Malek | 3f3b45c | 2014-05-23 17:28:10 -0700 | [diff] [blame] | 20 | |
Nico Weber | 9d8ec5a | 2015-08-04 13:00:21 -0700 | [diff] [blame] | 21 | class CPDFSDK_ActionHandler { |
| 22 | public: |
Nico Weber | 9d8ec5a | 2015-08-04 13:00:21 -0700 | [diff] [blame] | 23 | FX_BOOL DoAction_DocOpen(const CPDF_Action& action, |
| 24 | CPDFSDK_Document* pDocument); |
| 25 | FX_BOOL DoAction_JavaScript(const CPDF_Action& JsAction, |
| 26 | CFX_WideString csJSName, |
| 27 | CPDFSDK_Document* pDocument); |
| 28 | FX_BOOL DoAction_Page(const CPDF_Action& action, |
| 29 | enum CPDF_AAction::AActionType eType, |
| 30 | CPDFSDK_Document* pDocument); |
| 31 | FX_BOOL DoAction_Document(const CPDF_Action& action, |
| 32 | enum CPDF_AAction::AActionType eType, |
| 33 | CPDFSDK_Document* pDocument); |
| 34 | FX_BOOL DoAction_BookMark(CPDF_Bookmark* pBookMark, |
| 35 | const CPDF_Action& action, |
| 36 | CPDF_AAction::AActionType type, |
| 37 | CPDFSDK_Document* pDocument); |
| 38 | FX_BOOL DoAction_Screen(const CPDF_Action& action, |
| 39 | CPDF_AAction::AActionType type, |
| 40 | CPDFSDK_Document* pDocument, |
| 41 | CPDFSDK_Annot* pScreen); |
| 42 | FX_BOOL DoAction_Link(const CPDF_Action& action, CPDFSDK_Document* pDocument); |
| 43 | FX_BOOL DoAction_Field(const CPDF_Action& action, |
| 44 | CPDF_AAction::AActionType type, |
| 45 | CPDFSDK_Document* pDocument, |
| 46 | CPDF_FormField* pFormField, |
| 47 | PDFSDK_FieldAction& data); |
| 48 | FX_BOOL DoAction_FieldJavaScript(const CPDF_Action& JsAction, |
| 49 | CPDF_AAction::AActionType type, |
| 50 | CPDFSDK_Document* pDocument, |
| 51 | CPDF_FormField* pFormField, |
| 52 | PDFSDK_FieldAction& data); |
Lei Zhang | a6d9f0e | 2015-06-13 00:48:38 -0700 | [diff] [blame] | 53 | |
Nico Weber | 9d8ec5a | 2015-08-04 13:00:21 -0700 | [diff] [blame] | 54 | private: |
| 55 | FX_BOOL ExecuteDocumentOpenAction(const CPDF_Action& action, |
| 56 | CPDFSDK_Document* pDocument, |
Tom Sepez | 6c7508b | 2016-01-20 14:59:25 -0800 | [diff] [blame] | 57 | std::set<CPDF_Dictionary*>* visited); |
Nico Weber | 9d8ec5a | 2015-08-04 13:00:21 -0700 | [diff] [blame] | 58 | FX_BOOL ExecuteDocumentPageAction(const CPDF_Action& action, |
| 59 | CPDF_AAction::AActionType type, |
| 60 | CPDFSDK_Document* pDocument, |
Tom Sepez | 6c7508b | 2016-01-20 14:59:25 -0800 | [diff] [blame] | 61 | std::set<CPDF_Dictionary*>* visited); |
Nico Weber | 9d8ec5a | 2015-08-04 13:00:21 -0700 | [diff] [blame] | 62 | FX_BOOL ExecuteFieldAction(const CPDF_Action& action, |
| 63 | CPDF_AAction::AActionType type, |
| 64 | CPDFSDK_Document* pDocument, |
| 65 | CPDF_FormField* pFormField, |
| 66 | PDFSDK_FieldAction& data, |
Tom Sepez | 6c7508b | 2016-01-20 14:59:25 -0800 | [diff] [blame] | 67 | std::set<CPDF_Dictionary*>* visited); |
Nico Weber | 9d8ec5a | 2015-08-04 13:00:21 -0700 | [diff] [blame] | 68 | FX_BOOL ExecuteScreenAction(const CPDF_Action& action, |
| 69 | CPDF_AAction::AActionType type, |
| 70 | CPDFSDK_Document* pDocument, |
| 71 | CPDFSDK_Annot* pScreen, |
Tom Sepez | 6c7508b | 2016-01-20 14:59:25 -0800 | [diff] [blame] | 72 | std::set<CPDF_Dictionary*>* visited); |
Nico Weber | 9d8ec5a | 2015-08-04 13:00:21 -0700 | [diff] [blame] | 73 | FX_BOOL ExecuteBookMark(const CPDF_Action& action, |
| 74 | CPDFSDK_Document* pDocument, |
| 75 | CPDF_Bookmark* pBookmark, |
Tom Sepez | 6c7508b | 2016-01-20 14:59:25 -0800 | [diff] [blame] | 76 | std::set<CPDF_Dictionary*>* visited); |
Nico Weber | 9d8ec5a | 2015-08-04 13:00:21 -0700 | [diff] [blame] | 77 | FX_BOOL ExecuteLinkAction(const CPDF_Action& action, |
| 78 | CPDFSDK_Document* pDocument, |
Tom Sepez | 6c7508b | 2016-01-20 14:59:25 -0800 | [diff] [blame] | 79 | std::set<CPDF_Dictionary*>* visited); |
Lei Zhang | a6d9f0e | 2015-06-13 00:48:38 -0700 | [diff] [blame] | 80 | |
Nico Weber | 9d8ec5a | 2015-08-04 13:00:21 -0700 | [diff] [blame] | 81 | void DoAction_NoJs(const CPDF_Action& action, CPDFSDK_Document* pDocument); |
| 82 | void RunDocumentPageJavaScript(CPDFSDK_Document* pDocument, |
| 83 | CPDF_AAction::AActionType type, |
| 84 | const CFX_WideString& script); |
| 85 | void RunDocumentOpenJavaScript(CPDFSDK_Document* pDocument, |
| 86 | const CFX_WideString& sScriptName, |
| 87 | const CFX_WideString& script); |
| 88 | void RunFieldJavaScript(CPDFSDK_Document* pDocument, |
| 89 | CPDF_FormField* pFormField, |
| 90 | CPDF_AAction::AActionType type, |
| 91 | PDFSDK_FieldAction& data, |
| 92 | const CFX_WideString& script); |
Lei Zhang | a6d9f0e | 2015-06-13 00:48:38 -0700 | [diff] [blame] | 93 | |
Nico Weber | 9d8ec5a | 2015-08-04 13:00:21 -0700 | [diff] [blame] | 94 | FX_BOOL IsValidField(CPDFSDK_Document* pDocument, |
| 95 | CPDF_Dictionary* pFieldDict); |
| 96 | FX_BOOL IsValidDocView(CPDFSDK_Document* pDocument); |
Lei Zhang | a6d9f0e | 2015-06-13 00:48:38 -0700 | [diff] [blame] | 97 | |
Nico Weber | 9d8ec5a | 2015-08-04 13:00:21 -0700 | [diff] [blame] | 98 | void DoAction_GoTo(CPDFSDK_Document* pDocument, const CPDF_Action& action); |
| 99 | void DoAction_GoToR(CPDFSDK_Document* pDocument, const CPDF_Action& action); |
| 100 | void DoAction_Launch(CPDFSDK_Document* pDocument, const CPDF_Action& action); |
| 101 | void DoAction_URI(CPDFSDK_Document* pDocument, const CPDF_Action& action); |
| 102 | void DoAction_Named(CPDFSDK_Document* pDocument, const CPDF_Action& action); |
| 103 | void DoAction_SetOCGState(CPDFSDK_Document* pDocument, |
| 104 | const CPDF_Action& action); |
Lei Zhang | a6d9f0e | 2015-06-13 00:48:38 -0700 | [diff] [blame] | 105 | |
tonikitoo | f4dc38b | 2016-08-09 17:07:54 -0700 | [diff] [blame^] | 106 | FX_BOOL DoAction_Hide(const CPDF_Action& action, CPDFSDK_Document* pDocument); |
| 107 | FX_BOOL DoAction_SubmitForm(const CPDF_Action& action, |
| 108 | CPDFSDK_Document* pDocument); |
| 109 | FX_BOOL DoAction_ResetForm(const CPDF_Action& action, |
| 110 | CPDFSDK_Document* pDocument); |
| 111 | FX_BOOL DoAction_ImportData(const CPDF_Action& action, |
| 112 | CPDFSDK_Document* pDocument); |
John Abd-El-Malek | 3f3b45c | 2014-05-23 17:28:10 -0700 | [diff] [blame] | 113 | }; |
| 114 | |
Tom Sepez | 19922bb | 2015-05-28 13:23:12 -0700 | [diff] [blame] | 115 | #endif // FPDFSDK_INCLUDE_FSDK_ACTIONHANDLER_H_ |