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