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>
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.
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.
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.
23 #ifndef DocumentResource_h
24 #define DocumentResource_h
26 #include "core/fetch/Resource.h"
27 #include "core/fetch/ResourceClient.h"
28 #include "core/fetch/ResourcePtr.h"
29 #include "core/html/parser/TextResourceDecoder.h"
35 class ResourceFetcher
;
37 class DocumentResource final
: public Resource
{
39 typedef ResourceClient ClientType
;
41 static ResourcePtr
<DocumentResource
> fetchSVGDocument(FetchRequest
&, ResourceFetcher
*);
42 ~DocumentResource() override
;
43 DECLARE_VIRTUAL_TRACE();
45 Document
* document() const { return m_document
.get(); }
47 void setEncoding(const String
&) override
;
48 String
encoding() const override
;
49 void checkNotify() override
;
52 class SVGDocumentResourceFactory
: public ResourceFactory
{
54 SVGDocumentResourceFactory()
55 : ResourceFactory(Resource::SVGDocument
) { }
57 Resource
* create(const ResourceRequest
& request
, const String
& charset
) const override
59 return new DocumentResource(request
, Resource::SVGDocument
);
62 DocumentResource(const ResourceRequest
&, Type
);
64 PassRefPtrWillBeRawPtr
<Document
> createDocument(const KURL
&);
66 RefPtrWillBeMember
<Document
> m_document
;
67 OwnPtr
<TextResourceDecoder
> m_decoder
;
70 DEFINE_TYPE_CASTS(DocumentResource
, Resource
, resource
, resource
->type() == Resource::SVGDocument
, resource
.type() == Resource::SVGDocument
); \
71 inline DocumentResource
* toDocumentResource(const ResourcePtr
<Resource
>& ptr
) { return toDocumentResource(ptr
.get()); }
73 class DocumentResourceClient
: public ResourceClient
{
75 ~DocumentResourceClient() override
{}
76 static ResourceClientType
expectedType() { return DocumentType
; }
77 ResourceClientType
resourceClientType() const override
{ return expectedType(); }
82 #endif // DocumentResource_h