Title: [292796] trunk/Source/WebCore
Revision
292796
Author
[email protected]
Date
2022-04-12 20:58:56 -0700 (Tue, 12 Apr 2022)

Log Message

Use safer downcast<>() for CachedResourceClient subclasses
https://bugs.webkit.org/show_bug.cgi?id=239220

Reviewed by Simon Fraser.

* loader/LinkPreloadResourceClients.h:
(WebCore::LinkPreloadImageResourceClient::LinkPreloadImageResourceClient):
* loader/cache/CachedCSSStyleSheet.cpp:
(WebCore::CachedCSSStyleSheet::didAddClient):
* loader/cache/CachedFont.cpp:
(WebCore::CachedFont::didAddClient):
* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::didAddClient):
(WebCore::CachedImage::didRemoveClient):
* loader/cache/CachedImageClient.h:
* loader/cache/CachedRawResource.cpp:
(WebCore::CachedRawResource::didAddClient):
* loader/cache/CachedRawResourceClient.h:
* loader/cache/CachedResourceClient.h:
* loader/cache/CachedResourceLoader.cpp:
(WebCore::createResource):
* loader/cache/CachedSVGDocumentClient.h:
* loader/cache/CachedStyleSheetClient.h:
* loader/cache/CachedXSLStyleSheet.cpp:
(WebCore::CachedXSLStyleSheet::didAddClient):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (292795 => 292796)


--- trunk/Source/WebCore/ChangeLog	2022-04-13 03:54:32 UTC (rev 292795)
+++ trunk/Source/WebCore/ChangeLog	2022-04-13 03:58:56 UTC (rev 292796)
@@ -1,3 +1,31 @@
+2022-04-12  Chris Dumez  <[email protected]>
+
+        Use safer downcast<>() for CachedResourceClient subclasses
+        https://bugs.webkit.org/show_bug.cgi?id=239220
+
+        Reviewed by Simon Fraser.
+
+        * loader/LinkPreloadResourceClients.h:
+        (WebCore::LinkPreloadImageResourceClient::LinkPreloadImageResourceClient):
+        * loader/cache/CachedCSSStyleSheet.cpp:
+        (WebCore::CachedCSSStyleSheet::didAddClient):
+        * loader/cache/CachedFont.cpp:
+        (WebCore::CachedFont::didAddClient):
+        * loader/cache/CachedImage.cpp:
+        (WebCore::CachedImage::didAddClient):
+        (WebCore::CachedImage::didRemoveClient):
+        * loader/cache/CachedImageClient.h:
+        * loader/cache/CachedRawResource.cpp:
+        (WebCore::CachedRawResource::didAddClient):
+        * loader/cache/CachedRawResourceClient.h:
+        * loader/cache/CachedResourceClient.h:
+        * loader/cache/CachedResourceLoader.cpp:
+        (WebCore::createResource):
+        * loader/cache/CachedSVGDocumentClient.h:
+        * loader/cache/CachedStyleSheetClient.h:
+        * loader/cache/CachedXSLStyleSheet.cpp:
+        (WebCore::CachedXSLStyleSheet::didAddClient):
+
 2022-04-12  Devin Rousso  <[email protected]>
 
         [Modern Media Controls] allow skipping by durations other than 15s

Modified: trunk/Source/WebCore/loader/LinkPreloadResourceClients.h (292795 => 292796)


--- trunk/Source/WebCore/loader/LinkPreloadResourceClients.h	2022-04-13 03:54:32 UTC (rev 292795)
+++ trunk/Source/WebCore/loader/LinkPreloadResourceClients.h	2022-04-13 03:58:56 UTC (rev 292796)
@@ -116,7 +116,7 @@
     WTF_MAKE_FAST_ALLOCATED;
 public:
     LinkPreloadImageResourceClient(LinkLoader& loader, CachedImage& resource)
-        : LinkPreloadResourceClient(loader, static_cast<CachedResource&>(resource))
+        : LinkPreloadResourceClient(loader, resource)
     {
         addResource(*this);
     }

Modified: trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp (292795 => 292796)


--- trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp	2022-04-13 03:54:32 UTC (rev 292795)
+++ trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp	2022-04-13 03:58:56 UTC (rev 292796)
@@ -59,7 +59,7 @@
     CachedResource::didAddClient(client);
 
     if (!isLoading())
