Changeset 45193 in webkit


Ignore:
Timestamp:
Jun 25, 2009 2:39:07 PM (15 years ago)
Author:
Nate Chapin
Message:

2009-06-25 Nate Chapin <Nate Chapin>

Reviewed by Dimitri Glazkov.

Upstream V8Index.

https://bugs.webkit.org/show_bug.cgi?id=26495

  • bindings/v8/V8Index.cpp: Added. (WebCore::V8ClassIndex::GetFactory): Moved from src.chromium.org. (WebCore::V8ClassIndex::GetCache): Moved from src.chromium.org.
  • bindings/v8/V8Index.h: (WebCore::V8ClassIndex::): Moved from src.chromium.org. (WebCore::V8ClassIndex::ToInt): Moved from src.chromium.org. (WebCore::V8ClassIndex::FromInt): Moved from src.chromium.org.
Location:
trunk/WebCore
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r45191 r45193  
     12009-06-25  Nate Chapin  <japhet@chromium.org>
     2
     3        Reviewed by Dimitri Glazkov.
     4
     5        Upstream V8Index.
     6
     7        https://bugs.webkit.org/show_bug.cgi?id=26495
     8
     9        * bindings/v8/V8Index.cpp: Added.
     10        (WebCore::V8ClassIndex::GetFactory): Moved from src.chromium.org.
     11        (WebCore::V8ClassIndex::GetCache): Moved from src.chromium.org.
     12        * bindings/v8/V8Index.h:
     13        (WebCore::V8ClassIndex::): Moved from src.chromium.org.
     14        (WebCore::V8ClassIndex::ToInt): Moved from src.chromium.org.
     15        (WebCore::V8ClassIndex::FromInt): Moved from src.chromium.org.
     16
    1172009-06-25  Adam Langley  <agl@google.com>
    218
  • trunk/WebCore/bindings/v8/V8Index.h

    r41862 r45193  
    3232#define V8Index_h
    3333
    34 // FIXME: This is a temporary forwarding header until all bindings have migrated
    35 // over and v8_index actually becomes V8Index.
    36 #include "v8_index.h"
     34#include <v8.h>
     35#include "PlatformString.h"  // for WebCore::String
     36
     37namespace WebCore {
     38
     39typedef v8::Persistent<v8::FunctionTemplate> (*FunctionTemplateFactory)();
     40
     41#if ENABLE(VIDEO)
     42#define VIDEO_HTMLELEMENT_TYPES(V)                                      \
     43    V(HTMLAUDIOELEMENT, HTMLAudioElement)                               \
     44    V(HTMLMEDIAELEMENT, HTMLMediaElement)                               \
     45    V(HTMLSOURCEELEMENT, HTMLSourceElement)                             \
     46    V(HTMLVIDEOELEMENT, HTMLVideoElement)
     47#define VIDEO_NONNODE_TYPES(V)                                          \
     48    V(MEDIAERROR, MediaError)                                           \
     49    V(TIMERANGES, TimeRanges)
     50#else
     51#define VIDEO_HTMLELEMENT_TYPES(V)
     52#define VIDEO_NONNODE_TYPES(V)
     53#endif
     54
     55#if ENABLE(WORKERS)
     56#define WORKER_ACTIVE_OBJECT_WRAPPER_TYPES(V)                           \
     57    V(WORKER, Worker)
     58
     59#define WORKER_NONNODE_WRAPPER_TYPES(V)                                 \
     60    V(WORKERCONTEXT, WorkerContext)                                     \
     61    V(WORKERLOCATION, WorkerLocation)                                   \
     62    V(WORKERNAVIGATOR, WorkerNavigator)
     63#else
     64#define WORKER_ACTIVE_OBJECT_WRAPPER_TYPES(V)
     65#define WORKER_NONNODE_WRAPPER_TYPES(V)
     66#endif
     67
     68#define DOM_NODE_TYPES(V)                                               \
     69    V(ATTR, Attr)                                                       \
     70    V(CHARACTERDATA, CharacterData)                                     \
     71    V(CDATASECTION, CDATASection)                                       \
     72    V(COMMENT, Comment)                                                 \
     73    V(DATAGRIDCOLUMN, DataGridColumn)                                   \
     74    V(DATAGRIDCOLUMNLIST, DataGridColumnList)                           \
     75    V(DOCUMENT, Document)                                               \
     76    V(DOCUMENTFRAGMENT, DocumentFragment)                               \
     77    V(DOCUMENTTYPE, DocumentType)                                       \
     78    V(ELEMENT, Element)                                                 \
     79    V(ENTITY, Entity)                                                   \
     80    V(ENTITYREFERENCE, EntityReference)                                 \
     81    V(HTMLDOCUMENT, HTMLDocument)                                       \
     82    V(NODE, Node)                                                       \
     83    V(NOTATION, Notation)                                               \
     84    V(PROCESSINGINSTRUCTION, ProcessingInstruction)                     \
     85    V(TEXT, Text)                                                       \
     86    V(HTMLANCHORELEMENT, HTMLAnchorElement)                             \
     87    V(HTMLAPPLETELEMENT, HTMLAppletElement)                             \
     88    V(HTMLAREAELEMENT, HTMLAreaElement)                                 \
     89    V(HTMLBASEELEMENT, HTMLBaseElement)                                 \
     90    V(HTMLBASEFONTELEMENT, HTMLBaseFontElement)                         \
     91    V(HTMLBLOCKQUOTEELEMENT, HTMLBlockquoteElement)                     \
     92    V(HTMLBODYELEMENT, HTMLBodyElement)                                 \
     93    V(HTMLBRELEMENT, HTMLBRElement)                                     \
     94    V(HTMLBUTTONELEMENT, HTMLButtonElement)                             \
     95    V(HTMLCANVASELEMENT, HTMLCanvasElement)                             \
     96    V(HTMLDATAGRIDCELLELEMENT, HTMLDataGridCellElement)                 \
     97    V(HTMLDATAGRIDCOLELEMENT, HTMLDataGridColElement)                   \
     98    V(HTMLDATAGRIDELEMENT, HTMLDataGridElement)                         \
     99    V(HTMLDATAGRIDROWELEMENT, HTMLDataGridRowElement)                   \
     100    V(HTMLDIRECTORYELEMENT, HTMLDirectoryElement)                       \
     101    V(HTMLDIVELEMENT, HTMLDivElement)                                   \
     102    V(HTMLDLISTELEMENT, HTMLDListElement)                               \
     103    V(HTMLEMBEDELEMENT, HTMLEmbedElement)                               \
     104    V(HTMLFIELDSETELEMENT, HTMLFieldSetElement)                         \
     105    V(HTMLFONTELEMENT, HTMLFontElement)                                 \
     106    V(HTMLFORMELEMENT, HTMLFormElement)                                 \
     107    V(HTMLFRAMEELEMENT, HTMLFrameElement)                               \
     108    V(HTMLFRAMESETELEMENT, HTMLFrameSetElement)                         \
     109    V(HTMLHEADINGELEMENT, HTMLHeadingElement)                           \
     110    V(HTMLHEADELEMENT, HTMLHeadElement)                                 \
     111    V(HTMLHRELEMENT, HTMLHRElement)                                     \
     112    V(HTMLHTMLELEMENT, HTMLHtmlElement)                                 \
     113    V(HTMLIFRAMEELEMENT, HTMLIFrameElement)                             \
     114    V(HTMLIMAGEELEMENT, HTMLImageElement)                               \
     115    V(HTMLINPUTELEMENT, HTMLInputElement)                               \
     116    V(HTMLISINDEXELEMENT, HTMLIsIndexElement)                           \
     117    V(HTMLLABELELEMENT, HTMLLabelElement)                               \
     118    V(HTMLLEGENDELEMENT, HTMLLegendElement)                             \
     119    V(HTMLLIELEMENT, HTMLLIElement)                                     \
     120    V(HTMLLINKELEMENT, HTMLLinkElement)                                 \
     121    V(HTMLMAPELEMENT, HTMLMapElement)                                   \
     122    V(HTMLMARQUEEELEMENT, HTMLMarqueeElement)                           \
     123    V(HTMLMENUELEMENT, HTMLMenuElement)                                 \
     124    V(HTMLMETAELEMENT, HTMLMetaElement)                                 \
     125    V(HTMLMODELEMENT, HTMLModElement)                                   \
     126    V(HTMLOBJECTELEMENT, HTMLObjectElement)                             \
     127    V(HTMLOLISTELEMENT, HTMLOListElement)                               \
     128    V(HTMLOPTGROUPELEMENT, HTMLOptGroupElement)                         \
     129    V(HTMLOPTIONELEMENT, HTMLOptionElement)                             \
     130    V(HTMLPARAGRAPHELEMENT, HTMLParagraphElement)                       \
     131    V(HTMLPARAMELEMENT, HTMLParamElement)                               \
     132    V(HTMLPREELEMENT, HTMLPreElement)                                   \
     133    V(HTMLQUOTEELEMENT, HTMLQuoteElement)                               \
     134    V(HTMLSCRIPTELEMENT, HTMLScriptElement)                             \
     135    V(HTMLSELECTELEMENT, HTMLSelectElement)                             \
     136    V(HTMLSTYLEELEMENT, HTMLStyleElement)                               \
     137    V(HTMLTABLECAPTIONELEMENT, HTMLTableCaptionElement)                 \
     138    V(HTMLTABLECOLELEMENT, HTMLTableColElement)                         \
     139    V(HTMLTABLEELEMENT, HTMLTableElement)                               \
     140    V(HTMLTABLESECTIONELEMENT, HTMLTableSectionElement)                 \
     141    V(HTMLTABLECELLELEMENT, HTMLTableCellElement)                       \
     142    V(HTMLTABLEROWELEMENT, HTMLTableRowElement)                         \
     143    V(HTMLTEXTAREAELEMENT, HTMLTextAreaElement)                         \
     144    V(HTMLTITLEELEMENT, HTMLTitleElement)                               \
     145    V(HTMLULISTELEMENT, HTMLUListElement)                               \
     146    V(HTMLELEMENT, HTMLElement)                                         \
     147    VIDEO_HTMLELEMENT_TYPES(V)
     148
     149#if ENABLE(SVG_ANIMATION)
     150#define SVG_ANIMATION_ELEMENT_TYPES(V)                                  \
     151    V(SVGANIMATECOLORELEMENT, SVGAnimateColorElement)                   \
     152    V(SVGANIMATEELEMENT, SVGAnimateElement)                             \
     153    V(SVGANIMATETRANSFORMELEMENT, SVGAnimateTransformElement)           \
     154    V(SVGANIMATIONELEMENT, SVGAnimationElement)                         \
     155    V(SVGSETELEMENT, SVGSetElement)
     156#else
     157#define SVG_ANIMATION_ELEMENT_TYPES(V)
     158#endif
     159
     160#if ENABLE(SVG_FILTERS)
     161#define SVG_FILTERS_ELEMENT_TYPES(V)                                    \
     162    V(SVGCOMPONENTTRANSFERFUNCTIONELEMENT, SVGComponentTransferFunctionElement)\
     163    V(SVGFEBLENDELEMENT, SVGFEBlendElement)                             \
     164    V(SVGFECOLORMATRIXELEMENT, SVGFEColorMatrixElement)                 \
     165    V(SVGFECOMPONENTTRANSFERELEMENT, SVGFEComponentTransferElement)     \
     166    V(SVGFECOMPOSITEELEMENT, SVGFECompositeElement)                     \
     167    V(SVGFEDIFFUSELIGHTINGELEMENT, SVGFEDiffuseLightingElement)         \
     168    V(SVGFEDISPLACEMENTMAPELEMENT, SVGFEDisplacementMapElement)         \
     169    V(SVGFEDISTANTLIGHTELEMENT, SVGFEDistantLightElement)               \
     170    V(SVGFEFLOODELEMENT, SVGFEFloodElement)                             \
     171    V(SVGFEFUNCAELEMENT, SVGFEFuncAElement)                             \
     172    V(SVGFEFUNCBELEMENT, SVGFEFuncBElement)                             \
     173    V(SVGFEFUNCGELEMENT, SVGFEFuncGElement)                             \
     174    V(SVGFEFUNCRELEMENT, SVGFEFuncRElement)                             \
     175    V(SVGFEGAUSSIANBLURELEMENT, SVGFEGaussianBlurElement)               \
     176    V(SVGFEIMAGEELEMENT, SVGFEImageElement)                             \
     177    V(SVGFEMERGEELEMENT, SVGFEMergeElement)                             \
     178    V(SVGFEMERGENODEELEMENT, SVGFEMergeNodeElement)                     \
     179    V(SVGFEOFFSETELEMENT, SVGFEOffsetElement)                           \
     180    V(SVGFEPOINTLIGHTELEMENT, SVGFEPointLightElement)                   \
     181    V(SVGFESPECULARLIGHTINGELEMENT, SVGFESpecularLightingElement)       \
     182    V(SVGFESPOTLIGHTELEMENT, SVGFESpotLightElement)                     \
     183    V(SVGFETILEELEMENT, SVGFETileElement)                               \
     184    V(SVGFETURBULENCEELEMENT, SVGFETurbulenceElement)                   \
     185    V(SVGFILTERELEMENT, SVGFilterElement)
     186#else
     187#define SVG_FILTERS_ELEMENT_TYPES(V)
     188#endif
     189
     190#if ENABLE(SVG_FONTS)
     191#define SVG_FONTS_ELEMENT_TYPES(V)                                      \
     192    V(SVGDEFINITIONSRCELEMENT, SVGDefinitionSrcElement)                 \
     193    V(SVGFONTFACEELEMENT, SVGFontFaceElement)                           \
     194    V(SVGFONTFACEFORMATELEMENT, SVGFontFaceFormatElement)               \
     195    V(SVGFONTFACENAMEELEMENT, SVGFontFaceNameElement)                   \
     196    V(SVGFONTFACESRCELEMENT, SVGFontFaceSrcElement)                     \
     197    V(SVGFONTFACEURIELEMENT, SVGFontFaceUriElement)
     198#else
     199#define SVG_FONTS_ELEMENT_TYPES(V)
     200#endif
     201
     202#if ENABLE(SVG_FOREIGN_OBJECT)
     203#define SVG_FOREIGN_OBJECT_ELEMENT_TYPES(V)                             \
     204    V(SVGFOREIGNOBJECTELEMENT, SVGForeignObjectElement)
     205#else
     206#define SVG_FOREIGN_OBJECT_ELEMENT_TYPES(V)
     207#endif
     208
     209#if ENABLE(SVG_USE)
     210#define SVG_USE_ELEMENT_TYPES(V)                                        \
     211    V(SVGUSEELEMENT, SVGUseElement)
     212#else
     213#define SVG_USE_ELEMENT_TYPES(V)
     214#endif
     215
     216#if ENABLE(SVG)
     217#define SVG_NODE_TYPES(V)                                               \
     218    SVG_ANIMATION_ELEMENT_TYPES(V)                                      \
     219    SVG_FILTERS_ELEMENT_TYPES(V)                                        \
     220    SVG_FONTS_ELEMENT_TYPES(V)                                          \
     221    SVG_FOREIGN_OBJECT_ELEMENT_TYPES(V)                                 \
     222    SVG_USE_ELEMENT_TYPES(V)                                            \
     223    V(SVGAELEMENT, SVGAElement)                                         \
     224    V(SVGALTGLYPHELEMENT, SVGAltGlyphElement)                           \
     225    V(SVGCIRCLEELEMENT, SVGCircleElement)                               \
     226    V(SVGCLIPPATHELEMENT, SVGClipPathElement)                           \
     227    V(SVGCURSORELEMENT, SVGCursorElement)                               \
     228    V(SVGDEFSELEMENT, SVGDefsElement)                                   \
     229    V(SVGDESCELEMENT, SVGDescElement)                                   \
     230    V(SVGELLIPSEELEMENT, SVGEllipseElement)                             \
     231    V(SVGGELEMENT, SVGGElement)                                         \
     232    V(SVGGLYPHELEMENT, SVGGlyphElement)                                 \
     233    V(SVGGRADIENTELEMENT, SVGGradientElement)                           \
     234    V(SVGIMAGEELEMENT, SVGImageElement)                                 \
     235    V(SVGLINEARGRADIENTELEMENT, SVGLinearGradientElement)               \
     236    V(SVGLINEELEMENT, SVGLineElement)                                   \
     237    V(SVGMARKERELEMENT, SVGMarkerElement)                               \
     238    V(SVGMASKELEMENT, SVGMaskElement)                                   \
     239    V(SVGMETADATAELEMENT, SVGMetadataElement)                           \
     240    V(SVGPATHELEMENT, SVGPathElement)                                   \
     241    V(SVGPATTERNELEMENT, SVGPatternElement)                             \
     242    V(SVGPOLYGONELEMENT, SVGPolygonElement)                             \
     243    V(SVGPOLYLINEELEMENT, SVGPolylineElement)                           \
     244    V(SVGRADIALGRADIENTELEMENT, SVGRadialGradientElement)               \
     245    V(SVGRECTELEMENT, SVGRectElement)                                   \
     246    V(SVGSCRIPTELEMENT, SVGScriptElement)                               \
     247    V(SVGSTOPELEMENT, SVGStopElement)                                   \
     248    V(SVGSTYLEELEMENT, SVGStyleElement)                                 \
     249    V(SVGSVGELEMENT, SVGSVGElement)                                     \
     250    V(SVGSWITCHELEMENT, SVGSwitchElement)                               \
     251    V(SVGSYMBOLELEMENT, SVGSymbolElement)                               \
     252    V(SVGTEXTCONTENTELEMENT, SVGTextContentElement)                     \
     253    V(SVGTEXTELEMENT, SVGTextElement)                                   \
     254    V(SVGTEXTPATHELEMENT, SVGTextPathElement)                           \
     255    V(SVGTEXTPOSITIONINGELEMENT, SVGTextPositioningElement)             \
     256    V(SVGTITLEELEMENT, SVGTitleElement)                                 \
     257    V(SVGTREFELEMENT, SVGTRefElement)                                   \
     258    V(SVGTSPANELEMENT, SVGTSpanElement)                                 \
     259    V(SVGVIEWELEMENT, SVGViewElement)                                   \
     260    V(SVGELEMENT, SVGElement)                                           \
     261    V(SVGDOCUMENT, SVGDocument)
     262#endif  // SVG
     263
     264
     265// ACTIVE_DOM_OBJECT_TYPES are DOM_OBJECT_TYPES that need special treatement
     266// during GC.
     267#define ACTIVE_DOM_OBJECT_TYPES(V)                                      \
     268    V(MESSAGEPORT, MessagePort)                                         \
     269    V(XMLHTTPREQUEST, XMLHttpRequest)                                   \
     270    WORKER_ACTIVE_OBJECT_WRAPPER_TYPES(V)
     271
     272// NOTE: DOM_OBJECT_TYPES is split into two halves because
     273//       Visual Studio's Intellinonsense crashes when macros get
     274//       too large.  10-29-08
     275// DOM_OBJECT_TYPES are non-node DOM types.
     276#define DOM_OBJECT_TYPES_1(V)                                           \
     277    V(BARINFO, BarInfo)                                                 \
     278    V(CANVASGRADIENT, CanvasGradient)                                   \
     279    V(CANVASPATTERN, CanvasPattern)                                     \
     280    V(CANVASRENDERINGCONTEXT2D, CanvasRenderingContext2D)               \
     281    V(CLIENTRECT, ClientRect)                                           \
     282    V(CLIENTRECTLIST, ClientRectList)                                   \
     283    V(CLIPBOARD, Clipboard)                                             \
     284    V(CONSOLE, Console)                                                 \
     285    V(COUNTER, Counter)                                                 \
     286    V(CSSCHARSETRULE, CSSCharsetRule)                                   \
     287    V(CSSFONTFACERULE, CSSFontFaceRule)                                 \
     288    V(CSSIMPORTRULE, CSSImportRule)                                     \
     289    V(CSSMEDIARULE, CSSMediaRule)                                       \
     290    V(CSSPAGERULE, CSSPageRule)                                         \
     291    V(CSSPRIMITIVEVALUE, CSSPrimitiveValue)                             \
     292    V(CSSRULE, CSSRule)                                                 \
     293    V(CSSRULELIST, CSSRuleList)                                         \
     294    V(CSSSTYLEDECLARATION, CSSStyleDeclaration)                         \
     295    V(CSSSTYLERULE, CSSStyleRule)                                       \
     296    V(CSSSTYLESHEET, CSSStyleSheet)                                     \
     297    V(CSSVALUE, CSSValue)                                               \
     298    V(CSSVALUELIST, CSSValueList)                                       \
     299    V(CSSVARIABLESDECLARATION, CSSVariablesDeclaration)                 \
     300    V(CSSVARIABLESRULE, CSSVariablesRule)                               \
     301    V(DOMCOREEXCEPTION, DOMCoreException)                               \
     302    V(DOMIMPLEMENTATION, DOMImplementation)                             \
     303    V(DOMPARSER, DOMParser)                                             \
     304    V(DOMSELECTION, DOMSelection)                                       \
     305    V(DOMWINDOW, DOMWindow)                                             \
     306    V(EVENT, Event)                                                     \
     307    V(EVENTEXCEPTION, EventException)                                   \
     308    V(FILE, File)                                                       \
     309    V(FILELIST, FileList)                                               \
     310    V(HISTORY, History)                                                 \
     311    V(UNDETECTABLEHTMLCOLLECTION, UndetectableHTMLCollection)           \
     312    V(HTMLCOLLECTION, HTMLCollection)                                   \
     313    V(HTMLOPTIONSCOLLECTION, HTMLOptionsCollection)                     \
     314    V(IMAGEDATA, ImageData)                                             \
     315    V(CANVASPIXELARRAY, CanvasPixelArray)                               \
     316    V(INSPECTORCONTROLLER, InspectorController)                         \
     317    V(KEYBOARDEVENT, KeyboardEvent)                                     \
     318    V(LOCATION, Location)                                               \
     319    V(MEDIALIST, MediaList)
     320
     321#define DOM_OBJECT_TYPES_2(V)                                           \
     322    V(MESSAGECHANNEL, MessageChannel)                                   \
     323    V(MESSAGEEVENT, MessageEvent)                                       \
     324    V(MIMETYPE, MimeType)                                               \
     325    V(MIMETYPEARRAY, MimeTypeArray)                                     \
     326    V(MOUSEEVENT, MouseEvent)                                           \
     327    V(MUTATIONEVENT, MutationEvent)                                     \
     328    V(NAMEDNODEMAP, NamedNodeMap)                                       \
     329    V(NAVIGATOR, Navigator)                                             \
     330    V(NODEFILTER, NodeFilter)                                           \
     331    V(NODEITERATOR, NodeIterator)                                       \
     332    V(NODELIST, NodeList)                                               \
     333    V(OVERFLOWEVENT, OverflowEvent)                                     \
     334    V(PLUGIN, Plugin)                                                   \
     335    V(PLUGINARRAY, PluginArray)                                         \
     336    V(PROGRESSEVENT, ProgressEvent)                                     \
     337    V(RANGE, Range)                                                     \
     338    V(RANGEEXCEPTION, RangeException)                                   \
     339    V(RECT, Rect)                                                       \
     340    V(RGBCOLOR, RGBColor)                                               \
     341    V(SCREEN, Screen)                                                   \
     342    V(STYLESHEET, StyleSheet)                                           \
     343    V(STYLESHEETLIST, StyleSheetList)                                   \
     344    V(TEXTEVENT, TextEvent)                                             \
     345    V(TEXTMETRICS, TextMetrics)                                         \
     346    V(TREEWALKER, TreeWalker)                                           \
     347    V(UIEVENT, UIEvent)                                                 \
     348    V(WEBKITANIMATIONEVENT, WebKitAnimationEvent)                       \
     349    V(WEBKITCSSKEYFRAMERULE, WebKitCSSKeyframeRule)                     \
     350    V(WEBKITCSSKEYFRAMESRULE, WebKitCSSKeyframesRule)                   \
     351    V(WEBKITCSSMATRIX, WebKitCSSMatrix)                                 \
     352    V(WEBKITPOINT, WebKitPoint)                                         \
     353    V(WEBKITCSSTRANSFORMVALUE, WebKitCSSTransformValue)                 \
     354    V(WEBKITTRANSITIONEVENT, WebKitTransitionEvent)                     \
     355    V(WHEELEVENT, WheelEvent)                                           \
     356    V(XMLHTTPREQUESTUPLOAD, XMLHttpRequestUpload)                       \
     357    V(XMLHTTPREQUESTEXCEPTION, XMLHttpRequestException)                 \
     358    V(XMLHTTPREQUESTPROGRESSEVENT, XMLHttpRequestProgressEvent)         \
     359    V(XMLSERIALIZER, XMLSerializer)                                     \
     360    V(XPATHEVALUATOR, XPathEvaluator)                                   \
     361    V(XPATHEXCEPTION, XPathException)                                   \
     362    V(XPATHEXPRESSION, XPathExpression)                                 \
     363    V(XPATHNSRESOLVER, XPathNSResolver)                                 \
     364    V(XPATHRESULT, XPathResult)                                         \
     365    V(XSLTPROCESSOR, XSLTProcessor)                                     \
     366    ACTIVE_DOM_OBJECT_TYPES(V)                                          \
     367    VIDEO_NONNODE_TYPES(V)                                              \
     368    WORKER_NONNODE_WRAPPER_TYPES(V)
     369
     370#if ENABLE(DATABASE)
     371#define DOM_OBJECT_DATABASE_TYPES(V)                                    \
     372    V(DATABASE, Database)                                               \
     373    V(SQLERROR, SQLError)                                               \
     374    V(SQLRESULTSET, SQLResultSet)                                       \
     375    V(SQLRESULTSETROWLIST, SQLResultSetRowList)                         \
     376    V(SQLTRANSACTION, SQLTransaction)
     377#else
     378#define DOM_OBJECT_DATABASE_TYPES(V)
     379#endif
     380
     381#if ENABLE(DOM_STORAGE)
     382#define DOM_OBJECT_STORAGE_TYPES(V)                                     \
     383    V(STORAGE, Storage)                                                 \
     384    V(STORAGEEVENT, StorageEvent)
     385#else
     386#define DOM_OBJECT_STORAGE_TYPES(V)
     387#endif
     388
     389#define DOM_OBJECT_TYPES(V)                                             \
     390    DOM_OBJECT_TYPES_1(V)                                               \
     391    DOM_OBJECT_TYPES_2(V)                                               \
     392    DOM_OBJECT_DATABASE_TYPES(V)                                        \
     393    DOM_OBJECT_STORAGE_TYPES(V)
     394
     395#if ENABLE(SVG)
     396// SVG_OBJECT_TYPES are svg non-node, non-pod types.
     397#define SVG_OBJECT_TYPES(V)                                             \
     398    V(SVGANGLE, SVGAngle)                                               \
     399    V(SVGANIMATEDANGLE, SVGAnimatedAngle)                               \
     400    V(SVGANIMATEDBOOLEAN, SVGAnimatedBoolean)                           \
     401    V(SVGANIMATEDENUMERATION, SVGAnimatedEnumeration)                   \
     402    V(SVGANIMATEDINTEGER, SVGAnimatedInteger)                           \
     403    V(SVGANIMATEDLENGTH, SVGAnimatedLength)                             \
     404    V(SVGANIMATEDLENGTHLIST, SVGAnimatedLengthList)                     \
     405    V(SVGANIMATEDNUMBER, SVGAnimatedNumber)                             \
     406    V(SVGANIMATEDNUMBERLIST, SVGAnimatedNumberList)                     \
     407    V(SVGANIMATEDPRESERVEASPECTRATIO, SVGAnimatedPreserveAspectRatio)   \
     408    V(SVGANIMATEDRECT, SVGAnimatedRect)                                 \
     409    V(SVGANIMATEDSTRING, SVGAnimatedString)                             \
     410    V(SVGANIMATEDTRANSFORMLIST, SVGAnimatedTransformList)               \
     411    V(SVGCOLOR, SVGColor)                                               \
     412    V(SVGELEMENTINSTANCE, SVGElementInstance)                           \
     413    V(SVGELEMENTINSTANCELIST, SVGElementInstanceList)                   \
     414    V(SVGEXCEPTION, SVGException)                                       \
     415    V(SVGLENGTHLIST, SVGLengthList)                                     \
     416    V(SVGNUMBERLIST, SVGNumberList)                                     \
     417    V(SVGPAINT, SVGPaint)                                               \
     418    V(SVGPATHSEG, SVGPathSeg)                                           \
     419    V(SVGPATHSEGARCABS, SVGPathSegArcAbs)                               \
     420    V(SVGPATHSEGARCREL, SVGPathSegArcRel)                               \
     421    V(SVGPATHSEGCLOSEPATH, SVGPathSegClosePath)                         \
     422    V(SVGPATHSEGCURVETOCUBICABS, SVGPathSegCurvetoCubicAbs)             \
     423    V(SVGPATHSEGCURVETOCUBICREL, SVGPathSegCurvetoCubicRel)             \
     424    V(SVGPATHSEGCURVETOCUBICSMOOTHABS, SVGPathSegCurvetoCubicSmoothAbs) \
     425    V(SVGPATHSEGCURVETOCUBICSMOOTHREL, SVGPathSegCurvetoCubicSmoothRel) \
     426    V(SVGPATHSEGCURVETOQUADRATICABS, SVGPathSegCurvetoQuadraticAbs)     \
     427    V(SVGPATHSEGCURVETOQUADRATICREL, SVGPathSegCurvetoQuadraticRel)     \
     428    V(SVGPATHSEGCURVETOQUADRATICSMOOTHABS, SVGPathSegCurvetoQuadraticSmoothAbs)\
     429    V(SVGPATHSEGCURVETOQUADRATICSMOOTHREL, SVGPathSegCurvetoQuadraticSmoothRel)\
     430    V(SVGPATHSEGLINETOABS, SVGPathSegLinetoAbs)                         \
     431    V(SVGPATHSEGLINETOHORIZONTALABS, SVGPathSegLinetoHorizontalAbs)     \
     432    V(SVGPATHSEGLINETOHORIZONTALREL, SVGPathSegLinetoHorizontalRel)     \
     433    V(SVGPATHSEGLINETOREL, SVGPathSegLinetoRel)                         \
     434    V(SVGPATHSEGLINETOVERTICALABS, SVGPathSegLinetoVerticalAbs)         \
     435    V(SVGPATHSEGLINETOVERTICALREL, SVGPathSegLinetoVerticalRel)         \
     436    V(SVGPATHSEGLIST, SVGPathSegList)                                   \
     437    V(SVGPATHSEGMOVETOABS, SVGPathSegMovetoAbs)                         \
     438    V(SVGPATHSEGMOVETOREL, SVGPathSegMovetoRel)                         \
     439    V(SVGPOINTLIST, SVGPointList)                                       \
     440    V(SVGPRESERVEASPECTRATIO, SVGPreserveAspectRatio)                   \
     441    V(SVGRENDERINGINTENT, SVGRenderingIntent)                           \
     442    V(SVGSTRINGLIST, SVGStringList)                                     \
     443    V(SVGTRANSFORMLIST, SVGTransformList)                               \
     444    V(SVGUNITTYPES, SVGUnitTypes)                                       \
     445    V(SVGZOOMEVENT, SVGZoomEvent)
     446
     447// SVG POD types should list all types whose IDL has PODType declaration.
     448#define SVG_POD_TYPES(V)                                                \
     449    V(SVGLENGTH, SVGLength)                                             \
     450    V(SVGTRANSFORM, SVGTransform)                                       \
     451    V(SVGMATRIX, SVGMatrix)                                             \
     452    V(SVGNUMBER, SVGNumber)                                             \
     453    V(SVGPOINT, SVGPoint)                                               \
     454    V(SVGRECT, SVGRect)
     455
     456// POD types can have different implementation names, see CodeGenerateV8.pm.
     457#define SVG_POD_NATIVE_TYPES(V)                                         \
     458    V(SVGLENGTH, SVGLength)                                             \
     459    V(SVGTRANSFORM, SVGTransform)                                       \
     460    V(SVGMATRIX, TransformationMatrix)                                  \
     461    V(SVGNUMBER, float)                                                 \
     462    V(SVGPOINT, FloatPoint)                                             \
     463    V(SVGRECT, FloatRect)
     464
     465// Shouldn't generate code for these two types.
     466#define SVG_NO_WRAPPER_TYPES(V)                                         \
     467    V(SVGURIREFERENCE, SVGURIReference)                                 \
     468    V(SVGANIMATEDPOINTS, SVGAnimatedPoints)
     469
     470// SVG_NONNODE_TYPES are SVG non-node object types, pod typs and
     471// numerical types.
     472#define SVG_NONNODE_TYPES(V)                                            \
     473    SVG_OBJECT_TYPES(V)                                                 \
     474    SVG_POD_TYPES(V)
     475#endif  // SVG
     476
     477// EVENTTARGET, EVENTLISTENER, and NPOBJECT do not have V8 wrappers.
     478#define DOM_NO_WRAPPER_TYPES(V)                                         \
     479    V(EVENTTARGET, EventTarget)                                         \
     480    V(EVENTLISTENER, EventListener)                                     \
     481    V(NPOBJECT, NPObject)
     482
     483#if ENABLE(SVG)
     484#define WRAPPER_TYPES(V) DOM_NODE_TYPES(V) DOM_OBJECT_TYPES(V) SVG_NODE_TYPES(V) SVG_NONNODE_TYPES(V)
     485#define NO_WRAPPER_TYPES(V) DOM_NO_WRAPPER_TYPES(V) SVG_NO_WRAPPER_TYPES(V)
     486#else  // SVG
     487#define WRAPPER_TYPES(V) DOM_NODE_TYPES(V) DOM_OBJECT_TYPES(V)
     488#define NO_WRAPPER_TYPES(V) DOM_NO_WRAPPER_TYPES(V)
     489#endif  // SVG
     490
     491#define ALL_WRAPPER_TYPES(V) WRAPPER_TYPES(V) NO_WRAPPER_TYPES(V)
     492
     493    class V8ClassIndex {
     494    public:
     495        // Type must start at non-negative numbers. See ToInt, FromInt.
     496        enum V8WrapperType {
     497            INVALID_CLASS_INDEX = 0,
     498
     499#define DEFINE_ENUM(name, type) name,
     500            ALL_WRAPPER_TYPES(DEFINE_ENUM)
     501#undef DEFINE_ENUM
     502
     503            CLASSINDEX_END,
     504            WRAPPER_TYPE_COUNT = CLASSINDEX_END
     505        };
     506
     507        // FIXME: Convert to toInt after all the bindings are in one place.
     508        static int ToInt(V8WrapperType type) { return static_cast<int>(type); }
     509
     510        // FIXME: Convert to fromInt after all the bindings are in one place.
     511        static V8WrapperType FromInt(int v) {
     512            ASSERT(INVALID_CLASS_INDEX <= v && v < CLASSINDEX_END);
     513            return static_cast<V8WrapperType>(v);
     514        }
     515
     516        // FIXME: Convert to getFactory after all the bindings are in one place.
     517        static FunctionTemplateFactory GetFactory(V8WrapperType type);
     518
     519        // Returns a field to be used as cache for the template for the given type
     520        // FIXME: Convert to getCache after all the bindings are in one place.
     521        static v8::Persistent<v8::FunctionTemplate>* GetCache(V8WrapperType type);
     522    };
     523
     524}
    37525
    38526#endif // V8Index_h
Note: See TracChangeset for help on using the changeset viewer.