summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/dom/elements-forms.js
blob: 280e018aaa35c13987fc4a98fcbb4f7d8feaa5a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
// Up-to-date as of 2013-04-07.
var formElements = {
  form: {
    acceptCharset: {type: "string", domAttrName: "accept-charset"},
    // TODO: action is special
    // action: "url",
    autocomplete: {type: "enum", keywords: ["on", "off"], defaultVal: "on"},
    enctype: {type: "enum", keywords: ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"], defaultVal: "application/x-www-form-urlencoded"},
    encoding: {type: "enum", keywords: ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"], defaultVal: "application/x-www-form-urlencoded", domAttrName: "enctype"},
    method: {type: "enum", keywords: ["get", "post", "dialog"], defaultVal: "get"},
    name: "string",
    noValidate: "boolean",
    target: "string",
  },
  fieldset: {
    disabled: "boolean",
    name: "string",
  },
  legend: {
    // Obsolete
    align: "string",
  },
  label: {
    htmlFor: {type: "string", domAttrName: "for"},
  },
  input: {
    // Conforming
    accept: "string",
    alt: "string",
    // TODO: autocomplete is special.
    // autocomplete: {type: "enum", keywords: ["on", "off"], defaultVal: "on"},
    autofocus: "boolean",
    defaultChecked: {type: "boolean", domAttrName: "checked"},
    dirName: "string",
    disabled: "boolean",
    // TODO: formAction is special
    // formAction: "url",
    formEnctype: {type: "enum", keywords: ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"], invalidVal: "application/x-www-form-urlencoded"},
    formMethod: {type: "enum", keywords: ["get", "post"], invalidVal: "get"},
    formNoValidate: "boolean",
    formTarget: "string",
    //TODO: only reflected on setting
    //height: "unsigned long",
    inputMode: {type: "enum", keywords: ["verbatim", "latin", "latin-name", "latin-prose", "full-width-latin", "kana", "katakana", "numeric", "tel", "email", "url"]},
    max: "string",
    maxLength: "limited long",
    min: "string",
    multiple: "boolean",
    name: "string",
    pattern: "string",
    placeholder: "string",
    readOnly: "boolean",
    required: "boolean",
    // https://html.spec.whatwg.org/multipage/#attr-input-size
    size: {type: "limited unsigned long", defaultVal: 20},
    src: "url",
    step: "string",
    type: {type: "enum", keywords: ["hidden", "text", "search", "tel",
      "url", "email", "password", "datetime", "date", "month", "week",
      "time", "datetime-local", "number", "range", "color", "checkbox",
      "radio", "file", "submit", "image", "reset", "button"], defaultVal:
      "text"},
    //TODO: only reflected on setting
    //width: "unsigned long",
    defaultValue: {type: "string", domAttrName: "value"},

    // Obsolete
    align: "string",
    useMap: "string",
  },
  button: {
    autofocus: "boolean",
    disabled: "boolean",
    // TODO: formAction is special
    // formAction: "url",
    formEnctype: {type: "enum", keywords: ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"], invalidVal: "application/x-www-form-urlencoded"},
    formMethod: {type: "enum", keywords: ["get", "post", "dialog"], invalidVal: "get"},
    formNoValidate: "boolean",
    formTarget: "string",
    name: "string",
    type: {type: "enum", keywords: ["submit", "reset", "button"], defaultVal: "submit"},
    value: "string",
    // TODO: menu
  },
  select: {
    autofocus: "boolean",
    disabled: "boolean",
    multiple: "boolean",
    name: "string",
    required: "boolean",
    size: {type: "unsigned long", defaultVal: 0},
  },
  datalist: {},
  optgroup: {
    disabled: "boolean",
    label: "string",
  },
  option: {
    disabled: "boolean",
    label: {type: "string", customGetter: true},
    defaultSelected: {type: "boolean", domAttrName: "selected"},
    value: {type: "string", customGetter: true},
  },
  textarea: {
    // TODO: autocomplete is special.
    // autocomplete: {type: "enum", keywords: ["on", "off"], defaultVal: "on"},
    autofocus: "boolean",
    cols: {type: "limited unsigned long with fallback", defaultVal: 20},
    dirName: "string",
    disabled: "boolean",
    inputMode: {type: "enum", keywords: ["verbatim", "latin", "latin-name", "latin-prose", "full-width-latin", "kana", "katakana", "numeric", "tel", "email", "url"]},
    maxLength: "limited long",
    name: "string",
    placeholder: "string",
    readOnly: "boolean",
    required: "boolean",
    rows: {type: "limited unsigned long with fallback", defaultVal: 2},
    wrap: "string",
  },
  keygen: {
    autofocus: "boolean",
    challenge: "string",
    disabled: "boolean",
    // The invalid value default is the "unknown" state, which for our
    // purposes  seems to be the same as having no invalid value default.
    // The missing  value default depends on whether "rsa" is implemented,
    // so we use null,  which is magically reserved for "don't try testing
    // this", since no one  default is required.  (TODO: we could test that
    // it's either the RSA  state or the unknown state.)
    keytype: {type: "enum", keywords: ["rsa"], defaultVal: null},
    name: "string",
  },
  output: {
    htmlFor: {type: "settable tokenlist", domAttrName: "for" },
    name: "string",
  },
  progress: {
    max: {type: "limited double", defaultVal: 1.0},
  },
  meter: {},
};

mergeElements(formElements);