File indexing completed on 2023-10-01 04:03:19
0001 /* 0002 * This file is part of the KDE libraries 0003 * Copyright (C) 1999 Harri Porten (porten@kde.org) 0004 * Copyright (C) 2003 Apple Computer, Inc. 0005 * 0006 * This library is free software; you can redistribute it and/or 0007 * modify it under the terms of the GNU Library General Public 0008 * License as published by the Free Software Foundation; either 0009 * version 2 of the License, or (at your option) any later version. 0010 * 0011 * This library is distributed in the hope that it will be useful, 0012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0014 * Library General Public License for more details. 0015 * 0016 * You should have received a copy of the GNU Library General Public 0017 * License along with this library; if not, write to the Free Software 0018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 0019 */ 0020 0021 #ifndef _KJS_HTML_H_ 0022 #define _KJS_HTML_H_ 0023 0024 #include "html/html_documentimpl.h" 0025 #include "html/html_baseimpl.h" 0026 #include "html/html_miscimpl.h" 0027 #include "html/html_formimpl.h" 0028 #include "misc/loader_client.h" 0029 0030 #include "ecma/kjs_binding.h" 0031 #include "ecma/kjs_dom.h" 0032 #include "ecma/kjs_scriptable.h" 0033 #include "xml/dom_nodeimpl.h" // for NodeImpl::Id 0034 0035 namespace KJS 0036 { 0037 class HTMLElement; 0038 class Window; 0039 0040 class HTMLDocument : public DOMDocument 0041 { 0042 public: 0043 HTMLDocument(ExecState *exec, DOM::HTMLDocumentImpl *d); 0044 JSValue *getValueProperty(ExecState *exec, int token); 0045 using KJS::JSObject::getOwnPropertySlot; 0046 bool getOwnPropertySlot(ExecState *exec, const Identifier &propertyName, PropertySlot &slot) override; 0047 using KJS::JSObject::put; 0048 void put(ExecState *exec, const Identifier &propertyName, JSValue *value, int attr = None) override; 0049 void putValueProperty(ExecState *exec, int token, JSValue *value, int /*attr*/); 0050 0051 const ClassInfo *classInfo() const override 0052 { 0053 return &info; 0054 } 0055 static const ClassInfo info; 0056 enum { Referrer, Domain, URL, Body, Location, Cookie, 0057 Images, Applets, Links, Forms, Layers, Anchors, Scripts, All, Clear, Open, Close, 0058 Write, WriteLn, GetElementsByName, GetSelection, CaptureEvents, ReleaseEvents, 0059 BgColor, FgColor, AlinkColor, LinkColor, VlinkColor, LastModified, 0060 Height, Width, Dir, Frames, CompatMode, DesignMode, ActiveElement 0061 }; 0062 DOM::HTMLDocumentImpl *impl() const 0063 { 0064 return static_cast<DOM::HTMLDocumentImpl *>(m_impl.get()); 0065 } 0066 private: 0067 static JSValue *nameGetter(ExecState *exec, JSObject *, const Identifier &name, const PropertySlot &slot); 0068 static JSValue *frameNameGetter(ExecState *exec, JSObject *, const Identifier &name, const PropertySlot &slot); 0069 static JSValue *objectNameGetter(ExecState *exec, JSObject *, const Identifier &name, const PropertySlot &slot); 0070 static JSValue *layerNameGetter(ExecState *exec, JSObject *, const Identifier &name, const PropertySlot &slot); 0071 }; 0072 0073 DEFINE_PSEUDO_CONSTRUCTOR(HTMLDocumentPseudoCtor) 0074 0075 class HTMLElement : public DOMElement 0076 { 0077 public: 0078 HTMLElement(ExecState *exec, DOM::HTMLElementImpl *e); 0079 using KJS::JSObject::getOwnPropertySlot; 0080 bool getOwnPropertySlot(ExecState *exec, const Identifier &propertyName, PropertySlot &slot) override; 0081 JSValue *getValueProperty(ExecState *exec, int token) const; 0082 using KJS::JSObject::put; 0083 void put(ExecState *exec, const Identifier &propertyName, JSValue *value, int attr = None) override; 0084 void putValueProperty(ExecState *exec, int token, JSValue *value, int); 0085 UString toString(ExecState *exec) const override; 0086 void pushEventHandlerScope(ExecState *exec, ScopeChain &scope) const override; 0087 const ClassInfo *classInfo() const override; 0088 static const ClassInfo info; 0089 0090 static const ClassInfo html_info, head_info, link_info, title_info, 0091 meta_info, base_info, isIndex_info, style_info, body_info, form_info, 0092 select_info, optGroup_info, option_info, input_info, textArea_info, 0093 button_info, label_info, fieldSet_info, legend_info, ul_info, ol_info, 0094 dl_info, dir_info, menu_info, li_info, div_info, p_info, heading_info, 0095 blockQuote_info, q_info, pre_info, br_info, baseFont_info, font_info, 0096 hr_info, mod_info, a_info, canvas_info, img_info, object_info, param_info, 0097 applet_info, map_info, area_info, script_info, table_info, 0098 caption_info, col_info, tablesection_info, tr_info, 0099 tablecell_info, frameSet_info, frame_info, iFrame_info, marquee_info, layer_info; 0100 0101 enum { HtmlVersion, HeadProfile, LinkHref, LinkRel, LinkMedia, 0102 LinkCharset, LinkDisabled, LinkHrefLang, LinkRev, LinkTarget, LinkType, 0103 LinkSheet, TitleText, MetaName, MetaHttpEquiv, MetaContent, MetaScheme, 0104 BaseHref, BaseTarget, IsIndexForm, IsIndexPrompt, StyleDisabled, 0105 StyleSheet, StyleType, StyleMedia, BodyBackground, BodyVLink, BodyText, 0106 BodyLink, BodyALink, BodyBgColor, BodyOnLoad, BodyOnBlur, BodyOnFocus, 0107 BodyOnError, BodyOnMessage, BodyFocus, BodyOnHashChange, 0108 FormAction, FormEncType, FormElements, FormLength, FormAcceptCharset, 0109 FormReset, FormTarget, FormName, FormMethod, FormSubmit, SelectAdd, 0110 SelectValue, SelectSelectedIndex, SelectLength, 0111 SelectRemove, SelectForm, SelectType, SelectOptions, 0112 SelectDisabled, SelectMultiple, SelectName, SelectSize, SelectItem, 0113 OptGroupDisabled, OptGroupLabel, OptionIndex, OptionSelected, 0114 OptionForm, OptionText, OptionDefaultSelected, OptionDisabled, 0115 OptionLabel, OptionValue, InputReadOnly, InputAccept, 0116 InputSize, InputDefaultValue, InputValue, InputType, 0117 InputMaxLength, InputDefaultChecked, InputDisabled, 0118 InputChecked, InputIndeterminate, InputForm, InputAccessKey, InputAlign, InputAlt, 0119 InputName, InputSrc, InputUseMap, InputSelect, InputClick, 0120 InputSelectionStart, InputSelectionEnd, InputSetSelectionRange, InputPlaceholder, 0121 TextAreaAccessKey, TextAreaName, TextAreaDefaultValue, TextAreaSelect, 0122 TextAreaCols, TextAreaDisabled, TextAreaForm, TextAreaType, 0123 TextAreaReadOnly, TextAreaRows, TextAreaValue, 0124 TextAreaSelectionStart, TextAreaSelectionEnd, TextAreaSetSelectionRange, 0125 TextAreaTextLength, TextAreaPlaceholder, 0126 ButtonClick, ButtonForm, ButtonName, 0127 ButtonDisabled, ButtonAccessKey, ButtonType, ButtonValue, LabelHtmlFor, 0128 LabelForm, LabelAccessKey, FieldSetForm, LegendForm, LegendAccessKey, 0129 LegendAlign, UListType, UListCompact, OListStart, OListCompact, 0130 OListType, DListCompact, DirectoryCompact, MenuCompact, LIType, 0131 LIValue, DivAlign, ParagraphAlign, HeadingAlign, BlockQuoteCite, 0132 QuoteCite, PreWidth, BRClear, BaseFontColor, BaseFontSize, 0133 BaseFontFace, FontColor, FontSize, FontFace, HRWidth, HRNoShade, 0134 HRAlign, HRSize, ModCite, ModDateTime, AnchorShape, AnchorRel, 0135 AnchorAccessKey, AnchorCoords, AnchorHref, AnchorProtocol, AnchorHost, 0136 AnchorCharset, AnchorHrefLang, AnchorHostname, AnchorType, 0137 AnchorPort, AnchorPathName, AnchorHash, AnchorSearch, AnchorName, 0138 AnchorRev, AnchorTarget, AnchorText, AnchorClick, AnchorToString, 0139 ImageName, ImageAlign, ImageHspace, ImageVspace, ImageUseMap, ImageAlt, 0140 ImageLowSrc, ImageWidth, ImageIsMap, ImageBorder, ImageHeight, 0141 ImageLongDesc, ImageSrc, ImageX, ImageY, ImageComplete, ObjectHspace, ObjectHeight, ObjectAlign, 0142 ObjectBorder, ObjectCode, ObjectType, ObjectVspace, ObjectArchive, 0143 ObjectDeclare, ObjectForm, ObjectCodeBase, ObjectCodeType, ObjectData, ObjectGetSVGDocument, 0144 ObjectName, ObjectStandby, ObjectUseMap, ObjectWidth, ObjectContentDocument, 0145 ParamName, ParamType, ParamValueType, ParamValue, AppletArchive, 0146 AppletAlt, AppletCode, AppletWidth, AppletAlign, AppletCodeBase, 0147 AppletName, AppletHeight, AppletHspace, AppletObject, AppletVspace, 0148 MapAreas, MapName, AreaHash, AreaHref, AreaTarget, AreaPort, AreaShape, 0149 AreaCoords, AreaAlt, AreaAccessKey, AreaNoHref, AreaHost, AreaProtocol, 0150 AreaHostName, AreaPathName, AreaSearch, ScriptEvent, 0151 ScriptType, ScriptHtmlFor, ScriptText, ScriptSrc, ScriptCharset, 0152 ScriptDefer, TableSummary, TableTBodies, TableTHead, TableCellPadding, 0153 TableDeleteCaption, TableCreateCaption, TableCaption, TableWidth, 0154 TableCreateTFoot, TableAlign, TableTFoot, TableDeleteRow, 0155 TableCellSpacing, TableRows, TableBgColor, TableBorder, TableFrame, 0156 TableRules, TableCreateTHead, TableDeleteTHead, TableDeleteTFoot, 0157 TableInsertRow, TableCaptionAlign, TableColCh, TableColChOff, 0158 TableColAlign, TableColSpan, TableColVAlign, TableColWidth, 0159 TableSectionCh, TableSectionDeleteRow, TableSectionChOff, 0160 TableSectionRows, TableSectionAlign, TableSectionVAlign, 0161 TableSectionInsertRow, TableRowSectionRowIndex, TableRowRowIndex, 0162 TableRowChOff, TableRowCells, TableRowVAlign, TableRowCh, 0163 TableRowAlign, TableRowBgColor, TableRowDeleteCell, TableRowInsertCell, 0164 TableCellColSpan, TableCellNoWrap, TableCellAbbr, TableCellHeight, 0165 TableCellWidth, TableCellCellIndex, TableCellChOff, TableCellBgColor, 0166 TableCellCh, TableCellVAlign, TableCellRowSpan, TableCellHeaders, 0167 TableCellAlign, TableCellAxis, TableCellScope, FrameSetCols, 0168 FrameSetRows, FrameSetOnMessage, FrameSrc, FrameLocation, FrameFrameBorder, FrameScrolling, 0169 FrameMarginWidth, FrameLongDesc, FrameMarginHeight, FrameName, 0170 FrameContentDocument, FrameContentWindow, 0171 FrameNoResize, FrameWidth, FrameHeight, IFrameLongDesc, IFrameAlign, 0172 IFrameFrameBorder, IFrameSrc, IFrameName, IFrameHeight, 0173 IFrameMarginHeight, IFrameMarginWidth, IFrameScrolling, IFrameWidth, 0174 IFrameContentDocument, IFrameContentWindow, IFrameGetSVGDocument, 0175 MarqueeStart, MarqueeStop, 0176 CanvasGetContext, CanvasWidth, CanvasHeight, CanvasToDataURL, 0177 LayerTop, LayerLeft, LayerVisibility, LayerBgColor, LayerClip, LayerDocument, LayerLayers, 0178 ElementInnerHTML, ElementTitle, ElementId, ElementDir, ElementLang, 0179 ElementClassName, ElementInnerText, ElementDocument, 0180 ElementChildren, ElementContentEditable, ElementIsContentEditable, 0181 ElementAll, ElementScrollIntoView, ElementTabIndex 0182 }; 0183 0184 DOM::HTMLElementImpl *impl() const 0185 { 0186 return static_cast<DOM::HTMLElementImpl *>(m_impl.get()); 0187 } 0188 JSValue *indexGetter(ExecState *exec, unsigned index); 0189 private: 0190 static JSValue *formNameGetter(ExecState *exec, JSObject *, const Identifier &name, const PropertySlot &slot); 0191 0192 QString getURLArg(unsigned id) const; 0193 0194 static KParts::ScriptableExtension *getScriptableExtension(const DOM::HTMLElementImpl &element); 0195 0196 /* Many of properties in the DOM bindings can be implemented by merely returning 0197 an attribute as the right type, and setting it in similar manner; or perhaps 0198 returning a collection of appropriate type*/ 0199 enum BoundPropType { 0200 T_String, //String, to be return by String() 0201 T_StrOrNl, //String, to be return by getStringOrNull() 0202 T_Bool, //Boolean, return true if property is not null 0203 T_Int, 0204 T_URL, 0205 T_Res, //Reserved, ignore sets, return empty string 0206 T_Coll, //Collection, type is in attrID 0207 T_ReadOnly = 0x80 //Property should be handled only on read. 0208 }; 0209 0210 enum { 0211 NotApplicable = 0xFFFFFFFu 0212 }; 0213 0214 struct BoundPropInfo { 0215 unsigned elId; //Applicable element type 0216 int token; //Token 0217 BoundPropType type; 0218 unsigned attrId; //Attribute to get 0219 }; 0220 0221 JSValue *handleBoundRead(ExecState *exec, int token) const; 0222 bool handleBoundWrite(ExecState *exec, int token, JSValue *value); 0223 0224 static const BoundPropInfo bpTable[]; 0225 0226 static QHash<int, const BoundPropInfo *> *s_boundPropInfo; 0227 static QHash<int, const BoundPropInfo *> *boundPropInfo(); 0228 0229 // returns our window object --- may return 0. 0230 KJS::Window *ourWindow() const; 0231 JSValue *getWindowListener(ExecState *exec, int eventId) const; 0232 void setWindowListener(ExecState *exec, int eventId, JSValue *val) const; 0233 }; 0234 0235 class HTMLCollection : public DOMObject 0236 { 0237 public: 0238 HTMLCollection(ExecState *exec, DOM::HTMLCollectionImpl *c); 0239 HTMLCollection(KJS::JSObject *proto, DOM::HTMLCollectionImpl *c); 0240 ~HTMLCollection(); 0241 JSValue *getValueProperty(ExecState *exec, int token); 0242 using KJS::JSObject::getOwnPropertySlot; 0243 bool getOwnPropertySlot(ExecState *exec, const Identifier &propertyName, PropertySlot &slot) override; 0244 0245 JSValue *callAsFunction(ExecState *exec, JSObject *thisObj, const List &args) override; 0246 bool implementsCall() const override 0247 { 0248 return true; 0249 } 0250 bool isFunctionType() const override 0251 { 0252 return false; 0253 } 0254 bool masqueradeAsUndefined() const override; 0255 bool toBoolean(ExecState *) const override; 0256 void getOwnPropertyNames(ExecState *, PropertyNameArray &, PropertyMap::PropertyMode mode) override; 0257 enum { Item, NamedItem, Tags }; 0258 JSValue *getNamedItems(ExecState *exec, const Identifier &propertyName) const; 0259 const ClassInfo *classInfo() const override 0260 { 0261 return &info; 0262 } 0263 static const ClassInfo info; 0264 DOM::HTMLCollectionImpl *impl() const 0265 { 0266 return m_impl.get(); 0267 } 0268 virtual void hide() 0269 { 0270 hidden = true; 0271 } 0272 JSValue *indexGetter(ExecState *exec, unsigned index); 0273 protected: 0274 SharedPtr<DOM::HTMLCollectionImpl> m_impl; 0275 bool hidden; 0276 private: 0277 static JSValue *lengthGetter(ExecState *exec, JSObject *, const Identifier &name, const PropertySlot &slot); 0278 static JSValue *nameGetter(ExecState *exec, JSObject *, const Identifier &name, const PropertySlot &slot); 0279 }; 0280 0281 class HTMLSelectCollection : public HTMLCollection 0282 { 0283 public: 0284 enum { Add, Remove }; 0285 HTMLSelectCollection(ExecState *exec, DOM::HTMLCollectionImpl *c, DOM::HTMLSelectElementImpl *e); 0286 using KJS::JSObject::getOwnPropertySlot; 0287 bool getOwnPropertySlot(ExecState *exec, const Identifier &propertyName, PropertySlot &slot) override; 0288 using KJS::JSObject::put; 0289 void put(ExecState *exec, const Identifier &propertyName, JSValue *value, int attr = None) override; 0290 0291 const ClassInfo *classInfo() const override 0292 { 0293 return &info; 0294 } 0295 static const ClassInfo info; 0296 0297 DOM::HTMLSelectElementImpl *toElement() const 0298 { 0299 return element.get(); 0300 } 0301 private: 0302 SharedPtr<DOM::HTMLSelectElementImpl> element; 0303 static JSValue *selectedIndexGetter(ExecState *exec, JSObject *, const Identifier &propertyName, const PropertySlot &slot); 0304 static JSValue *selectedValueGetter(ExecState *exec, JSObject *, const Identifier &propertyName, const PropertySlot &slot); 0305 }; 0306 0307 ////////////////////// Option Object //////////////////////// 0308 0309 class OptionConstructorImp : public JSObject 0310 { 0311 public: 0312 OptionConstructorImp(ExecState *exec, DOM::DocumentImpl *d); 0313 bool implementsConstruct() const override; 0314 using KJS::JSObject::construct; 0315 JSObject *construct(ExecState *exec, const List &args) override; 0316 private: 0317 SharedPtr<DOM::DocumentImpl> doc; 0318 }; 0319 0320 ////////////////////// Image Object //////////////////////// 0321 0322 class ImageConstructorImp : public JSObject 0323 { 0324 public: 0325 ImageConstructorImp(ExecState *exec, DOM::DocumentImpl *d); 0326 bool implementsConstruct() const override; 0327 using KJS::JSObject::construct; 0328 JSObject *construct(ExecState *exec, const List &args) override; 0329 private: 0330 SharedPtr<DOM::DocumentImpl> doc; 0331 }; 0332 0333 JSValue *getHTMLCollection(ExecState *exec, DOM::HTMLCollectionImpl *c, bool hide = false); 0334 JSValue *getSelectHTMLCollection(ExecState *exec, DOM::HTMLCollectionImpl *c, DOM::HTMLSelectElementImpl *e); 0335 0336 //All the pseudo constructors.. 0337 DEFINE_PSEUDO_CONSTRUCTOR(HTMLElementPseudoCtor) 0338 DEFINE_PSEUDO_CONSTRUCTOR(HTMLHtmlElementPseudoCtor) 0339 DEFINE_PSEUDO_CONSTRUCTOR(HTMLHeadElementPseudoCtor) 0340 DEFINE_PSEUDO_CONSTRUCTOR(HTMLLinkElementPseudoCtor) 0341 DEFINE_PSEUDO_CONSTRUCTOR(HTMLTitleElementPseudoCtor) 0342 DEFINE_PSEUDO_CONSTRUCTOR(HTMLMetaElementPseudoCtor) 0343 DEFINE_PSEUDO_CONSTRUCTOR(HTMLBaseElementPseudoCtor) 0344 DEFINE_PSEUDO_CONSTRUCTOR(HTMLIsIndexElementPseudoCtor) 0345 DEFINE_PSEUDO_CONSTRUCTOR(HTMLStyleElementPseudoCtor) 0346 DEFINE_PSEUDO_CONSTRUCTOR(HTMLBodyElementPseudoCtor) 0347 DEFINE_PSEUDO_CONSTRUCTOR(HTMLFormElementPseudoCtor) 0348 DEFINE_PSEUDO_CONSTRUCTOR(HTMLSelectElementPseudoCtor) 0349 DEFINE_PSEUDO_CONSTRUCTOR(HTMLOptGroupElementPseudoCtor) 0350 DEFINE_PSEUDO_CONSTRUCTOR(HTMLOptionElementPseudoCtor) 0351 DEFINE_PSEUDO_CONSTRUCTOR(HTMLInputElementPseudoCtor) 0352 DEFINE_PSEUDO_CONSTRUCTOR(HTMLTextAreaElementPseudoCtor) 0353 DEFINE_PSEUDO_CONSTRUCTOR(HTMLButtonElementPseudoCtor) 0354 DEFINE_PSEUDO_CONSTRUCTOR(HTMLLabelElementPseudoCtor) 0355 DEFINE_PSEUDO_CONSTRUCTOR(HTMLFieldSetElementPseudoCtor) 0356 DEFINE_PSEUDO_CONSTRUCTOR(HTMLLegendElementPseudoCtor) 0357 DEFINE_PSEUDO_CONSTRUCTOR(HTMLUListElementPseudoCtor) 0358 DEFINE_PSEUDO_CONSTRUCTOR(HTMLOListElementPseudoCtor) 0359 DEFINE_PSEUDO_CONSTRUCTOR(HTMLDListElementPseudoCtor) 0360 DEFINE_PSEUDO_CONSTRUCTOR(HTMLDirectoryElementPseudoCtor) 0361 DEFINE_PSEUDO_CONSTRUCTOR(HTMLMenuElementPseudoCtor) 0362 DEFINE_PSEUDO_CONSTRUCTOR(HTMLLIElementPseudoCtor) 0363 DEFINE_PSEUDO_CONSTRUCTOR(HTMLDivElementPseudoCtor) 0364 DEFINE_PSEUDO_CONSTRUCTOR(HTMLParagraphElementPseudoCtor) 0365 DEFINE_PSEUDO_CONSTRUCTOR(HTMLHeadingElementPseudoCtor) 0366 DEFINE_PSEUDO_CONSTRUCTOR(HTMLBlockQuoteElementPseudoCtor) 0367 DEFINE_PSEUDO_CONSTRUCTOR(HTMLQuoteElementPseudoCtor) 0368 DEFINE_PSEUDO_CONSTRUCTOR(HTMLPreElementPseudoCtor) 0369 DEFINE_PSEUDO_CONSTRUCTOR(HTMLBRElementPseudoCtor) 0370 DEFINE_PSEUDO_CONSTRUCTOR(HTMLBaseFontElementPseudoCtor) 0371 DEFINE_PSEUDO_CONSTRUCTOR(HTMLFontElementPseudoCtor) 0372 DEFINE_PSEUDO_CONSTRUCTOR(HTMLHRElementPseudoCtor) 0373 DEFINE_PSEUDO_CONSTRUCTOR(HTMLModElementPseudoCtor) 0374 DEFINE_PSEUDO_CONSTRUCTOR(HTMLAnchorElementPseudoCtor) 0375 DEFINE_PSEUDO_CONSTRUCTOR(HTMLImageElementPseudoCtor) 0376 DEFINE_PSEUDO_CONSTRUCTOR(HTMLObjectElementPseudoCtor) 0377 DEFINE_PSEUDO_CONSTRUCTOR(HTMLParamElementPseudoCtor) 0378 DEFINE_PSEUDO_CONSTRUCTOR(HTMLAppletElementPseudoCtor) 0379 DEFINE_PSEUDO_CONSTRUCTOR(HTMLMapElementPseudoCtor) 0380 DEFINE_PSEUDO_CONSTRUCTOR(HTMLAreaElementPseudoCtor) 0381 DEFINE_PSEUDO_CONSTRUCTOR(HTMLScriptElementPseudoCtor) 0382 DEFINE_PSEUDO_CONSTRUCTOR(HTMLTableElementPseudoCtor) 0383 DEFINE_PSEUDO_CONSTRUCTOR(HTMLTableCaptionElementPseudoCtor) 0384 DEFINE_PSEUDO_CONSTRUCTOR(HTMLTableColElementPseudoCtor) 0385 DEFINE_PSEUDO_CONSTRUCTOR(HTMLTableSectionElementPseudoCtor) 0386 DEFINE_PSEUDO_CONSTRUCTOR(HTMLTableRowElementPseudoCtor) 0387 DEFINE_PSEUDO_CONSTRUCTOR(HTMLTableCellElementPseudoCtor) 0388 DEFINE_PSEUDO_CONSTRUCTOR(HTMLFrameSetElementPseudoCtor) 0389 DEFINE_PSEUDO_CONSTRUCTOR(HTMLLayerElementPseudoCtor) 0390 DEFINE_PSEUDO_CONSTRUCTOR(HTMLFrameElementPseudoCtor) 0391 DEFINE_PSEUDO_CONSTRUCTOR(HTMLIFrameElementPseudoCtor) 0392 DEFINE_PSEUDO_CONSTRUCTOR(HTMLCollectionPseudoCtor) 0393 DEFINE_PSEUDO_CONSTRUCTOR(HTMLMarqueeElementPseudoCtor) 0394 DEFINE_PSEUDO_CONSTRUCTOR(HTMLCanvasElementPseudoCtor) 0395 } // namespace 0396 0397 #endif