Title: [119918] trunk
Revision
119918
Author
[email protected]
Date
2012-06-09 16:03:25 -0700 (Sat, 09 Jun 2012)

Log Message

Unreviewed, rolling out r118618 and r119353.
http://trac.webkit.org/changeset/118618
http://trac.webkit.org/changeset/119353
https://bugs.webkit.org/show_bug.cgi?id=88720

Caused at least 30 different crashes on ClusterFuzz (Requested
by inferno-sec on #webkit).

Patch by Sheriff Bot <[email protected]> on 2012-06-09

Source/WebCore:

* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::checkForHTTPStatusCodeError):
* loader/cache/CachedCSSStyleSheet.cpp:
(WebCore::CachedCSSStyleSheet::allClientsRemoved):
* loader/cache/CachedFont.cpp:
(WebCore::CachedFont::allClientsRemoved):
* loader/cache/CachedFont.h:
(WebCore::CachedFontClient::resourceClientType):
* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::removeClientForRenderer):
(WebCore):
(WebCore::CachedImage::allClientsRemoved):
(WebCore::CachedImage::lookupOrCreateImageForRenderer):
* loader/cache/CachedImage.h:
(CachedImage):
(WebCore::CachedImageClient::resourceClientType):
* loader/cache/CachedRawResource.cpp:
(WebCore::CachedRawResource::allClientsRemoved):
(WebCore):
* loader/cache/CachedRawResource.h:
(CachedRawResource):
(WebCore::CachedRawResourceClient::resourceClientType):
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::removeClient):
* loader/cache/CachedResource.h:
(WebCore::CachedResource::allClientsRemoved):
* loader/cache/CachedResourceClient.h:
(WebCore::CachedResourceClient::resourceClientType):
* loader/cache/CachedSVGDocument.h:
(WebCore::CachedSVGDocumentClient::resourceClientType):
* loader/cache/CachedScript.cpp:
(WebCore::CachedScript::allClientsRemoved):
* loader/cache/CachedStyleSheetClient.h:
(WebCore::CachedStyleSheetClient::resourceClientType):
* rendering/style/StyleCachedImage.cpp:
(WebCore::StyleCachedImage::removeClient):
* rendering/style/StyleCachedImageSet.cpp:
(WebCore::StyleCachedImageSet::removeClient):
* svg/graphics/SVGImageCache.cpp:
(WebCore::SVGImageCache::~SVGImageCache):
(WebCore::SVGImageCache::removeRendererFromCache):
(WebCore::SVGImageCache::setRequestedSizeAndScales):
(WebCore::SVGImageCache::requestedSizeAndScales):
(WebCore::SVGImageCache::lookupOrCreateBitmapImageForRenderer):
* svg/graphics/SVGImageCache.h:
(WebCore):
(SVGImageCache):

LayoutTests:

* http/tests/cache/cancel-in-progress-load-expected.txt: Removed.
* http/tests/cache/cancel-in-progress-load.html: Removed.
* http/tests/misc/write-while-waiting.html:
* svg/as-image/svg-image-leak-cached-data-expected.txt: Removed.
* svg/as-image/svg-image-leak-cached-data.html: Removed.

Modified Paths

Removed Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (119917 => 119918)


