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, 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;
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, BodyScrollHeight, BodyScrollWidth,
00086 FormAction, FormEncType, FormElements, FormLength, FormAcceptCharset,
00087 FormReset, FormTarget, FormName, FormMethod, FormSubmit, SelectAdd,
00088 SelectTabIndex, SelectValue, SelectSelectedIndex, SelectLength,
00089 SelectRemove, SelectForm, SelectBlur, SelectType, SelectOptions,
00090 SelectDisabled, SelectMultiple, SelectName, SelectSize, SelectFocus,
00091 OptGroupDisabled, OptGroupLabel, OptionIndex, OptionSelected,
00092 OptionForm, OptionText, OptionDefaultSelected, OptionDisabled,
00093 OptionLabel, OptionValue, InputBlur, InputReadOnly, InputAccept,
00094 InputSize, InputDefaultValue, InputTabIndex, InputValue, InputType,
00095 InputFocus, InputMaxLength, InputDefaultChecked, InputDisabled,
00096 InputChecked, InputForm, InputAccessKey, InputAlign, InputAlt,
00097 InputName, InputSrc, InputUseMap, InputSelect, InputClick,
00098 TextAreaAccessKey, TextAreaName, TextAreaDefaultValue, TextAreaSelect,
00099 TextAreaCols, TextAreaDisabled, TextAreaForm, TextAreaType,
00100 TextAreaTabIndex, TextAreaReadOnly, TextAreaRows, TextAreaValue,
00101 TextAreaBlur, TextAreaFocus, ButtonForm, ButtonTabIndex, ButtonName,
00102 ButtonDisabled, ButtonAccessKey, ButtonType, ButtonValue, LabelHtmlFor,
00103 LabelForm, LabelAccessKey, FieldSetForm, LegendForm, LegendAccessKey,
00104 LegendAlign, UListType, UListCompact, OListStart, OListCompact,
00105 OListType, DListCompact, DirectoryCompact, MenuCompact, LIType,
00106 LIValue, DivAlign, ParagraphAlign, HeadingAlign, BlockQuoteCite,
00107 QuoteCite, PreWidth, BRClear, BaseFontColor, BaseFontSize,
00108 BaseFontFace, FontColor, FontSize, FontFace, HRWidth, HRNoShade,
00109 HRAlign, HRSize, ModCite, ModDateTime, AnchorShape, AnchorRel,
00110 AnchorAccessKey, AnchorCoords, AnchorHref, AnchorProtocol, AnchorHost,
00111 AnchorCharset, AnchorHrefLang, AnchorHostname, AnchorType, AnchorFocus,
00112 AnchorPort, AnchorPathName, AnchorHash, AnchorSearch, AnchorName,
00113 AnchorRev, AnchorTabIndex, AnchorTarget, AnchorText, AnchorBlur,
00114 ImageName, ImageAlign, ImageHspace, ImageVspace, ImageUseMap, ImageAlt,
00115 ImageLowSrc, ImageWidth, ImageIsMap, ImageBorder, ImageHeight,
00116 ImageLongDesc, ImageSrc, ImageX, ImageY, ImageComplete, ObjectHspace, ObjectHeight, ObjectAlign,
00117 ObjectBorder, ObjectCode, ObjectType, ObjectVspace, ObjectArchive,
00118 ObjectDeclare, ObjectForm, ObjectCodeBase, ObjectCodeType, ObjectData,
00119 ObjectName, ObjectStandby, ObjectTabIndex, ObjectUseMap, ObjectWidth, ObjectContentDocument,
00120 ParamName, ParamType, ParamValueType, ParamValue, AppletArchive,
00121 AppletAlt, AppletCode, AppletWidth, AppletAlign, AppletCodeBase,
00122 AppletName, AppletHeight, AppletHspace, AppletObject, AppletVspace,
00123 MapAreas, MapName, AreaHash, AreaHref, AreaTarget, AreaPort, AreaShape,
00124 AreaCoords, AreaAlt, AreaAccessKey, AreaNoHref, AreaHost, AreaProtocol,
00125 AreaHostName, AreaPathName, AreaSearch, AreaTabIndex, ScriptEvent,
00126 ScriptType, ScriptHtmlFor, ScriptText, ScriptSrc, ScriptCharset,
00127 ScriptDefer, TableSummary, TableTBodies, TableTHead, TableCellPadding,
00128 TableDeleteCaption, TableCreateCaption, TableCaption, TableWidth,
00129 TableCreateTFoot, TableAlign, TableTFoot, TableDeleteRow,
00130 TableCellSpacing, TableRows, TableBgColor, TableBorder, TableFrame,
00131 TableRules, TableCreateTHead, TableDeleteTHead, TableDeleteTFoot,
00132 TableInsertRow, TableCaptionAlign, TableColCh, TableColChOff,
00133 TableColAlign, TableColSpan, TableColVAlign, TableColWidth,
00134 TableSectionCh, TableSectionDeleteRow, TableSectionChOff,
00135 TableSectionRows, TableSectionAlign, TableSectionVAlign,
00136 TableSectionInsertRow, TableRowSectionRowIndex, TableRowRowIndex,
00137 TableRowChOff, TableRowCells, TableRowVAlign, TableRowCh,
00138 TableRowAlign, TableRowBgColor, TableRowDeleteCell, TableRowInsertCell,
00139 TableCellColSpan, TableCellNoWrap, TableCellAbbr, TableCellHeight,
00140 TableCellWidth, TableCellCellIndex, TableCellChOff, TableCellBgColor,
00141 TableCellCh, TableCellVAlign, TableCellRowSpan, TableCellHeaders,
00142 TableCellAlign, TableCellAxis, TableCellScope, FrameSetCols,
00143 FrameSetRows, FrameSrc, FrameLocation, FrameFrameBorder, FrameScrolling,
00144 FrameMarginWidth, FrameLongDesc, FrameMarginHeight, FrameName, FrameContentDocument,
00145 FrameNoResize, IFrameLongDesc, IFrameAlign,
00146 IFrameFrameBorder, IFrameSrc, IFrameName, IFrameHeight,
00147 IFrameMarginHeight, IFrameMarginWidth, IFrameScrolling, IFrameWidth, IFrameContentDocument,
00148 MarqueeStart, MarqueeStop,
00149 ElementInnerHTML, ElementTitle, ElementId, ElementDir, ElementLang,
00150 ElementClassName, ElementInnerText, ElementDocument, ElementChildren, ElementAll };
00151
00152
DOM::HTMLElement toElement()
const {
return static_cast<DOM::HTMLElement>(node); }
00153 };
00154
00155
00156
class HTMLElementFunction :
public DOMFunction {
00157
public:
00158 HTMLElementFunction(ExecState *exec,
int i,
int len);
00159
virtual Value tryCall(ExecState *exec, Object &thisObj,
const List&args);
00160
private:
00161
int id;
00162 };
00163
00164
class HTMLCollection :
public DOMObject {
00165
public:
00166
HTMLCollection(ExecState *exec,
const DOM::HTMLCollection& c);
00167 ~
HTMLCollection();
00168
virtual Value tryGet(ExecState *exec,
const Identifier &propertyName)
const;
00169
virtual Value call(ExecState *exec, Object &thisObj,
const List&args);
00170
virtual Value tryCall(ExecState *exec, Object &thisObj,
const List&args);
00171
virtual bool implementsCall()
const {
return true; }
00172
virtual bool toBoolean(ExecState *)
const {
return true; }
00173
virtual bool hasProperty(ExecState *exec,
const Identifier &p)
const;
00174
enum { Item, NamedItem, Tags };
00175 Value getNamedItems(ExecState *exec,
const Identifier &propertyName)
const;
00176
virtual const ClassInfo* classInfo()
const {
return &info; }
00177
static const ClassInfo info;
00178
DOM::HTMLCollection toCollection()
const {
return collection; }
00179
protected:
00180
DOM::HTMLCollection collection;
00181 };
00182
00183
class HTMLSelectCollection :
public HTMLCollection {
00184
public:
00185 HTMLSelectCollection(ExecState *exec,
const DOM::HTMLCollection& c,
const DOM::HTMLSelectElement& e)
00186 :
HTMLCollection(exec, c), element(e) { }
00187
virtual Value tryGet(ExecState *exec,
const Identifier &propertyName)
const;
00188
virtual void tryPut(ExecState *exec,
const Identifier &propertyName,
const Value& value,
int attr = None);
00189
private:
00190
DOM::HTMLSelectElement element;
00191 };
00192
00194
00195
class OptionConstructorImp :
public ObjectImp {
00196
public:
00197 OptionConstructorImp(ExecState *exec,
const DOM::Document &d);
00198
virtual bool implementsConstruct() const;
00199 virtual Object construct(ExecState *exec, const List &args);
00200 private:
00201 DOM::
Document doc;
00202 };
00203
00205
00206 class ImageConstructorImp : public ObjectImp {
00207
public:
00208 ImageConstructorImp(ExecState *exec,
const DOM::Document &d);
00209
virtual bool implementsConstruct() const;
00210 virtual Object construct(ExecState *exec, const List &args);
00211 private:
00212 DOM::
Document doc;
00213 };
00214
00215 class Image : public
DOMObject, public khtml::CachedObjectClient {
00216
public:
00217 Image(ExecState*,
const DOM::Document &d);
00218 ~Image();
00219
virtual Value tryGet(ExecState *exec,
const Identifier &propertyName)
const;
00220 Value getValueProperty(ExecState *exec,
int token)
const;
00221
virtual void tryPut(ExecState *exec,
const Identifier &propertyName,
const Value& value,
int attr = None);
00222
void putValueProperty(ExecState *exec,
int token,
const Value& value,
int);
00223
virtual bool toBoolean(ExecState *)
const {
return true; }
00224
virtual void notifyFinished(khtml::CachedObject * finishedObj);
00225
virtual const ClassInfo* classInfo()
const {
return &info; }
00226
static const ClassInfo info;
00227
enum { Src, Complete, Width, Height, OnLoad };
00228
private:
00229 UString src;
00230
DOM::Document doc;
00231 khtml::CachedImage* img;
00232 JSEventListener *m_onLoadListener;
00233 };
00234
00235 Value getHTMLCollection(ExecState *exec,
const DOM::HTMLCollection& c);
00236 Value getSelectHTMLCollection(ExecState *exec,
const DOM::HTMLCollection& c,
const DOM::HTMLSelectElement& e);
00237
00238
00239
00240
00241
00242
class NamedTagLengthDeterminer {
00243
public:
00244
struct TagLength {
00245 DOM::NodeImpl::Id
id;
unsigned long length; DOM::NodeImpl *last;
00246 };
00247 NamedTagLengthDeterminer(
const DOM::DOMString& n, TagLength *t,
int l)
00248 :
name(n), tags(t), nrTags(l) {}
00249
void operator () (DOM::NodeImpl *start);
00250
private:
00251
const DOM::DOMString&
name;
00252 TagLength *tags;
00253
int nrTags;
00254 };
00255
00256
00257 }
00258
00259
#endif