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