Title: [123829] trunk/Source/WebCore
Revision
123829
Author
commit-qu...@webkit.org
Date
2012-07-26 18:48:24 -0700 (Thu, 26 Jul 2012)

Log Message

Unreviewed, rolling out r123808.
http://trac.webkit.org/changeset/123808
https://bugs.webkit.org/show_bug.cgi?id=92443

Broke Apple Mac debug tests ASSERTION FAILED: !hasClients()
(Requested by msaboff_ on #webkit).

Patch by Sheriff Bot <webkit.review....@gmail.com> on 2012-07-26

* loader/cache/CachedCSSStyleSheet.cpp:
(WebCore::CachedCSSStyleSheet::CachedCSSStyleSheet):
(WebCore::CachedCSSStyleSheet::didAddClient):
(WebCore::CachedCSSStyleSheet::allClientsRemoved):
(WebCore::CachedCSSStyleSheet::decodedDataDeletionTimerFired):
(WebCore):
* loader/cache/CachedCSSStyleSheet.h:
(CachedCSSStyleSheet):
* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::CachedImage):
(WebCore::CachedImage::decodedDataDeletionTimerFired):
(WebCore):
(WebCore::CachedImage::didAddClient):
(WebCore::CachedImage::allClientsRemoved):
* loader/cache/CachedImage.h:
(CachedImage):
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::CachedResource):
(WebCore::CachedResource::didAddClient):
(WebCore::CachedResource::removeClient):
* loader/cache/CachedResource.h:
(CachedResource):
* loader/cache/CachedScript.cpp:
(WebCore::CachedScript::CachedScript):
(WebCore::CachedScript::didAddClient):
(WebCore):
(WebCore::CachedScript::allClientsRemoved):
(WebCore::CachedScript::decodedDataDeletionTimerFired):
* loader/cache/CachedScript.h:
(CachedScript):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (123828 => 123829)


