diff -r 000000000000 -r 4f2f89ce4247 WebCore/loader/DocLoader.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebCore/loader/DocLoader.h Fri Sep 17 09:02:29 2010 +0300 @@ -0,0 +1,138 @@ +/* + Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) + Copyright (C) 2001 Dirk Mueller + Copyright (C) 2004, 2005, 2006 Apple Computer, Inc. + Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/ + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + This class provides all functionality needed for loading images, style sheets and html + pages from the web. It has a memory cache for these objects. +*/ + +#ifndef DocLoader_h +#define DocLoader_h + +#include "CachedResource.h" +#include "CachedResourceHandle.h" +#include "CachePolicy.h" +#include "StringHash.h" +#include +#include +#include + +namespace WebCore { + +class CachedCSSStyleSheet; +class CachedFont; +class CachedImage; +class CachedScript; +class CachedXSLStyleSheet; +class Document; +class Frame; +class ImageLoader; +class KURL; + +// The DocLoader manages the loading of scripts/images/stylesheets for a single document. +class DocLoader : public Noncopyable { +friend class Cache; +friend class ImageLoader; + +public: + DocLoader(Document*); + ~DocLoader(); + + CachedImage* requestImage(const String& url); + CachedCSSStyleSheet* requestCSSStyleSheet(const String& url, const String& charset); + CachedCSSStyleSheet* requestUserCSSStyleSheet(const String& url, const String& charset); + CachedScript* requestScript(const String& url, const String& charset); + CachedFont* requestFont(const String& url); + +#if ENABLE(XSLT) + CachedXSLStyleSheet* requestXSLStyleSheet(const String& url); +#endif +#if ENABLE(XBL) + CachedXBLDocument* requestXBLDocument(const String &url); +#endif +#if ENABLE(LINK_PREFETCH) + CachedResource* requestLinkPrefetch(const String &url); +#endif + + // Logs an access denied message to the console for the specified URL. + void printAccessDeniedMessage(const KURL& url) const; + + CachedResource* cachedResource(const String& url) const { return m_documentResources.get(url).get(); } + + typedef HashMap > DocumentResourceMap; + const DocumentResourceMap& allCachedResources() const { return m_documentResources; } + + bool autoLoadImages() const { return m_autoLoadImages; } + void setAutoLoadImages(bool); + + CachePolicy cachePolicy() const; + + Frame* frame() const; // Can be NULL + Document* doc() const { return m_doc; } + + void removeCachedResource(CachedResource*) const; + + void setLoadInProgress(bool); + bool loadInProgress() const { return m_loadInProgress; } + + void setAllowStaleResources(bool allowStaleResources) { m_allowStaleResources = allowStaleResources; } + + void incrementRequestCount(const CachedResource*); + void decrementRequestCount(const CachedResource*); + int requestCount(); + + void clearPreloads(); + void clearPendingPreloads(); + void preload(CachedResource::Type, const String& url, const String& charset, bool referencedFromBody); + void checkForPendingPreloads(); + void printPreloadStats(); + +private: + CachedResource* requestResource(CachedResource::Type, const String& url, const String& charset, bool isPreload = false); + void requestPreload(CachedResource::Type, const String& url, const String& charset); + + void checkForReload(const KURL&); + void checkCacheObjectStatus(CachedResource*); + bool canRequest(CachedResource::Type, const KURL&); + + Cache* m_cache; + HashSet m_reloadedURLs; + mutable DocumentResourceMap m_documentResources; + Document* m_doc; + + int m_requestCount; + + OwnPtr > m_preloads; + struct PendingPreload { + CachedResource::Type m_type; + String m_url; + String m_charset; + }; + Vector m_pendingPreloads; + + //29 bits left + bool m_autoLoadImages : 1; + bool m_loadInProgress : 1; + bool m_allowStaleResources : 1; +}; + +} + +#endif