Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Side by Side Diff: trunk/Source/core/loader/cache/CachedResourceLoader.h

Issue 19683007: Revert 154452 "Refactoring: Introduce ResouceLoaderHost interfac..." (Closed) Base URL: svn://svn.chromium.org/blink/
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de)
3 Copyright (C) 2001 Dirk Mueller <mueller@kde.org> 3 Copyright (C) 2001 Dirk Mueller <mueller@kde.org>
4 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. 4 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
5 Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/ 5 Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/
6 6
7 This library is free software; you can redistribute it and/or 7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Library General Public 8 modify it under the terms of the GNU Library General Public
9 License as published by the Free Software Foundation; either 9 License as published by the Free Software Foundation; either
10 version 2 of the License, or (at your option) any later version. 10 version 2 of the License, or (at your option) any later version.
11 11
12 This library is distributed in the hope that it will be useful, 12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Library General Public License for more details. 15 Library General Public License for more details.
16 16
17 You should have received a copy of the GNU Library General Public License 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 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, 19 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 Boston, MA 02110-1301, USA. 20 Boston, MA 02110-1301, USA.
21 21
22 This class provides all functionality needed for loading images, style sheet s and html 22 This class provides all functionality needed for loading images, style sheet s and html
23 pages from the web. It has a memory cache for these objects. 23 pages from the web. It has a memory cache for these objects.
24 */ 24 */
25 25
26 #ifndef CachedResourceLoader_h 26 #ifndef CachedResourceLoader_h
27 #define CachedResourceLoader_h 27 #define CachedResourceLoader_h
28 28
29 #include "core/loader/ResourceLoaderHost.h"
30 #include "core/loader/cache/CachePolicy.h" 29 #include "core/loader/cache/CachePolicy.h"
31 #include "core/loader/cache/CachedResource.h" 30 #include "core/loader/cache/CachedResource.h"
32 #include "core/loader/cache/CachedResourceHandle.h" 31 #include "core/loader/cache/CachedResourceHandle.h"
33 #include "core/loader/cache/CachedResourceInitiatorInfo.h" 32 #include "core/loader/cache/CachedResourceInitiatorInfo.h"
34 #include "core/loader/cache/CachedResourceRequest.h" 33 #include "core/loader/cache/CachedResourceRequest.h"
35 #include "core/platform/Timer.h" 34 #include "core/platform/Timer.h"
36 #include "wtf/Deque.h" 35 #include "wtf/Deque.h"
37 #include "wtf/HashMap.h" 36 #include "wtf/HashMap.h"
38 #include "wtf/HashSet.h" 37 #include "wtf/HashSet.h"
39 #include "wtf/ListHashSet.h" 38 #include "wtf/ListHashSet.h"
40 #include "wtf/text/StringHash.h" 39 #include "wtf/text/StringHash.h"
41 40
42 namespace WebCore { 41 namespace WebCore {
43 42
44 class CachedCSSStyleSheet; 43 class CachedCSSStyleSheet;
45 class CachedDocument; 44 class CachedDocument;
46 class CachedFont; 45 class CachedFont;
47 class CachedImage; 46 class CachedImage;
48 class CachedRawResource; 47 class CachedRawResource;
49 class CachedScript; 48 class CachedScript;
50 class CachedShader; 49 class CachedShader;
51 class CachedTextTrack; 50 class CachedTextTrack;
52 class CachedXSLStyleSheet; 51 class CachedXSLStyleSheet;
53 class Document; 52 class Document;
54 class DocumentLoader; 53 class DocumentLoader;
55 class Frame; 54 class Frame;
56 class FrameLoader;
57 class ImageLoader; 55 class ImageLoader;
58 class KURL; 56 class KURL;
59 57
60 // The CachedResourceLoader provides a per-context interface to the MemoryCache 58 // The CachedResourceLoader provides a per-context interface to the MemoryCache
61 // and enforces a bunch of security checks and rules for resource revalidation. 59 // and enforces a bunch of security checks and rules for resource revalidation.
62 // Its lifetime is roughly per-DocumentLoader, in that it is generally created 60 // Its lifetime is roughly per-DocumentLoader, in that it is generally created
63 // in the DocumentLoader constructor and loses its ability to generate network 61 // in the DocumentLoader constructor and loses its ability to generate network
64 // requests when the DocumentLoader is destroyed. Documents also hold a 62 // requests when the DocumentLoader is destroyed. Documents also hold a
65 // RefPtr<CachedResourceLoader> for their lifetime (and will create one if they 63 // RefPtr<CachedResourceLoader> for their lifetime (and will create one if they
66 // are initialized without a Frame), so a Document can keep a CachedResourceLoad er 64 // are initialized without a Frame), so a Document can keep a CachedResourceLoad er
67 // alive past detach if scripts still reference the Document. 65 // alive past detach if scripts still reference the Document.
68 class CachedResourceLoader : public RefCounted<CachedResourceLoader>, public Res ourceLoaderHost { 66 class CachedResourceLoader : public RefCounted<CachedResourceLoader> {
69 WTF_MAKE_NONCOPYABLE(CachedResourceLoader); WTF_MAKE_FAST_ALLOCATED; 67 WTF_MAKE_NONCOPYABLE(CachedResourceLoader); WTF_MAKE_FAST_ALLOCATED;
70 friend class ImageLoader; 68 friend class ImageLoader;
71 friend class ResourceCacheValidationSuppressor; 69 friend class ResourceCacheValidationSuppressor;
72 70
73 public: 71 public:
74 static PassRefPtr<CachedResourceLoader> create(DocumentLoader* documentLoade r) { return adoptRef(new CachedResourceLoader(documentLoader)); } 72 static PassRefPtr<CachedResourceLoader> create(DocumentLoader* documentLoade r) { return adoptRef(new CachedResourceLoader(documentLoader)); }
75 ~CachedResourceLoader(); 73 ~CachedResourceLoader();
76 74
77 using RefCounted<CachedResourceLoader>::ref;
78 using RefCounted<CachedResourceLoader>::deref;
79
80 CachedResourceHandle<CachedImage> requestImage(CachedResourceRequest&); 75 CachedResourceHandle<CachedImage> requestImage(CachedResourceRequest&);
81 CachedResourceHandle<CachedCSSStyleSheet> requestCSSStyleSheet(CachedResourc eRequest&); 76 CachedResourceHandle<CachedCSSStyleSheet> requestCSSStyleSheet(CachedResourc eRequest&);
82 CachedResourceHandle<CachedCSSStyleSheet> requestUserCSSStyleSheet(CachedRes ourceRequest&); 77 CachedResourceHandle<CachedCSSStyleSheet> requestUserCSSStyleSheet(CachedRes ourceRequest&);
83 CachedResourceHandle<CachedScript> requestScript(CachedResourceRequest&); 78 CachedResourceHandle<CachedScript> requestScript(CachedResourceRequest&);
84 CachedResourceHandle<CachedFont> requestFont(CachedResourceRequest&); 79 CachedResourceHandle<CachedFont> requestFont(CachedResourceRequest&);
85 CachedResourceHandle<CachedRawResource> requestRawResource(CachedResourceReq uest&); 80 CachedResourceHandle<CachedRawResource> requestRawResource(CachedResourceReq uest&);
86 CachedResourceHandle<CachedRawResource> requestMainResource(CachedResourceRe quest&); 81 CachedResourceHandle<CachedRawResource> requestMainResource(CachedResourceRe quest&);
87 CachedResourceHandle<CachedDocument> requestSVGDocument(CachedResourceReques t&); 82 CachedResourceHandle<CachedDocument> requestSVGDocument(CachedResourceReques t&);
88 CachedResourceHandle<CachedXSLStyleSheet> requestXSLStyleSheet(CachedResourc eRequest&); 83 CachedResourceHandle<CachedXSLStyleSheet> requestXSLStyleSheet(CachedResourc eRequest&);
89 CachedResourceHandle<CachedResource> requestLinkResource(CachedResource::Typ e, CachedResourceRequest&); 84 CachedResourceHandle<CachedResource> requestLinkResource(CachedResource::Typ e, CachedResourceRequest&);
(...skipping 18 matching lines...) Expand all
108 103
109 CachePolicy cachePolicy(CachedResource::Type) const; 104 CachePolicy cachePolicy(CachedResource::Type) const;
110 105
111 Frame* frame() const; // Can be null 106 Frame* frame() const; // Can be null
112 Document* document() const { return m_document; } // Can be null 107 Document* document() const { return m_document; } // Can be null
113 void setDocument(Document* document) { m_document = document; } 108 void setDocument(Document* document) { m_document = document; }
114 109
115 DocumentLoader* documentLoader() const { return m_documentLoader; } 110 DocumentLoader* documentLoader() const { return m_documentLoader; }
116 void clearDocumentLoader() { m_documentLoader = 0; } 111 void clearDocumentLoader() { m_documentLoader = 0; }
117 112
113 void loadDone(CachedResource*);
118 void garbageCollectDocumentResources(); 114 void garbageCollectDocumentResources();
119 115
116 void incrementRequestCount(const CachedResource*);
117 void decrementRequestCount(const CachedResource*);
120 int requestCount() const { return m_requestCount; } 118 int requestCount() const { return m_requestCount; }
121 119
122 bool isPreloaded(const String& urlString) const; 120 bool isPreloaded(const String& urlString) const;
123 void clearPreloads(); 121 void clearPreloads();
124 void clearPendingPreloads(); 122 void clearPendingPreloads();
125 void preload(CachedResource::Type, CachedResourceRequest&, const String& cha rset); 123 void preload(CachedResource::Type, CachedResourceRequest&, const String& cha rset);
126 void checkForPendingPreloads(); 124 void checkForPendingPreloads();
127 void printPreloadStats(); 125 void printPreloadStats();
128 bool canRequest(CachedResource::Type, const KURL&, const ResourceLoaderOptio ns&, bool forPreload = false); 126 bool canRequest(CachedResource::Type, const KURL&, const ResourceLoaderOptio ns&, bool forPreload = false);
129 bool canAccess(CachedResource*); 127 bool canAccess(CachedResource*);
130 128
131 // ResourceLoaderHost 129 static const ResourceLoaderOptions& defaultCachedResourceOptions();
132 virtual void incrementRequestCount(const CachedResource*) OVERRIDE;
133 virtual void decrementRequestCount(const CachedResource*) OVERRIDE;
134 virtual void didLoadResource(CachedResource*) OVERRIDE;
135 virtual void didFinishLoading(const CachedResource*, double finishTime, cons t ResourceLoaderOptions&) OVERRIDE;
136 virtual void didChangeLoadingPriority(const CachedResource*, ResourceLoadPri ority) OVERRIDE;
137 virtual void didFailLoading(const CachedResource*, const ResourceError&, con st ResourceLoaderOptions&) OVERRIDE;
138 virtual void willSendRequest(const CachedResource*, ResourceRequest&, const ResourceResponse& redirectResponse, const ResourceLoaderOptions&) OVERRIDE;
139 virtual void didReceiveResponse(const CachedResource*, const ResourceRespons e&, const ResourceLoaderOptions&) OVERRIDE;
140 virtual void didReceiveData(const CachedResource*, const char* data, int dat aLength, int encodedDataLength, const ResourceLoaderOptions&) OVERRIDE;
141 virtual void subresourceLoaderFinishedLoadingOnePart(ResourceLoader*) OVERRI DE;
142 virtual void didInitializeResourceLoader(ResourceLoader*) OVERRIDE;
143 virtual void willTerminateResourceLoader(ResourceLoader*) OVERRIDE;
144 virtual void willStartLoadingResource(ResourceRequest&) OVERRIDE;
145 virtual bool defersLoading() const OVERRIDE;
146 virtual bool isLoadedBy(ResourceLoaderHost*) const OVERRIDE;
147 virtual bool shouldRequest(CachedResource*, const ResourceRequest&, const Re sourceLoaderOptions&) OVERRIDE;
148 virtual void refResourceLoaderHost() OVERRIDE;
149 virtual void derefResourceLoaderHost() OVERRIDE;
150 virtual Frame* inspectedFrame() const OVERRIDE;
151 130
152 static const ResourceLoaderOptions& defaultCachedResourceOptions();
153 private: 131 private:
154
155 explicit CachedResourceLoader(DocumentLoader*); 132 explicit CachedResourceLoader(DocumentLoader*);
156 133
157 FrameLoader* frameLoader();
158
159 CachedResourceHandle<CachedResource> requestResource(CachedResource::Type, C achedResourceRequest&); 134 CachedResourceHandle<CachedResource> requestResource(CachedResource::Type, C achedResourceRequest&);
160 CachedResourceHandle<CachedResource> revalidateResource(const CachedResource Request&, CachedResource*); 135 CachedResourceHandle<CachedResource> revalidateResource(const CachedResource Request&, CachedResource*);
161 CachedResourceHandle<CachedResource> loadResource(CachedResource::Type, Cach edResourceRequest&, const String& charset); 136 CachedResourceHandle<CachedResource> loadResource(CachedResource::Type, Cach edResourceRequest&, const String& charset);
162 void preCacheDataURIImage(const CachedResourceRequest&); 137 void preCacheDataURIImage(const CachedResourceRequest&);
163 void storeResourceTimingInitiatorInformation(const CachedResourceHandle<Cach edResource>&, const CachedResourceRequest&); 138 void storeResourceTimingInitiatorInformation(const CachedResourceHandle<Cach edResource>&, const CachedResourceRequest&);
164 void requestPreload(CachedResource::Type, CachedResourceRequest&, const Stri ng& charset); 139 void requestPreload(CachedResource::Type, CachedResourceRequest&, const Stri ng& charset);
165 140
166 enum RevalidationPolicy { Use, Revalidate, Reload, Load }; 141 enum RevalidationPolicy { Use, Revalidate, Reload, Load };
167 RevalidationPolicy determineRevalidationPolicy(CachedResource::Type, Resourc eRequest&, bool forPreload, CachedResource* existingResource, CachedResourceRequ est::DeferOption) const; 142 RevalidationPolicy determineRevalidationPolicy(CachedResource::Type, Resourc eRequest&, bool forPreload, CachedResource* existingResource, CachedResourceRequ est::DeferOption) const;
168 143
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 m_loader->m_allowStaleResources = m_previousState; 198 m_loader->m_allowStaleResources = m_previousState;
224 } 199 }
225 private: 200 private:
226 CachedResourceLoader* m_loader; 201 CachedResourceLoader* m_loader;
227 bool m_previousState; 202 bool m_previousState;
228 }; 203 };
229 204
230 } // namespace WebCore 205 } // namespace WebCore
231 206
232 #endif 207 #endif
OLDNEW
« no previous file with comments | « trunk/Source/core/loader/cache/CachedResource.cpp ('k') | trunk/Source/core/loader/cache/CachedResourceLoader.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698