blob: fe9a909dc94cc11a9bb9fbd3d59575d4b3768d0f [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
Dan Sinclairf766ad22016-03-14 13:51:24 -04007#include "fpdfsdk/javascript/JS_EventHandler.h"
Tom Sepez37458412015-10-06 11:33:46 -07008
Dan Sinclairf766ad22016-03-14 13:51:24 -04009#include "fpdfsdk/javascript/Document.h"
10#include "fpdfsdk/javascript/Field.h"
Dan Sinclairf766ad22016-03-14 13:51:24 -040011#include "fpdfsdk/javascript/JS_Define.h"
12#include "fpdfsdk/javascript/JS_Object.h"
Dan Sinclairf766ad22016-03-14 13:51:24 -040013#include "fpdfsdk/javascript/JS_Value.h"
dsinclair64376be2016-03-31 20:03:24 -070014#include "fpdfsdk/javascript/cjs_context.h"
15#include "fpdfsdk/javascript/cjs_runtime.h"
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070016
Nico Weber9d8ec5a2015-08-04 13:00:21 -070017CJS_EventHandler::CJS_EventHandler(CJS_Context* pContext)
18 : m_pJSContext(pContext),
19 m_eEventType(JET_UNKNOWN),
20 m_bValid(FALSE),
thestig1cd352e2016-06-07 17:53:06 -070021 m_pWideStrChange(nullptr),
Nico Weber9d8ec5a2015-08-04 13:00:21 -070022 m_nCommitKey(-1),
23 m_bKeyDown(FALSE),
24 m_bModifier(FALSE),
25 m_bShift(FALSE),
thestig1cd352e2016-06-07 17:53:06 -070026 m_pISelEnd(nullptr),
Nico Weber9d8ec5a2015-08-04 13:00:21 -070027 m_nSelEndDu(0),
thestig1cd352e2016-06-07 17:53:06 -070028 m_pISelStart(nullptr),
Nico Weber9d8ec5a2015-08-04 13:00:21 -070029 m_nSelStartDu(0),
30 m_bWillCommit(FALSE),
thestig1cd352e2016-06-07 17:53:06 -070031 m_pValue(nullptr),
Nico Weber9d8ec5a2015-08-04 13:00:21 -070032 m_bFieldFull(FALSE),
thestig1cd352e2016-06-07 17:53:06 -070033 m_pbRc(nullptr),
Nico Weber9d8ec5a2015-08-04 13:00:21 -070034 m_bRcDu(FALSE),
thestig1cd352e2016-06-07 17:53:06 -070035 m_pSourceDoc(nullptr),
36 m_pTargetBookMark(nullptr),
37 m_pTargetDoc(nullptr),
38 m_pTargetAnnot(nullptr) {}
Nico Weber9d8ec5a2015-08-04 13:00:21 -070039
40CJS_EventHandler::~CJS_EventHandler() {}
41
42void CJS_EventHandler::OnApp_Init() {
43 Initial(JET_APP_INIT);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070044}
45
Nico Weber9d8ec5a2015-08-04 13:00:21 -070046void CJS_EventHandler::OnDoc_Open(CPDFSDK_Document* pDoc,
47 const CFX_WideString& strTargetName) {
48 Initial(JET_DOC_OPEN);
49
50 m_pTargetDoc = pDoc;
51 m_strTargetName = strTargetName;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070052}
53
Nico Weber9d8ec5a2015-08-04 13:00:21 -070054void CJS_EventHandler::OnDoc_WillPrint(CPDFSDK_Document* pDoc) {
55 Initial(JET_DOC_WILLPRINT);
56
57 m_pTargetDoc = pDoc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070058}
59
Nico Weber9d8ec5a2015-08-04 13:00:21 -070060void CJS_EventHandler::OnDoc_DidPrint(CPDFSDK_Document* pDoc) {
61 Initial(JET_DOC_DIDPRINT);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070062
Nico Weber9d8ec5a2015-08-04 13:00:21 -070063 m_pTargetDoc = pDoc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070064}
65
Nico Weber9d8ec5a2015-08-04 13:00:21 -070066void CJS_EventHandler::OnDoc_WillSave(CPDFSDK_Document* pDoc) {
67 Initial(JET_DOC_WILLSAVE);
68 m_pTargetDoc = pDoc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070069}
70
Nico Weber9d8ec5a2015-08-04 13:00:21 -070071void CJS_EventHandler::OnDoc_DidSave(CPDFSDK_Document* pDoc) {
72 Initial(JET_DOC_DIDSAVE);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -070073
Nico Weber9d8ec5a2015-08-04 13:00:21 -070074 m_pTargetDoc = pDoc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070075}
76
Nico Weber9d8ec5a2015-08-04 13:00:21 -070077void CJS_EventHandler::OnDoc_WillClose(CPDFSDK_Document* pDoc) {
78 Initial(JET_DOC_WILLCLOSE);
79
80 m_pTargetDoc = pDoc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070081}
82
Nico Weber9d8ec5a2015-08-04 13:00:21 -070083void CJS_EventHandler::OnPage_Open(CPDFSDK_Document* pDoc) {
84 Initial(JET_PAGE_OPEN);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -070085
Nico Weber9d8ec5a2015-08-04 13:00:21 -070086 m_pTargetDoc = pDoc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070087}
88
Nico Weber9d8ec5a2015-08-04 13:00:21 -070089void CJS_EventHandler::OnPage_Close(CPDFSDK_Document* pDoc) {
90 Initial(JET_PAGE_CLOSE);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070091
Nico Weber9d8ec5a2015-08-04 13:00:21 -070092 m_pTargetDoc = pDoc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070093}
94
Nico Weber9d8ec5a2015-08-04 13:00:21 -070095void CJS_EventHandler::OnPage_InView(CPDFSDK_Document* pDoc) {
96 Initial(JET_PAGE_INVIEW);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070097
Nico Weber9d8ec5a2015-08-04 13:00:21 -070098 m_pTargetDoc = pDoc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070099}
100
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700101void CJS_EventHandler::OnPage_OutView(CPDFSDK_Document* pDoc) {
102 Initial(JET_PAGE_OUTVIEW);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700103
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700104 m_pTargetDoc = pDoc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700105}
106
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700107void CJS_EventHandler::OnField_MouseEnter(FX_BOOL bModifier,
108 FX_BOOL bShift,
109 CPDF_FormField* pTarget) {
110 Initial(JET_FIELD_MOUSEENTER);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700111
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700112 m_bModifier = bModifier;
113 m_bShift = bShift;
114
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700115 m_strTargetName = pTarget->GetFullName();
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700116}
117
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700118void CJS_EventHandler::OnField_MouseExit(FX_BOOL bModifier,
119 FX_BOOL bShift,
120 CPDF_FormField* pTarget) {
121 Initial(JET_FIELD_MOUSEEXIT);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700122
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700123 m_bModifier = bModifier;
124 m_bShift = bShift;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700125 m_strTargetName = pTarget->GetFullName();
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700126}
127
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700128void CJS_EventHandler::OnField_MouseDown(FX_BOOL bModifier,
129 FX_BOOL bShift,
130 CPDF_FormField* pTarget) {
131 Initial(JET_FIELD_MOUSEDOWN);
132 m_eEventType = JET_FIELD_MOUSEDOWN;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700133
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700134 m_bModifier = bModifier;
135 m_bShift = bShift;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700136 m_strTargetName = pTarget->GetFullName();
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700137}
138
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700139void CJS_EventHandler::OnField_MouseUp(FX_BOOL bModifier,
140 FX_BOOL bShift,
141 CPDF_FormField* pTarget) {
142 Initial(JET_FIELD_MOUSEUP);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700143
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700144 m_bModifier = bModifier;
145 m_bShift = bShift;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700146 m_strTargetName = pTarget->GetFullName();
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700147}
148
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700149void CJS_EventHandler::OnField_Focus(FX_BOOL bModifier,
150 FX_BOOL bShift,
151 CPDF_FormField* pTarget,
152 const CFX_WideString& Value) {
153 Initial(JET_FIELD_FOCUS);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700154
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700155 m_bModifier = bModifier;
156 m_bShift = bShift;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700157 m_strTargetName = pTarget->GetFullName();
158 m_pValue = (CFX_WideString*)&Value;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700159}
160
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700161void CJS_EventHandler::OnField_Blur(FX_BOOL bModifier,
162 FX_BOOL bShift,
163 CPDF_FormField* pTarget,
164 const CFX_WideString& Value) {
165 Initial(JET_FIELD_BLUR);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700166
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700167 m_bModifier = bModifier;
168 m_bShift = bShift;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700169 m_strTargetName = pTarget->GetFullName();
170 m_pValue = (CFX_WideString*)&Value;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700171}
172
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700173void CJS_EventHandler::OnField_Keystroke(CFX_WideString& strChange,
174 const CFX_WideString& strChangeEx,
175 FX_BOOL KeyDown,
176 FX_BOOL bModifier,
177 int& nSelEnd,
178 int& nSelStart,
179 FX_BOOL bShift,
180 CPDF_FormField* pTarget,
181 CFX_WideString& Value,
182 FX_BOOL bWillCommit,
183 FX_BOOL bFieldFull,
184 FX_BOOL& bRc) {
185 Initial(JET_FIELD_KEYSTROKE);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700186
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700187 m_nCommitKey = 0;
188 m_pWideStrChange = &strChange;
189 m_WideStrChangeEx = strChangeEx;
190 m_bKeyDown = KeyDown;
191 m_bModifier = bModifier;
192 m_pISelEnd = &nSelEnd;
193 m_pISelStart = &nSelStart;
194 m_bShift = bShift;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700195 m_strTargetName = pTarget->GetFullName();
196 m_pValue = &Value;
197 m_bWillCommit = bWillCommit;
198 m_pbRc = &bRc;
199 m_bFieldFull = bFieldFull;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700200}
201
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700202void CJS_EventHandler::OnField_Validate(CFX_WideString& strChange,
203 const CFX_WideString& strChangeEx,
204 FX_BOOL bKeyDown,
205 FX_BOOL bModifier,
206 FX_BOOL bShift,
207 CPDF_FormField* pTarget,
208 CFX_WideString& Value,
209 FX_BOOL& bRc) {
210 Initial(JET_FIELD_VALIDATE);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700211
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700212 m_pWideStrChange = &strChange;
213 m_WideStrChangeEx = strChangeEx;
214 m_bKeyDown = bKeyDown;
215 m_bModifier = bModifier;
216 m_bShift = bShift;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700217 m_strTargetName = pTarget->GetFullName();
218 m_pValue = &Value;
219 m_pbRc = &bRc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700220}
221
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700222void CJS_EventHandler::OnField_Calculate(CPDF_FormField* pSource,
223 CPDF_FormField* pTarget,
224 CFX_WideString& Value,
225 FX_BOOL& bRc) {
226 Initial(JET_FIELD_CALCULATE);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700227
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700228 if (pSource)
229 m_strSourceName = pSource->GetFullName();
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700230 m_strTargetName = pTarget->GetFullName();
231 m_pValue = &Value;
232 m_pbRc = &bRc;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700233}
234
Lei Zhang0aa0e732015-06-10 15:23:23 -0700235void CJS_EventHandler::OnField_Format(CPDF_FormField* pTarget,
236 CFX_WideString& Value,
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700237 FX_BOOL bWillCommit) {
238 Initial(JET_FIELD_FORMAT);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700239
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700240 m_nCommitKey = 0;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700241 m_strTargetName = pTarget->GetFullName();
242 m_pValue = &Value;
243 m_bWillCommit = bWillCommit;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700244}
245
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700246void CJS_EventHandler::OnScreen_Focus(FX_BOOL bModifier,
247 FX_BOOL bShift,
248 CPDFSDK_Annot* pScreen) {
249 Initial(JET_SCREEN_FOCUS);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700250
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700251 m_bModifier = bModifier;
252 m_bShift = bShift;
253 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700254}
255
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700256void CJS_EventHandler::OnScreen_Blur(FX_BOOL bModifier,
257 FX_BOOL bShift,
258 CPDFSDK_Annot* pScreen) {
259 Initial(JET_SCREEN_BLUR);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700260
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700261 m_bModifier = bModifier;
262 m_bShift = bShift;
263 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700264}
265
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700266void CJS_EventHandler::OnScreen_Open(FX_BOOL bModifier,
267 FX_BOOL bShift,
268 CPDFSDK_Annot* pScreen) {
269 Initial(JET_SCREEN_OPEN);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700270
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700271 m_bModifier = bModifier;
272 m_bShift = bShift;
273 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700274}
275
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700276void CJS_EventHandler::OnScreen_Close(FX_BOOL bModifier,
277 FX_BOOL bShift,
278 CPDFSDK_Annot* pScreen) {
279 Initial(JET_SCREEN_CLOSE);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700280
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700281 m_bModifier = bModifier;
282 m_bShift = bShift;
283 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700284}
285
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700286void CJS_EventHandler::OnScreen_MouseDown(FX_BOOL bModifier,
287 FX_BOOL bShift,
288 CPDFSDK_Annot* pScreen) {
289 Initial(JET_SCREEN_MOUSEDOWN);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700290
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700291 m_bModifier = bModifier;
292 m_bShift = bShift;
293 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700294}
295
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700296void CJS_EventHandler::OnScreen_MouseUp(FX_BOOL bModifier,
297 FX_BOOL bShift,
298 CPDFSDK_Annot* pScreen) {
299 Initial(JET_SCREEN_MOUSEUP);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700300
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700301 m_bModifier = bModifier;
302 m_bShift = bShift;
303 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700304}
305
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700306void CJS_EventHandler::OnScreen_MouseEnter(FX_BOOL bModifier,
307 FX_BOOL bShift,
308 CPDFSDK_Annot* pScreen) {
309 Initial(JET_SCREEN_MOUSEENTER);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700310
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700311 m_bModifier = bModifier;
312 m_bShift = bShift;
313 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700314}
315
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700316void CJS_EventHandler::OnScreen_MouseExit(FX_BOOL bModifier,
317 FX_BOOL bShift,
318 CPDFSDK_Annot* pScreen) {
319 Initial(JET_SCREEN_MOUSEEXIT);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700320
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700321 m_bModifier = bModifier;
322 m_bShift = bShift;
323 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700324}
325
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700326void CJS_EventHandler::OnScreen_InView(FX_BOOL bModifier,
327 FX_BOOL bShift,
328 CPDFSDK_Annot* pScreen) {
329 Initial(JET_SCREEN_INVIEW);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700330
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700331 m_bModifier = bModifier;
332 m_bShift = bShift;
333 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700334}
335
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700336void CJS_EventHandler::OnScreen_OutView(FX_BOOL bModifier,
337 FX_BOOL bShift,
338 CPDFSDK_Annot* pScreen) {
339 Initial(JET_SCREEN_OUTVIEW);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700340
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700341 m_bModifier = bModifier;
342 m_bShift = bShift;
343 m_pTargetAnnot = pScreen;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700344}
345
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700346void CJS_EventHandler::OnLink_MouseUp(CPDFSDK_Document* pTarget) {
347 Initial(JET_LINK_MOUSEUP);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700348
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700349 m_pTargetDoc = pTarget;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700350}
351
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700352void CJS_EventHandler::OnBookmark_MouseUp(CPDF_Bookmark* pBookMark) {
353 Initial(JET_BOOKMARK_MOUSEUP);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700354
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700355 m_pTargetBookMark = pBookMark;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700356}
357
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700358void CJS_EventHandler::OnMenu_Exec(CPDFSDK_Document* pTarget,
359 const CFX_WideString& strTargetName) {
360 Initial(JET_MENU_EXEC);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700361
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700362 m_pTargetDoc = pTarget;
363 m_strTargetName = strTargetName;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700364}
365
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700366void CJS_EventHandler::OnExternal_Exec() {
367 Initial(JET_EXTERNAL_EXEC);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700368}
369
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700370void CJS_EventHandler::OnBatchExec(CPDFSDK_Document* pTarget) {
371 Initial(JET_BATCH_EXEC);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700372
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700373 m_pTargetDoc = pTarget;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700374}
375
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700376void CJS_EventHandler::OnConsole_Exec() {
377 Initial(JET_CONSOLE_EXEC);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700378}
379
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700380void CJS_EventHandler::Initial(JS_EVENT_T type) {
381 m_eEventType = type;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700382
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700383 m_strTargetName = L"";
384 m_strSourceName = L"";
thestig1cd352e2016-06-07 17:53:06 -0700385 m_pWideStrChange = nullptr;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700386 m_WideStrChangeDu = L"";
387 m_WideStrChangeEx = L"";
388 m_nCommitKey = -1;
389 m_bKeyDown = FALSE;
390 m_bModifier = FALSE;
391 m_bShift = FALSE;
thestig1cd352e2016-06-07 17:53:06 -0700392 m_pISelEnd = nullptr;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700393 m_nSelEndDu = 0;
thestig1cd352e2016-06-07 17:53:06 -0700394 m_pISelStart = nullptr;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700395 m_nSelStartDu = 0;
396 m_bWillCommit = FALSE;
thestig1cd352e2016-06-07 17:53:06 -0700397 m_pValue = nullptr;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700398 m_bFieldFull = FALSE;
thestig1cd352e2016-06-07 17:53:06 -0700399 m_pbRc = nullptr;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700400 m_bRcDu = FALSE;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700401
thestig1cd352e2016-06-07 17:53:06 -0700402 m_pSourceDoc = nullptr;
403 m_pTargetBookMark = nullptr;
404 m_pTargetDoc = nullptr;
405 m_pTargetAnnot = nullptr;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700406
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700407 m_bValid = TRUE;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700408}
409
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700410void CJS_EventHandler::Destroy() {
411 m_bValid = FALSE;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700412}
413
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700414FX_BOOL CJS_EventHandler::IsValid() {
415 return m_bValid;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700416}
417
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700418CFX_WideString& CJS_EventHandler::Change() {
419 if (m_pWideStrChange) {
420 return *m_pWideStrChange;
421 }
422 return m_WideStrChangeDu;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700423}
424
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700425CFX_WideString CJS_EventHandler::ChangeEx() {
426 return m_WideStrChangeEx;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700427}
428
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700429int CJS_EventHandler::CommitKey() {
430 return m_nCommitKey;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700431}
432
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700433FX_BOOL CJS_EventHandler::FieldFull() {
434 return m_bFieldFull;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700435}
436
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700437FX_BOOL CJS_EventHandler::KeyDown() {
438 return m_bKeyDown;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700439}
440
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700441FX_BOOL CJS_EventHandler::Modifier() {
442 return m_bModifier;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700443}
444
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700445const FX_WCHAR* CJS_EventHandler::Name() {
446 switch (m_eEventType) {
447 case JET_APP_INIT:
448 return L"Init";
449 case JET_BATCH_EXEC:
450 return L"Exec";
451 case JET_BOOKMARK_MOUSEUP:
452 return L"Mouse Up";
453 case JET_CONSOLE_EXEC:
454 return L"Exec";
455 case JET_DOC_DIDPRINT:
456 return L"DidPrint";
457 case JET_DOC_DIDSAVE:
458 return L"DidSave";
459 case JET_DOC_OPEN:
460 return L"Open";
461 case JET_DOC_WILLCLOSE:
462 return L"WillClose";
463 case JET_DOC_WILLPRINT:
464 return L"WillPrint";
465 case JET_DOC_WILLSAVE:
466 return L"WillSave";
467 case JET_EXTERNAL_EXEC:
468 return L"Exec";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700469 case JET_FIELD_FOCUS:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700470 case JET_SCREEN_FOCUS:
471 return L"Focus";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700472 case JET_FIELD_BLUR:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700473 case JET_SCREEN_BLUR:
474 return L"Blur";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700475 case JET_FIELD_MOUSEDOWN:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700476 case JET_SCREEN_MOUSEDOWN:
477 return L"Mouse Down";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700478 case JET_FIELD_MOUSEUP:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700479 case JET_SCREEN_MOUSEUP:
480 return L"Mouse Up";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700481 case JET_FIELD_MOUSEENTER:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700482 case JET_SCREEN_MOUSEENTER:
483 return L"Mouse Enter";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700484 case JET_FIELD_MOUSEEXIT:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700485 case JET_SCREEN_MOUSEEXIT:
486 return L"Mouse Exit";
487 case JET_FIELD_CALCULATE:
488 return L"Calculate";
489 case JET_FIELD_FORMAT:
490 return L"Format";
491 case JET_FIELD_KEYSTROKE:
492 return L"Keystroke";
493 case JET_FIELD_VALIDATE:
494 return L"Validate";
495 case JET_LINK_MOUSEUP:
496 return L"Mouse Up";
497 case JET_MENU_EXEC:
498 return L"Exec";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700499 case JET_PAGE_OPEN:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700500 case JET_SCREEN_OPEN:
501 return L"Open";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700502 case JET_PAGE_CLOSE:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700503 case JET_SCREEN_CLOSE:
504 return L"Close";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700505 case JET_SCREEN_INVIEW:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700506 case JET_PAGE_INVIEW:
507 return L"InView";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700508 case JET_PAGE_OUTVIEW:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700509 case JET_SCREEN_OUTVIEW:
510 return L"OutView";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700511 default:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700512 return L"";
513 }
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700514}
515
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700516const FX_WCHAR* CJS_EventHandler::Type() {
517 switch (m_eEventType) {
518 case JET_APP_INIT:
519 return L"App";
520 case JET_BATCH_EXEC:
521 return L"Batch";
522 case JET_BOOKMARK_MOUSEUP:
523 return L"BookMark";
524 case JET_CONSOLE_EXEC:
525 return L"Console";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700526 case JET_DOC_DIDPRINT:
527 case JET_DOC_DIDSAVE:
528 case JET_DOC_OPEN:
529 case JET_DOC_WILLCLOSE:
530 case JET_DOC_WILLPRINT:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700531 case JET_DOC_WILLSAVE:
532 return L"Doc";
533 case JET_EXTERNAL_EXEC:
534 return L"External";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700535 case JET_FIELD_BLUR:
536 case JET_FIELD_FOCUS:
537 case JET_FIELD_MOUSEDOWN:
538 case JET_FIELD_MOUSEENTER:
539 case JET_FIELD_MOUSEEXIT:
540 case JET_FIELD_MOUSEUP:
541 case JET_FIELD_CALCULATE:
542 case JET_FIELD_FORMAT:
543 case JET_FIELD_KEYSTROKE:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700544 case JET_FIELD_VALIDATE:
545 return L"Field";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700546 case JET_SCREEN_FOCUS:
547 case JET_SCREEN_BLUR:
548 case JET_SCREEN_OPEN:
549 case JET_SCREEN_CLOSE:
550 case JET_SCREEN_MOUSEDOWN:
551 case JET_SCREEN_MOUSEUP:
552 case JET_SCREEN_MOUSEENTER:
553 case JET_SCREEN_MOUSEEXIT:
554 case JET_SCREEN_INVIEW:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700555 case JET_SCREEN_OUTVIEW:
556 return L"Screen";
557 case JET_LINK_MOUSEUP:
558 return L"Link";
559 case JET_MENU_EXEC:
560 return L"Menu";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700561 case JET_PAGE_OPEN:
562 case JET_PAGE_CLOSE:
563 case JET_PAGE_INVIEW:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700564 case JET_PAGE_OUTVIEW:
565 return L"Page";
Tom Sepez2f2ffec2015-07-23 14:42:09 -0700566 default:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700567 return L"";
568 }
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700569}
570
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700571FX_BOOL& CJS_EventHandler::Rc() {
572 if (m_pbRc) {
573 return *m_pbRc;
574 }
575 return m_bRcDu;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700576}
577
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700578int& CJS_EventHandler::SelEnd() {
579 if (m_pISelEnd) {
580 return *m_pISelEnd;
581 }
582 return m_nSelEndDu;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700583}
584
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700585int& CJS_EventHandler::SelStart() {
586 if (m_pISelStart) {
587 return *m_pISelStart;
588 }
589 return m_nSelStartDu;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700590}
591
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700592FX_BOOL CJS_EventHandler::Shift() {
593 return m_bShift;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700594}
595
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700596Field* CJS_EventHandler::Source() {
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700597 CJS_Runtime* pRuntime = m_pJSContext->GetJSRuntime();
tsepezb4694242016-08-15 16:44:55 -0700598 v8::Local<v8::Object> pDocObj =
599 pRuntime->NewFxDynamicObj(CJS_Document::g_nObjDefnID);
Tom Sepezcd56a7d2015-10-06 11:45:28 -0700600 ASSERT(!pDocObj.IsEmpty());
601
tsepezb4694242016-08-15 16:44:55 -0700602 v8::Local<v8::Object> pFieldObj =
603 pRuntime->NewFxDynamicObj(CJS_Field::g_nObjDefnID);
Tom Sepezcd56a7d2015-10-06 11:45:28 -0700604 ASSERT(!pFieldObj.IsEmpty());
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700605
Tom Sepezd5a0e952015-09-17 15:40:06 -0700606 CJS_Document* pJSDocument =
tsepezb4694242016-08-15 16:44:55 -0700607 static_cast<CJS_Document*>(pRuntime->GetObjectPrivate(pDocObj));
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700608 Document* pDocument = (Document*)pJSDocument->GetEmbedObject();
Tom Sepezd5a0e952015-09-17 15:40:06 -0700609 pDocument->AttachDoc(m_pTargetDoc ? m_pTargetDoc
610 : m_pJSContext->GetReaderDocument());
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700611
Tom Sepezd5a0e952015-09-17 15:40:06 -0700612 CJS_Field* pJSField =
tsepezb4694242016-08-15 16:44:55 -0700613 static_cast<CJS_Field*>(pRuntime->GetObjectPrivate(pFieldObj));
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700614 Field* pField = (Field*)pJSField->GetEmbedObject();
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700615 pField->AttachField(pDocument, m_strSourceName);
616 return pField;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700617}
618
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700619Field* CJS_EventHandler::Target_Field() {
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700620 CJS_Runtime* pRuntime = m_pJSContext->GetJSRuntime();
tsepezb4694242016-08-15 16:44:55 -0700621 v8::Local<v8::Object> pDocObj =
622 pRuntime->NewFxDynamicObj(CJS_Document::g_nObjDefnID);
Tom Sepezcd56a7d2015-10-06 11:45:28 -0700623 ASSERT(!pDocObj.IsEmpty());
624
tsepezb4694242016-08-15 16:44:55 -0700625 v8::Local<v8::Object> pFieldObj =
626 pRuntime->NewFxDynamicObj(CJS_Field::g_nObjDefnID);
Tom Sepezcd56a7d2015-10-06 11:45:28 -0700627 ASSERT(!pFieldObj.IsEmpty());
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700628
Tom Sepezd5a0e952015-09-17 15:40:06 -0700629 CJS_Document* pJSDocument =
tsepezb4694242016-08-15 16:44:55 -0700630 static_cast<CJS_Document*>(pRuntime->GetObjectPrivate(pDocObj));
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700631 Document* pDocument = (Document*)pJSDocument->GetEmbedObject();
Tom Sepezd5a0e952015-09-17 15:40:06 -0700632 pDocument->AttachDoc(m_pTargetDoc ? m_pTargetDoc
633 : m_pJSContext->GetReaderDocument());
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700634
Tom Sepezd5a0e952015-09-17 15:40:06 -0700635 CJS_Field* pJSField =
tsepezb4694242016-08-15 16:44:55 -0700636 static_cast<CJS_Field*>(pRuntime->GetObjectPrivate(pFieldObj));
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700637 Field* pField = (Field*)pJSField->GetEmbedObject();
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700638 pField->AttachField(pDocument, m_strTargetName);
639 return pField;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700640}
641
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700642CFX_WideString& CJS_EventHandler::Value() {
643 return *m_pValue;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700644}
645
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700646FX_BOOL CJS_EventHandler::WillCommit() {
647 return m_bWillCommit;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700648}
649
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700650CFX_WideString CJS_EventHandler::TargetName() {
651 return m_strTargetName;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700652}