Reviewed by Eric.

Refactor HTMLImageLoader/SVGImageLoader code.
Move html/HTMLImageLoader.* to loader/ImageLoader.*

Let HTMLImageLoader & SVGImageLoader inherit from the new base class.
SVGImageLoader used to inherit from HTMLImageLoader which is awkward.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@36712 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/svg/SVGImageElement.cpp b/WebCore/svg/SVGImageElement.cpp
index ff1f644..d7daebc 100644
--- a/WebCore/svg/SVGImageElement.cpp
+++ b/WebCore/svg/SVGImageElement.cpp
@@ -131,9 +131,27 @@
 void SVGImageElement::attach()
 {
     SVGStyledTransformableElement::attach();
-    m_imageLoader.updateFromElement();
-    if (RenderSVGImage* imageObj = static_cast<RenderSVGImage*>(renderer()))
+
+    if (RenderSVGImage* imageObj = static_cast<RenderSVGImage*>(renderer())) {
+        if (imageObj->hasImage())
+            return;
+
         imageObj->setCachedImage(m_imageLoader.image());
+    }
+}
+
+void SVGImageElement::insertedIntoDocument()
+{
+    SVGStyledTransformableElement::insertedIntoDocument();
+
+    // Update image loader, as soon as we're living in the tree.
+    // We can only resolve base URIs properly, after that!
+    m_imageLoader.updateFromElement();
+}
+
+const QualifiedName& SVGImageElement::imageSourceAttributeName() const
+{
+    return XLinkNames::hrefAttr;
 }
 
 void SVGImageElement::getSubresourceAttributeStrings(Vector<String>& urls) const