CachedCSSStyleSheet.h [plain text]
#ifndef CachedCSSStyleSheet_h
#define CachedCSSStyleSheet_h
#include "CachedResource.h"
#include <wtf/Vector.h>
namespace WebCore {
class CachedResourceClient;
class StyleSheetContents;
class TextResourceDecoder;
struct CSSParserContext;
class CachedCSSStyleSheet final : public CachedResource {
public:
CachedCSSStyleSheet(const ResourceRequest&, const String& charset, SessionID);
virtual ~CachedCSSStyleSheet();
const String sheetText(bool enforceMIMEType = true, bool* hasValidMIMEType = 0) const;
PassRefPtr<StyleSheetContents> restoreParsedStyleSheet(const CSSParserContext&);
void saveParsedStyleSheet(PassRef<StyleSheetContents>);
private:
bool canUseSheet(bool enforceMIMEType, bool* hasValidMIMEType) const;
virtual PurgePriority purgePriority() const override { return PurgeLast; }
virtual bool mayTryReplaceEncodedData() const override { return true; }
virtual void didAddClient(CachedResourceClient*) override;
virtual void setEncoding(const String&) override;
virtual String encoding() const override;
virtual void finishLoading(ResourceBuffer*) override;
virtual void destroyDecodedData() override;
protected:
virtual void checkNotify() override;
RefPtr<TextResourceDecoder> m_decoder;
String m_decodedSheetText;
RefPtr<StyleSheetContents> m_parsedStyleSheetCache;
};
CACHED_RESOURCE_TYPE_CASTS(CachedCSSStyleSheet, CachedResource, CachedResource::CSSStyleSheet)
}
#endif