diff options
Diffstat (limited to 'khtml/ecma/kjs_html.h')
-rw-r--r-- | khtml/ecma/kjs_html.h | 294 |
1 files changed, 294 insertions, 0 deletions
diff --git a/khtml/ecma/kjs_html.h b/khtml/ecma/kjs_html.h new file mode 100644 index 000000000..53da38462 --- /dev/null +++ b/khtml/ecma/kjs_html.h @@ -0,0 +1,294 @@ +// -*- c-basic-offset: 2 -*- +/* + * This file is part of the KDE libraries + * Copyright (C) 1999 Harri Porten (porten@kde.org) + * Copyright (C) 2003 Apple Computer, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef _KJS_HTML_H_ +#define _KJS_HTML_H_ + +#include "dom/html_document.h" +#include "dom/html_base.h" +#include "dom/html_misc.h" +#include "dom/html_form.h" +#include "misc/loader_client.h" + +#include "ecma/kjs_binding.h" +#include "ecma/kjs_dom.h" +#include "xml/dom_nodeimpl.h" // for NodeImpl::Id + +namespace KJS { + + class HTMLElement; + + class HTMLDocument : public DOMDocument { + public: + HTMLDocument(ExecState *exec, const DOM::HTMLDocument& d); + virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const; + virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None); + void putValueProperty(ExecState *exec, int token, const Value& value, int /*attr*/); + virtual bool hasProperty(ExecState *exec, const Identifier &propertyName) const; + virtual const ClassInfo* classInfo() const { return &info; } + static const ClassInfo info; + enum { Title, Referrer, Domain, URL, Body, Location, Cookie, + Images, Applets, Links, Forms, Layers, Anchors, Scripts, All, Clear, Open, Close, + Write, WriteLn, GetElementsByName, GetSelection, CaptureEvents, ReleaseEvents, + BgColor, FgColor, AlinkColor, LinkColor, VlinkColor, LastModified, + Height, Width, Dir, Frames, CompatMode }; + DOM::Document toDocument() const { return static_cast<DOM::Document>( node ); } + }; + + DEFINE_PSEUDO_CONSTRUCTOR(HTMLDocumentPseudoCtor) + + class HTMLElement : public DOMElement { + public: + HTMLElement(ExecState *exec, const DOM::HTMLElement& e); + virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const; + Value getValueProperty(ExecState *exec, int token) const; + virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None); + void putValueProperty(ExecState *exec, int token, const Value& value, int); + virtual bool hasProperty(ExecState *exec, const Identifier &propertyName) const; + virtual UString toString(ExecState *exec) const; + virtual void pushEventHandlerScope(ExecState *exec, ScopeChain &scope) const; + virtual const ClassInfo* classInfo() const; + static const ClassInfo info; + + static const ClassInfo html_info, head_info, link_info, title_info, + meta_info, base_info, isIndex_info, style_info, body_info, form_info, + select_info, optGroup_info, option_info, input_info, textArea_info, + button_info, label_info, fieldSet_info, legend_info, ul_info, ol_info, + dl_info, dir_info, menu_info, li_info, div_info, p_info, heading_info, + blockQuote_info, q_info, pre_info, br_info, baseFont_info, font_info, + hr_info, mod_info, a_info, img_info, object_info, param_info, + applet_info, map_info, area_info, script_info, table_info, + caption_info, col_info, tablesection_info, tr_info, + tablecell_info, frameSet_info, frame_info, iFrame_info, marquee_info, layer_info; + + enum { HtmlVersion, HeadProfile, LinkHref, LinkRel, LinkMedia, + LinkCharset, LinkDisabled, LinkHrefLang, LinkRev, LinkTarget, LinkType, + LinkSheet, TitleText, MetaName, MetaHttpEquiv, MetaContent, MetaScheme, + BaseHref, BaseTarget, IsIndexForm, IsIndexPrompt, StyleDisabled, + StyleSheet, StyleType, StyleMedia, BodyBackground, BodyVLink, BodyText, + BodyLink, BodyALink, BodyBgColor, BodyOnLoad, BodyFocus, + FormAction, FormEncType, FormElements, FormLength, FormAcceptCharset, + FormReset, FormTarget, FormName, FormMethod, FormSubmit, SelectAdd, + SelectTabIndex, SelectValue, SelectSelectedIndex, SelectLength, + SelectRemove, SelectForm, SelectBlur, SelectType, SelectOptions, + SelectDisabled, SelectMultiple, SelectName, SelectSize, SelectFocus, + OptGroupDisabled, OptGroupLabel, OptionIndex, OptionSelected, + OptionForm, OptionText, OptionDefaultSelected, OptionDisabled, + OptionLabel, OptionValue, InputBlur, InputReadOnly, InputAccept, + InputSize, InputDefaultValue, InputTabIndex, InputValue, InputType, + InputFocus, InputMaxLength, InputDefaultChecked, InputDisabled, + InputChecked, InputIndeterminate, InputForm, InputAccessKey, InputAlign, InputAlt, + InputName, InputSrc, InputUseMap, InputSelect, InputClick, + InputSelectionStart, InputSelectionEnd, InputSetSelectionRange, + TextAreaAccessKey, TextAreaName, TextAreaDefaultValue, TextAreaSelect, + TextAreaCols, TextAreaDisabled, TextAreaForm, TextAreaType, + TextAreaTabIndex, TextAreaReadOnly, TextAreaRows, TextAreaValue, + TextAreaBlur, TextAreaFocus, TextAreaSelectionStart, TextAreaSelectionEnd, TextAreaSetSelectionRange, + TextAreaTextLength, ButtonBlur, ButtonFocus, ButtonForm, ButtonTabIndex, ButtonName, + ButtonDisabled, ButtonAccessKey, ButtonType, ButtonValue, LabelHtmlFor, + LabelForm, LabelAccessKey, FieldSetForm, LegendForm, LegendAccessKey, + LegendAlign, UListType, UListCompact, OListStart, OListCompact, + OListType, DListCompact, DirectoryCompact, MenuCompact, LIType, + LIValue, DivAlign, ParagraphAlign, HeadingAlign, BlockQuoteCite, + QuoteCite, PreWidth, BRClear, BaseFontColor, BaseFontSize, + BaseFontFace, FontColor, FontSize, FontFace, HRWidth, HRNoShade, + HRAlign, HRSize, ModCite, ModDateTime, AnchorShape, AnchorRel, + AnchorAccessKey, AnchorCoords, AnchorHref, AnchorProtocol, AnchorHost, + AnchorCharset, AnchorHrefLang, AnchorHostname, AnchorType, AnchorFocus, + AnchorPort, AnchorPathName, AnchorHash, AnchorSearch, AnchorName, + AnchorRev, AnchorTabIndex, AnchorTarget, AnchorText, AnchorBlur, AnchorClick, + ImageName, ImageAlign, ImageHspace, ImageVspace, ImageUseMap, ImageAlt, + ImageLowSrc, ImageWidth, ImageIsMap, ImageBorder, ImageHeight, + ImageLongDesc, ImageSrc, ImageX, ImageY, ImageComplete, ObjectHspace, ObjectHeight, ObjectAlign, + ObjectBorder, ObjectCode, ObjectType, ObjectVspace, ObjectArchive, + ObjectDeclare, ObjectForm, ObjectCodeBase, ObjectCodeType, ObjectData, + ObjectName, ObjectStandby, ObjectTabIndex, ObjectUseMap, ObjectWidth, ObjectContentDocument, + ParamName, ParamType, ParamValueType, ParamValue, AppletArchive, + AppletAlt, AppletCode, AppletWidth, AppletAlign, AppletCodeBase, + AppletName, AppletHeight, AppletHspace, AppletObject, AppletVspace, + MapAreas, MapName, AreaHash, AreaHref, AreaTarget, AreaPort, AreaShape, + AreaCoords, AreaAlt, AreaAccessKey, AreaNoHref, AreaHost, AreaProtocol, + AreaHostName, AreaPathName, AreaSearch, AreaTabIndex, ScriptEvent, + ScriptType, ScriptHtmlFor, ScriptText, ScriptSrc, ScriptCharset, + ScriptDefer, TableSummary, TableTBodies, TableTHead, TableCellPadding, + TableDeleteCaption, TableCreateCaption, TableCaption, TableWidth, + TableCreateTFoot, TableAlign, TableTFoot, TableDeleteRow, + TableCellSpacing, TableRows, TableBgColor, TableBorder, TableFrame, + TableRules, TableCreateTHead, TableDeleteTHead, TableDeleteTFoot, + TableInsertRow, TableCaptionAlign, TableColCh, TableColChOff, + TableColAlign, TableColSpan, TableColVAlign, TableColWidth, + TableSectionCh, TableSectionDeleteRow, TableSectionChOff, + TableSectionRows, TableSectionAlign, TableSectionVAlign, + TableSectionInsertRow, TableRowSectionRowIndex, TableRowRowIndex, + TableRowChOff, TableRowCells, TableRowVAlign, TableRowCh, + TableRowAlign, TableRowBgColor, TableRowDeleteCell, TableRowInsertCell, + TableCellColSpan, TableCellNoWrap, TableCellAbbr, TableCellHeight, + TableCellWidth, TableCellCellIndex, TableCellChOff, TableCellBgColor, + TableCellCh, TableCellVAlign, TableCellRowSpan, TableCellHeaders, + TableCellAlign, TableCellAxis, TableCellScope, FrameSetCols, + FrameSetRows, FrameSrc, FrameLocation, FrameFrameBorder, FrameScrolling, + FrameMarginWidth, FrameLongDesc, FrameMarginHeight, FrameName, + FrameContentDocument, FrameContentWindow, + FrameNoResize, FrameWidth, FrameHeight, IFrameLongDesc, IFrameAlign, + IFrameFrameBorder, IFrameSrc, IFrameName, IFrameHeight, + IFrameMarginHeight, IFrameMarginWidth, IFrameScrolling, IFrameWidth, + IFrameContentDocument, IFrameContentWindow, + MarqueeStart, MarqueeStop, + LayerTop, LayerLeft, LayerVisibility, LayerBgColor, LayerClip, LayerDocument, LayerLayers, + ElementInnerHTML, ElementTitle, ElementId, ElementDir, ElementLang, + ElementClassName, ElementInnerText, ElementDocument, + ElementChildren, ElementAll, ElementScrollIntoView }; + + DOM::HTMLElement toElement() const { return static_cast<DOM::HTMLElement>(node); } + }; + + class HTMLElementFunction : public DOMFunction { + public: + HTMLElementFunction(ExecState *exec, int i, int len); + virtual Value tryCall(ExecState *exec, Object &thisObj, const List&args); + private: + int id; + }; + + class HTMLCollection : public DOMObject { + public: + HTMLCollection(ExecState *exec, const DOM::HTMLCollection& c); + HTMLCollection(const KJS::Object& proto, const DOM::HTMLCollection& c); + ~HTMLCollection(); + virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const; + virtual Value call(ExecState *exec, Object &thisObj, const List&args); + virtual Value tryCall(ExecState *exec, Object &thisObj, const List&args); + virtual bool implementsCall() const { return true; } + virtual bool toBoolean(ExecState *) const; + virtual bool hasProperty(ExecState *exec, const Identifier &p) const; + virtual ReferenceList propList(ExecState *exec, bool recursive); + enum { Item, NamedItem, Tags }; + Value getNamedItems(ExecState *exec, const Identifier &propertyName) const; + virtual const ClassInfo* classInfo() const { return &info; } + static const ClassInfo info; + DOM::HTMLCollection toCollection() const { return collection; } + virtual void hide() { hidden = true; } + protected: + DOM::HTMLCollection collection; + bool hidden; + }; + + class HTMLSelectCollection : public HTMLCollection { + public: + enum { Add }; + HTMLSelectCollection(ExecState *exec, const DOM::HTMLCollection& c, const DOM::HTMLSelectElement& e); + virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const; + virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None); + + virtual const ClassInfo* classInfo() const { return &info; } + static const ClassInfo info; + + DOM::HTMLSelectElement toElement() const { return element; } + private: + DOM::HTMLSelectElement element; + }; + + ////////////////////// Option Object //////////////////////// + + class OptionConstructorImp : public ObjectImp { + public: + OptionConstructorImp(ExecState *exec, const DOM::Document &d); + virtual bool implementsConstruct() const; + virtual Object construct(ExecState *exec, const List &args); + private: + DOM::Document doc; + }; + + ////////////////////// Image Object //////////////////////// + + class ImageConstructorImp : public ObjectImp { + public: + ImageConstructorImp(ExecState *exec, const DOM::Document &d); + virtual bool implementsConstruct() const; + virtual Object construct(ExecState *exec, const List &args); + private: + DOM::Document doc; + }; + + Value getHTMLCollection(ExecState *exec, const DOM::HTMLCollection& c, bool hide=false); + Value getSelectHTMLCollection(ExecState *exec, const DOM::HTMLCollection& c, const DOM::HTMLSelectElement& e); + + + //All the pseudo constructors.. + DEFINE_PSEUDO_CONSTRUCTOR(HTMLElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLHtmlElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLHeadElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLLinkElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLTitleElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLMetaElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLBaseElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLIsIndexElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLStyleElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLBodyElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLFormElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLSelectElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLOptGroupElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLOptionElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLInputElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLTextAreaElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLButtonElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLLabelElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLFieldSetElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLLegendElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLUListElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLOListElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLDListElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLDirectoryElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLMenuElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLLIElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLDivElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLParagraphElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLHeadingElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLBlockQuoteElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLQuoteElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLPreElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLBRElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLBaseFontElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLFontElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLHRElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLModElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLAnchorElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLImageElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLObjectElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLParamElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLAppletElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLMapElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLAreaElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLScriptElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLTableElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLTableCaptionElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLTableColElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLTableSectionElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLTableRowElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLTableCellElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLFrameSetElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLLayerElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLFrameElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLIFrameElementPseudoCtor) + DEFINE_PSEUDO_CONSTRUCTOR(HTMLMarqueeElementPseudoCtor) +} // namespace + +#endif |