<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[174333] trunk/Source</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/174333">174333</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2014-10-05 17:31:05 -0700 (Sun, 05 Oct 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>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:]):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorPageAgentcpp">trunk/Source/WebCore/inspector/InspectorPageAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedCSSStyleSheeth">trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.h</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedFonth">trunk/Source/WebCore/loader/cache/CachedFont.h</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedImagecpp">trunk/Source/WebCore/loader/cache/CachedImage.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedImageh">trunk/Source/WebCore/loader/cache/CachedImage.h</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedResourceh">trunk/Source/WebCore/loader/cache/CachedResource.h</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedResourceLoadercpp">trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedSVGDocumenth">trunk/Source/WebCore/loader/cache/CachedSVGDocument.h</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedScripth">trunk/Source/WebCore/loader/cache/CachedScript.h</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedTextTrackh">trunk/Source/WebCore/loader/cache/CachedTextTrack.h</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedXSLStyleSheeth">trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.h</a></li>
<li><a href="#trunkSourceWebCoreloadercacheMemoryCachecpp">trunk/Source/WebCore/loader/cache/MemoryCache.cpp</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacMiscWebCachemm">trunk/Source/WebKit/mac/Misc/WebCache.mm</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (174332 => 174333)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -1,5 +1,41 @@
</span><span class="cx"> 2014-10-05 Christophe Dumez <cdumez@apple.com>
</span><span class="cx">
</span><ins>+ 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 <cdumez@apple.com>
+
</ins><span class="cx"> Use is<>() / downcast<>() for StyleSheet subclasses
</span><span class="cx"> https://bugs.webkit.org/show_bug.cgi?id=137429
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorPageAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorPageAgent.cpp (174332 => 174333)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -162,10 +162,10 @@
</span><span class="cx"> if (cachedResource) {
</span><span class="cx"> switch (cachedResource->type()) {
</span><span class="cx"> case CachedResource::CSSStyleSheet:
</span><del>- *result = toCachedCSSStyleSheet(cachedResource)->sheetText(false);
</del><ins>+ *result = downcast<CachedCSSStyleSheet>(*cachedResource).sheetText(false);
</ins><span class="cx"> return true;
</span><span class="cx"> case CachedResource::Script:
</span><del>- *result = toCachedScript(cachedResource)->script();
</del><ins>+ *result = downcast<CachedScript>(*cachedResource).script();
</ins><span class="cx"> return true;
</span><span class="cx"> case CachedResource::RawResource: {
</span><span class="cx"> ResourceBuffer* buffer = cachedResource->resourceBuffer();
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedCSSStyleSheeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.h (174332 => 174333)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -66,8 +66,8 @@
</span><span class="cx"> RefPtr<StyleSheetContents> m_parsedStyleSheetCache;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-CACHED_RESOURCE_TYPE_CASTS(CachedCSSStyleSheet, CachedResource, CachedResource::CSSStyleSheet)
</del><ins>+} // namespace WebCore
</ins><span class="cx">
</span><del>-}
</del><ins>+SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE(CachedCSSStyleSheet, CachedResource::CSSStyleSheet)
</ins><span class="cx">
</span><del>-#endif
</del><ins>+#endif // CachedCSSStyleSheet_h
</ins></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedFonth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedFont.h (174332 => 174333)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -78,8 +78,8 @@
</span><span class="cx"> friend class MemoryCache;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-CACHED_RESOURCE_TYPE_CASTS(CachedFont, CachedResource, CachedResource::FontResource)
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><ins>+SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE(CachedFont, CachedResource::FontResource)
+
</ins><span class="cx"> #endif // CachedFont_h
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedImage.cpp (174332 => 174333)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -145,8 +145,7 @@
</span><span class="cx">
</span><span class="cx"> void CachedImage::switchClientsToRevalidatedResource()
</span><span class="cx"> {
</span><del>- ASSERT(resourceToRevalidate());
- ASSERT(resourceToRevalidate()->isImage());
</del><ins>+ ASSERT(is<CachedImage>(resourceToRevalidate()));
</ins><span class="cx"> // Pending container size requests need to be transferred to the revalidated resource.
</span><span class="cx"> if (!m_pendingContainerSizeRequests.isEmpty()) {
</span><span class="cx"> // A copy of pending size requests is needed as they are deleted during CachedResource::switchClientsToRevalidateResouce().
</span><span class="lines">@@ -154,9 +153,9 @@
</span><span class="cx"> for (ContainerSizeRequests::iterator it = m_pendingContainerSizeRequests.begin(); it != m_pendingContainerSizeRequests.end(); ++it)
</span><span class="cx"> switchContainerSizeRequests.set(it->key, it->value);
</span><span class="cx"> CachedResource::switchClientsToRevalidatedResource();
</span><del>- CachedImage* revalidatedCachedImage = toCachedImage(resourceToRevalidate());
</del><ins>+ CachedImage& revalidatedCachedImage = downcast<CachedImage>(*resourceToRevalidate());
</ins><span class="cx"> for (ContainerSizeRequests::iterator it = switchContainerSizeRequests.begin(); it != switchContainerSizeRequests.end(); ++it)
</span><del>- revalidatedCachedImage->setContainerSizeForRenderer(it->key, it->value.first, it->value.second);
</del><ins>+ revalidatedCachedImage.setContainerSizeForRenderer(it->key, it->value.first, it->value.second);
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedImageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedImage.h (174332 => 174333)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -84,12 +84,11 @@
</span><span class="cx">
</span><span class="cx"> bool isManuallyCached() const { return m_isManuallyCached; }
</span><span class="cx"> virtual bool mustRevalidateDueToCacheHeaders(CachePolicy) const;
</span><ins>+ virtual void load(CachedResourceLoader*, const ResourceLoaderOptions&) override;
</ins><span class="cx">
</span><span class="cx"> bool isOriginClean(SecurityOrigin*);
</span><span class="cx">
</span><span class="cx"> private:
</span><del>- virtual void load(CachedResourceLoader*, const ResourceLoaderOptions&) override;
-
</del><span class="cx"> void clear();
</span><span class="cx">
</span><span class="cx"> void createImage();
</span><span class="lines">@@ -135,8 +134,8 @@
</span><span class="cx"> unsigned char m_shouldPaintBrokenImage : 1;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-CACHED_RESOURCE_TYPE_CASTS(CachedImage, CachedResource, CachedResource::ImageResource)
</del><ins>+} // namespace WebCore
</ins><span class="cx">
</span><del>-}
</del><ins>+SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE(CachedImage, CachedResource::ImageResource)
</ins><span class="cx">
</span><del>-#endif
</del><ins>+#endif // CachedImage_h
</ins></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedResourceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedResource.h (174332 => 174333)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> #include <wtf/HashCountedSet.h>
</span><span class="cx"> #include <wtf/HashSet.h>
</span><span class="cx"> #include <wtf/OwnPtr.h>
</span><ins>+#include <wtf/TypeCasts.h>
</ins><span class="cx"> #include <wtf/Vector.h>
</span><span class="cx"> #include <wtf/text/WTFString.h>
</span><span class="cx">
</span><span class="lines">@@ -360,9 +361,11 @@
</span><span class="cx"> double m_redirectChainEndOfValidity;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-#define CACHED_RESOURCE_TYPE_CASTS(ToClassName, FromClassName, CachedResourceType) \
- TYPE_CASTS_BASE(ToClassName, FromClassName, resource, resource->type() == CachedResourceType, resource.type() == CachedResourceType)
</del><ins>+} // namespace WebCore
</ins><span class="cx">
</span><del>-}
</del><ins>+#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()
</ins><span class="cx">
</span><del>-#endif
</del><ins>+#endif // CachedResource_h
</ins></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedResourceLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp (174332 => 174333)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -170,24 +170,24 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> request.setDefer(clientDefersImage(request.resourceRequest().url()) ? CachedResourceRequest::DeferredByClient : CachedResourceRequest::NoDefer);
</span><del>- return toCachedImage(requestResource(CachedResource::ImageResource, request).get());
</del><ins>+ return downcast<CachedImage>(requestResource(CachedResource::ImageResource, request).get());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> CachedResourceHandle<CachedFont> CachedResourceLoader::requestFont(CachedResourceRequest& request)
</span><span class="cx"> {
</span><del>- return toCachedFont(requestResource(CachedResource::FontResource, request).get());
</del><ins>+ return downcast<CachedFont>(requestResource(CachedResource::FontResource, request).get());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><span class="cx"> CachedResourceHandle<CachedTextTrack> CachedResourceLoader::requestTextTrack(CachedResourceRequest& request)
</span><span class="cx"> {
</span><del>- return toCachedTextTrack(requestResource(CachedResource::TextTrackResource, request).get());
</del><ins>+ return downcast<CachedTextTrack>(requestResource(CachedResource::TextTrackResource, request).get());
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> CachedResourceHandle<CachedCSSStyleSheet> CachedResourceLoader::requestCSSStyleSheet(CachedResourceRequest& request)
</span><span class="cx"> {
</span><del>- return toCachedCSSStyleSheet(requestResource(CachedResource::CSSStyleSheet, request).get());
</del><ins>+ return downcast<CachedCSSStyleSheet>(requestResource(CachedResource::CSSStyleSheet, request).get());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> CachedResourceHandle<CachedCSSStyleSheet> CachedResourceLoader::requestUserCSSStyleSheet(CachedResourceRequest& request)
</span><span class="lines">@@ -199,8 +199,8 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> if (CachedResource* existing = memoryCache()->resourceForRequest(request.resourceRequest(), sessionID())) {
</span><del>- if (existing->type() == CachedResource::CSSStyleSheet)
- return toCachedCSSStyleSheet(existing);
</del><ins>+ if (is<CachedCSSStyleSheet>(*existing))
+ return downcast<CachedCSSStyleSheet>(existing);
</ins><span class="cx"> memoryCache()->remove(existing);
</span><span class="cx"> }
</span><span class="cx"> if (url.string() != request.resourceRequest().url())
</span><span class="lines">@@ -218,19 +218,19 @@
</span><span class="cx">
</span><span class="cx"> CachedResourceHandle<CachedScript> CachedResourceLoader::requestScript(CachedResourceRequest& request)
</span><span class="cx"> {
</span><del>- return toCachedScript(requestResource(CachedResource::Script, request).get());
</del><ins>+ return downcast<CachedScript>(requestResource(CachedResource::Script, request).get());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> #if ENABLE(XSLT)
</span><span class="cx"> CachedResourceHandle<CachedXSLStyleSheet> CachedResourceLoader::requestXSLStyleSheet(CachedResourceRequest& request)
</span><span class="cx"> {
</span><del>- return toCachedXSLStyleSheet(requestResource(CachedResource::XSLStyleSheet, request).get());
</del><ins>+ return downcast<CachedXSLStyleSheet>(requestResource(CachedResource::XSLStyleSheet, request).get());
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> CachedResourceHandle<CachedSVGDocument> CachedResourceLoader::requestSVGDocument(CachedResourceRequest& request)
</span><span class="cx"> {
</span><del>- return toCachedSVGDocument(requestResource(CachedResource::SVGDocumentResource, request).get());
</del><ins>+ return downcast<CachedSVGDocument>(requestResource(CachedResource::SVGDocumentResource, request).get());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> #if ENABLE(LINK_PREFETCH)
</span><span class="lines">@@ -703,8 +703,8 @@
</span><span class="cx"> DocumentResourceMap::iterator end = m_documentResources.end();
</span><span class="cx"> for (DocumentResourceMap::iterator it = m_documentResources.begin(); it != end; ++it) {
</span><span class="cx"> CachedResource* resource = it->value.get();
</span><del>- if (resource->isImage() && resource->stillNeedsLoad() && !clientDefersImage(resource->url()))
- const_cast<CachedResource*>(resource)->load(this, defaultCachedResourceOptions());
</del><ins>+ if (is<CachedImage>(*resource) && resource->stillNeedsLoad() && !clientDefersImage(resource->url()))
+ downcast<CachedImage>(*resource).load(this, defaultCachedResourceOptions());
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedSVGDocumenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedSVGDocument.h (174332 => 174333)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -48,8 +48,8 @@
</span><span class="cx"> virtual void finishLoading(ResourceBuffer*) override;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-CACHED_RESOURCE_TYPE_CASTS(CachedSVGDocument, CachedResource, CachedResource::SVGDocumentResource)
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><ins>+SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE(CachedSVGDocument, CachedResource::SVGDocumentResource)
+
</ins><span class="cx"> #endif // CachedSVGDocument_h
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedScripth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedScript.h (174332 => 174333)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -61,8 +61,8 @@
</span><span class="cx"> RefPtr<TextResourceDecoder> m_decoder;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-CACHED_RESOURCE_TYPE_CASTS(CachedScript, CachedResource, CachedResource::Script)
</del><ins>+} // namespace WebCore
</ins><span class="cx">
</span><del>-}
</del><ins>+SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE(CachedScript, CachedResource::Script)
</ins><span class="cx">
</span><del>-#endif
</del><ins>+#endif // CachedScript_h
</ins></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedTextTrackh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedTextTrack.h (174332 => 174333)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -44,9 +44,10 @@
</span><span class="cx"> virtual void finishLoading(ResourceBuffer*) override;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-CACHED_RESOURCE_TYPE_CASTS(CachedTextTrack, CachedResource, CachedResource::TextTrackResource)
</del><ins>+} // namespace WebCore
</ins><span class="cx">
</span><del>-}
</del><ins>+SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE(CachedTextTrack, CachedResource::TextTrackResource)
</ins><span class="cx">
</span><del>-#endif
-#endif
</del><ins>+#endif // ENABLE(VIDEO_TRACK)
+
+#endif // CachedTextTrack_h
</ins></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedXSLStyleSheeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.h (174332 => 174333)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -26,6 +26,8 @@
</span><span class="cx"> #ifndef CachedXSLStyleSheet_h
</span><span class="cx"> #define CachedXSLStyleSheet_h
</span><span class="cx">
</span><ins>+#if ENABLE(XSLT)
+
</ins><span class="cx"> #include "CachedResource.h"
</span><span class="cx"> #include <wtf/Vector.h>
</span><span class="cx">
</span><span class="lines">@@ -34,7 +36,6 @@
</span><span class="cx"> class CachedResourceLoader;
</span><span class="cx"> class TextResourceDecoder;
</span><span class="cx">
</span><del>-#if ENABLE(XSLT)
</del><span class="cx"> class CachedXSLStyleSheet final : public CachedResource {
</span><span class="cx"> public:
</span><span class="cx"> CachedXSLStyleSheet(const ResourceRequest&, SessionID);
</span><span class="lines">@@ -57,10 +58,10 @@
</span><span class="cx"> virtual void finishLoading(ResourceBuffer*) override;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-CACHED_RESOURCE_TYPE_CASTS(CachedXSLStyleSheet, CachedResource, CachedResource::XSLStyleSheet)
</del><ins>+} // namespace WebCore
</ins><span class="cx">
</span><del>-#endif
</del><ins>+SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE(CachedXSLStyleSheet, CachedResource::XSLStyleSheet)
</ins><span class="cx">
</span><del>-}
</del><ins>+#endif // ENABLE(XSLT)
</ins><span class="cx">
</span><del>-#endif
</del><ins>+#endif // CachedXSLStyleSheet_h
</ins></span></pre></div>
<a id="trunkSourceWebCoreloadercacheMemoryCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/MemoryCache.cpp (174332 => 174333)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -273,7 +273,7 @@
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> // A resource exists and is not a manually cached image, so just remove it.
</span><del>- if (!resource->isImage() || !toCachedImage(resource)->isManuallyCached()) {
</del><ins>+ if (!is<CachedImage>(*resource) || !downcast<CachedImage>(*resource).isManuallyCached()) {
</ins><span class="cx"> evict(resource);
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="lines">@@ -283,7 +283,7 @@
</span><span class="cx"> // dead resources are pruned. That might be immediately since
</span><span class="cx"> // removing the last client triggers a MemoryCache::prune, so the
</span><span class="cx"> // resource may be deleted after this call.
</span><del>- toCachedImage(resource)->removeClient(&dummyCachedImageClient());
</del><ins>+ downcast<CachedImage>(*resource).removeClient(&dummyCachedImageClient());
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (174332 => 174333)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2014-10-05 Christophe Dumez <cdumez@apple.com>
+
+ 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:]):
+
</ins><span class="cx"> 2014-10-02 Daniel Bates <dabates@apple.com>
</span><span class="cx">
</span><span class="cx"> Use version number 101000 instead of 10100 for OS X Yosemite
</span></span></pre></div>
<a id="trunkSourceWebKitmacMiscWebCachemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/Misc/WebCache.mm (174332 => 174333)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -202,12 +202,12 @@
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><span class="cx"> WebCore::CachedResource* cachedResource = WebCore::memoryCache()->resourceForURL(url);
</span><del>- if (!cachedResource || !cachedResource->isImage())
</del><ins>+ if (!is<CachedImage>(cachedResource))
</ins><span class="cx"> return nullptr;
</span><del>- WebCore::CachedImage* cachedImage = WebCore::toCachedImage(cachedResource);
- if (!cachedImage || !cachedImage->hasImage())
</del><ins>+ WebCore::CachedImage& cachedImage = downcast<CachedImage>(*cachedResource);
+ if (!cachedImage.hasImage())
</ins><span class="cx"> return nullptr;
</span><del>- return cachedImage->image()->getCGImageRef();
</del><ins>+ return cachedImage.image()->getCGImageRef();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> #endif // PLATFORM(IOS)
</span></span></pre>
</div>
</div>
</body>
</html>