1// Copyright 2014 PDFium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7#ifndef FPDFSDK_INCLUDE_JAVASCRIPT_FIELD_H_
8#define FPDFSDK_INCLUDE_JAVASCRIPT_FIELD_H_
9
10#include <string>  // For std::wstring.
11
12// TODO(tsepez): include PWL_Wnd.h for PWL_Color after fixing its IWYU.
13#include "JS_Define.h"
14
15class Document;
16
17enum FIELD_PROP
18{
19	FP_ALIGNMENT,
20	FP_BORDERSTYLE,
21	FP_BUTTONALIGNX,
22	FP_BUTTONALIGNY,
23	FP_BUTTONFITBOUNDS,
24	FP_BUTTONPOSITION,
25	FP_BUTTONSCALEHOW,
26	FP_BUTTONSCALEWHEN,
27	FP_CALCORDERINDEX,
28	FP_CHARLIMIT,
29	FP_COMB,
30	FP_COMMITONSELCHANGE,
31	FP_CURRENTVALUEINDICES,
32	FP_DEFAULTVALUE,
33	FP_DONOTSCROLL,
34	FP_DISPLAY,
35	FP_FILLCOLOR,
36	FP_HIDDEN,
37	FP_HIGHLIGHT,
38	FP_LINEWIDTH,
39	FP_MULTILINE,
40	FP_MULTIPLESELECTION,
41	FP_PASSWORD,
42	FP_RECT,
43	FP_RICHTEXT,
44	FP_RICHVALUE,
45	FP_ROTATION,
46	FP_STROKECOLOR,
47	FP_STYLE,
48	FP_TEXTCOLOR,
49	FP_TEXTFONT,
50	FP_TEXTSIZE,
51	FP_USERNAME,
52	FP_VALUE
53};
54
55class CJS_WideStringArray
56{
57public:
58	CJS_WideStringArray(){}
59	virtual ~CJS_WideStringArray()
60	{
61		for (int i=0,sz=m_Data.GetSize(); i<sz; i++)
62			delete m_Data.GetAt(i);
63		m_Data.RemoveAll();
64	}
65
66	void Add(const CFX_WideString& string)
67	{
68		m_Data.Add(new CFX_WideString(string));
69	}
70
71	int GetSize() const
72	{
73		return m_Data.GetSize();
74	}
75
76	CFX_WideString GetAt(int i) const
77	{
78		return *m_Data.GetAt(i);
79	}
80
81private:
82	CFX_ArrayTemplate<CFX_WideString*>	m_Data;
83};
84
85struct CJS_DelayData
86{
87	CFX_WideString			sFieldName;
88	int						nControlIndex;
89	enum FIELD_PROP			eProp;
90	FX_INT32				num;
91	bool					b;
92	CFX_ByteString			string;
93	CFX_WideString			widestring;
94	CPDF_Rect				rect;
95	CPWL_Color				color;
96	CFX_DWordArray			wordarray;
97	CJS_WideStringArray		widestringarray;
98};
99
100class Field : public CJS_EmbedObj
101{
102public:
103	Field(CJS_Object* pJSObject);
104	virtual ~Field(void);
105
106    FX_BOOL alignment(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
107    FX_BOOL borderStyle(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
108	FX_BOOL buttonAlignX(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
109	FX_BOOL buttonAlignY(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
110	FX_BOOL buttonFitBounds(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
111	FX_BOOL buttonPosition(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
112	FX_BOOL buttonScaleHow(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
113    FX_BOOL buttonScaleWhen(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
114	FX_BOOL calcOrderIndex(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
115	FX_BOOL charLimit(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
116	FX_BOOL comb(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
117	FX_BOOL commitOnSelChange(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
118	FX_BOOL currentValueIndices(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
119    FX_BOOL defaultStyle(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
120	FX_BOOL defaultValue(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
121	FX_BOOL doNotScroll(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
122	FX_BOOL doNotSpellCheck(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
123	FX_BOOL delay(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
124	FX_BOOL display(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
125    FX_BOOL doc(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
126	FX_BOOL editable(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
127	FX_BOOL exportValues(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
128	FX_BOOL fileSelect(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
129	FX_BOOL fillColor(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
130	FX_BOOL hidden(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
131    FX_BOOL highlight(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
132	FX_BOOL lineWidth(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
133	FX_BOOL multiline(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
134	FX_BOOL multipleSelection(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
135	FX_BOOL name(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
136	FX_BOOL numItems(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
137    FX_BOOL page(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
138	FX_BOOL password(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
139	FX_BOOL print(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
140	FX_BOOL radiosInUnison(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
141	FX_BOOL readonly(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
142	FX_BOOL rect(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
143    FX_BOOL required(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
144	FX_BOOL richText(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
145	FX_BOOL richValue(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
146	FX_BOOL rotation(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
147	FX_BOOL strokeColor(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
148	FX_BOOL style(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
149	FX_BOOL submitName(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
150	FX_BOOL textColor(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
151	FX_BOOL textFont(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
152	FX_BOOL textSize(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
153	FX_BOOL type(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
154	FX_BOOL userName(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
155	FX_BOOL value(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
156	FX_BOOL valueAsString(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
157	FX_BOOL source(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
158
159	FX_BOOL browseForFileToSubmit(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
160	FX_BOOL buttonGetCaption(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
161	FX_BOOL buttonGetIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
162	FX_BOOL buttonImportIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
163	FX_BOOL buttonSetCaption(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
164	FX_BOOL buttonSetIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
165	FX_BOOL checkThisBox(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
166	FX_BOOL clearItems(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
167	FX_BOOL defaultIsChecked(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
168	FX_BOOL deleteItemAt(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
169	FX_BOOL getArray(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
170	FX_BOOL getItemAt(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
171	FX_BOOL getLock(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
172	FX_BOOL insertItemAt(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
173	FX_BOOL isBoxChecked(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
174	FX_BOOL isDefaultChecked(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
175	FX_BOOL setAction(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
176	FX_BOOL setFocus(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
177	FX_BOOL setItems(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
178	FX_BOOL setLock(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
179	FX_BOOL signatureGetModifications(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
180	FX_BOOL signatureGetSeedValue(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
181	FX_BOOL signatureInfo(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
182	FX_BOOL signatureSetSeedValue(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
183	FX_BOOL signatureSign(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
184	FX_BOOL signatureValidate(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError);
185
186public:
187	static void SetAlignment(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_ByteString& string);
188    static void SetBorderStyle(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_ByteString& string);
189	static void SetButtonAlignX(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number);
190	static void SetButtonAlignY(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number);
191	static void SetButtonFitBounds(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b);
192	static void SetButtonPosition(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number);
193	static void SetButtonScaleHow(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number);
194    static void SetButtonScaleWhen(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number);
195	static void SetCalcOrderIndex(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number);
196	static void SetCharLimit(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number);
197	static void SetComb(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b);
198	static void SetCommitOnSelChange(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b);
199	static void SetCurrentValueIndices(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_DWordArray& array);
200    static void SetDefaultStyle(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex);
201	static void SetDefaultValue(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_WideString& string);
202	static void SetDoNotScroll(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b);
203	static void SetDisplay(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number);
204	static void SetFillColor(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPWL_Color& color);
205	static void SetHidden(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b);
206    static void SetHighlight(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_ByteString& string);
207	static void SetLineWidth(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number);
208	static void SetMultiline(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b);
209	static void SetMultipleSelection(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b);
210	static void SetPassword(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b);
211	static void SetRect(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPDF_Rect& rect);
212	static void SetRichText(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b);
213	static void SetRichValue(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex);
214	static void SetRotation(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number);
215	static void SetStrokeColor(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPWL_Color& color);
216	static void SetStyle(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_ByteString& string);
217	static void SetTextColor(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPWL_Color& color);
218	static void SetTextFont(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_ByteString& string);
219	static void SetTextSize(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number);
220	static void SetUserName(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_WideString& string);
221	static void SetValue(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CJS_WideStringArray& strArray);
222
223public:
224	static void							AddField(CPDFSDK_Document* pDocument, int nPageIndex, int nFieldType,
225											const CFX_WideString& sName, const CPDF_Rect& rcCoords);
226public:
227	static void							UpdateFormField(CPDFSDK_Document* pDocument, CPDF_FormField* pFormField,
228											FX_BOOL bChangeMark, FX_BOOL bResetAP, FX_BOOL bRefresh);
229	static void							UpdateFormControl(CPDFSDK_Document* pDocument, CPDF_FormControl* pFormControl,
230											FX_BOOL bChangeMark, FX_BOOL bResetAP, FX_BOOL bRefresh);
231
232	static CPDFSDK_Widget*					GetWidget(CPDFSDK_Document* pDocument, CPDF_FormControl* pFormControl);
233	static void							GetFormFields(CPDFSDK_Document* pDocument, const CFX_WideString& csFieldName, CFX_PtrArray& FieldsArray);
234
235	static void							DoDelay(CPDFSDK_Document* pDocument, CJS_DelayData* pData);
236
237public:
238	FX_BOOL								AttachField(Document* pDocument, const CFX_WideString& csFieldName);
239	void								SetDelay(FX_BOOL bDelay);
240	void								SetIsolate(v8::Isolate* isolate) {m_isolate = isolate;}
241protected:
242	void								ParseFieldName(const std::wstring &strFieldNameParsed,std::wstring &strFieldName,int & iControlNo);
243	void								GetFormFields(const CFX_WideString& csFieldName, CFX_PtrArray& FieldsArray);
244	CPDF_FormControl* 					GetSmartFieldControl(CPDF_FormField* pFormField);
245	FX_BOOL								ValueIsOccur(CPDF_FormField* pFormField, CFX_WideString csOptLabel);
246
247	void								AddDelay_Int(enum FIELD_PROP prop, FX_INT32 n);
248	void								AddDelay_Bool(enum FIELD_PROP prop,bool b);
249	void								AddDelay_String(enum FIELD_PROP prop, const CFX_ByteString& string);
250	void								AddDelay_WideString(enum FIELD_PROP prop, const CFX_WideString& string);
251	void								AddDelay_Rect(enum FIELD_PROP prop, const CPDF_Rect& rect);
252	void								AddDelay_Color(enum FIELD_PROP prop, const CPWL_Color& color);
253	void								AddDelay_WordArray(enum FIELD_PROP prop, const CFX_DWordArray& array);
254	void								AddDelay_WideStringArray(enum FIELD_PROP prop, const CJS_WideStringArray& array);
255
256	void								DoDelay();
257public:
258	Document*							m_pJSDoc;
259	CPDFSDK_Document*					m_pDocument;
260	CFX_WideString						m_FieldName;
261	int									m_nFormControlIndex;
262	FX_BOOL								m_bCanSet;
263
264	FX_BOOL								m_bDelay;
265	v8::Isolate*							m_isolate;
266};
267
268class CJS_Field : public CJS_Object
269{
270public:
271	CJS_Field(JSFXObject pObject) : CJS_Object(pObject) {};
272	virtual ~CJS_Field(void){};
273
274	virtual FX_BOOL	InitInstance(IFXJS_Context* cc);
275
276	DECLARE_JS_CLASS(CJS_Field);
277
278    JS_STATIC_PROP(alignment, Field);
279    JS_STATIC_PROP(borderStyle, Field);
280	JS_STATIC_PROP(buttonAlignX, Field);
281	JS_STATIC_PROP(buttonAlignY, Field);
282	JS_STATIC_PROP(buttonFitBounds, Field);
283	JS_STATIC_PROP(buttonPosition, Field);
284	JS_STATIC_PROP(buttonScaleHow, Field);
285    JS_STATIC_PROP(buttonScaleWhen, Field);
286	JS_STATIC_PROP(calcOrderIndex, Field);
287	JS_STATIC_PROP(charLimit, Field);
288	JS_STATIC_PROP(comb, Field);
289	JS_STATIC_PROP(commitOnSelChange, Field);
290	JS_STATIC_PROP(currentValueIndices, Field);
291    JS_STATIC_PROP(defaultStyle, Field);
292	JS_STATIC_PROP(defaultValue, Field);
293	JS_STATIC_PROP(doNotScroll, Field);
294	JS_STATIC_PROP(doNotSpellCheck, Field);
295	JS_STATIC_PROP(delay, Field);
296	JS_STATIC_PROP(display, Field);
297    JS_STATIC_PROP(doc, Field);
298	JS_STATIC_PROP(editable, Field);
299	JS_STATIC_PROP(exportValues, Field);
300	JS_STATIC_PROP(fileSelect, Field);
301	JS_STATIC_PROP(fillColor, Field);
302	JS_STATIC_PROP(hidden, Field);
303    JS_STATIC_PROP(highlight, Field);
304	JS_STATIC_PROP(lineWidth, Field);
305	JS_STATIC_PROP(multiline, Field);
306	JS_STATIC_PROP(multipleSelection, Field);
307	JS_STATIC_PROP(name, Field);
308	JS_STATIC_PROP(numItems, Field);
309    JS_STATIC_PROP(page, Field);
310	JS_STATIC_PROP(password, Field);
311	JS_STATIC_PROP(print, Field);
312	JS_STATIC_PROP(radiosInUnison, Field);
313	JS_STATIC_PROP(readonly, Field);
314	JS_STATIC_PROP(rect, Field);
315    JS_STATIC_PROP(required, Field);
316	JS_STATIC_PROP(richText, Field);
317	JS_STATIC_PROP(richValue, Field);
318	JS_STATIC_PROP(rotation, Field);
319	JS_STATIC_PROP(strokeColor, Field);
320	JS_STATIC_PROP(style, Field);
321	JS_STATIC_PROP(submitName, Field);
322	JS_STATIC_PROP(textColor, Field);
323	JS_STATIC_PROP(textFont, Field);
324	JS_STATIC_PROP(textSize, Field);
325	JS_STATIC_PROP(type, Field);
326	JS_STATIC_PROP(userName, Field);
327	JS_STATIC_PROP(value, Field);
328	JS_STATIC_PROP(valueAsString, Field);
329	JS_STATIC_PROP(source, Field);
330
331	JS_STATIC_METHOD(browseForFileToSubmit, Field);
332	JS_STATIC_METHOD(buttonGetCaption, Field);
333	JS_STATIC_METHOD(buttonGetIcon, Field);
334	JS_STATIC_METHOD(buttonImportIcon, Field);
335	JS_STATIC_METHOD(buttonSetCaption, Field);
336	JS_STATIC_METHOD(buttonSetIcon, Field);
337	JS_STATIC_METHOD(checkThisBox, Field);
338	JS_STATIC_METHOD(clearItems, Field);
339 	JS_STATIC_METHOD(defaultIsChecked, Field);
340	JS_STATIC_METHOD(deleteItemAt, Field);
341	JS_STATIC_METHOD(getArray, Field);
342	JS_STATIC_METHOD(getItemAt, Field);
343	JS_STATIC_METHOD(getLock, Field);
344	JS_STATIC_METHOD(insertItemAt, Field);
345	JS_STATIC_METHOD(isBoxChecked, Field);
346	JS_STATIC_METHOD(isDefaultChecked, Field);
347	JS_STATIC_METHOD(setAction, Field);
348	JS_STATIC_METHOD(setFocus, Field);
349	JS_STATIC_METHOD(setItems, Field);
350	JS_STATIC_METHOD(setLock, Field);
351	JS_STATIC_METHOD(signatureGetModifications, Field);
352	JS_STATIC_METHOD(signatureGetSeedValue, Field);
353	JS_STATIC_METHOD(signatureInfo, Field);
354	JS_STATIC_METHOD(signatureSetSeedValue, Field);
355	JS_STATIC_METHOD(signatureSign, Field);
356	JS_STATIC_METHOD(signatureValidate, Field);
357};
358
359#endif  // FPDFSDK_INCLUDE_JAVASCRIPT_FIELD_H_
360