blob: 66ec69e06aaad5b01852217ab1300e548d1975a8 [file] [log] [blame]
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07001// 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 Zhanga6d9f0e2015-06-13 00:48:38 -07004
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07005// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
Tom Sepez19922bb2015-05-28 13:23:12 -07007#ifndef FPDFSDK_INCLUDE_FSDK_ACTIONHANDLER_H_
8#define FPDFSDK_INCLUDE_FSDK_ACTIONHANDLER_H_
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07009
Lei Zhangaa8bf7e2015-12-24 19:13:32 -080010#include <memory>
Tom Sepez6c7508b2016-01-20 14:59:25 -080011#include <set>
Lei Zhangaa8bf7e2015-12-24 19:13:32 -080012
Dan Sinclaira8a28e02016-03-23 15:41:39 -040013#include "core/fxcrt/include/fx_string.h"
Dan Sinclairefbc1912016-02-17 16:54:43 -050014#include "fpdfsdk/include/fsdk_baseform.h"
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070015
Tom Sepez245c80e2015-04-08 16:19:33 -070016class CPDFSDK_Annot;
17class CPDFSDK_Document;
18class CPDF_Bookmark;
19class CPDF_Dictionary;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070020
Nico Weber9d8ec5a2015-08-04 13:00:21 -070021class CPDFSDK_ActionHandler {
22 public:
Nico Weber9d8ec5a2015-08-04 13:00:21 -070023 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 Zhanga6d9f0e2015-06-13 00:48:38 -070053
Nico Weber9d8ec5a2015-08-04 13:00:21 -070054 private:
55 FX_BOOL ExecuteDocumentOpenAction(const CPDF_Action& action,
56 CPDFSDK_Document* pDocument,
Tom Sepez6c7508b2016-01-20 14:59:25 -080057 std::set<CPDF_Dictionary*>* visited);
Nico Weber9d8ec5a2015-08-04 13:00:21 -070058 FX_BOOL ExecuteDocumentPageAction(const CPDF_Action& action,
59 CPDF_AAction::AActionType type,
60 CPDFSDK_Document* pDocument,
Tom Sepez6c7508b2016-01-20 14:59:25 -080061 std::set<CPDF_Dictionary*>* visited);
Nico Weber9d8ec5a2015-08-04 13:00:21 -070062 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 Sepez6c7508b2016-01-20 14:59:25 -080067 std::set<CPDF_Dictionary*>* visited);
Nico Weber9d8ec5a2015-08-04 13:00:21 -070068 FX_BOOL ExecuteScreenAction(const CPDF_Action& action,
69 CPDF_AAction::AActionType type,
70 CPDFSDK_Document* pDocument,
71 CPDFSDK_Annot* pScreen,
Tom Sepez6c7508b2016-01-20 14:59:25 -080072 std::set<CPDF_Dictionary*>* visited);
Nico Weber9d8ec5a2015-08-04 13:00:21 -070073 FX_BOOL ExecuteBookMark(const CPDF_Action& action,
74 CPDFSDK_Document* pDocument,
75 CPDF_Bookmark* pBookmark,
Tom Sepez6c7508b2016-01-20 14:59:25 -080076 std::set<CPDF_Dictionary*>* visited);
Nico Weber9d8ec5a2015-08-04 13:00:21 -070077 FX_BOOL ExecuteLinkAction(const CPDF_Action& action,
78 CPDFSDK_Document* pDocument,
Tom Sepez6c7508b2016-01-20 14:59:25 -080079 std::set<CPDF_Dictionary*>* visited);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -070080
Nico Weber9d8ec5a2015-08-04 13:00:21 -070081 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 Zhanga6d9f0e2015-06-13 00:48:38 -070093
Nico Weber9d8ec5a2015-08-04 13:00:21 -070094 FX_BOOL IsValidField(CPDFSDK_Document* pDocument,
95 CPDF_Dictionary* pFieldDict);
96 FX_BOOL IsValidDocView(CPDFSDK_Document* pDocument);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -070097
Nico Weber9d8ec5a2015-08-04 13:00:21 -070098 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 Zhanga6d9f0e2015-06-13 00:48:38 -0700105
tonikitoof4dc38b2016-08-09 17:07:54 -0700106 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-Malek3f3b45c2014-05-23 17:28:10 -0700113};
114
Tom Sepez19922bb2015-05-28 13:23:12 -0700115#endif // FPDFSDK_INCLUDE_FSDK_ACTIONHANDLER_H_