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