--- trunk/LayoutTests/ChangeLog	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/LayoutTests/ChangeLog	2012-06-09 23:03:25 UTC (rev 119918)
@@ -1,3 +1,19 @@
+2012-06-09  Sheriff Bot  <[email protected]>
+
+        Unreviewed, rolling out r118618 and r119353.
+        http://trac.webkit.org/changeset/118618
+        http://trac.webkit.org/changeset/119353
+        https://bugs.webkit.org/show_bug.cgi?id=88720
+
+        Caused at least 30 different crashes on ClusterFuzz (Requested
+        by inferno-sec on #webkit).
+
+        * http/tests/cache/cancel-in-progress-load-expected.txt: Removed.
+        * http/tests/cache/cancel-in-progress-load.html: Removed.
+        * http/tests/misc/write-while-waiting.html:
+        * svg/as-image/svg-image-leak-cached-data-expected.txt: Removed.
+        * svg/as-image/svg-image-leak-cached-data.html: Removed.
+
 2012-06-09  Ryosuke Niwa  <[email protected]>
 
         Fix Chromium test expectations after my previous commit (r119916).

Deleted: trunk/LayoutTests/http/tests/cache/cancel-in-progress-load-expected.txt (119917 => 119918)


--- trunk/LayoutTests/http/tests/cache/cancel-in-progress-load-expected.txt	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/LayoutTests/http/tests/cache/cancel-in-progress-load-expected.txt	2012-06-09 23:03:25 UTC (rev 119918)
@@ -1,6 +0,0 @@
-http://127.0.0.1:8000/cache/resources/random.cgi - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/cache/resources/random.cgi, main document URL http://127.0.0.1:8000/cache/cancel-in-progress-load.html, http method GET> redirectResponse (null)
-<unknown> - didFinishLoading
-http://127.0.0.1:8000/cache/resources/random.cgi - didReceiveResponse <NSURLResponse http://127.0.0.1:8000/cache/resources/random.cgi, http status code 200>
-<unknown> - didFailLoadingWithError: <NSError domain NSURLErrorDomain, code -999, failing URL "http://127.0.0.1:8000/navigation/resources/slow-resource.pl">
-http://127.0.0.1:8000/cache/resources/random.cgi - didFinishLoading
-

Deleted: trunk/LayoutTests/http/tests/cache/cancel-in-progress-load.html (119917 => 119918)


--- trunk/LayoutTests/http/tests/cache/cancel-in-progress-load.html	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/LayoutTests/http/tests/cache/cancel-in-progress-load.html	2012-06-09 23:03:25 UTC (rev 119918)
@@ -1,19 +0,0 @@
-<html>
-<body>
-<img id="img" _onload_="finish()"; _onerror_="finish();" src=""
-<script>
-if (window.layoutTestController) {
-    layoutTestController.dumpAsText();
-    layoutTestController.waitUntilDone();
-    layoutTestController.dumpResourceLoadCallbacks();
-}
-
-function finish() {
-     (window.layoutTestController)
-        layoutTestController.notifyDone();
-}
-
-document.getElementById("img").src = ""
-</script>
-</body>
-</html>

Modified: trunk/LayoutTests/http/tests/misc/write-while-waiting.html (119917 => 119918)


--- trunk/LayoutTests/http/tests/misc/write-while-waiting.html	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/LayoutTests/http/tests/misc/write-while-waiting.html	2012-06-09 23:03:25 UTC (rev 119918)
@@ -2,12 +2,10 @@
 <body>
 FAIL
 <script>
-if (window.layoutTestController) {
+if (window.layoutTestController)
     layoutTestController.dumpAsText();
-    layoutTestController.waitUntilDone();
-}
 
-setTimeout("document.write('PASS');document.close(); if (window.layoutTestController) layoutTestController.notifyDone();", 100);
+setTimeout("document.write('PASS');document.close();", 100);
 </script>
 <script src=""
 </body>

Deleted: trunk/LayoutTests/svg/as-image/svg-image-leak-cached-data-expected.txt (119917 => 119918)


--- trunk/LayoutTests/svg/as-image/svg-image-leak-cached-data-expected.txt	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/LayoutTests/svg/as-image/svg-image-leak-cached-data-expected.txt	2012-06-09 23:03:25 UTC (rev 119918)
@@ -1,5 +0,0 @@
-This test checks if SVGImageCache leaks SVG image data as reported in https://bugs.webkit.org/show_bug.cgi?id=87792. Its layout has no particular meaning. The test will cause crash of debug version when leaks of SVG image data is detected.
-
-Note: the code detects leaks of SVG image data on destruction of SVGImageCache, which doesn't work on platforms that DumpRenderTree leaks the cache itself.
-
-

Deleted: trunk/LayoutTests/svg/as-image/svg-image-leak-cached-data.html (119917 => 119918)


--- trunk/LayoutTests/svg/as-image/svg-image-leak-cached-data.html	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/LayoutTests/svg/as-image/svg-image-leak-cached-data.html	2012-06-09 23:03:25 UTC (rev 119918)
@@ -1,29 +0,0 @@
-<html>
-<head>
-<script>
-if (window.layoutTestController) {
-    layoutTestController.dumpAsText();
-    layoutTestController.waitUntilDone();
-}
-
-var count = 0;
-function test() {
-    var img = document.getElementById('img');
-    document.body.replaceChild(img.cloneNode(), img);
-    if (++count < 10)
-        setTimeout(test, 0);
-    else if (window.layoutTestController)
-        layoutTestController.notifyDone();
-}
-</script>
-</head>
-
-<body _onload_='test()'>
-    <p>This test checks if SVGImageCache leaks SVG image data as reported in
-    https://bugs.webkit.org/show_bug.cgi?id=87792. Its layout has no particular meaning.
-    The test will cause crash of debug version when leaks of SVG image data is detected.</p>
-    <p>Note: the code detects leaks of SVG image data on destruction of SVGImageCache,
-    which doesn't work on platforms that DumpRenderTree leaks the cache itself.</p>
-    <img id='img' src=''>
-</body>
-</html>

Modified: trunk/Source/WebCore/ChangeLog (119917 => 119918)


--- trunk/Source/WebCore/ChangeLog	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/Source/WebCore/ChangeLog	2012-06-09 23:03:25 UTC (rev 119918)
@@ -1,3 +1,61 @@
+2012-06-09  Sheriff Bot  <[email protected]>
+
+        Unreviewed, rolling out r118618 and r119353.
+        http://trac.webkit.org/changeset/118618
+        http://trac.webkit.org/changeset/119353
+        https://bugs.webkit.org/show_bug.cgi?id=88720
+
+        Caused at least 30 different crashes on ClusterFuzz (Requested
+        by inferno-sec on #webkit).
+
+        * loader/SubresourceLoader.cpp:
+        (WebCore::SubresourceLoader::checkForHTTPStatusCodeError):
+        * loader/cache/CachedCSSStyleSheet.cpp:
+        (WebCore::CachedCSSStyleSheet::allClientsRemoved):
+        * loader/cache/CachedFont.cpp:
+        (WebCore::CachedFont::allClientsRemoved):
+        * loader/cache/CachedFont.h:
+        (WebCore::CachedFontClient::resourceClientType):
+        * loader/cache/CachedImage.cpp:
+        (WebCore::CachedImage::removeClientForRenderer):
+        (WebCore):
+        (WebCore::CachedImage::allClientsRemoved):
+        (WebCore::CachedImage::lookupOrCreateImageForRenderer):
+        * loader/cache/CachedImage.h:
+        (CachedImage):
+        (WebCore::CachedImageClient::resourceClientType):
+        * loader/cache/CachedRawResource.cpp:
+        (WebCore::CachedRawResource::allClientsRemoved):
+        (WebCore):
+        * loader/cache/CachedRawResource.h:
+        (CachedRawResource):
+        (WebCore::CachedRawResourceClient::resourceClientType):
+        * loader/cache/CachedResource.cpp:
+        (WebCore::CachedResource::removeClient):
+        * loader/cache/CachedResource.h:
+        (WebCore::CachedResource::allClientsRemoved):
+        * loader/cache/CachedResourceClient.h:
+        (WebCore::CachedResourceClient::resourceClientType):
+        * loader/cache/CachedSVGDocument.h:
+        (WebCore::CachedSVGDocumentClient::resourceClientType):
+        * loader/cache/CachedScript.cpp:
+        (WebCore::CachedScript::allClientsRemoved):
+        * loader/cache/CachedStyleSheetClient.h:
+        (WebCore::CachedStyleSheetClient::resourceClientType):
+        * rendering/style/StyleCachedImage.cpp:
+        (WebCore::StyleCachedImage::removeClient):
+        * rendering/style/StyleCachedImageSet.cpp:
+        (WebCore::StyleCachedImageSet::removeClient):
+        * svg/graphics/SVGImageCache.cpp:
+        (WebCore::SVGImageCache::~SVGImageCache):
+        (WebCore::SVGImageCache::removeRendererFromCache):
+        (WebCore::SVGImageCache::setRequestedSizeAndScales):
+        (WebCore::SVGImageCache::requestedSizeAndScales):
+        (WebCore::SVGImageCache::lookupOrCreateBitmapImageForRenderer):
+        * svg/graphics/SVGImageCache.h:
+        (WebCore):
+        (SVGImageCache):
+
 2012-06-09  Florin Malita  <[email protected]>
 
         Fixed-position foreignObject descendants should be relative to the foreignObject viewport

Modified: trunk/Source/WebCore/loader/SubresourceLoader.cpp (119917 => 119918)


--- trunk/Source/WebCore/loader/SubresourceLoader.cpp	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/Source/WebCore/loader/SubresourceLoader.cpp	2012-06-09 23:03:25 UTC (rev 119918)
@@ -234,8 +234,8 @@
     if (m_resource->response().httpStatusCode() < 400 || m_resource->shouldIgnoreHTTPStatusCodeErrors())
         return false;
 
+    m_resource->error(CachedResource::LoadError);
     m_state = Finishing;
-    m_resource->error(CachedResource::LoadError);
     cancel();
     return true;
 }

Modified: trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp (119917 => 119918)


--- trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp	2012-06-09 23:03:25 UTC (rev 119918)
@@ -66,7 +66,6 @@
 {
     if (!MemoryCache::shouldMakeResourcePurgeableOnEviction() && isSafeToMakePurgeable())
         makePurgeable(true);
-    CachedResource::allClientsRemoved();
 }
 
 void CachedCSSStyleSheet::setEncoding(const String& chs)

Modified: trunk/Source/WebCore/loader/cache/CachedFont.cpp (119917 => 119918)


--- trunk/Source/WebCore/loader/cache/CachedFont.cpp	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/Source/WebCore/loader/cache/CachedFont.cpp	2012-06-09 23:03:25 UTC (rev 119918)
@@ -185,7 +185,6 @@
         m_fontData = 0;
     }
 #endif
