15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de)
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    Copyright (C) 2001 Dirk Mueller <mueller@kde.org>
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    This library is free software; you can redistribute it and/or
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    modify it under the terms of the GNU Library General Public
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    License as published by the Free Software Foundation; either
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    version 2 of the License, or (at your option) any later version.
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    This library is distributed in the hope that it will be useful,
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    but WITHOUT ANY WARRANTY; without even the implied warranty of
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    Library General Public License for more details.
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    You should have received a copy of the GNU Library General Public License
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    along with this library; see the file COPYING.LIB.  If not, write to
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    Boston, MA 02110-1301, USA.
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    This class provides all functionality needed for loading images, style sheets and html
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    pages from the web. It has a memory cache for these objects.
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)*/
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26e6d4491e48613634a83c1957c72759da80987961Ben Murdoch#ifndef CSSStyleSheetResource_h
27e6d4491e48613634a83c1957c72759da80987961Ben Murdoch#define CSSStyleSheetResource_h
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch#include "core/loader/cache/Resource.h"
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace WebCore {
325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33e6d4491e48613634a83c1957c72759da80987961Ben Murdochclass ResourceClient;
34e6d4491e48613634a83c1957c72759da80987961Ben Murdochclass StyleSheetContents;
35e6d4491e48613634a83c1957c72759da80987961Ben Murdochclass TextResourceDecoder;
36e6d4491e48613634a83c1957c72759da80987961Ben Murdochstruct CSSParserContext;
375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38e6d4491e48613634a83c1957c72759da80987961Ben Murdochclass CSSStyleSheetResource : public Resource {
39e6d4491e48613634a83c1957c72759da80987961Ben Murdochpublic:
40e6d4491e48613634a83c1957c72759da80987961Ben Murdoch    CSSStyleSheetResource(const ResourceRequest&, const String& charset);
41e6d4491e48613634a83c1957c72759da80987961Ben Murdoch    virtual ~CSSStyleSheetResource();
425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43e6d4491e48613634a83c1957c72759da80987961Ben Murdoch    const String sheetText(bool enforceMIMEType = true, bool* hasValidMIMEType = 0) const;
445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45e6d4491e48613634a83c1957c72759da80987961Ben Murdoch    virtual void didAddClient(ResourceClient*);
46e6d4491e48613634a83c1957c72759da80987961Ben Murdoch    virtual void setEncoding(const String&);
47e6d4491e48613634a83c1957c72759da80987961Ben Murdoch    virtual String encoding() const;
48e6d4491e48613634a83c1957c72759da80987961Ben Murdoch    virtual void destroyDecodedData() OVERRIDE;
495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50e6d4491e48613634a83c1957c72759da80987961Ben Murdoch    PassRefPtr<StyleSheetContents> restoreParsedStyleSheet(const CSSParserContext&);
51e6d4491e48613634a83c1957c72759da80987961Ben Murdoch    void saveParsedStyleSheet(PassRefPtr<StyleSheetContents>);
52e6d4491e48613634a83c1957c72759da80987961Ben Murdoch
53e6d4491e48613634a83c1957c72759da80987961Ben Murdochprivate:
54e6d4491e48613634a83c1957c72759da80987961Ben Murdoch    bool canUseSheet(bool enforceMIMEType, bool* hasValidMIMEType) const;
55e6d4491e48613634a83c1957c72759da80987961Ben Murdoch
56e6d4491e48613634a83c1957c72759da80987961Ben Murdochprotected:
57e6d4491e48613634a83c1957c72759da80987961Ben Murdoch    virtual void checkNotify();
58e6d4491e48613634a83c1957c72759da80987961Ben Murdoch
59e6d4491e48613634a83c1957c72759da80987961Ben Murdoch    RefPtr<TextResourceDecoder> m_decoder;
60e6d4491e48613634a83c1957c72759da80987961Ben Murdoch    String m_decodedSheetText;
61e6d4491e48613634a83c1957c72759da80987961Ben Murdoch
62e6d4491e48613634a83c1957c72759da80987961Ben Murdoch    RefPtr<StyleSheetContents> m_parsedStyleSheetCache;
63e6d4491e48613634a83c1957c72759da80987961Ben Murdoch};
645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif
68