Title: [174333] trunk/Source
Revision
174333
Author
[email protected]
Date
2014-10-05 17:31:05 -0700 (Sun, 05 Oct 2014)

Log Message

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.

Source/WebCore:

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):

Source/WebKit/mac:

* Misc/WebCache.mm:
(+[WebCache imageForURL:]):

Modified Paths

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)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to