-    CachedResource::allClientsRemoved();
 }
 
 void CachedFont::checkNotify()

Modified: trunk/Source/WebCore/loader/cache/CachedFont.h (119917 => 119918)


--- trunk/Source/WebCore/loader/cache/CachedFont.h	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/Source/WebCore/loader/cache/CachedFont.h	2012-06-09 23:03:25 UTC (rev 119918)
@@ -85,7 +85,7 @@
 public:
     virtual ~CachedFontClient() { }
     static CachedResourceClientType expectedType() { return FontType; }
-    virtual CachedResourceClientType resourceClientType() const { return expectedType(); }
+    virtual CachedResourceClientType resourceClientType() { return expectedType(); }
     virtual void fontLoaded(CachedFont*) { }
 };
 

Modified: trunk/Source/WebCore/loader/cache/CachedImage.cpp (119917 => 119918)


--- trunk/Source/WebCore/loader/cache/CachedImage.cpp	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/Source/WebCore/loader/cache/CachedImage.cpp	2012-06-09 23:03:25 UTC (rev 119918)
@@ -92,6 +92,15 @@
         setLoading(false);
 }
 
+void CachedImage::removeClientForRenderer(RenderObject* renderer)
+{
+#if ENABLE(SVG)
+    if (m_svgImageCache)
+        m_svgImageCache->removeRendererFromCache(renderer);
+#endif
+    removeClient(renderer);
+}
+
 void CachedImage::didAddClient(CachedResourceClient* c)
 {
     if (m_decodedDataDeletionTimer.isActive())
@@ -109,24 +118,12 @@
     CachedResource::didAddClient(c);
 }
 
