<!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&lt;&gt;() / downcast&lt;&gt;() for CachedResource subclasses
https://bugs.webkit.org/show_bug.cgi?id=137431

Reviewed by Benjamin Poulain.

Use is&lt;&gt;() / downcast&lt;&gt;() 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  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Use is&lt;&gt;() / downcast&lt;&gt;() for CachedResource subclasses
+        https://bugs.webkit.org/show_bug.cgi?id=137431
+
+        Reviewed by Benjamin Poulain.
+
+        Use is&lt;&gt;() / downcast&lt;&gt;() 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  &lt;cdumez@apple.com&gt;
+
</ins><span class="cx">         Use is&lt;&gt;() / downcast&lt;&gt;() 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-&gt;type()) {
</span><span class="cx">         case CachedResource::CSSStyleSheet:
</span><del>-            *result = toCachedCSSStyleSheet(cachedResource)-&gt;sheetText(false);
</del><ins>+            *result = downcast&lt;CachedCSSStyleSheet&gt;(*cachedResource).sheetText(false);
</ins><span class="cx">             return true;
</span><span class="cx">         case CachedResource::Script:
</span><del>-            *result = toCachedScript(cachedResource)-&gt;script();
</del><ins>+            *result = downcast&lt;CachedScript&gt;(*cachedResource).script();
</ins><span class="cx">             return true;
</span><span class="cx">         case CachedResource::RawResource: {
</span><span class="cx">             ResourceBuffer* buffer = cachedResource-&gt;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&lt;StyleSheetContents&gt; 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()-&gt;isImage());
</del><ins>+    ASSERT(is&lt;CachedImage&gt;(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-&gt;key, it-&gt;value);
</span><span class="cx">         CachedResource::switchClientsToRevalidatedResource();
</span><del>-        CachedImage* revalidatedCachedImage = toCachedImage(resourceToRevalidate());
</del><ins>+        CachedImage&amp; revalidatedCachedImage = downcast&lt;CachedImage&gt;(*resourceToRevalidate());
</ins><span class="cx">         for (ContainerSizeRequests::iterator it = switchContainerSizeRequests.begin(); it != switchContainerSizeRequests.end(); ++it)
</span><del>-            revalidatedCachedImage-&gt;setContainerSizeForRenderer(it-&gt;key, it-&gt;value.first, it-&gt;value.second);
</del><ins>+            revalidatedCachedImage.setContainerSizeForRenderer(it-&gt;key, it-&gt;value.first, it-&gt;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&amp;) 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&amp;) 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 &lt;wtf/HashCountedSet.h&gt;
</span><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><span class="cx"> #include &lt;wtf/OwnPtr.h&gt;
</span><ins>+#include &lt;wtf/TypeCasts.h&gt;
</ins><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</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-&gt;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&amp; 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&lt;CachedImage&gt;(requestResource(CachedResource::ImageResource, request).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> CachedResourceHandle&lt;CachedFont&gt; CachedResourceLoader::requestFont(CachedResourceRequest&amp; request)
</span><span class="cx"> {
</span><del>-    return toCachedFont(requestResource(CachedResource::FontResource, request).get());
</del><ins>+    return downcast&lt;CachedFont&gt;(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&lt;CachedTextTrack&gt; CachedResourceLoader::requestTextTrack(CachedResourceRequest&amp; request)
</span><span class="cx"> {
</span><del>-    return toCachedTextTrack(requestResource(CachedResource::TextTrackResource, request).get());
</del><ins>+    return downcast&lt;CachedTextTrack&gt;(requestResource(CachedResource::TextTrackResource, request).get());
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> CachedResourceHandle&lt;CachedCSSStyleSheet&gt; CachedResourceLoader::requestCSSStyleSheet(CachedResourceRequest&amp; request)
</span><span class="cx"> {
</span><del>-    return toCachedCSSStyleSheet(requestResource(CachedResource::CSSStyleSheet, request).get());
</del><ins>+    return downcast&lt;CachedCSSStyleSheet&gt;(requestResource(CachedResource::CSSStyleSheet, request).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> CachedResourceHandle&lt;CachedCSSStyleSheet&gt; CachedResourceLoader::requestUserCSSStyleSheet(CachedResourceRequest&amp; 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()-&gt;resourceForRequest(request.resourceRequest(), sessionID())) {
</span><del>-        if (existing-&gt;type() == CachedResource::CSSStyleSheet)
-            return toCachedCSSStyleSheet(existing);
</del><ins>+        if (is&lt;CachedCSSStyleSheet&gt;(*existing))
+            return downcast&lt;CachedCSSStyleSheet&gt;(existing);
</ins><span class="cx">         memoryCache()-&gt;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&lt;CachedScript&gt; CachedResourceLoader::requestScript(CachedResourceRequest&amp; request)
</span><span class="cx"> {
</span><del>-    return toCachedScript(requestResource(CachedResource::Script, request).get());
</del><ins>+    return downcast&lt;CachedScript&gt;(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&lt;CachedXSLStyleSheet&gt; CachedResourceLoader::requestXSLStyleSheet(CachedResourceRequest&amp; request)
</span><span class="cx"> {
</span><del>-    return toCachedXSLStyleSheet(requestResource(CachedResource::XSLStyleSheet, request).get());
</del><ins>+    return downcast&lt;CachedXSLStyleSheet&gt;(requestResource(CachedResource::XSLStyleSheet, request).get());
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> CachedResourceHandle&lt;CachedSVGDocument&gt; CachedResourceLoader::requestSVGDocument(CachedResourceRequest&amp; request)
</span><span class="cx"> {
</span><del>-    return toCachedSVGDocument(requestResource(CachedResource::SVGDocumentResource, request).get());
</del><ins>+    return downcast&lt;CachedSVGDocument&gt;(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-&gt;value.get();
</span><del>-        if (resource-&gt;isImage() &amp;&amp; resource-&gt;stillNeedsLoad() &amp;&amp; !clientDefersImage(resource-&gt;url()))
-            const_cast&lt;CachedResource*&gt;(resource)-&gt;load(this, defaultCachedResourceOptions());
</del><ins>+        if (is&lt;CachedImage&gt;(*resource) &amp;&amp; resource-&gt;stillNeedsLoad() &amp;&amp; !clientDefersImage(resource-&gt;url()))
+            downcast&lt;CachedImage&gt;(*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&lt;TextResourceDecoder&gt; 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 &quot;CachedResource.h&quot;
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</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&amp;, 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-&gt;isImage() || !toCachedImage(resource)-&gt;isManuallyCached()) {
</del><ins>+    if (!is&lt;CachedImage&gt;(*resource) || !downcast&lt;CachedImage&gt;(*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)-&gt;removeClient(&amp;dummyCachedImageClient());
</del><ins>+    downcast&lt;CachedImage&gt;(*resource).removeClient(&amp;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  &lt;cdumez@apple.com&gt;
+
+        Use is&lt;&gt;() / downcast&lt;&gt;() for CachedResource subclasses
+        https://bugs.webkit.org/show_bug.cgi?id=137431
+
+        Reviewed by Benjamin Poulain.
+
+        Use is&lt;&gt;() / downcast&lt;&gt;() for CachedResource subclasses.
+
+        * Misc/WebCache.mm:
+        (+[WebCache imageForURL:]):
+
</ins><span class="cx"> 2014-10-02  Daniel Bates  &lt;dabates@apple.com&gt;
</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()-&gt;resourceForURL(url);
</span><del>-    if (!cachedResource || !cachedResource-&gt;isImage())
</del><ins>+    if (!is&lt;CachedImage&gt;(cachedResource))
</ins><span class="cx">         return nullptr;
</span><del>-    WebCore::CachedImage* cachedImage = WebCore::toCachedImage(cachedResource);
-    if (!cachedImage || !cachedImage-&gt;hasImage())
</del><ins>+    WebCore::CachedImage&amp; cachedImage = downcast&lt;CachedImage&gt;(*cachedResource);
+    if (!cachedImage.hasImage())
</ins><span class="cx">         return nullptr;
</span><del>-    return cachedImage-&gt;image()-&gt;getCGImageRef();
</del><ins>+    return cachedImage.image()-&gt;getCGImageRef();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif // PLATFORM(IOS)
</span></span></pre>
</div>
</div>

</body>
</html>