Use override in more classes in fpdfsdk/
[pdfium.git] / fpdfsdk / include / fsdk_actionhandler.h
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.
4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7 #ifndef FPDFSDK_INCLUDE_FSDK_ACTIONHANDLER_H_
8 #define FPDFSDK_INCLUDE_FSDK_ACTIONHANDLER_H_
9
10 #include "../../core/include/fpdfdoc/fpdf_doc.h"
11 #include "../../core/include/fxcrt/fx_string.h"
12 #include "../../third_party/base/nonstd_unique_ptr.h"
13 #include "fsdk_baseform.h"
14
15 class CFX_PtrList;
16 class CPDFDoc_Environment;
17 class CPDFSDK_Annot;
18 class CPDFSDK_Document;
19 class CPDF_Bookmark;
20 class CPDF_Dictionary;
21 class IFXJS_Runtime;
22
23 class CPDFSDK_FormActionHandler {
24  public:
25   FX_BOOL DoAction_Hide(const CPDF_Action& action, CPDFSDK_Document* pDocument);
26   FX_BOOL DoAction_SubmitForm(const CPDF_Action& action,
27                               CPDFSDK_Document* pDocument);
28   FX_BOOL DoAction_ResetForm(const CPDF_Action& action,
29                              CPDFSDK_Document* pDocument);
30   FX_BOOL DoAction_ImportData(const CPDF_Action& action,
31                               CPDFSDK_Document* pDocument);
32 };
33
34 class CPDFSDK_MediaActionHandler {
35  public:
36   FX_BOOL DoAction_Rendition(const CPDF_Action& action,
37                              CPDFSDK_Document* pDocument);
38   FX_BOOL DoAction_Sound(const CPDF_Action& action,
39                          CPDFSDK_Document* pDocument);
40   FX_BOOL DoAction_Movie(const CPDF_Action& action,
41                          CPDFSDK_Document* pDocument);
42 };
43
44 class CPDFSDK_ActionHandler {
45  public:
46   CPDFSDK_ActionHandler(CPDFDoc_Environment* pEvi);
47
48   void SetMediaActionHandler(CPDFSDK_MediaActionHandler* pHandler);
49
50   FX_BOOL DoAction_DocOpen(const CPDF_Action& action,
51                            CPDFSDK_Document* pDocument);
52   FX_BOOL DoAction_JavaScript(const CPDF_Action& JsAction,
53                               CFX_WideString csJSName,
54                               CPDFSDK_Document* pDocument);
55   FX_BOOL DoAction_Page(const CPDF_Action& action,
56                         enum CPDF_AAction::AActionType eType,
57                         CPDFSDK_Document* pDocument);
58   FX_BOOL DoAction_Document(const CPDF_Action& action,
59                             enum CPDF_AAction::AActionType eType,
60                             CPDFSDK_Document* pDocument);
61   FX_BOOL DoAction_BookMark(CPDF_Bookmark* pBookMark,
62                             const CPDF_Action& action,
63                             CPDF_AAction::AActionType type,
64                             CPDFSDK_Document* pDocument);
65   FX_BOOL DoAction_Screen(const CPDF_Action& action,
66                           CPDF_AAction::AActionType type,
67                           CPDFSDK_Document* pDocument,
68                           CPDFSDK_Annot* pScreen);
69   FX_BOOL DoAction_Link(const CPDF_Action& action, CPDFSDK_Document* pDocument);
70   FX_BOOL DoAction_Field(const CPDF_Action& action,
71                          CPDF_AAction::AActionType type,
72                          CPDFSDK_Document* pDocument,
73                          CPDF_FormField* pFormField,
74                          PDFSDK_FieldAction& data);
75   FX_BOOL DoAction_FieldJavaScript(const CPDF_Action& JsAction,
76                                    CPDF_AAction::AActionType type,
77                                    CPDFSDK_Document* pDocument,
78                                    CPDF_FormField* pFormField,
79                                    PDFSDK_FieldAction& data);
80
81  private:
82   FX_BOOL ExecuteDocumentOpenAction(const CPDF_Action& action,
83                                     CPDFSDK_Document* pDocument,
84                                     CFX_PtrList& list);
85   FX_BOOL ExecuteDocumentPageAction(const CPDF_Action& action,
86                                     CPDF_AAction::AActionType type,
87                                     CPDFSDK_Document* pDocument,
88                                     CFX_PtrList& list);
89   FX_BOOL ExecuteFieldAction(const CPDF_Action& action,
90                              CPDF_AAction::AActionType type,
91                              CPDFSDK_Document* pDocument,
92                              CPDF_FormField* pFormField,
93                              PDFSDK_FieldAction& data,
94                              CFX_PtrList& list);
95   FX_BOOL ExecuteScreenAction(const CPDF_Action& action,
96                               CPDF_AAction::AActionType type,
97                               CPDFSDK_Document* pDocument,
98                               CPDFSDK_Annot* pScreen,
99                               CFX_PtrList& list);
100   FX_BOOL ExecuteBookMark(const CPDF_Action& action,
101                           CPDFSDK_Document* pDocument,
102                           CPDF_Bookmark* pBookmark,
103                           CFX_PtrList& list);
104   FX_BOOL ExecuteLinkAction(const CPDF_Action& action,
105                             CPDFSDK_Document* pDocument,
106                             CFX_PtrList& list);
107
108   void DoAction_NoJs(const CPDF_Action& action, CPDFSDK_Document* pDocument);
109   void RunDocumentPageJavaScript(CPDFSDK_Document* pDocument,
110                                  CPDF_AAction::AActionType type,
111                                  const CFX_WideString& script);
112   void RunDocumentOpenJavaScript(CPDFSDK_Document* pDocument,
113                                  const CFX_WideString& sScriptName,
114                                  const CFX_WideString& script);
115   void RunFieldJavaScript(CPDFSDK_Document* pDocument,
116                           CPDF_FormField* pFormField,
117                           CPDF_AAction::AActionType type,
118                           PDFSDK_FieldAction& data,
119                           const CFX_WideString& script);
120
121   FX_BOOL IsValidField(CPDFSDK_Document* pDocument,
122                        CPDF_Dictionary* pFieldDict);
123   FX_BOOL IsValidDocView(CPDFSDK_Document* pDocument);
124
125   void DoAction_GoTo(CPDFSDK_Document* pDocument, const CPDF_Action& action);
126   void DoAction_GoToR(CPDFSDK_Document* pDocument, const CPDF_Action& action);
127   void DoAction_Launch(CPDFSDK_Document* pDocument, const CPDF_Action& action);
128   void DoAction_URI(CPDFSDK_Document* pDocument, const CPDF_Action& action);
129   void DoAction_Named(CPDFSDK_Document* pDocument, const CPDF_Action& action);
130   void DoAction_SetOCGState(CPDFSDK_Document* pDocument,
131                             const CPDF_Action& action);
132
133   nonstd::unique_ptr<CPDFSDK_FormActionHandler> m_pFormActionHandler;
134   CPDFSDK_MediaActionHandler* m_pMediaActionHandler;
135 };
136
137 #endif  // FPDFSDK_INCLUDE_FSDK_ACTIONHANDLER_H_