Use modern for-loops in WebCore/svg.
[WebKit-https.git] / Source / WebCore / svg / graphics / SVGImageCache.cpp
index 0a2f7b0..98e50f6 100644 (file)
 #include "config.h"
 #include "SVGImageCache.h"
 
-#if ENABLE(SVG)
 #include "FrameView.h"
 #include "GraphicsContext.h"
+#include "HTMLImageElement.h"
 #include "ImageBuffer.h"
+#include "LayoutSize.h"
 #include "Page.h"
 #include "RenderSVGRoot.h"
 #include "SVGImage.h"
@@ -47,11 +48,10 @@ void SVGImageCache::removeClientFromCache(const CachedImageClient* client)
 {
     ASSERT(client);
 
-    if (m_imageForContainerMap.contains(client))
-        m_imageForContainerMap.remove(client);
+    m_imageForContainerMap.remove(client);
 }
 
-void SVGImageCache::setContainerSizeForRenderer(const CachedImageClient* client, const IntSize& containerSize, float containerZoom)
+void SVGImageCache::setContainerSizeForRenderer(const CachedImageClient* client, const LayoutSize& containerSize, float containerZoom)
 {
     ASSERT(client);
     ASSERT(!containerSize.isEmpty());
@@ -63,9 +63,9 @@ void SVGImageCache::setContainerSizeForRenderer(const CachedImageClient* client,
     m_imageForContainerMap.set(client, SVGImageForContainer::create(m_svgImage, containerSizeWithoutZoom, containerZoom));
 }
 
-IntSize SVGImageCache::imageSizeForRenderer(const RenderObject* renderer) const
+FloatSize SVGImageCache::imageSizeForRenderer(const RenderObject* renderer) const
 {
-    IntSize imageSize = m_svgImage->size();
+    FloatSize imageSize = m_svgImage->size();
     if (!renderer)
         return imageSize;
 
@@ -73,9 +73,9 @@ IntSize SVGImageCache::imageSizeForRenderer(const RenderObject* renderer) const
     if (it == m_imageForContainerMap.end())
         return imageSize;
 
-    RefPtr<SVGImageForContainer> image = it->value;
-    ASSERT(!image->size().isEmpty());
-    return image->size();
+    RefPtr<SVGImageForContainer> imageForContainer = it->value;
+    ASSERT(!imageForContainer->size().isEmpty());
+    return imageForContainer->size();
 }
 
 // FIXME: This doesn't take into account the animation timeline so animations will not
@@ -89,11 +89,17 @@ Image* SVGImageCache::imageForRenderer(const RenderObject* renderer)
     if (it == m_imageForContainerMap.end())
         return Image::nullImage();
 
-    RefPtr<SVGImageForContainer> image = it->value;
-    ASSERT(!image->size().isEmpty());
-    return image.get();
+    RefPtr<SVGImageForContainer> imageForContainer = it->value;
+    
+    Node* node = renderer->node();
+    if (is<HTMLImageElement>(node)) {
+        const AtomicString& urlString = downcast<HTMLImageElement>(*node).imageSourceURL();
+        URL url = node->document().completeURL(urlString);
+        imageForContainer->setURL(url);
+    }
+        
+    ASSERT(!imageForContainer->size().isEmpty());
+    return imageForContainer.get();
 }
 
 } // namespace WebCore
-
-#endif // ENABLE(SVG)