blob: d772e66a5a5e926181352578c0f719f52e033017 [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 Sinclaire0345a42017-10-30 20:20:42 +00007#ifndef FXJS_CJS_FIELD_H_
8#define FXJS_CJS_FIELD_H_
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07009
Dan Sinclair3ebd1212016-03-09 09:59:23 -050010#include <vector>
Tom Sepez9a3f8122015-04-07 15:35:48 -070011
Tom Sepez2cbae732018-06-26 15:11:28 +000012#include "fxjs/cjs_document.h"
Lei Zhang31beedc2018-10-18 21:09:55 +000013#include "fxjs/cjs_object.h"
Tom Sepez221f0b32018-06-04 22:11:27 +000014#include "fxjs/js_define.h"
Tom Sepez9a3f8122015-04-07 15:35:48 -070015
Dan Sinclair51230322017-10-30 15:36:02 +000016class CPDF_FormControl;
Tom Sepez37458412015-10-06 11:33:46 -070017class CPDFSDK_Widget;
Dan Sinclair51230322017-10-30 15:36:02 +000018struct CJS_DelayData;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070019
Nico Weber9d8ec5a2015-08-04 13:00:21 -070020enum FIELD_PROP {
Nico Weber9d8ec5a2015-08-04 13:00:21 -070021 FP_BORDERSTYLE,
Nico Weber9d8ec5a2015-08-04 13:00:21 -070022 FP_CURRENTVALUEINDICES,
Nico Weber9d8ec5a2015-08-04 13:00:21 -070023 FP_DISPLAY,
Nico Weber9d8ec5a2015-08-04 13:00:21 -070024 FP_HIDDEN,
Nico Weber9d8ec5a2015-08-04 13:00:21 -070025 FP_LINEWIDTH,
Nico Weber9d8ec5a2015-08-04 13:00:21 -070026 FP_RECT,
Nico Weber9d8ec5a2015-08-04 13:00:21 -070027 FP_VALUE
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070028};
29
Tom Sepez55865452018-08-27 20:18:04 +000030class CJS_Field final : public CJS_Object {
Nico Weber9d8ec5a2015-08-04 13:00:21 -070031 public:
Dan Sinclairf7435522018-02-05 22:27:22 +000032 static int GetObjDefnID();
33 static void DefineJSObjects(CFXJS_Engine* pEngine);
dan sinclair111488c2017-10-19 14:30:15 -040034 static void DoDelay(CPDFSDK_FormFillEnvironment* pFormFillEnv,
35 CJS_DelayData* pData);
36
Tom Sepez36aae4f2018-06-04 19:44:37 +000037 CJS_Field(v8::Local<v8::Object> pObject, CJS_Runtime* pRuntime);
Dan Sinclairf7435522018-02-05 22:27:22 +000038 ~CJS_Field() override;
39
Dan Sinclairf7435522018-02-05 22:27:22 +000040 bool AttachField(CJS_Document* pDocument, const WideString& csFieldName);
41
Nico Weber563f62a2019-02-12 18:47:12 +000042 JS_STATIC_PROP(alignment, alignment, CJS_Field)
43 JS_STATIC_PROP(borderStyle, border_style, CJS_Field)
44 JS_STATIC_PROP(buttonAlignX, button_align_x, CJS_Field)
45 JS_STATIC_PROP(buttonAlignY, button_align_y, CJS_Field)
46 JS_STATIC_PROP(buttonFitBounds, button_fit_bounds, CJS_Field)
47 JS_STATIC_PROP(buttonPosition, button_position, CJS_Field)
48 JS_STATIC_PROP(buttonScaleHow, button_scale_how, CJS_Field)
49 JS_STATIC_PROP(ButtonScaleWhen, button_scale_when, CJS_Field)
50 JS_STATIC_PROP(calcOrderIndex, calc_order_index, CJS_Field)
51 JS_STATIC_PROP(charLimit, char_limit, CJS_Field)
52 JS_STATIC_PROP(comb, comb, CJS_Field)
53 JS_STATIC_PROP(commitOnSelChange, commit_on_sel_change, CJS_Field)
54 JS_STATIC_PROP(currentValueIndices, current_value_indices, CJS_Field)
55 JS_STATIC_PROP(defaultStyle, default_style, CJS_Field)
56 JS_STATIC_PROP(defaultValue, default_value, CJS_Field)
57 JS_STATIC_PROP(doNotScroll, do_not_scroll, CJS_Field)
58 JS_STATIC_PROP(doNotSpellCheck, do_not_spell_check, CJS_Field)
59 JS_STATIC_PROP(delay, delay, CJS_Field)
60 JS_STATIC_PROP(display, display, CJS_Field)
61 JS_STATIC_PROP(doc, doc, CJS_Field)
62 JS_STATIC_PROP(editable, editable, CJS_Field)
63 JS_STATIC_PROP(exportValues, export_values, CJS_Field)
64 JS_STATIC_PROP(fileSelect, file_select, CJS_Field)
65 JS_STATIC_PROP(fillColor, fill_color, CJS_Field)
66 JS_STATIC_PROP(hidden, hidden, CJS_Field)
67 JS_STATIC_PROP(highlight, highlight, CJS_Field)
68 JS_STATIC_PROP(lineWidth, line_width, CJS_Field)
69 JS_STATIC_PROP(multiline, multiline, CJS_Field)
70 JS_STATIC_PROP(multipleSelection, multiple_selection, CJS_Field)
71 JS_STATIC_PROP(name, name, CJS_Field)
72 JS_STATIC_PROP(numItems, num_items, CJS_Field)
73 JS_STATIC_PROP(page, page, CJS_Field)
74 JS_STATIC_PROP(password, password, CJS_Field)
75 JS_STATIC_PROP(print, print, CJS_Field)
76 JS_STATIC_PROP(radiosInUnison, radios_in_unison, CJS_Field)
77 JS_STATIC_PROP(readonly, readonly, CJS_Field)
78 JS_STATIC_PROP(rect, rect, CJS_Field)
79 JS_STATIC_PROP(required, required, CJS_Field)
80 JS_STATIC_PROP(richText, rich_text, CJS_Field)
81 JS_STATIC_PROP(richValue, rich_value, CJS_Field)
82 JS_STATIC_PROP(rotation, rotation, CJS_Field)
83 JS_STATIC_PROP(source, source, CJS_Field)
84 JS_STATIC_PROP(strokeColor, stroke_color, CJS_Field)
85 JS_STATIC_PROP(style, style, CJS_Field)
86 JS_STATIC_PROP(submitName, submit_name, CJS_Field)
87 JS_STATIC_PROP(textColor, text_color, CJS_Field)
88 JS_STATIC_PROP(textFont, text_font, CJS_Field)
89 JS_STATIC_PROP(textSize, text_size, CJS_Field)
90 JS_STATIC_PROP(type, type, CJS_Field)
91 JS_STATIC_PROP(userName, user_name, CJS_Field)
92 JS_STATIC_PROP(value, value, CJS_Field)
93 JS_STATIC_PROP(valueAsString, value_as_string, CJS_Field)
Dan Sinclairf7435522018-02-05 22:27:22 +000094
Nico Weber563f62a2019-02-12 18:47:12 +000095 JS_STATIC_METHOD(browseForFileToSubmit, CJS_Field)
96 JS_STATIC_METHOD(buttonGetCaption, CJS_Field)
97 JS_STATIC_METHOD(buttonGetIcon, CJS_Field)
98 JS_STATIC_METHOD(buttonImportIcon, CJS_Field)
99 JS_STATIC_METHOD(buttonSetCaption, CJS_Field)
100 JS_STATIC_METHOD(buttonSetIcon, CJS_Field)
101 JS_STATIC_METHOD(checkThisBox, CJS_Field)
102 JS_STATIC_METHOD(clearItems, CJS_Field)
103 JS_STATIC_METHOD(defaultIsChecked, CJS_Field)
104 JS_STATIC_METHOD(deleteItemAt, CJS_Field)
105 JS_STATIC_METHOD(getArray, CJS_Field)
106 JS_STATIC_METHOD(getItemAt, CJS_Field)
107 JS_STATIC_METHOD(getLock, CJS_Field)
108 JS_STATIC_METHOD(insertItemAt, CJS_Field)
109 JS_STATIC_METHOD(isBoxChecked, CJS_Field)
110 JS_STATIC_METHOD(isDefaultChecked, CJS_Field)
111 JS_STATIC_METHOD(setAction, CJS_Field)
112 JS_STATIC_METHOD(setFocus, CJS_Field)
113 JS_STATIC_METHOD(setItems, CJS_Field)
114 JS_STATIC_METHOD(setLock, CJS_Field)
115 JS_STATIC_METHOD(signatureGetModifications, CJS_Field)
116 JS_STATIC_METHOD(signatureGetSeedValue, CJS_Field)
117 JS_STATIC_METHOD(signatureInfo, CJS_Field)
118 JS_STATIC_METHOD(signatureSetSeedValue, CJS_Field)
119 JS_STATIC_METHOD(signatureSign, CJS_Field)
120 JS_STATIC_METHOD(signatureValidate, CJS_Field)
Dan Sinclairf7435522018-02-05 22:27:22 +0000121
Tom Sepez3a6d0582018-08-17 19:28:52 +0000122 CJS_Result get_text_color(CJS_Runtime* pRuntime);
123 CJS_Result set_text_color(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
Dan Sinclairf7435522018-02-05 22:27:22 +0000124
125 private:
126 static int ObjDefnID;
127 static const char kName[];
128 static const JSPropertySpec PropertySpecs[];
129 static const JSMethodSpec MethodSpecs[];
130
Tom Sepez3a6d0582018-08-17 19:28:52 +0000131 CJS_Result get_alignment(CJS_Runtime* pRuntime);
132 CJS_Result set_alignment(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400133
Tom Sepez3a6d0582018-08-17 19:28:52 +0000134 CJS_Result get_border_style(CJS_Runtime* pRuntime);
135 CJS_Result set_border_style(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400136
Tom Sepez3a6d0582018-08-17 19:28:52 +0000137 CJS_Result get_button_align_x(CJS_Runtime* pRuntime);
138 CJS_Result set_button_align_x(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400139
Tom Sepez3a6d0582018-08-17 19:28:52 +0000140 CJS_Result get_button_align_y(CJS_Runtime* pRuntime);
141 CJS_Result set_button_align_y(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400142
Tom Sepez3a6d0582018-08-17 19:28:52 +0000143 CJS_Result get_button_fit_bounds(CJS_Runtime* pRuntime);
144 CJS_Result set_button_fit_bounds(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400145 v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400146
Tom Sepez3a6d0582018-08-17 19:28:52 +0000147 CJS_Result get_button_position(CJS_Runtime* pRuntime);
148 CJS_Result set_button_position(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400149 v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400150
Tom Sepez3a6d0582018-08-17 19:28:52 +0000151 CJS_Result get_button_scale_how(CJS_Runtime* pRuntime);
152 CJS_Result set_button_scale_how(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400153 v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400154
Tom Sepez3a6d0582018-08-17 19:28:52 +0000155 CJS_Result get_button_scale_when(CJS_Runtime* pRuntime);
156 CJS_Result set_button_scale_when(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400157 v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400158
Tom Sepez3a6d0582018-08-17 19:28:52 +0000159 CJS_Result get_calc_order_index(CJS_Runtime* pRuntime);
160 CJS_Result set_calc_order_index(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400161 v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400162
Tom Sepez3a6d0582018-08-17 19:28:52 +0000163 CJS_Result get_char_limit(CJS_Runtime* pRuntime);
164 CJS_Result set_char_limit(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400165
Tom Sepez3a6d0582018-08-17 19:28:52 +0000166 CJS_Result get_comb(CJS_Runtime* pRuntime);
167 CJS_Result set_comb(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400168
Tom Sepez3a6d0582018-08-17 19:28:52 +0000169 CJS_Result get_commit_on_sel_change(CJS_Runtime* pRuntime);
170 CJS_Result set_commit_on_sel_change(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400171 v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400172
Tom Sepez3a6d0582018-08-17 19:28:52 +0000173 CJS_Result get_current_value_indices(CJS_Runtime* pRuntime);
174 CJS_Result set_current_value_indices(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400175 v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400176
Tom Sepez3a6d0582018-08-17 19:28:52 +0000177 CJS_Result get_default_style(CJS_Runtime* pRuntime);
178 CJS_Result set_default_style(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400179
Tom Sepez3a6d0582018-08-17 19:28:52 +0000180 CJS_Result get_default_value(CJS_Runtime* pRuntime);
181 CJS_Result set_default_value(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400182
Tom Sepez3a6d0582018-08-17 19:28:52 +0000183 CJS_Result get_do_not_scroll(CJS_Runtime* pRuntime);
184 CJS_Result set_do_not_scroll(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400185
Tom Sepez3a6d0582018-08-17 19:28:52 +0000186 CJS_Result get_do_not_spell_check(CJS_Runtime* pRuntime);
187 CJS_Result set_do_not_spell_check(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400188 v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400189
Tom Sepez3a6d0582018-08-17 19:28:52 +0000190 CJS_Result get_delay(CJS_Runtime* pRuntime);
191 CJS_Result set_delay(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400192
Tom Sepez3a6d0582018-08-17 19:28:52 +0000193 CJS_Result get_display(CJS_Runtime* pRuntime);
194 CJS_Result set_display(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400195
Tom Sepez3a6d0582018-08-17 19:28:52 +0000196 CJS_Result get_doc(CJS_Runtime* pRuntime);
197 CJS_Result set_doc(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400198
Tom Sepez3a6d0582018-08-17 19:28:52 +0000199 CJS_Result get_editable(CJS_Runtime* pRuntime);
200 CJS_Result set_editable(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400201
Tom Sepez3a6d0582018-08-17 19:28:52 +0000202 CJS_Result get_export_values(CJS_Runtime* pRuntime);
203 CJS_Result set_export_values(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400204
Tom Sepez3a6d0582018-08-17 19:28:52 +0000205 CJS_Result get_file_select(CJS_Runtime* pRuntime);
206 CJS_Result set_file_select(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400207
Tom Sepez3a6d0582018-08-17 19:28:52 +0000208 CJS_Result get_fill_color(CJS_Runtime* pRuntime);
209 CJS_Result set_fill_color(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400210
Tom Sepez3a6d0582018-08-17 19:28:52 +0000211 CJS_Result get_hidden(CJS_Runtime* pRuntime);
212 CJS_Result set_hidden(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400213
Tom Sepez3a6d0582018-08-17 19:28:52 +0000214 CJS_Result get_highlight(CJS_Runtime* pRuntime);
215 CJS_Result set_highlight(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400216
Tom Sepez3a6d0582018-08-17 19:28:52 +0000217 CJS_Result get_line_width(CJS_Runtime* pRuntime);
218 CJS_Result set_line_width(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400219
Tom Sepez3a6d0582018-08-17 19:28:52 +0000220 CJS_Result get_multiline(CJS_Runtime* pRuntime);
221 CJS_Result set_multiline(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400222
Tom Sepez3a6d0582018-08-17 19:28:52 +0000223 CJS_Result get_multiple_selection(CJS_Runtime* pRuntime);
224 CJS_Result set_multiple_selection(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400225 v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400226
Tom Sepez3a6d0582018-08-17 19:28:52 +0000227 CJS_Result get_name(CJS_Runtime* pRuntime);
228 CJS_Result set_name(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400229
Tom Sepez3a6d0582018-08-17 19:28:52 +0000230 CJS_Result get_num_items(CJS_Runtime* pRuntime);
231 CJS_Result set_num_items(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400232
Tom Sepez3a6d0582018-08-17 19:28:52 +0000233 CJS_Result get_page(CJS_Runtime* pRuntime);
234 CJS_Result set_page(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400235
Tom Sepez3a6d0582018-08-17 19:28:52 +0000236 CJS_Result get_password(CJS_Runtime* pRuntime);
237 CJS_Result set_password(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400238
Tom Sepez3a6d0582018-08-17 19:28:52 +0000239 CJS_Result get_print(CJS_Runtime* pRuntime);
240 CJS_Result set_print(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400241
Tom Sepez3a6d0582018-08-17 19:28:52 +0000242 CJS_Result get_radios_in_unison(CJS_Runtime* pRuntime);
243 CJS_Result set_radios_in_unison(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400244 v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400245
Tom Sepez3a6d0582018-08-17 19:28:52 +0000246 CJS_Result get_readonly(CJS_Runtime* pRuntime);
247 CJS_Result set_readonly(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400248
Tom Sepez3a6d0582018-08-17 19:28:52 +0000249 CJS_Result get_rect(CJS_Runtime* pRuntime);
250 CJS_Result set_rect(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400251
Tom Sepez3a6d0582018-08-17 19:28:52 +0000252 CJS_Result get_required(CJS_Runtime* pRuntime);
253 CJS_Result set_required(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400254
Tom Sepez3a6d0582018-08-17 19:28:52 +0000255 CJS_Result get_rich_text(CJS_Runtime* pRuntime);
256 CJS_Result set_rich_text(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400257
Tom Sepez3a6d0582018-08-17 19:28:52 +0000258 CJS_Result get_rich_value(CJS_Runtime* pRuntime);
259 CJS_Result set_rich_value(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400260
Tom Sepez3a6d0582018-08-17 19:28:52 +0000261 CJS_Result get_rotation(CJS_Runtime* pRuntime);
262 CJS_Result set_rotation(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400263
Tom Sepez3a6d0582018-08-17 19:28:52 +0000264 CJS_Result get_stroke_color(CJS_Runtime* pRuntime);
265 CJS_Result set_stroke_color(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400266
Tom Sepez3a6d0582018-08-17 19:28:52 +0000267 CJS_Result get_style(CJS_Runtime* pRuntime);
268 CJS_Result set_style(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400269
Tom Sepez3a6d0582018-08-17 19:28:52 +0000270 CJS_Result get_submit_name(CJS_Runtime* pRuntime);
271 CJS_Result set_submit_name(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400272
Tom Sepez3a6d0582018-08-17 19:28:52 +0000273 CJS_Result get_text_font(CJS_Runtime* pRuntime);
274 CJS_Result set_text_font(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400275
Tom Sepez3a6d0582018-08-17 19:28:52 +0000276 CJS_Result get_text_size(CJS_Runtime* pRuntime);
277 CJS_Result set_text_size(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400278
Tom Sepez3a6d0582018-08-17 19:28:52 +0000279 CJS_Result get_type(CJS_Runtime* pRuntime);
280 CJS_Result set_type(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400281
Tom Sepez3a6d0582018-08-17 19:28:52 +0000282 CJS_Result get_user_name(CJS_Runtime* pRuntime);
283 CJS_Result set_user_name(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400284
Tom Sepez3a6d0582018-08-17 19:28:52 +0000285 CJS_Result get_value(CJS_Runtime* pRuntime);
286 CJS_Result set_value(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400287
Tom Sepez3a6d0582018-08-17 19:28:52 +0000288 CJS_Result get_value_as_string(CJS_Runtime* pRuntime);
289 CJS_Result set_value_as_string(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400290 v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400291
Tom Sepez3a6d0582018-08-17 19:28:52 +0000292 CJS_Result get_source(CJS_Runtime* pRuntime);
293 CJS_Result set_source(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700294
Tom Sepez3a6d0582018-08-17 19:28:52 +0000295 CJS_Result browseForFileToSubmit(
dan sinclair80435cb2017-10-24 21:40:24 -0400296 CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400297 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000298 CJS_Result buttonGetCaption(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400299 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000300 CJS_Result buttonGetIcon(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400301 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000302 CJS_Result buttonImportIcon(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400303 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000304 CJS_Result buttonSetCaption(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400305 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000306 CJS_Result buttonSetIcon(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400307 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000308 CJS_Result checkThisBox(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400309 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000310 CJS_Result clearItems(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400311 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000312 CJS_Result defaultIsChecked(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400313 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000314 CJS_Result deleteItemAt(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400315 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000316 CJS_Result getArray(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400317 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000318 CJS_Result getItemAt(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400319 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000320 CJS_Result getLock(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400321 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000322 CJS_Result insertItemAt(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400323 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000324 CJS_Result isBoxChecked(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400325 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000326 CJS_Result isDefaultChecked(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400327 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000328 CJS_Result setAction(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400329 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000330 CJS_Result setFocus(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400331 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000332 CJS_Result setItems(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400333 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000334 CJS_Result setLock(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400335 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000336 CJS_Result signatureGetModifications(
Dan Sinclair8f524d62017-10-25 13:30:31 -0400337 CJS_Runtime* pRuntime,
338 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000339 CJS_Result signatureGetSeedValue(
Dan Sinclair8f524d62017-10-25 13:30:31 -0400340 CJS_Runtime* pRuntime,
341 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000342 CJS_Result signatureInfo(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400343 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000344 CJS_Result signatureSetSeedValue(
Dan Sinclair8f524d62017-10-25 13:30:31 -0400345 CJS_Runtime* pRuntime,
346 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000347 CJS_Result signatureSign(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400348 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000349 CJS_Result signatureValidate(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400350 const std::vector<v8::Local<v8::Value>>& params);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700351
tsepez4cf55152016-11-02 14:37:54 -0700352 void SetDelay(bool bDelay);
Lei Zhang18915232018-07-12 20:53:40 +0000353 std::vector<CPDF_FormField*> GetFormFields() const;
Lei Zhang4c7ad662018-07-12 20:29:40 +0000354 CPDF_FormField* GetFirstFormField() const;
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700355 CPDF_FormControl* GetSmartFieldControl(CPDF_FormField* pFormField);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700356
tsepez41a53ad2016-03-28 16:59:30 -0700357 void AddDelay_Int(FIELD_PROP prop, int32_t n);
358 void AddDelay_Bool(FIELD_PROP prop, bool b);
Lei Zhang109aa6d2018-09-20 01:21:05 +0000359 void AddDelay_String(FIELD_PROP prop, const ByteString& str);
tsepez41a53ad2016-03-28 16:59:30 -0700360 void AddDelay_Rect(FIELD_PROP prop, const CFX_FloatRect& rect);
tsepez41a53ad2016-03-28 16:59:30 -0700361 void AddDelay_WordArray(FIELD_PROP prop, const std::vector<uint32_t>& array);
362 void AddDelay_WideStringArray(FIELD_PROP prop,
Ryan Harrison275e2602017-09-18 14:23:18 -0400363 const std::vector<WideString>& array);
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700364
365 void DoDelay();
366
Tom Sepezd8ae8f82019-06-12 17:58:33 +0000367 ObservedPtr<CJS_Document> m_pJSDoc;
368 ObservedPtr<CPDFSDK_FormFillEnvironment> m_pFormFillEnv;
Ryan Harrison275e2602017-09-18 14:23:18 -0400369 WideString m_FieldName;
Tom Sepez36aae4f2018-06-04 19:44:37 +0000370 int m_nFormControlIndex = -1;
371 bool m_bCanSet = false;
372 bool m_bDelay = false;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700373};
374
Dan Sinclaire0345a42017-10-30 20:20:42 +0000375#endif // FXJS_CJS_FIELD_H_