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_SRC_JAVASCRIPT_FIELD_H_
8 #define FPDFSDK_SRC_JAVASCRIPT_FIELD_H_
9 
10 #include <string>  // For std::wstring.
11 
12 #include "JS_Define.h"
13 #include "fpdfsdk/include/pdfwindow/PWL_Wnd.h"  // For CPWL_Color.
14 
15 class CPDFSDK_Widget;
16 class Document;
17 
18 enum FIELD_PROP {
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 
55 class CJS_WideStringArray {
56  public:
CJS_WideStringArray()57   CJS_WideStringArray() {}
~CJS_WideStringArray()58   virtual ~CJS_WideStringArray() {
59     for (int i = 0, sz = m_Data.GetSize(); i < sz; i++)
60       delete m_Data.GetAt(i);
61     m_Data.RemoveAll();
62   }
63 
Add(const CFX_WideString & string)64   void Add(const CFX_WideString& string) {
65     m_Data.Add(new CFX_WideString(string));
66   }
67 
GetSize()68   int GetSize() const { return m_Data.GetSize(); }
69 
GetAt(int i)70   CFX_WideString GetAt(int i) const { return *m_Data.GetAt(i); }
71 
72  private:
73   CFX_ArrayTemplate<CFX_WideString*> m_Data;
74 };
75 
76 struct CJS_DelayData {
77   CFX_WideString sFieldName;
78   int nControlIndex;
79   enum FIELD_PROP eProp;
80   int32_t num;
81   bool b;
82   CFX_ByteString string;
83   CFX_WideString widestring;
84   CPDF_Rect rect;
85   CPWL_Color color;
86   CFX_DWordArray wordarray;
87   CJS_WideStringArray widestringarray;
88 };
89 
90 class Field : public CJS_EmbedObj {
91  public:
92   explicit Field(CJS_Object* pJSObject);
93   ~Field() override;
94 
95   FX_BOOL alignment(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
96   FX_BOOL borderStyle(IJS_Context* cc,
97                       CJS_PropValue& vp,
98                       CFX_WideString& sError);
99   FX_BOOL buttonAlignX(IJS_Context* cc,
100                        CJS_PropValue& vp,
101                        CFX_WideString& sError);
102   FX_BOOL buttonAlignY(IJS_Context* cc,
103                        CJS_PropValue& vp,
104                        CFX_WideString& sError);
105   FX_BOOL buttonFitBounds(IJS_Context* cc,
106                           CJS_PropValue& vp,
107                           CFX_WideString& sError);
108   FX_BOOL buttonPosition(IJS_Context* cc,
109                          CJS_PropValue& vp,
110                          CFX_WideString& sError);
111   FX_BOOL buttonScaleHow(IJS_Context* cc,
112                          CJS_PropValue& vp,
113                          CFX_WideString& sError);
114   FX_BOOL buttonScaleWhen(IJS_Context* cc,
115                           CJS_PropValue& vp,
116                           CFX_WideString& sError);
117   FX_BOOL calcOrderIndex(IJS_Context* cc,
118                          CJS_PropValue& vp,
119                          CFX_WideString& sError);
120   FX_BOOL charLimit(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
121   FX_BOOL comb(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
122   FX_BOOL commitOnSelChange(IJS_Context* cc,
123                             CJS_PropValue& vp,
124                             CFX_WideString& sError);
125   FX_BOOL currentValueIndices(IJS_Context* cc,
126                               CJS_PropValue& vp,
127                               CFX_WideString& sError);
128   FX_BOOL defaultStyle(IJS_Context* cc,
129                        CJS_PropValue& vp,
130                        CFX_WideString& sError);
131   FX_BOOL defaultValue(IJS_Context* cc,
132                        CJS_PropValue& vp,
133                        CFX_WideString& sError);
134   FX_BOOL doNotScroll(IJS_Context* cc,
135                       CJS_PropValue& vp,
136                       CFX_WideString& sError);
137   FX_BOOL doNotSpellCheck(IJS_Context* cc,
138                           CJS_PropValue& vp,
139                           CFX_WideString& sError);
140   FX_BOOL delay(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
141   FX_BOOL display(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
142   FX_BOOL doc(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
143   FX_BOOL editable(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
144   FX_BOOL exportValues(IJS_Context* cc,
145                        CJS_PropValue& vp,
146                        CFX_WideString& sError);
147   FX_BOOL fileSelect(IJS_Context* cc,
148                      CJS_PropValue& vp,
149                      CFX_WideString& sError);
150   FX_BOOL fillColor(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
151   FX_BOOL hidden(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
152   FX_BOOL highlight(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
153   FX_BOOL lineWidth(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
154   FX_BOOL multiline(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
155   FX_BOOL multipleSelection(IJS_Context* cc,
156                             CJS_PropValue& vp,
157                             CFX_WideString& sError);
158   FX_BOOL name(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
159   FX_BOOL numItems(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
160   FX_BOOL page(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
161   FX_BOOL password(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
162   FX_BOOL print(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
163   FX_BOOL radiosInUnison(IJS_Context* cc,
164                          CJS_PropValue& vp,
165                          CFX_WideString& sError);
166   FX_BOOL readonly(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
167   FX_BOOL rect(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
168   FX_BOOL required(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
169   FX_BOOL richText(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
170   FX_BOOL richValue(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
171   FX_BOOL rotation(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
172   FX_BOOL strokeColor(IJS_Context* cc,
173                       CJS_PropValue& vp,
174                       CFX_WideString& sError);
175   FX_BOOL style(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
176   FX_BOOL submitName(IJS_Context* cc,
177                      CJS_PropValue& vp,
178                      CFX_WideString& sError);
179   FX_BOOL textColor(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
180   FX_BOOL textFont(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
181   FX_BOOL textSize(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
182   FX_BOOL type(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
183   FX_BOOL userName(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
184   FX_BOOL value(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
185   FX_BOOL valueAsString(IJS_Context* cc,
186                         CJS_PropValue& vp,
187                         CFX_WideString& sError);
188   FX_BOOL source(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError);
189 
190   FX_BOOL browseForFileToSubmit(IJS_Context* cc,
191                                 const std::vector<CJS_Value>& params,
192                                 CJS_Value& vRet,
193                                 CFX_WideString& sError);
194   FX_BOOL buttonGetCaption(IJS_Context* cc,
195                            const std::vector<CJS_Value>& params,
196                            CJS_Value& vRet,
197                            CFX_WideString& sError);
198   FX_BOOL buttonGetIcon(IJS_Context* cc,
199                         const std::vector<CJS_Value>& params,
200                         CJS_Value& vRet,
201                         CFX_WideString& sError);
202   FX_BOOL buttonImportIcon(IJS_Context* cc,
203                            const std::vector<CJS_Value>& params,
204                            CJS_Value& vRet,
205                            CFX_WideString& sError);
206   FX_BOOL buttonSetCaption(IJS_Context* cc,
207                            const std::vector<CJS_Value>& params,
208                            CJS_Value& vRet,
209                            CFX_WideString& sError);
210   FX_BOOL buttonSetIcon(IJS_Context* cc,
211                         const std::vector<CJS_Value>& params,
212                         CJS_Value& vRet,
213                         CFX_WideString& sError);
214   FX_BOOL checkThisBox(IJS_Context* cc,
215                        const std::vector<CJS_Value>& params,
216                        CJS_Value& vRet,
217                        CFX_WideString& sError);
218   FX_BOOL clearItems(IJS_Context* cc,
219                      const std::vector<CJS_Value>& params,
220                      CJS_Value& vRet,
221                      CFX_WideString& sError);
222   FX_BOOL defaultIsChecked(IJS_Context* cc,
223                            const std::vector<CJS_Value>& params,
224                            CJS_Value& vRet,
225                            CFX_WideString& sError);
226   FX_BOOL deleteItemAt(IJS_Context* cc,
227                        const std::vector<CJS_Value>& params,
228                        CJS_Value& vRet,
229                        CFX_WideString& sError);
230   FX_BOOL getArray(IJS_Context* cc,
231                    const std::vector<CJS_Value>& params,
232                    CJS_Value& vRet,
233                    CFX_WideString& sError);
234   FX_BOOL getItemAt(IJS_Context* cc,
235                     const std::vector<CJS_Value>& params,
236                     CJS_Value& vRet,
237                     CFX_WideString& sError);
238   FX_BOOL getLock(IJS_Context* cc,
239                   const std::vector<CJS_Value>& params,
240                   CJS_Value& vRet,
241                   CFX_WideString& sError);
242   FX_BOOL insertItemAt(IJS_Context* cc,
243                        const std::vector<CJS_Value>& params,
244                        CJS_Value& vRet,
245                        CFX_WideString& sError);
246   FX_BOOL isBoxChecked(IJS_Context* cc,
247                        const std::vector<CJS_Value>& params,
248                        CJS_Value& vRet,
249                        CFX_WideString& sError);
250   FX_BOOL isDefaultChecked(IJS_Context* cc,
251                            const std::vector<CJS_Value>& params,
252                            CJS_Value& vRet,
253                            CFX_WideString& sError);
254   FX_BOOL setAction(IJS_Context* cc,
255                     const std::vector<CJS_Value>& params,
256                     CJS_Value& vRet,
257                     CFX_WideString& sError);
258   FX_BOOL setFocus(IJS_Context* cc,
259                    const std::vector<CJS_Value>& params,
260                    CJS_Value& vRet,
261                    CFX_WideString& sError);
262   FX_BOOL setItems(IJS_Context* cc,
263                    const std::vector<CJS_Value>& params,
264                    CJS_Value& vRet,
265                    CFX_WideString& sError);
266   FX_BOOL setLock(IJS_Context* cc,
267                   const std::vector<CJS_Value>& params,
268                   CJS_Value& vRet,
269                   CFX_WideString& sError);
270   FX_BOOL signatureGetModifications(IJS_Context* cc,
271                                     const std::vector<CJS_Value>& params,
272                                     CJS_Value& vRet,
273                                     CFX_WideString& sError);
274   FX_BOOL signatureGetSeedValue(IJS_Context* cc,
275                                 const std::vector<CJS_Value>& params,
276                                 CJS_Value& vRet,
277                                 CFX_WideString& sError);
278   FX_BOOL signatureInfo(IJS_Context* cc,
279                         const std::vector<CJS_Value>& params,
280                         CJS_Value& vRet,
281                         CFX_WideString& sError);
282   FX_BOOL signatureSetSeedValue(IJS_Context* cc,
283                                 const std::vector<CJS_Value>& params,
284                                 CJS_Value& vRet,
285                                 CFX_WideString& sError);
286   FX_BOOL signatureSign(IJS_Context* cc,
287                         const std::vector<CJS_Value>& params,
288                         CJS_Value& vRet,
289                         CFX_WideString& sError);
290   FX_BOOL signatureValidate(IJS_Context* cc,
291                             const std::vector<CJS_Value>& params,
292                             CJS_Value& vRet,
293                             CFX_WideString& sError);
294 
295   static void SetAlignment(CPDFSDK_Document* pDocument,
296                            const CFX_WideString& swFieldName,
297                            int nControlIndex,
298                            const CFX_ByteString& string);
299   static void SetBorderStyle(CPDFSDK_Document* pDocument,
300                              const CFX_WideString& swFieldName,
301                              int nControlIndex,
302                              const CFX_ByteString& string);
303   static void SetButtonAlignX(CPDFSDK_Document* pDocument,
304                               const CFX_WideString& swFieldName,
305                               int nControlIndex,
306                               int number);
307   static void SetButtonAlignY(CPDFSDK_Document* pDocument,
308                               const CFX_WideString& swFieldName,
309                               int nControlIndex,
310                               int number);
311   static void SetButtonFitBounds(CPDFSDK_Document* pDocument,
312                                  const CFX_WideString& swFieldName,
313                                  int nControlIndex,
314                                  bool b);
315   static void SetButtonPosition(CPDFSDK_Document* pDocument,
316                                 const CFX_WideString& swFieldName,
317                                 int nControlIndex,
318                                 int number);
319   static void SetButtonScaleHow(CPDFSDK_Document* pDocument,
320                                 const CFX_WideString& swFieldName,
321                                 int nControlIndex,
322                                 int number);
323   static void SetButtonScaleWhen(CPDFSDK_Document* pDocument,
324                                  const CFX_WideString& swFieldName,
325                                  int nControlIndex,
326                                  int number);
327   static void SetCalcOrderIndex(CPDFSDK_Document* pDocument,
328                                 const CFX_WideString& swFieldName,
329                                 int nControlIndex,
330                                 int number);
331   static void SetCharLimit(CPDFSDK_Document* pDocument,
332                            const CFX_WideString& swFieldName,
333                            int nControlIndex,
334                            int number);
335   static void SetComb(CPDFSDK_Document* pDocument,
336                       const CFX_WideString& swFieldName,
337                       int nControlIndex,
338                       bool b);
339   static void SetCommitOnSelChange(CPDFSDK_Document* pDocument,
340                                    const CFX_WideString& swFieldName,
341                                    int nControlIndex,
342                                    bool b);
343   static void SetCurrentValueIndices(CPDFSDK_Document* pDocument,
344                                      const CFX_WideString& swFieldName,
345                                      int nControlIndex,
346                                      const CFX_DWordArray& array);
347   static void SetDefaultStyle(CPDFSDK_Document* pDocument,
348                               const CFX_WideString& swFieldName,
349                               int nControlIndex);
350   static void SetDefaultValue(CPDFSDK_Document* pDocument,
351                               const CFX_WideString& swFieldName,
352                               int nControlIndex,
353                               const CFX_WideString& string);
354   static void SetDoNotScroll(CPDFSDK_Document* pDocument,
355                              const CFX_WideString& swFieldName,
356                              int nControlIndex,
357                              bool b);
358   static void SetDisplay(CPDFSDK_Document* pDocument,
359                          const CFX_WideString& swFieldName,
360                          int nControlIndex,
361                          int number);
362   static void SetFillColor(CPDFSDK_Document* pDocument,
363                            const CFX_WideString& swFieldName,
364                            int nControlIndex,
365                            const CPWL_Color& color);
366   static void SetHidden(CPDFSDK_Document* pDocument,
367                         const CFX_WideString& swFieldName,
368                         int nControlIndex,
369                         bool b);
370   static void SetHighlight(CPDFSDK_Document* pDocument,
371                            const CFX_WideString& swFieldName,
372                            int nControlIndex,
373                            const CFX_ByteString& string);
374   static void SetLineWidth(CPDFSDK_Document* pDocument,
375                            const CFX_WideString& swFieldName,
376                            int nControlIndex,
377                            int number);
378   static void SetMultiline(CPDFSDK_Document* pDocument,
379                            const CFX_WideString& swFieldName,
380                            int nControlIndex,
381                            bool b);
382   static void SetMultipleSelection(CPDFSDK_Document* pDocument,
383                                    const CFX_WideString& swFieldName,
384                                    int nControlIndex,
385                                    bool b);
386   static void SetPassword(CPDFSDK_Document* pDocument,
387                           const CFX_WideString& swFieldName,
388                           int nControlIndex,
389                           bool b);
390   static void SetRect(CPDFSDK_Document* pDocument,
391                       const CFX_WideString& swFieldName,
392                       int nControlIndex,
393                       const CPDF_Rect& rect);
394   static void SetRichText(CPDFSDK_Document* pDocument,
395                           const CFX_WideString& swFieldName,
396                           int nControlIndex,
397                           bool b);
398   static void SetRichValue(CPDFSDK_Document* pDocument,
399                            const CFX_WideString& swFieldName,
400                            int nControlIndex);
401   static void SetRotation(CPDFSDK_Document* pDocument,
402                           const CFX_WideString& swFieldName,
403                           int nControlIndex,
404                           int number);
405   static void SetStrokeColor(CPDFSDK_Document* pDocument,
406                              const CFX_WideString& swFieldName,
407                              int nControlIndex,
408                              const CPWL_Color& color);
409   static void SetStyle(CPDFSDK_Document* pDocument,
410                        const CFX_WideString& swFieldName,
411                        int nControlIndex,
412                        const CFX_ByteString& string);
413   static void SetTextColor(CPDFSDK_Document* pDocument,
414                            const CFX_WideString& swFieldName,
415                            int nControlIndex,
416                            const CPWL_Color& color);
417   static void SetTextFont(CPDFSDK_Document* pDocument,
418                           const CFX_WideString& swFieldName,
419                           int nControlIndex,
420                           const CFX_ByteString& string);
421   static void SetTextSize(CPDFSDK_Document* pDocument,
422                           const CFX_WideString& swFieldName,
423                           int nControlIndex,
424                           int number);
425   static void SetUserName(CPDFSDK_Document* pDocument,
426                           const CFX_WideString& swFieldName,
427                           int nControlIndex,
428                           const CFX_WideString& string);
429   static void SetValue(CPDFSDK_Document* pDocument,
430                        const CFX_WideString& swFieldName,
431                        int nControlIndex,
432                        const CJS_WideStringArray& strArray);
433 
434   static void AddField(CPDFSDK_Document* pDocument,
435                        int nPageIndex,
436                        int nFieldType,
437                        const CFX_WideString& sName,
438                        const CPDF_Rect& rcCoords);
439 
440   static void UpdateFormField(CPDFSDK_Document* pDocument,
441                               CPDF_FormField* pFormField,
442                               FX_BOOL bChangeMark,
443                               FX_BOOL bResetAP,
444                               FX_BOOL bRefresh);
445   static void UpdateFormControl(CPDFSDK_Document* pDocument,
446                                 CPDF_FormControl* pFormControl,
447                                 FX_BOOL bChangeMark,
448                                 FX_BOOL bResetAP,
449                                 FX_BOOL bRefresh);
450 
451   static CPDFSDK_Widget* GetWidget(CPDFSDK_Document* pDocument,
452                                    CPDF_FormControl* pFormControl);
453   static std::vector<CPDF_FormField*> GetFormFields(
454       CPDFSDK_Document* pDocument,
455       const CFX_WideString& csFieldName);
456 
457   static void DoDelay(CPDFSDK_Document* pDocument, CJS_DelayData* pData);
458 
459   FX_BOOL AttachField(Document* pDocument, const CFX_WideString& csFieldName);
460   void SetDelay(FX_BOOL bDelay);
SetIsolate(v8::Isolate * isolate)461   void SetIsolate(v8::Isolate* isolate) { m_isolate = isolate; }
462 
463  protected:
464   void ParseFieldName(const std::wstring& strFieldNameParsed,
465                       std::wstring& strFieldName,
466                       int& iControlNo);
467   std::vector<CPDF_FormField*> GetFormFields(
468       const CFX_WideString& csFieldName) const;
469   CPDF_FormControl* GetSmartFieldControl(CPDF_FormField* pFormField);
470   FX_BOOL ValueIsOccur(CPDF_FormField* pFormField, CFX_WideString csOptLabel);
471 
472   void AddDelay_Int(enum FIELD_PROP prop, int32_t n);
473   void AddDelay_Bool(enum FIELD_PROP prop, bool b);
474   void AddDelay_String(enum FIELD_PROP prop, const CFX_ByteString& string);
475   void AddDelay_WideString(enum FIELD_PROP prop, const CFX_WideString& string);
476   void AddDelay_Rect(enum FIELD_PROP prop, const CPDF_Rect& rect);
477   void AddDelay_Color(enum FIELD_PROP prop, const CPWL_Color& color);
478   void AddDelay_WordArray(enum FIELD_PROP prop, const CFX_DWordArray& array);
479   void AddDelay_WideStringArray(enum FIELD_PROP prop,
480                                 const CJS_WideStringArray& array);
481 
482   void DoDelay();
483 
484  public:
485   Document* m_pJSDoc;
486   CPDFSDK_Document* m_pDocument;
487   CFX_WideString m_FieldName;
488   int m_nFormControlIndex;
489   FX_BOOL m_bCanSet;
490 
491   FX_BOOL m_bDelay;
492   v8::Isolate* m_isolate;
493 };
494 
495 class CJS_Field : public CJS_Object {
496  public:
CJS_Field(v8::Local<v8::Object> pObject)497   explicit CJS_Field(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
~CJS_Field(void)498   ~CJS_Field(void) override {}
499 
500   void InitInstance(IJS_Runtime* pIRuntime) override;
501 
502   DECLARE_JS_CLASS();
503   JS_STATIC_PROP(alignment, Field);
504   JS_STATIC_PROP(borderStyle, Field);
505   JS_STATIC_PROP(buttonAlignX, Field);
506   JS_STATIC_PROP(buttonAlignY, Field);
507   JS_STATIC_PROP(buttonFitBounds, Field);
508   JS_STATIC_PROP(buttonPosition, Field);
509   JS_STATIC_PROP(buttonScaleHow, Field);
510   JS_STATIC_PROP(buttonScaleWhen, Field);
511   JS_STATIC_PROP(calcOrderIndex, Field);
512   JS_STATIC_PROP(charLimit, Field);
513   JS_STATIC_PROP(comb, Field);
514   JS_STATIC_PROP(commitOnSelChange, Field);
515   JS_STATIC_PROP(currentValueIndices, Field);
516   JS_STATIC_PROP(defaultStyle, Field);
517   JS_STATIC_PROP(defaultValue, Field);
518   JS_STATIC_PROP(doNotScroll, Field);
519   JS_STATIC_PROP(doNotSpellCheck, Field);
520   JS_STATIC_PROP(delay, Field);
521   JS_STATIC_PROP(display, Field);
522   JS_STATIC_PROP(doc, Field);
523   JS_STATIC_PROP(editable, Field);
524   JS_STATIC_PROP(exportValues, Field);
525   JS_STATIC_PROP(fileSelect, Field);
526   JS_STATIC_PROP(fillColor, Field);
527   JS_STATIC_PROP(hidden, Field);
528   JS_STATIC_PROP(highlight, Field);
529   JS_STATIC_PROP(lineWidth, Field);
530   JS_STATIC_PROP(multiline, Field);
531   JS_STATIC_PROP(multipleSelection, Field);
532   JS_STATIC_PROP(name, Field);
533   JS_STATIC_PROP(numItems, Field);
534   JS_STATIC_PROP(page, Field);
535   JS_STATIC_PROP(password, Field);
536   JS_STATIC_PROP(print, Field);
537   JS_STATIC_PROP(radiosInUnison, Field);
538   JS_STATIC_PROP(readonly, Field);
539   JS_STATIC_PROP(rect, Field);
540   JS_STATIC_PROP(required, Field);
541   JS_STATIC_PROP(richText, Field);
542   JS_STATIC_PROP(richValue, Field);
543   JS_STATIC_PROP(rotation, Field);
544   JS_STATIC_PROP(strokeColor, Field);
545   JS_STATIC_PROP(style, Field);
546   JS_STATIC_PROP(submitName, Field);
547   JS_STATIC_PROP(textColor, Field);
548   JS_STATIC_PROP(textFont, Field);
549   JS_STATIC_PROP(textSize, Field);
550   JS_STATIC_PROP(type, Field);
551   JS_STATIC_PROP(userName, Field);
552   JS_STATIC_PROP(value, Field);
553   JS_STATIC_PROP(valueAsString, Field);
554   JS_STATIC_PROP(source, Field);
555 
556   JS_STATIC_METHOD(browseForFileToSubmit, Field);
557   JS_STATIC_METHOD(buttonGetCaption, Field);
558   JS_STATIC_METHOD(buttonGetIcon, Field);
559   JS_STATIC_METHOD(buttonImportIcon, Field);
560   JS_STATIC_METHOD(buttonSetCaption, Field);
561   JS_STATIC_METHOD(buttonSetIcon, Field);
562   JS_STATIC_METHOD(checkThisBox, Field);
563   JS_STATIC_METHOD(clearItems, Field);
564   JS_STATIC_METHOD(defaultIsChecked, Field);
565   JS_STATIC_METHOD(deleteItemAt, Field);
566   JS_STATIC_METHOD(getArray, Field);
567   JS_STATIC_METHOD(getItemAt, Field);
568   JS_STATIC_METHOD(getLock, Field);
569   JS_STATIC_METHOD(insertItemAt, Field);
570   JS_STATIC_METHOD(isBoxChecked, Field);
571   JS_STATIC_METHOD(isDefaultChecked, Field);
572   JS_STATIC_METHOD(setAction, Field);
573   JS_STATIC_METHOD(setFocus, Field);
574   JS_STATIC_METHOD(setItems, Field);
575   JS_STATIC_METHOD(setLock, Field);
576   JS_STATIC_METHOD(signatureGetModifications, Field);
577   JS_STATIC_METHOD(signatureGetSeedValue, Field);
578   JS_STATIC_METHOD(signatureInfo, Field);
579   JS_STATIC_METHOD(signatureSetSeedValue, Field);
580   JS_STATIC_METHOD(signatureSign, Field);
581   JS_STATIC_METHOD(signatureValidate, Field);
582 };
583 
584 #endif  // FPDFSDK_SRC_JAVASCRIPT_FIELD_H_
585