00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _KJS_HTML_H_
00023 #define _KJS_HTML_H_
00024
00025 #include "dom/html_document.h"
00026 #include "dom/html_base.h"
00027 #include "dom/html_misc.h"
00028 #include "dom/html_form.h"
00029 #include "misc/loader_client.h"
00030
00031 #include "ecma/kjs_binding.h"
00032 #include "ecma/kjs_dom.h"
00033 #include "xml/dom_nodeimpl.h"
00034
00035 namespace KJS {
00036
00037 class HTMLElement;
00038
00039 class HTMLDocument : public DOMDocument {
00040 public:
00041 HTMLDocument(ExecState *exec, const DOM::HTMLDocument& d);
00042 virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
00043 virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
00044 void putValueProperty(ExecState *exec, int token, const Value& value, int );
00045 virtual bool hasProperty(ExecState *exec, const Identifier &propertyName) const;
00046 virtual const ClassInfo* classInfo() const { return &info; }
00047 static const ClassInfo info;
00048 enum { Title, Referrer, Domain, URL, Body, Location, Cookie,
00049 Images, Applets, Links, Forms, Layers, Anchors, Scripts, All, Clear, Open, Close,
00050 Write, WriteLn, GetElementsByName, GetSelection, CaptureEvents, ReleaseEvents,
00051 BgColor, FgColor, AlinkColor, LinkColor, VlinkColor, LastModified,
00052 Height, Width, Dir, Frames, CompatMode };
00053 DOM::Document toDocument() const { return static_cast<DOM::Document>( node ); }
00054 };
00055
00056 class HTMLElement : public DOMElement {
00057 public:
00058 HTMLElement(ExecState *exec, const DOM::HTMLElement& e) : DOMElement(exec, e) { }
00059 virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
00060 Value getValueProperty(ExecState *exec, int token) const;
00061 virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
00062 void putValueProperty(ExecState *exec, int token, const Value& value, int);
00063 virtual bool hasProperty(ExecState *exec, const Identifier &propertyName) const;
00064 virtual UString toString(ExecState *exec) const;
00065 virtual void pushEventHandlerScope(ExecState *exec, ScopeChain &scope) const;
00066 virtual const ClassInfo* classInfo() const;
00067 static const ClassInfo info;
00068
00069 static const ClassInfo html_info, head_info, link_info, title_info,
00070 meta_info, base_info, isIndex_info, style_info, body_info, form_info,
00071 select_info, optGroup_info, option_info, input_info, textArea_info,
00072 button_info, label_info, fieldSet_info, legend_info, ul_info, ol_info,
00073 dl_info, dir_info, menu_info, li_info, div_info, p_info, heading_info,
00074 blockQuote_info, q_info, pre_info, br_info, baseFont_info, font_info,
00075 hr_info, mod_info, a_info, img_info, object_info, param_info,
00076 applet_info, map_info, area_info, script_info, table_info,
00077 caption_info, col_info, tablesection_info, tr_info,
00078 tablecell_info, frameSet_info, frame_info, iFrame_info, marquee_info, layer_info;
00079
00080 enum { HtmlVersion, HeadProfile, LinkHref, LinkRel, LinkMedia,
00081 LinkCharset, LinkDisabled, LinkHrefLang, LinkRev, LinkTarget, LinkType,
00082 LinkSheet, TitleText, MetaName, MetaHttpEquiv, MetaContent, MetaScheme,
00083 BaseHref, BaseTarget, IsIndexForm, IsIndexPrompt, StyleDisabled,
00084 StyleSheet, StyleType, StyleMedia, BodyBackground, BodyVLink, BodyText,
00085 BodyLink, BodyALink, BodyBgColor, BodyScrollLeft, BodyScrollTop,
00086 BodyScrollHeight, BodyScrollWidth, BodyOnLoad,
00087 FormAction, FormEncType, FormElements, FormLength, FormAcceptCharset,
00088 FormReset, FormTarget, FormName, FormMethod, FormSubmit, SelectAdd,
00089 SelectTabIndex, SelectValue, SelectSelectedIndex, SelectLength,
00090 SelectRemove, SelectForm, SelectBlur, SelectType, SelectOptions,
00091 SelectDisabled, SelectMultiple, SelectName, SelectSize, SelectFocus,
00092 OptGroupDisabled, OptGroupLabel, OptionIndex, OptionSelected,
00093 OptionForm, OptionText, OptionDefaultSelected, OptionDisabled,
00094 OptionLabel, OptionValue, InputBlur, InputReadOnly, InputAccept,
00095 InputSize, InputDefaultValue, InputTabIndex, InputValue, InputType,
00096 InputFocus, InputMaxLength, InputDefaultChecked, InputDisabled,
00097 InputChecked, InputForm, InputAccessKey, InputAlign, InputAlt,
00098 InputName, InputSrc, InputUseMap, InputSelect, InputClick,
00099 TextAreaAccessKey, TextAreaName, TextAreaDefaultValue, TextAreaSelect,
00100 TextAreaCols, TextAreaDisabled, TextAreaForm, TextAreaType,
00101 TextAreaTabIndex, TextAreaReadOnly, TextAreaRows, TextAreaValue,
00102 TextAreaBlur, TextAreaFocus, ButtonBlur, ButtonFocus, ButtonForm, ButtonTabIndex, ButtonName,
00103 ButtonDisabled, ButtonAccessKey, ButtonType, ButtonValue, LabelHtmlFor,
00104 LabelForm, LabelAccessKey, FieldSetForm, LegendForm, LegendAccessKey,
00105 LegendAlign, UListType, UListCompact, OListStart, OListCompact,
00106 OListType, DListCompact, DirectoryCompact, MenuCompact, LIType,
00107 LIValue, DivAlign, ParagraphAlign, HeadingAlign, BlockQuoteCite,
00108 QuoteCite, PreWidth, BRClear, BaseFontColor, BaseFontSize,
00109 BaseFontFace, FontColor, FontSize, FontFace, HRWidth, HRNoShade,
00110 HRAlign, HRSize, ModCite, ModDateTime, AnchorShape, AnchorRel,
00111 AnchorAccessKey, AnchorCoords, AnchorHref, AnchorProtocol, AnchorHost,
00112 AnchorCharset, AnchorHrefLang, AnchorHostname, AnchorType, AnchorFocus,
00113 AnchorPort, AnchorPathName, AnchorHash, AnchorSearch, AnchorName,
00114 AnchorRev, AnchorTabIndex, AnchorTarget, AnchorText, AnchorBlur, AnchorClick,
00115 ImageName, ImageAlign, ImageHspace, ImageVspace, ImageUseMap, ImageAlt,
00116 ImageLowSrc, ImageWidth, ImageIsMap, ImageBorder, ImageHeight,
00117 ImageLongDesc, ImageSrc, ImageX, ImageY, ImageComplete, ObjectHspace, ObjectHeight, ObjectAlign,
00118 ObjectBorder, ObjectCode, ObjectType, ObjectVspace, ObjectArchive,
00119 ObjectDeclare, ObjectForm, ObjectCodeBase, ObjectCodeType, ObjectData,
00120 ObjectName, ObjectStandby, ObjectTabIndex, ObjectUseMap, ObjectWidth, ObjectContentDocument,
00121 ParamName, ParamType, ParamValueType, ParamValue, AppletArchive,
00122 AppletAlt, AppletCode, AppletWidth, AppletAlign, AppletCodeBase,
00123 AppletName, AppletHeight, AppletHspace, AppletObject, AppletVspace,
00124 MapAreas, MapName, AreaHash, AreaHref, AreaTarget, AreaPort, AreaShape,
00125 AreaCoords, AreaAlt, AreaAccessKey, AreaNoHref, AreaHost, AreaProtocol,
00126 AreaHostName, AreaPathName, AreaSearch, AreaTabIndex, ScriptEvent,
00127 ScriptType, ScriptHtmlFor, ScriptText, ScriptSrc, ScriptCharset,
00128 ScriptDefer, TableSummary, TableTBodies, TableTHead, TableCellPadding,
00129 TableDeleteCaption, TableCreateCaption, TableCaption, TableWidth,
00130 TableCreateTFoot, TableAlign, TableTFoot, TableDeleteRow,
00131 TableCellSpacing, TableRows, TableBgColor, TableBorder, TableFrame,
00132 TableRules, TableCreateTHead, TableDeleteTHead, TableDeleteTFoot,
00133 TableInsertRow, TableCaptionAlign, TableColCh, TableColChOff,
00134 TableColAlign, TableColSpan, TableColVAlign, TableColWidth,
00135 TableSectionCh, TableSectionDeleteRow, TableSectionChOff,
00136 TableSectionRows, TableSectionAlign, TableSectionVAlign,
00137 TableSectionInsertRow, TableRowSectionRowIndex, TableRowRowIndex,
00138 TableRowChOff, TableRowCells, TableRowVAlign, TableRowCh,
00139 TableRowAlign, TableRowBgColor, TableRowDeleteCell, TableRowInsertCell,
00140 TableCellColSpan, TableCellNoWrap, TableCellAbbr, TableCellHeight,
00141 TableCellWidth, TableCellCellIndex, TableCellChOff, TableCellBgColor,
00142 TableCellCh, TableCellVAlign, TableCellRowSpan, TableCellHeaders,
00143 TableCellAlign, TableCellAxis, TableCellScope, FrameSetCols,
00144 FrameSetRows, FrameSrc, FrameLocation, FrameFrameBorder, FrameScrolling,
00145 FrameMarginWidth, FrameLongDesc, FrameMarginHeight, FrameName,
00146 FrameContentDocument, FrameContentWindow,
00147 FrameNoResize, IFrameLongDesc, IFrameAlign,
00148 IFrameFrameBorder, IFrameSrc, IFrameName, IFrameHeight,
00149 IFrameMarginHeight, IFrameMarginWidth, IFrameScrolling, IFrameWidth,
00150 IFrameContentDocument, IFrameContentWindow,
00151 MarqueeStart, MarqueeStop,
00152 LayerTop, LayerLeft, LayerVisibility, LayerBgColor, LayerClip, LayerDocument, LayerLayers,
00153 ElementInnerHTML, ElementTitle, ElementId, ElementDir, ElementLang,
00154 ElementClassName, ElementInnerText, ElementDocument, ElementChildren, ElementAll };
00155
00156 DOM::HTMLElement toElement() const { return static_cast<DOM::HTMLElement>(node); }
00157 };
00158
00159
00160 class HTMLElementFunction : public DOMFunction {
00161 public:
00162 HTMLElementFunction(ExecState *exec, int i, int len);
00163 virtual Value tryCall(ExecState *exec, Object &thisObj, const List&args);
00164 private:
00165 int id;
00166 };
00167
00168 class HTMLCollection : public DOMObject {
00169 public:
00170 HTMLCollection(ExecState *exec, const DOM::HTMLCollection& c);
00171 ~HTMLCollection();
00172 virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
00173 virtual Value call(ExecState *exec, Object &thisObj, const List&args);
00174 virtual Value tryCall(ExecState *exec, Object &thisObj, const List&args);
00175 virtual bool implementsCall() const { return true; }
00176 virtual bool toBoolean(ExecState *) const;
00177 virtual bool hasProperty(ExecState *exec, const Identifier &p) const;
00178 enum { Item, NamedItem, Tags };
00179 Value getNamedItems(ExecState *exec, const Identifier &propertyName) const;
00180 virtual const ClassInfo* classInfo() const { return &info; }
00181 static const ClassInfo info;
00182 DOM::HTMLCollection toCollection() const { return collection; }
00183 virtual void hide() { hidden = true; }
00184 protected:
00185 DOM::HTMLCollection collection;
00186 bool hidden;
00187 };
00188
00189 class HTMLSelectCollection : public HTMLCollection {
00190 public:
00191 HTMLSelectCollection(ExecState *exec, const DOM::HTMLCollection& c, const DOM::HTMLSelectElement& e)
00192 : HTMLCollection(exec, c), element(e) { }
00193 virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
00194 virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
00195 private:
00196 DOM::HTMLSelectElement element;
00197 };
00198
00200
00201 class OptionConstructorImp : public ObjectImp {
00202 public:
00203 OptionConstructorImp(ExecState *exec, const DOM::Document &d);
00204 virtual bool implementsConstruct() const;
00205 virtual Object construct(ExecState *exec, const List &args);
00206 private:
00207 DOM::Document doc;
00208 };
00209
00211
00212 class ImageConstructorImp : public ObjectImp {
00213 public:
00214 ImageConstructorImp(ExecState *exec, const DOM::Document &d);
00215 virtual bool implementsConstruct() const;
00216 virtual Object construct(ExecState *exec, const List &args);
00217 private:
00218 DOM::Document doc;
00219 };
00220
00221 Value getHTMLCollection(ExecState *exec, const DOM::HTMLCollection& c, bool hide=false);
00222 Value getSelectHTMLCollection(ExecState *exec, const DOM::HTMLCollection& c, const DOM::HTMLSelectElement& e);
00223 }
00224
00225 #endif