-void CachedImage::didRemoveClient(CachedResourceClient* c)
-{
-    ASSERT(c->resourceClientType() == CachedImageClient::expectedType());
-#if ENABLE(SVG)
-    if (m_svgImageCache)
-        m_svgImageCache->removeClientFromCache(static_cast<CachedImageClient*>(c));
-#endif
-
-    CachedResource::didRemoveClient(c);
-}
-
 void CachedImage::allClientsRemoved()
 {
     if (m_image && !errorOccurred())
         m_image->resetAnimation();
     if (double interval = memoryCache()->deadDecodedDataDeletionInterval())
         m_decodedDataDeletionTimer.startOneShot(interval);
-    CachedResource::allClientsRemoved();
 }
 
 pair<Image*, float> CachedImage::brokenImage(float deviceScaleFactor) const
@@ -152,7 +149,7 @@
         return 0;
     if (!m_image->isSVGImage())
         return m_image.get();
-    Image* useImage = m_svgImageCache->lookupOrCreateBitmapImageForClient(renderer);
+    Image* useImage = m_svgImageCache->lookupOrCreateBitmapImageForRenderer(renderer);
     if (useImage == Image::nullImage())
         return m_image.get();
     return useImage;

Modified: trunk/Source/WebCore/loader/cache/CachedImage.h (119917 => 119918)


