fe6297648f04b147e7788e820bebaa5777846caa
[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 #include <qstringlist.h>
32
33 #if APPLE_CHANGES
34 #include <JavaScriptCore/runtime.h>
35 #endif
36
37 class KHTMLView;
38
39 // -------------------------------------------------------------------------
40 namespace DOM {
41
42 class HTMLFormElementImpl;
43 class DOMStringImpl;
44
45 class HTMLAppletElementImpl : public HTMLElementImpl
46 {
47 public:
48     HTMLAppletElementImpl(DocumentPtr *doc);
49
50     ~HTMLAppletElementImpl();
51
52     virtual Id id() const;
53
54     virtual bool mapToEntry(NodeImpl::Id attr, MappedAttributeEntry& result) const;
55     virtual void parseHTMLAttribute(HTMLAttributeImpl *token);
56     
57     virtual bool rendererIsNeeded(khtml::RenderStyle *);
58     virtual khtml::RenderObject *createRenderer(RenderArena *, khtml::RenderStyle *);
59     virtual void closeRenderer();
60
61     bool getMember(const QString &, JType &, QString &);
62     bool callMember(const QString &, const QStringList &, JType &, QString &);
63     
64 #if APPLE_CHANGES
65     virtual bool allParamsAvailable();
66     void setupApplet() const;
67     KJS::Bindings::Instance *getAppletInstance() const;
68 #endif
69
70 protected:
71     khtml::VAlign valign;
72
73 private:
74 #if APPLE_CHANGES
75     mutable KJS::Bindings::Instance *appletInstance;
76     bool m_allParamsAvailable;
77 #endif
78 };
79
80 // -------------------------------------------------------------------------
81
82 class HTMLEmbedElementImpl : public HTMLElementImpl
83 {
84 public:
85     HTMLEmbedElementImpl(DocumentPtr *doc);
86
87     ~HTMLEmbedElementImpl();
88
89     virtual Id id() const;
90
91     virtual bool mapToEntry(NodeImpl::Id attr, MappedAttributeEntry& result) const;
92     virtual void parseHTMLAttribute(HTMLAttributeImpl *attr);
93
94     virtual void attach();
95     virtual bool rendererIsNeeded(khtml::RenderStyle *);
96     virtual khtml::RenderObject *createRenderer(RenderArena *, khtml::RenderStyle *);
97     
98     virtual bool isURLAttribute(AttributeImpl *attr) const;
99
100 #if APPLE_CHANGES
101     KJS::Bindings::Instance *getEmbedInstance() const;
102 #endif
103
104     QString url;
105     QString pluginPage;
106     QString serviceType;
107
108 #if APPLE_CHANGES
109 private:
110     mutable KJS::Bindings::Instance *embedInstance;
111 #endif
112 };
113
114 // -------------------------------------------------------------------------
115
116 class HTMLObjectElementImpl : public HTMLElementImpl
117 {
118 public:
119     HTMLObjectElementImpl(DocumentPtr *doc);
120
121     ~HTMLObjectElementImpl();
122
123     virtual Id id() const;
124
125     HTMLFormElementImpl *form() const;
126
127     virtual bool mapToEntry(NodeImpl::Id attr, MappedAttributeEntry& result) const;
128     virtual void parseHTMLAttribute(HTMLAttributeImpl *token);
129
130     virtual void attach();
131     virtual bool rendererIsNeeded(khtml::RenderStyle *);
132     virtual khtml::RenderObject *createRenderer(RenderArena *, khtml::RenderStyle *);
133     virtual void detach();
134     
135     virtual void recalcStyle(StyleChange ch);
136     virtual void childrenChanged();
137
138     DocumentImpl* contentDocument() const;
139     
140     virtual bool isURLAttribute(AttributeImpl *attr) const;
141
142     bool isImageType();
143
144     void renderFallbackContent();
145
146 #if APPLE_CHANGES
147     KJS::Bindings::Instance *getObjectInstance() const;
148 #endif
149
150     QString serviceType;
151     QString url;
152     QString classId;
153     bool needWidgetUpdate : 1;
154     bool m_useFallbackContent : 1;
155     HTMLImageLoader* m_imageLoader;
156
157 #if APPLE_CHANGES
158 private:
159     mutable KJS::Bindings::Instance *objectInstance;
160 #endif
161 };
162
163 // -------------------------------------------------------------------------
164
165 class HTMLParamElementImpl : public HTMLElementImpl
166 {
167     friend class HTMLAppletElementImpl;
168 public:
169     HTMLParamElementImpl(DocumentPtr *doc);
170
171     ~HTMLParamElementImpl();
172
173     virtual Id id() const;
174
175     virtual void parseHTMLAttribute(HTMLAttributeImpl *token);
176
177     QString name() const { return m_name.string(); }
178     QString value() const { return m_value.string(); }
179     
180     virtual bool isURLAttribute(AttributeImpl *attr) const;
181
182  protected:
183     AtomicString m_name;
184     AtomicString m_value;
185 };
186
187 };
188 #endif