khtml Library API Documentation

kjs_html.h

00001 // -*- c-basic-offset: 2 -*-
00002 /*
00003  *  This file is part of the KDE libraries
00004  *  Copyright (C) 1999 Harri Porten (porten@kde.org)
00005  *  Copyright (C) 2003 Apple Computer, Inc.
00006  *
00007  *  This library is free software; you can redistribute it and/or
00008  *  modify it under the terms of the GNU Library General Public
00009  *  License as published by the Free Software Foundation; either
00010  *  version 2 of the License, or (at your option) any later version.
00011  *
00012  *  This library is distributed in the hope that it will be useful,
00013  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015  *  Library General Public License for more details.
00016  *
00017  *  You should have received a copy of the GNU Library General Public
00018  *  License along with this library; if not, write to the Free Software
00019  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
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"  // for NodeImpl::Id
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 /*attr*/);
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, 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,
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, FrameContentDocument,
00146            FrameNoResize, IFrameLongDesc, IFrameAlign,
00147            IFrameFrameBorder, IFrameSrc, IFrameName, IFrameHeight,
00148            IFrameMarginHeight, IFrameMarginWidth, IFrameScrolling, IFrameWidth, IFrameContentDocument,
00149            MarqueeStart, MarqueeStop,
00150            LayerTop, LayerLeft, LayerVisibility, LayerBgColor, LayerClip, LayerDocument, LayerLayers,
00151            ElementInnerHTML, ElementTitle, ElementId, ElementDir, ElementLang,
00152            ElementClassName, ElementInnerText, ElementDocument, ElementChildren, ElementAll };
00153 
00154     DOM::HTMLElement toElement() const { return static_cast<DOM::HTMLElement>(node); }
00155   };
00156 
00157 
00158   class HTMLElementFunction : public DOMFunction {
00159   public:
00160     HTMLElementFunction(ExecState *exec, int i, int len);
00161     virtual Value tryCall(ExecState *exec, Object &thisObj, const List&args);
00162   private:
00163     int id;
00164   };
00165 
00166   class HTMLCollection : public DOMObject {
00167   public:
00168     HTMLCollection(ExecState *exec, const DOM::HTMLCollection& c);
00169     ~HTMLCollection();
00170     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
00171     virtual Value call(ExecState *exec, Object &thisObj, const List&args);
00172     virtual Value tryCall(ExecState *exec, Object &thisObj, const List&args);
00173     virtual bool implementsCall() const { return true; }
00174     virtual bool toBoolean(ExecState *) const;
00175     virtual bool hasProperty(ExecState *exec, const Identifier &p) const;
00176     enum { Item, NamedItem, Tags };
00177     Value getNamedItems(ExecState *exec, const Identifier &propertyName) const;
00178     virtual const ClassInfo* classInfo() const { return &info; }
00179     static const ClassInfo info;
00180     DOM::HTMLCollection toCollection() const { return collection; }
00181     virtual void hide() { hidden = true; }
00182   protected:
00183     DOM::HTMLCollection collection;
00184     bool hidden;
00185   };
00186 
00187   class HTMLSelectCollection : public HTMLCollection {
00188   public:
00189     HTMLSelectCollection(ExecState *exec, const DOM::HTMLCollection& c, const DOM::HTMLSelectElement& e)
00190       : HTMLCollection(exec, c), element(e) { }
00191     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
00192     virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
00193   private:
00194     DOM::HTMLSelectElement element;
00195   };
00196 
00198 
00199   class OptionConstructorImp : public ObjectImp {
00200   public:
00201     OptionConstructorImp(ExecState *exec, const DOM::Document &d);
00202     virtual bool implementsConstruct() const;
00203     virtual Object construct(ExecState *exec, const List &args);
00204   private:
00205     DOM::Document doc;
00206   };
00207 
00209 
00210   class ImageConstructorImp : public ObjectImp {
00211   public:
00212     ImageConstructorImp(ExecState *exec, const DOM::Document &d);
00213     virtual bool implementsConstruct() const;
00214     virtual Object construct(ExecState *exec, const List &args);
00215   private:
00216     DOM::Document doc;
00217   };
00218 
00219   class Image : public DOMObject, public khtml::CachedObjectClient {
00220   public:
00221     Image(ExecState*, const DOM::Document &d);
00222     ~Image();
00223     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
00224     Value getValueProperty(ExecState *exec, int token) const;
00225     virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
00226     void putValueProperty(ExecState *exec, int token, const Value& value, int);
00227     virtual bool toBoolean(ExecState *) const { return true; }
00228     virtual void notifyFinished(khtml::CachedObject * finishedObj);
00229     virtual const ClassInfo* classInfo() const { return &info; }
00230     static const ClassInfo info;
00231     enum { Src, Complete, Width, Height, OnLoad };
00232   private:
00233     UString src;
00234     DOM::Document doc;
00235     khtml::CachedImage* img;
00236     JSEventListener *m_onLoadListener;
00237   };
00238 
00239   Value getHTMLCollection(ExecState *exec, const DOM::HTMLCollection& c, bool hide=false);
00240   Value getSelectHTMLCollection(ExecState *exec, const DOM::HTMLCollection& c, const DOM::HTMLSelectElement& e);
00241 
00242   /* Helper function object for determining the number
00243    * of occurrences of xxxx as in document.xxxx or window.xxxx.
00244    * The order of the TagLength array is the order of preference.
00245    */
00246   class NamedTagLengthDeterminer {
00247   public:
00248     struct TagLength {
00249       DOM::NodeImpl::Id id; unsigned long length; DOM::NodeImpl *last;
00250     };
00251     NamedTagLengthDeterminer(const DOM::DOMString& n, TagLength *t, int l)
00252       : name(n), tags(t), nrTags(l) {}
00253     void operator () (DOM::NodeImpl *start);
00254   private:
00255     const DOM::DOMString& name;
00256     TagLength *tags;
00257     int nrTags;
00258   };
00259 
00260 
00261 } // namespace
00262 
00263 #endif
KDE Logo
This file is part of the documentation for khtml Library Version 3.4.3.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sun Oct 9 08:08:16 2005 by doxygen 1.4.4 written by Dimitri van Heesch, © 1997-2003