| /* |
| * Copyright (C) 2009 Google Inc. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions are |
| * met: |
| * |
| * * Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * * Redistributions in binary form must reproduce the above |
| * copyright notice, this list of conditions and the following disclaimer |
| * in the documentation and/or other materials provided with the |
| * distribution. |
| * * Neither the name of Google Inc. nor the names of its |
| * contributors may be used to endorse or promote products derived from |
| * this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| #ifndef V8Index_h |
| #define V8Index_h |
| |
| #include <v8.h> |
| #include "PlatformString.h" // for WebCore::String |
| |
| namespace WebCore { |
| |
| typedef v8::Persistent<v8::FunctionTemplate> (*FunctionTemplateFactory)(); |
| |
| #if ENABLE(DATAGRID) |
| #define DATAGRID_HTMLELEMENT_TYPES(V) \ |
| V(HTMLDATAGRIDCELLELEMENT, HTMLDataGridCellElement) \ |
| V(HTMLDATAGRIDCOLELEMENT, HTMLDataGridColElement) \ |
| V(HTMLDATAGRIDELEMENT, HTMLDataGridElement) \ |
| V(HTMLDATAGRIDROWELEMENT, HTMLDataGridRowElement) |
| #define DATAGRID_NONNODE_TYPES(V) \ |
| V(DATAGRIDCOLUMN, DataGridColumn) \ |
| V(DATAGRIDCOLUMNLIST, DataGridColumnList) |
| #else |
| #define DATAGRID_HTMLELEMENT_TYPES(V) |
| #define DATAGRID_NONNODE_TYPES(V) |
| #endif |
| |
| #if ENABLE(VIDEO) |
| #define VIDEO_HTMLELEMENT_TYPES(V) \ |
| V(AUDIO, HTMLAudioElementConstructor) \ |
| V(HTMLAUDIOELEMENT, HTMLAudioElement) \ |
| V(HTMLMEDIAELEMENT, HTMLMediaElement) \ |
| V(HTMLSOURCEELEMENT, HTMLSourceElement) \ |
| V(HTMLVIDEOELEMENT, HTMLVideoElement) |
| #define VIDEO_NONNODE_TYPES(V) \ |
| V(MEDIAERROR, MediaError) \ |
| V(TIMERANGES, TimeRanges) |
| #else |
| #define VIDEO_HTMLELEMENT_TYPES(V) |
| #define VIDEO_NONNODE_TYPES(V) |
| #endif |
| |
| #if ENABLE(WORKERS) |
| #define WORKER_ACTIVE_OBJECT_WRAPPER_TYPES(V) \ |
| V(WORKER, Worker) |
| |
| #define WORKER_NONNODE_WRAPPER_TYPES(V) \ |
| V(ABSTRACTWORKER, AbstractWorker) \ |
| V(DEDICATEDWORKERCONTEXT, DedicatedWorkerContext) \ |
| V(WORKERCONTEXT, WorkerContext) \ |
| V(WORKERLOCATION, WorkerLocation) \ |
| V(WORKERNAVIGATOR, WorkerNavigator) |
| #else |
| #define WORKER_ACTIVE_OBJECT_WRAPPER_TYPES(V) |
| #define WORKER_NONNODE_WRAPPER_TYPES(V) |
| #endif |
| |
| #if ENABLE(OFFLINE_WEB_APPLICATIONS) |
| #define APPLICATIONCACHE_NONNODE_WRAPPER_TYPES(V) \ |
| V(DOMAPPLICATIONCACHE, DOMApplicationCache) |
| #else |
| #define APPLICATIONCACHE_NONNODE_WRAPPER_TYPES(V) |
| #endif |
| |
| #if ENABLE(NOTIFICATIONS) |
| #define NOTIFICATIONS_NONNODE_WRAPPER_TYPES(V) \ |
| V(NOTIFICATION, Notification) \ |
| V(NOTIFICATIONCENTER, NotificationCenter) |
| #else |
| #define NOTIFICATIONS_NONNODE_WRAPPER_TYPES(V) |
| #endif |
| |
| #if ENABLE(SHARED_WORKERS) |
| #define SHARED_WORKER_ACTIVE_OBJECT_WRAPPER_TYPES(V) \ |
| V(SHAREDWORKER, SharedWorker) |
| |
| #define SHARED_WORKER_NONNODE_WRAPPER_TYPES(V) \ |
| V(SHAREDWORKERCONTEXT, SharedWorkerContext) |
| #else |
| #define SHARED_WORKER_ACTIVE_OBJECT_WRAPPER_TYPES(V) |
| #define SHARED_WORKER_NONNODE_WRAPPER_TYPES(V) |
| #endif |
| |
| #define DOM_NODE_TYPES(V) \ |
| V(ATTR, Attr) \ |
| V(CHARACTERDATA, CharacterData) \ |
| V(CDATASECTION, CDATASection) \ |
| V(COMMENT, Comment) \ |
| V(DOCUMENT, Document) \ |
| V(DOCUMENTFRAGMENT, DocumentFragment) \ |
| V(DOCUMENTTYPE, DocumentType) \ |
| V(ELEMENT, Element) \ |
| V(ENTITY, Entity) \ |
| V(ENTITYREFERENCE, EntityReference) \ |
| V(HTMLDOCUMENT, HTMLDocument) \ |
| V(IMAGE, HTMLImageElementConstructor) \ |
| V(NODE, Node) \ |
| V(OPTION, HTMLOptionElementConstructor) \ |
| V(NOTATION, Notation) \ |
| V(PROCESSINGINSTRUCTION, ProcessingInstruction) \ |
| V(TEXT, Text) \ |
| V(HTMLANCHORELEMENT, HTMLAnchorElement) \ |
| V(HTMLAPPLETELEMENT, HTMLAppletElement) \ |
| V(HTMLAREAELEMENT, HTMLAreaElement) \ |
| V(HTMLBASEELEMENT, HTMLBaseElement) \ |
| V(HTMLBASEFONTELEMENT, HTMLBaseFontElement) \ |
| V(HTMLBLOCKQUOTEELEMENT, HTMLBlockquoteElement) \ |
| V(HTMLBODYELEMENT, HTMLBodyElement) \ |
| V(HTMLBRELEMENT, HTMLBRElement) \ |
| V(HTMLBUTTONELEMENT, HTMLButtonElement) \ |
| V(HTMLCANVASELEMENT, HTMLCanvasElement) \ |
| V(HTMLDIRECTORYELEMENT, HTMLDirectoryElement) \ |
| V(HTMLDIVELEMENT, HTMLDivElement) \ |
| V(HTMLDLISTELEMENT, HTMLDListElement) \ |
| V(HTMLEMBEDELEMENT, HTMLEmbedElement) \ |
| V(HTMLFIELDSETELEMENT, HTMLFieldSetElement) \ |
| V(HTMLFONTELEMENT, HTMLFontElement) \ |
| V(HTMLFORMELEMENT, HTMLFormElement) \ |
| V(HTMLFRAMEELEMENT, HTMLFrameElement) \ |
| V(HTMLFRAMESETELEMENT, HTMLFrameSetElement) \ |
| V(HTMLHEADINGELEMENT, HTMLHeadingElement) \ |
| V(HTMLHEADELEMENT, HTMLHeadElement) \ |
| V(HTMLHRELEMENT, HTMLHRElement) \ |
| V(HTMLHTMLELEMENT, HTMLHtmlElement) \ |
| V(HTMLIFRAMEELEMENT, HTMLIFrameElement) \ |
| V(HTMLIMAGEELEMENT, HTMLImageElement) \ |
| V(HTMLINPUTELEMENT, HTMLInputElement) \ |
| V(HTMLISINDEXELEMENT, HTMLIsIndexElement) \ |
| V(HTMLLABELELEMENT, HTMLLabelElement) \ |
| V(HTMLLEGENDELEMENT, HTMLLegendElement) \ |
| V(HTMLLIELEMENT, HTMLLIElement) \ |
| V(HTMLLINKELEMENT, HTMLLinkElement) \ |
| V(HTMLMAPELEMENT, HTMLMapElement) \ |
| V(HTMLMARQUEEELEMENT, HTMLMarqueeElement) \ |
| V(HTMLMENUELEMENT, HTMLMenuElement) \ |
| V(HTMLMETAELEMENT, HTMLMetaElement) \ |
| V(HTMLMODELEMENT, HTMLModElement) \ |
| V(HTMLOBJECTELEMENT, HTMLObjectElement) \ |
| V(HTMLOLISTELEMENT, HTMLOListElement) \ |
| V(HTMLOPTGROUPELEMENT, HTMLOptGroupElement) \ |
| V(HTMLOPTIONELEMENT, HTMLOptionElement) \ |
| V(HTMLPARAGRAPHELEMENT, HTMLParagraphElement) \ |
| V(HTMLPARAMELEMENT, HTMLParamElement) \ |
| V(HTMLPREELEMENT, HTMLPreElement) \ |
| V(HTMLQUOTEELEMENT, HTMLQuoteElement) \ |
| V(HTMLSCRIPTELEMENT, HTMLScriptElement) \ |
| V(HTMLSELECTELEMENT, HTMLSelectElement) \ |
| V(HTMLSTYLEELEMENT, HTMLStyleElement) \ |
| V(HTMLTABLECAPTIONELEMENT, HTMLTableCaptionElement) \ |
| V(HTMLTABLECOLELEMENT, HTMLTableColElement) \ |
| V(HTMLTABLEELEMENT, HTMLTableElement) \ |
| V(HTMLTABLESECTIONELEMENT, HTMLTableSectionElement) \ |
| V(HTMLTABLECELLELEMENT, HTMLTableCellElement) \ |
| V(HTMLTABLEROWELEMENT, HTMLTableRowElement) \ |
| V(HTMLTEXTAREAELEMENT, HTMLTextAreaElement) \ |
| V(HTMLTITLEELEMENT, HTMLTitleElement) \ |
| V(HTMLULISTELEMENT, HTMLUListElement) \ |
| V(HTMLELEMENT, HTMLElement) \ |
| DATAGRID_HTMLELEMENT_TYPES(V) \ |
| VIDEO_HTMLELEMENT_TYPES(V) |
| |
| #if ENABLE(SVG_ANIMATION) |
| #define SVG_ANIMATION_ELEMENT_TYPES(V) \ |
| V(SVGANIMATECOLORELEMENT, SVGAnimateColorElement) \ |
| V(SVGANIMATEELEMENT, SVGAnimateElement) \ |
| V(SVGANIMATETRANSFORMELEMENT, SVGAnimateTransformElement) \ |
| V(SVGANIMATIONELEMENT, SVGAnimationElement) \ |
| V(SVGSETELEMENT, SVGSetElement) |
| #else |
| #define SVG_ANIMATION_ELEMENT_TYPES(V) |
| #endif |
| |
| #if ENABLE(SVG_FILTERS) |
| #define SVG_FILTERS_ELEMENT_TYPES(V) \ |
| V(SVGCOMPONENTTRANSFERFUNCTIONELEMENT, SVGComponentTransferFunctionElement)\ |
| V(SVGFEBLENDELEMENT, SVGFEBlendElement) \ |
| V(SVGFECOLORMATRIXELEMENT, SVGFEColorMatrixElement) \ |
| V(SVGFECOMPONENTTRANSFERELEMENT, SVGFEComponentTransferElement) \ |
| V(SVGFECOMPOSITEELEMENT, SVGFECompositeElement) \ |
| V(SVGFEDIFFUSELIGHTINGELEMENT, SVGFEDiffuseLightingElement) \ |
| V(SVGFEDISPLACEMENTMAPELEMENT, SVGFEDisplacementMapElement) \ |
| V(SVGFEDISTANTLIGHTELEMENT, SVGFEDistantLightElement) \ |
| V(SVGFEFLOODELEMENT, SVGFEFloodElement) \ |
| V(SVGFEFUNCAELEMENT, SVGFEFuncAElement) \ |
| V(SVGFEFUNCBELEMENT, SVGFEFuncBElement) \ |
| V(SVGFEFUNCGELEMENT, SVGFEFuncGElement) \ |
| V(SVGFEFUNCRELEMENT, SVGFEFuncRElement) \ |
| V(SVGFEGAUSSIANBLURELEMENT, SVGFEGaussianBlurElement) \ |
| V(SVGFEIMAGEELEMENT, SVGFEImageElement) \ |
| V(SVGFEMERGEELEMENT, SVGFEMergeElement) \ |
| V(SVGFEMERGENODEELEMENT, SVGFEMergeNodeElement) \ |
| V(SVGFEOFFSETELEMENT, SVGFEOffsetElement) \ |
| V(SVGFEPOINTLIGHTELEMENT, SVGFEPointLightElement) \ |
| V(SVGFESPECULARLIGHTINGELEMENT, SVGFESpecularLightingElement) \ |
| V(SVGFESPOTLIGHTELEMENT, SVGFESpotLightElement) \ |
| V(SVGFETILEELEMENT, SVGFETileElement) \ |
| V(SVGFETURBULENCEELEMENT, SVGFETurbulenceElement) \ |
| V(SVGFILTERELEMENT, SVGFilterElement) |
| #else |
| #define SVG_FILTERS_ELEMENT_TYPES(V) |
| #endif |
| |
| #if ENABLE(SVG_FONTS) |
| #define SVG_FONTS_ELEMENT_TYPES(V) \ |
| V(SVGFONTFACEELEMENT, SVGFontFaceElement) \ |
| V(SVGFONTFACEFORMATELEMENT, SVGFontFaceFormatElement) \ |
| V(SVGFONTFACENAMEELEMENT, SVGFontFaceNameElement) \ |
| V(SVGFONTFACESRCELEMENT, SVGFontFaceSrcElement) \ |
| V(SVGFONTFACEURIELEMENT, SVGFontFaceUriElement) |
| #else |
| #define SVG_FONTS_ELEMENT_TYPES(V) |
| #endif |
| |
| #if ENABLE(SVG_FOREIGN_OBJECT) |
| #define SVG_FOREIGN_OBJECT_ELEMENT_TYPES(V) \ |
| V(SVGFOREIGNOBJECTELEMENT, SVGForeignObjectElement) |
| #else |
| #define SVG_FOREIGN_OBJECT_ELEMENT_TYPES(V) |
| #endif |
| |
| #if ENABLE(SVG_USE) |
| #define SVG_USE_ELEMENT_TYPES(V) \ |
| V(SVGUSEELEMENT, SVGUseElement) |
| #else |
| #define SVG_USE_ELEMENT_TYPES(V) |
| #endif |
| |
| #if ENABLE(SVG) |
| #define SVG_NODE_TYPES(V) \ |
| SVG_ANIMATION_ELEMENT_TYPES(V) \ |
| SVG_FILTERS_ELEMENT_TYPES(V) \ |
| SVG_FONTS_ELEMENT_TYPES(V) \ |
| SVG_FOREIGN_OBJECT_ELEMENT_TYPES(V) \ |
| SVG_USE_ELEMENT_TYPES(V) \ |
| V(SVGAELEMENT, SVGAElement) \ |
| V(SVGALTGLYPHELEMENT, SVGAltGlyphElement) \ |
| V(SVGCIRCLEELEMENT, SVGCircleElement) \ |
| V(SVGCLIPPATHELEMENT, SVGClipPathElement) \ |
| V(SVGCURSORELEMENT, SVGCursorElement) \ |
| V(SVGDEFSELEMENT, SVGDefsElement) \ |
| V(SVGDESCELEMENT, SVGDescElement) \ |
| V(SVGELLIPSEELEMENT, SVGEllipseElement) \ |
| V(SVGGELEMENT, SVGGElement) \ |
| V(SVGGLYPHELEMENT, SVGGlyphElement) \ |
| V(SVGGRADIENTELEMENT, SVGGradientElement) \ |
| V(SVGIMAGEELEMENT, SVGImageElement) \ |
| V(SVGLINEARGRADIENTELEMENT, SVGLinearGradientElement) \ |
| V(SVGLINEELEMENT, SVGLineElement) \ |
| V(SVGMARKERELEMENT, SVGMarkerElement) \ |
| V(SVGMASKELEMENT, SVGMaskElement) \ |
| V(SVGMETADATAELEMENT, SVGMetadataElement) \ |
| V(SVGPATHELEMENT, SVGPathElement) \ |
| V(SVGPATTERNELEMENT, SVGPatternElement) \ |
| V(SVGPOLYGONELEMENT, SVGPolygonElement) \ |
| V(SVGPOLYLINEELEMENT, SVGPolylineElement) \ |
| V(SVGRADIALGRADIENTELEMENT, SVGRadialGradientElement) \ |
| V(SVGRECTELEMENT, SVGRectElement) \ |
| V(SVGSCRIPTELEMENT, SVGScriptElement) \ |
| V(SVGSTOPELEMENT, SVGStopElement) \ |
| V(SVGSTYLEELEMENT, SVGStyleElement) \ |
| V(SVGSVGELEMENT, SVGSVGElement) \ |
| V(SVGSWITCHELEMENT, SVGSwitchElement) \ |
| V(SVGSYMBOLELEMENT, SVGSymbolElement) \ |
| V(SVGTEXTCONTENTELEMENT, SVGTextContentElement) \ |
| V(SVGTEXTELEMENT, SVGTextElement) \ |
| V(SVGTEXTPATHELEMENT, SVGTextPathElement) \ |
| V(SVGTEXTPOSITIONINGELEMENT, SVGTextPositioningElement) \ |
| V(SVGTITLEELEMENT, SVGTitleElement) \ |
| V(SVGTREFELEMENT, SVGTRefElement) \ |
| V(SVGTSPANELEMENT, SVGTSpanElement) \ |
| V(SVGVIEWELEMENT, SVGViewElement) \ |
| V(SVGELEMENT, SVGElement) \ |
| V(SVGDOCUMENT, SVGDocument) |
| #endif // SVG |
| |
| |
| #if ENABLE(WEB_SOCKETS) |
| #define WEBSOCKET_ACTIVE_OBJECT_WRAPPER_TYPES(V) \ |
| V(WEBSOCKET, WebSocket) |
| #else |
| #define WEBSOCKET_ACTIVE_OBJECT_WRAPPER_TYPES(V) |
| #endif |
| |
| // ACTIVE_DOM_OBJECT_TYPES are DOM_OBJECT_TYPES that need special treatement |
| // during GC. |
| #define ACTIVE_DOM_OBJECT_TYPES(V) \ |
| V(MESSAGEPORT, MessagePort) \ |
| V(XMLHTTPREQUEST, XMLHttpRequest) \ |
| WORKER_ACTIVE_OBJECT_WRAPPER_TYPES(V) \ |
| SHARED_WORKER_ACTIVE_OBJECT_WRAPPER_TYPES(V) \ |
| WEBSOCKET_ACTIVE_OBJECT_WRAPPER_TYPES(V) |
| |
| // NOTE: DOM_OBJECT_TYPES is split into two halves because |
| // Visual Studio's Intellinonsense crashes when macros get |
| // too large. 10-29-08 |
| // DOM_OBJECT_TYPES are non-node DOM types. |
| #define DOM_OBJECT_TYPES_1(V) \ |
| V(BARINFO, BarInfo) \ |
| V(BEFORELOADEVENT, BeforeLoadEvent) \ |
| V(CANVASGRADIENT, CanvasGradient) \ |
| V(CANVASPATTERN, CanvasPattern) \ |
| V(CANVASRENDERINGCONTEXT, CanvasRenderingContext) \ |
| V(CANVASRENDERINGCONTEXT2D, CanvasRenderingContext2D) \ |
| V(CLIENTRECT, ClientRect) \ |
| V(CLIENTRECTLIST, ClientRectList) \ |
| V(CLIPBOARD, Clipboard) \ |
| V(CONSOLE, Console) \ |
| V(COUNTER, Counter) \ |
| V(CSSCHARSETRULE, CSSCharsetRule) \ |
| V(CSSFONTFACERULE, CSSFontFaceRule) \ |
| V(CSSIMPORTRULE, CSSImportRule) \ |
| V(CSSMEDIARULE, CSSMediaRule) \ |
| V(CSSPAGERULE, CSSPageRule) \ |
| V(CSSPRIMITIVEVALUE, CSSPrimitiveValue) \ |
| V(CSSRULE, CSSRule) \ |
| V(CSSRULELIST, CSSRuleList) \ |
| V(CSSSTYLEDECLARATION, CSSStyleDeclaration) \ |
| V(CSSSTYLERULE, CSSStyleRule) \ |
| V(CSSSTYLESHEET, CSSStyleSheet) \ |
| V(CSSVALUE, CSSValue) \ |
| V(CSSVALUELIST, CSSValueList) \ |
| V(CSSVARIABLESDECLARATION, CSSVariablesDeclaration) \ |
| V(CSSVARIABLESRULE, CSSVariablesRule) \ |
| V(DOMCOREEXCEPTION, DOMCoreException) \ |
| V(DOMIMPLEMENTATION, DOMImplementation) \ |
| V(DOMPARSER, DOMParser) \ |
| V(DOMSELECTION, DOMSelection) \ |
| V(DOMWINDOW, DOMWindow) \ |
| V(EVENT, Event) \ |
| V(EVENTEXCEPTION, EventException) \ |
| V(FILE, File) \ |
| V(FILELIST, FileList) \ |
| V(HISTORY, History) \ |
| V(HTMLALLCOLLECTION, HTMLAllCollection) \ |
| V(HTMLCOLLECTION, HTMLCollection) \ |
| V(HTMLOPTIONSCOLLECTION, HTMLOptionsCollection) \ |
| V(IMAGEDATA, ImageData) \ |
| V(CANVASPIXELARRAY, CanvasPixelArray) \ |
| V(KEYBOARDEVENT, KeyboardEvent) \ |
| V(LOCATION, Location) \ |
| V(MEDIA, Media) \ |
| V(MEDIALIST, MediaList) |
| |
| #define DOM_OBJECT_TYPES_2(V) \ |
| V(MESSAGECHANNEL, MessageChannel) \ |
| V(MESSAGEEVENT, MessageEvent) \ |
| V(MIMETYPE, MimeType) \ |
| V(MIMETYPEARRAY, MimeTypeArray) \ |
| V(MOUSEEVENT, MouseEvent) \ |
| V(MUTATIONEVENT, MutationEvent) \ |
| V(NAMEDNODEMAP, NamedNodeMap) \ |
| V(NAVIGATOR, Navigator) \ |
| V(NODEFILTER, NodeFilter) \ |
| V(NODEITERATOR, NodeIterator) \ |
| V(NODELIST, NodeList) \ |
| V(OVERFLOWEVENT, OverflowEvent) \ |
| V(PAGETRANSITIONEVENT, PageTransitionEvent) \ |
| V(PLUGIN, Plugin) \ |
| V(PLUGINARRAY, PluginArray) \ |
| V(PROGRESSEVENT, ProgressEvent) \ |
| V(RANGE, Range) \ |
| V(RANGEEXCEPTION, RangeException) \ |
| V(RECT, Rect) \ |
| V(RGBCOLOR, RGBColor) \ |
| V(SCREEN, Screen) \ |
| V(STYLESHEET, StyleSheet) \ |
| V(STYLESHEETLIST, StyleSheetList) \ |
| V(TEXTEVENT, TextEvent) \ |
| V(TEXTMETRICS, TextMetrics) \ |
| V(TREEWALKER, TreeWalker) \ |
| V(UIEVENT, UIEvent) \ |
| V(VALIDITYSTATE, ValidityState) \ |
| V(WEBKITANIMATIONEVENT, WebKitAnimationEvent) \ |
| V(WEBKITCSSKEYFRAMERULE, WebKitCSSKeyframeRule) \ |
| V(WEBKITCSSKEYFRAMESRULE, WebKitCSSKeyframesRule) \ |
| V(WEBKITCSSMATRIX, WebKitCSSMatrix) \ |
| V(WEBKITPOINT, WebKitPoint) \ |
| V(WEBKITCSSTRANSFORMVALUE, WebKitCSSTransformValue) \ |
| V(WEBKITTRANSITIONEVENT, WebKitTransitionEvent) \ |
| V(WHEELEVENT, WheelEvent) \ |
| V(XMLHTTPREQUESTUPLOAD, XMLHttpRequestUpload) \ |
| V(XMLHTTPREQUESTEXCEPTION, XMLHttpRequestException) \ |
| V(XMLHTTPREQUESTPROGRESSEVENT, XMLHttpRequestProgressEvent) \ |
| V(XMLSERIALIZER, XMLSerializer) \ |
| ACTIVE_DOM_OBJECT_TYPES(V) \ |
| APPLICATIONCACHE_NONNODE_WRAPPER_TYPES(V) \ |
| DATAGRID_NONNODE_TYPES(V) \ |
| VIDEO_NONNODE_TYPES(V) \ |
| NOTIFICATIONS_NONNODE_WRAPPER_TYPES(V) \ |
| SHARED_WORKER_NONNODE_WRAPPER_TYPES(V) \ |
| WORKER_NONNODE_WRAPPER_TYPES(V) |
| |
| #if ENABLE(DATABASE) |
| #define DOM_OBJECT_DATABASE_TYPES(V) \ |
| V(DATABASE, Database) \ |
| V(SQLERROR, SQLError) \ |
| V(SQLRESULTSET, SQLResultSet) \ |
| V(SQLRESULTSETROWLIST, SQLResultSetRowList) \ |
| V(SQLTRANSACTION, SQLTransaction) |
| #else |
| #define DOM_OBJECT_DATABASE_TYPES(V) |
| #endif |
| |
| #if ENABLE(DOM_STORAGE) |
| #define DOM_OBJECT_STORAGE_TYPES(V) \ |
| V(STORAGE, Storage) \ |
| V(STORAGEEVENT, StorageEvent) |
| #else |
| #define DOM_OBJECT_STORAGE_TYPES(V) |
| #endif |
| |
| #if ENABLE(WORKERS) |
| #define DOM_OBJECT_WORKERS_TYPES(V) \ |
| V(ERROREVENT, ErrorEvent) |
| #else |
| #define DOM_OBJECT_WORKERS_TYPES(V) |
| #endif |
| |
| #if ENABLE(3D_CANVAS) |
| #define DOM_OBJECT_3D_CANVAS_TYPES(V) \ |
| V(CANVASACTIVEINFO, CanvasActiveInfo) \ |
| V(CANVASARRAY, CanvasArray) \ |
| V(CANVASARRAYBUFFER, CanvasArrayBuffer) \ |
| V(CANVASBUFFER, CanvasBuffer) \ |
| V(CANVASBYTEARRAY, CanvasByteArray) \ |
| V(CANVASFLOATARRAY, CanvasFloatArray) \ |
| V(CANVASFRAMEBUFFER, CanvasFramebuffer) \ |
| V(CANVASINTARRAY, CanvasIntArray) \ |
| V(CANVASPROGRAM, CanvasProgram) \ |
| V(CANVASRENDERBUFFER, CanvasRenderbuffer) \ |
| V(CANVASRENDERINGCONTEXT3D, CanvasRenderingContext3D) \ |
| V(CANVASSHADER, CanvasShader) \ |
| V(CANVASSHORTARRAY, CanvasShortArray) \ |
| V(CANVASTEXTURE, CanvasTexture) \ |
| V(CANVASUNSIGNEDBYTEARRAY, CanvasUnsignedByteArray) \ |
| V(CANVASUNSIGNEDINTARRAY, CanvasUnsignedIntArray) \ |
| V(CANVASUNSIGNEDSHORTARRAY, CanvasUnsignedShortArray) |
| #else |
| #define DOM_OBJECT_3D_CANVAS_TYPES(V) |
| #endif |
| |
| #if ENABLE(XPATH) |
| #define DOM_OBJECT_XPATH_TYPES(V) \ |
| V(XPATHEVALUATOR, XPathEvaluator) \ |
| V(XPATHEXCEPTION, XPathException) \ |
| V(XPATHEXPRESSION, XPathExpression) \ |
| V(XPATHNSRESOLVER, XPathNSResolver) \ |
| V(XPATHRESULT, XPathResult) |
| #else |
| #define DOM_OBJECT_XPATH_TYPES(V) |
| #endif |
| |
| #if ENABLE(XSLT) |
| #define DOM_OBJECT_XSLT_TYPES(V) \ |
| V(XSLTPROCESSOR, XSLTProcessor) |
| #else |
| #define DOM_OBJECT_XSLT_TYPES(V) |
| #endif |
| |
| #if ENABLE(INSPECTOR) |
| #define DOM_OBJECT_INSPECTOR_TYPES(V) \ |
| V(INSPECTORBACKEND, InspectorBackend) |
| #else |
| #define DOM_OBJECT_INSPECTOR_TYPES(V) |
| #endif |
| |
| #define DOM_OBJECT_GEOLOCATION_TYPES(V) \ |
| V(COORDINATES, Coordinates) \ |
| V(GEOLOCATION, Geolocation) \ |
| V(GEOPOSITION, Geoposition) \ |
| V(POSITIONERROR, PositionError) |
| |
| #if PLATFORM(ANDROID) |
| // TODO: Upstream this guard. |
| #if ENABLE(TOUCH_EVENTS) |
| #define DOM_OBJECT_TOUCH_EVENT_TYPES(V) \ |
| V(TOUCHLIST, TouchList) \ |
| V(TOUCHEVENT, TouchEvent) \ |
| V(TOUCH, Touch) |
| #else |
| #define DOM_OBJECT_TOUCH_EVENT_TYPES(V) |
| #endif |
| #endif |
| |
| #if PLATFORM(ANDROID) |
| #define DOM_OBJECT_VOIDCALLBACK_TYPES(V) \ |
| V(VOIDCALLBACK, VoidCallback) |
| #else |
| #define DOM_OBJECT_VOIDCALLBACK_TYPES(V) |
| #endif |
| |
| #if PLATFORM(ANDROID) |
| // This block is modified, but is not Android-specific. |
| #define DOM_OBJECT_TYPES(V) \ |
| DOM_OBJECT_TYPES_1(V) \ |
| DOM_OBJECT_TYPES_2(V) \ |
| DOM_OBJECT_DATABASE_TYPES(V) \ |
| DOM_OBJECT_STORAGE_TYPES(V) \ |
| DOM_OBJECT_WORKERS_TYPES(V) \ |
| DOM_OBJECT_3D_CANVAS_TYPES(V) \ |
| DOM_OBJECT_XPATH_TYPES(V) \ |
| DOM_OBJECT_XSLT_TYPES(V) \ |
| DOM_OBJECT_INSPECTOR_TYPES(V) \ |
| DOM_OBJECT_GEOLOCATION_TYPES(V) \ |
| DOM_OBJECT_TOUCH_EVENT_TYPES(V) \ |
| DOM_OBJECT_VOIDCALLBACK_TYPES(V) |
| #endif |
| |
| #if ENABLE(SVG) |
| // SVG_OBJECT_TYPES are svg non-node, non-pod types. |
| #define SVG_OBJECT_TYPES(V) \ |
| V(SVGANGLE, SVGAngle) \ |
| V(SVGANIMATEDANGLE, SVGAnimatedAngle) \ |
| V(SVGANIMATEDBOOLEAN, SVGAnimatedBoolean) \ |
| V(SVGANIMATEDENUMERATION, SVGAnimatedEnumeration) \ |
| V(SVGANIMATEDINTEGER, SVGAnimatedInteger) \ |
| V(SVGANIMATEDLENGTH, SVGAnimatedLength) \ |
| V(SVGANIMATEDLENGTHLIST, SVGAnimatedLengthList) \ |
| V(SVGANIMATEDNUMBER, SVGAnimatedNumber) \ |
| V(SVGANIMATEDNUMBERLIST, SVGAnimatedNumberList) \ |
| V(SVGANIMATEDPRESERVEASPECTRATIO, SVGAnimatedPreserveAspectRatio) \ |
| V(SVGANIMATEDRECT, SVGAnimatedRect) \ |
| V(SVGANIMATEDSTRING, SVGAnimatedString) \ |
| V(SVGANIMATEDTRANSFORMLIST, SVGAnimatedTransformList) \ |
| V(SVGCOLOR, SVGColor) \ |
| V(SVGELEMENTINSTANCE, SVGElementInstance) \ |
| V(SVGELEMENTINSTANCELIST, SVGElementInstanceList) \ |
| V(SVGEXCEPTION, SVGException) \ |
| V(SVGLENGTHLIST, SVGLengthList) \ |
| V(SVGNUMBERLIST, SVGNumberList) \ |
| V(SVGPAINT, SVGPaint) \ |
| V(SVGPATHSEG, SVGPathSeg) \ |
| V(SVGPATHSEGARCABS, SVGPathSegArcAbs) \ |
| V(SVGPATHSEGARCREL, SVGPathSegArcRel) \ |
| V(SVGPATHSEGCLOSEPATH, SVGPathSegClosePath) \ |
| V(SVGPATHSEGCURVETOCUBICABS, SVGPathSegCurvetoCubicAbs) \ |
| V(SVGPATHSEGCURVETOCUBICREL, SVGPathSegCurvetoCubicRel) \ |
| V(SVGPATHSEGCURVETOCUBICSMOOTHABS, SVGPathSegCurvetoCubicSmoothAbs) \ |
| V(SVGPATHSEGCURVETOCUBICSMOOTHREL, SVGPathSegCurvetoCubicSmoothRel) \ |
| V(SVGPATHSEGCURVETOQUADRATICABS, SVGPathSegCurvetoQuadraticAbs) \ |
| V(SVGPATHSEGCURVETOQUADRATICREL, SVGPathSegCurvetoQuadraticRel) \ |
| V(SVGPATHSEGCURVETOQUADRATICSMOOTHABS, SVGPathSegCurvetoQuadraticSmoothAbs)\ |
| V(SVGPATHSEGCURVETOQUADRATICSMOOTHREL, SVGPathSegCurvetoQuadraticSmoothRel)\ |
| V(SVGPATHSEGLINETOABS, SVGPathSegLinetoAbs) \ |
| V(SVGPATHSEGLINETOHORIZONTALABS, SVGPathSegLinetoHorizontalAbs) \ |
| V(SVGPATHSEGLINETOHORIZONTALREL, SVGPathSegLinetoHorizontalRel) \ |
| V(SVGPATHSEGLINETOREL, SVGPathSegLinetoRel) \ |
| V(SVGPATHSEGLINETOVERTICALABS, SVGPathSegLinetoVerticalAbs) \ |
| V(SVGPATHSEGLINETOVERTICALREL, SVGPathSegLinetoVerticalRel) \ |
| V(SVGPATHSEGLIST, SVGPathSegList) \ |
| V(SVGPATHSEGMOVETOABS, SVGPathSegMovetoAbs) \ |
| V(SVGPATHSEGMOVETOREL, SVGPathSegMovetoRel) \ |
| V(SVGPOINTLIST, SVGPointList) \ |
| V(SVGPRESERVEASPECTRATIO, SVGPreserveAspectRatio) \ |
| V(SVGRENDERINGINTENT, SVGRenderingIntent) \ |
| V(SVGSTRINGLIST, SVGStringList) \ |
| V(SVGTRANSFORMLIST, SVGTransformList) \ |
| V(SVGUNITTYPES, SVGUnitTypes) \ |
| V(SVGZOOMEVENT, SVGZoomEvent) |
| |
| // SVG POD types should list all types whose IDL has PODType declaration. |
| #define SVG_POD_TYPES(V) \ |
| V(SVGLENGTH, SVGLength) \ |
| V(SVGTRANSFORM, SVGTransform) \ |
| V(SVGMATRIX, SVGMatrix) \ |
| V(SVGNUMBER, SVGNumber) \ |
| V(SVGPOINT, SVGPoint) \ |
| V(SVGRECT, SVGRect) |
| |
| // POD types can have different implementation names, see CodeGenerateV8.pm. |
| #define SVG_POD_NATIVE_TYPES(V) \ |
| V(SVGLENGTH, SVGLength) \ |
| V(SVGTRANSFORM, SVGTransform) \ |
| V(SVGMATRIX, TransformationMatrix) \ |
| V(SVGNUMBER, float) \ |
| V(SVGPOINT, FloatPoint) \ |
| V(SVGRECT, FloatRect) |
| |
| // Shouldn't generate code for these two types. |
| #define SVG_NO_WRAPPER_TYPES(V) \ |
| V(SVGURIREFERENCE, SVGURIReference) \ |
| V(SVGANIMATEDPOINTS, SVGAnimatedPoints) |
| |
| // SVG_NONNODE_TYPES are SVG non-node object types, pod typs and |
| // numerical types. |
| #define SVG_NONNODE_TYPES(V) \ |
| SVG_OBJECT_TYPES(V) \ |
| SVG_POD_TYPES(V) |
| #endif // SVG |
| |
| // EVENTTARGET, EVENTLISTENER, and NPOBJECT do not have V8 wrappers. |
| #define DOM_NO_WRAPPER_TYPES(V) \ |
| V(EVENTTARGET, EventTarget) \ |
| V(EVENTLISTENER, EventListener) \ |
| V(NPOBJECT, NPObject) |
| |
| #if ENABLE(SVG) |
| #define WRAPPER_TYPES(V) DOM_NODE_TYPES(V) DOM_OBJECT_TYPES(V) SVG_NODE_TYPES(V) SVG_NONNODE_TYPES(V) |
| #define NO_WRAPPER_TYPES(V) DOM_NO_WRAPPER_TYPES(V) SVG_NO_WRAPPER_TYPES(V) |
| #else // SVG |
| #define WRAPPER_TYPES(V) DOM_NODE_TYPES(V) DOM_OBJECT_TYPES(V) |
| #define NO_WRAPPER_TYPES(V) DOM_NO_WRAPPER_TYPES(V) |
| #endif // SVG |
| |
| #define ALL_WRAPPER_TYPES(V) WRAPPER_TYPES(V) NO_WRAPPER_TYPES(V) |
| |
| class V8ClassIndex { |
| public: |
| // Type must start at non-negative numbers. See ToInt, FromInt. |
| enum V8WrapperType { |
| INVALID_CLASS_INDEX = 0, |
| |
| #define DEFINE_ENUM(name, type) name, |
| ALL_WRAPPER_TYPES(DEFINE_ENUM) |
| #undef DEFINE_ENUM |
| |
| CLASSINDEX_END, |
| WRAPPER_TYPE_COUNT = CLASSINDEX_END |
| }; |
| |
| // FIXME: Convert to toInt after all the bindings are in one place. |
| static int ToInt(V8WrapperType type) { return static_cast<int>(type); } |
| |
| // FIXME: Convert to fromInt after all the bindings are in one place. |
| static V8WrapperType FromInt(int v) { |
| ASSERT(INVALID_CLASS_INDEX <= v && v < CLASSINDEX_END); |
| return static_cast<V8WrapperType>(v); |
| } |
| |
| // FIXME: Convert to getFactory after all the bindings are in one place. |
| static FunctionTemplateFactory GetFactory(V8WrapperType type); |
| |
| // Returns a field to be used as cache for the template for the given type |
| // FIXME: Convert to getCache after all the bindings are in one place. |
| static v8::Persistent<v8::FunctionTemplate>* GetCache(V8WrapperType type); |
| }; |
| |
| } |
| |
| #endif // V8Index_h |