1/*
2    Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de)
3    Copyright (C) 2001 Dirk Mueller <mueller@kde.org>
4    Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
5
6    This library is free software; you can redistribute it and/or
7    modify it under the terms of the GNU Library General Public
8    License as published by the Free Software Foundation; either
9    version 2 of the License, or (at your option) any later version.
10
11    This library is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14    Library General Public License for more details.
15
16    You should have received a copy of the GNU Library General Public License
17    along with this library; see the file COPYING.LIB.  If not, write to
18    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19    Boston, MA 02110-1301, USA.
20
21    This class provides all functionality needed for loading images, style sheets and html
22    pages from the web. It has a memory cache for these objects.
23*/
24
25#ifndef CachedResourceClient_h
26#define CachedResourceClient_h
27
28#include <wtf/FastAllocBase.h>
29#include <wtf/Forward.h>
30
31namespace WebCore {
32
33    class CachedCSSStyleSheet;
34    class CachedFont;
35    class CachedResource;
36    class CachedImage;
37    class Image;
38    class IntRect;
39    class KURL;
40
41    /**
42     * @internal
43     *
44     * a client who wants to load stylesheets, images or scripts from the web has to
45     * inherit from this class and overload one of the 3 functions
46     *
47     */
48    class CachedResourceClient {
49        WTF_MAKE_FAST_ALLOCATED;
50    public:
51        virtual ~CachedResourceClient() { }
52
53        // Called whenever a frame of an image changes, either because we got more data from the network or
54        // because we are animating. If not null, the IntRect is the changed rect of the image.
55        virtual void imageChanged(CachedImage*, const IntRect* = 0) { };
56
57        // Called to find out if this client wants to actually display the image.  Used to tell when we
58        // can halt animation.  Content nodes that hold image refs for example would not render the image,
59        // but RenderImages would (assuming they have visibility: visible and their render tree isn't hidden
60        // e.g., in the b/f cache or in a background tab).
61        virtual bool willRenderImage(CachedImage*) { return false; }
62
63        virtual void setCSSStyleSheet(const String& /* href */, const KURL& /* baseURL */, const String& /* charset */, const CachedCSSStyleSheet*) { }
64        virtual void setXSLStyleSheet(const String& /* href */, const KURL& /* baseURL */, const String& /* sheet */) { }
65        virtual void fontLoaded(CachedFont*) {};
66        virtual void notifyFinished(CachedResource*) { }
67    };
68
69}
70
71#endif
72