Diff
Modified: trunk/Source/WebCore/ChangeLog (174332 => 174333)
--- trunk/Source/WebCore/ChangeLog 2014-10-06 00:23:58 UTC (rev 174332)
+++ trunk/Source/WebCore/ChangeLog 2014-10-06 00:31:05 UTC (rev 174333)
@@ -1,5 +1,41 @@
2014-10-05 Christophe Dumez <[email protected]>
+ Use is<>() / downcast<>() for CachedResource subclasses
+ https://bugs.webkit.org/show_bug.cgi?id=137431
+
+ Reviewed by Benjamin Poulain.
+
+ Use is<>() / downcast<>() for CachedResource subclasses.
+
+ No new tests, no behavior change.
+
+ * inspector/InspectorPageAgent.cpp:
+ (WebCore::InspectorPageAgent::cachedResourceContent):
+ * loader/cache/CachedCSSStyleSheet.h:
+ * loader/cache/CachedFont.h:
+ * loader/cache/CachedImage.cpp:
+ (WebCore::CachedImage::switchClientsToRevalidatedResource):
+ * loader/cache/CachedImage.h:
+ * loader/cache/CachedResource.h:
+ * loader/cache/CachedResourceLoader.cpp:
+ (WebCore::CachedResourceLoader::requestImage):
+ (WebCore::CachedResourceLoader::requestFont):
+ (WebCore::CachedResourceLoader::requestTextTrack):
+ (WebCore::CachedResourceLoader::requestCSSStyleSheet):
+ (WebCore::CachedResourceLoader::requestUserCSSStyleSheet):
+ (WebCore::CachedResourceLoader::requestScript):
+ (WebCore::CachedResourceLoader::requestXSLStyleSheet):
+ (WebCore::CachedResourceLoader::requestSVGDocument):
+ (WebCore::CachedResourceLoader::reloadImagesIfNotDeferred):
+ * loader/cache/CachedSVGDocument.h:
+ * loader/cache/CachedScript.h:
+ * loader/cache/CachedTextTrack.h:
+ * loader/cache/CachedXSLStyleSheet.h:
+ * loader/cache/MemoryCache.cpp:
+ (WebCore::MemoryCache::removeImageFromCache):
+
+2014-10-05 Christophe Dumez <[email protected]>
+
Use is<>() / downcast<>() for StyleSheet subclasses
https://bugs.webkit.org/show_bug.cgi?id=137429
Modified: trunk/Source/WebCore/inspector/InspectorPageAgent.cpp (174332 => 174333)
--- trunk/Source/WebCore/inspector/InspectorPageAgent.cpp 2014-10-06 00:23:58 UTC (rev 174332)
+++ trunk/Source/WebCore/inspector/InspectorPageAgent.cpp 2014-10-06 00:31:05 UTC (rev 174333)
@@ -162,10 +162,10 @@
if (cachedResource) {
switch (cachedResource->type()) {
case CachedResource::CSSStyleSheet:
- *result = toCachedCSSStyleSheet(cachedResource)->sheetText(false);
+ *result = downcast<CachedCSSStyleSheet>(*cachedResource).sheetText(false);
return true;
case CachedResource::Script:
- *result = toCachedScript(cachedResource)->script();
+ *result = downcast<CachedScript>(*cachedResource).script();
return true;
case CachedResource::RawResource: {
ResourceBuffer* buffer = cachedResource->resourceBuffer();
Modified: trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.h (174332 => 174333)
--- trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.h 2014-10-06 00:23:58 UTC (rev 174332)
+++ trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.h 2014-10-06 00:31:05 UTC (rev 174333)
@@ -66,8 +66,8 @@
RefPtr<StyleSheetContents> m_parsedStyleSheetCache;
};
-CACHED_RESOURCE_TYPE_CASTS(CachedCSSStyleSheet, CachedResource, CachedResource::CSSStyleSheet)
+} // namespace WebCore
-}
+SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE(CachedCSSStyleSheet, CachedResource::CSSStyleSheet)
-#endif
+#endif // CachedCSSStyleSheet_h
Modified: trunk/Source/WebCore/loader/cache/CachedFont.h (174332 => 174333)
--- trunk/Source/WebCore/loader/cache/CachedFont.h 2014-10-06 00:23:58 UTC (rev 174332)
+++ trunk/Source/WebCore/loader/cache/CachedFont.h 2014-10-06 00:31:05 UTC (rev 174333)
@@ -78,8 +78,8 @@
friend class MemoryCache;
};
-CACHED_RESOURCE_TYPE_CASTS(CachedFont, CachedResource, CachedResource::FontResource)
-
} // namespace WebCore
+SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE(CachedFont, CachedResource::FontResource)
+
#endif // CachedFont_h
Modified: trunk/Source/WebCore/loader/cache/CachedImage.cpp (174332 => 174333)
--- trunk/Source/WebCore/loader/cache/CachedImage.cpp 2014-10-06 00:23:58 UTC (rev 174332)
+++ trunk/Source/WebCore/loader/cache/CachedImage.cpp 2014-10-06 00:31:05 UTC (rev 174333)
@@ -145,8 +145,7 @@
void CachedImage::switchClientsToRevalidatedResource()
{
- ASSERT(resourceToRevalidate());
- ASSERT(resourceToRevalidate()->isImage());
+ ASSERT(is<CachedImage>(resourceToRevalidate()));
// Pending container size requests need to be transferred to the revalidated resource.
if (!m_pendingContainerSizeRequests.isEmpty()) {
// A copy of pending size requests is needed as they are deleted during CachedResource::switchClientsToRevalidateResouce().
@@ -154,9 +153,9 @@
for (ContainerSizeRequests::iterator it = m_pendingContainerSizeRequests.begin(); it != m_pendingContainerSizeRequests.end(); ++it)
switchContainerSizeRequests.set(it->key, it->value);
CachedResource::switchClientsToRevalidatedResource();
- CachedImage* revalidatedCachedImage = toCachedImage(resourceToRevalidate());
+ CachedImage& revalidatedCachedImage = downcast<CachedImage>(*resourceToRevalidate());
for (ContainerSizeRequests::iterator it = switchContainerSizeRequests.begin(); it != switchContainerSizeRequests.end(); ++it)
- revalidatedCachedImage->setContainerSizeForRenderer(it->key, it->value.first, it->value.second);
+ revalidatedCachedImage.setContainerSizeForRenderer(it->key, it->value.first, it->value.second);
return;
}
Modified: trunk/Source/WebCore/loader/cache/CachedImage.h (174332 => 174333)
--- trunk/Source/WebCore/loader/cache/CachedImage.h 2014-10-06 00:23:58 UTC (rev 174332)
+++ trunk/Source/WebCore/loader/cache/CachedImage.h 2014-10-06 00:31:05 UTC (rev 174333)
@@ -84,12 +84,11 @@
bool isManuallyCached() const { return m_isManuallyCached; }
virtual bool mustRevalidateDueToCacheHeaders(CachePolicy) const;
+ virtual void load(CachedResourceLoader*, const ResourceLoaderOptions&) override;
bool isOriginClean(SecurityOrigin*);
private:
- virtual void load(CachedResourceLoader*, const ResourceLoaderOptions&) override;
-
void clear();
void createImage();
@@ -135,8 +134,8 @@
unsigned char m_shouldPaintBrokenImage : 1;
};
-CACHED_RESOURCE_TYPE_CASTS(CachedImage, CachedResource, CachedResource::ImageResource)
+} // namespace WebCore
-}
+SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE(CachedImage, CachedResource::ImageResource)
-#endif
+#endif // CachedImage_h
Modified: trunk/Source/WebCore/loader/cache/CachedResource.h (174332 => 174333)
--- trunk/Source/WebCore/loader/cache/CachedResource.h 2014-10-06 00:23:58 UTC (rev 174332)
+++ trunk/Source/WebCore/loader/cache/CachedResource.h 2014-10-06 00:31:05 UTC (rev 174333)
@@ -36,6 +36,7 @@
#include <wtf/HashCountedSet.h>
#include <wtf/HashSet.h>
#include <wtf/OwnPtr.h>
+#include <wtf/TypeCasts.h>
#include <wtf/Vector.h>
#include <wtf/text/WTFString.h>
@@ -360,9 +361,11 @@
double m_redirectChainEndOfValidity;
};
-#define CACHED_RESOURCE_TYPE_CASTS(ToClassName, FromClassName, CachedResourceType) \
- TYPE_CASTS_BASE(ToClassName, FromClassName, resource, resource->type() == CachedResourceType, resource.type() == CachedResourceType)
+} // namespace WebCore
-}
+#define SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE(ToClassName, CachedResourceType) \
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::ToClassName) \
+ static bool isType(const WebCore::CachedResource& resource) { return resource.type() == WebCore::CachedResourceType; } \
+SPECIALIZE_TYPE_TRAITS_END()
-#endif
+#endif // CachedResource_h
Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp (174332 => 174333)
--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp 2014-10-06 00:23:58 UTC (rev 174332)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp 2014-10-06 00:31:05 UTC (rev 174333)
@@ -170,24 +170,24 @@
}
request.setDefer(clientDefersImage(request.resourceRequest().url()) ? CachedResourceRequest::DeferredByClient : CachedResourceRequest::NoDefer);
- return toCachedImage(requestResource(CachedResource::ImageResource, request).get());
+ return downcast<CachedImage>(requestResource(CachedResource::ImageResource, request).get());
}
CachedResourceHandle<CachedFont> CachedResourceLoader::requestFont(CachedResourceRequest& request)
{
- return toCachedFont(requestResource(CachedResource::FontResource, request).get());
+ return downcast<CachedFont>(requestResource(CachedResource::FontResource, request).get());
}
#if ENABLE(VIDEO_TRACK)
CachedResourceHandle<CachedTextTrack> CachedResourceLoader::requestTextTrack(CachedResourceRequest& request)
{
- return toCachedTextTrack(requestResource(CachedResource::TextTrackResource, request).get());
+ return downcast<CachedTextTrack>(requestResource(CachedResource::TextTrackResource, request).get());
}
#endif
CachedResourceHandle<CachedCSSStyleSheet> CachedResourceLoader::requestCSSStyleSheet(CachedResourceRequest& request)
{
- return toCachedCSSStyleSheet(requestResource(CachedResource::CSSStyleSheet, request).get());
+ return downcast<CachedCSSStyleSheet>(requestResource(CachedResource::CSSStyleSheet, request).get());
}
CachedResourceHandle<CachedCSSStyleSheet> CachedResourceLoader::requestUserCSSStyleSheet(CachedResourceRequest& request)
@@ -199,8 +199,8 @@
#endif
if (CachedResource* existing = memoryCache()->resourceForRequest(request.resourceRequest(), sessionID())) {
- if (existing->type() == CachedResource::CSSStyleSheet)
- return toCachedCSSStyleSheet(existing);
+ if (is<CachedCSSStyleSheet>(*existing))
+ return downcast<CachedCSSStyleSheet>(existing);
memoryCache()->remove(existing);
}
if (url.string() != request.resourceRequest().url())
@@ -218,19 +218,19 @@
CachedResourceHandle<CachedScript> CachedResourceLoader::requestScript(CachedResourceRequest& request)
{
- return toCachedScript(requestResource(CachedResource::Script, request).get());
+ return downcast<CachedScript>(requestResource(CachedResource::Script, request).get());
}
#if ENABLE(XSLT)
CachedResourceHandle<CachedXSLStyleSheet> CachedResourceLoader::requestXSLStyleSheet(CachedResourceRequest& request)
{
- return toCachedXSLStyleSheet(requestResource(CachedResource::XSLStyleSheet, request).get());
+ return downcast<CachedXSLStyleSheet>(requestResource(CachedResource::XSLStyleSheet, request).get());
}
#endif
CachedResourceHandle<CachedSVGDocument> CachedResourceLoader::requestSVGDocument(CachedResourceRequest& request)
{
- return toCachedSVGDocument(requestResource(CachedResource::SVGDocumentResource, request).get());
+ return downcast<CachedSVGDocument>(requestResource(CachedResource::SVGDocumentResource, request).get());
}
#if ENABLE(LINK_PREFETCH)
@@ -703,8 +703,8 @@
DocumentResourceMap::iterator end = m_documentResources.end();
for (DocumentResourceMap::iterator it = m_documentResources.begin(); it != end; ++it) {
CachedResource* resource = it->value.get();
- if (resource->isImage() && resource->stillNeedsLoad() && !clientDefersImage(resource->url()))
- const_cast<CachedResource*>(resource)->load(this, defaultCachedResourceOptions());
+ if (is<CachedImage>(*resource) && resource->stillNeedsLoad() && !clientDefersImage(resource->url()))
+ downcast<CachedImage>(*resource).load(this, defaultCachedResourceOptions());
}
}
Modified: trunk/Source/WebCore/loader/cache/CachedSVGDocument.h (174332 => 174333)
--- trunk/Source/WebCore/loader/cache/CachedSVGDocument.h 2014-10-06 00:23:58 UTC (rev 174332)
+++ trunk/Source/WebCore/loader/cache/CachedSVGDocument.h 2014-10-06 00:31:05 UTC (rev 174333)
@@ -48,8 +48,8 @@
virtual void finishLoading(ResourceBuffer*) override;
};
-CACHED_RESOURCE_TYPE_CASTS(CachedSVGDocument, CachedResource, CachedResource::SVGDocumentResource)
-
} // namespace WebCore
+SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE(CachedSVGDocument, CachedResource::SVGDocumentResource)
+
#endif // CachedSVGDocument_h
Modified: trunk/Source/WebCore/loader/cache/CachedScript.h (174332 => 174333)
--- trunk/Source/WebCore/loader/cache/CachedScript.h 2014-10-06 00:23:58 UTC (rev 174332)
+++ trunk/Source/WebCore/loader/cache/CachedScript.h 2014-10-06 00:31:05 UTC (rev 174333)
@@ -61,8 +61,8 @@
RefPtr<TextResourceDecoder> m_decoder;
};
-CACHED_RESOURCE_TYPE_CASTS(CachedScript, CachedResource, CachedResource::Script)
+} // namespace WebCore
-}
+SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE(CachedScript, CachedResource::Script)
-#endif
+#endif // CachedScript_h
Modified: trunk/Source/WebCore/loader/cache/CachedTextTrack.h (174332 => 174333)
--- trunk/Source/WebCore/loader/cache/CachedTextTrack.h 2014-10-06 00:23:58 UTC (rev 174332)
+++ trunk/Source/WebCore/loader/cache/CachedTextTrack.h 2014-10-06 00:31:05 UTC (rev 174333)
@@ -44,9 +44,10 @@
virtual void finishLoading(ResourceBuffer*) override;
};
-CACHED_RESOURCE_TYPE_CASTS(CachedTextTrack, CachedResource, CachedResource::TextTrackResource)
+} // namespace WebCore
-}
+SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE(CachedTextTrack, CachedResource::TextTrackResource)
-#endif
-#endif
+#endif // ENABLE(VIDEO_TRACK)
+
+#endif // CachedTextTrack_h
Modified: trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.h (174332 => 174333)
--- trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.h 2014-10-06 00:23:58 UTC (rev 174332)
+++ trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.h 2014-10-06 00:31:05 UTC (rev 174333)
@@ -26,6 +26,8 @@
#ifndef CachedXSLStyleSheet_h
#define CachedXSLStyleSheet_h
+#if ENABLE(XSLT)
+
#include "CachedResource.h"
#include <wtf/Vector.h>
@@ -34,7 +36,6 @@
class CachedResourceLoader;
class TextResourceDecoder;
-#if ENABLE(XSLT)
class CachedXSLStyleSheet final : public CachedResource {
public:
CachedXSLStyleSheet(const ResourceRequest&, SessionID);
@@ -57,10 +58,10 @@
virtual void finishLoading(ResourceBuffer*) override;
};
-CACHED_RESOURCE_TYPE_CASTS(CachedXSLStyleSheet, CachedResource, CachedResource::XSLStyleSheet)
+} // namespace WebCore
-#endif
+SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE(CachedXSLStyleSheet, CachedResource::XSLStyleSheet)
-}
+#endif // ENABLE(XSLT)
-#endif
+#endif // CachedXSLStyleSheet_h
Modified: trunk/Source/WebCore/loader/cache/MemoryCache.cpp (174332 => 174333)
--- trunk/Source/WebCore/loader/cache/MemoryCache.cpp 2014-10-06 00:23:58 UTC (rev 174332)
+++ trunk/Source/WebCore/loader/cache/MemoryCache.cpp 2014-10-06 00:31:05 UTC (rev 174333)
@@ -273,7 +273,7 @@
return;
// A resource exists and is not a manually cached image, so just remove it.
- if (!resource->isImage() || !toCachedImage(resource)->isManuallyCached()) {
+ if (!is<CachedImage>(*resource) || !downcast<CachedImage>(*resource).isManuallyCached()) {
evict(resource);
return;
}
@@ -283,7 +283,7 @@
// dead resources are pruned. That might be immediately since
// removing the last client triggers a MemoryCache::prune, so the
// resource may be deleted after this call.
- toCachedImage(resource)->removeClient(&dummyCachedImageClient());
+ downcast<CachedImage>(*resource).removeClient(&dummyCachedImageClient());
}
#endif
Modified: trunk/Source/WebKit/mac/ChangeLog (174332 => 174333)
--- trunk/Source/WebKit/mac/ChangeLog 2014-10-06 00:23:58 UTC (rev 174332)
+++ trunk/Source/WebKit/mac/ChangeLog 2014-10-06 00:31:05 UTC (rev 174333)
@@ -1,3 +1,15 @@
+2014-10-05 Christophe Dumez <[email protected]>
+
+ Use is<>() / downcast<>() for CachedResource subclasses
+ https://bugs.webkit.org/show_bug.cgi?id=137431
+
+ Reviewed by Benjamin Poulain.
+
+ Use is<>() / downcast<>() for CachedResource subclasses.
+
+ * Misc/WebCache.mm:
+ (+[WebCache imageForURL:]):
+
2014-10-02 Daniel Bates <[email protected]>
Use version number 101000 instead of 10100 for OS X Yosemite
Modified: trunk/Source/WebKit/mac/Misc/WebCache.mm (174332 => 174333)
--- trunk/Source/WebKit/mac/Misc/WebCache.mm 2014-10-06 00:23:58 UTC (rev 174332)
+++ trunk/Source/WebKit/mac/Misc/WebCache.mm 2014-10-06 00:31:05 UTC (rev 174333)
@@ -202,12 +202,12 @@
return nullptr;
WebCore::CachedResource* cachedResource = WebCore::memoryCache()->resourceForURL(url);
- if (!cachedResource || !cachedResource->isImage())
+ if (!is<CachedImage>(cachedResource))
return nullptr;
- WebCore::CachedImage* cachedImage = WebCore::toCachedImage(cachedResource);
- if (!cachedImage || !cachedImage->hasImage())
+ WebCore::CachedImage& cachedImage = downcast<CachedImage>(*cachedResource);
+ if (!cachedImage.hasImage())
return nullptr;
- return cachedImage->image()->getCGImageRef();
+ return cachedImage.image()->getCGImageRef();
}
#endif // PLATFORM(IOS)