--- trunk/Source/WebCore/ChangeLog	2012-07-27 01:41:48 UTC (rev 123828)
+++ trunk/Source/WebCore/ChangeLog	2012-07-27 01:48:24 UTC (rev 123829)
@@ -1,3 +1,43 @@
+2012-07-26  Sheriff Bot  <webkit.review....@gmail.com>
+
+        Unreviewed, rolling out r123808.
+        http://trac.webkit.org/changeset/123808
+        https://bugs.webkit.org/show_bug.cgi?id=92443
+
+        Broke Apple Mac debug tests ASSERTION FAILED: !hasClients()
+        (Requested by msaboff_ on #webkit).
+
+        * loader/cache/CachedCSSStyleSheet.cpp:
+        (WebCore::CachedCSSStyleSheet::CachedCSSStyleSheet):
+        (WebCore::CachedCSSStyleSheet::didAddClient):
+        (WebCore::CachedCSSStyleSheet::allClientsRemoved):
+        (WebCore::CachedCSSStyleSheet::decodedDataDeletionTimerFired):
+        (WebCore):
+        * loader/cache/CachedCSSStyleSheet.h:
+        (CachedCSSStyleSheet):
+        * loader/cache/CachedImage.cpp:
+        (WebCore::CachedImage::CachedImage):
+        (WebCore::CachedImage::decodedDataDeletionTimerFired):
+        (WebCore):
+        (WebCore::CachedImage::didAddClient):
+        (WebCore::CachedImage::allClientsRemoved):
+        * loader/cache/CachedImage.h:
+        (CachedImage):
+        * loader/cache/CachedResource.cpp:
+        (WebCore::CachedResource::CachedResource):
+        (WebCore::CachedResource::didAddClient):
+        (WebCore::CachedResource::removeClient):
+        * loader/cache/CachedResource.h:
+        (CachedResource):
+        * loader/cache/CachedScript.cpp:
+        (WebCore::CachedScript::CachedScript):
+        (WebCore::CachedScript::didAddClient):
+        (WebCore):
+        (WebCore::CachedScript::allClientsRemoved):
+        (WebCore::CachedScript::decodedDataDeletionTimerFired):
+        * loader/cache/CachedScript.h:
+        (CachedScript):
+
 2012-07-26  Tony Chang  <t...@chromium.org>
 
         [chromium] Remove some unreachable code in ClipboardChromium.cpp

Modified: trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp (123828 => 123829)


--- trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp	2012-07-27 01:41:48 UTC (rev 123828)
+++ trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp	2012-07-27 01:48:24 UTC (rev 123829)
@@ -43,6 +43,7 @@
 CachedCSSStyleSheet::CachedCSSStyleSheet(const ResourceRequest& resourceRequest, const String& charset)
     : CachedResource(resourceRequest, CSSStyleSheet)
     , m_decoder(TextResourceDecoder::create("text/css", charset))
+    , m_decodedDataDeletionTimer(this, &CachedCSSStyleSheet::decodedDataDeletionTimerFired)
 {
     // Prefer text/css but accept any type (dell.com serves a stylesheet
     // as text/html; see <http://bugs.webkit.org/show_bug.cgi?id=11451>).
@@ -58,10 +59,17 @@
 void CachedCSSStyleSheet::didAddClient(CachedResourceClient* c)
 {
     ASSERT(c->resourceClientType() == CachedStyleSheetClient::expectedType());
+    if (m_decodedDataDeletionTimer.isActive())
+        m_decodedDataDeletionTimer.stop();
+
     if (!isLoading())
         static_cast<CachedStyleSheetClient*>(c)->setCSSStyleSheet(m_resourceRequest.url(), m_response.url(), m_decoder->encoding().name(), this);
+}
 
-    CachedResource::didAddClient(c);
+void CachedCSSStyleSheet::allClientsRemoved()
+{
+    if (double interval = memoryCache()->deadDecodedDataDeletionInterval())
+        m_decodedDataDeletionTimer.startOneShot(interval);
 }
 
 void CachedCSSStyleSheet::setEncoding(const String& chs)
@@ -164,6 +172,11 @@
         makePurgeable(true);
 }
 
+void CachedCSSStyleSheet::decodedDataDeletionTimerFired(Timer<CachedCSSStyleSheet>*)
+{
+    destroyDecodedData();
+}
+
 PassRefPtr<StyleSheetContents> CachedCSSStyleSheet::restoreParsedStyleSheet(const CSSParserContext& context)
 {
     if (!m_parsedStyleSheetCache)

Modified: trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.h (123828 => 123829)


--- trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.h	2012-07-27 01:41:48 UTC (rev 123828)
+++ trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.h	2012-07-27 01:48:24 UTC (rev 123829)
@@ -27,6 +27,7 @@
 #define CachedCSSStyleSheet_h
 
 #include "CachedResource.h"
+#include "Timer.h"
 #include <wtf/Vector.h>
 
 namespace WebCore {
@@ -46,6 +47,8 @@
 
         virtual void didAddClient(CachedResourceClient*);
         
+        virtual void allClientsRemoved();
+
         virtual void setEncoding(const String&);
         virtual String encoding() const;
         virtual void data(PassRefPtr<SharedBuffer> data, bool allDataReceived);
@@ -59,12 +62,14 @@
         void saveParsedStyleSheet(PassRefPtr<StyleSheetContents>);
     
     private:
+        void decodedDataDeletionTimerFired(Timer<CachedCSSStyleSheet>*);
         bool canUseSheet(bool enforceMIMEType, bool* hasValidMIMEType) const;
         virtual PurgePriority purgePriority() const { return PurgeLast; }
 
     protected:
         RefPtr<TextResourceDecoder> m_decoder;
         String m_decodedSheetText;
+        Timer<CachedCSSStyleSheet> m_decodedDataDeletionTimer;
 
         RefPtr<StyleSheetContents> m_parsedStyleSheetCache;
     };

Modified: trunk/Source/WebCore/loader/cache/CachedImage.cpp (123828 => 123829)


--- trunk/Source/WebCore/loader/cache/CachedImage.cpp	2012-07-27 01:41:48 UTC (rev 123828)
+++ trunk/Source/WebCore/loader/cache/CachedImage.cpp	2012-07-27 01:48:24 UTC (rev 123829)
@@ -57,6 +57,7 @@
 CachedImage::CachedImage(const ResourceRequest& resourceRequest)
     : CachedResource(resourceRequest, ImageResource)
     , m_image(0)
+    , m_decodedDataDeletionTimer(this, &CachedImage::decodedDataDeletionTimerFired)
     , m_shouldPaintBrokenImage(true)
 {
     setStatus(Unknown);
@@ -65,6 +66,7 @@
 CachedImage::CachedImage(Image* image)
     : CachedResource(ResourceRequest(), ImageResource)
     , m_image(image)
+    , m_decodedDataDeletionTimer(this, &CachedImage::decodedDataDeletionTimerFired)
     , m_shouldPaintBrokenImage(true)
 {
     setStatus(Cached);
@@ -76,6 +78,12 @@
     clearImage();
 }
 
+void CachedImage::decodedDataDeletionTimerFired(Timer<CachedImage>*)
+{
+    ASSERT(!hasClients());
+    destroyDecodedData();
+}
+
 void CachedImage::load(CachedResourceLoader* cachedResourceLoader, const ResourceLoaderOptions& options)
 {
     if (!cachedResourceLoader || cachedResourceLoader->autoLoadImages())
@@ -86,6 +94,9 @@
 
 void CachedImage::didAddClient(CachedResourceClient* c)
 {
+    if (m_decodedDataDeletionTimer.isActive())
+        m_decodedDataDeletionTimer.stop();
+    
     if (m_data && !m_image && !errorOccurred()) {
         createImage();
         m_image->setData(m_data, true);
@@ -113,6 +124,8 @@
 {
     if (m_image && !errorOccurred())
         m_image->resetAnimation();
+    if (double interval = memoryCache()->deadDecodedDataDeletionInterval())
+        m_decodedDataDeletionTimer.startOneShot(interval);
 }
 
 pair<Image*, float> CachedImage::brokenImage(float deviceScaleFactor) const

Modified: trunk/Source/WebCore/loader/cache/CachedImage.h (123828 => 123829)


--- trunk/Source/WebCore/loader/cache/CachedImage.h	2012-07-27 01:41:48 UTC (rev 123828)
+++ trunk/Source/WebCore/loader/cache/CachedImage.h	2012-07-27 01:48:24 UTC (rev 123829)
@@ -28,6 +28,7 @@
 #include "SVGImageCache.h"
 #include "ImageObserver.h"
 #include "IntRect.h"
+#include "Timer.h"
 #include <wtf/Vector.h>
 
 namespace WebCore {
@@ -103,6 +104,7 @@
     size_t maximumDecodedImageSize();
     // If not null, changeRect is the changed part of the image.
     void notifyObservers(const IntRect* changeRect = 0);
+    void decodedDataDeletionTimerFired(Timer<CachedImage>*);
     virtual PurgePriority purgePriority() const { return PurgeFirst; }
     void checkShouldPaintBrokenImage();
 
@@ -110,6 +112,7 @@
 #if ENABLE(SVG)
     OwnPtr<SVGImageCache> m_svgImageCache;
 #endif
+    Timer<CachedImage> m_decodedDataDeletionTimer;
     bool m_shouldPaintBrokenImage;
 };
 

Modified: trunk/Source/WebCore/loader/cache/CachedResource.cpp (123828 => 123829)


--- trunk/Source/WebCore/loader/cache/CachedResource.cpp	2012-07-27 01:41:48 UTC (rev 123828)
+++ trunk/Source/WebCore/loader/cache/CachedResource.cpp	2012-07-27 01:48:24 UTC (rev 123829)
@@ -136,7 +136,6 @@
     : m_resourceRequest(request)
     , m_loadPriority(defaultPriorityForResourceType(type))
     , m_responseTimestamp(currentTime())
-    , m_decodedDataDeletionTimer(this, &CachedResource::decodedDataDeletionTimerFired)
     , m_lastDecodedAccessTime(0)
     , m_loadFinishTime(0)
     , m_encodedSize(0)
@@ -381,9 +380,6 @@
 
 void CachedResource::didAddClient(CachedResourceClient* c)
 {
-    if (m_decodedDataDeletionTimer.isActive())
-        m_decodedDataDeletionTimer.stop();
-
     if (m_clientsAwaitingCallback.contains(c)) {
         m_clients.add(c);
         m_clientsAwaitingCallback.remove(c);
@@ -440,7 +436,6 @@
         memoryCache()->removeFromLiveResourcesSize(this);
         memoryCache()->removeFromLiveDecodedResourcesList(this);
         allClientsRemoved();
-        destroyDecodedDataIfNeeded();
         if (response().cacheControlContainsNoStore()) {
             // RFC2616 14.9.2:
             // "no-store: ... MUST make a best-effort attempt to remove the information from volatile storage as promptly as possible"
@@ -454,21 +449,6 @@
     // This object may be dead here.
 }
 
-void CachedResource::destroyDecodedDataIfNeeded()
-{
-    if (!m_decodedSize)
-        return;
-
-    if (double interval = memoryCache()->deadDecodedDataDeletionInterval())
-        m_decodedDataDeletionTimer.startOneShot(interval);
-}
-
-void CachedResource::decodedDataDeletionTimerFired(Timer<CachedResource>*)
-{
-    ASSERT(!hasClients());
-    destroyDecodedData();
-}
-
 void CachedResource::deleteIfPossible()
 {
     if (canDelete() && !inCache())

Modified: trunk/Source/WebCore/loader/cache/CachedResource.h (123828 => 123829)


--- trunk/Source/WebCore/loader/cache/CachedResource.h	2012-07-27 01:41:48 UTC (rev 123828)
+++ trunk/Source/WebCore/loader/cache/CachedResource.h	2012-07-27 01:48:24 UTC (rev 123829)
@@ -128,7 +128,6 @@
     virtual void didAddClient(CachedResourceClient*);
     virtual void didRemoveClient(CachedResourceClient*) { }
     virtual void allClientsRemoved() { }
-    void destroyDecodedDataIfNeeded();
 
     unsigned count() const { return m_clients.size(); }
 
@@ -287,11 +286,9 @@
 
     RefPtr<SharedBuffer> m_data;
     OwnPtr<PurgeableBuffer> m_purgeableData;
-    Timer<CachedResource> m_decodedDataDeletionTimer;
 
 private:
     bool addClientToSet(CachedResourceClient*);
-    void decodedDataDeletionTimerFired(Timer<CachedResource>*);
 
     virtual PurgePriority purgePriority() const { return PurgeDefault; }
 

Modified: trunk/Source/WebCore/loader/cache/CachedScript.cpp (123828 => 123829)


--- trunk/Source/WebCore/loader/cache/CachedScript.cpp	2012-07-27 01:41:48 UTC (rev 123828)
+++ trunk/Source/WebCore/loader/cache/CachedScript.cpp	2012-07-27 01:48:24 UTC (rev 123829)
@@ -43,6 +43,7 @@
 CachedScript::CachedScript(const ResourceRequest& resourceRequest, const String& charset)
     : CachedResource(resourceRequest, Script)
     , m_decoder(TextResourceDecoder::create("application/_javascript_", charset))
+    , m_decodedDataDeletionTimer(this, &CachedScript::decodedDataDeletionTimerFired)
 {
     // It's _javascript_ we want.
     // But some websites think their scripts are <some wrong mimetype here>
@@ -54,6 +55,20 @@
 {
 }
 
+void CachedScript::didAddClient(CachedResourceClient* c)
+{
+    if (m_decodedDataDeletionTimer.isActive())
+        m_decodedDataDeletionTimer.stop();
+
+    CachedResource::didAddClient(c);
+}
+
+void CachedScript::allClientsRemoved()
+{
+    if (double interval = memoryCache()->deadDecodedDataDeletionInterval())
+        m_decodedDataDeletionTimer.startOneShot(interval);
+}
+
 void CachedScript::setEncoding(const String& chs)
 {
     m_decoder->setEncoding(chs, TextResourceDecoder::EncodingFromHTTPHeader);
@@ -112,6 +127,11 @@
         makePurgeable(true);
 }
 
+void CachedScript::decodedDataDeletionTimerFired(Timer<CachedScript>*)
+{
+    destroyDecodedData();
+}
+
 #if USE(JSC)
 JSC::SourceProviderCache* CachedScript::sourceProviderCache() const
 {   

Modified: trunk/Source/WebCore/loader/cache/CachedScript.h (123828 => 123829)


--- trunk/Source/WebCore/loader/cache/CachedScript.h	2012-07-27 01:41:48 UTC (rev 123828)
+++ trunk/Source/WebCore/loader/cache/CachedScript.h	2012-07-27 01:48:24 UTC (rev 123829)
@@ -27,6 +27,7 @@
 #define CachedScript_h
 
 #include "CachedResource.h"
+#include "Timer.h"
 
 #if USE(JSC)
 namespace JSC {
@@ -46,6 +47,9 @@
 
         const String& script();
 
+        virtual void didAddClient(CachedResourceClient*);
+        virtual void allClientsRemoved();
+
         virtual void setEncoding(const String&);
         virtual String encoding() const;
         virtual void data(PassRefPtr<SharedBuffer> data, bool allDataReceived);
@@ -58,10 +62,12 @@
         void sourceProviderCacheSizeChanged(int delta);
 #endif
     private:
+        void decodedDataDeletionTimerFired(Timer<CachedScript>*);
         virtual PurgePriority purgePriority() const { return PurgeLast; }
 
         String m_script;
         RefPtr<TextResourceDecoder> m_decoder;
+        Timer<CachedScript> m_decodedDataDeletionTimer;
 #if USE(JSC)        
         mutable OwnPtr<JSC::SourceProviderCache> m_sourceProviderCache;
 #endif
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to