Fixed: <rdar://problem/3870907> WebCore unnecessary links against JavaVM and Security
[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     void setupApplet() const;
65     KJS::Bindings::Instance *getAppletInstance() const;
66 #endif
67
68 protected:
69     khtml::VAlign valign;
70
71 private:
72 #if APPLE_CHANGES
73     mutable KJS::Bindings::Instance *appletInstance;
74 #endif
75 };
76
77 // -------------------------------------------------------------------------
78
79 class HTMLEmbedElementImpl : public HTMLElementImpl
80 {
81 public:
82     HTMLEmbedElementImpl(DocumentPtr *doc);
83
84     ~HTMLEmbedElementImpl();
85
86     virtual Id id() const;
87
88     virtual bool mapToEntry(NodeImpl::Id attr, MappedAttributeEntry& result) const;
89     virtual void parseHTMLAttribute(HTMLAttributeImpl *attr);
90
91     virtual void attach();
92     virtual bool rendererIsNeeded(khtml::RenderStyle *);
93     virtual khtml::RenderObject *createRenderer(RenderArena *, khtml::RenderStyle *);
94     
95     virtual bool isURLAttribute(AttributeImpl *attr) const;
96
97 #if APPLE_CHANGES
98     KJS::Bindings::Instance *getEmbedInstance() const;
99 #endif
100
101     QString url;
102     QString pluginPage;
103     QString serviceType;
104
105 #if APPLE_CHANGES
106 private:
107     mutable KJS::Bindings::Instance *embedInstance;
108 #endif
109 };
110
111 // -------------------------------------------------------------------------
112
113 class HTMLObjectElementImpl : public HTMLElementImpl
114 {
115 public:
116     HTMLObjectElementImpl(DocumentPtr *doc);
117
118     ~HTMLObjectElementImpl();
119
120     virtual Id id() const;
121
122     HTMLFormElementImpl *form() const;
123
124     virtual bool mapToEntry(NodeImpl::Id attr, MappedAttributeEntry& result) const;
125     virtual void parseHTMLAttribute(HTMLAttributeImpl *token);
126
127     virtual void attach();
128     virtual bool rendererIsNeeded(khtml::RenderStyle *);
129     virtual khtml::RenderObject *createRenderer(RenderArena *, khtml::RenderStyle *);
130     virtual void detach();
131     
132     virtual void recalcStyle(StyleChange ch);
133     virtual void childrenChanged();
134
135     DocumentImpl* contentDocument() const;
136     
137     virtual bool isURLAttribute(AttributeImpl *attr) const;
138
139     QString serviceType;
140     QString url;
141     QString classId;
142     bool needWidgetUpdate;
143     HTMLImageLoader* m_imageLoader;
144 };
145
146 // -------------------------------------------------------------------------
147
148 class HTMLParamElementImpl : public HTMLElementImpl
149 {
150     friend class HTMLAppletElementImpl;
151 public:
152     HTMLParamElementImpl(DocumentPtr *doc);
153
154     ~HTMLParamElementImpl();
155
156     virtual Id id() const;
157
158     virtual void parseHTMLAttribute(HTMLAttributeImpl *token);
159
160     QString name() const { return m_name.string(); }
161     QString value() const { return m_value.string(); }
162     
163     virtual bool isURLAttribute(AttributeImpl *attr) const;
164
165  protected:
166     AtomicString m_name;
167     AtomicString m_value;
168 };
169
170 };
171 #endif