[3603191] REGRESSION: Applets not receiving all of the Applet Parameters in Java...
[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
60     bool getMember(const QString &, JType &, QString &);
61     bool callMember(const QString &, const QStringList &, JType &, QString &);
62     
63 #if APPLE_CHANGES
64     virtual void setAllParamsAvailable();
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 #if APPLE_CHANGES
143     KJS::Bindings::Instance *getObjectInstance() const;
144 #endif
145
146     QString serviceType;
147     QString url;
148     QString classId;
149     bool needWidgetUpdate;
150     HTMLImageLoader* m_imageLoader;
151
152 #if APPLE_CHANGES
153 private:
154     mutable KJS::Bindings::Instance *objectInstance;
155 #endif
156 };
157
158 // -------------------------------------------------------------------------
159
160 class HTMLParamElementImpl : public HTMLElementImpl
161 {
162     friend class HTMLAppletElementImpl;
163 public:
164     HTMLParamElementImpl(DocumentPtr *doc);
165
166     ~HTMLParamElementImpl();
167
168     virtual Id id() const;
169
170     virtual void parseHTMLAttribute(HTMLAttributeImpl *token);
171
172     QString name() const { return m_name.string(); }
173     QString value() const { return m_value.string(); }
174     
175     virtual bool isURLAttribute(AttributeImpl *attr) const;
176
177  protected:
178     AtomicString m_name;
179     AtomicString m_value;
180 };
181
182 };
183 #endif