--- trunk/Source/WebCore/loader/cache/CachedImage.h	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/Source/WebCore/loader/cache/CachedImage.h	2012-06-09 23:03:25 UTC (rev 119918)
@@ -67,9 +67,9 @@
     IntSize imageSizeForRenderer(const RenderObject*, float multiplier); // returns the size of the complete image.
     void computeIntrinsicDimensions(Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio);
 
+    void removeClientForRenderer(RenderObject*);
     virtual void didAddClient(CachedResourceClient*);
-    virtual void didRemoveClient(CachedResourceClient*);
-
+    
     virtual void allClientsRemoved();
     virtual void destroyDecodedData();
 
@@ -118,7 +118,7 @@
 public:
     virtual ~CachedImageClient() { }
     static CachedResourceClientType expectedType() { return ImageType; }
-    virtual CachedResourceClientType resourceClientType() const { return expectedType(); }
+    virtual CachedResourceClientType resourceClientType() { return expectedType(); }
 
     // Called whenever a frame of an image changes, either because we got more data from the network or
     // because we are animating. If not null, the IntRect is the changed rect of the image.

Modified: trunk/Source/WebCore/loader/cache/CachedRawResource.cpp (119917 => 119918)


--- trunk/Source/WebCore/loader/cache/CachedRawResource.cpp	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/Source/WebCore/loader/cache/CachedRawResource.cpp	2012-06-09 23:03:25 UTC (rev 119918)
@@ -87,6 +87,12 @@
     CachedResource::didAddClient(client);
 }
 
