Reviewed by Eric.
[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 class HTMLAppletElement : public HTMLElement
42 {
43 public:
44     HTMLAppletElement(Document*);
45     ~HTMLAppletElement();
46
47     virtual HTMLTagStatus endTagRequirement() const { return TagStatusRequired; }
48     virtual int tagPriority() const { return 1; }
49     virtual bool checkDTD(const Node* newChild);
50
51     virtual bool mapToEntry(const QualifiedName& attrName, MappedAttributeEntry& result) const;
52     virtual void parseMappedAttribute(MappedAttribute*);
53     
54     virtual bool rendererIsNeeded(RenderStyle*);
55     virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
56     virtual void closeRenderer();
57     virtual void detach();
58     
59     String align() const;
60     void setAlign(const String&);
61
62     String alt() const;
63     void setAlt(const String&);
64
65     String archive() const;
66     void setArchive(const String&);
67
68     String code() const;
69     void setCode(const String&);
70
71     String codeBase() const;
72     void setCodeBase(const String&);
73
74     String height() const;
75     void setHeight(const String&);
76
77     String hspace() const;
78     void setHspace(const String&);
79
80     String name() const;
81     void setName(const String&);
82
83     String object() const;
84     void setObject(const String&);
85
86     String vspace() const;
87     void setVspace(const String&);
88
89     String width() const;
90     void setWidth(const String&);
91
92     virtual bool allParamsAvailable();
93     void setupApplet() const;
94
95 #if __APPLE__
96     KJS::Bindings::Instance* getAppletInstance() const;
97 #endif
98
99     virtual void insertedIntoDocument();
100     virtual void removedFromDocument();
101
102 private:
103     String oldNameAttr;
104     String oldIdAttr;
105
106 #if __APPLE__
107     mutable RefPtr<KJS::Bindings::Instance> m_appletInstance;
108 #endif
109
110     bool m_allParamsAvailable;
111 };
112
113 // -------------------------------------------------------------------------
114
115 class HTMLEmbedElement : public HTMLElement
116 {
117 public:
118     HTMLEmbedElement(Document*);
119     ~HTMLEmbedElement();
120
121     virtual HTMLTagStatus endTagRequirement() const { return TagStatusRequired; }
122     virtual int tagPriority() const { return 0; }
123     virtual bool checkDTD(const Node* newChild);
124
125     virtual bool mapToEntry(const QualifiedName& attrName, MappedAttributeEntry& result) const;
126     virtual void parseMappedAttribute(MappedAttribute*);
127
128     virtual void attach();
129     virtual void detach();
130     virtual bool rendererIsNeeded(RenderStyle*);
131     virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
132     virtual void insertedIntoDocument();
133     virtual void removedFromDocument();
134     
135     virtual bool isURLAttribute(Attribute*) const;
136
137 #if __APPLE__
138     KJS::Bindings::Instance* getEmbedInstance() const;
139 #endif
140
141     DeprecatedString url;
142     DeprecatedString pluginPage;
143     DeprecatedString serviceType;
144
145 private:
146     String oldNameAttr;
147
148 #if __APPLE__
149     mutable RefPtr<KJS::Bindings::Instance> m_embedInstance;
150 #endif
151 };
152
153 // -------------------------------------------------------------------------
154
155 class HTMLObjectElement : public HTMLElement
156 {
157 public:
158     HTMLObjectElement(Document*);
159     ~HTMLObjectElement();
160
161     virtual HTMLTagStatus endTagRequirement() const { return TagStatusRequired; }
162     virtual int tagPriority() const { return 7; }
163     virtual bool checkDTD(const Node* newChild);
164
165     HTMLFormElement* form() const;
166
167     virtual bool mapToEntry(const QualifiedName& attrName, MappedAttributeEntry& result) const;
168     virtual void parseMappedAttribute(MappedAttribute*);
169
170     virtual void attach();
171     virtual bool rendererIsNeeded(RenderStyle*);
172     virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
173     virtual void closeRenderer();
174     virtual void detach();
175     virtual void insertedIntoDocument();
176     virtual void removedFromDocument();
177     
178     virtual void recalcStyle(StyleChange ch);
179     virtual void childrenChanged();
180
181     Document* contentDocument() const;
182     
183     virtual bool isURLAttribute(Attribute*) const;
184
185     bool isImageType();
186
187     void renderFallbackContent();
188
189     String code() const;
190     void setCode(const String&);
191
192     String align() const;
193     void setAlign(const String&);
194
195     String archive() const;
196     void setArchive(const String&);
197
198     String border() const;
199     void setBorder(const String&);
200
201     String codeBase() const;
202     void setCodeBase(const String&);
203
204     String codeType() const;
205     void setCodeType(const String&);
206
207     String data() const;
208     void setData(const String&);
209
210     bool declare() const;
211     void setDeclare(bool);
212
213     String height() const;
214     void setHeight(const String&);
215
216     String hspace() const;
217     void setHspace(const String&);
218
219     String name() const;
220     void setName(const String&);
221
222     String standby() const;
223     void setStandby(const String&);
224
225     int tabIndex() const;
226     void setTabIndex(int);
227
228     String type() const;
229     void setType(const String&);
230
231     String useMap() const;
232     void setUseMap(const String&);
233
234     String vspace() const;
235     void setVspace(const String&);
236
237     String width() const;
238     void setWidth(const String&);
239
240     bool isComplete() const { return m_complete; }
241     void setComplete(bool complete);
242     
243     bool isDocNamedItem() const { return m_docNamedItem; }
244
245 #if __APPLE__
246     KJS::Bindings::Instance* getObjectInstance() const;
247 #endif
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     String oldNameAttr;
260
261 #if __APPLE__
262     mutable RefPtr<KJS::Bindings::Instance> m_objectInstance;
263 #endif
264
265     bool m_complete;
266     bool m_docNamedItem;
267 };
268
269 // -------------------------------------------------------------------------
270
271 class HTMLParamElement : public HTMLElement
272 {
273     friend class HTMLAppletElement;
274 public:
275     HTMLParamElement(Document*);
276     ~HTMLParamElement();
277
278     virtual HTMLTagStatus endTagRequirement() const { return TagStatusForbidden; }
279     virtual int tagPriority() const { return 0; }
280
281     virtual void parseMappedAttribute(MappedAttribute*);
282
283     virtual bool isURLAttribute(Attribute*) const;
284
285     String name() const { return m_name; }
286     void setName(const String&);
287
288     String type() const;
289     void setType(const String&);
290
291     String value() const { return m_value; }
292     void setValue(const String&);
293
294     String valueType() const;
295     void setValueType(const String&);
296
297  protected:
298     AtomicString m_name;
299     AtomicString m_value;
300 };
301
302 }
303
304 #endif