LayoutTests:
[WebKit-https.git] / WebCore / html / html_objectimpl.h
1 /*
2  * This file is part of the DOM implementation for KDE.
3  *
4  * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
5  *           (C) 1999 Antti Koivisto (koivisto@kde.org)
6  * Copyright (C) 2004, 2006 Apple Computer, Inc.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Library General Public
10  * License as published by the Free Software Foundation; either
11  * version 2 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Library General Public License for more details.
17  *
18  * You should have received a copy of the GNU Library General Public License
19  * along with this library; see the file COPYING.LIB.  If not, write to
20  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21  * Boston, MA 02111-1307, USA.
22  *
23  */
24
25 #ifndef HTML_OBJECTIMPL_H
26 #define HTML_OBJECTIMPL_H
27
28 #include "HTMLElement.h"
29
30 #if __APPLE__
31 #include <JavaScriptCore/runtime.h>
32 #else
33 namespace KJS { namespace Bindings { class Instance; } }
34 #endif
35
36 namespace WebCore {
37
38 class HTMLFormElement;
39 class HTMLImageLoader;
40
41 // -------------------------------------------------------------------------
42
43 class HTMLPlugInElement : public HTMLElement
44 {
45 public:
46     HTMLPlugInElement(const QualifiedName& tagName, Document*);
47
48     virtual bool mapToEntry(const QualifiedName& attrName, MappedAttributeEntry& result) const;
49     virtual void parseMappedAttribute(MappedAttribute*);
50
51     virtual HTMLTagStatus endTagRequirement() const { return TagStatusRequired; }
52     virtual bool checkDTD(const Node* newChild);
53
54     String align() const;
55     void setAlign(const String&);
56     
57     String height() const;
58     void setHeight(const String&);
59     
60     String name() const;
61     void setName(const String&);
62     
63     String width() const;
64     void setWidth(const String&);
65     
66 #if __APPLE__
67     virtual KJS::Bindings::Instance* getInstance() const = 0;
68 #endif
69     
70 protected:
71     String oldNameAttr;
72
73 #if __APPLE__
74     mutable RefPtr<KJS::Bindings::Instance> m_instance;
75 #endif
76 };
77
78 // -------------------------------------------------------------------------
79
80 class HTMLAppletElement : public HTMLPlugInElement
81 {
82 public:
83     HTMLAppletElement(Document*);
84     ~HTMLAppletElement();
85
86     virtual int tagPriority() const { return 1; }
87
88     virtual void parseMappedAttribute(MappedAttribute*);
89     
90     virtual bool rendererIsNeeded(RenderStyle*);
91     virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
92     virtual void closeRenderer();
93     virtual void detach();
94     
95 #if __APPLE__
96     virtual KJS::Bindings::Instance* getInstance() const;
97 #endif
98
99     String alt() const;
100     void setAlt(const String&);
101
102     String archive() const;
103     void setArchive(const String&);
104
105     String code() const;
106     void setCode(const String&);
107
108     String codeBase() const;
109     void setCodeBase(const String&);
110
111     String hspace() const;
112     void setHspace(const String&);
113
114     String object() const;
115     void setObject(const String&);
116
117     String vspace() const;
118     void setVspace(const String&);
119
120     virtual bool allParamsAvailable();
121     void setupApplet() const;
122
123     virtual void insertedIntoDocument();
124     virtual void removedFromDocument();
125
126 private:
127     String oldIdAttr;
128     bool m_allParamsAvailable;
129 };
130
131 // -------------------------------------------------------------------------
132
133 class HTMLEmbedElement : public HTMLPlugInElement
134 {
135 public:
136     HTMLEmbedElement(Document*);
137     ~HTMLEmbedElement();
138
139     virtual int tagPriority() const { return 0; }
140
141     virtual bool mapToEntry(const QualifiedName& attrName, MappedAttributeEntry& result) const;
142     virtual void parseMappedAttribute(MappedAttribute*);
143
144     virtual void attach();
145     virtual void detach();
146     virtual bool rendererIsNeeded(RenderStyle*);
147     virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
148     virtual void insertedIntoDocument();
149     virtual void removedFromDocument();
150     
151     virtual bool isURLAttribute(Attribute*) const;
152
153 #if __APPLE__
154     virtual KJS::Bindings::Instance* getInstance() const;
155 #endif
156
157     String src() const;
158     void setSrc(const String&);
159
160     String type() const;
161     void setType(const String&);
162
163     DeprecatedString url;
164     DeprecatedString pluginPage;
165     DeprecatedString serviceType;
166 };
167
168 // -------------------------------------------------------------------------
169
170 class HTMLObjectElement : public HTMLPlugInElement
171 {
172 public:
173     HTMLObjectElement(Document*);
174     ~HTMLObjectElement();
175
176     virtual int tagPriority() const { return 7; }
177
178     virtual void parseMappedAttribute(MappedAttribute*);
179
180     virtual void attach();
181     virtual bool rendererIsNeeded(RenderStyle*);
182     virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
183     virtual void closeRenderer();
184     virtual void detach();
185     virtual void insertedIntoDocument();
186     virtual void removedFromDocument();
187     
188     virtual void recalcStyle(StyleChange ch);
189     virtual void childrenChanged();
190
191     virtual bool isURLAttribute(Attribute*) const;
192
193     bool isImageType();
194
195     void renderFallbackContent();
196
197 #if __APPLE__
198     virtual KJS::Bindings::Instance* getInstance() const;
199 #endif
200
201     String archive() const;
202     void setArchive(const String&);
203
204     String border() const;
205     void setBorder(const String&);
206
207     String code() const;
208     void setCode(const String&);
209     
210     String codeBase() const;
211     void setCodeBase(const String&);
212
213     String codeType() const;
214     void setCodeType(const String&);
215
216     Document* contentDocument() const;
217     
218     String data() const;
219     void setData(const String&);
220
221     bool declare() const;
222     void setDeclare(bool);
223
224     HTMLFormElement* form() const;
225     
226     String hspace() const;
227     void setHspace(const String&);
228
229     String standby() const;
230     void setStandby(const String&);
231
232     int tabIndex() const;
233     void setTabIndex(int);
234
235     String type() const;
236     void setType(const String&);
237
238     String useMap() const;
239     void setUseMap(const String&);
240
241     String vspace() const;
242     void setVspace(const String&);
243
244     bool isComplete() const { return m_complete; }
245     void setComplete(bool complete);
246     
247     bool isDocNamedItem() const { return m_docNamedItem; }
248
249     DeprecatedString serviceType;
250     DeprecatedString url;
251     WebCore::String classId;
252     bool needWidgetUpdate : 1;
253     bool m_useFallbackContent : 1;
254     HTMLImageLoader* m_imageLoader;
255
256 private:
257     void updateDocNamedItem();
258     String oldIdAttr;
259     bool m_complete;
260     bool m_docNamedItem;
261 };
262
263 // -------------------------------------------------------------------------
264
265 class HTMLParamElement : public HTMLElement
266 {
267     friend class HTMLAppletElement;
268 public:
269     HTMLParamElement(Document*);
270     ~HTMLParamElement();
271
272     virtual HTMLTagStatus endTagRequirement() const { return TagStatusForbidden; }
273     virtual int tagPriority() const { return 0; }
274
275     virtual void parseMappedAttribute(MappedAttribute*);
276
277     virtual bool isURLAttribute(Attribute*) const;
278
279     String name() const { return m_name; }
280     void setName(const String&);
281
282     String type() const;
283     void setType(const String&);
284
285     String value() const { return m_value; }
286     void setValue(const String&);
287
288     String valueType() const;
289     void setValueType(const String&);
290
291  protected:
292     AtomicString m_name;
293     AtomicString m_value;
294 };
295
296 }
297
298 #endif