+void CachedRawResource::allClientsRemoved()
+{
+    if (m_loader)
+        m_loader->cancelIfNotFinishing();
+}
+
 void CachedRawResource::willSendRequest(ResourceRequest& request, const ResourceResponse& response)
 {
     if (!response.isNull()) {

Modified: trunk/Source/WebCore/loader/cache/CachedRawResource.h (119917 => 119918)


--- trunk/Source/WebCore/loader/cache/CachedRawResource.h	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/Source/WebCore/loader/cache/CachedRawResource.h	2012-06-09 23:03:25 UTC (rev 119918)
@@ -49,6 +49,7 @@
     virtual void data(PassRefPtr<SharedBuffer> data, bool allDataReceived);
 
     virtual bool shouldIgnoreHTTPStatusCodeErrors() const { return true; }
+    virtual void allClientsRemoved();
 
     virtual void willSendRequest(ResourceRequest&, const ResourceResponse&);
     virtual void setResponse(const ResourceResponse&);
@@ -65,7 +66,7 @@
 public:
     virtual ~CachedRawResourceClient() { }
     static CachedResourceClientType expectedType() { return RawResourceType; }
-    virtual CachedResourceClientType resourceClientType() const { return expectedType(); }
+    virtual CachedResourceClientType resourceClientType() { return expectedType(); }
 
     virtual void dataSent(CachedResource*, unsigned long long /* bytesSent */, unsigned long long /* totalBytesToBeSent */) { }
     virtual void responseReceived(CachedResource*, const ResourceResponse&) { }

Modified: trunk/Source/WebCore/loader/cache/CachedResource.cpp (119917 => 119918)


--- trunk/Source/WebCore/loader/cache/CachedResource.cpp	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/Source/WebCore/loader/cache/CachedResource.cpp	2012-06-09 23:03:25 UTC (rev 119918)
@@ -387,12 +387,6 @@
         c->notifyFinished(this);
 }
 
-void CachedResource::allClientsRemoved()
-{
-    if (m_loader)
-        m_loader->cancelIfNotFinishing();
-}
-
 bool CachedResource::addClientToSet(CachedResourceClient* client)
 {
     ASSERT(!isPurgeable());
@@ -432,7 +426,6 @@
     } else {
         ASSERT(m_clients.contains(client));
         m_clients.remove(client);
-        didRemoveClient(client);
     }
 
     if (canDelete() && !inCache())

Modified: trunk/Source/WebCore/loader/cache/CachedResource.h (119917 => 119918)


--- trunk/Source/WebCore/loader/cache/CachedResource.h	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/Source/WebCore/loader/cache/CachedResource.h	2012-06-09 23:03:25 UTC (rev 119918)
@@ -126,8 +126,7 @@
     PreloadResult preloadResult() const { return static_cast<PreloadResult>(m_preloadResult); }
 
     virtual void didAddClient(CachedResourceClient*);
-    virtual void didRemoveClient(CachedResourceClient*) { }
-    virtual void allClientsRemoved();
+    virtual void allClientsRemoved() { }
 
     unsigned count() const { return m_clients.size(); }
 

Modified: trunk/Source/WebCore/loader/cache/CachedResourceClient.h (119917 => 119918)


--- trunk/Source/WebCore/loader/cache/CachedResourceClient.h	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/Source/WebCore/loader/cache/CachedResourceClient.h	2012-06-09 23:03:25 UTC (rev 119918)
@@ -50,7 +50,7 @@
     virtual void didReceiveData(CachedResource*) { };
     
     static CachedResourceClientType expectedType() { return BaseResourceType; }
-    virtual CachedResourceClientType resourceClientType() const { return expectedType(); }
+    virtual CachedResourceClientType resourceClientType() { return expectedType(); }
 
 protected:
     CachedResourceClient() { }

Modified: trunk/Source/WebCore/loader/cache/CachedSVGDocument.h (119917 => 119918)


--- trunk/Source/WebCore/loader/cache/CachedSVGDocument.h	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/Source/WebCore/loader/cache/CachedSVGDocument.h	2012-06-09 23:03:25 UTC (rev 119918)
@@ -52,7 +52,7 @@
 public:
     virtual ~CachedSVGDocumentClient() { }
     static CachedResourceClientType expectedType() { return SVGDocumentType; }
-    virtual CachedResourceClientType resourceClientType() const { return expectedType(); }
+    virtual CachedResourceClientType resourceClientType() { return expectedType(); }
 };
 
 }

Modified: trunk/Source/WebCore/loader/cache/CachedScript.cpp (119917 => 119918)


--- trunk/Source/WebCore/loader/cache/CachedScript.cpp	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/Source/WebCore/loader/cache/CachedScript.cpp	2012-06-09 23:03:25 UTC (rev 119918)
@@ -67,7 +67,6 @@
 {
     if (double interval = memoryCache()->deadDecodedDataDeletionInterval())
         m_decodedDataDeletionTimer.startOneShot(interval);
-    CachedResource::allClientsRemoved();
 }
 
 void CachedScript::setEncoding(const String& chs)

Modified: trunk/Source/WebCore/loader/cache/CachedStyleSheetClient.h (119917 => 119918)


--- trunk/Source/WebCore/loader/cache/CachedStyleSheetClient.h	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/Source/WebCore/loader/cache/CachedStyleSheetClient.h	2012-06-09 23:03:25 UTC (rev 119918)
@@ -36,7 +36,7 @@
 public:
     virtual ~CachedStyleSheetClient() { }
     static CachedResourceClientType expectedType() { return StyleSheetType; }
-    virtual CachedResourceClientType resourceClientType() const { return expectedType(); }
+    virtual CachedResourceClientType resourceClientType() { return expectedType(); }
     virtual void setCSSStyleSheet(const String& /* href */, const KURL& /* baseURL */, const String& /* charset */, const CachedCSSStyleSheet*) { }
     virtual void setXSLStyleSheet(const String& /* href */, const KURL& /* baseURL */, const String& /* sheet */) { }
 };

Modified: trunk/Source/WebCore/rendering/style/StyleCachedImage.cpp (119917 => 119918)


