Reviewed by David Harrison.
[WebKit-https.git] / WebCore / khtml / 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 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 #ifndef HTML_OBJECTIMPL_H
25 #define HTML_OBJECTIMPL_H
26
27 #include "html_imageimpl.h"
28 #include "xml/dom_stringimpl.h"
29 #include "java/kjavaappletcontext.h"
30
31 #if APPLE_CHANGES
32 #include <JavaScriptCore/runtime.h>
33 #endif
34
35 class QStringList;
36
37 namespace DOM {
38
39 class HTMLFormElementImpl;
40
41 class HTMLAppletElementImpl : public HTMLElementImpl
42 {
43 public:
44     HTMLAppletElementImpl(DocumentPtr *doc);
45
46     ~HTMLAppletElementImpl();
47
48     virtual Id id() const;
49
50     virtual bool mapToEntry(Id attr, MappedAttributeEntry& result) const;
51     virtual void parseHTMLAttribute(HTMLAttributeImpl *token);
52     
53     virtual bool rendererIsNeeded(khtml::RenderStyle *);
54     virtual khtml::RenderObject *createRenderer(RenderArena *, khtml::RenderStyle *);
55     virtual void closeRenderer();
56
57     bool getMember(const QString &, JType &, QString &);
58     bool callMember(const QString &, const QStringList &, JType &, QString &);
59     
60     DOMString align() const;
61     void setAlign(const DOMString &);
62
63     DOMString alt() const;
64     void setAlt(const DOMString &);
65
66     DOMString archive() const;
67     void setArchive(const DOMString &);
68
69     DOMString code() const;
70     void setCode(const DOMString &);
71
72     DOMString codeBase() const;
73     void setCodeBase(const DOMString &);
74
75     DOMString height() const;
76     void setHeight(const DOMString &);
77
78     DOMString hspace() const;
79     void setHspace(const DOMString &);
80
81     DOMString name() const;
82     void setName(const DOMString &);
83
84     DOMString object() const;
85     void setObject(const DOMString &);
86
87     DOMString vspace() const;
88     void setVspace(const DOMString &);
89
90     DOMString width() const;
91     void setWidth(const DOMString &);
92
93 #if APPLE_CHANGES
94     virtual bool allParamsAvailable();
95     void setupApplet() const;
96     KJS::Bindings::Instance *getAppletInstance() const;
97 #endif
98
99 protected:
100     khtml::VAlign valign;
101
102 private:
103 #if APPLE_CHANGES
104     mutable KJS::Bindings::Instance *appletInstance;
105     bool m_allParamsAvailable;
106 #endif
107 };
108
109 // -------------------------------------------------------------------------
110
111 class HTMLEmbedElementImpl : public HTMLElementImpl
112 {
113 public:
114     HTMLEmbedElementImpl(DocumentPtr *doc);
115
116     ~HTMLEmbedElementImpl();
117
118     virtual Id id() const;
119
120     virtual bool mapToEntry(Id attr, MappedAttributeEntry& result) const;
121     virtual void parseHTMLAttribute(HTMLAttributeImpl *attr);
122
123     virtual void attach();
124     virtual bool rendererIsNeeded(khtml::RenderStyle *);
125     virtual khtml::RenderObject *createRenderer(RenderArena *, khtml::RenderStyle *);
126     
127     virtual bool isURLAttribute(AttributeImpl *attr) const;
128
129 #if APPLE_CHANGES
130     KJS::Bindings::Instance *getEmbedInstance() const;
131 #endif
132
133     QString url;
134     QString pluginPage;
135     QString serviceType;
136
137 #if APPLE_CHANGES
138 private:
139     mutable KJS::Bindings::Instance *embedInstance;
140 #endif
141 };
142
143 // -------------------------------------------------------------------------
144
145 class HTMLObjectElementImpl : public HTMLElementImpl
146 {
147 public:
148     HTMLObjectElementImpl(DocumentPtr *doc);
149
150     ~HTMLObjectElementImpl();
151
152     virtual Id id() const;
153
154     HTMLFormElementImpl *form() const;
155
156     virtual bool mapToEntry(Id attr, MappedAttributeEntry& result) const;
157     virtual void parseHTMLAttribute(HTMLAttributeImpl *token);
158
159     virtual void attach();
160     virtual bool rendererIsNeeded(khtml::RenderStyle *);
161     virtual khtml::RenderObject *createRenderer(RenderArena *, khtml::RenderStyle *);
162     virtual void detach();
163     
164     virtual void recalcStyle(StyleChange ch);
165     virtual void childrenChanged();
166
167     DocumentImpl* contentDocument() const;
168     
169     virtual bool isURLAttribute(AttributeImpl *attr) const;
170
171     bool isImageType();
172
173     void renderFallbackContent();
174
175     DOMString code() const;
176     void setCode(const DOMString &);
177
178     DOMString align() const;
179     void setAlign(const DOMString &);
180
181     DOMString archive() const;
182     void setArchive(const DOMString &);
183
184     DOMString border() const;
185     void setBorder(const DOMString &);
186
187     DOMString codeBase() const;
188     void setCodeBase(const DOMString &);
189
190     DOMString codeType() const;
191     void setCodeType(const DOMString &);
192
193     DOMString data() const;
194     void setData(const DOMString &);
195
196     bool declare() const;
197     void setDeclare(bool);
198
199     DOMString height() const;
200     void setHeight(const DOMString &);
201
202     DOMString hspace() const;
203     void setHspace(const DOMString &);
204
205     DOMString name() const;
206     void setName(const DOMString &);
207
208     DOMString standby() const;
209     void setStandby(const DOMString &);
210
211     long tabIndex() const;
212     void setTabIndex(long);
213
214     DOMString type() const;
215     void setType(const DOMString &);
216
217     DOMString useMap() const;
218     void setUseMap(const DOMString &);
219
220     DOMString vspace() const;
221     void setVspace(const DOMString &);
222
223     DOMString width() const;
224     void setWidth(const DOMString &);
225
226 #if APPLE_CHANGES
227     KJS::Bindings::Instance *getObjectInstance() const;
228 #endif
229
230     QString serviceType;
231     QString url;
232     QString classId;
233     bool needWidgetUpdate : 1;
234     bool m_useFallbackContent : 1;
235     HTMLImageLoader* m_imageLoader;
236
237 #if APPLE_CHANGES
238 private:
239     mutable KJS::Bindings::Instance *objectInstance;
240 #endif
241 };
242
243 // -------------------------------------------------------------------------
244
245 class HTMLParamElementImpl : public HTMLElementImpl
246 {
247     friend class HTMLAppletElementImpl;
248 public:
249     HTMLParamElementImpl(DocumentPtr *doc);
250
251     ~HTMLParamElementImpl();
252
253     virtual Id id() const;
254
255     virtual void parseHTMLAttribute(HTMLAttributeImpl *token);
256
257     virtual bool isURLAttribute(AttributeImpl *attr) const;
258
259     DOMString name() const { return m_name; }
260     void setName(const DOMString &);
261
262     DOMString type() const;
263     void setType(const DOMString &);
264
265     DOMString value() const { return m_value; }
266     void setValue(const DOMString &);
267
268     DOMString valueType() const;
269     void setValueType(const DOMString &);
270
271  protected:
272     AtomicString m_name;
273     AtomicString m_value;
274 };
275
276 }
277
278 #endif