blob: ceddb723912a775299cd57b8a10a6f83713e2866 [file] [log] [blame]
Victor Porof1a8a30d2022-06-13 13:07:10 +00001// Copyright 2022 The Chromium 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/**
6 * All the specs relevant for generating the DOM pinned properties dataset.
7 * These strings represent file names. A list of all file names can be found at
8 * https://github.com/w3c/webref/tree/main/tr/idl or via the @webref/idl API.
9 *
10 * These spec names are included in the generated dataset. To keep it small,
11 * the values are bitwise or'd.
12 */
13export const SPECS = {
14 'html': 1,
15 'dom': 2,
16 'uievents': 4,
17 'pointerevents': 8,
18 'cssom': 16,
19 'wai-aria': 32
20};
21
22/**
23 * All the "global" attributes as defined in the DOM specification.
24 * Used to annotate the extracted properties from the WebIDL types.
25 */
26export const GLOBAL_ATTRIBUTES = new Set([
27 // https://html.spec.whatwg.org/multipage/dom.html#global-attributes
28 'accesskey', 'autocapitalize', 'autofocus', 'contenteditable', 'dir', 'draggable', 'enterkeyhint',
29 'hidden', 'inputmode', 'is', 'itemid', 'itemprop', 'itemref', 'itemscope',
30 'itemtype', 'lang', 'nonce', 'spellcheck', 'style', 'tabindex', 'title',
31 'translate',
32]);
33
34/**
35 * The "applicable" members for certain "states" that WebIDL types can be in.
36 * In other words, some members are "valid" only valid in certain situations:
37 * for example, with the HTML input element, the set of valid members are
38 * determined by the "type" attribute.
39 */
40export const VALID_MEMBERS = {
41 // https://html.spec.whatwg.org/multipage/input.html#input-type-attr-summary
42 HTMLInputElement: {
43 '[type=hidden]': new Set([
44 'autocomplete',
45 'value',
46 ]),
47 '[type=text]': new Set([
48 'autocomplete',
49 'dirname',
50 'list',
51 'maxlength',
52 'minlength',
53 'pattern',
54 'placeholder',
55 'readonly',
56 'required',
57 'size',
58 'value',
59 'list',
60 'selectionstart',
61 'selectionend',
62 'selectiondirection',
63 ]),
64 '[type=search]': new Set([
65 'autocomplete',
66 'dirname',
67 'list',
68 'maxlength',
69 'minlength',
70 'pattern',
71 'placeholder',
72 'readonly',
73 'required',
74 'size',
75 'value',
76 'list',
77 'selectionstart',
78 'selectionend',
79 'selectiondirection',
80 ]),
81 '[type=url]': new Set([
82 'autocomplete',
83 'list',
84 'maxlength',
85 'minlength',
86 'pattern',
87 'placeholder',
88 'readonly',
89 'required',
90 'size',
91 'value',
92 'list',
93 'selectionstart',
94 'selectionend',
95 'selectiondirection',
96 ]),
97 '[type=tel]': new Set([
98 'autocomplete',
99 'list',
100 'maxlength',
101 'minlength',
102 'pattern',
103 'placeholder',
104 'readonly',
105 'required',
106 'size',
107 'value',
108 'list',
109 'selectionstart',
110 'selectionend',
111 'selectiondirection',
112 ]),
113 '[type=email]': new Set([
114 'autocomplete',
115 'list',
116 'maxlength',
117 'minlength',
118 'multiple',
119 'pattern',
120 'placeholder',
121 'readonly',
122 'required',
123 'size',
124 'value',
125 'list',
126 ]),
127 '[type=password]': new Set([
128 'autocomplete',
129 'maxlength',
130 'minlength',
131 'pattern',
132 'placeholder',
133 'readonly',
134 'required',
135 'size',
136 'value',
137 'selectionstart',
138 'selectionend',
139 'selectiondirection',
140 ]),
141 '[type=date]': new Set([
142 'autocomplete',
143 'list',
144 'max',
145 'min',
146 'readonly',
147 'required',
148 'step',
149 'value',
150 'valueasdate',
151 'valueasnumber',
152 'list',
153 ]),
154 '[type=month]': new Set([
155 'autocomplete',
156 'list',
157 'max',
158 'min',
159 'readonly',
160 'required',
161 'step',
162 'value',
163 'valueasdate',
164 'valueasnumber',
165 'list',
166 ]),
167 '[type=week]': new Set([
168 'autocomplete',
169 'list',
170 'max',
171 'min',
172 'readonly',
173 'required',
174 'step',
175 'value',
176 'valueasdate',
177 'valueasnumber',
178 'list',
179 ]),
180 '[type=time]': new Set([
181 'autocomplete',
182 'list',
183 'max',
184 'min',
185 'readonly',
186 'required',
187 'step',
188 'value',
189 'valueasdate',
190 'valueasnumber',
191 'list',
192 ]),
193 '[type=datetime-local]': new Set([
194 'autocomplete',
195 'list',
196 'max',
197 'min',
198 'readonly',
199 'required',
200 'step',
201 'value',
202 'valueasnumber',
203 'list',
204 ]),
205 '[type=number]': new Set([
206 'autocomplete',
207 'list',
208 'max',
209 'min',
210 'placeholder',
211 'readonly',
212 'required',
213 'step',
214 'value',
215 'valueasnumber',
216 'list',
217 ]),
218 '[type=range]': new Set([
219 'autocomplete',
220 'list',
221 'max',
222 'min',
223 'step',
224 'value',
225 'valueasnumber',
226 'list',
227 ]),
228 '[type=color]': new Set([
229 'autocomplete',
230 'list',
231 'value',
232 ]),
233 '[type=checkbox]': new Set([
234 'checked',
235 'required',
236 'checked',
237 'value',
238 ]),
239 '[type=radio]': new Set([
240 'checked',
241 'required',
242 'checked',
243 'value',
244 ]),
245 '[type=file]': new Set([
246 'accept',
247 'multiple',
248 'required',
249 'files',
250 'value',
251 ]),
252 '[type=submit]': new Set([
253 'formaction',
254 'formenctype',
255 'formmethod',
256 'formnovalidate',
257 'formtarget',
258 'value',
259 ]),
260 '[type=image]': new Set([
261 'alt',
262 'formaction',
263 'formenctype',
264 'formmethod',
265 'formnovalidate',
266 'formtarget',
267 'height',
268 'src',
269 'width',
270 'value',
271 ]),
272 '[type=reset]': new Set([
273 'value',
274 ]),
275 '[type=button]': new Set([
276 'value',
277 ]),
278 },
279};