--- trunk/Source/WebCore/rendering/style/StyleCachedImage.cpp	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/Source/WebCore/rendering/style/StyleCachedImage.cpp	2012-06-09 23:03:25 UTC (rev 119918)
@@ -97,7 +97,7 @@
 
 void StyleCachedImage::removeClient(RenderObject* renderer)
 {
-    m_image->removeClient(renderer);
+    m_image->removeClientForRenderer(renderer);
 }
 
 PassRefPtr<Image> StyleCachedImage::image(RenderObject* renderer, const IntSize&) const

Modified: trunk/Source/WebCore/rendering/style/StyleCachedImageSet.cpp (119917 => 119918)


--- trunk/Source/WebCore/rendering/style/StyleCachedImageSet.cpp	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/Source/WebCore/rendering/style/StyleCachedImageSet.cpp	2012-06-09 23:03:25 UTC (rev 119918)
@@ -108,7 +108,7 @@
 
 void StyleCachedImageSet::removeClient(RenderObject* renderer)
 {
-    m_bestFitImage->removeClient(renderer);
+    m_bestFitImage->removeClientForRenderer(renderer);
 }
 
 PassRefPtr<Image> StyleCachedImageSet::image(RenderObject* renderer, const IntSize&) const

Modified: trunk/Source/WebCore/svg/graphics/SVGImageCache.cpp (119917 => 119918)


--- trunk/Source/WebCore/svg/graphics/SVGImageCache.cpp	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/Source/WebCore/svg/graphics/SVGImageCache.cpp	2012-06-09 23:03:25 UTC (rev 119918)
@@ -21,7 +21,6 @@
 #include "SVGImageCache.h"
 
 #if ENABLE(SVG)
-#include "CachedImage.h"
 #include "FrameView.h"
 #include "GraphicsContext.h"
 #include "ImageBuffer.h"
@@ -42,23 +41,18 @@
     m_sizeAndScalesMap.clear();
 
     ImageDataMap::iterator end = m_imageDataMap.end();
-    for (ImageDataMap::iterator it = m_imageDataMap.begin(); it != end; ++it) {
-        // Checks if the client (it->first) is still valid. The client should remove itself from this
-        // cache before its end of life, otherwise the following ASSERT will crash on pure virtual
-        // function call or a general crash.
-        ASSERT(it->first->resourceClientType() == CachedImageClient::expectedType());
+    for (ImageDataMap::iterator it = m_imageDataMap.begin(); it != end; ++it)
         delete it->second.buffer;
-    }
 
     m_imageDataMap.clear();
 }
 
-void SVGImageCache::removeClientFromCache(const CachedImageClient* client)
+void SVGImageCache::removeRendererFromCache(const RenderObject* renderer)
 {
-    ASSERT(client);
-    m_sizeAndScalesMap.remove(client);
+    ASSERT(renderer);
+    m_sizeAndScalesMap.remove(renderer);
 
-    ImageDataMap::iterator it = m_imageDataMap.find(client);
+    ImageDataMap::iterator it = m_imageDataMap.find(renderer);
     if (it == m_imageDataMap.end())
         return;
 
@@ -66,17 +60,17 @@
     m_imageDataMap.remove(it);
 }
 
-void SVGImageCache::setRequestedSizeAndScales(const CachedImageClient* client, const SizeAndScales& sizeAndScales)
+void SVGImageCache::setRequestedSizeAndScales(const RenderObject* renderer, const SizeAndScales& sizeAndScales)
 {
-    ASSERT(client);
+    ASSERT(renderer);
     ASSERT(!sizeAndScales.size.isEmpty());
-    m_sizeAndScalesMap.set(client, sizeAndScales);
+    m_sizeAndScalesMap.set(renderer, sizeAndScales);
 }
 
-SVGImageCache::SizeAndScales SVGImageCache::requestedSizeAndScales(const CachedImageClient* client) const
+SVGImageCache::SizeAndScales SVGImageCache::requestedSizeAndScales(const RenderObject* renderer) const
 {
-    ASSERT(client);
-    SizeAndScalesMap::const_iterator it = m_sizeAndScalesMap.find(client);
+    ASSERT(renderer);
+    SizeAndScalesMap::const_iterator it = m_sizeAndScalesMap.find(renderer);
     if (it == m_sizeAndScalesMap.end())
         return SizeAndScales();
     return it->second;
@@ -128,12 +122,12 @@
        redraw();
 }
 
