Changeset 119918 in webkit
- Timestamp:
- Jun 9, 2012 4:03:25 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 4 deleted
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r119917 r119918 1 2012-06-09 Sheriff Bot <webkit.review.bot@gmail.com> 2 3 Unreviewed, rolling out r118618 and r119353. 4 http://trac.webkit.org/changeset/118618 5 http://trac.webkit.org/changeset/119353 6 https://bugs.webkit.org/show_bug.cgi?id=88720 7 8 Caused at least 30 different crashes on ClusterFuzz (Requested 9 by inferno-sec on #webkit). 10 11 * http/tests/cache/cancel-in-progress-load-expected.txt: Removed. 12 * http/tests/cache/cancel-in-progress-load.html: Removed. 13 * http/tests/misc/write-while-waiting.html: 14 * svg/as-image/svg-image-leak-cached-data-expected.txt: Removed. 15 * svg/as-image/svg-image-leak-cached-data.html: Removed. 16 1 17 2012-06-09 Ryosuke Niwa <rniwa@webkit.org> 2 18 -
trunk/LayoutTests/http/tests/misc/write-while-waiting.html
r118618 r119918 3 3 FAIL 4 4 <script> 5 if (window.layoutTestController) {5 if (window.layoutTestController) 6 6 layoutTestController.dumpAsText(); 7 layoutTestController.waitUntilDone();8 }9 7 10 setTimeout("document.write('PASS');document.close(); if (window.layoutTestController) layoutTestController.notifyDone();", 100);8 setTimeout("document.write('PASS');document.close();", 100); 11 9 </script> 12 10 <script src="resources/script-slow1.pl"></script> -
trunk/Source/WebCore/ChangeLog
r119914 r119918 1 2012-06-09 Sheriff Bot <webkit.review.bot@gmail.com> 2 3 Unreviewed, rolling out r118618 and r119353. 4 http://trac.webkit.org/changeset/118618 5 http://trac.webkit.org/changeset/119353 6 https://bugs.webkit.org/show_bug.cgi?id=88720 7 8 Caused at least 30 different crashes on ClusterFuzz (Requested 9 by inferno-sec on #webkit). 10 11 * loader/SubresourceLoader.cpp: 12 (WebCore::SubresourceLoader::checkForHTTPStatusCodeError): 13 * loader/cache/CachedCSSStyleSheet.cpp: 14 (WebCore::CachedCSSStyleSheet::allClientsRemoved): 15 * loader/cache/CachedFont.cpp: 16 (WebCore::CachedFont::allClientsRemoved): 17 * loader/cache/CachedFont.h: 18 (WebCore::CachedFontClient::resourceClientType): 19 * loader/cache/CachedImage.cpp: 20 (WebCore::CachedImage::removeClientForRenderer): 21 (WebCore): 22 (WebCore::CachedImage::allClientsRemoved): 23 (WebCore::CachedImage::lookupOrCreateImageForRenderer): 24 * loader/cache/CachedImage.h: 25 (CachedImage): 26 (WebCore::CachedImageClient::resourceClientType): 27 * loader/cache/CachedRawResource.cpp: 28 (WebCore::CachedRawResource::allClientsRemoved): 29 (WebCore): 30 * loader/cache/CachedRawResource.h: 31 (CachedRawResource): 32 (WebCore::CachedRawResourceClient::resourceClientType): 33 * loader/cache/CachedResource.cpp: 34 (WebCore::CachedResource::removeClient): 35 * loader/cache/CachedResource.h: 36 (WebCore::CachedResource::allClientsRemoved): 37 * loader/cache/CachedResourceClient.h: 38 (WebCore::CachedResourceClient::resourceClientType): 39 * loader/cache/CachedSVGDocument.h: 40 (WebCore::CachedSVGDocumentClient::resourceClientType): 41 * loader/cache/CachedScript.cpp: 42 (WebCore::CachedScript::allClientsRemoved): 43 * loader/cache/CachedStyleSheetClient.h: 44 (WebCore::CachedStyleSheetClient::resourceClientType): 45 * rendering/style/StyleCachedImage.cpp: 46 (WebCore::StyleCachedImage::removeClient): 47 * rendering/style/StyleCachedImageSet.cpp: 48 (WebCore::StyleCachedImageSet::removeClient): 49 * svg/graphics/SVGImageCache.cpp: 50 (WebCore::SVGImageCache::~SVGImageCache): 51 (WebCore::SVGImageCache::removeRendererFromCache): 52 (WebCore::SVGImageCache::setRequestedSizeAndScales): 53 (WebCore::SVGImageCache::requestedSizeAndScales): 54 (WebCore::SVGImageCache::lookupOrCreateBitmapImageForRenderer): 55 * svg/graphics/SVGImageCache.h: 56 (WebCore): 57 (SVGImageCache): 58 1 59 2012-06-09 Florin Malita <fmalita@chromium.org> 2 60 -
trunk/Source/WebCore/loader/SubresourceLoader.cpp
r119759 r119918 235 235 return false; 236 236 237 m_resource->error(CachedResource::LoadError); 237 238 m_state = Finishing; 238 m_resource->error(CachedResource::LoadError);239 239 cancel(); 240 240 return true; -
trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp
r118618 r119918 67 67 if (!MemoryCache::shouldMakeResourcePurgeableOnEviction() && isSafeToMakePurgeable()) 68 68 makePurgeable(true); 69 CachedResource::allClientsRemoved();70 69 } 71 70 -
trunk/Source/WebCore/loader/cache/CachedFont.cpp
r118618 r119918 186 186 } 187 187 #endif 188 CachedResource::allClientsRemoved();189 188 } 190 189 -
trunk/Source/WebCore/loader/cache/CachedFont.h
r119353 r119918 86 86 virtual ~CachedFontClient() { } 87 87 static CachedResourceClientType expectedType() { return FontType; } 88 virtual CachedResourceClientType resourceClientType() const{ return expectedType(); }88 virtual CachedResourceClientType resourceClientType() { return expectedType(); } 89 89 virtual void fontLoaded(CachedFont*) { } 90 90 }; -
trunk/Source/WebCore/loader/cache/CachedImage.cpp
r119353 r119918 93 93 } 94 94 95 void CachedImage::removeClientForRenderer(RenderObject* renderer) 96 { 97 #if ENABLE(SVG) 98 if (m_svgImageCache) 99 m_svgImageCache->removeRendererFromCache(renderer); 100 #endif 101 removeClient(renderer); 102 } 103 95 104 void CachedImage::didAddClient(CachedResourceClient* c) 96 105 { … … 108 117 109 118 CachedResource::didAddClient(c); 110 }111 112 void CachedImage::didRemoveClient(CachedResourceClient* c)113 {114 ASSERT(c->resourceClientType() == CachedImageClient::expectedType());115 #if ENABLE(SVG)116 if (m_svgImageCache)117 m_svgImageCache->removeClientFromCache(static_cast<CachedImageClient*>(c));118 #endif119 120 CachedResource::didRemoveClient(c);121 119 } 122 120 … … 127 125 if (double interval = memoryCache()->deadDecodedDataDeletionInterval()) 128 126 m_decodedDataDeletionTimer.startOneShot(interval); 129 CachedResource::allClientsRemoved();130 127 } 131 128 … … 153 150 if (!m_image->isSVGImage()) 154 151 return m_image.get(); 155 Image* useImage = m_svgImageCache->lookupOrCreateBitmapImageFor Client(renderer);152 Image* useImage = m_svgImageCache->lookupOrCreateBitmapImageForRenderer(renderer); 156 153 if (useImage == Image::nullImage()) 157 154 return m_image.get(); -
trunk/Source/WebCore/loader/cache/CachedImage.h
r119353 r119918 68 68 void computeIntrinsicDimensions(Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio); 69 69 70 void removeClientForRenderer(RenderObject*); 70 71 virtual void didAddClient(CachedResourceClient*); 71 virtual void didRemoveClient(CachedResourceClient*); 72 72 73 73 virtual void allClientsRemoved(); 74 74 virtual void destroyDecodedData(); … … 119 119 virtual ~CachedImageClient() { } 120 120 static CachedResourceClientType expectedType() { return ImageType; } 121 virtual CachedResourceClientType resourceClientType() const{ return expectedType(); }121 virtual CachedResourceClientType resourceClientType() { return expectedType(); } 122 122 123 123 // Called whenever a frame of an image changes, either because we got more data from the network or -
trunk/Source/WebCore/loader/cache/CachedRawResource.cpp
r118618 r119918 88 88 } 89 89 90 void CachedRawResource::allClientsRemoved() 91 { 92 if (m_loader) 93 m_loader->cancelIfNotFinishing(); 94 } 95 90 96 void CachedRawResource::willSendRequest(ResourceRequest& request, const ResourceResponse& response) 91 97 { -
trunk/Source/WebCore/loader/cache/CachedRawResource.h
r119353 r119918 50 50 51 51 virtual bool shouldIgnoreHTTPStatusCodeErrors() const { return true; } 52 virtual void allClientsRemoved(); 52 53 53 54 virtual void willSendRequest(ResourceRequest&, const ResourceResponse&); … … 66 67 virtual ~CachedRawResourceClient() { } 67 68 static CachedResourceClientType expectedType() { return RawResourceType; } 68 virtual CachedResourceClientType resourceClientType() const{ return expectedType(); }69 virtual CachedResourceClientType resourceClientType() { return expectedType(); } 69 70 70 71 virtual void dataSent(CachedResource*, unsigned long long /* bytesSent */, unsigned long long /* totalBytesToBeSent */) { } -
trunk/Source/WebCore/loader/cache/CachedResource.cpp
r119353 r119918 388 388 } 389 389 390 void CachedResource::allClientsRemoved()391 {392 if (m_loader)393 m_loader->cancelIfNotFinishing();394 }395 396 390 bool CachedResource::addClientToSet(CachedResourceClient* client) 397 391 { … … 433 427 ASSERT(m_clients.contains(client)); 434 428 m_clients.remove(client); 435 didRemoveClient(client);436 429 } 437 430 -
trunk/Source/WebCore/loader/cache/CachedResource.h
r119353 r119918 127 127 128 128 virtual void didAddClient(CachedResourceClient*); 129 virtual void didRemoveClient(CachedResourceClient*) { } 130 virtual void allClientsRemoved(); 129 virtual void allClientsRemoved() { } 131 130 132 131 unsigned count() const { return m_clients.size(); } -
trunk/Source/WebCore/loader/cache/CachedResourceClient.h
r119353 r119918 51 51 52 52 static CachedResourceClientType expectedType() { return BaseResourceType; } 53 virtual CachedResourceClientType resourceClientType() const{ return expectedType(); }53 virtual CachedResourceClientType resourceClientType() { return expectedType(); } 54 54 55 55 protected: -
trunk/Source/WebCore/loader/cache/CachedSVGDocument.h
r119353 r119918 53 53 virtual ~CachedSVGDocumentClient() { } 54 54 static CachedResourceClientType expectedType() { return SVGDocumentType; } 55 virtual CachedResourceClientType resourceClientType() const{ return expectedType(); }55 virtual CachedResourceClientType resourceClientType() { return expectedType(); } 56 56 }; 57 57 -
trunk/Source/WebCore/loader/cache/CachedScript.cpp
r118618 r119918 68 68 if (double interval = memoryCache()->deadDecodedDataDeletionInterval()) 69 69 m_decodedDataDeletionTimer.startOneShot(interval); 70 CachedResource::allClientsRemoved();71 70 } 72 71 -
trunk/Source/WebCore/loader/cache/CachedStyleSheetClient.h
r119353 r119918 37 37 virtual ~CachedStyleSheetClient() { } 38 38 static CachedResourceClientType expectedType() { return StyleSheetType; } 39 virtual CachedResourceClientType resourceClientType() const{ return expectedType(); }39 virtual CachedResourceClientType resourceClientType() { return expectedType(); } 40 40 virtual void setCSSStyleSheet(const String& /* href */, const KURL& /* baseURL */, const String& /* charset */, const CachedCSSStyleSheet*) { } 41 41 virtual void setXSLStyleSheet(const String& /* href */, const KURL& /* baseURL */, const String& /* sheet */) { } -
trunk/Source/WebCore/rendering/style/StyleCachedImage.cpp
r119353 r119918 98 98 void StyleCachedImage::removeClient(RenderObject* renderer) 99 99 { 100 m_image->removeClient (renderer);100 m_image->removeClientForRenderer(renderer); 101 101 } 102 102 -
trunk/Source/WebCore/rendering/style/StyleCachedImageSet.cpp
r119353 r119918 109 109 void StyleCachedImageSet::removeClient(RenderObject* renderer) 110 110 { 111 m_bestFitImage->removeClient (renderer);111 m_bestFitImage->removeClientForRenderer(renderer); 112 112 } 113 113 -
trunk/Source/WebCore/svg/graphics/SVGImageCache.cpp
r119353 r119918 22 22 23 23 #if ENABLE(SVG) 24 #include "CachedImage.h"25 24 #include "FrameView.h" 26 25 #include "GraphicsContext.h" … … 43 42 44 43 ImageDataMap::iterator end = m_imageDataMap.end(); 45 for (ImageDataMap::iterator it = m_imageDataMap.begin(); it != end; ++it) { 46 // Checks if the client (it->first) is still valid. The client should remove itself from this 47 // cache before its end of life, otherwise the following ASSERT will crash on pure virtual 48 // function call or a general crash. 49 ASSERT(it->first->resourceClientType() == CachedImageClient::expectedType()); 44 for (ImageDataMap::iterator it = m_imageDataMap.begin(); it != end; ++it) 50 45 delete it->second.buffer; 51 }52 46 53 47 m_imageDataMap.clear(); 54 48 } 55 49 56 void SVGImageCache::remove ClientFromCache(const CachedImageClient* client)50 void SVGImageCache::removeRendererFromCache(const RenderObject* renderer) 57 51 { 58 ASSERT( client);59 m_sizeAndScalesMap.remove( client);52 ASSERT(renderer); 53 m_sizeAndScalesMap.remove(renderer); 60 54 61 ImageDataMap::iterator it = m_imageDataMap.find( client);55 ImageDataMap::iterator it = m_imageDataMap.find(renderer); 62 56 if (it == m_imageDataMap.end()) 63 57 return; … … 67 61 } 68 62 69 void SVGImageCache::setRequestedSizeAndScales(const CachedImageClient* client, const SizeAndScales& sizeAndScales)63 void SVGImageCache::setRequestedSizeAndScales(const RenderObject* renderer, const SizeAndScales& sizeAndScales) 70 64 { 71 ASSERT( client);65 ASSERT(renderer); 72 66 ASSERT(!sizeAndScales.size.isEmpty()); 73 m_sizeAndScalesMap.set( client, sizeAndScales);67 m_sizeAndScalesMap.set(renderer, sizeAndScales); 74 68 } 75 69 76 SVGImageCache::SizeAndScales SVGImageCache::requestedSizeAndScales(const CachedImageClient* client) const70 SVGImageCache::SizeAndScales SVGImageCache::requestedSizeAndScales(const RenderObject* renderer) const 77 71 { 78 ASSERT( client);79 SizeAndScalesMap::const_iterator it = m_sizeAndScalesMap.find( client);72 ASSERT(renderer); 73 SizeAndScalesMap::const_iterator it = m_sizeAndScalesMap.find(renderer); 80 74 if (it == m_sizeAndScalesMap.end()) 81 75 return SizeAndScales(); … … 129 123 } 130 124 131 Image* SVGImageCache::lookupOrCreateBitmapImageFor Client(const CachedImageClient* client)125 Image* SVGImageCache::lookupOrCreateBitmapImageForRenderer(const RenderObject* renderer) 132 126 { 133 ASSERT( client);127 ASSERT(renderer); 134 128 135 // The cache needs to know the size of the clientbefore querying an image for it.136 SizeAndScalesMap::iterator sizeIt = m_sizeAndScalesMap.find( client);129 // The cache needs to know the size of the renderer before querying an image for it. 130 SizeAndScalesMap::iterator sizeIt = m_sizeAndScalesMap.find(renderer); 137 131 if (sizeIt == m_sizeAndScalesMap.end()) 138 132 return Image::nullImage(); … … 143 137 ASSERT(!size.isEmpty()); 144 138 145 // Lookup image for clientin cache and eventually update it.146 ImageDataMap::iterator it = m_imageDataMap.find( client);139 // Lookup image for renderer in cache and eventually update it. 140 ImageDataMap::iterator it = m_imageDataMap.find(renderer); 147 141 if (it != m_imageDataMap.end()) { 148 142 ImageData& data = it->second; … … 152 146 return data.image.get(); 153 147 154 // If the image size for the clientchanged, we have to delete the buffer, remove the item from the cache and recreate it.148 // If the image size for the renderer changed, we have to delete the buffer, remove the item from the cache and recreate it. 155 149 delete data.buffer; 156 150 m_imageDataMap.remove(it); … … 171 165 ASSERT(newImagePtr); 172 166 173 m_imageDataMap.add( client, ImageData(newBuffer.leakPtr(), newImage.release(), sizeIt->second));167 m_imageDataMap.add(renderer, ImageData(newBuffer.leakPtr(), newImage.release(), sizeIt->second)); 174 168 return newImagePtr; 175 169 } -
trunk/Source/WebCore/svg/graphics/SVGImageCache.h
r119353 r119918 32 32 33 33 class CachedImage; 34 class CachedImageClient;35 34 class ImageBuffer; 35 class RenderObject; 36 36 class SVGImage; 37 37 … … 64 64 }; 65 65 66 void remove ClientFromCache(const CachedImageClient*);66 void removeRendererFromCache(const RenderObject*); 67 67 68 void setRequestedSizeAndScales(const CachedImageClient*, const SizeAndScales&);69 SizeAndScales requestedSizeAndScales(const CachedImageClient*) const;68 void setRequestedSizeAndScales(const RenderObject*, const SizeAndScales&); 69 SizeAndScales requestedSizeAndScales(const RenderObject*) const; 70 70 71 Image* lookupOrCreateBitmapImageFor Client(const CachedImageClient*);71 Image* lookupOrCreateBitmapImageForRenderer(const RenderObject*); 72 72 void imageContentChanged(); 73 73 … … 99 99 }; 100 100 101 typedef HashMap<const CachedImageClient*, SizeAndScales> SizeAndScalesMap;102 typedef HashMap<const CachedImageClient*, ImageData> ImageDataMap;101 typedef HashMap<const RenderObject*, SizeAndScales> SizeAndScalesMap; 102 typedef HashMap<const RenderObject*, ImageData> ImageDataMap; 103 103 104 104 SVGImage* m_svgImage;
Note: See TracChangeset
for help on using the changeset viewer.