Advertisement
Guest User

Untitled

a guest
Feb 21st, 2014
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement