1/*
2    Copyright (C) 2010 Rob Buis <rwlbuis@gmail.com>
3    Copyright (C) 2011 Cosmin Truta <ctruta@gmail.com>
4    Copyright (C) 2012 University of Szeged
5    Copyright (C) 2012 Renata Hodovan <reni@webkit.org>
6
7    This library is free software; you can redistribute it and/or
8    modify it under the terms of the GNU Library General Public
9    License as published by the Free Software Foundation; either
10    version 2 of the License, or (at your option) any later version.
11
12    This library is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15    Library General Public License for more details.
16
17    You should have received a copy of the GNU Library General Public License
18    along with this library; see the file COPYING.LIB.  If not, write to
19    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20    Boston, MA 02110-1301, USA.
21*/
22
23#ifndef CachedSVGDocument_h
24#define CachedSVGDocument_h
25
26#include "CachedResource.h"
27#include "CachedResourceHandle.h"
28#include "SVGDocument.h"
29#include "TextResourceDecoder.h"
30
31namespace WebCore {
32
33class CachedSVGDocument final : public CachedResource {
34public:
35    explicit CachedSVGDocument(const ResourceRequest&, SessionID);
36    virtual ~CachedSVGDocument();
37
38    SVGDocument* document() const { return m_document.get(); }
39
40protected:
41    RefPtr<SVGDocument> m_document;
42    RefPtr<TextResourceDecoder> m_decoder;
43
44private:
45    virtual bool mayTryReplaceEncodedData() const override { return true; }
46    virtual void setEncoding(const String&) override;
47    virtual String encoding() const override;
48    virtual void finishLoading(ResourceBuffer*) override;
49};
50
51CACHED_RESOURCE_TYPE_CASTS(CachedSVGDocument, CachedResource, CachedResource::SVGDocumentResource)
52
53} // namespace WebCore
54
55#endif // CachedSVGDocument_h
56