/platform/external/webkit/WebCore/bindings/v8/V8Index.h

https://github.com/aharish/totoro-gb-opensource-update2 · C Header · 691 lines · 590 code · 53 blank · 48 comment · 2 complexity · d4a1bee7afc6a6de88f209635b4a09fe MD5 · raw file

  1. /*
  2. * Copyright (C) 2009 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. #ifndef V8Index_h
  31. #define V8Index_h
  32. #include <v8.h>
  33. namespace WebCore {
  34. static const int v8DOMWrapperTypeIndex = 0;
  35. static const int v8DOMWrapperObjectIndex = 1;
  36. static const int v8DefaultWrapperInternalFieldCount = 2;
  37. #if ENABLE(DATAGRID)
  38. #define DATAGRID_HTMLELEMENT_TYPES(V) \
  39. V(HTMLDATAGRIDCELLELEMENT, HTMLDataGridCellElement) \
  40. V(HTMLDATAGRIDCOLELEMENT, HTMLDataGridColElement) \
  41. V(HTMLDATAGRIDELEMENT, HTMLDataGridElement) \
  42. V(HTMLDATAGRIDROWELEMENT, HTMLDataGridRowElement)
  43. #define DATAGRID_NONNODE_TYPES(V) \
  44. V(DATAGRIDCOLUMN, DataGridColumn) \
  45. V(DATAGRIDCOLUMNLIST, DataGridColumnList)
  46. #else
  47. #define DATAGRID_HTMLELEMENT_TYPES(V)
  48. #define DATAGRID_NONNODE_TYPES(V)
  49. #endif
  50. #if ENABLE(VIDEO)
  51. #define VIDEO_HTMLELEMENT_TYPES(V) \
  52. V(AUDIO, HTMLAudioElementConstructor) \
  53. V(HTMLAUDIOELEMENT, HTMLAudioElement) \
  54. V(HTMLMEDIAELEMENT, HTMLMediaElement) \
  55. V(HTMLSOURCEELEMENT, HTMLSourceElement) \
  56. V(HTMLVIDEOELEMENT, HTMLVideoElement)
  57. #define VIDEO_NONNODE_TYPES(V) \
  58. V(MEDIAERROR, MediaError) \
  59. V(TIMERANGES, TimeRanges)
  60. #else
  61. #define VIDEO_HTMLELEMENT_TYPES(V)
  62. #define VIDEO_NONNODE_TYPES(V)
  63. #endif
  64. #if ENABLE(WORKERS)
  65. #define WORKER_ACTIVE_OBJECT_WRAPPER_TYPES(V) \
  66. V(WORKER, Worker)
  67. #define WORKER_NONNODE_WRAPPER_TYPES(V) \
  68. V(ABSTRACTWORKER, AbstractWorker) \
  69. V(DEDICATEDWORKERCONTEXT, DedicatedWorkerContext) \
  70. V(WORKERCONTEXT, WorkerContext) \
  71. V(WORKERLOCATION, WorkerLocation) \
  72. V(WORKERNAVIGATOR, WorkerNavigator)
  73. #else
  74. #define WORKER_ACTIVE_OBJECT_WRAPPER_TYPES(V)
  75. #define WORKER_NONNODE_WRAPPER_TYPES(V)
  76. #endif
  77. #if ENABLE(EVENTSOURCE)
  78. #define EVENTSOURCE_ACTIVE_OBJECT_WRAPPER_TYPES(V) \
  79. V(EVENTSOURCE, EventSource)
  80. #else
  81. #define EVENTSOURCE_ACTIVE_OBJECT_WRAPPER_TYPES(V)
  82. #endif
  83. #if ENABLE(OFFLINE_WEB_APPLICATIONS)
  84. #define APPLICATIONCACHE_NONNODE_WRAPPER_TYPES(V) \
  85. V(DOMAPPLICATIONCACHE, DOMApplicationCache)
  86. #else
  87. #define APPLICATIONCACHE_NONNODE_WRAPPER_TYPES(V)
  88. #endif
  89. #if ENABLE(NOTIFICATIONS)
  90. #define NOTIFICATIONS_NONNODE_WRAPPER_TYPES(V) \
  91. V(NOTIFICATION, Notification) \
  92. V(NOTIFICATIONCENTER, NotificationCenter)
  93. #else
  94. #define NOTIFICATIONS_NONNODE_WRAPPER_TYPES(V)
  95. #endif
  96. #if ENABLE(SHARED_WORKERS)
  97. #define SHARED_WORKER_ACTIVE_OBJECT_WRAPPER_TYPES(V) \
  98. V(SHAREDWORKER, SharedWorker)
  99. #define SHARED_WORKER_NONNODE_WRAPPER_TYPES(V) \
  100. V(SHAREDWORKERCONTEXT, SharedWorkerContext)
  101. #else
  102. #define SHARED_WORKER_ACTIVE_OBJECT_WRAPPER_TYPES(V)
  103. #define SHARED_WORKER_NONNODE_WRAPPER_TYPES(V)
  104. #endif
  105. #define DOM_NODE_TYPES(V) \
  106. V(ATTR, Attr) \
  107. V(CHARACTERDATA, CharacterData) \
  108. V(CDATASECTION, CDATASection) \
  109. V(COMMENT, Comment) \
  110. V(DOCUMENT, Document) \
  111. V(DOCUMENTFRAGMENT, DocumentFragment) \
  112. V(DOCUMENTTYPE, DocumentType) \
  113. V(ELEMENT, Element) \
  114. V(ENTITY, Entity) \
  115. V(ENTITYREFERENCE, EntityReference) \
  116. V(HTMLDOCUMENT, HTMLDocument) \
  117. V(IMAGE, HTMLImageElementConstructor) \
  118. V(NODE, Node) \
  119. V(OPTION, HTMLOptionElementConstructor) \
  120. V(NOTATION, Notation) \
  121. V(PROCESSINGINSTRUCTION, ProcessingInstruction) \
  122. V(TEXT, Text) \
  123. V(HTMLANCHORELEMENT, HTMLAnchorElement) \
  124. V(HTMLAPPLETELEMENT, HTMLAppletElement) \
  125. V(HTMLAREAELEMENT, HTMLAreaElement) \
  126. V(HTMLBASEELEMENT, HTMLBaseElement) \
  127. V(HTMLBASEFONTELEMENT, HTMLBaseFontElement) \
  128. V(HTMLBLOCKQUOTEELEMENT, HTMLBlockquoteElement) \
  129. V(HTMLBODYELEMENT, HTMLBodyElement) \
  130. V(HTMLBRELEMENT, HTMLBRElement) \
  131. V(HTMLBUTTONELEMENT, HTMLButtonElement) \
  132. V(HTMLCANVASELEMENT, HTMLCanvasElement) \
  133. V(HTMLDIRECTORYELEMENT, HTMLDirectoryElement) \
  134. V(HTMLDIVELEMENT, HTMLDivElement) \
  135. V(HTMLDLISTELEMENT, HTMLDListElement) \
  136. V(HTMLEMBEDELEMENT, HTMLEmbedElement) \
  137. V(HTMLFIELDSETELEMENT, HTMLFieldSetElement) \
  138. V(HTMLFONTELEMENT, HTMLFontElement) \
  139. V(HTMLFORMELEMENT, HTMLFormElement) \
  140. V(HTMLFRAMEELEMENT, HTMLFrameElement) \
  141. V(HTMLFRAMESETELEMENT, HTMLFrameSetElement) \
  142. V(HTMLHEADINGELEMENT, HTMLHeadingElement) \
  143. V(HTMLHEADELEMENT, HTMLHeadElement) \
  144. V(HTMLHRELEMENT, HTMLHRElement) \
  145. V(HTMLHTMLELEMENT, HTMLHtmlElement) \
  146. V(HTMLIFRAMEELEMENT, HTMLIFrameElement) \
  147. V(HTMLIMAGEELEMENT, HTMLImageElement) \
  148. V(HTMLINPUTELEMENT, HTMLInputElement) \
  149. V(HTMLISINDEXELEMENT, HTMLIsIndexElement) \
  150. V(HTMLLABELELEMENT, HTMLLabelElement) \
  151. V(HTMLLEGENDELEMENT, HTMLLegendElement) \
  152. V(HTMLLIELEMENT, HTMLLIElement) \
  153. V(HTMLLINKELEMENT, HTMLLinkElement) \
  154. V(HTMLMAPELEMENT, HTMLMapElement) \
  155. V(HTMLMARQUEEELEMENT, HTMLMarqueeElement) \
  156. V(HTMLMENUELEMENT, HTMLMenuElement) \
  157. V(HTMLMETAELEMENT, HTMLMetaElement) \
  158. V(HTMLMODELEMENT, HTMLModElement) \
  159. V(HTMLOBJECTELEMENT, HTMLObjectElement) \
  160. V(HTMLOLISTELEMENT, HTMLOListElement) \
  161. V(HTMLOPTGROUPELEMENT, HTMLOptGroupElement) \
  162. V(HTMLOPTIONELEMENT, HTMLOptionElement) \
  163. V(HTMLPARAGRAPHELEMENT, HTMLParagraphElement) \
  164. V(HTMLPARAMELEMENT, HTMLParamElement) \
  165. V(HTMLPREELEMENT, HTMLPreElement) \
  166. V(HTMLQUOTEELEMENT, HTMLQuoteElement) \
  167. V(HTMLSCRIPTELEMENT, HTMLScriptElement) \
  168. V(HTMLSELECTELEMENT, HTMLSelectElement) \
  169. V(HTMLSTYLEELEMENT, HTMLStyleElement) \
  170. V(HTMLTABLECAPTIONELEMENT, HTMLTableCaptionElement) \
  171. V(HTMLTABLECOLELEMENT, HTMLTableColElement) \
  172. V(HTMLTABLEELEMENT, HTMLTableElement) \
  173. V(HTMLTABLESECTIONELEMENT, HTMLTableSectionElement) \
  174. V(HTMLTABLECELLELEMENT, HTMLTableCellElement) \
  175. V(HTMLTABLEROWELEMENT, HTMLTableRowElement) \
  176. V(HTMLTEXTAREAELEMENT, HTMLTextAreaElement) \
  177. V(HTMLTITLEELEMENT, HTMLTitleElement) \
  178. V(HTMLULISTELEMENT, HTMLUListElement) \
  179. V(HTMLELEMENT, HTMLElement) \
  180. DATAGRID_HTMLELEMENT_TYPES(V) \
  181. VIDEO_HTMLELEMENT_TYPES(V)
  182. #if ENABLE(SVG_ANIMATION)
  183. #define SVG_ANIMATION_ELEMENT_TYPES(V) \
  184. V(SVGANIMATECOLORELEMENT, SVGAnimateColorElement) \
  185. V(SVGANIMATEELEMENT, SVGAnimateElement) \
  186. V(SVGANIMATETRANSFORMELEMENT, SVGAnimateTransformElement) \
  187. V(SVGANIMATIONELEMENT, SVGAnimationElement) \
  188. V(SVGSETELEMENT, SVGSetElement)
  189. #else
  190. #define SVG_ANIMATION_ELEMENT_TYPES(V)
  191. #endif
  192. #if ENABLE(SVG) && ENABLE(FILTERS)
  193. #define SVG_FILTERS_ELEMENT_TYPES(V) \
  194. V(SVGCOMPONENTTRANSFERFUNCTIONELEMENT, SVGComponentTransferFunctionElement)\
  195. V(SVGFEBLENDELEMENT, SVGFEBlendElement) \
  196. V(SVGFECOLORMATRIXELEMENT, SVGFEColorMatrixElement) \
  197. V(SVGFECOMPONENTTRANSFERELEMENT, SVGFEComponentTransferElement) \
  198. V(SVGFECOMPOSITEELEMENT, SVGFECompositeElement) \
  199. V(SVGFEDIFFUSELIGHTINGELEMENT, SVGFEDiffuseLightingElement) \
  200. V(SVGFEDISPLACEMENTMAPELEMENT, SVGFEDisplacementMapElement) \
  201. V(SVGFEDISTANTLIGHTELEMENT, SVGFEDistantLightElement) \
  202. V(SVGFEFLOODELEMENT, SVGFEFloodElement) \
  203. V(SVGFEFUNCAELEMENT, SVGFEFuncAElement) \
  204. V(SVGFEFUNCBELEMENT, SVGFEFuncBElement) \
  205. V(SVGFEFUNCGELEMENT, SVGFEFuncGElement) \
  206. V(SVGFEFUNCRELEMENT, SVGFEFuncRElement) \
  207. V(SVGFEGAUSSIANBLURELEMENT, SVGFEGaussianBlurElement) \
  208. V(SVGFEIMAGEELEMENT, SVGFEImageElement) \
  209. V(SVGFEMERGEELEMENT, SVGFEMergeElement) \
  210. V(SVGFEMERGENODEELEMENT, SVGFEMergeNodeElement) \
  211. V(SVGFEMORPHOLOGYELEMENT, SVGFEMorphologyElement) \
  212. V(SVGFEOFFSETELEMENT, SVGFEOffsetElement) \
  213. V(SVGFEPOINTLIGHTELEMENT, SVGFEPointLightElement) \
  214. V(SVGFESPECULARLIGHTINGELEMENT, SVGFESpecularLightingElement) \
  215. V(SVGFESPOTLIGHTELEMENT, SVGFESpotLightElement) \
  216. V(SVGFETILEELEMENT, SVGFETileElement) \
  217. V(SVGFETURBULENCEELEMENT, SVGFETurbulenceElement) \
  218. V(SVGFILTERELEMENT, SVGFilterElement)
  219. #else
  220. #define SVG_FILTERS_ELEMENT_TYPES(V)
  221. #endif
  222. #if ENABLE(SVG_FONTS)
  223. #define SVG_FONTS_ELEMENT_TYPES(V) \
  224. V(SVGFONTELEMENT, SVGFontElement) \
  225. V(SVGFONTFACEELEMENT, SVGFontFaceElement) \
  226. V(SVGFONTFACEFORMATELEMENT, SVGFontFaceFormatElement) \
  227. V(SVGFONTFACENAMEELEMENT, SVGFontFaceNameElement) \
  228. V(SVGFONTFACESRCELEMENT, SVGFontFaceSrcElement) \
  229. V(SVGFONTFACEURIELEMENT, SVGFontFaceUriElement) \
  230. V(SVGMISSINGGLYPHELEMENT, SVGMissingGlyphElement)
  231. #else
  232. #define SVG_FONTS_ELEMENT_TYPES(V)
  233. #endif
  234. #if ENABLE(SVG_FOREIGN_OBJECT)
  235. #define SVG_FOREIGN_OBJECT_ELEMENT_TYPES(V) \
  236. V(SVGFOREIGNOBJECTELEMENT, SVGForeignObjectElement)
  237. #else
  238. #define SVG_FOREIGN_OBJECT_ELEMENT_TYPES(V)
  239. #endif
  240. #if ENABLE(SVG_USE)
  241. #define SVG_USE_ELEMENT_TYPES(V) \
  242. V(SVGUSEELEMENT, SVGUseElement)
  243. #else
  244. #define SVG_USE_ELEMENT_TYPES(V)
  245. #endif
  246. #if ENABLE(SVG)
  247. #define SVG_NODE_TYPES(V) \
  248. SVG_ANIMATION_ELEMENT_TYPES(V) \
  249. SVG_FILTERS_ELEMENT_TYPES(V) \
  250. SVG_FONTS_ELEMENT_TYPES(V) \
  251. SVG_FOREIGN_OBJECT_ELEMENT_TYPES(V) \
  252. SVG_USE_ELEMENT_TYPES(V) \
  253. V(SVGAELEMENT, SVGAElement) \
  254. V(SVGALTGLYPHELEMENT, SVGAltGlyphElement) \
  255. V(SVGCIRCLEELEMENT, SVGCircleElement) \
  256. V(SVGCLIPPATHELEMENT, SVGClipPathElement) \
  257. V(SVGCURSORELEMENT, SVGCursorElement) \
  258. V(SVGDEFSELEMENT, SVGDefsElement) \
  259. V(SVGDESCELEMENT, SVGDescElement) \
  260. V(SVGELLIPSEELEMENT, SVGEllipseElement) \
  261. V(SVGGELEMENT, SVGGElement) \
  262. V(SVGGLYPHELEMENT, SVGGlyphElement) \
  263. V(SVGGRADIENTELEMENT, SVGGradientElement) \
  264. V(SVGIMAGEELEMENT, SVGImageElement) \
  265. V(SVGLINEARGRADIENTELEMENT, SVGLinearGradientElement) \
  266. V(SVGLINEELEMENT, SVGLineElement) \
  267. V(SVGMARKERELEMENT, SVGMarkerElement) \
  268. V(SVGMASKELEMENT, SVGMaskElement) \
  269. V(SVGMETADATAELEMENT, SVGMetadataElement) \
  270. V(SVGPATHELEMENT, SVGPathElement) \
  271. V(SVGPATTERNELEMENT, SVGPatternElement) \
  272. V(SVGPOLYGONELEMENT, SVGPolygonElement) \
  273. V(SVGPOLYLINEELEMENT, SVGPolylineElement) \
  274. V(SVGRADIALGRADIENTELEMENT, SVGRadialGradientElement) \
  275. V(SVGRECTELEMENT, SVGRectElement) \
  276. V(SVGSCRIPTELEMENT, SVGScriptElement) \
  277. V(SVGSTOPELEMENT, SVGStopElement) \
  278. V(SVGSTYLEELEMENT, SVGStyleElement) \
  279. V(SVGSVGELEMENT, SVGSVGElement) \
  280. V(SVGSWITCHELEMENT, SVGSwitchElement) \
  281. V(SVGSYMBOLELEMENT, SVGSymbolElement) \
  282. V(SVGTEXTCONTENTELEMENT, SVGTextContentElement) \
  283. V(SVGTEXTELEMENT, SVGTextElement) \
  284. V(SVGTEXTPATHELEMENT, SVGTextPathElement) \
  285. V(SVGTEXTPOSITIONINGELEMENT, SVGTextPositioningElement) \
  286. V(SVGTITLEELEMENT, SVGTitleElement) \
  287. V(SVGTREFELEMENT, SVGTRefElement) \
  288. V(SVGTSPANELEMENT, SVGTSpanElement) \
  289. V(SVGVIEWELEMENT, SVGViewElement) \
  290. V(SVGELEMENT, SVGElement) \
  291. V(SVGDOCUMENT, SVGDocument)
  292. #endif // SVG
  293. #if ENABLE(WEB_SOCKETS)
  294. #define WEBSOCKET_ACTIVE_OBJECT_WRAPPER_TYPES(V) \
  295. V(WEBSOCKET, WebSocket)
  296. #else
  297. #define WEBSOCKET_ACTIVE_OBJECT_WRAPPER_TYPES(V)
  298. #endif
  299. // ACTIVE_DOM_OBJECT_TYPES are DOM_OBJECT_TYPES that need special treatement
  300. // during GC.
  301. #define ACTIVE_DOM_OBJECT_TYPES(V) \
  302. V(MESSAGEPORT, MessagePort) \
  303. V(XMLHTTPREQUEST, XMLHttpRequest) \
  304. WORKER_ACTIVE_OBJECT_WRAPPER_TYPES(V) \
  305. SHARED_WORKER_ACTIVE_OBJECT_WRAPPER_TYPES(V) \
  306. WEBSOCKET_ACTIVE_OBJECT_WRAPPER_TYPES(V) \
  307. EVENTSOURCE_ACTIVE_OBJECT_WRAPPER_TYPES(V)
  308. // NOTE: DOM_OBJECT_TYPES is split into two halves because
  309. // Visual Studio's Intellinonsense crashes when macros get
  310. // too large. 10-29-08
  311. // DOM_OBJECT_TYPES are non-node DOM types.
  312. #define DOM_OBJECT_TYPES_1(V) \
  313. V(BARINFO, BarInfo) \
  314. V(BEFORELOADEVENT, BeforeLoadEvent) \
  315. V(BLOB, Blob) \
  316. V(CANVASGRADIENT, CanvasGradient) \
  317. V(CANVASPATTERN, CanvasPattern) \
  318. V(CANVASRENDERINGCONTEXT, CanvasRenderingContext) \
  319. V(CANVASRENDERINGCONTEXT2D, CanvasRenderingContext2D) \
  320. V(CLIENTRECT, ClientRect) \
  321. V(CLIENTRECTLIST, ClientRectList) \
  322. V(CLIPBOARD, Clipboard) \
  323. V(CONSOLE, Console) \
  324. V(COMPOSITIONEVENT, CompositionEvent) \
  325. V(COUNTER, Counter) \
  326. V(CSSCHARSETRULE, CSSCharsetRule) \
  327. V(CSSFONTFACERULE, CSSFontFaceRule) \
  328. V(CSSIMPORTRULE, CSSImportRule) \
  329. V(CSSMEDIARULE, CSSMediaRule) \
  330. V(CSSPAGERULE, CSSPageRule) \
  331. V(CSSPRIMITIVEVALUE, CSSPrimitiveValue) \
  332. V(CSSRULE, CSSRule) \
  333. V(CSSRULELIST, CSSRuleList) \
  334. V(CSSSTYLEDECLARATION, CSSStyleDeclaration) \
  335. V(CSSSTYLERULE, CSSStyleRule) \
  336. V(CSSSTYLESHEET, CSSStyleSheet) \
  337. V(CSSVALUE, CSSValue) \
  338. V(CSSVALUELIST, CSSValueList) \
  339. V(CSSVARIABLESDECLARATION, CSSVariablesDeclaration) \
  340. V(CSSVARIABLESRULE, CSSVariablesRule) \
  341. V(DOMCOREEXCEPTION, DOMCoreException) \
  342. V(DOMIMPLEMENTATION, DOMImplementation) \
  343. V(DOMPARSER, DOMParser) \
  344. V(DOMSELECTION, DOMSelection) \
  345. V(DOMWINDOW, DOMWindow) \
  346. V(EVENT, Event) \
  347. V(EVENTEXCEPTION, EventException) \
  348. V(FILE, File) \
  349. V(FILELIST, FileList) \
  350. V(HISTORY, History) \
  351. V(HTMLALLCOLLECTION, HTMLAllCollection) \
  352. V(HTMLCOLLECTION, HTMLCollection) \
  353. V(HTMLOPTIONSCOLLECTION, HTMLOptionsCollection) \
  354. V(IMAGEDATA, ImageData) \
  355. V(CANVASPIXELARRAY, CanvasPixelArray) \
  356. V(KEYBOARDEVENT, KeyboardEvent) \
  357. V(LOCATION, Location) \
  358. V(MEDIA, Media) \
  359. V(MEDIALIST, MediaList)
  360. #define DOM_OBJECT_TYPES_2(V) \
  361. V(MESSAGECHANNEL, MessageChannel) \
  362. V(MESSAGEEVENT, MessageEvent) \
  363. V(MIMETYPE, MimeType) \
  364. V(MIMETYPEARRAY, MimeTypeArray) \
  365. V(MOUSEEVENT, MouseEvent) \
  366. V(MUTATIONEVENT, MutationEvent) \
  367. V(NAMEDNODEMAP, NamedNodeMap) \
  368. V(NAVIGATOR, Navigator) \
  369. V(NODEFILTER, NodeFilter) \
  370. V(NODEITERATOR, NodeIterator) \
  371. V(NODELIST, NodeList) \
  372. V(OVERFLOWEVENT, OverflowEvent) \
  373. V(PAGETRANSITIONEVENT, PageTransitionEvent) \
  374. V(PLUGIN, Plugin) \
  375. V(PLUGINARRAY, PluginArray) \
  376. V(POPSTATEEVENT, PopStateEvent) \
  377. V(PROGRESSEVENT, ProgressEvent) \
  378. V(RANGE, Range) \
  379. V(RANGEEXCEPTION, RangeException) \
  380. V(RECT, Rect) \
  381. V(RGBCOLOR, RGBColor) \
  382. V(SCREEN, Screen) \
  383. V(STYLESHEET, StyleSheet) \
  384. V(STYLESHEETLIST, StyleSheetList) \
  385. V(TEXTEVENT, TextEvent) \
  386. V(TEXTMETRICS, TextMetrics) \
  387. V(TREEWALKER, TreeWalker) \
  388. V(UIEVENT, UIEvent) \
  389. V(VALIDITYSTATE, ValidityState) \
  390. V(WEBKITANIMATIONEVENT, WebKitAnimationEvent) \
  391. V(WEBKITCSSKEYFRAMERULE, WebKitCSSKeyframeRule) \
  392. V(WEBKITCSSKEYFRAMESRULE, WebKitCSSKeyframesRule) \
  393. V(WEBKITCSSMATRIX, WebKitCSSMatrix) \
  394. V(WEBKITPOINT, WebKitPoint) \
  395. V(WEBKITCSSTRANSFORMVALUE, WebKitCSSTransformValue) \
  396. V(WEBKITTRANSITIONEVENT, WebKitTransitionEvent) \
  397. V(WHEELEVENT, WheelEvent) \
  398. V(XMLHTTPREQUESTUPLOAD, XMLHttpRequestUpload) \
  399. V(XMLHTTPREQUESTEXCEPTION, XMLHttpRequestException) \
  400. V(XMLHTTPREQUESTPROGRESSEVENT, XMLHttpRequestProgressEvent) \
  401. V(XMLSERIALIZER, XMLSerializer) \
  402. ACTIVE_DOM_OBJECT_TYPES(V) \
  403. APPLICATIONCACHE_NONNODE_WRAPPER_TYPES(V) \
  404. DATAGRID_NONNODE_TYPES(V) \
  405. VIDEO_NONNODE_TYPES(V) \
  406. NOTIFICATIONS_NONNODE_WRAPPER_TYPES(V) \
  407. SHARED_WORKER_NONNODE_WRAPPER_TYPES(V) \
  408. WORKER_NONNODE_WRAPPER_TYPES(V)
  409. #if ENABLE(DATABASE)
  410. #define DOM_OBJECT_DATABASE_TYPES(V) \
  411. V(DATABASE, Database) \
  412. V(SQLERROR, SQLError) \
  413. V(SQLRESULTSET, SQLResultSet) \
  414. V(SQLRESULTSETROWLIST, SQLResultSetRowList) \
  415. V(SQLTRANSACTION, SQLTransaction)
  416. #else
  417. #define DOM_OBJECT_DATABASE_TYPES(V)
  418. #endif
  419. #if ENABLE(DOM_STORAGE)
  420. #define DOM_OBJECT_STORAGE_TYPES(V) \
  421. V(STORAGE, Storage) \
  422. V(STORAGEEVENT, StorageEvent)
  423. #else
  424. #define DOM_OBJECT_STORAGE_TYPES(V)
  425. #endif
  426. #if ENABLE(INDEXED_DATABASE)
  427. #define DOM_OBJECT_INDEXED_DATABASE_TYPES(V) \
  428. V(IDBDATABASEERROR, IDBDatabaseError) \
  429. V(IDBDATABASEEXCEPTION, IDBDatabaseException) \
  430. V(IDBREQUEST, IDBRequest) \
  431. V(INDEXEDDATABASEREQUEST, IndexedDatabaseRequest)
  432. #else
  433. #define DOM_OBJECT_INDEXED_DATABASE_TYPES(V)
  434. #endif
  435. #if ENABLE(WORKERS)
  436. #define DOM_OBJECT_WORKERS_TYPES(V) \
  437. V(ERROREVENT, ErrorEvent)
  438. #else
  439. #define DOM_OBJECT_WORKERS_TYPES(V)
  440. #endif
  441. #if ENABLE(3D_CANVAS)
  442. #define DOM_OBJECT_3D_CANVAS_TYPES(V) \
  443. V(WEBGLACTIVEINFO, WebGLActiveInfo) \
  444. V(WEBGLARRAY, WebGLArray) \
  445. V(WEBGLARRAYBUFFER, WebGLArrayBuffer) \
  446. V(WEBGLBUFFER, WebGLBuffer) \
  447. V(WEBGLBYTEARRAY, WebGLByteArray) \
  448. V(WEBGLCONTEXTATTRIBUTES, WebGLContextAttributes) \
  449. V(WEBGLFLOATARRAY, WebGLFloatArray) \
  450. V(WEBGLFRAMEBUFFER, WebGLFramebuffer) \
  451. V(WEBGLINTARRAY, WebGLIntArray) \
  452. V(WEBGLPROGRAM, WebGLProgram) \
  453. V(WEBGLRENDERBUFFER, WebGLRenderbuffer) \
  454. V(WEBGLRENDERINGCONTEXT, WebGLRenderingContext) \
  455. V(WEBGLSHADER, WebGLShader) \
  456. V(WEBGLSHORTARRAY, WebGLShortArray) \
  457. V(WEBGLTEXTURE, WebGLTexture) \
  458. V(WEBGLUNIFORMLOCATION, WebGLUniformLocation) \
  459. V(WEBGLUNSIGNEDBYTEARRAY, WebGLUnsignedByteArray) \
  460. V(WEBGLUNSIGNEDINTARRAY, WebGLUnsignedIntArray) \
  461. V(WEBGLUNSIGNEDSHORTARRAY, WebGLUnsignedShortArray)
  462. #else
  463. #define DOM_OBJECT_3D_CANVAS_TYPES(V)
  464. #endif
  465. #if ENABLE(XPATH)
  466. #define DOM_OBJECT_XPATH_TYPES(V) \
  467. V(XPATHEVALUATOR, XPathEvaluator) \
  468. V(XPATHEXCEPTION, XPathException) \
  469. V(XPATHEXPRESSION, XPathExpression) \
  470. V(XPATHNSRESOLVER, XPathNSResolver) \
  471. V(XPATHRESULT, XPathResult)
  472. #else
  473. #define DOM_OBJECT_XPATH_TYPES(V)
  474. #endif
  475. #if ENABLE(XSLT)
  476. #define DOM_OBJECT_XSLT_TYPES(V) \
  477. V(XSLTPROCESSOR, XSLTProcessor)
  478. #else
  479. #define DOM_OBJECT_XSLT_TYPES(V)
  480. #endif
  481. #if ENABLE(INSPECTOR)
  482. #define DOM_OBJECT_INSPECTOR_TYPES(V) \
  483. V(INSPECTORBACKEND, InspectorBackend) \
  484. V(INSPECTORFRONTENDHOST, InspectorFrontendHost) \
  485. V(INJECTEDSCRIPTHOST, InjectedScriptHost)
  486. #else
  487. #define DOM_OBJECT_INSPECTOR_TYPES(V)
  488. #endif
  489. #define DOM_OBJECT_GEOLOCATION_TYPES(V) \
  490. V(COORDINATES, Coordinates) \
  491. V(GEOLOCATION, Geolocation) \
  492. V(GEOPOSITION, Geoposition) \
  493. V(POSITIONERROR, PositionError)
  494. #if ENABLE(TOUCH_EVENTS)
  495. #define DOM_OBJECT_TOUCH_EVENT_TYPES(V) \
  496. V(TOUCH, Touch) \
  497. V(TOUCHEVENT, TouchEvent) \
  498. V(TOUCHLIST, TouchList)
  499. #else
  500. #define DOM_OBJECT_TOUCH_EVENT_TYPES(V)
  501. #endif
  502. #if PLATFORM(ANDROID)
  503. // We don't plan to upstream CONNECTION as it's only temporary, so we
  504. // don't need a default here.
  505. #define DOM_OBJECT_CONNECTION_TYPES(V) \
  506. V(CONNECTION, Connection)
  507. #endif
  508. #if PLATFORM(ANDROID)
  509. // This block is modified, but is not Android-specific.
  510. #define DOM_OBJECT_TYPES(V) \
  511. DOM_OBJECT_TYPES_1(V) \
  512. DOM_OBJECT_TYPES_2(V) \
  513. DOM_OBJECT_DATABASE_TYPES(V) \
  514. DOM_OBJECT_STORAGE_TYPES(V) \
  515. DOM_OBJECT_INDEXED_DATABASE_TYPES(V) \
  516. DOM_OBJECT_WORKERS_TYPES(V) \
  517. DOM_OBJECT_3D_CANVAS_TYPES(V) \
  518. DOM_OBJECT_XPATH_TYPES(V) \
  519. DOM_OBJECT_XSLT_TYPES(V) \
  520. DOM_OBJECT_INSPECTOR_TYPES(V) \
  521. DOM_OBJECT_GEOLOCATION_TYPES(V) \
  522. DOM_OBJECT_TOUCH_EVENT_TYPES(V) \
  523. DOM_OBJECT_CONNECTION_TYPES(V)
  524. #endif
  525. #if ENABLE(SVG)
  526. // SVG_OBJECT_TYPES are svg non-node, non-pod types.
  527. #define SVG_OBJECT_TYPES(V) \
  528. V(SVGANIMATEDANGLE, SVGAnimatedAngle) \
  529. V(SVGANIMATEDBOOLEAN, SVGAnimatedBoolean) \
  530. V(SVGANIMATEDENUMERATION, SVGAnimatedEnumeration) \
  531. V(SVGANIMATEDINTEGER, SVGAnimatedInteger) \
  532. V(SVGANIMATEDLENGTH, SVGAnimatedLength) \
  533. V(SVGANIMATEDLENGTHLIST, SVGAnimatedLengthList) \
  534. V(SVGANIMATEDNUMBER, SVGAnimatedNumber) \
  535. V(SVGANIMATEDNUMBERLIST, SVGAnimatedNumberList) \
  536. V(SVGANIMATEDPRESERVEASPECTRATIO, SVGAnimatedPreserveAspectRatio) \
  537. V(SVGANIMATEDRECT, SVGAnimatedRect) \
  538. V(SVGANIMATEDSTRING, SVGAnimatedString) \
  539. V(SVGANIMATEDTRANSFORMLIST, SVGAnimatedTransformList) \
  540. V(SVGCOLOR, SVGColor) \
  541. V(SVGELEMENTINSTANCE, SVGElementInstance) \
  542. V(SVGELEMENTINSTANCELIST, SVGElementInstanceList) \
  543. V(SVGEXCEPTION, SVGException) \
  544. V(SVGLENGTHLIST, SVGLengthList) \
  545. V(SVGNUMBERLIST, SVGNumberList) \
  546. V(SVGPAINT, SVGPaint) \
  547. V(SVGPATHSEG, SVGPathSeg) \
  548. V(SVGPATHSEGARCABS, SVGPathSegArcAbs) \
  549. V(SVGPATHSEGARCREL, SVGPathSegArcRel) \
  550. V(SVGPATHSEGCLOSEPATH, SVGPathSegClosePath) \
  551. V(SVGPATHSEGCURVETOCUBICABS, SVGPathSegCurvetoCubicAbs) \
  552. V(SVGPATHSEGCURVETOCUBICREL, SVGPathSegCurvetoCubicRel) \
  553. V(SVGPATHSEGCURVETOCUBICSMOOTHABS, SVGPathSegCurvetoCubicSmoothAbs) \
  554. V(SVGPATHSEGCURVETOCUBICSMOOTHREL, SVGPathSegCurvetoCubicSmoothRel) \
  555. V(SVGPATHSEGCURVETOQUADRATICABS, SVGPathSegCurvetoQuadraticAbs) \
  556. V(SVGPATHSEGCURVETOQUADRATICREL, SVGPathSegCurvetoQuadraticRel) \
  557. V(SVGPATHSEGCURVETOQUADRATICSMOOTHABS, SVGPathSegCurvetoQuadraticSmoothAbs)\
  558. V(SVGPATHSEGCURVETOQUADRATICSMOOTHREL, SVGPathSegCurvetoQuadraticSmoothRel)\
  559. V(SVGPATHSEGLINETOABS, SVGPathSegLinetoAbs) \
  560. V(SVGPATHSEGLINETOHORIZONTALABS, SVGPathSegLinetoHorizontalAbs) \
  561. V(SVGPATHSEGLINETOHORIZONTALREL, SVGPathSegLinetoHorizontalRel) \
  562. V(SVGPATHSEGLINETOREL, SVGPathSegLinetoRel) \
  563. V(SVGPATHSEGLINETOVERTICALABS, SVGPathSegLinetoVerticalAbs) \
  564. V(SVGPATHSEGLINETOVERTICALREL, SVGPathSegLinetoVerticalRel) \
  565. V(SVGPATHSEGLIST, SVGPathSegList) \
  566. V(SVGPATHSEGMOVETOABS, SVGPathSegMovetoAbs) \
  567. V(SVGPATHSEGMOVETOREL, SVGPathSegMovetoRel) \
  568. V(SVGPOINTLIST, SVGPointList) \
  569. V(SVGRENDERINGINTENT, SVGRenderingIntent) \
  570. V(SVGSTRINGLIST, SVGStringList) \
  571. V(SVGTRANSFORMLIST, SVGTransformList) \
  572. V(SVGUNITTYPES, SVGUnitTypes) \
  573. V(SVGZOOMEVENT, SVGZoomEvent)
  574. // SVG POD types should list all types whose IDL has PODType declaration.
  575. #define SVG_POD_TYPES(V) \
  576. V(SVGANGLE, SVGAngle) \
  577. V(SVGLENGTH, SVGLength) \
  578. V(SVGPRESERVEASPECTRATIO, SVGPreserveAspectRatio) \
  579. V(SVGTRANSFORM, SVGTransform) \
  580. V(SVGMATRIX, SVGMatrix) \
  581. V(SVGNUMBER, SVGNumber) \
  582. V(SVGPOINT, SVGPoint) \
  583. V(SVGRECT, SVGRect)
  584. // POD types can have different implementation names, see CodeGenerateV8.pm.
  585. #define SVG_POD_NATIVE_TYPES(V) \
  586. V(SVGANGLE, SVGAngle) \
  587. V(SVGLENGTH, SVGLength) \
  588. V(SVGPRESERVEASPECTRATIO, SVGPreserveAspectRatio) \
  589. V(SVGTRANSFORM, SVGTransform) \
  590. V(SVGMATRIX, AffineTransform) \
  591. V(SVGNUMBER, float) \
  592. V(SVGPOINT, FloatPoint) \
  593. V(SVGRECT, FloatRect)
  594. // Shouldn't generate code for these two types.
  595. #define SVG_NO_WRAPPER_TYPES(V) \
  596. V(SVGURIREFERENCE, SVGURIReference) \
  597. V(SVGANIMATEDPOINTS, SVGAnimatedPoints)
  598. // SVG_NONNODE_TYPES are SVG non-node object types, pod typs and
  599. // numerical types.
  600. #define SVG_NONNODE_TYPES(V) \
  601. SVG_OBJECT_TYPES(V) \
  602. SVG_POD_TYPES(V)
  603. #endif // SVG
  604. // EVENTTARGET, EVENTLISTENER, and NPOBJECT do not have V8 wrappers.
  605. #define DOM_NO_WRAPPER_TYPES(V) \
  606. V(EVENTTARGET, EventTarget) \
  607. V(EVENTLISTENER, EventListener) \
  608. V(NPOBJECT, NPObject)
  609. #if ENABLE(SVG)
  610. #define WRAPPER_TYPES(V) DOM_NODE_TYPES(V) DOM_OBJECT_TYPES(V) SVG_NODE_TYPES(V) SVG_NONNODE_TYPES(V)
  611. #define NO_WRAPPER_TYPES(V) DOM_NO_WRAPPER_TYPES(V) SVG_NO_WRAPPER_TYPES(V)
  612. #else // SVG
  613. #define WRAPPER_TYPES(V) DOM_NODE_TYPES(V) DOM_OBJECT_TYPES(V)
  614. #define NO_WRAPPER_TYPES(V) DOM_NO_WRAPPER_TYPES(V)
  615. #endif // SVG
  616. #define ALL_WRAPPER_TYPES(V) WRAPPER_TYPES(V) NO_WRAPPER_TYPES(V)
  617. class V8ClassIndex {
  618. public:
  619. // Type must start at non-negative numbers. See ToInt, FromInt.
  620. enum V8WrapperType {
  621. INVALID_CLASS_INDEX = 0,
  622. #define DEFINE_ENUM(name, type) name,
  623. ALL_WRAPPER_TYPES(DEFINE_ENUM)
  624. #undef DEFINE_ENUM
  625. CLASSINDEX_END,
  626. WRAPPER_TYPE_COUNT = CLASSINDEX_END
  627. };
  628. // FIXME: Convert to toInt after all the bindings are in one place.
  629. static int ToInt(V8WrapperType type) { return static_cast<int>(type); }
  630. // FIXME: Convert to fromInt after all the bindings are in one place.
  631. static V8WrapperType FromInt(int v) {
  632. ASSERT(INVALID_CLASS_INDEX <= v && v < CLASSINDEX_END);
  633. return static_cast<V8WrapperType>(v);
  634. }
  635. static v8::Persistent<v8::FunctionTemplate> getTemplate(V8WrapperType type);
  636. };
  637. }
  638. #endif // V8Index_h