-        static_cast<CachedStyleSheetClient&>(client).setCSSStyleSheet(m_resourceRequest.url().string(), m_response.url(), String::fromLatin1(m_decoder->encoding().name()), this);
+        downcast<CachedStyleSheetClient>(client).setCSSStyleSheet(m_resourceRequest.url().string(), m_response.url(), String::fromLatin1(m_decoder->encoding().name()), this);
 }
 
 void CachedCSSStyleSheet::setEncoding(const String& chs)

Modified: trunk/Source/WebCore/loader/cache/CachedFont.cpp (292795 => 292796)


--- trunk/Source/WebCore/loader/cache/CachedFont.cpp	2022-04-13 03:54:32 UTC (rev 292795)
+++ trunk/Source/WebCore/loader/cache/CachedFont.cpp	2022-04-13 03:58:56 UTC (rev 292796)
@@ -61,7 +61,7 @@
 {
     ASSERT(client.resourceClientType() == CachedFontClient::expectedType());
     if (!isLoading())
-        static_cast<CachedFontClient&>(client).fontLoaded(*this);
+        downcast<CachedFontClient>(client).fontLoaded(*this);
 }
 
 void CachedFont::finishLoading(const FragmentedSharedBuffer* data, const NetworkLoadMetrics& metrics)

Modified: trunk/Source/WebCore/loader/cache/CachedFontClient.h (292795 => 292796)


--- trunk/Source/WebCore/loader/cache/CachedFontClient.h	2022-04-13 03:54:32 UTC (rev 292795)
+++ trunk/Source/WebCore/loader/cache/CachedFontClient.h	2022-04-13 03:58:56 UTC (rev 292796)
@@ -40,3 +40,5 @@
 };
 
 } // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE_CLIENT(CachedFontClient, FontType);

Modified: trunk/Source/WebCore/loader/cache/CachedImage.cpp (292795 => 292796)


--- trunk/Source/WebCore/loader/cache/CachedImage.cpp	2022-04-13 03:54:32 UTC (rev 292795)
+++ trunk/Source/WebCore/loader/cache/CachedImage.cpp	2022-04-13 03:58:56 UTC (rev 292796)
@@ -133,7 +133,7 @@
 
     ASSERT(client.resourceClientType() == CachedImageClient::expectedType());
     if (m_image && !m_image->isNull())
-        static_cast<CachedImageClient&>(client).imageChanged(this);
+        downcast<CachedImageClient>(client).imageChanged(this);
 
     if (m_image)
         m_image->startAnimationAsynchronously();
@@ -145,15 +145,15 @@
 {
     ASSERT(client.resourceClientType() == CachedImageClient::expectedType());
 
-    m_pendingContainerContextRequests.remove(&static_cast<CachedImageClient&>(client));
-    m_clientsWaitingForAsyncDecoding.remove(&static_cast<CachedImageClient&>(client));
+    m_pendingContainerContextRequests.remove(&downcast<CachedImageClient>(client));
+    m_clientsWaitingForAsyncDecoding.remove(&downcast<CachedImageClient>(client));
 
     if (m_svgImageCache)
-        m_svgImageCache->removeClientFromCache(&static_cast<CachedImageClient&>(client));
+        m_svgImageCache->removeClientFromCache(&downcast<CachedImageClient>(client));
 
     CachedResource::didRemoveClient(client);
 
-    static_cast<CachedImageClient&>(client).didRemoveCachedImageClient(*this);
+    downcast<CachedImageClient>(client).didRemoveCachedImageClient(*this);
 }
 
 bool CachedImage::isClientWaitingForAsyncDecoding(CachedImageClient& client) const

Modified: trunk/Source/WebCore/loader/cache/CachedImageClient.h (292795 => 292796)


--- trunk/Source/WebCore/loader/cache/CachedImageClient.h	2022-04-13 03:54:32 UTC (rev 292795)
+++ trunk/Source/WebCore/loader/cache/CachedImageClient.h	2022-04-13 03:58:56 UTC (rev 292796)
@@ -56,3 +56,5 @@
 };
 
 } // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE_CLIENT(CachedImageClient, ImageType);

Modified: trunk/Source/WebCore/loader/cache/CachedRawResource.cpp (292795 => 292796)


