| 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 #ifndef FPDFSDK_FSDK_ACTIONHANDLER_H_ | 7 #ifndef FPDFSDK_FSDK_ACTIONHANDLER_H_ |
| 8 #define FPDFSDK_FSDK_ACTIONHANDLER_H_ | 8 #define FPDFSDK_FSDK_ACTIONHANDLER_H_ |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| 11 #include <set> | 11 #include <set> |
| 12 | 12 |
| 13 #include "core/fpdfdoc/cpdf_aaction.h" | 13 #include "core/fpdfdoc/cpdf_aaction.h" |
| 14 #include "core/fpdfdoc/cpdf_action.h" | 14 #include "core/fpdfdoc/cpdf_action.h" |
| 15 #include "core/fxcrt/fx_string.h" | 15 #include "core/fxcrt/fx_string.h" |
| 16 #include "fpdfsdk/pdfsdk_fieldaction.h" | 16 #include "fpdfsdk/pdfsdk_fieldaction.h" |
| 17 | 17 |
| 18 class CPDFSDK_Annot; | 18 class CPDFSDK_Annot; |
| 19 class CPDFSDK_FormFillEnvironment; | 19 class CPDFSDK_FormFillEnvironment; |
| 20 class CPDF_Bookmark; | 20 class CPDF_Bookmark; |
| 21 class CPDF_Dictionary; | 21 class CPDF_Dictionary; |
| 22 class CPDF_FormField; | 22 class CPDF_FormField; |
| 23 | 23 |
| 24 class CPDFSDK_ActionHandler { | 24 class CPDFSDK_ActionHandler { |
| 25 public: | 25 public: |
| 26 FX_BOOL DoAction_DocOpen(const CPDF_Action& action, | 26 bool DoAction_DocOpen(const CPDF_Action& action, |
| 27 CPDFSDK_FormFillEnvironment* pFormFillEnv); |
| 28 bool DoAction_JavaScript(const CPDF_Action& JsAction, |
| 29 CFX_WideString csJSName, |
| 27 CPDFSDK_FormFillEnvironment* pFormFillEnv); | 30 CPDFSDK_FormFillEnvironment* pFormFillEnv); |
| 28 FX_BOOL DoAction_JavaScript(const CPDF_Action& JsAction, | 31 bool DoAction_Page(const CPDF_Action& action, |
| 29 CFX_WideString csJSName, | 32 enum CPDF_AAction::AActionType eType, |
| 30 CPDFSDK_FormFillEnvironment* pFormFillEnv); | 33 CPDFSDK_FormFillEnvironment* pFormFillEnv); |
| 31 FX_BOOL DoAction_Page(const CPDF_Action& action, | 34 bool DoAction_Document(const CPDF_Action& action, |
| 32 enum CPDF_AAction::AActionType eType, | 35 enum CPDF_AAction::AActionType eType, |
| 33 CPDFSDK_FormFillEnvironment* pFormFillEnv); | 36 CPDFSDK_FormFillEnvironment* pFormFillEnv); |
| 34 FX_BOOL DoAction_Document(const CPDF_Action& action, | 37 bool DoAction_BookMark(CPDF_Bookmark* pBookMark, |
| 35 enum CPDF_AAction::AActionType eType, | 38 const CPDF_Action& action, |
| 36 CPDFSDK_FormFillEnvironment* pFormFillEnv); | 39 CPDF_AAction::AActionType type, |
| 37 FX_BOOL DoAction_BookMark(CPDF_Bookmark* pBookMark, | 40 CPDFSDK_FormFillEnvironment* pFormFillEnv); |
| 38 const CPDF_Action& action, | 41 bool DoAction_Screen(const CPDF_Action& action, |
| 39 CPDF_AAction::AActionType type, | 42 CPDF_AAction::AActionType type, |
| 40 CPDFSDK_FormFillEnvironment* pFormFillEnv); | 43 CPDFSDK_FormFillEnvironment* pFormFillEnv, |
| 41 FX_BOOL DoAction_Screen(const CPDF_Action& action, | 44 CPDFSDK_Annot* pScreen); |
| 45 bool DoAction_Link(const CPDF_Action& action, |
| 46 CPDFSDK_FormFillEnvironment* pFormFillEnv); |
| 47 bool DoAction_Field(const CPDF_Action& action, |
| 48 CPDF_AAction::AActionType type, |
| 49 CPDFSDK_FormFillEnvironment* pFormFillEnv, |
| 50 CPDF_FormField* pFormField, |
| 51 PDFSDK_FieldAction& data); |
| 52 bool DoAction_FieldJavaScript(const CPDF_Action& JsAction, |
| 53 CPDF_AAction::AActionType type, |
| 54 CPDFSDK_FormFillEnvironment* pFormFillEnv, |
| 55 CPDF_FormField* pFormField, |
| 56 PDFSDK_FieldAction& data); |
| 57 |
| 58 private: |
| 59 bool ExecuteDocumentOpenAction(const CPDF_Action& action, |
| 60 CPDFSDK_FormFillEnvironment* pFormFillEnv, |
| 61 std::set<CPDF_Dictionary*>* visited); |
| 62 bool ExecuteDocumentPageAction(const CPDF_Action& action, |
| 63 CPDF_AAction::AActionType type, |
| 64 CPDFSDK_FormFillEnvironment* pFormFillEnv, |
| 65 std::set<CPDF_Dictionary*>* visited); |
| 66 bool ExecuteFieldAction(const CPDF_Action& action, |
| 42 CPDF_AAction::AActionType type, | 67 CPDF_AAction::AActionType type, |
| 43 CPDFSDK_FormFillEnvironment* pFormFillEnv, | 68 CPDFSDK_FormFillEnvironment* pFormFillEnv, |
| 44 CPDFSDK_Annot* pScreen); | 69 CPDF_FormField* pFormField, |
| 45 FX_BOOL DoAction_Link(const CPDF_Action& action, | 70 PDFSDK_FieldAction& data, |
| 46 CPDFSDK_FormFillEnvironment* pFormFillEnv); | 71 std::set<CPDF_Dictionary*>* visited); |
| 47 FX_BOOL DoAction_Field(const CPDF_Action& action, | 72 bool ExecuteScreenAction(const CPDF_Action& action, |
| 48 CPDF_AAction::AActionType type, | 73 CPDF_AAction::AActionType type, |
| 74 CPDFSDK_FormFillEnvironment* pFormFillEnv, |
| 75 CPDFSDK_Annot* pScreen, |
| 76 std::set<CPDF_Dictionary*>* visited); |
| 77 bool ExecuteBookMark(const CPDF_Action& action, |
| 78 CPDFSDK_FormFillEnvironment* pFormFillEnv, |
| 79 CPDF_Bookmark* pBookmark, |
| 80 std::set<CPDF_Dictionary*>* visited); |
| 81 bool ExecuteLinkAction(const CPDF_Action& action, |
| 49 CPDFSDK_FormFillEnvironment* pFormFillEnv, | 82 CPDFSDK_FormFillEnvironment* pFormFillEnv, |
| 50 CPDF_FormField* pFormField, | 83 std::set<CPDF_Dictionary*>* visited); |
| 51 PDFSDK_FieldAction& data); | |
| 52 FX_BOOL DoAction_FieldJavaScript(const CPDF_Action& JsAction, | |
| 53 CPDF_AAction::AActionType type, | |
| 54 CPDFSDK_FormFillEnvironment* pFormFillEnv, | |
| 55 CPDF_FormField* pFormField, | |
| 56 PDFSDK_FieldAction& data); | |
| 57 | |
| 58 private: | |
| 59 FX_BOOL ExecuteDocumentOpenAction(const CPDF_Action& action, | |
| 60 CPDFSDK_FormFillEnvironment* pFormFillEnv, | |
| 61 std::set<CPDF_Dictionary*>* visited); | |
| 62 FX_BOOL ExecuteDocumentPageAction(const CPDF_Action& action, | |
| 63 CPDF_AAction::AActionType type, | |
| 64 CPDFSDK_FormFillEnvironment* pFormFillEnv, | |
| 65 std::set<CPDF_Dictionary*>* visited); | |
| 66 FX_BOOL ExecuteFieldAction(const CPDF_Action& action, | |
| 67 CPDF_AAction::AActionType type, | |
| 68 CPDFSDK_FormFillEnvironment* pFormFillEnv, | |
| 69 CPDF_FormField* pFormField, | |
| 70 PDFSDK_FieldAction& data, | |
| 71 std::set<CPDF_Dictionary*>* visited); | |
| 72 FX_BOOL ExecuteScreenAction(const CPDF_Action& action, | |
| 73 CPDF_AAction::AActionType type, | |
| 74 CPDFSDK_FormFillEnvironment* pFormFillEnv, | |
| 75 CPDFSDK_Annot* pScreen, | |
| 76 std::set<CPDF_Dictionary*>* visited); | |
| 77 FX_BOOL ExecuteBookMark(const CPDF_Action& action, | |
| 78 CPDFSDK_FormFillEnvironment* pFormFillEnv, | |
| 79 CPDF_Bookmark* pBookmark, | |
| 80 std::set<CPDF_Dictionary*>* visited); | |
| 81 FX_BOOL ExecuteLinkAction(const CPDF_Action& action, | |
| 82 CPDFSDK_FormFillEnvironment* pFormFillEnv, | |
| 83 std::set<CPDF_Dictionary*>* visited); | |
| 84 | 84 |
| 85 void DoAction_NoJs(const CPDF_Action& action, | 85 void DoAction_NoJs(const CPDF_Action& action, |
| 86 CPDFSDK_FormFillEnvironment* pFormFillEnv); | 86 CPDFSDK_FormFillEnvironment* pFormFillEnv); |
| 87 void RunDocumentPageJavaScript(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 87 void RunDocumentPageJavaScript(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
| 88 CPDF_AAction::AActionType type, | 88 CPDF_AAction::AActionType type, |
| 89 const CFX_WideString& script); | 89 const CFX_WideString& script); |
| 90 void RunDocumentOpenJavaScript(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 90 void RunDocumentOpenJavaScript(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
| 91 const CFX_WideString& sScriptName, | 91 const CFX_WideString& sScriptName, |
| 92 const CFX_WideString& script); | 92 const CFX_WideString& script); |
| 93 void RunFieldJavaScript(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 93 void RunFieldJavaScript(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
| 94 CPDF_FormField* pFormField, | 94 CPDF_FormField* pFormField, |
| 95 CPDF_AAction::AActionType type, | 95 CPDF_AAction::AActionType type, |
| 96 PDFSDK_FieldAction& data, | 96 PDFSDK_FieldAction& data, |
| 97 const CFX_WideString& script); | 97 const CFX_WideString& script); |
| 98 | 98 |
| 99 FX_BOOL IsValidField(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 99 bool IsValidField(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
| 100 CPDF_Dictionary* pFieldDict); | 100 CPDF_Dictionary* pFieldDict); |
| 101 FX_BOOL IsValidDocView(CPDFSDK_FormFillEnvironment* pFormFillEnv); | 101 bool IsValidDocView(CPDFSDK_FormFillEnvironment* pFormFillEnv); |
| 102 | 102 |
| 103 void DoAction_GoTo(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 103 void DoAction_GoTo(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
| 104 const CPDF_Action& action); | 104 const CPDF_Action& action); |
| 105 void DoAction_GoToR(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 105 void DoAction_GoToR(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
| 106 const CPDF_Action& action); | 106 const CPDF_Action& action); |
| 107 void DoAction_Launch(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 107 void DoAction_Launch(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
| 108 const CPDF_Action& action); | 108 const CPDF_Action& action); |
| 109 void DoAction_URI(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 109 void DoAction_URI(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
| 110 const CPDF_Action& action); | 110 const CPDF_Action& action); |
| 111 void DoAction_Named(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 111 void DoAction_Named(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
| 112 const CPDF_Action& action); | 112 const CPDF_Action& action); |
| 113 void DoAction_SetOCGState(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 113 void DoAction_SetOCGState(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
| 114 const CPDF_Action& action); | 114 const CPDF_Action& action); |
| 115 | 115 |
| 116 FX_BOOL DoAction_Hide(const CPDF_Action& action, | 116 bool DoAction_Hide(const CPDF_Action& action, |
| 117 CPDFSDK_FormFillEnvironment* pFormFillEnv); | 117 CPDFSDK_FormFillEnvironment* pFormFillEnv); |
| 118 FX_BOOL DoAction_SubmitForm(const CPDF_Action& action, | 118 bool DoAction_SubmitForm(const CPDF_Action& action, |
| 119 CPDFSDK_FormFillEnvironment* pFormFillEnv); | 119 CPDFSDK_FormFillEnvironment* pFormFillEnv); |
| 120 FX_BOOL DoAction_ResetForm(const CPDF_Action& action, | 120 bool DoAction_ResetForm(const CPDF_Action& action, |
| 121 CPDFSDK_FormFillEnvironment* pFormFillEnv); | 121 CPDFSDK_FormFillEnvironment* pFormFillEnv); |
| 122 FX_BOOL DoAction_ImportData(const CPDF_Action& action, | 122 bool DoAction_ImportData(const CPDF_Action& action, |
| 123 CPDFSDK_FormFillEnvironment* pFormFillEnv); | 123 CPDFSDK_FormFillEnvironment* pFormFillEnv); |
| 124 }; | 124 }; |
| 125 | 125 |
| 126 #endif // FPDFSDK_FSDK_ACTIONHANDLER_H_ | 126 #endif // FPDFSDK_FSDK_ACTIONHANDLER_H_ |
| OLD | NEW |