-Image* SVGImageCache::lookupOrCreateBitmapImageForClient(const CachedImageClient* client)
+Image* SVGImageCache::lookupOrCreateBitmapImageForRenderer(const RenderObject* renderer)
 {
-    ASSERT(client);
+    ASSERT(renderer);
 
-    // The cache needs to know the size of the client before querying an image for it.
-    SizeAndScalesMap::iterator sizeIt = m_sizeAndScalesMap.find(client);
+    // The cache needs to know the size of the renderer before querying an image for it.
+    SizeAndScalesMap::iterator sizeIt = m_sizeAndScalesMap.find(renderer);
     if (sizeIt == m_sizeAndScalesMap.end())
         return Image::nullImage();
 
@@ -142,8 +136,8 @@
     float scale = sizeIt->second.scale;
     ASSERT(!size.isEmpty());
 
-    // Lookup image for client in cache and eventually update it.
-    ImageDataMap::iterator it = m_imageDataMap.find(client);
+    // Lookup image for renderer in cache and eventually update it.
+    ImageDataMap::iterator it = m_imageDataMap.find(renderer);
     if (it != m_imageDataMap.end()) {
         ImageData& data = ""
 
@@ -151,7 +145,7 @@
         if (data.sizeAndScales.size == size && data.sizeAndScales.zoom == zoom && data.sizeAndScales.scale == scale)
             return data.image.get();
 
-        // If the image size for the client changed, we have to delete the buffer, remove the item from the cache and recreate it.
+        // If the image size for the renderer changed, we have to delete the buffer, remove the item from the cache and recreate it.
         delete data.buffer;
         m_imageDataMap.remove(it);
     }
@@ -170,7 +164,7 @@
     Image* newImagePtr = newImage.get();
     ASSERT(newImagePtr);
 
-    m_imageDataMap.add(client, ImageData(newBuffer.leakPtr(), newImage.release(), sizeIt->second));
+    m_imageDataMap.add(renderer, ImageData(newBuffer.leakPtr(), newImage.release(), sizeIt->second));
     return newImagePtr;
 }
 

Modified: trunk/Source/WebCore/svg/graphics/SVGImageCache.h (119917 => 119918)


--- trunk/Source/WebCore/svg/graphics/SVGImageCache.h	2012-06-09 21:38:31 UTC (rev 119917)
+++ trunk/Source/WebCore/svg/graphics/SVGImageCache.h	2012-06-09 23:03:25 UTC (rev 119918)
@@ -31,8 +31,8 @@
 namespace WebCore {
 
 class CachedImage;
-class CachedImageClient;
 class ImageBuffer;
+class RenderObject;
 class SVGImage;
 
 class SVGImageCache {
@@ -63,12 +63,12 @@
         float scale;
     };
 
-    void removeClientFromCache(const CachedImageClient*);
+    void removeRendererFromCache(const RenderObject*);
 
-    void setRequestedSizeAndScales(const CachedImageClient*, const SizeAndScales&);
-    SizeAndScales requestedSizeAndScales(const CachedImageClient*) const;
+    void setRequestedSizeAndScales(const RenderObject*, const SizeAndScales&);
+    SizeAndScales requestedSizeAndScales(const RenderObject*) const;
 
-    Image* lookupOrCreateBitmapImageForClient(const CachedImageClient*);
+    Image* lookupOrCreateBitmapImageForRenderer(const RenderObject*);
     void imageContentChanged();
 
 private:
@@ -98,8 +98,8 @@
         RefPtr<Image> image;
     };
 
-    typedef HashMap<const CachedImageClient*, SizeAndScales> SizeAndScalesMap;
-    typedef HashMap<const CachedImageClient*, ImageData> ImageDataMap;
+    typedef HashMap<const RenderObject*, SizeAndScales> SizeAndScalesMap;
+    typedef HashMap<const RenderObject*, ImageData> ImageDataMap;
 
     SVGImage* m_svgImage;
     SizeAndScalesMap m_sizeAndScalesMap;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to