Changeset 39725 in webkit
- Timestamp:
- Jan 8, 2009, 3:44:59 PM (18 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 6 edited
-
ChangeLog (modified) (1 diff)
-
loader/Cache.cpp (modified) (2 diffs)
-
loader/DocLoader.cpp (modified) (5 diffs)
-
loader/DocLoader.h (modified) (3 diffs)
-
loader/DocumentLoader.cpp (modified) (1 diff)
-
loader/ImageLoader.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r39719 r39725 1 2009-01-08 Antti Koivisto <antti@apple.com> 2 3 Reviewed by Oliver Hunt. 4 5 Fix <rdar://problem/6467206> 6 Resources loaded from the memory cache do not get correctly inserted into the DocLoader resource map (22994) 7 8 Use CachedResourceHandle in document resource map so resources get updated correctly when using 9 using cache validation conditionals. 10 11 * loader/Cache.cpp: 12 (WebCore::Cache::evict): 13 * loader/DocLoader.cpp: 14 (WebCore::DocLoader::~DocLoader): 15 (WebCore::DocLoader::requestResource): 16 (WebCore::DocLoader::setAutoLoadImages): 17 (WebCore::DocLoader::removeCachedResource): 18 * loader/DocLoader.h: 19 (WebCore::DocLoader::cachedResource): 20 (WebCore::DocLoader::allCachedResources): 21 * loader/DocumentLoader.cpp: 22 (WebCore::DocumentLoader::getSubresources): 23 * loader/ImageLoader.cpp: 24 (WebCore::ImageLoader::updateFromElement): 25 1 26 2009-01-08 Dimitri Glazkov <dglazkov@chromium.org> 2 27 -
trunk/WebCore/loader/Cache.cpp
r39228 r39725 398 398 // who needed a fresh copy for a reload. See <http://bugs.webkit.org/show_bug.cgi?id=12479#c6>. 399 399 if (resource->inCache()) { 400 if (!resource->isCacheValidator()) { 401 // Notify all doc loaders that might be observing this object still that it has been 402 // extracted from the set of resources. 403 // No need to do this for cache validator resources, they are replaced automatically by using CachedResourceHandles. 404 HashSet<DocLoader*>::iterator end = m_docLoaders.end(); 405 for (HashSet<DocLoader*>::iterator itr = m_docLoaders.begin(); itr != end; ++itr) 406 (*itr)->removeCachedResource(resource); 407 } 408 400 409 // Remove from the resource map. 401 410 m_resources.remove(resource->url()); … … 405 414 removeFromLRUList(resource); 406 415 removeFromLiveDecodedResourcesList(resource); 407 408 // Notify all doc loaders that might be observing this object still that it has been409 // extracted from the set of resources.410 HashSet<DocLoader*>::iterator end = m_docLoaders.end();411 for (HashSet<DocLoader*>::iterator itr = m_docLoaders.begin(); itr != end; ++itr)412 (*itr)->removeCachedResource(resource);413 416 414 417 // Subtract from our size totals. -
trunk/WebCore/loader/DocLoader.cpp
r39304 r39725 61 61 { 62 62 clearPreloads(); 63 HashMap<String, CachedResource*>::iterator end = m_docResources.end();64 for ( HashMap<String, CachedResource*>::iterator it = m_docResources.begin(); it != end; ++it)63 DocumentResourceMap::iterator end = m_documentResources.end(); 64 for (DocumentResourceMap::iterator it = m_documentResources.begin(); it != end; ++it) 65 65 it->second->setDocLoader(0); 66 66 m_cache->removeDocLoader(this); … … 196 196 197 197 if (cache()->disabled()) { 198 HashMap<String, CachedResource*>::iterator it = m_docResources.find(fullURL.string());198 DocumentResourceMap::iterator it = m_documentResources.find(fullURL.string()); 199 199 200 if (it != m_doc Resources.end()) {200 if (it != m_documentResources.end()) { 201 201 it->second->setDocLoader(0); 202 m_doc Resources.remove(it);202 m_documentResources.remove(it); 203 203 } 204 204 } … … 213 213 return 0; 214 214 215 m_doc Resources.set(resource->url(), resource);215 m_documentResources.set(resource->url(), resource); 216 216 checkCacheObjectStatus(resource); 217 217 } … … 253 253 return; 254 254 255 HashMap<String, CachedResource*>::iterator end = m_docResources.end();256 for ( HashMap<String, CachedResource*>::iterator it = m_docResources.begin(); it != end; ++it) {257 CachedResource* resource = it->second ;255 DocumentResourceMap::iterator end = m_documentResources.end(); 256 for (DocumentResourceMap::iterator it = m_documentResources.begin(); it != end; ++it) { 257 CachedResource* resource = it->second.get(); 258 258 if (resource->type() == CachedResource::ImageResource) { 259 259 CachedImage* image = const_cast<CachedImage*>(static_cast<const CachedImage*>(resource)); … … 272 272 void DocLoader::removeCachedResource(CachedResource* resource) const 273 273 { 274 m_doc Resources.remove(resource->url());274 m_documentResources.remove(resource->url()); 275 275 } 276 276 -
trunk/WebCore/loader/DocLoader.h
r39304 r39725 27 27 28 28 #include "CachedResource.h" 29 #include "CachedResourceHandle.h" 29 30 #include "CachePolicy.h" 30 31 #include "StringHash.h" … … 71 72 void printAccessDeniedMessage(const KURL& url) const; 72 73 73 CachedResource* cachedResource(const String& url) const { return m_docResources.get(url); } 74 const HashMap<String, CachedResource*>& allCachedResources() const { return m_docResources; } 74 CachedResource* cachedResource(const String& url) const { return m_documentResources.get(url).get(); } 75 76 typedef HashMap<String, CachedResourceHandle<CachedResource> > DocumentResourceMap; 77 const DocumentResourceMap& allCachedResources() const { return m_documentResources; } 75 78 76 79 bool autoLoadImages() const { return m_autoLoadImages; } … … 112 115 Cache* m_cache; 113 116 HashSet<String> m_reloadedURLs; 114 mutable HashMap<String, CachedResource*> m_docResources;117 mutable DocumentResourceMap m_documentResources; 115 118 Document* m_doc; 116 119 -
trunk/WebCore/loader/DocumentLoader.cpp
r39548 r39725 565 565 return; 566 566 567 const HashMap<String, CachedResource*>& allResources = document->docLoader()->allCachedResources();568 HashMap<String, CachedResource*>::const_iterator end = allResources.end();569 for ( HashMap<String, CachedResource*>::const_iterator it = allResources.begin(); it != end; ++it) {567 const DocLoader::DocumentResourceMap& allResources = document->docLoader()->allCachedResources(); 568 DocLoader::DocumentResourceMap::const_iterator end = allResources.end(); 569 for (DocLoader::DocumentResourceMap::const_iterator it = allResources.begin(); it != end; ++it) { 570 570 RefPtr<ArchiveResource> subresource = this->subresource(KURL(it->second->url())); 571 571 if (subresource) -
trunk/WebCore/loader/ImageLoader.cpp
r39601 r39725 102 102 newImage->setLoading(true); 103 103 newImage->setDocLoader(doc->docLoader()); 104 doc->docLoader()->m_doc Resources.set(newImage->url(), newImage);104 doc->docLoader()->m_documentResources.set(newImage->url(), newImage); 105 105 } else 106 106 newImage = doc->docLoader()->requestImage(sourceURI(attr));
Note:
See TracChangeset
for help on using the changeset viewer.