Reviewed by darin.
[WebKit-https.git] / WebCore / khtml / html / html_headimpl.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) 2003 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_HEADIMPL_H
25 #define HTML_HEADIMPL_H
26
27 #include "html/html_elementimpl.h"
28 #include "misc/loader_client.h"
29 #include "css/css_stylesheetimpl.h"
30
31 class KHTMLView;
32
33 namespace khtml {
34     class CachedCSSStyleSheet;
35     class CachedScript;
36 }
37
38
39 namespace DOM {
40
41 class DOMString;
42 class HTMLFormElementImpl;
43 class StyleSheetImpl;
44 class CSSStyleSheetImpl;
45
46 class HTMLBaseElementImpl : public HTMLElementImpl
47 {
48 public:
49     HTMLBaseElementImpl(DocumentPtr *doc);
50     ~HTMLBaseElementImpl();
51
52     DOMString href() const { return m_href; }
53     DOMString target() const { return m_target; }
54
55     virtual Id id() const;
56     virtual void parseHTMLAttribute(HTMLAttributeImpl *attr);
57     virtual void insertedIntoDocument();
58     virtual void removedFromDocument();
59
60     void process();
61     
62 protected:
63     DOMString m_href;
64     DOMString m_target;
65 };
66
67
68
69 // -------------------------------------------------------------------------
70
71 class HTMLLinkElementImpl : public khtml::CachedObjectClient, public HTMLElementImpl
72 {
73 public:
74     HTMLLinkElementImpl(DocumentPtr *doc);
75     ~HTMLLinkElementImpl();
76
77     virtual Id id() const;
78
79     StyleSheetImpl* sheet() const { return m_sheet; }
80
81     // overload from HTMLElementImpl
82     virtual void parseHTMLAttribute(HTMLAttributeImpl *attr);
83
84     void process();
85
86     virtual void insertedIntoDocument();
87     virtual void removedFromDocument();
88
89     // from CachedObjectClient
90     virtual void setStyleSheet(const DOM::DOMString &url, const DOM::DOMString &sheet);
91     bool isLoading() const;
92     void sheetLoaded();
93
94     bool isAlternate() const { return m_disabledState == 0 && m_alternate; }
95     bool isDisabled() const { return m_disabledState == 2; }
96     bool isEnabledViaScript() const { return m_disabledState == 1; }
97
98     int disabledState() { return m_disabledState; }
99     void setDisabledState(bool _disabled);
100
101     virtual bool isURLAttribute(AttributeImpl *attr) const;
102     
103     void tokenizeRelAttribute(const AtomicString& rel);
104
105 protected:
106     khtml::CachedCSSStyleSheet *m_cachedSheet;
107     CSSStyleSheetImpl *m_sheet;
108     DOMString m_url;
109     DOMString m_type;
110     QString m_media;
111     int m_disabledState; // 0=unset(default), 1=enabled via script, 2=disabled
112     bool m_loading : 1;
113     bool m_alternate : 1;
114     bool m_isStyleSheet : 1;
115     bool m_isIcon : 1;
116     QString m_data; // needed for temporarily storing the loaded style sheet data
117 };
118
119 // -------------------------------------------------------------------------
120
121 class HTMLMetaElementImpl : public HTMLElementImpl
122 {
123 public:
124     HTMLMetaElementImpl(DocumentPtr *doc);
125
126     ~HTMLMetaElementImpl();
127
128     virtual Id id() const;
129     virtual void parseHTMLAttribute(HTMLAttributeImpl *attr);
130     virtual void insertedIntoDocument();
131
132     void process();
133
134 protected:
135     DOMString m_equiv;
136     DOMString m_content;
137 };
138
139 // -------------------------------------------------------------------------
140
141 class HTMLScriptElementImpl : public HTMLElementImpl, public khtml::CachedObjectClient
142 {
143 public:
144     HTMLScriptElementImpl(DocumentPtr *doc);
145     ~HTMLScriptElementImpl();
146     
147     virtual void insertedIntoDocument();
148     virtual void removedFromDocument();
149     virtual void notifyFinished(khtml::CachedObject *finishedObj);
150
151     virtual Id id() const;
152     virtual bool isURLAttribute(AttributeImpl *attr) const;
153
154     void setCreatedByParser(bool createdByParser) { m_createdByParser = createdByParser; }
155
156 private:
157     khtml::CachedScript *m_cachedScript;
158     bool m_createdByParser;
159 };
160
161 // -------------------------------------------------------------------------
162
163 class HTMLStyleElementImpl : public HTMLElementImpl
164 {
165 public:
166     HTMLStyleElementImpl(DocumentPtr *doc);
167     ~HTMLStyleElementImpl();
168
169     virtual Id id() const;
170
171     StyleSheetImpl *sheet() const { return m_sheet; }
172
173     // overload from HTMLElementImpl
174     virtual void parseHTMLAttribute(HTMLAttributeImpl *attr);
175     virtual void insertedIntoDocument();
176     virtual void removedFromDocument();
177     virtual void childrenChanged();
178
179     bool isLoading() const;
180     void sheetLoaded();
181
182 protected:
183     CSSStyleSheetImpl *m_sheet;
184     bool m_loading;
185     DOMString m_type;
186     QString m_media;
187 };
188
189 // -------------------------------------------------------------------------
190
191 class HTMLTitleElementImpl : public HTMLElementImpl
192 {
193 public:
194     HTMLTitleElementImpl(DocumentPtr *doc);
195
196     ~HTMLTitleElementImpl();
197
198     virtual Id id() const;
199
200     virtual void insertedIntoDocument();
201     virtual void removedFromDocument();
202     virtual void childrenChanged();
203
204 protected:
205     DOMString m_title;
206 };
207
208 }; //namespace
209
210 #endif