#ifndef DocLoader_h
#define DocLoader_h
#include "CachedResource.h"
#include "CachePolicy.h"
#include "DeprecatedPtrList.h"
#include "DeprecatedStringList.h"
#include "Settings.h"
#include "StringHash.h"
#include <wtf/HashMap.h>
namespace WebCore {
class CachedCSSStyleSheet;
class CachedImage;
class CachedScript;
class CachedXSLStyleSheet;
class Document;
class Frame;
class HTMLImageLoader;
class KURL;
class DocLoader
{
friend class Cache;
friend class HTMLImageLoader;
public:
DocLoader(Frame*, Document*);
~DocLoader();
CachedImage* requestImage(const String& url);
CachedCSSStyleSheet* requestStyleSheet(const String& url, const DeprecatedString& charset);
CachedScript* requestScript(const String& url, const DeprecatedString& charset);
#ifdef KHTML_XSLT
CachedXSLStyleSheet* requestXSLStyleSheet(const String& url);
#endif
#ifndef KHTML_NO_XBL
CachedXBLDocument* requestXBLDocument(const String &url);
#endif
CachedResource* cachedResource(const String& url) const { return m_docResources.get(url); }
const HashMap<String, CachedResource*>& allCachedResources() const { return m_docResources; }
bool autoLoadImages() const { return m_autoLoadImages; }
void setAutoLoadImages(bool);
CachePolicy cachePolicy() const { return m_cachePolicy; }
void setCachePolicy(CachePolicy);
Frame* frame() const { return m_frame; }
Document* doc() const { return m_doc; }
void removeCachedResource(CachedResource*) const;
void setLoadInProgress(bool);
bool loadInProgress() const { return m_loadInProgress; }
private:
CachedResource* requestResource(CachedResource::Type, const String& url, const DeprecatedString* charset = 0);
void checkForReload(const KURL&);
Cache* m_cache;
HashSet<String> m_reloadedURLs;
mutable HashMap<String, CachedResource*> m_docResources;
CachePolicy m_cachePolicy;
bool m_autoLoadImages : 1;
Frame* m_frame;
Document *m_doc;
bool m_loadInProgress;
};
}
#endif