View difference between Paste ID: GQU9FJJK and YPQvrCaP
SHOW: | | - or go back to the newest paste.
1
/*
2
 * Copyright (C) 2013 Google Inc. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions are
6
 * met:
7
 *
8
 *     * Redistributions of source code must retain the above copyright
9
 * notice, this list of conditions and the following disclaimer.
10
 *     * Redistributions in binary form must reproduce the above
11
 * copyright notice, this list of conditions and the following disclaimer
12
 * in the documentation and/or other materials provided with the
13
 * distribution.
14
 *     * Neither the name of Google Inc. nor the names of its
15
 * contributors may be used to endorse or promote products derived from
16
 * this software without specific prior written permission.
17
 *
18
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
 */
30
31
#ifndef HTMLElementTypeHelpers_h
32
#define HTMLElementTypeHelpers_h
33
34
#include "core/dom/ContextFeatures.h"
35
#include "core/dom/Element.h"
36
#include "HTMLNames.h"
37
#include "RuntimeEnabledFeatures.h"
38
39
namespace WebCore {
40
// Type checking.
41
42
class HTMLAnchorElement;
43
void isHTMLAnchorElement(const HTMLAnchorElement&); // Catch unnecessary runtime check of type known at compile time.
44
void isHTMLAnchorElement(const HTMLAnchorElement*); // Catch unnecessary runtime check of type known at compile time.
45
inline bool isHTMLAnchorElement(const Element& element) {
46
    return element.hasTagName(HTMLNames::aTag);
47
}
48
inline bool isHTMLAnchorElement(const Element* element) { ASSERT(element); return isHTMLAnchorElement(*element); }
49
inline bool isHTMLAnchorElement(const Node& node) { return node.isElementNode() ? isHTMLAnchorElement(toElement(node)) : false; }
50
inline bool isHTMLAnchorElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLAnchorElement(*toElement(node)) : false; }
51
template <> inline bool isElementOfType<const HTMLAnchorElement>(const Element& element) { return isHTMLAnchorElement(element); }
52
53
class HTMLAreaElement;
54
void isHTMLAreaElement(const HTMLAreaElement&); // Catch unnecessary runtime check of type known at compile time.
55
void isHTMLAreaElement(const HTMLAreaElement*); // Catch unnecessary runtime check of type known at compile time.
56
inline bool isHTMLAreaElement(const Element& element) {
57
    return element.hasTagName(HTMLNames::areaTag);
58
}
59
inline bool isHTMLAreaElement(const Element* element) { ASSERT(element); return isHTMLAreaElement(*element); }
60
inline bool isHTMLAreaElement(const Node& node) { return node.isElementNode() ? isHTMLAreaElement(toElement(node)) : false; }
61
inline bool isHTMLAreaElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLAreaElement(*toElement(node)) : false; }
62
template <> inline bool isElementOfType<const HTMLAreaElement>(const Element& element) { return isHTMLAreaElement(element); }
63
64
class HTMLAudioElement;
65
void isHTMLAudioElement(const HTMLAudioElement&); // Catch unnecessary runtime check of type known at compile time.
66
void isHTMLAudioElement(const HTMLAudioElement*); // Catch unnecessary runtime check of type known at compile time.
67
inline bool isHTMLAudioElement(const Element& element) {
68
    if (!RuntimeEnabledFeatures::mediaEnabled())
69
        return false;
70
    return element.hasTagName(HTMLNames::audioTag);
71
}
72
inline bool isHTMLAudioElement(const Element* element) { ASSERT(element); return isHTMLAudioElement(*element); }
73
inline bool isHTMLAudioElement(const Node& node) { return node.isElementNode() ? isHTMLAudioElement(toElement(node)) : false; }
74
inline bool isHTMLAudioElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLAudioElement(*toElement(node)) : false; }
75
template <> inline bool isElementOfType<const HTMLAudioElement>(const Element& element) { return isHTMLAudioElement(element); }
76
77
class HTMLBRElement;
78
void isHTMLBRElement(const HTMLBRElement&); // Catch unnecessary runtime check of type known at compile time.
79
void isHTMLBRElement(const HTMLBRElement*); // Catch unnecessary runtime check of type known at compile time.
80
inline bool isHTMLBRElement(const Element& element) {
81
    return element.hasTagName(HTMLNames::brTag);
82
}
83
inline bool isHTMLBRElement(const Element* element) { ASSERT(element); return isHTMLBRElement(*element); }
84
inline bool isHTMLBRElement(const Node& node) { return node.isElementNode() ? isHTMLBRElement(toElement(node)) : false; }
85
inline bool isHTMLBRElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLBRElement(*toElement(node)) : false; }
86
template <> inline bool isElementOfType<const HTMLBRElement>(const Element& element) { return isHTMLBRElement(element); }
87
88
class HTMLBaseElement;
89
void isHTMLBaseElement(const HTMLBaseElement&); // Catch unnecessary runtime check of type known at compile time.
90
void isHTMLBaseElement(const HTMLBaseElement*); // Catch unnecessary runtime check of type known at compile time.
91
inline bool isHTMLBaseElement(const Element& element) {
92
    return element.hasTagName(HTMLNames::baseTag);
93
}
94
inline bool isHTMLBaseElement(const Element* element) { ASSERT(element); return isHTMLBaseElement(*element); }
95
inline bool isHTMLBaseElement(const Node& node) { return node.isElementNode() ? isHTMLBaseElement(toElement(node)) : false; }
96
inline bool isHTMLBaseElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLBaseElement(*toElement(node)) : false; }
97
template <> inline bool isElementOfType<const HTMLBaseElement>(const Element& element) { return isHTMLBaseElement(element); }
98
99
class HTMLBodyElement;
100
void isHTMLBodyElement(const HTMLBodyElement&); // Catch unnecessary runtime check of type known at compile time.
101
void isHTMLBodyElement(const HTMLBodyElement*); // Catch unnecessary runtime check of type known at compile time.
102
inline bool isHTMLBodyElement(const Element& element) {
103
    return element.hasTagName(HTMLNames::bodyTag);
104
}
105
inline bool isHTMLBodyElement(const Element* element) { ASSERT(element); return isHTMLBodyElement(*element); }
106
inline bool isHTMLBodyElement(const Node& node) { return node.isElementNode() ? isHTMLBodyElement(toElement(node)) : false; }
107
inline bool isHTMLBodyElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLBodyElement(*toElement(node)) : false; }
108
template <> inline bool isElementOfType<const HTMLBodyElement>(const Element& element) { return isHTMLBodyElement(element); }
109
110
class HTMLCanvasElement;
111
void isHTMLCanvasElement(const HTMLCanvasElement&); // Catch unnecessary runtime check of type known at compile time.
112
void isHTMLCanvasElement(const HTMLCanvasElement*); // Catch unnecessary runtime check of type known at compile time.
113
inline bool isHTMLCanvasElement(const Element& element) {
114
    return element.hasTagName(HTMLNames::canvasTag);
115
}
116
inline bool isHTMLCanvasElement(const Element* element) { ASSERT(element); return isHTMLCanvasElement(*element); }
117
inline bool isHTMLCanvasElement(const Node& node) { return node.isElementNode() ? isHTMLCanvasElement(toElement(node)) : false; }
118
inline bool isHTMLCanvasElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLCanvasElement(*toElement(node)) : false; }
119
template <> inline bool isElementOfType<const HTMLCanvasElement>(const Element& element) { return isHTMLCanvasElement(element); }
120
121
class HTMLContentElement;
122
void isHTMLContentElement(const HTMLContentElement&); // Catch unnecessary runtime check of type known at compile time.
123
void isHTMLContentElement(const HTMLContentElement*); // Catch unnecessary runtime check of type known at compile time.
124
inline bool isHTMLContentElement(const Element& element) {
125
    return element.hasTagName(HTMLNames::contentTag);
126
}
127
inline bool isHTMLContentElement(const Element* element) { ASSERT(element); return isHTMLContentElement(*element); }
128
inline bool isHTMLContentElement(const Node& node) { return node.isElementNode() ? isHTMLContentElement(toElement(node)) : false; }
129
inline bool isHTMLContentElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLContentElement(*toElement(node)) : false; }
130
template <> inline bool isElementOfType<const HTMLContentElement>(const Element& element) { return isHTMLContentElement(element); }
131
132
class HTMLDListElement;
133
void isHTMLDListElement(const HTMLDListElement&); // Catch unnecessary runtime check of type known at compile time.
134
void isHTMLDListElement(const HTMLDListElement*); // Catch unnecessary runtime check of type known at compile time.
135
inline bool isHTMLDListElement(const Element& element) {
136
    return element.hasTagName(HTMLNames::dlTag);
137
}
138
inline bool isHTMLDListElement(const Element* element) { ASSERT(element); return isHTMLDListElement(*element); }
139
inline bool isHTMLDListElement(const Node& node) { return node.isElementNode() ? isHTMLDListElement(toElement(node)) : false; }
140
inline bool isHTMLDListElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLDListElement(*toElement(node)) : false; }
141
template <> inline bool isElementOfType<const HTMLDListElement>(const Element& element) { return isHTMLDListElement(element); }
142
143
class HTMLDataListElement;
144
void isHTMLDataListElement(const HTMLDataListElement&); // Catch unnecessary runtime check of type known at compile time.
145
void isHTMLDataListElement(const HTMLDataListElement*); // Catch unnecessary runtime check of type known at compile time.
146
inline bool isHTMLDataListElement(const Element& element) {
147
    return element.hasTagName(HTMLNames::datalistTag);
148
}
149
inline bool isHTMLDataListElement(const Element* element) { ASSERT(element); return isHTMLDataListElement(*element); }
150
inline bool isHTMLDataListElement(const Node& node) { return node.isElementNode() ? isHTMLDataListElement(toElement(node)) : false; }
151
inline bool isHTMLDataListElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLDataListElement(*toElement(node)) : false; }
152
template <> inline bool isElementOfType<const HTMLDataListElement>(const Element& element) { return isHTMLDataListElement(element); }
153
154
class HTMLDetailsElement;
155
void isHTMLDetailsElement(const HTMLDetailsElement&); // Catch unnecessary runtime check of type known at compile time.
156
void isHTMLDetailsElement(const HTMLDetailsElement*); // Catch unnecessary runtime check of type known at compile time.
157
inline bool isHTMLDetailsElement(const Element& element) {
158
    return element.hasTagName(HTMLNames::detailsTag);
159
}
160
inline bool isHTMLDetailsElement(const Element* element) { ASSERT(element); return isHTMLDetailsElement(*element); }
161
inline bool isHTMLDetailsElement(const Node& node) { return node.isElementNode() ? isHTMLDetailsElement(toElement(node)) : false; }
162
inline bool isHTMLDetailsElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLDetailsElement(*toElement(node)) : false; }
163
template <> inline bool isElementOfType<const HTMLDetailsElement>(const Element& element) { return isHTMLDetailsElement(element); }
164
165
class HTMLDirectoryElement;
166
void isHTMLDirectoryElement(const HTMLDirectoryElement&); // Catch unnecessary runtime check of type known at compile time.
167
void isHTMLDirectoryElement(const HTMLDirectoryElement*); // Catch unnecessary runtime check of type known at compile time.
168
inline bool isHTMLDirectoryElement(const Element& element) {
169
    return element.hasTagName(HTMLNames::dirTag);
170
}
171
inline bool isHTMLDirectoryElement(const Element* element) { ASSERT(element); return isHTMLDirectoryElement(*element); }
172
inline bool isHTMLDirectoryElement(const Node& node) { return node.isElementNode() ? isHTMLDirectoryElement(toElement(node)) : false; }
173
inline bool isHTMLDirectoryElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLDirectoryElement(*toElement(node)) : false; }
174
template <> inline bool isElementOfType<const HTMLDirectoryElement>(const Element& element) { return isHTMLDirectoryElement(element); }
175
176
class HTMLDivElement;
177
void isHTMLDivElement(const HTMLDivElement&); // Catch unnecessary runtime check of type known at compile time.
178
void isHTMLDivElement(const HTMLDivElement*); // Catch unnecessary runtime check of type known at compile time.
179
inline bool isHTMLDivElement(const Element& element) {
180
    return element.hasTagName(HTMLNames::divTag);
181
}
182
inline bool isHTMLDivElement(const Element* element) { ASSERT(element); return isHTMLDivElement(*element); }
183
inline bool isHTMLDivElement(const Node& node) { return node.isElementNode() ? isHTMLDivElement(toElement(node)) : false; }
184
inline bool isHTMLDivElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLDivElement(*toElement(node)) : false; }
185
template <> inline bool isElementOfType<const HTMLDivElement>(const Element& element) { return isHTMLDivElement(element); }
186
187
class HTMLFontElement;
188
void isHTMLFontElement(const HTMLFontElement&); // Catch unnecessary runtime check of type known at compile time.
189
void isHTMLFontElement(const HTMLFontElement*); // Catch unnecessary runtime check of type known at compile time.
190
inline bool isHTMLFontElement(const Element& element) {
191
    return element.hasTagName(HTMLNames::fontTag);
192
}
193
inline bool isHTMLFontElement(const Element* element) { ASSERT(element); return isHTMLFontElement(*element); }
194
inline bool isHTMLFontElement(const Node& node) { return node.isElementNode() ? isHTMLFontElement(toElement(node)) : false; }
195
inline bool isHTMLFontElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLFontElement(*toElement(node)) : false; }
196
template <> inline bool isElementOfType<const HTMLFontElement>(const Element& element) { return isHTMLFontElement(element); }
197
198
class HTMLFormElement;
199
void isHTMLFormElement(const HTMLFormElement&); // Catch unnecessary runtime check of type known at compile time.
200
void isHTMLFormElement(const HTMLFormElement*); // Catch unnecessary runtime check of type known at compile time.
201
inline bool isHTMLFormElement(const Element& element) {
202
    return element.hasTagName(HTMLNames::formTag);
203
}
204
inline bool isHTMLFormElement(const Element* element) { ASSERT(element); return isHTMLFormElement(*element); }
205
inline bool isHTMLFormElement(const Node& node) { return node.isElementNode() ? isHTMLFormElement(toElement(node)) : false; }
206
inline bool isHTMLFormElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLFormElement(*toElement(node)) : false; }
207
template <> inline bool isElementOfType<const HTMLFormElement>(const Element& element) { return isHTMLFormElement(element); }
208
209
class HTMLFrameElement;
210
void isHTMLFrameElement(const HTMLFrameElement&); // Catch unnecessary runtime check of type known at compile time.
211
void isHTMLFrameElement(const HTMLFrameElement*); // Catch unnecessary runtime check of type known at compile time.
212
inline bool isHTMLFrameElement(const Element& element) {
213
    return element.hasTagName(HTMLNames::frameTag);
214
}
215
inline bool isHTMLFrameElement(const Element* element) { ASSERT(element); return isHTMLFrameElement(*element); }
216
inline bool isHTMLFrameElement(const Node& node) { return node.isElementNode() ? isHTMLFrameElement(toElement(node)) : false; }
217
inline bool isHTMLFrameElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLFrameElement(*toElement(node)) : false; }
218
template <> inline bool isElementOfType<const HTMLFrameElement>(const Element& element) { return isHTMLFrameElement(element); }
219
220
class HTMLFrameSetElement;
221
void isHTMLFrameSetElement(const HTMLFrameSetElement&); // Catch unnecessary runtime check of type known at compile time.
222
void isHTMLFrameSetElement(const HTMLFrameSetElement*); // Catch unnecessary runtime check of type known at compile time.
223
inline bool isHTMLFrameSetElement(const Element& element) {
224
    return element.hasTagName(HTMLNames::framesetTag);
225
}
226
inline bool isHTMLFrameSetElement(const Element* element) { ASSERT(element); return isHTMLFrameSetElement(*element); }
227
inline bool isHTMLFrameSetElement(const Node& node) { return node.isElementNode() ? isHTMLFrameSetElement(toElement(node)) : false; }
228
inline bool isHTMLFrameSetElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLFrameSetElement(*toElement(node)) : false; }
229
template <> inline bool isElementOfType<const HTMLFrameSetElement>(const Element& element) { return isHTMLFrameSetElement(element); }
230
231
class HTMLHRElement;
232
void isHTMLHRElement(const HTMLHRElement&); // Catch unnecessary runtime check of type known at compile time.
233
void isHTMLHRElement(const HTMLHRElement*); // Catch unnecessary runtime check of type known at compile time.
234
inline bool isHTMLHRElement(const Element& element) {
235
    return element.hasTagName(HTMLNames::hrTag);
236
}
237
inline bool isHTMLHRElement(const Element* element) { ASSERT(element); return isHTMLHRElement(*element); }
238
inline bool isHTMLHRElement(const Node& node) { return node.isElementNode() ? isHTMLHRElement(toElement(node)) : false; }
239
inline bool isHTMLHRElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLHRElement(*toElement(node)) : false; }
240
template <> inline bool isElementOfType<const HTMLHRElement>(const Element& element) { return isHTMLHRElement(element); }
241
242
class HTMLHeadElement;
243
void isHTMLHeadElement(const HTMLHeadElement&); // Catch unnecessary runtime check of type known at compile time.
244
void isHTMLHeadElement(const HTMLHeadElement*); // Catch unnecessary runtime check of type known at compile time.
245
inline bool isHTMLHeadElement(const Element& element) {
246
    return element.hasTagName(HTMLNames::headTag);
247
}
248
inline bool isHTMLHeadElement(const Element* element) { ASSERT(element); return isHTMLHeadElement(*element); }
249
inline bool isHTMLHeadElement(const Node& node) { return node.isElementNode() ? isHTMLHeadElement(toElement(node)) : false; }
250
inline bool isHTMLHeadElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLHeadElement(*toElement(node)) : false; }
251
template <> inline bool isElementOfType<const HTMLHeadElement>(const Element& element) { return isHTMLHeadElement(element); }
252
253
class HTMLHtmlElement;
254
void isHTMLHtmlElement(const HTMLHtmlElement&); // Catch unnecessary runtime check of type known at compile time.
255
void isHTMLHtmlElement(const HTMLHtmlElement*); // Catch unnecessary runtime check of type known at compile time.
256
inline bool isHTMLHtmlElement(const Element& element) {
257
    return element.hasTagName(HTMLNames::htmlTag);
258
}
259
inline bool isHTMLHtmlElement(const Element* element) { ASSERT(element); return isHTMLHtmlElement(*element); }
260
inline bool isHTMLHtmlElement(const Node& node) { return node.isElementNode() ? isHTMLHtmlElement(toElement(node)) : false; }
261
inline bool isHTMLHtmlElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLHtmlElement(*toElement(node)) : false; }
262
template <> inline bool isElementOfType<const HTMLHtmlElement>(const Element& element) { return isHTMLHtmlElement(element); }
263
264
class HTMLIFrameElement;
265
void isHTMLIFrameElement(const HTMLIFrameElement&); // Catch unnecessary runtime check of type known at compile time.
266
void isHTMLIFrameElement(const HTMLIFrameElement*); // Catch unnecessary runtime check of type known at compile time.
267
inline bool isHTMLIFrameElement(const Element& element) {
268
    return element.hasTagName(HTMLNames::iframeTag);
269
}
270
inline bool isHTMLIFrameElement(const Element* element) { ASSERT(element); return isHTMLIFrameElement(*element); }
271
inline bool isHTMLIFrameElement(const Node& node) { return node.isElementNode() ? isHTMLIFrameElement(toElement(node)) : false; }
272
inline bool isHTMLIFrameElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLIFrameElement(*toElement(node)) : false; }
273
template <> inline bool isElementOfType<const HTMLIFrameElement>(const Element& element) { return isHTMLIFrameElement(element); }
274
275
class HTMLLIElement;
276
void isHTMLLIElement(const HTMLLIElement&); // Catch unnecessary runtime check of type known at compile time.
277
void isHTMLLIElement(const HTMLLIElement*); // Catch unnecessary runtime check of type known at compile time.
278
inline bool isHTMLLIElement(const Element& element) {
279
    return element.hasTagName(HTMLNames::liTag);
280
}
281
inline bool isHTMLLIElement(const Element* element) { ASSERT(element); return isHTMLLIElement(*element); }
282
inline bool isHTMLLIElement(const Node& node) { return node.isElementNode() ? isHTMLLIElement(toElement(node)) : false; }
283
inline bool isHTMLLIElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLLIElement(*toElement(node)) : false; }
284
template <> inline bool isElementOfType<const HTMLLIElement>(const Element& element) { return isHTMLLIElement(element); }
285
286
class HTMLLabelElement;
287
void isHTMLLabelElement(const HTMLLabelElement&); // Catch unnecessary runtime check of type known at compile time.
288
void isHTMLLabelElement(const HTMLLabelElement*); // Catch unnecessary runtime check of type known at compile time.
289
inline bool isHTMLLabelElement(const Element& element) {
290
    return element.hasTagName(HTMLNames::labelTag);
291
}
292
inline bool isHTMLLabelElement(const Element* element) { ASSERT(element); return isHTMLLabelElement(*element); }
293
inline bool isHTMLLabelElement(const Node& node) { return node.isElementNode() ? isHTMLLabelElement(toElement(node)) : false; }
294
inline bool isHTMLLabelElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLLabelElement(*toElement(node)) : false; }
295
template <> inline bool isElementOfType<const HTMLLabelElement>(const Element& element) { return isHTMLLabelElement(element); }
296
297
class HTMLLegendElement;
298
void isHTMLLegendElement(const HTMLLegendElement&); // Catch unnecessary runtime check of type known at compile time.
299
void isHTMLLegendElement(const HTMLLegendElement*); // Catch unnecessary runtime check of type known at compile time.
300
inline bool isHTMLLegendElement(const Element& element) {
301
    return element.hasTagName(HTMLNames::legendTag);
302
}
303
inline bool isHTMLLegendElement(const Element* element) { ASSERT(element); return isHTMLLegendElement(*element); }
304
inline bool isHTMLLegendElement(const Node& node) { return node.isElementNode() ? isHTMLLegendElement(toElement(node)) : false; }
305
inline bool isHTMLLegendElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLLegendElement(*toElement(node)) : false; }
306
template <> inline bool isElementOfType<const HTMLLegendElement>(const Element& element) { return isHTMLLegendElement(element); }
307
308
class HTMLMapElement;
309
void isHTMLMapElement(const HTMLMapElement&); // Catch unnecessary runtime check of type known at compile time.
310
void isHTMLMapElement(const HTMLMapElement*); // Catch unnecessary runtime check of type known at compile time.
311
inline bool isHTMLMapElement(const Element& element) {
312
    return element.hasTagName(HTMLNames::mapTag);
313
}
314
inline bool isHTMLMapElement(const Element* element) { ASSERT(element); return isHTMLMapElement(*element); }
315
inline bool isHTMLMapElement(const Node& node) { return node.isElementNode() ? isHTMLMapElement(toElement(node)) : false; }
316
inline bool isHTMLMapElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLMapElement(*toElement(node)) : false; }
317
template <> inline bool isElementOfType<const HTMLMapElement>(const Element& element) { return isHTMLMapElement(element); }
318
319
class HTMLMarqueeElement;
320
void isHTMLMarqueeElement(const HTMLMarqueeElement&); // Catch unnecessary runtime check of type known at compile time.
321
void isHTMLMarqueeElement(const HTMLMarqueeElement*); // Catch unnecessary runtime check of type known at compile time.
322
inline bool isHTMLMarqueeElement(const Element& element) {
323
    return element.hasTagName(HTMLNames::marqueeTag);
324
}
325
inline bool isHTMLMarqueeElement(const Element* element) { ASSERT(element); return isHTMLMarqueeElement(*element); }
326
inline bool isHTMLMarqueeElement(const Node& node) { return node.isElementNode() ? isHTMLMarqueeElement(toElement(node)) : false; }
327
inline bool isHTMLMarqueeElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLMarqueeElement(*toElement(node)) : false; }
328
template <> inline bool isElementOfType<const HTMLMarqueeElement>(const Element& element) { return isHTMLMarqueeElement(element); }
329
330
class HTMLMenuElement;
331
void isHTMLMenuElement(const HTMLMenuElement&); // Catch unnecessary runtime check of type known at compile time.
332
void isHTMLMenuElement(const HTMLMenuElement*); // Catch unnecessary runtime check of type known at compile time.
333
inline bool isHTMLMenuElement(const Element& element) {
334
    return element.hasTagName(HTMLNames::menuTag);
335
}
336
inline bool isHTMLMenuElement(const Element* element) { ASSERT(element); return isHTMLMenuElement(*element); }
337
inline bool isHTMLMenuElement(const Node& node) { return node.isElementNode() ? isHTMLMenuElement(toElement(node)) : false; }
338
inline bool isHTMLMenuElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLMenuElement(*toElement(node)) : false; }
339
template <> inline bool isElementOfType<const HTMLMenuElement>(const Element& element) { return isHTMLMenuElement(element); }
340
341
class HTMLMetaElement;
342
void isHTMLMetaElement(const HTMLMetaElement&); // Catch unnecessary runtime check of type known at compile time.
343
void isHTMLMetaElement(const HTMLMetaElement*); // Catch unnecessary runtime check of type known at compile time.
344
inline bool isHTMLMetaElement(const Element& element) {
345
    return element.hasTagName(HTMLNames::metaTag);
346
}
347
inline bool isHTMLMetaElement(const Element* element) { ASSERT(element); return isHTMLMetaElement(*element); }
348
inline bool isHTMLMetaElement(const Node& node) { return node.isElementNode() ? isHTMLMetaElement(toElement(node)) : false; }
349
inline bool isHTMLMetaElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLMetaElement(*toElement(node)) : false; }
350
template <> inline bool isElementOfType<const HTMLMetaElement>(const Element& element) { return isHTMLMetaElement(element); }
351
352
class HTMLMeterElement;
353
void isHTMLMeterElement(const HTMLMeterElement&); // Catch unnecessary runtime check of type known at compile time.
354
void isHTMLMeterElement(const HTMLMeterElement*); // Catch unnecessary runtime check of type known at compile time.
355
inline bool isHTMLMeterElement(const Element& element) {
356
    return element.hasTagName(HTMLNames::meterTag);
357
}
358
inline bool isHTMLMeterElement(const Element* element) { ASSERT(element); return isHTMLMeterElement(*element); }
359
inline bool isHTMLMeterElement(const Node& node) { return node.isElementNode() ? isHTMLMeterElement(toElement(node)) : false; }
360
inline bool isHTMLMeterElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLMeterElement(*toElement(node)) : false; }
361
template <> inline bool isElementOfType<const HTMLMeterElement>(const Element& element) { return isHTMLMeterElement(element); }
362
363
class HTMLOListElement;
364
void isHTMLOListElement(const HTMLOListElement&); // Catch unnecessary runtime check of type known at compile time.
365
void isHTMLOListElement(const HTMLOListElement*); // Catch unnecessary runtime check of type known at compile time.
366
inline bool isHTMLOListElement(const Element& element) {
367
    return element.hasTagName(HTMLNames::olTag);
368
}
369
inline bool isHTMLOListElement(const Element* element) { ASSERT(element); return isHTMLOListElement(*element); }
370
inline bool isHTMLOListElement(const Node& node) { return node.isElementNode() ? isHTMLOListElement(toElement(node)) : false; }
371
inline bool isHTMLOListElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLOListElement(*toElement(node)) : false; }
372
template <> inline bool isElementOfType<const HTMLOListElement>(const Element& element) { return isHTMLOListElement(element); }
373
374
class HTMLOptGroupElement;
375
void isHTMLOptGroupElement(const HTMLOptGroupElement&); // Catch unnecessary runtime check of type known at compile time.
376
void isHTMLOptGroupElement(const HTMLOptGroupElement*); // Catch unnecessary runtime check of type known at compile time.
377
inline bool isHTMLOptGroupElement(const Element& element) {
378
    return element.hasTagName(HTMLNames::optgroupTag);
379
}
380
inline bool isHTMLOptGroupElement(const Element* element) { ASSERT(element); return isHTMLOptGroupElement(*element); }
381
inline bool isHTMLOptGroupElement(const Node& node) { return node.isElementNode() ? isHTMLOptGroupElement(toElement(node)) : false; }
382
inline bool isHTMLOptGroupElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLOptGroupElement(*toElement(node)) : false; }
383
template <> inline bool isElementOfType<const HTMLOptGroupElement>(const Element& element) { return isHTMLOptGroupElement(element); }
384
385
class HTMLOptionElement;
386
void isHTMLOptionElement(const HTMLOptionElement&); // Catch unnecessary runtime check of type known at compile time.
387
void isHTMLOptionElement(const HTMLOptionElement*); // Catch unnecessary runtime check of type known at compile time.
388
inline bool isHTMLOptionElement(const Element& element) {
389
    return element.hasTagName(HTMLNames::optionTag);
390
}
391
inline bool isHTMLOptionElement(const Element* element) { ASSERT(element); return isHTMLOptionElement(*element); }
392
inline bool isHTMLOptionElement(const Node& node) { return node.isElementNode() ? isHTMLOptionElement(toElement(node)) : false; }
393
inline bool isHTMLOptionElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLOptionElement(*toElement(node)) : false; }
394
template <> inline bool isElementOfType<const HTMLOptionElement>(const Element& element) { return isHTMLOptionElement(element); }
395
396
class HTMLParagraphElement;
397
void isHTMLParagraphElement(const HTMLParagraphElement&); // Catch unnecessary runtime check of type known at compile time.
398
void isHTMLParagraphElement(const HTMLParagraphElement*); // Catch unnecessary runtime check of type known at compile time.
399
inline bool isHTMLParagraphElement(const Element& element) {
400
    return element.hasTagName(HTMLNames::pTag);
401
}
402
inline bool isHTMLParagraphElement(const Element* element) { ASSERT(element); return isHTMLParagraphElement(*element); }
403
inline bool isHTMLParagraphElement(const Node& node) { return node.isElementNode() ? isHTMLParagraphElement(toElement(node)) : false; }
404
inline bool isHTMLParagraphElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLParagraphElement(*toElement(node)) : false; }
405
template <> inline bool isElementOfType<const HTMLParagraphElement>(const Element& element) { return isHTMLParagraphElement(element); }
406
407
class HTMLParamElement;
408
void isHTMLParamElement(const HTMLParamElement&); // Catch unnecessary runtime check of type known at compile time.
409
void isHTMLParamElement(const HTMLParamElement*); // Catch unnecessary runtime check of type known at compile time.
410
inline bool isHTMLParamElement(const Element& element) {
411
    return element.hasTagName(HTMLNames::paramTag);
412
}
413
inline bool isHTMLParamElement(const Element* element) { ASSERT(element); return isHTMLParamElement(*element); }
414
inline bool isHTMLParamElement(const Node& node) { return node.isElementNode() ? isHTMLParamElement(toElement(node)) : false; }
415
inline bool isHTMLParamElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLParamElement(*toElement(node)) : false; }
416
template <> inline bool isElementOfType<const HTMLParamElement>(const Element& element) { return isHTMLParamElement(element); }
417
418
class HTMLProgressElement;
419
void isHTMLProgressElement(const HTMLProgressElement&); // Catch unnecessary runtime check of type known at compile time.
420
void isHTMLProgressElement(const HTMLProgressElement*); // Catch unnecessary runtime check of type known at compile time.
421
inline bool isHTMLProgressElement(const Element& element) {
422
    return element.hasTagName(HTMLNames::progressTag);
423
}
424
inline bool isHTMLProgressElement(const Element* element) { ASSERT(element); return isHTMLProgressElement(*element); }
425
inline bool isHTMLProgressElement(const Node& node) { return node.isElementNode() ? isHTMLProgressElement(toElement(node)) : false; }
426
inline bool isHTMLProgressElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLProgressElement(*toElement(node)) : false; }
427
template <> inline bool isElementOfType<const HTMLProgressElement>(const Element& element) { return isHTMLProgressElement(element); }
428
429
class HTMLShadowElement;
430
void isHTMLShadowElement(const HTMLShadowElement&); // Catch unnecessary runtime check of type known at compile time.
431
void isHTMLShadowElement(const HTMLShadowElement*); // Catch unnecessary runtime check of type known at compile time.
432
inline bool isHTMLShadowElement(const Element& element) {
433
    return element.hasTagName(HTMLNames::shadowTag);
434
}
435
inline bool isHTMLShadowElement(const Element* element) { ASSERT(element); return isHTMLShadowElement(*element); }
436
inline bool isHTMLShadowElement(const Node& node) { return node.isElementNode() ? isHTMLShadowElement(toElement(node)) : false; }
437
inline bool isHTMLShadowElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLShadowElement(*toElement(node)) : false; }
438
template <> inline bool isElementOfType<const HTMLShadowElement>(const Element& element) { return isHTMLShadowElement(element); }
439
440
class HTMLSourceElement;
441
void isHTMLSourceElement(const HTMLSourceElement&); // Catch unnecessary runtime check of type known at compile time.
442
void isHTMLSourceElement(const HTMLSourceElement*); // Catch unnecessary runtime check of type known at compile time.
443
inline bool isHTMLSourceElement(const Element& element) {
444
    if (!RuntimeEnabledFeatures::mediaEnabled())
445
        return false;
446
    return element.hasTagName(HTMLNames::sourceTag);
447
}
448
inline bool isHTMLSourceElement(const Element* element) { ASSERT(element); return isHTMLSourceElement(*element); }
449
inline bool isHTMLSourceElement(const Node& node) { return node.isElementNode() ? isHTMLSourceElement(toElement(node)) : false; }
450
inline bool isHTMLSourceElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLSourceElement(*toElement(node)) : false; }
451
template <> inline bool isElementOfType<const HTMLSourceElement>(const Element& element) { return isHTMLSourceElement(element); }
452
453
class HTMLSpanElement;
454
void isHTMLSpanElement(const HTMLSpanElement&); // Catch unnecessary runtime check of type known at compile time.
455
void isHTMLSpanElement(const HTMLSpanElement*); // Catch unnecessary runtime check of type known at compile time.
456
inline bool isHTMLSpanElement(const Element& element) {
457
    return element.hasTagName(HTMLNames::spanTag);
458
}
459
inline bool isHTMLSpanElement(const Element* element) { ASSERT(element); return isHTMLSpanElement(*element); }
460
inline bool isHTMLSpanElement(const Node& node) { return node.isElementNode() ? isHTMLSpanElement(toElement(node)) : false; }
461
inline bool isHTMLSpanElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLSpanElement(*toElement(node)) : false; }
462
template <> inline bool isElementOfType<const HTMLSpanElement>(const Element& element) { return isHTMLSpanElement(element); }
463
464
class HTMLTableCaptionElement;
465
void isHTMLTableCaptionElement(const HTMLTableCaptionElement&); // Catch unnecessary runtime check of type known at compile time.
466
void isHTMLTableCaptionElement(const HTMLTableCaptionElement*); // Catch unnecessary runtime check of type known at compile time.
467
inline bool isHTMLTableCaptionElement(const Element& element) {
468
    return element.hasTagName(HTMLNames::captionTag);
469
}
470
inline bool isHTMLTableCaptionElement(const Element* element) { ASSERT(element); return isHTMLTableCaptionElement(*element); }
471
inline bool isHTMLTableCaptionElement(const Node& node) { return node.isElementNode() ? isHTMLTableCaptionElement(toElement(node)) : false; }
472
inline bool isHTMLTableCaptionElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLTableCaptionElement(*toElement(node)) : false; }
473
template <> inline bool isElementOfType<const HTMLTableCaptionElement>(const Element& element) { return isHTMLTableCaptionElement(element); }
474
475
class HTMLTableElement;
476
void isHTMLTableElement(const HTMLTableElement&); // Catch unnecessary runtime check of type known at compile time.
477
void isHTMLTableElement(const HTMLTableElement*); // Catch unnecessary runtime check of type known at compile time.
478
inline bool isHTMLTableElement(const Element& element) {
479
    return element.hasTagName(HTMLNames::tableTag);
480
}
481
inline bool isHTMLTableElement(const Element* element) { ASSERT(element); return isHTMLTableElement(*element); }
482
inline bool isHTMLTableElement(const Node& node) { return node.isElementNode() ? isHTMLTableElement(toElement(node)) : false; }
483
inline bool isHTMLTableElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLTableElement(*toElement(node)) : false; }
484
template <> inline bool isElementOfType<const HTMLTableElement>(const Element& element) { return isHTMLTableElement(element); }
485
486
class HTMLTableRowElement;
487
void isHTMLTableRowElement(const HTMLTableRowElement&); // Catch unnecessary runtime check of type known at compile time.
488
void isHTMLTableRowElement(const HTMLTableRowElement*); // Catch unnecessary runtime check of type known at compile time.
489
inline bool isHTMLTableRowElement(const Element& element) {
490
    return element.hasTagName(HTMLNames::trTag);
491
}
492
inline bool isHTMLTableRowElement(const Element* element) { ASSERT(element); return isHTMLTableRowElement(*element); }
493
inline bool isHTMLTableRowElement(const Node& node) { return node.isElementNode() ? isHTMLTableRowElement(toElement(node)) : false; }
494
inline bool isHTMLTableRowElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLTableRowElement(*toElement(node)) : false; }
495
template <> inline bool isElementOfType<const HTMLTableRowElement>(const Element& element) { return isHTMLTableRowElement(element); }
496
497
class HTMLTemplateElement;
498
void isHTMLTemplateElement(const HTMLTemplateElement&); // Catch unnecessary runtime check of type known at compile time.
499
void isHTMLTemplateElement(const HTMLTemplateElement*); // Catch unnecessary runtime check of type known at compile time.
500
inline bool isHTMLTemplateElement(const Element& element) {
501
    return element.hasTagName(HTMLNames::templateTag);
502
}
503
inline bool isHTMLTemplateElement(const Element* element) { ASSERT(element); return isHTMLTemplateElement(*element); }
504
inline bool isHTMLTemplateElement(const Node& node) { return node.isElementNode() ? isHTMLTemplateElement(toElement(node)) : false; }
505
inline bool isHTMLTemplateElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLTemplateElement(*toElement(node)) : false; }
506
template <> inline bool isElementOfType<const HTMLTemplateElement>(const Element& element) { return isHTMLTemplateElement(element); }
507
508
class HTMLTitleElement;
509
void isHTMLTitleElement(const HTMLTitleElement&); // Catch unnecessary runtime check of type known at compile time.
510
void isHTMLTitleElement(const HTMLTitleElement*); // Catch unnecessary runtime check of type known at compile time.
511
inline bool isHTMLTitleElement(const Element& element) {
512
    return element.hasTagName(HTMLNames::titleTag);
513
}
514
inline bool isHTMLTitleElement(const Element* element) { ASSERT(element); return isHTMLTitleElement(*element); }
515
inline bool isHTMLTitleElement(const Node& node) { return node.isElementNode() ? isHTMLTitleElement(toElement(node)) : false; }
516
inline bool isHTMLTitleElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLTitleElement(*toElement(node)) : false; }
517
template <> inline bool isElementOfType<const HTMLTitleElement>(const Element& element) { return isHTMLTitleElement(element); }
518
519
class HTMLTrackElement;
520
void isHTMLTrackElement(const HTMLTrackElement&); // Catch unnecessary runtime check of type known at compile time.
521
void isHTMLTrackElement(const HTMLTrackElement*); // Catch unnecessary runtime check of type known at compile time.
522
inline bool isHTMLTrackElement(const Element& element) {
523
    if (!RuntimeEnabledFeatures::videoTrackEnabled())
524
        return false;
525
    return element.hasTagName(HTMLNames::trackTag);
526
}
527
inline bool isHTMLTrackElement(const Element* element) { ASSERT(element); return isHTMLTrackElement(*element); }
528
inline bool isHTMLTrackElement(const Node& node) { return node.isElementNode() ? isHTMLTrackElement(toElement(node)) : false; }
529
inline bool isHTMLTrackElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLTrackElement(*toElement(node)) : false; }
530
template <> inline bool isElementOfType<const HTMLTrackElement>(const Element& element) { return isHTMLTrackElement(element); }
531
532
class HTMLUListElement;
533
void isHTMLUListElement(const HTMLUListElement&); // Catch unnecessary runtime check of type known at compile time.
534
void isHTMLUListElement(const HTMLUListElement*); // Catch unnecessary runtime check of type known at compile time.
535
inline bool isHTMLUListElement(const Element& element) {
536
    return element.hasTagName(HTMLNames::ulTag);
537
}
538
inline bool isHTMLUListElement(const Element* element) { ASSERT(element); return isHTMLUListElement(*element); }
539
inline bool isHTMLUListElement(const Node& node) { return node.isElementNode() ? isHTMLUListElement(toElement(node)) : false; }
540
inline bool isHTMLUListElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLUListElement(*toElement(node)) : false; }
541
template <> inline bool isElementOfType<const HTMLUListElement>(const Element& element) { return isHTMLUListElement(element); }
542
543
class HTMLVideoElement;
544
void isHTMLVideoElement(const HTMLVideoElement&); // Catch unnecessary runtime check of type known at compile time.
545
void isHTMLVideoElement(const HTMLVideoElement*); // Catch unnecessary runtime check of type known at compile time.
546
inline bool isHTMLVideoElement(const Element& element) {
547
    if (!RuntimeEnabledFeatures::mediaEnabled())
548
        return false;
549
    return element.hasTagName(HTMLNames::videoTag);
550
}
551
inline bool isHTMLVideoElement(const Element* element) { ASSERT(element); return isHTMLVideoElement(*element); }
552
inline bool isHTMLVideoElement(const Node& node) { return node.isElementNode() ? isHTMLVideoElement(toElement(node)) : false; }
553
inline bool isHTMLVideoElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLVideoElement(*toElement(node)) : false; }
554
template <> inline bool isElementOfType<const HTMLVideoElement>(const Element& element) { return isHTMLVideoElement(element); }
555
556
class HTMLDialogElement;
557
void isHTMLDialogElement(const HTMLDialogElement&); // Catch unnecessary runtime check of type known at compile time.
558
void isHTMLDialogElement(const HTMLDialogElement*); // Catch unnecessary runtime check of type known at compile time.
559
inline bool isHTMLDialogElement(const Element& element) {
560
    if (!ContextFeatures::dialogElementEnabled(&element.document()))
561
        return false;
562
    return element.hasTagName(HTMLNames::dialogTag);
563
}
564
inline bool isHTMLDialogElement(const Element* element) { ASSERT(element); return isHTMLDialogElement(*element); }
565
inline bool isHTMLDialogElement(const Node& node) { return node.isElementNode() ? isHTMLDialogElement(toElement(node)) : false; }
566
inline bool isHTMLDialogElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLDialogElement(*toElement(node)) : false; }
567
template <> inline bool isElementOfType<const HTMLDialogElement>(const Element& element) { return isHTMLDialogElement(element); }
568
569
class HTMLButtonElement;
570
void isHTMLButtonElement(const HTMLButtonElement&); // Catch unnecessary runtime check of type known at compile time.
571
void isHTMLButtonElement(const HTMLButtonElement*); // Catch unnecessary runtime check of type known at compile time.
572
inline bool isHTMLButtonElement(const Element& element) {
573
    return element.hasTagName(HTMLNames::buttonTag);
574
}
575
inline bool isHTMLButtonElement(const Element* element) { ASSERT(element); return isHTMLButtonElement(*element); }
576
inline bool isHTMLButtonElement(const Node& node) { return node.isElementNode() ? isHTMLButtonElement(toElement(node)) : false; }
577
inline bool isHTMLButtonElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLButtonElement(*toElement(node)) : false; }
578
template <> inline bool isElementOfType<const HTMLButtonElement>(const Element& element) { return isHTMLButtonElement(element); }
579
580
class HTMLFieldSetElement;
581
void isHTMLFieldSetElement(const HTMLFieldSetElement&); // Catch unnecessary runtime check of type known at compile time.
582
void isHTMLFieldSetElement(const HTMLFieldSetElement*); // Catch unnecessary runtime check of type known at compile time.
583
inline bool isHTMLFieldSetElement(const Element& element) {
584
    return element.hasTagName(HTMLNames::fieldsetTag);
585
}
586
inline bool isHTMLFieldSetElement(const Element* element) { ASSERT(element); return isHTMLFieldSetElement(*element); }
587
inline bool isHTMLFieldSetElement(const Node& node) { return node.isElementNode() ? isHTMLFieldSetElement(toElement(node)) : false; }
588
inline bool isHTMLFieldSetElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLFieldSetElement(*toElement(node)) : false; }
589
template <> inline bool isElementOfType<const HTMLFieldSetElement>(const Element& element) { return isHTMLFieldSetElement(element); }
590
591
class HTMLImageElement;
592
void isHTMLImageElement(const HTMLImageElement&); // Catch unnecessary runtime check of type known at compile time.
593
void isHTMLImageElement(const HTMLImageElement*); // Catch unnecessary runtime check of type known at compile time.
594
inline bool isHTMLImageElement(const Element& element) {
595
    return element.hasTagName(HTMLNames::imgTag);
596
}
597
inline bool isHTMLImageElement(const Element* element) { ASSERT(element); return isHTMLImageElement(*element); }
598
inline bool isHTMLImageElement(const Node& node) { return node.isElementNode() ? isHTMLImageElement(toElement(node)) : false; }
599
inline bool isHTMLImageElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLImageElement(*toElement(node)) : false; }
600
template <> inline bool isElementOfType<const HTMLImageElement>(const Element& element) { return isHTMLImageElement(element); }
601
602
class HTMLKeygenElement;
603
void isHTMLKeygenElement(const HTMLKeygenElement&); // Catch unnecessary runtime check of type known at compile time.
604
void isHTMLKeygenElement(const HTMLKeygenElement*); // Catch unnecessary runtime check of type known at compile time.
605
inline bool isHTMLKeygenElement(const Element& element) {
606
    return element.hasTagName(HTMLNames::keygenTag);
607
}
608
inline bool isHTMLKeygenElement(const Element* element) { ASSERT(element); return isHTMLKeygenElement(*element); }
609
inline bool isHTMLKeygenElement(const Node& node) { return node.isElementNode() ? isHTMLKeygenElement(toElement(node)) : false; }
610
inline bool isHTMLKeygenElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLKeygenElement(*toElement(node)) : false; }
611
template <> inline bool isElementOfType<const HTMLKeygenElement>(const Element& element) { return isHTMLKeygenElement(element); }
612
613
class HTMLOutputElement;
614
void isHTMLOutputElement(const HTMLOutputElement&); // Catch unnecessary runtime check of type known at compile time.
615
void isHTMLOutputElement(const HTMLOutputElement*); // Catch unnecessary runtime check of type known at compile time.
616
inline bool isHTMLOutputElement(const Element& element) {
617
    return element.hasTagName(HTMLNames::outputTag);
618
}
619
inline bool isHTMLOutputElement(const Element* element) { ASSERT(element); return isHTMLOutputElement(*element); }
620
inline bool isHTMLOutputElement(const Node& node) { return node.isElementNode() ? isHTMLOutputElement(toElement(node)) : false; }
621
inline bool isHTMLOutputElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLOutputElement(*toElement(node)) : false; }
622
template <> inline bool isElementOfType<const HTMLOutputElement>(const Element& element) { return isHTMLOutputElement(element); }
623
624
class HTMLSelectElement;
625
void isHTMLSelectElement(const HTMLSelectElement&); // Catch unnecessary runtime check of type known at compile time.
626
void isHTMLSelectElement(const HTMLSelectElement*); // Catch unnecessary runtime check of type known at compile time.
627
inline bool isHTMLSelectElement(const Element& element) {
628
    return element.hasTagName(HTMLNames::selectTag);
629
}
630
inline bool isHTMLSelectElement(const Element* element) { ASSERT(element); return isHTMLSelectElement(*element); }
631
inline bool isHTMLSelectElement(const Node& node) { return node.isElementNode() ? isHTMLSelectElement(toElement(node)) : false; }
632
inline bool isHTMLSelectElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLSelectElement(*toElement(node)) : false; }
633
template <> inline bool isElementOfType<const HTMLSelectElement>(const Element& element) { return isHTMLSelectElement(element); }
634
635
class HTMLTextAreaElement;
636
void isHTMLTextAreaElement(const HTMLTextAreaElement&); // Catch unnecessary runtime check of type known at compile time.
637
void isHTMLTextAreaElement(const HTMLTextAreaElement*); // Catch unnecessary runtime check of type known at compile time.
638
inline bool isHTMLTextAreaElement(const Element& element) {
639
    return element.hasTagName(HTMLNames::textareaTag);
640
}
641
inline bool isHTMLTextAreaElement(const Element* element) { ASSERT(element); return isHTMLTextAreaElement(*element); }
642
inline bool isHTMLTextAreaElement(const Node& node) { return node.isElementNode() ? isHTMLTextAreaElement(toElement(node)) : false; }
643
inline bool isHTMLTextAreaElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLTextAreaElement(*toElement(node)) : false; }
644
template <> inline bool isElementOfType<const HTMLTextAreaElement>(const Element& element) { return isHTMLTextAreaElement(element); }
645
646
class HTMLAppletElement;
647
void isHTMLAppletElement(const HTMLAppletElement&); // Catch unnecessary runtime check of type known at compile time.
648
void isHTMLAppletElement(const HTMLAppletElement*); // Catch unnecessary runtime check of type known at compile time.
649
inline bool isHTMLAppletElement(const Element& element) {
650
    return element.hasTagName(HTMLNames::appletTag);
651
}
652
inline bool isHTMLAppletElement(const Element* element) { ASSERT(element); return isHTMLAppletElement(*element); }
653
inline bool isHTMLAppletElement(const Node& node) { return node.isElementNode() ? isHTMLAppletElement(toElement(node)) : false; }
654
inline bool isHTMLAppletElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLAppletElement(*toElement(node)) : false; }
655
template <> inline bool isElementOfType<const HTMLAppletElement>(const Element& element) { return isHTMLAppletElement(element); }
656
657
class HTMLEmbedElement;
658
void isHTMLEmbedElement(const HTMLEmbedElement&); // Catch unnecessary runtime check of type known at compile time.
659
void isHTMLEmbedElement(const HTMLEmbedElement*); // Catch unnecessary runtime check of type known at compile time.
660
inline bool isHTMLEmbedElement(const Element& element) {
661
    return element.hasTagName(HTMLNames::embedTag);
662
}
663
inline bool isHTMLEmbedElement(const Element* element) { ASSERT(element); return isHTMLEmbedElement(*element); }
664
inline bool isHTMLEmbedElement(const Node& node) { return node.isElementNode() ? isHTMLEmbedElement(toElement(node)) : false; }
665
inline bool isHTMLEmbedElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLEmbedElement(*toElement(node)) : false; }
666
template <> inline bool isElementOfType<const HTMLEmbedElement>(const Element& element) { return isHTMLEmbedElement(element); }
667
668
class HTMLLinkElement;
669
void isHTMLLinkElement(const HTMLLinkElement&); // Catch unnecessary runtime check of type known at compile time.
670
void isHTMLLinkElement(const HTMLLinkElement*); // Catch unnecessary runtime check of type known at compile time.
671
inline bool isHTMLLinkElement(const Element& element) {
672
    return element.hasTagName(HTMLNames::linkTag);
673
}
674
inline bool isHTMLLinkElement(const Element* element) { ASSERT(element); return isHTMLLinkElement(*element); }
675
inline bool isHTMLLinkElement(const Node& node) { return node.isElementNode() ? isHTMLLinkElement(toElement(node)) : false; }
676
inline bool isHTMLLinkElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLLinkElement(*toElement(node)) : false; }
677
template <> inline bool isElementOfType<const HTMLLinkElement>(const Element& element) { return isHTMLLinkElement(element); }
678
679
class HTMLScriptElement;
680
void isHTMLScriptElement(const HTMLScriptElement&); // Catch unnecessary runtime check of type known at compile time.
681
void isHTMLScriptElement(const HTMLScriptElement*); // Catch unnecessary runtime check of type known at compile time.
682
inline bool isHTMLScriptElement(const Element& element) {
683
    return element.hasTagName(HTMLNames::scriptTag);
684
}
685
inline bool isHTMLScriptElement(const Element* element) { ASSERT(element); return isHTMLScriptElement(*element); }
686
inline bool isHTMLScriptElement(const Node& node) { return node.isElementNode() ? isHTMLScriptElement(toElement(node)) : false; }
687
inline bool isHTMLScriptElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLScriptElement(*toElement(node)) : false; }
688
template <> inline bool isElementOfType<const HTMLScriptElement>(const Element& element) { return isHTMLScriptElement(element); }
689
690
class HTMLStyleElement;
691
void isHTMLStyleElement(const HTMLStyleElement&); // Catch unnecessary runtime check of type known at compile time.
692
void isHTMLStyleElement(const HTMLStyleElement*); // Catch unnecessary runtime check of type known at compile time.
693
inline bool isHTMLStyleElement(const Element& element) {
694
    return element.hasTagName(HTMLNames::styleTag);
695
}
696
inline bool isHTMLStyleElement(const Element* element) { ASSERT(element); return isHTMLStyleElement(*element); }
697
inline bool isHTMLStyleElement(const Node& node) { return node.isElementNode() ? isHTMLStyleElement(toElement(node)) : false; }
698
inline bool isHTMLStyleElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLStyleElement(*toElement(node)) : false; }
699
template <> inline bool isElementOfType<const HTMLStyleElement>(const Element& element) { return isHTMLStyleElement(element); }
700
701
class HTMLInputElement;
702
void isHTMLInputElement(const HTMLInputElement&); // Catch unnecessary runtime check of type known at compile time.
703
void isHTMLInputElement(const HTMLInputElement*); // Catch unnecessary runtime check of type known at compile time.
704
inline bool isHTMLInputElement(const Element& element) {
705
    return element.hasTagName(HTMLNames::inputTag);
706
}
707
inline bool isHTMLInputElement(const Element* element) { ASSERT(element); return isHTMLInputElement(*element); }
708
inline bool isHTMLInputElement(const Node& node) { return node.isElementNode() ? isHTMLInputElement(toElement(node)) : false; }
709
inline bool isHTMLInputElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLInputElement(*toElement(node)) : false; }
710
template <> inline bool isElementOfType<const HTMLInputElement>(const Element& element) { return isHTMLInputElement(element); }
711
712
class HTMLObjectElement;
713
void isHTMLObjectElement(const HTMLObjectElement&); // Catch unnecessary runtime check of type known at compile time.
714
void isHTMLObjectElement(const HTMLObjectElement*); // Catch unnecessary runtime check of type known at compile time.
715
inline bool isHTMLObjectElement(const Element& element) {
716
    return element.hasTagName(HTMLNames::objectTag);
717
}
718
inline bool isHTMLObjectElement(const Element* element) { ASSERT(element); return isHTMLObjectElement(*element); }
719
inline bool isHTMLObjectElement(const Node& node) { return node.isElementNode() ? isHTMLObjectElement(toElement(node)) : false; }
720
inline bool isHTMLObjectElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLObjectElement(*toElement(node)) : false; }
721
template <> inline bool isElementOfType<const HTMLObjectElement>(const Element& element) { return isHTMLObjectElement(element); }
722
723
class HTMLBDIElement;
724
void isHTMLBDIElement(const HTMLBDIElement&); // Catch unnecessary runtime check of type known at compile time.
725
void isHTMLBDIElement(const HTMLBDIElement*); // Catch unnecessary runtime check of type known at compile time.
726
inline bool isHTMLBDIElement(const Element& element) {
727
    return element.hasTagName(HTMLNames::bdiTag);
728
}
729
inline bool isHTMLBDIElement(const Element* element) { ASSERT(element); return isHTMLBDIElement(*element); }
730
inline bool isHTMLBDIElement(const Node& node) { return node.isElementNode() ? isHTMLBDIElement(toElement(node)) : false; }
731
inline bool isHTMLBDIElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLBDIElement(*toElement(node)) : false; }
732
template <> inline bool isElementOfType<const HTMLBDIElement>(const Element& element) { return isHTMLBDIElement(element); }
733
734
class HTMLNoEmbedElement;
735
void isHTMLNoEmbedElement(const HTMLNoEmbedElement&); // Catch unnecessary runtime check of type known at compile time.
736
void isHTMLNoEmbedElement(const HTMLNoEmbedElement*); // Catch unnecessary runtime check of type known at compile time.
737
inline bool isHTMLNoEmbedElement(const Element& element) {
738
    return element.hasTagName(HTMLNames::noembedTag);
739
}
740
inline bool isHTMLNoEmbedElement(const Element* element) { ASSERT(element); return isHTMLNoEmbedElement(*element); }
741
inline bool isHTMLNoEmbedElement(const Node& node) { return node.isElementNode() ? isHTMLNoEmbedElement(toElement(node)) : false; }
742
inline bool isHTMLNoEmbedElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLNoEmbedElement(*toElement(node)) : false; }
743
template <> inline bool isElementOfType<const HTMLNoEmbedElement>(const Element& element) { return isHTMLNoEmbedElement(element); }
744
745
class HTMLNoScriptElement;
746
void isHTMLNoScriptElement(const HTMLNoScriptElement&); // Catch unnecessary runtime check of type known at compile time.
747
void isHTMLNoScriptElement(const HTMLNoScriptElement*); // Catch unnecessary runtime check of type known at compile time.
748
inline bool isHTMLNoScriptElement(const Element& element) {
749
    return element.hasTagName(HTMLNames::noscriptTag);
750
}
751
inline bool isHTMLNoScriptElement(const Element* element) { ASSERT(element); return isHTMLNoScriptElement(*element); }
752
inline bool isHTMLNoScriptElement(const Node& node) { return node.isElementNode() ? isHTMLNoScriptElement(toElement(node)) : false; }
753
inline bool isHTMLNoScriptElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLNoScriptElement(*toElement(node)) : false; }
754
template <> inline bool isElementOfType<const HTMLNoScriptElement>(const Element& element) { return isHTMLNoScriptElement(element); }
755
756
class HTMLRTElement;
757
void isHTMLRTElement(const HTMLRTElement&); // Catch unnecessary runtime check of type known at compile time.
758
void isHTMLRTElement(const HTMLRTElement*); // Catch unnecessary runtime check of type known at compile time.
759
inline bool isHTMLRTElement(const Element& element) {
760
    return element.hasTagName(HTMLNames::rtTag);
761
}
762
inline bool isHTMLRTElement(const Element* element) { ASSERT(element); return isHTMLRTElement(*element); }
763
inline bool isHTMLRTElement(const Node& node) { return node.isElementNode() ? isHTMLRTElement(toElement(node)) : false; }
764
inline bool isHTMLRTElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLRTElement(*toElement(node)) : false; }
765
template <> inline bool isElementOfType<const HTMLRTElement>(const Element& element) { return isHTMLRTElement(element); }
766
767
class HTMLRubyElement;
768
void isHTMLRubyElement(const HTMLRubyElement&); // Catch unnecessary runtime check of type known at compile time.
769
void isHTMLRubyElement(const HTMLRubyElement*); // Catch unnecessary runtime check of type known at compile time.
770
inline bool isHTMLRubyElement(const Element& element) {
771
    return element.hasTagName(HTMLNames::rubyTag);
772
}
773
inline bool isHTMLRubyElement(const Element* element) { ASSERT(element); return isHTMLRubyElement(*element); }
774
inline bool isHTMLRubyElement(const Node& node) { return node.isElementNode() ? isHTMLRubyElement(toElement(node)) : false; }
775
inline bool isHTMLRubyElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLRubyElement(*toElement(node)) : false; }
776
template <> inline bool isElementOfType<const HTMLRubyElement>(const Element& element) { return isHTMLRubyElement(element); }
777
778
class HTMLSummaryElement;
779
void isHTMLSummaryElement(const HTMLSummaryElement&); // Catch unnecessary runtime check of type known at compile time.
780
void isHTMLSummaryElement(const HTMLSummaryElement*); // Catch unnecessary runtime check of type known at compile time.
781
inline bool isHTMLSummaryElement(const Element& element) {
782
    return element.hasTagName(HTMLNames::summaryTag);
783
}
784
inline bool isHTMLSummaryElement(const Element* element) { ASSERT(element); return isHTMLSummaryElement(*element); }
785
inline bool isHTMLSummaryElement(const Node& node) { return node.isElementNode() ? isHTMLSummaryElement(toElement(node)) : false; }
786
inline bool isHTMLSummaryElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLSummaryElement(*toElement(node)) : false; }
787
template <> inline bool isElementOfType<const HTMLSummaryElement>(const Element& element) { return isHTMLSummaryElement(element); }
788
789
class HTMLWBRElement;
790
void isHTMLWBRElement(const HTMLWBRElement&); // Catch unnecessary runtime check of type known at compile time.
791
void isHTMLWBRElement(const HTMLWBRElement*); // Catch unnecessary runtime check of type known at compile time.
792
inline bool isHTMLWBRElement(const Element& element) {
793
    return element.hasTagName(HTMLNames::wbrTag);
794
}
795
inline bool isHTMLWBRElement(const Element* element) { ASSERT(element); return isHTMLWBRElement(*element); }
796
inline bool isHTMLWBRElement(const Node& node) { return node.isElementNode() ? isHTMLWBRElement(toElement(node)) : false; }
797
inline bool isHTMLWBRElement(const Node* node) { ASSERT(node); return node->isElementNode() ? isHTMLWBRElement(*toElement(node)) : false; }
798
template <> inline bool isElementOfType<const HTMLWBRElement>(const Element& element) { return isHTMLWBRElement(element); }
799
800
// Type casting.
801
template<typename T> inline T& toElement(Node& node)
802
{
803
    ASSERT_WITH_SECURITY_IMPLICATION(isElementOfType<const T>(node));
804
    return static_cast<T&>(node);
805
}
806
template<typename T> inline T* toElement(Node* node)
807
{
808
    ASSERT_WITH_SECURITY_IMPLICATION(!node || isElementOfType<const T>(*node));
809
    return static_cast<T*>(node);
810
}
811
template<typename T> inline const T& toElement(const Node& node)
812
{
813
    ASSERT_WITH_SECURITY_IMPLICATION(isElementOfType<const T>(node));
814
    return static_cast<const T&>(node);
815
}
816
template<typename T> inline const T* toElement(const Node* node)
817
{
818
    ASSERT_WITH_SECURITY_IMPLICATION(!node || isElementOfType<const T>(*node));
819
    return static_cast<const T*>(node);
820
}
821
template<typename T, typename U> inline T* toElement(const RefPtr<U>& node) { return toElement<T>(node.get()); }
822
823-
// Using macros because the types are forward-declared as we don't want to use reinterpret_cast in the
823+
// Using macros because the types are forward-declared and we don't want to use reinterpret_cast in the
824
// casting functions above. reinterpret_cast would be unsafe due to multiple inheritence.
825
826
#define toHTMLAnchorElement(x) WebCore::toElement<WebCore::HTMLAnchorElement>(x)
827
828
#define toHTMLAreaElement(x) WebCore::toElement<WebCore::HTMLAreaElement>(x)
829
830
#define toHTMLAudioElement(x) WebCore::toElement<WebCore::HTMLAudioElement>(x)
831
832
#define toHTMLBRElement(x) WebCore::toElement<WebCore::HTMLBRElement>(x)
833
834
#define toHTMLBaseElement(x) WebCore::toElement<WebCore::HTMLBaseElement>(x)
835
836
#define toHTMLBodyElement(x) WebCore::toElement<WebCore::HTMLBodyElement>(x)
837
838
#define toHTMLCanvasElement(x) WebCore::toElement<WebCore::HTMLCanvasElement>(x)
839
840
#define toHTMLContentElement(x) WebCore::toElement<WebCore::HTMLContentElement>(x)
841
842
#define toHTMLDListElement(x) WebCore::toElement<WebCore::HTMLDListElement>(x)
843
844
#define toHTMLDataListElement(x) WebCore::toElement<WebCore::HTMLDataListElement>(x)
845
846
#define toHTMLDetailsElement(x) WebCore::toElement<WebCore::HTMLDetailsElement>(x)
847
848
#define toHTMLDirectoryElement(x) WebCore::toElement<WebCore::HTMLDirectoryElement>(x)
849
850
#define toHTMLDivElement(x) WebCore::toElement<WebCore::HTMLDivElement>(x)
851
852
#define toHTMLFontElement(x) WebCore::toElement<WebCore::HTMLFontElement>(x)
853
854
#define toHTMLFormElement(x) WebCore::toElement<WebCore::HTMLFormElement>(x)
855
856
#define toHTMLFrameElement(x) WebCore::toElement<WebCore::HTMLFrameElement>(x)
857
858
#define toHTMLFrameSetElement(x) WebCore::toElement<WebCore::HTMLFrameSetElement>(x)
859
860
#define toHTMLHRElement(x) WebCore::toElement<WebCore::HTMLHRElement>(x)
861
862
#define toHTMLHeadElement(x) WebCore::toElement<WebCore::HTMLHeadElement>(x)
863
864
#define toHTMLHtmlElement(x) WebCore::toElement<WebCore::HTMLHtmlElement>(x)
865
866
#define toHTMLIFrameElement(x) WebCore::toElement<WebCore::HTMLIFrameElement>(x)
867
868
#define toHTMLLIElement(x) WebCore::toElement<WebCore::HTMLLIElement>(x)
869
870
#define toHTMLLabelElement(x) WebCore::toElement<WebCore::HTMLLabelElement>(x)
871
872
#define toHTMLLegendElement(x) WebCore::toElement<WebCore::HTMLLegendElement>(x)
873
874
#define toHTMLMapElement(x) WebCore::toElement<WebCore::HTMLMapElement>(x)
875
876
#define toHTMLMarqueeElement(x) WebCore::toElement<WebCore::HTMLMarqueeElement>(x)
877
878
#define toHTMLMenuElement(x) WebCore::toElement<WebCore::HTMLMenuElement>(x)
879
880
#define toHTMLMetaElement(x) WebCore::toElement<WebCore::HTMLMetaElement>(x)
881
882
#define toHTMLMeterElement(x) WebCore::toElement<WebCore::HTMLMeterElement>(x)
883
884
#define toHTMLOListElement(x) WebCore::toElement<WebCore::HTMLOListElement>(x)
885
886
#define toHTMLOptGroupElement(x) WebCore::toElement<WebCore::HTMLOptGroupElement>(x)
887
888
#define toHTMLOptionElement(x) WebCore::toElement<WebCore::HTMLOptionElement>(x)
889
890
#define toHTMLParagraphElement(x) WebCore::toElement<WebCore::HTMLParagraphElement>(x)
891
892
#define toHTMLParamElement(x) WebCore::toElement<WebCore::HTMLParamElement>(x)
893
894
#define toHTMLProgressElement(x) WebCore::toElement<WebCore::HTMLProgressElement>(x)
895
896
#define toHTMLShadowElement(x) WebCore::toElement<WebCore::HTMLShadowElement>(x)
897
898
#define toHTMLSourceElement(x) WebCore::toElement<WebCore::HTMLSourceElement>(x)
899
900
#define toHTMLSpanElement(x) WebCore::toElement<WebCore::HTMLSpanElement>(x)
901
902
#define toHTMLTableCaptionElement(x) WebCore::toElement<WebCore::HTMLTableCaptionElement>(x)
903
904
#define toHTMLTableElement(x) WebCore::toElement<WebCore::HTMLTableElement>(x)
905
906
#define toHTMLTableRowElement(x) WebCore::toElement<WebCore::HTMLTableRowElement>(x)
907
908
#define toHTMLTemplateElement(x) WebCore::toElement<WebCore::HTMLTemplateElement>(x)
909
910
#define toHTMLTitleElement(x) WebCore::toElement<WebCore::HTMLTitleElement>(x)
911
912
#define toHTMLTrackElement(x) WebCore::toElement<WebCore::HTMLTrackElement>(x)
913
914
#define toHTMLUListElement(x) WebCore::toElement<WebCore::HTMLUListElement>(x)
915
916
#define toHTMLVideoElement(x) WebCore::toElement<WebCore::HTMLVideoElement>(x)
917
918
#define toHTMLDialogElement(x) WebCore::toElement<WebCore::HTMLDialogElement>(x)
919
920
#define toHTMLButtonElement(x) WebCore::toElement<WebCore::HTMLButtonElement>(x)
921
922
#define toHTMLFieldSetElement(x) WebCore::toElement<WebCore::HTMLFieldSetElement>(x)
923
924
#define toHTMLImageElement(x) WebCore::toElement<WebCore::HTMLImageElement>(x)
925
926
#define toHTMLKeygenElement(x) WebCore::toElement<WebCore::HTMLKeygenElement>(x)
927
928
#define toHTMLOutputElement(x) WebCore::toElement<WebCore::HTMLOutputElement>(x)
929
930
#define toHTMLSelectElement(x) WebCore::toElement<WebCore::HTMLSelectElement>(x)
931
932
#define toHTMLTextAreaElement(x) WebCore::toElement<WebCore::HTMLTextAreaElement>(x)
933
934
#define toHTMLAppletElement(x) WebCore::toElement<WebCore::HTMLAppletElement>(x)
935
936
#define toHTMLEmbedElement(x) WebCore::toElement<WebCore::HTMLEmbedElement>(x)
937
938
#define toHTMLLinkElement(x) WebCore::toElement<WebCore::HTMLLinkElement>(x)
939
940
#define toHTMLScriptElement(x) WebCore::toElement<WebCore::HTMLScriptElement>(x)
941
942
#define toHTMLStyleElement(x) WebCore::toElement<WebCore::HTMLStyleElement>(x)
943
944
#define toHTMLInputElement(x) WebCore::toElement<WebCore::HTMLInputElement>(x)
945
946
#define toHTMLObjectElement(x) WebCore::toElement<WebCore::HTMLObjectElement>(x)
947
948
#define toHTMLBDIElement(x) WebCore::toElement<WebCore::HTMLBDIElement>(x)
949
950
#define toHTMLNoEmbedElement(x) WebCore::toElement<WebCore::HTMLNoEmbedElement>(x)
951
952
#define toHTMLNoScriptElement(x) WebCore::toElement<WebCore::HTMLNoScriptElement>(x)
953
954
#define toHTMLRTElement(x) WebCore::toElement<WebCore::HTMLRTElement>(x)
955
956
#define toHTMLRubyElement(x) WebCore::toElement<WebCore::HTMLRubyElement>(x)
957
958
#define toHTMLSummaryElement(x) WebCore::toElement<WebCore::HTMLSummaryElement>(x)
959
960
#define toHTMLWBRElement(x) WebCore::toElement<WebCore::HTMLWBRElement>(x)
961
962
} // WebCore
963
964
#endif