Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(395)

Side by Side Diff: fpdfsdk/fsdk_actionhandler.cpp

Issue 2397933003: Convert CPDFSDK_ActionHandler to CPDFSDK_FormFillEnvironment (Closed)
Patch Set: Rebase to master Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « fpdfsdk/fsdk_actionhandler.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "fpdfsdk/fsdk_actionhandler.h" 7 #include "fpdfsdk/fsdk_actionhandler.h"
8 8
9 #include <set> 9 #include <set>
10 10
11 #include "core/fpdfapi/parser/cpdf_array.h" 11 #include "core/fpdfapi/parser/cpdf_array.h"
12 #include "core/fpdfdoc/cpdf_formfield.h" 12 #include "core/fpdfdoc/cpdf_formfield.h"
13 #include "core/fpdfdoc/cpdf_interform.h" 13 #include "core/fpdfdoc/cpdf_interform.h"
14 #include "fpdfsdk/cpdfsdk_document.h" 14 #include "fpdfsdk/cpdfsdk_document.h"
15 #include "fpdfsdk/cpdfsdk_formfillenvironment.h" 15 #include "fpdfsdk/cpdfsdk_formfillenvironment.h"
16 #include "fpdfsdk/cpdfsdk_interform.h" 16 #include "fpdfsdk/cpdfsdk_interform.h"
17 #include "fpdfsdk/fsdk_define.h" 17 #include "fpdfsdk/fsdk_define.h"
18 #include "fpdfsdk/javascript/ijs_context.h" 18 #include "fpdfsdk/javascript/ijs_context.h"
19 #include "fpdfsdk/javascript/ijs_runtime.h" 19 #include "fpdfsdk/javascript/ijs_runtime.h"
20 #include "third_party/base/stl_util.h" 20 #include "third_party/base/stl_util.h"
21 21
22 FX_BOOL CPDFSDK_ActionHandler::DoAction_DocOpen(const CPDF_Action& action, 22 FX_BOOL CPDFSDK_ActionHandler::DoAction_DocOpen(
23 CPDFSDK_Document* pDocument) { 23 const CPDF_Action& action,
24 CPDFSDK_FormFillEnvironment* pFormFillEnv) {
24 std::set<CPDF_Dictionary*> visited; 25 std::set<CPDF_Dictionary*> visited;
25 return ExecuteDocumentOpenAction(action, pDocument, &visited); 26 return ExecuteDocumentOpenAction(action, pFormFillEnv, &visited);
26 } 27 }
27 28
28 FX_BOOL CPDFSDK_ActionHandler::DoAction_JavaScript( 29 FX_BOOL CPDFSDK_ActionHandler::DoAction_JavaScript(
29 const CPDF_Action& JsAction, 30 const CPDF_Action& JsAction,
30 CFX_WideString csJSName, 31 CFX_WideString csJSName,
31 CPDFSDK_Document* pDocument) { 32 CPDFSDK_FormFillEnvironment* pFormFillEnv) {
32 if (JsAction.GetType() == CPDF_Action::JavaScript) { 33 if (JsAction.GetType() == CPDF_Action::JavaScript) {
33 CFX_WideString swJS = JsAction.GetJavaScript(); 34 CFX_WideString swJS = JsAction.GetJavaScript();
34 if (!swJS.IsEmpty()) { 35 if (!swJS.IsEmpty()) {
35 RunDocumentOpenJavaScript(pDocument, csJSName, swJS); 36 RunDocumentOpenJavaScript(pFormFillEnv, csJSName, swJS);
36 return TRUE; 37 return TRUE;
37 } 38 }
38 } 39 }
39 40
40 return FALSE; 41 return FALSE;
41 } 42 }
42 43
43 FX_BOOL CPDFSDK_ActionHandler::DoAction_FieldJavaScript( 44 FX_BOOL CPDFSDK_ActionHandler::DoAction_FieldJavaScript(
44 const CPDF_Action& JsAction, 45 const CPDF_Action& JsAction,
45 CPDF_AAction::AActionType type, 46 CPDF_AAction::AActionType type,
46 CPDFSDK_Document* pDocument, 47 CPDFSDK_FormFillEnvironment* pFormFillEnv,
47 CPDF_FormField* pFormField, 48 CPDF_FormField* pFormField,
48 PDFSDK_FieldAction& data) { 49 PDFSDK_FieldAction& data) {
49 CPDFSDK_FormFillEnvironment* pEnv = pDocument->GetEnv(); 50 ASSERT(pFormFillEnv);
50 ASSERT(pEnv); 51 if (pFormFillEnv->IsJSInitiated() &&
51 if (pEnv->IsJSInitiated() && JsAction.GetType() == CPDF_Action::JavaScript) { 52 JsAction.GetType() == CPDF_Action::JavaScript) {
52 CFX_WideString swJS = JsAction.GetJavaScript(); 53 CFX_WideString swJS = JsAction.GetJavaScript();
53 if (!swJS.IsEmpty()) { 54 if (!swJS.IsEmpty()) {
54 RunFieldJavaScript(pDocument, pFormField, type, data, swJS); 55 RunFieldJavaScript(pFormFillEnv, pFormField, type, data, swJS);
55 return TRUE; 56 return TRUE;
56 } 57 }
57 } 58 }
58 return FALSE; 59 return FALSE;
59 } 60 }
60 61
61 FX_BOOL CPDFSDK_ActionHandler::DoAction_Page( 62 FX_BOOL CPDFSDK_ActionHandler::DoAction_Page(
62 const CPDF_Action& action, 63 const CPDF_Action& action,
63 enum CPDF_AAction::AActionType eType, 64 enum CPDF_AAction::AActionType eType,
64 CPDFSDK_Document* pDocument) { 65 CPDFSDK_FormFillEnvironment* pFormFillEnv) {
65 std::set<CPDF_Dictionary*> visited; 66 std::set<CPDF_Dictionary*> visited;
66 return ExecuteDocumentPageAction(action, eType, pDocument, &visited); 67 return ExecuteDocumentPageAction(action, eType, pFormFillEnv, &visited);
67 } 68 }
68 69
69 FX_BOOL CPDFSDK_ActionHandler::DoAction_Document( 70 FX_BOOL CPDFSDK_ActionHandler::DoAction_Document(
70 const CPDF_Action& action, 71 const CPDF_Action& action,
71 enum CPDF_AAction::AActionType eType, 72 enum CPDF_AAction::AActionType eType,
72 CPDFSDK_Document* pDocument) { 73 CPDFSDK_FormFillEnvironment* pFormFillEnv) {
73 std::set<CPDF_Dictionary*> visited; 74 std::set<CPDF_Dictionary*> visited;
74 return ExecuteDocumentPageAction(action, eType, pDocument, &visited); 75 return ExecuteDocumentPageAction(action, eType, pFormFillEnv, &visited);
75 } 76 }
76 77
77 FX_BOOL CPDFSDK_ActionHandler::DoAction_BookMark(CPDF_Bookmark* pBookMark, 78 FX_BOOL CPDFSDK_ActionHandler::DoAction_BookMark(
78 const CPDF_Action& action, 79 CPDF_Bookmark* pBookMark,
79 CPDF_AAction::AActionType type, 80 const CPDF_Action& action,
80 CPDFSDK_Document* pDocument) { 81 CPDF_AAction::AActionType type,
82 CPDFSDK_FormFillEnvironment* pFormFillEnv) {
81 std::set<CPDF_Dictionary*> visited; 83 std::set<CPDF_Dictionary*> visited;
82 return ExecuteBookMark(action, pDocument, pBookMark, &visited); 84 return ExecuteBookMark(action, pFormFillEnv, pBookMark, &visited);
83 } 85 }
84 86
85 FX_BOOL CPDFSDK_ActionHandler::DoAction_Screen(const CPDF_Action& action, 87 FX_BOOL CPDFSDK_ActionHandler::DoAction_Screen(
86 CPDF_AAction::AActionType type, 88 const CPDF_Action& action,
87 CPDFSDK_Document* pDocument, 89 CPDF_AAction::AActionType type,
88 CPDFSDK_Annot* pScreen) { 90 CPDFSDK_FormFillEnvironment* pFormFillEnv,
91 CPDFSDK_Annot* pScreen) {
89 std::set<CPDF_Dictionary*> visited; 92 std::set<CPDF_Dictionary*> visited;
90 return ExecuteScreenAction(action, type, pDocument, pScreen, &visited); 93 return ExecuteScreenAction(action, type, pFormFillEnv, pScreen, &visited);
91 } 94 }
92 95
93 FX_BOOL CPDFSDK_ActionHandler::DoAction_Link(const CPDF_Action& action, 96 FX_BOOL CPDFSDK_ActionHandler::DoAction_Link(
94 CPDFSDK_Document* pDocument) { 97 const CPDF_Action& action,
98 CPDFSDK_FormFillEnvironment* pFormFillEnv) {
95 std::set<CPDF_Dictionary*> visited; 99 std::set<CPDF_Dictionary*> visited;
96 return ExecuteLinkAction(action, pDocument, &visited); 100 return ExecuteLinkAction(action, pFormFillEnv, &visited);
97 } 101 }
98 102
99 FX_BOOL CPDFSDK_ActionHandler::DoAction_Field(const CPDF_Action& action, 103 FX_BOOL CPDFSDK_ActionHandler::DoAction_Field(
100 CPDF_AAction::AActionType type, 104 const CPDF_Action& action,
101 CPDFSDK_Document* pDocument, 105 CPDF_AAction::AActionType type,
102 CPDF_FormField* pFormField, 106 CPDFSDK_FormFillEnvironment* pFormFillEnv,
103 PDFSDK_FieldAction& data) { 107 CPDF_FormField* pFormField,
108 PDFSDK_FieldAction& data) {
104 std::set<CPDF_Dictionary*> visited; 109 std::set<CPDF_Dictionary*> visited;
105 return ExecuteFieldAction(action, type, pDocument, pFormField, data, 110 return ExecuteFieldAction(action, type, pFormFillEnv, pFormField, data,
106 &visited); 111 &visited);
107 } 112 }
108 113
109 FX_BOOL CPDFSDK_ActionHandler::ExecuteDocumentOpenAction( 114 FX_BOOL CPDFSDK_ActionHandler::ExecuteDocumentOpenAction(
110 const CPDF_Action& action, 115 const CPDF_Action& action,
111 CPDFSDK_Document* pDocument, 116 CPDFSDK_FormFillEnvironment* pFormFillEnv,
112 std::set<CPDF_Dictionary*>* visited) { 117 std::set<CPDF_Dictionary*>* visited) {
113 CPDF_Dictionary* pDict = action.GetDict(); 118 CPDF_Dictionary* pDict = action.GetDict();
114 if (pdfium::ContainsKey(*visited, pDict)) 119 if (pdfium::ContainsKey(*visited, pDict))
115 return FALSE; 120 return FALSE;
116 121
117 visited->insert(pDict); 122 visited->insert(pDict);
118 123
119 CPDFSDK_FormFillEnvironment* pEnv = pDocument->GetEnv(); 124 ASSERT(pFormFillEnv);
120 ASSERT(pEnv);
121 if (action.GetType() == CPDF_Action::JavaScript) { 125 if (action.GetType() == CPDF_Action::JavaScript) {
122 if (pEnv->IsJSInitiated()) { 126 if (pFormFillEnv->IsJSInitiated()) {
123 CFX_WideString swJS = action.GetJavaScript(); 127 CFX_WideString swJS = action.GetJavaScript();
124 if (!swJS.IsEmpty()) { 128 if (!swJS.IsEmpty()) {
125 RunDocumentOpenJavaScript(pDocument, L"", swJS); 129 RunDocumentOpenJavaScript(pFormFillEnv, L"", swJS);
126 } 130 }
127 } 131 }
128 } else { 132 } else {
129 DoAction_NoJs(action, pDocument); 133 DoAction_NoJs(action, pFormFillEnv);
130 } 134 }
131 135
132 for (int32_t i = 0, sz = action.GetSubActionsCount(); i < sz; i++) { 136 for (int32_t i = 0, sz = action.GetSubActionsCount(); i < sz; i++) {
133 CPDF_Action subaction = action.GetSubAction(i); 137 CPDF_Action subaction = action.GetSubAction(i);
134 if (!ExecuteDocumentOpenAction(subaction, pDocument, visited)) 138 if (!ExecuteDocumentOpenAction(subaction, pFormFillEnv, visited))
135 return FALSE; 139 return FALSE;
136 } 140 }
137 141
138 return TRUE; 142 return TRUE;
139 } 143 }
140 144
141 FX_BOOL CPDFSDK_ActionHandler::ExecuteLinkAction( 145 FX_BOOL CPDFSDK_ActionHandler::ExecuteLinkAction(
142 const CPDF_Action& action, 146 const CPDF_Action& action,
143 CPDFSDK_Document* pDocument, 147 CPDFSDK_FormFillEnvironment* pFormFillEnv,
144 std::set<CPDF_Dictionary*>* visited) { 148 std::set<CPDF_Dictionary*>* visited) {
145 CPDF_Dictionary* pDict = action.GetDict(); 149 CPDF_Dictionary* pDict = action.GetDict();
146 if (pdfium::ContainsKey(*visited, pDict)) 150 if (pdfium::ContainsKey(*visited, pDict))
147 return FALSE; 151 return FALSE;
148 152
149 visited->insert(pDict); 153 visited->insert(pDict);
150 154
151 CPDFSDK_FormFillEnvironment* pFormFillEnv = pDocument->GetEnv();
152 ASSERT(pFormFillEnv); 155 ASSERT(pFormFillEnv);
153 if (action.GetType() == CPDF_Action::JavaScript) { 156 if (action.GetType() == CPDF_Action::JavaScript) {
154 if (pFormFillEnv->IsJSInitiated()) { 157 if (pFormFillEnv->IsJSInitiated()) {
155 CFX_WideString swJS = action.GetJavaScript(); 158 CFX_WideString swJS = action.GetJavaScript();
156 if (!swJS.IsEmpty()) { 159 if (!swJS.IsEmpty()) {
157 IJS_Runtime* pRuntime = pFormFillEnv->GetJSRuntime(); 160 IJS_Runtime* pRuntime = pFormFillEnv->GetJSRuntime();
158 IJS_Context* pContext = pRuntime->NewContext(); 161 IJS_Context* pContext = pRuntime->NewContext();
159 pContext->OnLink_MouseUp(pFormFillEnv); 162 pContext->OnLink_MouseUp(pFormFillEnv);
160 163
161 CFX_WideString csInfo; 164 CFX_WideString csInfo;
162 FX_BOOL bRet = pContext->RunScript(swJS, &csInfo); 165 FX_BOOL bRet = pContext->RunScript(swJS, &csInfo);
163 if (!bRet) { 166 if (!bRet) {
164 // FIXME: return error. 167 // FIXME: return error.
165 } 168 }
166 169
167 pRuntime->ReleaseContext(pContext); 170 pRuntime->ReleaseContext(pContext);
168 } 171 }
169 } 172 }
170 } else { 173 } else {
171 DoAction_NoJs(action, pDocument); 174 DoAction_NoJs(action, pFormFillEnv);
172 } 175 }
173 176
174 for (int32_t i = 0, sz = action.GetSubActionsCount(); i < sz; i++) { 177 for (int32_t i = 0, sz = action.GetSubActionsCount(); i < sz; i++) {
175 CPDF_Action subaction = action.GetSubAction(i); 178 CPDF_Action subaction = action.GetSubAction(i);
176 if (!ExecuteLinkAction(subaction, pDocument, visited)) 179 if (!ExecuteLinkAction(subaction, pFormFillEnv, visited))
177 return FALSE; 180 return FALSE;
178 } 181 }
179 182
180 return TRUE; 183 return TRUE;
181 } 184 }
182 185
183 FX_BOOL CPDFSDK_ActionHandler::ExecuteDocumentPageAction( 186 FX_BOOL CPDFSDK_ActionHandler::ExecuteDocumentPageAction(
184 const CPDF_Action& action, 187 const CPDF_Action& action,
185 CPDF_AAction::AActionType type, 188 CPDF_AAction::AActionType type,
186 CPDFSDK_Document* pDocument, 189 CPDFSDK_FormFillEnvironment* pFormFillEnv,
187 std::set<CPDF_Dictionary*>* visited) { 190 std::set<CPDF_Dictionary*>* visited) {
188 CPDF_Dictionary* pDict = action.GetDict(); 191 CPDF_Dictionary* pDict = action.GetDict();
189 if (pdfium::ContainsKey(*visited, pDict)) 192 if (pdfium::ContainsKey(*visited, pDict))
190 return FALSE; 193 return FALSE;
191 194
192 visited->insert(pDict); 195 visited->insert(pDict);
193 196
194 CPDFSDK_FormFillEnvironment* pEnv = pDocument->GetEnv(); 197 ASSERT(pFormFillEnv);
195 ASSERT(pEnv);
196 if (action.GetType() == CPDF_Action::JavaScript) { 198 if (action.GetType() == CPDF_Action::JavaScript) {
197 if (pEnv->IsJSInitiated()) { 199 if (pFormFillEnv->IsJSInitiated()) {
198 CFX_WideString swJS = action.GetJavaScript(); 200 CFX_WideString swJS = action.GetJavaScript();
199 if (!swJS.IsEmpty()) { 201 if (!swJS.IsEmpty()) {
200 RunDocumentPageJavaScript(pDocument, type, swJS); 202 RunDocumentPageJavaScript(pFormFillEnv, type, swJS);
201 } 203 }
202 } 204 }
203 } else { 205 } else {
204 DoAction_NoJs(action, pDocument); 206 DoAction_NoJs(action, pFormFillEnv);
205 } 207 }
206 208
207 if (!IsValidDocView(pDocument)) 209 if (!IsValidDocView(pFormFillEnv))
208 return FALSE; 210 return FALSE;
209 211
210 for (int32_t i = 0, sz = action.GetSubActionsCount(); i < sz; i++) { 212 for (int32_t i = 0, sz = action.GetSubActionsCount(); i < sz; i++) {
211 CPDF_Action subaction = action.GetSubAction(i); 213 CPDF_Action subaction = action.GetSubAction(i);
212 if (!ExecuteDocumentPageAction(subaction, type, pDocument, visited)) 214 if (!ExecuteDocumentPageAction(subaction, type, pFormFillEnv, visited))
213 return FALSE; 215 return FALSE;
214 } 216 }
215 217
216 return TRUE; 218 return TRUE;
217 } 219 }
218 220
219 FX_BOOL CPDFSDK_ActionHandler::IsValidField(CPDFSDK_Document* pDocument, 221 FX_BOOL CPDFSDK_ActionHandler::IsValidField(
220 CPDF_Dictionary* pFieldDict) { 222 CPDFSDK_FormFillEnvironment* pFormFillEnv,
223 CPDF_Dictionary* pFieldDict) {
221 ASSERT(pFieldDict); 224 ASSERT(pFieldDict);
222 225
223 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); 226 CPDFSDK_InterForm* pInterForm =
227 pFormFillEnv->GetSDKDocument()->GetInterForm();
224 CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm(); 228 CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm();
225 return !!pPDFInterForm->GetFieldByDict(pFieldDict); 229 return !!pPDFInterForm->GetFieldByDict(pFieldDict);
226 } 230 }
227 231
228 FX_BOOL CPDFSDK_ActionHandler::ExecuteFieldAction( 232 FX_BOOL CPDFSDK_ActionHandler::ExecuteFieldAction(
229 const CPDF_Action& action, 233 const CPDF_Action& action,
230 CPDF_AAction::AActionType type, 234 CPDF_AAction::AActionType type,
231 CPDFSDK_Document* pDocument, 235 CPDFSDK_FormFillEnvironment* pFormFillEnv,
232 CPDF_FormField* pFormField, 236 CPDF_FormField* pFormField,
233 PDFSDK_FieldAction& data, 237 PDFSDK_FieldAction& data,
234 std::set<CPDF_Dictionary*>* visited) { 238 std::set<CPDF_Dictionary*>* visited) {
235 CPDF_Dictionary* pDict = action.GetDict(); 239 CPDF_Dictionary* pDict = action.GetDict();
236 if (pdfium::ContainsKey(*visited, pDict)) 240 if (pdfium::ContainsKey(*visited, pDict))
237 return FALSE; 241 return FALSE;
238 242
239 visited->insert(pDict); 243 visited->insert(pDict);
240 244
241 CPDFSDK_FormFillEnvironment* pEnv = pDocument->GetEnv(); 245 ASSERT(pFormFillEnv);
242 ASSERT(pEnv);
243 if (action.GetType() == CPDF_Action::JavaScript) { 246 if (action.GetType() == CPDF_Action::JavaScript) {
244 if (pEnv->IsJSInitiated()) { 247 if (pFormFillEnv->IsJSInitiated()) {
245 CFX_WideString swJS = action.GetJavaScript(); 248 CFX_WideString swJS = action.GetJavaScript();
246 if (!swJS.IsEmpty()) { 249 if (!swJS.IsEmpty()) {
247 RunFieldJavaScript(pDocument, pFormField, type, data, swJS); 250 RunFieldJavaScript(pFormFillEnv, pFormField, type, data, swJS);
248 if (!IsValidField(pDocument, pFormField->GetFieldDict())) 251 if (!IsValidField(pFormFillEnv, pFormField->GetFieldDict()))
249 return FALSE; 252 return FALSE;
250 } 253 }
251 } 254 }
252 } else { 255 } else {
253 DoAction_NoJs(action, pDocument); 256 DoAction_NoJs(action, pFormFillEnv);
254 } 257 }
255 258
256 for (int32_t i = 0, sz = action.GetSubActionsCount(); i < sz; i++) { 259 for (int32_t i = 0, sz = action.GetSubActionsCount(); i < sz; i++) {
257 CPDF_Action subaction = action.GetSubAction(i); 260 CPDF_Action subaction = action.GetSubAction(i);
258 if (!ExecuteFieldAction(subaction, type, pDocument, pFormField, data, 261 if (!ExecuteFieldAction(subaction, type, pFormFillEnv, pFormField, data,
259 visited)) 262 visited))
260 return FALSE; 263 return FALSE;
261 } 264 }
262 265
263 return TRUE; 266 return TRUE;
264 } 267 }
265 268
266 FX_BOOL CPDFSDK_ActionHandler::ExecuteScreenAction( 269 FX_BOOL CPDFSDK_ActionHandler::ExecuteScreenAction(
267 const CPDF_Action& action, 270 const CPDF_Action& action,
268 CPDF_AAction::AActionType type, 271 CPDF_AAction::AActionType type,
269 CPDFSDK_Document* pDocument, 272 CPDFSDK_FormFillEnvironment* pFormFillEnv,
270 CPDFSDK_Annot* pScreen, 273 CPDFSDK_Annot* pScreen,
271 std::set<CPDF_Dictionary*>* visited) { 274 std::set<CPDF_Dictionary*>* visited) {
272 CPDF_Dictionary* pDict = action.GetDict(); 275 CPDF_Dictionary* pDict = action.GetDict();
273 if (pdfium::ContainsKey(*visited, pDict)) 276 if (pdfium::ContainsKey(*visited, pDict))
274 return FALSE; 277 return FALSE;
275 278
276 visited->insert(pDict); 279 visited->insert(pDict);
277 280
278 CPDFSDK_FormFillEnvironment* pEnv = pDocument->GetEnv(); 281 ASSERT(pFormFillEnv);
279 ASSERT(pEnv);
280 if (action.GetType() == CPDF_Action::JavaScript) { 282 if (action.GetType() == CPDF_Action::JavaScript) {
281 if (pEnv->IsJSInitiated()) { 283 if (pFormFillEnv->IsJSInitiated()) {
282 CFX_WideString swJS = action.GetJavaScript(); 284 CFX_WideString swJS = action.GetJavaScript();
283 if (!swJS.IsEmpty()) { 285 if (!swJS.IsEmpty()) {
284 IJS_Runtime* pRuntime = pDocument->GetJsRuntime(); 286 IJS_Runtime* pRuntime = pFormFillEnv->GetJSRuntime();
285 IJS_Context* pContext = pRuntime->NewContext(); 287 IJS_Context* pContext = pRuntime->NewContext();
286 CFX_WideString csInfo; 288 CFX_WideString csInfo;
287 FX_BOOL bRet = pContext->RunScript(swJS, &csInfo); 289 FX_BOOL bRet = pContext->RunScript(swJS, &csInfo);
288 if (!bRet) { 290 if (!bRet) {
289 // FIXME: return error. 291 // FIXME: return error.
290 } 292 }
291 293
292 pRuntime->ReleaseContext(pContext); 294 pRuntime->ReleaseContext(pContext);
293 } 295 }
294 } 296 }
295 } else { 297 } else {
296 DoAction_NoJs(action, pDocument); 298 DoAction_NoJs(action, pFormFillEnv);
297 } 299 }
298 300
299 for (int32_t i = 0, sz = action.GetSubActionsCount(); i < sz; i++) { 301 for (int32_t i = 0, sz = action.GetSubActionsCount(); i < sz; i++) {
300 CPDF_Action subaction = action.GetSubAction(i); 302 CPDF_Action subaction = action.GetSubAction(i);
301 if (!ExecuteScreenAction(subaction, type, pDocument, pScreen, visited)) 303 if (!ExecuteScreenAction(subaction, type, pFormFillEnv, pScreen, visited))
302 return FALSE; 304 return FALSE;
303 } 305 }
304 306
305 return TRUE; 307 return TRUE;
306 } 308 }
307 309
308 FX_BOOL CPDFSDK_ActionHandler::ExecuteBookMark( 310 FX_BOOL CPDFSDK_ActionHandler::ExecuteBookMark(
309 const CPDF_Action& action, 311 const CPDF_Action& action,
310 CPDFSDK_Document* pDocument, 312 CPDFSDK_FormFillEnvironment* pFormFillEnv,
311 CPDF_Bookmark* pBookmark, 313 CPDF_Bookmark* pBookmark,
312 std::set<CPDF_Dictionary*>* visited) { 314 std::set<CPDF_Dictionary*>* visited) {
313 CPDF_Dictionary* pDict = action.GetDict(); 315 CPDF_Dictionary* pDict = action.GetDict();
314 if (pdfium::ContainsKey(*visited, pDict)) 316 if (pdfium::ContainsKey(*visited, pDict))
315 return FALSE; 317 return FALSE;
316 318
317 visited->insert(pDict); 319 visited->insert(pDict);
318 320
319 CPDFSDK_FormFillEnvironment* pEnv = pDocument->GetEnv(); 321 ASSERT(pFormFillEnv);
320 ASSERT(pEnv);
321 if (action.GetType() == CPDF_Action::JavaScript) { 322 if (action.GetType() == CPDF_Action::JavaScript) {
322 if (pEnv->IsJSInitiated()) { 323 if (pFormFillEnv->IsJSInitiated()) {
323 CFX_WideString swJS = action.GetJavaScript(); 324 CFX_WideString swJS = action.GetJavaScript();
324 if (!swJS.IsEmpty()) { 325 if (!swJS.IsEmpty()) {
325 IJS_Runtime* pRuntime = pDocument->GetJsRuntime(); 326 IJS_Runtime* pRuntime = pFormFillEnv->GetJSRuntime();
326 IJS_Context* pContext = pRuntime->NewContext(); 327 IJS_Context* pContext = pRuntime->NewContext();
327 pContext->OnBookmark_MouseUp(pBookmark); 328 pContext->OnBookmark_MouseUp(pBookmark);
328 329
329 CFX_WideString csInfo; 330 CFX_WideString csInfo;
330 FX_BOOL bRet = pContext->RunScript(swJS, &csInfo); 331 FX_BOOL bRet = pContext->RunScript(swJS, &csInfo);
331 if (!bRet) { 332 if (!bRet) {
332 // FIXME: return error. 333 // FIXME: return error.
333 } 334 }
334 335
335 pRuntime->ReleaseContext(pContext); 336 pRuntime->ReleaseContext(pContext);
336 } 337 }
337 } 338 }
338 } else { 339 } else {
339 DoAction_NoJs(action, pDocument); 340 DoAction_NoJs(action, pFormFillEnv);
340 } 341 }
341 342
342 for (int32_t i = 0, sz = action.GetSubActionsCount(); i < sz; i++) { 343 for (int32_t i = 0, sz = action.GetSubActionsCount(); i < sz; i++) {
343 CPDF_Action subaction = action.GetSubAction(i); 344 CPDF_Action subaction = action.GetSubAction(i);
344 if (!ExecuteBookMark(subaction, pDocument, pBookmark, visited)) 345 if (!ExecuteBookMark(subaction, pFormFillEnv, pBookmark, visited))
345 return FALSE; 346 return FALSE;
346 } 347 }
347 348
348 return TRUE; 349 return TRUE;
349 } 350 }
350 351
351 void CPDFSDK_ActionHandler::DoAction_NoJs(const CPDF_Action& action, 352 void CPDFSDK_ActionHandler::DoAction_NoJs(
352 CPDFSDK_Document* pDocument) { 353 const CPDF_Action& action,
353 ASSERT(pDocument); 354 CPDFSDK_FormFillEnvironment* pFormFillEnv) {
355 ASSERT(pFormFillEnv);
354 356
355 switch (action.GetType()) { 357 switch (action.GetType()) {
356 case CPDF_Action::GoTo: 358 case CPDF_Action::GoTo:
357 DoAction_GoTo(pDocument, action); 359 DoAction_GoTo(pFormFillEnv, action);
358 break; 360 break;
359 case CPDF_Action::GoToR: 361 case CPDF_Action::GoToR:
360 DoAction_GoToR(pDocument, action); 362 DoAction_GoToR(pFormFillEnv, action);
361 break; 363 break;
362 case CPDF_Action::GoToE: 364 case CPDF_Action::GoToE:
363 break; 365 break;
364 case CPDF_Action::Launch: 366 case CPDF_Action::Launch:
365 DoAction_Launch(pDocument, action); 367 DoAction_Launch(pFormFillEnv, action);
366 break; 368 break;
367 case CPDF_Action::Thread: 369 case CPDF_Action::Thread:
368 break; 370 break;
369 case CPDF_Action::URI: 371 case CPDF_Action::URI:
370 DoAction_URI(pDocument, action); 372 DoAction_URI(pFormFillEnv, action);
371 break; 373 break;
372 case CPDF_Action::Sound: 374 case CPDF_Action::Sound:
373 break; 375 break;
374 case CPDF_Action::Movie: 376 case CPDF_Action::Movie:
375 break; 377 break;
376 case CPDF_Action::Hide: 378 case CPDF_Action::Hide:
377 DoAction_Hide(action, pDocument); 379 DoAction_Hide(action, pFormFillEnv);
378 break; 380 break;
379 case CPDF_Action::Named: 381 case CPDF_Action::Named:
380 DoAction_Named(pDocument, action); 382 DoAction_Named(pFormFillEnv, action);
381 break; 383 break;
382 case CPDF_Action::SubmitForm: 384 case CPDF_Action::SubmitForm:
383 DoAction_SubmitForm(action, pDocument); 385 DoAction_SubmitForm(action, pFormFillEnv);
384 break; 386 break;
385 case CPDF_Action::ResetForm: 387 case CPDF_Action::ResetForm:
386 DoAction_ResetForm(action, pDocument); 388 DoAction_ResetForm(action, pFormFillEnv);
387 break; 389 break;
388 case CPDF_Action::ImportData: 390 case CPDF_Action::ImportData:
389 DoAction_ImportData(action, pDocument); 391 DoAction_ImportData(action, pFormFillEnv);
390 break; 392 break;
391 case CPDF_Action::JavaScript: 393 case CPDF_Action::JavaScript:
392 ASSERT(FALSE); 394 ASSERT(FALSE);
393 break; 395 break;
394 case CPDF_Action::SetOCGState: 396 case CPDF_Action::SetOCGState:
395 DoAction_SetOCGState(pDocument, action); 397 DoAction_SetOCGState(pFormFillEnv, action);
396 break; 398 break;
397 case CPDF_Action::Rendition: 399 case CPDF_Action::Rendition:
398 break; 400 break;
399 case CPDF_Action::Trans: 401 case CPDF_Action::Trans:
400 break; 402 break;
401 case CPDF_Action::GoTo3DView: 403 case CPDF_Action::GoTo3DView:
402 break; 404 break;
403 default: 405 default:
404 break; 406 break;
405 } 407 }
406 } 408 }
407 409
408 FX_BOOL CPDFSDK_ActionHandler::IsValidDocView(CPDFSDK_Document* pDocument) { 410 FX_BOOL CPDFSDK_ActionHandler::IsValidDocView(
409 ASSERT(pDocument); 411 CPDFSDK_FormFillEnvironment* pFormFillEnv) {
412 ASSERT(pFormFillEnv);
410 return TRUE; 413 return TRUE;
411 } 414 }
412 415
413 void CPDFSDK_ActionHandler::DoAction_GoTo(CPDFSDK_Document* pDocument, 416 void CPDFSDK_ActionHandler::DoAction_GoTo(
414 const CPDF_Action& action) { 417 CPDFSDK_FormFillEnvironment* pFormFillEnv,
418 const CPDF_Action& action) {
415 ASSERT(action.GetDict()); 419 ASSERT(action.GetDict());
416 420
417 CPDF_Document* pPDFDocument = pDocument->GetPDFDocument(); 421 CPDF_Document* pPDFDocument =
422 pFormFillEnv->GetSDKDocument()->GetPDFDocument();
418 ASSERT(pPDFDocument); 423 ASSERT(pPDFDocument);
419 424
420 CPDF_Dest MyDest = action.GetDest(pPDFDocument); 425 CPDF_Dest MyDest = action.GetDest(pPDFDocument);
421 int nPageIndex = MyDest.GetPageIndex(pPDFDocument); 426 int nPageIndex = MyDest.GetPageIndex(pPDFDocument);
422 int nFitType = MyDest.GetZoomMode(); 427 int nFitType = MyDest.GetZoomMode();
423 const CPDF_Array* pMyArray = ToArray(MyDest.GetObject()); 428 const CPDF_Array* pMyArray = ToArray(MyDest.GetObject());
424 float* pPosAry = nullptr; 429 float* pPosAry = nullptr;
425 int sizeOfAry = 0; 430 int sizeOfAry = 0;
426 if (pMyArray) { 431 if (pMyArray) {
427 pPosAry = new float[pMyArray->GetCount()]; 432 pPosAry = new float[pMyArray->GetCount()];
428 int j = 0; 433 int j = 0;
429 for (size_t i = 2; i < pMyArray->GetCount(); i++) { 434 for (size_t i = 2; i < pMyArray->GetCount(); i++) {
430 pPosAry[j++] = pMyArray->GetFloatAt(i); 435 pPosAry[j++] = pMyArray->GetFloatAt(i);
431 } 436 }
432 sizeOfAry = j; 437 sizeOfAry = j;
433 } 438 }
434 439
435 CPDFSDK_FormFillEnvironment* pApp = pDocument->GetEnv(); 440 pFormFillEnv->DoGoToAction(nPageIndex, nFitType, pPosAry, sizeOfAry);
436 pApp->DoGoToAction(nPageIndex, nFitType, pPosAry, sizeOfAry);
437 delete[] pPosAry; 441 delete[] pPosAry;
438 } 442 }
439 443
440 void CPDFSDK_ActionHandler::DoAction_GoToR(CPDFSDK_Document* pDocument, 444 void CPDFSDK_ActionHandler::DoAction_GoToR(
441 const CPDF_Action& action) {} 445 CPDFSDK_FormFillEnvironment* pFormFillEnv,
446 const CPDF_Action& action) {}
442 447
443 void CPDFSDK_ActionHandler::DoAction_Launch(CPDFSDK_Document* pDocument, 448 void CPDFSDK_ActionHandler::DoAction_Launch(
444 const CPDF_Action& action) {} 449 CPDFSDK_FormFillEnvironment* pFormFillEnv,
450 const CPDF_Action& action) {}
445 451
446 void CPDFSDK_ActionHandler::DoAction_URI(CPDFSDK_Document* pDocument, 452 void CPDFSDK_ActionHandler::DoAction_URI(
447 const CPDF_Action& action) { 453 CPDFSDK_FormFillEnvironment* pFormFillEnv,
454 const CPDF_Action& action) {
448 ASSERT(action.GetDict()); 455 ASSERT(action.GetDict());
449 456
450 CPDFSDK_FormFillEnvironment* pApp = pDocument->GetEnv(); 457 CFX_ByteString sURI =
451 CFX_ByteString sURI = action.GetURI(pDocument->GetPDFDocument()); 458 action.GetURI(pFormFillEnv->GetSDKDocument()->GetPDFDocument());
452 pApp->DoURIAction(sURI.c_str()); 459 pFormFillEnv->DoURIAction(sURI.c_str());
453 } 460 }
454 461
455 void CPDFSDK_ActionHandler::DoAction_Named(CPDFSDK_Document* pDocument, 462 void CPDFSDK_ActionHandler::DoAction_Named(
456 const CPDF_Action& action) { 463 CPDFSDK_FormFillEnvironment* pFormFillEnv,
464 const CPDF_Action& action) {
457 ASSERT(action.GetDict()); 465 ASSERT(action.GetDict());
458 466
459 CFX_ByteString csName = action.GetNamedAction(); 467 CFX_ByteString csName = action.GetNamedAction();
460 pDocument->GetEnv()->ExecuteNamedAction(csName.c_str()); 468 pFormFillEnv->ExecuteNamedAction(csName.c_str());
461 } 469 }
462 470
463 void CPDFSDK_ActionHandler::DoAction_SetOCGState(CPDFSDK_Document* pDocument, 471 void CPDFSDK_ActionHandler::DoAction_SetOCGState(
464 const CPDF_Action& action) {} 472 CPDFSDK_FormFillEnvironment* pFormFillEnv,
473 const CPDF_Action& action) {}
465 474
466 void CPDFSDK_ActionHandler::RunFieldJavaScript(CPDFSDK_Document* pDocument, 475 void CPDFSDK_ActionHandler::RunFieldJavaScript(
467 CPDF_FormField* pFormField, 476 CPDFSDK_FormFillEnvironment* pFormFillEnv,
468 CPDF_AAction::AActionType type, 477 CPDF_FormField* pFormField,
469 PDFSDK_FieldAction& data, 478 CPDF_AAction::AActionType type,
470 const CFX_WideString& script) { 479 PDFSDK_FieldAction& data,
480 const CFX_WideString& script) {
471 ASSERT(type != CPDF_AAction::Calculate); 481 ASSERT(type != CPDF_AAction::Calculate);
472 ASSERT(type != CPDF_AAction::Format); 482 ASSERT(type != CPDF_AAction::Format);
473 483
474 IJS_Runtime* pRuntime = pDocument->GetJsRuntime(); 484 IJS_Runtime* pRuntime = pFormFillEnv->GetJSRuntime();
475 IJS_Context* pContext = pRuntime->NewContext(); 485 IJS_Context* pContext = pRuntime->NewContext();
476 switch (type) { 486 switch (type) {
477 case CPDF_AAction::CursorEnter: 487 case CPDF_AAction::CursorEnter:
478 pContext->OnField_MouseEnter(data.bModifier, data.bShift, pFormField); 488 pContext->OnField_MouseEnter(data.bModifier, data.bShift, pFormField);
479 break; 489 break;
480 case CPDF_AAction::CursorExit: 490 case CPDF_AAction::CursorExit:
481 pContext->OnField_MouseExit(data.bModifier, data.bShift, pFormField); 491 pContext->OnField_MouseExit(data.bModifier, data.bShift, pFormField);
482 break; 492 break;
483 case CPDF_AAction::ButtonDown: 493 case CPDF_AAction::ButtonDown:
484 pContext->OnField_MouseDown(data.bModifier, data.bShift, pFormField); 494 pContext->OnField_MouseDown(data.bModifier, data.bShift, pFormField);
(...skipping 28 matching lines...) Expand all
513 CFX_WideString csInfo; 523 CFX_WideString csInfo;
514 FX_BOOL bRet = pContext->RunScript(script, &csInfo); 524 FX_BOOL bRet = pContext->RunScript(script, &csInfo);
515 if (!bRet) { 525 if (!bRet) {
516 // FIXME: return error. 526 // FIXME: return error.
517 } 527 }
518 528
519 pRuntime->ReleaseContext(pContext); 529 pRuntime->ReleaseContext(pContext);
520 } 530 }
521 531
522 void CPDFSDK_ActionHandler::RunDocumentOpenJavaScript( 532 void CPDFSDK_ActionHandler::RunDocumentOpenJavaScript(
523 CPDFSDK_Document* pDocument, 533 CPDFSDK_FormFillEnvironment* pFormFillEnv,
524 const CFX_WideString& sScriptName, 534 const CFX_WideString& sScriptName,
525 const CFX_WideString& script) { 535 const CFX_WideString& script) {
526 IJS_Runtime* pRuntime = pDocument->GetJsRuntime(); 536 IJS_Runtime* pRuntime = pFormFillEnv->GetJSRuntime();
527 IJS_Context* pContext = pRuntime->NewContext(); 537 IJS_Context* pContext = pRuntime->NewContext();
528 pContext->OnDoc_Open(pDocument->GetEnv(), sScriptName); 538 pContext->OnDoc_Open(pFormFillEnv, sScriptName);
529 539
530 CFX_WideString csInfo; 540 CFX_WideString csInfo;
531 FX_BOOL bRet = pContext->RunScript(script, &csInfo); 541 FX_BOOL bRet = pContext->RunScript(script, &csInfo);
532 if (!bRet) { 542 if (!bRet) {
533 // FIXME: return error. 543 // FIXME: return error.
534 } 544 }
535 545
536 pRuntime->ReleaseContext(pContext); 546 pRuntime->ReleaseContext(pContext);
537 } 547 }
538 548
539 void CPDFSDK_ActionHandler::RunDocumentPageJavaScript( 549 void CPDFSDK_ActionHandler::RunDocumentPageJavaScript(
540 CPDFSDK_Document* pDocument, 550 CPDFSDK_FormFillEnvironment* pFormFillEnv,
541 CPDF_AAction::AActionType type, 551 CPDF_AAction::AActionType type,
542 const CFX_WideString& script) { 552 const CFX_WideString& script) {
543 IJS_Runtime* pRuntime = pDocument->GetJsRuntime(); 553 IJS_Runtime* pRuntime = pFormFillEnv->GetJSRuntime();
544 IJS_Context* pContext = pRuntime->NewContext(); 554 IJS_Context* pContext = pRuntime->NewContext();
545 switch (type) { 555 switch (type) {
546 case CPDF_AAction::OpenPage: 556 case CPDF_AAction::OpenPage:
547 pContext->OnPage_Open(pDocument->GetEnv()); 557 pContext->OnPage_Open(pFormFillEnv);
548 break; 558 break;
549 case CPDF_AAction::ClosePage: 559 case CPDF_AAction::ClosePage:
550 pContext->OnPage_Close(pDocument->GetEnv()); 560 pContext->OnPage_Close(pFormFillEnv);
551 break; 561 break;
552 case CPDF_AAction::CloseDocument: 562 case CPDF_AAction::CloseDocument:
553 pContext->OnDoc_WillClose(pDocument->GetEnv()); 563 pContext->OnDoc_WillClose(pFormFillEnv);
554 break; 564 break;
555 case CPDF_AAction::SaveDocument: 565 case CPDF_AAction::SaveDocument:
556 pContext->OnDoc_WillSave(pDocument->GetEnv()); 566 pContext->OnDoc_WillSave(pFormFillEnv);
557 break; 567 break;
558 case CPDF_AAction::DocumentSaved: 568 case CPDF_AAction::DocumentSaved:
559 pContext->OnDoc_DidSave(pDocument->GetEnv()); 569 pContext->OnDoc_DidSave(pFormFillEnv);
560 break; 570 break;
561 case CPDF_AAction::PrintDocument: 571 case CPDF_AAction::PrintDocument:
562 pContext->OnDoc_WillPrint(pDocument->GetEnv()); 572 pContext->OnDoc_WillPrint(pFormFillEnv);
563 break; 573 break;
564 case CPDF_AAction::DocumentPrinted: 574 case CPDF_AAction::DocumentPrinted:
565 pContext->OnDoc_DidPrint(pDocument->GetEnv()); 575 pContext->OnDoc_DidPrint(pFormFillEnv);
566 break; 576 break;
567 case CPDF_AAction::PageVisible: 577 case CPDF_AAction::PageVisible:
568 pContext->OnPage_InView(pDocument->GetEnv()); 578 pContext->OnPage_InView(pFormFillEnv);
569 break; 579 break;
570 case CPDF_AAction::PageInvisible: 580 case CPDF_AAction::PageInvisible:
571 pContext->OnPage_OutView(pDocument->GetEnv()); 581 pContext->OnPage_OutView(pFormFillEnv);
572 break; 582 break;
573 default: 583 default:
574 ASSERT(FALSE); 584 ASSERT(FALSE);
575 break; 585 break;
576 } 586 }
577 587
578 CFX_WideString csInfo; 588 CFX_WideString csInfo;
579 FX_BOOL bRet = pContext->RunScript(script, &csInfo); 589 FX_BOOL bRet = pContext->RunScript(script, &csInfo);
580 if (!bRet) { 590 if (!bRet) {
581 // FIXME: return error. 591 // FIXME: return error.
582 } 592 }
583 593
584 pRuntime->ReleaseContext(pContext); 594 pRuntime->ReleaseContext(pContext);
585 } 595 }
586 596
587 FX_BOOL CPDFSDK_ActionHandler::DoAction_Hide(const CPDF_Action& action, 597 FX_BOOL CPDFSDK_ActionHandler::DoAction_Hide(
588 CPDFSDK_Document* pDocument) { 598 const CPDF_Action& action,
589 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); 599 CPDFSDK_FormFillEnvironment* pFormFillEnv) {
600 CPDFSDK_InterForm* pInterForm =
601 pFormFillEnv->GetSDKDocument()->GetInterForm();
590 if (pInterForm->DoAction_Hide(action)) { 602 if (pInterForm->DoAction_Hide(action)) {
591 pDocument->SetChangeMark(); 603 pFormFillEnv->GetSDKDocument()->SetChangeMark();
592 return TRUE; 604 return TRUE;
593 } 605 }
594 606
595 return FALSE; 607 return FALSE;
596 } 608 }
597 609
598 FX_BOOL CPDFSDK_ActionHandler::DoAction_SubmitForm( 610 FX_BOOL CPDFSDK_ActionHandler::DoAction_SubmitForm(
599 const CPDF_Action& action, 611 const CPDF_Action& action,
600 CPDFSDK_Document* pDocument) { 612 CPDFSDK_FormFillEnvironment* pFormFillEnv) {
601 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); 613 CPDFSDK_InterForm* pInterForm =
614 pFormFillEnv->GetSDKDocument()->GetInterForm();
602 return pInterForm->DoAction_SubmitForm(action); 615 return pInterForm->DoAction_SubmitForm(action);
603 } 616 }
604 617
605 FX_BOOL CPDFSDK_ActionHandler::DoAction_ResetForm(const CPDF_Action& action, 618 FX_BOOL CPDFSDK_ActionHandler::DoAction_ResetForm(
606 CPDFSDK_Document* pDocument) { 619 const CPDF_Action& action,
607 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); 620 CPDFSDK_FormFillEnvironment* pFormFillEnv) {
621 CPDFSDK_InterForm* pInterForm =
622 pFormFillEnv->GetSDKDocument()->GetInterForm();
608 return pInterForm->DoAction_ResetForm(action); 623 return pInterForm->DoAction_ResetForm(action);
609 } 624 }
610 625
611 FX_BOOL CPDFSDK_ActionHandler::DoAction_ImportData( 626 FX_BOOL CPDFSDK_ActionHandler::DoAction_ImportData(
612 const CPDF_Action& action, 627 const CPDF_Action& action,
613 CPDFSDK_Document* pDocument) { 628 CPDFSDK_FormFillEnvironment* pFormFillEnv) {
614 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); 629 CPDFSDK_InterForm* pInterForm =
630 pFormFillEnv->GetSDKDocument()->GetInterForm();
615 if (pInterForm->DoAction_ImportData(action)) { 631 if (pInterForm->DoAction_ImportData(action)) {
616 pDocument->SetChangeMark(); 632 pFormFillEnv->GetSDKDocument()->SetChangeMark();
617 return TRUE; 633 return TRUE;
618 } 634 }
619 635
620 return FALSE; 636 return FALSE;
621 } 637 }
OLDNEW
« no previous file with comments | « fpdfsdk/fsdk_actionhandler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698