1 | /* |
2 | * THIS FILE WAS AUTOMATICALLY GENERATED, DO NOT EDIT. |
3 | * |
4 | * This file was generated by the dom/make_names.pl script. |
5 | * |
6 | * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2013 Apple Inc. All rights reserved. |
7 | * |
8 | * Redistribution and use in source and binary forms, with or without |
9 | * modification, are permitted provided that the following conditions |
10 | * are met: |
11 | * 1. Redistributions of source code must retain the above copyright |
12 | * notice, this list of conditions and the following disclaimer. |
13 | * 2. Redistributions in binary form must reproduce the above copyright |
14 | * notice, this list of conditions and the following disclaimer in the |
15 | * documentation and/or other materials provided with the distribution. |
16 | * |
17 | * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY |
18 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
20 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR |
21 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
22 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
23 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
24 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
25 | * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
26 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
27 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
28 | */ |
29 | |
30 | #include "config.h" |
31 | #include "JSHTMLElementWrapperFactory.h" |
32 | |
33 | #include "JSHTMLAnchorElement.h" |
34 | #include "JSHTMLAppletElement.h" |
35 | #include "JSHTMLAreaElement.h" |
36 | #include "JSHTMLBaseElement.h" |
37 | #include "JSHTMLUnknownElement.h" |
38 | #include "JSHTMLQuoteElement.h" |
39 | #include "JSHTMLBodyElement.h" |
40 | #include "JSHTMLBRElement.h" |
41 | #include "JSHTMLButtonElement.h" |
42 | #include "JSHTMLCanvasElement.h" |
43 | #include "JSHTMLTableCaptionElement.h" |
44 | #include "JSHTMLTableColElement.h" |
45 | #include "JSHTMLDataElement.h" |
46 | #include "JSHTMLModElement.h" |
47 | #include "JSHTMLDetailsElement.h" |
48 | #include "JSHTMLDirectoryElement.h" |
49 | #include "JSHTMLDivElement.h" |
50 | #include "JSHTMLDListElement.h" |
51 | #include "JSHTMLEmbedElement.h" |
52 | #include "JSHTMLFieldSetElement.h" |
53 | #include "JSHTMLFontElement.h" |
54 | #include "JSHTMLFormElement.h" |
55 | #include "JSHTMLFrameElement.h" |
56 | #include "JSHTMLFrameSetElement.h" |
57 | #include "JSHTMLHeadingElement.h" |
58 | #include "JSHTMLHeadElement.h" |
59 | #include "JSHTMLHRElement.h" |
60 | #include "JSHTMLHtmlElement.h" |
61 | #include "JSHTMLIFrameElement.h" |
62 | #include "JSHTMLImageElement.h" |
63 | #include "JSHTMLInputElement.h" |
64 | #include "JSHTMLKeygenElement.h" |
65 | #include "JSHTMLLabelElement.h" |
66 | #include "JSHTMLLegendElement.h" |
67 | #include "JSHTMLLIElement.h" |
68 | #include "JSHTMLLinkElement.h" |
69 | #include "JSHTMLPreElement.h" |
70 | #include "JSHTMLMapElement.h" |
71 | #include "JSHTMLMarqueeElement.h" |
72 | #include "JSHTMLMenuElement.h" |
73 | #include "JSHTMLMenuItemElement.h" |
74 | #include "JSHTMLMetaElement.h" |
75 | #include "JSHTMLObjectElement.h" |
76 | #include "JSHTMLOListElement.h" |
77 | #include "JSHTMLOptGroupElement.h" |
78 | #include "JSHTMLOptionElement.h" |
79 | #include "JSHTMLOutputElement.h" |
80 | #include "JSHTMLParagraphElement.h" |
81 | #include "JSHTMLParamElement.h" |
82 | #include "JSHTMLPictureElement.h" |
83 | #include "JSHTMLProgressElement.h" |
84 | #include "JSHTMLScriptElement.h" |
85 | #include "JSHTMLSelectElement.h" |
86 | #include "JSHTMLSlotElement.h" |
87 | #include "JSHTMLSourceElement.h" |
88 | #include "JSHTMLSpanElement.h" |
89 | #include "JSHTMLStyleElement.h" |
90 | #include "JSHTMLTableElement.h" |
91 | #include "JSHTMLTableSectionElement.h" |
92 | #include "JSHTMLTableCellElement.h" |
93 | #include "JSHTMLTemplateElement.h" |
94 | #include "JSHTMLTextAreaElement.h" |
95 | #include "JSHTMLTimeElement.h" |
96 | #include "JSHTMLTitleElement.h" |
97 | #include "JSHTMLTableRowElement.h" |
98 | #include "JSHTMLUListElement.h" |
99 | #include "JSHTMLUnknownElement.h" |
100 | #include "HTMLAnchorElement.h" |
101 | #include "HTMLElement.h" |
102 | #include "HTMLAppletElement.h" |
103 | #include "HTMLAreaElement.h" |
104 | #include "HTMLBaseElement.h" |
105 | #include "HTMLBDIElement.h" |
106 | #include "HTMLUnknownElement.h" |
107 | #include "HTMLQuoteElement.h" |
108 | #include "HTMLBodyElement.h" |
109 | #include "HTMLBRElement.h" |
110 | #include "HTMLButtonElement.h" |
111 | #include "HTMLCanvasElement.h" |
112 | #include "HTMLTableCaptionElement.h" |
113 | #include "HTMLTableColElement.h" |
114 | #include "HTMLDataElement.h" |
115 | #include "HTMLModElement.h" |
116 | #include "HTMLDetailsElement.h" |
117 | #include "HTMLDirectoryElement.h" |
118 | #include "HTMLDivElement.h" |
119 | #include "HTMLDListElement.h" |
120 | #include "HTMLEmbedElement.h" |
121 | #include "HTMLFieldSetElement.h" |
122 | #include "HTMLFontElement.h" |
123 | #include "HTMLFormElement.h" |
124 | #include "HTMLFrameElement.h" |
125 | #include "HTMLFrameSetElement.h" |
126 | #include "HTMLHeadingElement.h" |
127 | #include "HTMLHeadElement.h" |
128 | #include "HTMLHRElement.h" |
129 | #include "HTMLHtmlElement.h" |
130 | #include "HTMLIFrameElement.h" |
131 | #include "HTMLImageElement.h" |
132 | #include "HTMLInputElement.h" |
133 | #include "HTMLKeygenElement.h" |
134 | #include "HTMLLabelElement.h" |
135 | #include "HTMLLegendElement.h" |
136 | #include "HTMLLIElement.h" |
137 | #include "HTMLLinkElement.h" |
138 | #include "HTMLPreElement.h" |
139 | #include "HTMLMapElement.h" |
140 | #include "HTMLMarqueeElement.h" |
141 | #include "HTMLMenuElement.h" |
142 | #include "HTMLMenuItemElement.h" |
143 | #include "HTMLMetaElement.h" |
144 | #include "HTMLObjectElement.h" |
145 | #include "HTMLOListElement.h" |
146 | #include "HTMLOptGroupElement.h" |
147 | #include "HTMLOptionElement.h" |
148 | #include "HTMLOutputElement.h" |
149 | #include "HTMLParagraphElement.h" |
150 | #include "HTMLParamElement.h" |
151 | #include "HTMLPictureElement.h" |
152 | #include "HTMLProgressElement.h" |
153 | #include "RubyTextElement.h" |
154 | #include "RubyElement.h" |
155 | #include "HTMLScriptElement.h" |
156 | #include "HTMLSelectElement.h" |
157 | #include "HTMLSlotElement.h" |
158 | #include "HTMLSourceElement.h" |
159 | #include "HTMLSpanElement.h" |
160 | #include "HTMLStyleElement.h" |
161 | #include "HTMLSummaryElement.h" |
162 | #include "HTMLTableElement.h" |
163 | #include "HTMLTableSectionElement.h" |
164 | #include "HTMLTableCellElement.h" |
165 | #include "HTMLTemplateElement.h" |
166 | #include "HTMLTextAreaElement.h" |
167 | #include "HTMLTimeElement.h" |
168 | #include "HTMLTitleElement.h" |
169 | #include "HTMLTableRowElement.h" |
170 | #include "HTMLUListElement.h" |
171 | #include "HTMLWBRElement.h" |
172 | #include "HTMLUnknownElement.h" |
173 | |
174 | #include "HTMLNames.h" |
175 | |
176 | #include "Document.h" |
177 | #include "RuntimeEnabledFeatures.h" |
178 | #include "Settings.h" |
179 | #include <wtf/NeverDestroyed.h> |
180 | #include <wtf/StdLibExtras.h> |
181 | |
182 | #if ENABLE(ATTACHMENT_ELEMENT) |
183 | #include "HTMLAttachmentElement.h" |
184 | #include "JSHTMLAttachmentElement.h" |
185 | #endif |
186 | |
187 | #if ENABLE(DATALIST_ELEMENT) |
188 | #include "HTMLDataListElement.h" |
189 | #include "JSHTMLDataListElement.h" |
190 | #endif |
191 | |
192 | #if ENABLE(METER_ELEMENT) |
193 | #include "HTMLMeterElement.h" |
194 | #include "JSHTMLMeterElement.h" |
195 | #endif |
196 | |
197 | #if ENABLE(VIDEO) |
198 | #include "HTMLAudioElement.h" |
199 | #include "HTMLVideoElement.h" |
200 | #include "JSHTMLAudioElement.h" |
201 | #include "JSHTMLVideoElement.h" |
202 | #endif |
203 | |
204 | #if ENABLE(VIDEO_TRACK) |
205 | #include "HTMLTrackElement.h" |
206 | #include "JSHTMLTrackElement.h" |
207 | #endif |
208 | |
209 | using namespace JSC; |
210 | |
211 | namespace WebCore { |
212 | |
213 | using namespace HTMLNames; |
214 | |
215 | typedef JSDOMObject* (*CreateHTMLElementWrapperFunction)(JSDOMGlobalObject*, Ref<HTMLElement>&&); |
216 | |
217 | static JSDOMObject* createHTMLAnchorElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
218 | { |
219 | return createWrapper<HTMLAnchorElement>(globalObject, WTFMove(element)); |
220 | } |
221 | |
222 | static JSDOMObject* createHTMLElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
223 | { |
224 | return createWrapper<HTMLElement>(globalObject, WTFMove(element)); |
225 | } |
226 | |
227 | static JSDOMObject* createHTMLAppletElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
228 | { |
229 | return createWrapper<HTMLAppletElement>(globalObject, WTFMove(element)); |
230 | } |
231 | |
232 | static JSDOMObject* createHTMLAreaElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
233 | { |
234 | return createWrapper<HTMLAreaElement>(globalObject, WTFMove(element)); |
235 | } |
236 | |
237 | #if ENABLE(ATTACHMENT_ELEMENT) |
238 | |
239 | static JSDOMObject* createHTMLAttachmentElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
240 | { |
241 | if (element->isHTMLUnknownElement()) |
242 | return createWrapper<HTMLUnknownElement>(globalObject, WTFMove(element)); |
243 | return createWrapper<HTMLAttachmentElement>(globalObject, WTFMove(element)); |
244 | } |
245 | #endif |
246 | |
247 | #if ENABLE(VIDEO) |
248 | |
249 | static JSDOMObject* createHTMLAudioElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
250 | { |
251 | if (element->isHTMLUnknownElement()) |
252 | return createWrapper<HTMLUnknownElement>(globalObject, WTFMove(element)); |
253 | return createWrapper<HTMLAudioElement>(globalObject, WTFMove(element)); |
254 | } |
255 | |
256 | #endif |
257 | |
258 | static JSDOMObject* createHTMLBaseElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
259 | { |
260 | return createWrapper<HTMLBaseElement>(globalObject, WTFMove(element)); |
261 | } |
262 | |
263 | static JSDOMObject* createHTMLUnknownElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
264 | { |
265 | return createWrapper<HTMLUnknownElement>(globalObject, WTFMove(element)); |
266 | } |
267 | |
268 | static JSDOMObject* createHTMLQuoteElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
269 | { |
270 | return createWrapper<HTMLQuoteElement>(globalObject, WTFMove(element)); |
271 | } |
272 | |
273 | static JSDOMObject* createHTMLBodyElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
274 | { |
275 | return createWrapper<HTMLBodyElement>(globalObject, WTFMove(element)); |
276 | } |
277 | |
278 | static JSDOMObject* createHTMLBRElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
279 | { |
280 | return createWrapper<HTMLBRElement>(globalObject, WTFMove(element)); |
281 | } |
282 | |
283 | static JSDOMObject* createHTMLButtonElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
284 | { |
285 | return createWrapper<HTMLButtonElement>(globalObject, WTFMove(element)); |
286 | } |
287 | |
288 | static JSDOMObject* createHTMLCanvasElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
289 | { |
290 | return createWrapper<HTMLCanvasElement>(globalObject, WTFMove(element)); |
291 | } |
292 | |
293 | static JSDOMObject* createHTMLTableCaptionElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
294 | { |
295 | return createWrapper<HTMLTableCaptionElement>(globalObject, WTFMove(element)); |
296 | } |
297 | |
298 | static JSDOMObject* createHTMLTableColElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
299 | { |
300 | return createWrapper<HTMLTableColElement>(globalObject, WTFMove(element)); |
301 | } |
302 | |
303 | static JSDOMObject* createHTMLDataElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
304 | { |
305 | return createWrapper<HTMLDataElement>(globalObject, WTFMove(element)); |
306 | } |
307 | |
308 | #if ENABLE(DATALIST_ELEMENT) |
309 | |
310 | static JSDOMObject* createHTMLDataListElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
311 | { |
312 | if (element->isHTMLUnknownElement()) |
313 | return createWrapper<HTMLUnknownElement>(globalObject, WTFMove(element)); |
314 | return createWrapper<HTMLDataListElement>(globalObject, WTFMove(element)); |
315 | } |
316 | #endif |
317 | |
318 | static JSDOMObject* createHTMLModElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
319 | { |
320 | return createWrapper<HTMLModElement>(globalObject, WTFMove(element)); |
321 | } |
322 | |
323 | static JSDOMObject* createHTMLDetailsElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
324 | { |
325 | return createWrapper<HTMLDetailsElement>(globalObject, WTFMove(element)); |
326 | } |
327 | |
328 | static JSDOMObject* createHTMLDirectoryElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
329 | { |
330 | return createWrapper<HTMLDirectoryElement>(globalObject, WTFMove(element)); |
331 | } |
332 | |
333 | static JSDOMObject* createHTMLDivElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
334 | { |
335 | return createWrapper<HTMLDivElement>(globalObject, WTFMove(element)); |
336 | } |
337 | |
338 | static JSDOMObject* createHTMLDListElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
339 | { |
340 | return createWrapper<HTMLDListElement>(globalObject, WTFMove(element)); |
341 | } |
342 | |
343 | static JSDOMObject* createHTMLEmbedElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
344 | { |
345 | return createWrapper<HTMLEmbedElement>(globalObject, WTFMove(element)); |
346 | } |
347 | |
348 | static JSDOMObject* createHTMLFieldSetElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
349 | { |
350 | return createWrapper<HTMLFieldSetElement>(globalObject, WTFMove(element)); |
351 | } |
352 | |
353 | static JSDOMObject* createHTMLFontElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
354 | { |
355 | return createWrapper<HTMLFontElement>(globalObject, WTFMove(element)); |
356 | } |
357 | |
358 | static JSDOMObject* createHTMLFormElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
359 | { |
360 | return createWrapper<HTMLFormElement>(globalObject, WTFMove(element)); |
361 | } |
362 | |
363 | static JSDOMObject* createHTMLFrameElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
364 | { |
365 | return createWrapper<HTMLFrameElement>(globalObject, WTFMove(element)); |
366 | } |
367 | |
368 | static JSDOMObject* createHTMLFrameSetElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
369 | { |
370 | return createWrapper<HTMLFrameSetElement>(globalObject, WTFMove(element)); |
371 | } |
372 | |
373 | static JSDOMObject* createHTMLHeadingElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
374 | { |
375 | return createWrapper<HTMLHeadingElement>(globalObject, WTFMove(element)); |
376 | } |
377 | |
378 | static JSDOMObject* createHTMLHeadElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
379 | { |
380 | return createWrapper<HTMLHeadElement>(globalObject, WTFMove(element)); |
381 | } |
382 | |
383 | static JSDOMObject* createHTMLHRElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
384 | { |
385 | return createWrapper<HTMLHRElement>(globalObject, WTFMove(element)); |
386 | } |
387 | |
388 | static JSDOMObject* createHTMLHtmlElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
389 | { |
390 | return createWrapper<HTMLHtmlElement>(globalObject, WTFMove(element)); |
391 | } |
392 | |
393 | static JSDOMObject* createHTMLIFrameElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
394 | { |
395 | return createWrapper<HTMLIFrameElement>(globalObject, WTFMove(element)); |
396 | } |
397 | |
398 | static JSDOMObject* createHTMLImageElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
399 | { |
400 | return createWrapper<HTMLImageElement>(globalObject, WTFMove(element)); |
401 | } |
402 | |
403 | static JSDOMObject* createHTMLInputElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
404 | { |
405 | return createWrapper<HTMLInputElement>(globalObject, WTFMove(element)); |
406 | } |
407 | |
408 | static JSDOMObject* createHTMLKeygenElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
409 | { |
410 | return createWrapper<HTMLKeygenElement>(globalObject, WTFMove(element)); |
411 | } |
412 | |
413 | static JSDOMObject* createHTMLLabelElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
414 | { |
415 | return createWrapper<HTMLLabelElement>(globalObject, WTFMove(element)); |
416 | } |
417 | |
418 | static JSDOMObject* createHTMLLegendElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
419 | { |
420 | return createWrapper<HTMLLegendElement>(globalObject, WTFMove(element)); |
421 | } |
422 | |
423 | static JSDOMObject* createHTMLLIElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
424 | { |
425 | return createWrapper<HTMLLIElement>(globalObject, WTFMove(element)); |
426 | } |
427 | |
428 | static JSDOMObject* createHTMLLinkElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
429 | { |
430 | return createWrapper<HTMLLinkElement>(globalObject, WTFMove(element)); |
431 | } |
432 | |
433 | static JSDOMObject* createHTMLPreElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
434 | { |
435 | return createWrapper<HTMLPreElement>(globalObject, WTFMove(element)); |
436 | } |
437 | |
438 | static JSDOMObject* createHTMLMapElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
439 | { |
440 | return createWrapper<HTMLMapElement>(globalObject, WTFMove(element)); |
441 | } |
442 | |
443 | static JSDOMObject* createHTMLMarqueeElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
444 | { |
445 | return createWrapper<HTMLMarqueeElement>(globalObject, WTFMove(element)); |
446 | } |
447 | |
448 | static JSDOMObject* (JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
449 | { |
450 | return createWrapper<HTMLMenuElement>(globalObject, WTFMove(element)); |
451 | } |
452 | |
453 | static JSDOMObject* (JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
454 | { |
455 | if (element->isHTMLUnknownElement()) |
456 | return createWrapper<HTMLUnknownElement>(globalObject, WTFMove(element)); |
457 | return createWrapper<HTMLMenuItemElement>(globalObject, WTFMove(element)); |
458 | } |
459 | static JSDOMObject* createHTMLMetaElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
460 | { |
461 | return createWrapper<HTMLMetaElement>(globalObject, WTFMove(element)); |
462 | } |
463 | |
464 | #if ENABLE(METER_ELEMENT) |
465 | |
466 | static JSDOMObject* createHTMLMeterElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
467 | { |
468 | return createWrapper<HTMLMeterElement>(globalObject, WTFMove(element)); |
469 | } |
470 | |
471 | #endif |
472 | |
473 | static JSDOMObject* createHTMLObjectElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
474 | { |
475 | return createWrapper<HTMLObjectElement>(globalObject, WTFMove(element)); |
476 | } |
477 | |
478 | static JSDOMObject* createHTMLOListElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
479 | { |
480 | return createWrapper<HTMLOListElement>(globalObject, WTFMove(element)); |
481 | } |
482 | |
483 | static JSDOMObject* createHTMLOptGroupElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
484 | { |
485 | return createWrapper<HTMLOptGroupElement>(globalObject, WTFMove(element)); |
486 | } |
487 | |
488 | static JSDOMObject* createHTMLOptionElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
489 | { |
490 | return createWrapper<HTMLOptionElement>(globalObject, WTFMove(element)); |
491 | } |
492 | |
493 | static JSDOMObject* createHTMLOutputElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
494 | { |
495 | return createWrapper<HTMLOutputElement>(globalObject, WTFMove(element)); |
496 | } |
497 | |
498 | static JSDOMObject* createHTMLParagraphElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
499 | { |
500 | return createWrapper<HTMLParagraphElement>(globalObject, WTFMove(element)); |
501 | } |
502 | |
503 | static JSDOMObject* createHTMLParamElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
504 | { |
505 | return createWrapper<HTMLParamElement>(globalObject, WTFMove(element)); |
506 | } |
507 | |
508 | static JSDOMObject* createHTMLPictureElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
509 | { |
510 | return createWrapper<HTMLPictureElement>(globalObject, WTFMove(element)); |
511 | } |
512 | |
513 | static JSDOMObject* createHTMLProgressElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
514 | { |
515 | return createWrapper<HTMLProgressElement>(globalObject, WTFMove(element)); |
516 | } |
517 | |
518 | static JSDOMObject* createHTMLScriptElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
519 | { |
520 | return createWrapper<HTMLScriptElement>(globalObject, WTFMove(element)); |
521 | } |
522 | |
523 | static JSDOMObject* createHTMLSelectElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
524 | { |
525 | return createWrapper<HTMLSelectElement>(globalObject, WTFMove(element)); |
526 | } |
527 | |
528 | static JSDOMObject* createHTMLSlotElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
529 | { |
530 | return createWrapper<HTMLSlotElement>(globalObject, WTFMove(element)); |
531 | } |
532 | |
533 | static JSDOMObject* createHTMLSourceElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
534 | { |
535 | return createWrapper<HTMLSourceElement>(globalObject, WTFMove(element)); |
536 | } |
537 | |
538 | static JSDOMObject* createHTMLSpanElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
539 | { |
540 | return createWrapper<HTMLSpanElement>(globalObject, WTFMove(element)); |
541 | } |
542 | |
543 | static JSDOMObject* createHTMLStyleElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
544 | { |
545 | return createWrapper<HTMLStyleElement>(globalObject, WTFMove(element)); |
546 | } |
547 | |
548 | static JSDOMObject* createHTMLTableElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
549 | { |
550 | return createWrapper<HTMLTableElement>(globalObject, WTFMove(element)); |
551 | } |
552 | |
553 | static JSDOMObject* createHTMLTableSectionElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
554 | { |
555 | return createWrapper<HTMLTableSectionElement>(globalObject, WTFMove(element)); |
556 | } |
557 | |
558 | static JSDOMObject* createHTMLTableCellElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
559 | { |
560 | return createWrapper<HTMLTableCellElement>(globalObject, WTFMove(element)); |
561 | } |
562 | |
563 | static JSDOMObject* createHTMLTemplateElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
564 | { |
565 | return createWrapper<HTMLTemplateElement>(globalObject, WTFMove(element)); |
566 | } |
567 | |
568 | static JSDOMObject* createHTMLTextAreaElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
569 | { |
570 | return createWrapper<HTMLTextAreaElement>(globalObject, WTFMove(element)); |
571 | } |
572 | |
573 | static JSDOMObject* createHTMLTimeElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
574 | { |
575 | return createWrapper<HTMLTimeElement>(globalObject, WTFMove(element)); |
576 | } |
577 | |
578 | static JSDOMObject* createHTMLTitleElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
579 | { |
580 | return createWrapper<HTMLTitleElement>(globalObject, WTFMove(element)); |
581 | } |
582 | |
583 | static JSDOMObject* createHTMLTableRowElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
584 | { |
585 | return createWrapper<HTMLTableRowElement>(globalObject, WTFMove(element)); |
586 | } |
587 | |
588 | #if ENABLE(VIDEO_TRACK) |
589 | |
590 | static JSDOMObject* createHTMLTrackElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
591 | { |
592 | if (element->isHTMLUnknownElement()) |
593 | return createWrapper<HTMLUnknownElement>(globalObject, WTFMove(element)); |
594 | return createWrapper<HTMLTrackElement>(globalObject, WTFMove(element)); |
595 | } |
596 | |
597 | #endif |
598 | |
599 | static JSDOMObject* createHTMLUListElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
600 | { |
601 | return createWrapper<HTMLUListElement>(globalObject, WTFMove(element)); |
602 | } |
603 | |
604 | #if ENABLE(VIDEO) |
605 | |
606 | static JSDOMObject* createHTMLVideoElementWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
607 | { |
608 | if (element->isHTMLUnknownElement()) |
609 | return createWrapper<HTMLUnknownElement>(globalObject, WTFMove(element)); |
610 | return createWrapper<HTMLVideoElement>(globalObject, WTFMove(element)); |
611 | } |
612 | |
613 | #endif |
614 | |
615 | |
616 | static NEVER_INLINE HashMap<AtomicStringImpl*, CreateHTMLElementWrapperFunction> createHTMLWrapperMap() |
617 | { |
618 | struct TableEntry { |
619 | const QualifiedName& name; |
620 | CreateHTMLElementWrapperFunction function; |
621 | }; |
622 | |
623 | static const TableEntry table[] = { |
624 | { aTag, createHTMLAnchorElementWrapper }, |
625 | { abbrTag, createHTMLElementWrapper }, |
626 | { acronymTag, createHTMLElementWrapper }, |
627 | { addressTag, createHTMLElementWrapper }, |
628 | { appletTag, createHTMLAppletElementWrapper }, |
629 | { areaTag, createHTMLAreaElementWrapper }, |
630 | { articleTag, createHTMLElementWrapper }, |
631 | { asideTag, createHTMLElementWrapper }, |
632 | #if ENABLE(ATTACHMENT_ELEMENT) |
633 | { attachmentTag, createHTMLAttachmentElementWrapper }, |
634 | #endif |
635 | #if ENABLE(VIDEO) |
636 | { audioTag, createHTMLAudioElementWrapper }, |
637 | #endif |
638 | { bTag, createHTMLElementWrapper }, |
639 | { baseTag, createHTMLBaseElementWrapper }, |
640 | { basefontTag, createHTMLElementWrapper }, |
641 | { bdiTag, createHTMLElementWrapper }, |
642 | { bdoTag, createHTMLElementWrapper }, |
643 | { bgsoundTag, createHTMLUnknownElementWrapper }, |
644 | { bigTag, createHTMLElementWrapper }, |
645 | { blockquoteTag, createHTMLQuoteElementWrapper }, |
646 | { bodyTag, createHTMLBodyElementWrapper }, |
647 | { brTag, createHTMLBRElementWrapper }, |
648 | { buttonTag, createHTMLButtonElementWrapper }, |
649 | { canvasTag, createHTMLCanvasElementWrapper }, |
650 | { captionTag, createHTMLTableCaptionElementWrapper }, |
651 | { centerTag, createHTMLElementWrapper }, |
652 | { citeTag, createHTMLElementWrapper }, |
653 | { codeTag, createHTMLElementWrapper }, |
654 | { colTag, createHTMLTableColElementWrapper }, |
655 | { colgroupTag, createHTMLTableColElementWrapper }, |
656 | { commandTag, createHTMLUnknownElementWrapper }, |
657 | { dataTag, createHTMLDataElementWrapper }, |
658 | #if ENABLE(DATALIST_ELEMENT) |
659 | { datalistTag, createHTMLDataListElementWrapper }, |
660 | #endif |
661 | { ddTag, createHTMLElementWrapper }, |
662 | { delTag, createHTMLModElementWrapper }, |
663 | { detailsTag, createHTMLDetailsElementWrapper }, |
664 | { dfnTag, createHTMLElementWrapper }, |
665 | { dirTag, createHTMLDirectoryElementWrapper }, |
666 | { divTag, createHTMLDivElementWrapper }, |
667 | { dlTag, createHTMLDListElementWrapper }, |
668 | { dtTag, createHTMLElementWrapper }, |
669 | { emTag, createHTMLElementWrapper }, |
670 | { embedTag, createHTMLEmbedElementWrapper }, |
671 | { fieldsetTag, createHTMLFieldSetElementWrapper }, |
672 | { figcaptionTag, createHTMLElementWrapper }, |
673 | { figureTag, createHTMLElementWrapper }, |
674 | { fontTag, createHTMLFontElementWrapper }, |
675 | { footerTag, createHTMLElementWrapper }, |
676 | { formTag, createHTMLFormElementWrapper }, |
677 | { frameTag, createHTMLFrameElementWrapper }, |
678 | { framesetTag, createHTMLFrameSetElementWrapper }, |
679 | { h1Tag, createHTMLHeadingElementWrapper }, |
680 | { h2Tag, createHTMLHeadingElementWrapper }, |
681 | { h3Tag, createHTMLHeadingElementWrapper }, |
682 | { h4Tag, createHTMLHeadingElementWrapper }, |
683 | { h5Tag, createHTMLHeadingElementWrapper }, |
684 | { h6Tag, createHTMLHeadingElementWrapper }, |
685 | { headTag, createHTMLHeadElementWrapper }, |
686 | { headerTag, createHTMLElementWrapper }, |
687 | { hgroupTag, createHTMLElementWrapper }, |
688 | { hrTag, createHTMLHRElementWrapper }, |
689 | { htmlTag, createHTMLHtmlElementWrapper }, |
690 | { iTag, createHTMLElementWrapper }, |
691 | { iframeTag, createHTMLIFrameElementWrapper }, |
692 | { imageTag, createHTMLUnknownElementWrapper }, |
693 | { imgTag, createHTMLImageElementWrapper }, |
694 | { inputTag, createHTMLInputElementWrapper }, |
695 | { insTag, createHTMLModElementWrapper }, |
696 | { kbdTag, createHTMLElementWrapper }, |
697 | { keygenTag, createHTMLKeygenElementWrapper }, |
698 | { labelTag, createHTMLLabelElementWrapper }, |
699 | { layerTag, createHTMLElementWrapper }, |
700 | { legendTag, createHTMLLegendElementWrapper }, |
701 | { liTag, createHTMLLIElementWrapper }, |
702 | { linkTag, createHTMLLinkElementWrapper }, |
703 | { listingTag, createHTMLPreElementWrapper }, |
704 | { mainTag, createHTMLElementWrapper }, |
705 | { mapTag, createHTMLMapElementWrapper }, |
706 | { markTag, createHTMLElementWrapper }, |
707 | { marqueeTag, createHTMLMarqueeElementWrapper }, |
708 | { menuTag, createHTMLMenuElementWrapper }, |
709 | { menuitemTag, createHTMLMenuItemElementWrapper }, |
710 | { metaTag, createHTMLMetaElementWrapper }, |
711 | #if ENABLE(METER_ELEMENT) |
712 | { meterTag, createHTMLMeterElementWrapper }, |
713 | #endif |
714 | { navTag, createHTMLElementWrapper }, |
715 | { nobrTag, createHTMLElementWrapper }, |
716 | { noembedTag, createHTMLElementWrapper }, |
717 | { noframesTag, createHTMLElementWrapper }, |
718 | { nolayerTag, createHTMLElementWrapper }, |
719 | { noscriptTag, createHTMLElementWrapper }, |
720 | { objectTag, createHTMLObjectElementWrapper }, |
721 | { olTag, createHTMLOListElementWrapper }, |
722 | { optgroupTag, createHTMLOptGroupElementWrapper }, |
723 | { optionTag, createHTMLOptionElementWrapper }, |
724 | { outputTag, createHTMLOutputElementWrapper }, |
725 | { pTag, createHTMLParagraphElementWrapper }, |
726 | { paramTag, createHTMLParamElementWrapper }, |
727 | { pictureTag, createHTMLPictureElementWrapper }, |
728 | { plaintextTag, createHTMLElementWrapper }, |
729 | { preTag, createHTMLPreElementWrapper }, |
730 | { progressTag, createHTMLProgressElementWrapper }, |
731 | { qTag, createHTMLQuoteElementWrapper }, |
732 | { rbTag, createHTMLElementWrapper }, |
733 | { rpTag, createHTMLElementWrapper }, |
734 | { rtTag, createHTMLElementWrapper }, |
735 | { rtcTag, createHTMLElementWrapper }, |
736 | { rubyTag, createHTMLElementWrapper }, |
737 | { sTag, createHTMLElementWrapper }, |
738 | { sampTag, createHTMLElementWrapper }, |
739 | { scriptTag, createHTMLScriptElementWrapper }, |
740 | { sectionTag, createHTMLElementWrapper }, |
741 | { selectTag, createHTMLSelectElementWrapper }, |
742 | { slotTag, createHTMLSlotElementWrapper }, |
743 | { smallTag, createHTMLElementWrapper }, |
744 | { sourceTag, createHTMLSourceElementWrapper }, |
745 | { spanTag, createHTMLSpanElementWrapper }, |
746 | { strikeTag, createHTMLElementWrapper }, |
747 | { strongTag, createHTMLElementWrapper }, |
748 | { styleTag, createHTMLStyleElementWrapper }, |
749 | { subTag, createHTMLElementWrapper }, |
750 | { summaryTag, createHTMLElementWrapper }, |
751 | { supTag, createHTMLElementWrapper }, |
752 | { tableTag, createHTMLTableElementWrapper }, |
753 | { tbodyTag, createHTMLTableSectionElementWrapper }, |
754 | { tdTag, createHTMLTableCellElementWrapper }, |
755 | { templateTag, createHTMLTemplateElementWrapper }, |
756 | { textareaTag, createHTMLTextAreaElementWrapper }, |
757 | { tfootTag, createHTMLTableSectionElementWrapper }, |
758 | { thTag, createHTMLTableCellElementWrapper }, |
759 | { theadTag, createHTMLTableSectionElementWrapper }, |
760 | { timeTag, createHTMLTimeElementWrapper }, |
761 | { titleTag, createHTMLTitleElementWrapper }, |
762 | { trTag, createHTMLTableRowElementWrapper }, |
763 | #if ENABLE(VIDEO_TRACK) |
764 | { trackTag, createHTMLTrackElementWrapper }, |
765 | #endif |
766 | { ttTag, createHTMLElementWrapper }, |
767 | { uTag, createHTMLElementWrapper }, |
768 | { ulTag, createHTMLUListElementWrapper }, |
769 | { varTag, createHTMLElementWrapper }, |
770 | #if ENABLE(VIDEO) |
771 | { videoTag, createHTMLVideoElementWrapper }, |
772 | #endif |
773 | { wbrTag, createHTMLElementWrapper }, |
774 | { xmpTag, createHTMLPreElementWrapper }, |
775 | }; |
776 | |
777 | HashMap<AtomicStringImpl*, CreateHTMLElementWrapperFunction> map; |
778 | for (auto& entry : table) |
779 | map.add(entry.name.localName().impl(), entry.function); |
780 | return map; |
781 | } |
782 | |
783 | JSDOMObject* createJSHTMLWrapper(JSDOMGlobalObject* globalObject, Ref<HTMLElement>&& element) |
784 | { |
785 | static const auto functions = makeNeverDestroyed(createHTMLWrapperMap()); |
786 | if (auto function = functions.get().get(element->localName().impl())) |
787 | return function(globalObject, WTFMove(element)); |
788 | if (element->isCustomElementUpgradeCandidate()) |
789 | return createWrapper<HTMLElement>(globalObject, WTFMove(element)); |
790 | return createWrapper<HTMLUnknownElement>(globalObject, WTFMove(element)); |
791 | } |
792 | |
793 | } |
794 | |