--- trunk/Source/WebCore/loader/cache/CachedRawResource.cpp	2022-04-13 03:54:32 UTC (rev 292795)
+++ trunk/Source/WebCore/loader/cache/CachedRawResource.cpp	2022-04-13 03:58:56 UTC (rev 292796)
@@ -159,7 +159,7 @@
 
 void CachedRawResource::didAddClient(CachedResourceClient& c)
 {
-    CachedRawResourceClient& client = static_cast<CachedRawResourceClient&>(c);
+    auto& client = downcast<CachedRawResourceClient>(c);
     size_t redirectCount = m_redirectChain.size();
     Vector<std::pair<ResourceRequest, ResourceResponse>> redirectsInReverseOrder;
     redirectsInReverseOrder.reserveInitialCapacity(redirectCount);

Modified: trunk/Source/WebCore/loader/cache/CachedRawResourceClient.h (292795 => 292796)


--- trunk/Source/WebCore/loader/cache/CachedRawResourceClient.h	2022-04-13 03:54:32 UTC (rev 292795)
+++ trunk/Source/WebCore/loader/cache/CachedRawResourceClient.h	2022-04-13 03:58:56 UTC (rev 292796)
@@ -56,4 +56,6 @@
 #endif
 };
 
-}
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE_CLIENT(CachedRawResourceClient, RawResourceType);

Modified: trunk/Source/WebCore/loader/cache/CachedResourceClient.h (292795 => 292796)


--- trunk/Source/WebCore/loader/cache/CachedResourceClient.h	2022-04-13 03:54:32 UTC (rev 292795)
+++ trunk/Source/WebCore/loader/cache/CachedResourceClient.h	2022-04-13 03:58:56 UTC (rev 292796)
@@ -51,4 +51,9 @@
     CachedResourceClient() = default;
 };
 
-}
+} // namespace WebCore
+
+#define SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE_CLIENT(ToClassName, CachedResourceTypeValue) \
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::ToClassName) \
+    static bool isType(const WebCore::CachedResourceClient& client) { return client.resourceClientType() == WebCore::CachedResourceClient::CachedResourceTypeValue; } \
+SPECIALIZE_TYPE_TRAITS_END()

Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp (292795 => 292796)


--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp	2022-04-13 03:54:32 UTC (rev 292795)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp	2022-04-13 03:58:56 UTC (rev 292796)
@@ -166,9 +166,9 @@
     case CachedResource::Type::Script:
         return new CachedScript(WTFMove(request), resource.sessionID(), resource.cookieJar());
     case CachedResource::Type::SVGDocumentResource:
-        return new CachedSVGDocument(WTFMove(request), static_cast<CachedSVGDocument&>(resource));
+        return new CachedSVGDocument(WTFMove(request), downcast<CachedSVGDocument>(resource));
     case CachedResource::Type::SVGFontResource:
-        return new CachedSVGFont(WTFMove(request), static_cast<CachedSVGFont&>(resource));
+        return new CachedSVGFont(WTFMove(request), downcast<CachedSVGFont>(resource));
     case CachedResource::Type::FontResource:
         return new CachedFont(WTFMove(request), resource.sessionID(), resource.cookieJar());
     case CachedResource::Type::Beacon:

Modified: trunk/Source/WebCore/loader/cache/CachedSVGDocumentClient.h (292795 => 292796)


--- trunk/Source/WebCore/loader/cache/CachedSVGDocumentClient.h	2022-04-13 03:54:32 UTC (rev 292795)
+++ trunk/Source/WebCore/loader/cache/CachedSVGDocumentClient.h	2022-04-13 03:58:56 UTC (rev 292796)
@@ -34,3 +34,5 @@
 };
 
 } // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE_CLIENT(CachedSVGDocumentClient, SVGDocumentType);

Modified: trunk/Source/WebCore/loader/cache/CachedStyleSheetClient.h (292795 => 292796)


--- trunk/Source/WebCore/loader/cache/CachedStyleSheetClient.h	2022-04-13 03:54:32 UTC (rev 292795)
+++ trunk/Source/WebCore/loader/cache/CachedStyleSheetClient.h	2022-04-13 03:58:56 UTC (rev 292796)
@@ -42,3 +42,5 @@
 };
 
 } // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE_CLIENT(CachedStyleSheetClient, StyleSheetType);

Modified: trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.cpp (292795 => 292796)


--- trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.cpp	2022-04-13 03:54:32 UTC (rev 292795)
+++ trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.cpp	2022-04-13 03:58:56 UTC (rev 292796)
@@ -48,7 +48,7 @@
 {
     ASSERT(client.resourceClientType() == CachedStyleSheetClient::expectedType());
     if (!isLoading())
-        static_cast<CachedStyleSheetClient&>(client).setXSLStyleSheet(m_resourceRequest.url().string(), m_response.url(), m_sheet);
+        downcast<CachedStyleSheetClient>(client).setXSLStyleSheet(m_resourceRequest.url().string(), m_response.url(), m_sheet);
 }
 
 void CachedXSLStyleSheet::setEncoding(const String& chs)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to