Title: [163457] trunk/Source/WebCore
Revision
163457
Author
[email protected]
Date
2014-02-05 10:25:26 -0800 (Wed, 05 Feb 2014)

Log Message

CTTE: ImageLoader is always owned by an Element.
<https://webkit.org/b/128254>

- Codify this by making the constructor take Element& or better.
- Make element() return Element&.
- Marked HTMLImageLoader and SVGImageLoader final.
- Made the ImageLoader constructor protected.

Reviewed by Sam Weinig.

* html/HTMLEmbedElement.cpp:
(WebCore::HTMLEmbedElement::parseAttribute):
* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::HTMLImageElement):
* html/HTMLImageLoader.cpp:
(WebCore::HTMLImageLoader::HTMLImageLoader):
(WebCore::HTMLImageLoader::dispatchLoadEvent):
(WebCore::HTMLImageLoader::sourceURI):
(WebCore::HTMLImageLoader::notifyFinished):
* html/HTMLImageLoader.h:
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::imageLoader):
* html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::parseAttribute):
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::startLoadingImage):
* html/HTMLVideoElement.cpp:
(WebCore::HTMLVideoElement::didAttachRenderers):
(WebCore::HTMLVideoElement::parseAttribute):
* loader/ImageLoader.cpp:
(WebCore::ImageLoader::ImageLoader):
(WebCore::ImageLoader::~ImageLoader):
(WebCore::ImageLoader::updateFromElement):
(WebCore::ImageLoader::notifyFinished):
(WebCore::ImageLoader::renderImageResource):
(WebCore::ImageLoader::updatedHasPendingEvent):
(WebCore::ImageLoader::timerFired):
(WebCore::ImageLoader::dispatchPendingBeforeLoadEvent):
(WebCore::ImageLoader::dispatchPendingLoadEvent):
(WebCore::ImageLoader::dispatchPendingErrorEvent):
* loader/ImageLoader.h:
(WebCore::ImageLoader::element):
* svg/SVGImageElement.cpp:
(WebCore::SVGImageElement::SVGImageElement):
* svg/SVGImageLoader.cpp:
(WebCore::SVGImageLoader::SVGImageLoader):
(WebCore::SVGImageLoader::~SVGImageLoader):
(WebCore::SVGImageLoader::dispatchLoadEvent):
(WebCore::SVGImageLoader::sourceURI):
* svg/SVGImageLoader.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (163456 => 163457)


--- trunk/Source/WebCore/ChangeLog	2014-02-05 18:11:33 UTC (rev 163456)
+++ trunk/Source/WebCore/ChangeLog	2014-02-05 18:25:26 UTC (rev 163457)
@@ -1,3 +1,56 @@
+2014-02-05  Andreas Kling  <[email protected]>
+
+        CTTE: ImageLoader is always owned by an Element.
+        <https://webkit.org/b/128254>
+
+        - Codify this by making the constructor take Element& or better.
+        - Make element() return Element&.
+        - Marked HTMLImageLoader and SVGImageLoader final.
+        - Made the ImageLoader constructor protected.
+
+        Reviewed by Sam Weinig.
+
+        * html/HTMLEmbedElement.cpp:
+        (WebCore::HTMLEmbedElement::parseAttribute):
+        * html/HTMLImageElement.cpp:
+        (WebCore::HTMLImageElement::HTMLImageElement):
+        * html/HTMLImageLoader.cpp:
+        (WebCore::HTMLImageLoader::HTMLImageLoader):
+        (WebCore::HTMLImageLoader::dispatchLoadEvent):
+        (WebCore::HTMLImageLoader::sourceURI):
+        (WebCore::HTMLImageLoader::notifyFinished):
+        * html/HTMLImageLoader.h:
+        * html/HTMLInputElement.cpp:
+        (WebCore::HTMLInputElement::imageLoader):
+        * html/HTMLObjectElement.cpp:
+        (WebCore::HTMLObjectElement::parseAttribute):
+        * html/HTMLPlugInImageElement.cpp:
+        (WebCore::HTMLPlugInImageElement::startLoadingImage):
+        * html/HTMLVideoElement.cpp:
+        (WebCore::HTMLVideoElement::didAttachRenderers):
+        (WebCore::HTMLVideoElement::parseAttribute):
+        * loader/ImageLoader.cpp:
+        (WebCore::ImageLoader::ImageLoader):
+        (WebCore::ImageLoader::~ImageLoader):
+        (WebCore::ImageLoader::updateFromElement):
+        (WebCore::ImageLoader::notifyFinished):
+        (WebCore::ImageLoader::renderImageResource):
+        (WebCore::ImageLoader::updatedHasPendingEvent):
+        (WebCore::ImageLoader::timerFired):
+        (WebCore::ImageLoader::dispatchPendingBeforeLoadEvent):
+        (WebCore::ImageLoader::dispatchPendingLoadEvent):
+        (WebCore::ImageLoader::dispatchPendingErrorEvent):
+        * loader/ImageLoader.h:
+        (WebCore::ImageLoader::element):
+        * svg/SVGImageElement.cpp:
+        (WebCore::SVGImageElement::SVGImageElement):
+        * svg/SVGImageLoader.cpp:
+        (WebCore::SVGImageLoader::SVGImageLoader):
+        (WebCore::SVGImageLoader::~SVGImageLoader):
+        (WebCore::SVGImageLoader::dispatchLoadEvent):
+        (WebCore::SVGImageLoader::sourceURI):
+        * svg/SVGImageLoader.h:
+
 2014-02-05  Sergio Correia  <[email protected]>
 
         SVG preserveAspectRatio=none is not honored.

Modified: trunk/Source/WebCore/html/HTMLEmbedElement.cpp (163456 => 163457)


--- trunk/Source/WebCore/html/HTMLEmbedElement.cpp	2014-02-05 18:11:33 UTC (rev 163456)
+++ trunk/Source/WebCore/html/HTMLEmbedElement.cpp	2014-02-05 18:25:26 UTC (rev 163457)
@@ -108,7 +108,7 @@
         document().updateStyleIfNeeded();
         if (renderer() && isImageType()) {
             if (!m_imageLoader)
-                m_imageLoader = adoptPtr(new HTMLImageLoader(this));
+                m_imageLoader = adoptPtr(new HTMLImageLoader(*this));
             m_imageLoader->updateFromElementIgnoringPreviousError();
         }
     } else

Modified: trunk/Source/WebCore/html/HTMLImageElement.cpp (163456 => 163457)


--- trunk/Source/WebCore/html/HTMLImageElement.cpp	2014-02-05 18:11:33 UTC (rev 163456)
+++ trunk/Source/WebCore/html/HTMLImageElement.cpp	2014-02-05 18:25:26 UTC (rev 163457)
@@ -42,7 +42,7 @@
 
 HTMLImageElement::HTMLImageElement(const QualifiedName& tagName, Document& document, HTMLFormElement* form)
     : HTMLElement(tagName, document)
-    , m_imageLoader(this)
+    , m_imageLoader(*this)
     , m_form(form)
     , m_compositeOperator(CompositeSourceOver)
     , m_imageDevicePixelRatio(1.0f)

Modified: trunk/Source/WebCore/html/HTMLImageLoader.cpp (163456 => 163457)


--- trunk/Source/WebCore/html/HTMLImageLoader.cpp	2014-02-05 18:11:33 UTC (rev 163456)
+++ trunk/Source/WebCore/html/HTMLImageLoader.cpp	2014-02-05 18:25:26 UTC (rev 163457)
@@ -37,8 +37,8 @@
 
 namespace WebCore {
 
-HTMLImageLoader::HTMLImageLoader(Element* node)
-    : ImageLoader(node)
+HTMLImageLoader::HTMLImageLoader(Element& element)
+    : ImageLoader(element)
 {
 }
 
@@ -55,13 +55,13 @@
     bool errorOccurred = image()->errorOccurred();
     if (!errorOccurred && image()->response().httpStatusCode() >= 400)
         errorOccurred = isHTMLObjectElement(element()); // An <object> considers a 404 to be an error and should fire onerror.
-    element()->dispatchEvent(Event::create(errorOccurred ? eventNames().errorEvent : eventNames().loadEvent, false, false));
+    element().dispatchEvent(Event::create(errorOccurred ? eventNames().errorEvent : eventNames().loadEvent, false, false));
 }
 
 String HTMLImageLoader::sourceURI(const AtomicString& attr) const
 {
 #if ENABLE(DASHBOARD_SUPPORT)
-    Settings* settings = element()->document().settings();
+    Settings* settings = element().document().settings();
     if (settings && settings->usesDashboardBackwardCompatibilityMode() && attr.length() > 7 && attr.startsWith("url(\"") && attr.endsWith("\")"))
         return attr.string().substring(5, attr.length() - 7);
 #endif
@@ -73,20 +73,20 @@
 {
     CachedImage* cachedImage = image();
 
-    RefPtr<Element> element = this->element();
+    Ref<Element> protect(element());
     ImageLoader::notifyFinished(cachedImage);
 
     bool loadError = cachedImage->errorOccurred() || cachedImage->response().httpStatusCode() >= 400;
     if (!loadError) {
-        if (!element->inDocument()) {
+        if (!element().inDocument()) {
             JSC::VM* vm = JSDOMWindowBase::commonVM();
             JSC::JSLockHolder lock(vm);
             vm->heap.reportExtraMemoryCost(cachedImage->encodedSize());
         }
     }
 
-    if (loadError && isHTMLObjectElement(element.get()))
-        toHTMLObjectElement(element.get())->renderFallbackContent();
+    if (loadError && isHTMLObjectElement(element()))
+        toHTMLObjectElement(element()).renderFallbackContent();
 }
 
 }

Modified: trunk/Source/WebCore/html/HTMLImageLoader.h (163456 => 163457)


--- trunk/Source/WebCore/html/HTMLImageLoader.h	2014-02-05 18:11:33 UTC (rev 163456)
+++ trunk/Source/WebCore/html/HTMLImageLoader.h	2014-02-05 18:25:26 UTC (rev 163457)
@@ -27,9 +27,9 @@
 
 namespace WebCore {
 
-class HTMLImageLoader : public ImageLoader {
+class HTMLImageLoader final : public ImageLoader {
 public:
-    HTMLImageLoader(Element*);
+    explicit HTMLImageLoader(Element&);
     virtual ~HTMLImageLoader();
 
     virtual void dispatchLoadEvent() override;

Modified: trunk/Source/WebCore/html/HTMLInputElement.cpp (163456 => 163457)


--- trunk/Source/WebCore/html/HTMLInputElement.cpp	2014-02-05 18:11:33 UTC (rev 163456)
+++ trunk/Source/WebCore/html/HTMLInputElement.cpp	2014-02-05 18:25:26 UTC (rev 163457)
@@ -142,7 +142,7 @@
 HTMLImageLoader* HTMLInputElement::imageLoader()
 {
     if (!m_imageLoader)
-        m_imageLoader = adoptPtr(new HTMLImageLoader(this));
+        m_imageLoader = adoptPtr(new HTMLImageLoader(*this));
     return m_imageLoader.get();
 }
 

Modified: trunk/Source/WebCore/html/HTMLObjectElement.cpp (163456 => 163457)


--- trunk/Source/WebCore/html/HTMLObjectElement.cpp	2014-02-05 18:11:33 UTC (rev 163456)
+++ trunk/Source/WebCore/html/HTMLObjectElement.cpp	2014-02-05 18:25:26 UTC (rev 163457)
@@ -120,7 +120,7 @@
             setNeedsWidgetUpdate(true);
             if (isImageType()) {
                 if (!m_imageLoader)
-                    m_imageLoader = adoptPtr(new HTMLImageLoader(this));
+                    m_imageLoader = adoptPtr(new HTMLImageLoader(*this));
                 m_imageLoader->updateFromElementIgnoringPreviousError();
             }
         }

Modified: trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp (163456 => 163457)


--- trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp	2014-02-05 18:11:33 UTC (rev 163456)
+++ trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp	2014-02-05 18:25:26 UTC (rev 163457)
@@ -329,7 +329,7 @@
 void HTMLPlugInImageElement::startLoadingImage()
 {
     if (!m_imageLoader)
-        m_imageLoader = adoptPtr(new HTMLImageLoader(this));
+        m_imageLoader = adoptPtr(new HTMLImageLoader(*this));
     m_imageLoader->updateFromElement();
 }
 

Modified: trunk/Source/WebCore/html/HTMLVideoElement.cpp (163456 => 163457)


--- trunk/Source/WebCore/html/HTMLVideoElement.cpp	2014-02-05 18:11:33 UTC (rev 163456)
+++ trunk/Source/WebCore/html/HTMLVideoElement.cpp	2014-02-05 18:25:26 UTC (rev 163457)
@@ -86,7 +86,7 @@
         updateDisplayState();
         if (shouldDisplayPosterImage()) {
             if (!m_imageLoader)
-                m_imageLoader = adoptPtr(new HTMLImageLoader(this));
+                m_imageLoader = adoptPtr(new HTMLImageLoader(*this));
             m_imageLoader->updateFromElement();
             if (renderer())
                 toRenderImage(renderer())->imageResource().setCachedImage(m_imageLoader->image());
@@ -125,7 +125,7 @@
 #endif
         if (shouldDisplayPosterImage()) {
             if (!m_imageLoader)
-                m_imageLoader = adoptPtr(new HTMLImageLoader(this));
+                m_imageLoader = adoptPtr(new HTMLImageLoader(*this));
             m_imageLoader->updateFromElementIgnoringPreviousError();
         } else {
             if (renderer())

Modified: trunk/Source/WebCore/loader/ImageLoader.cpp (163456 => 163457)


--- trunk/Source/WebCore/loader/ImageLoader.cpp	2014-02-05 18:11:33 UTC (rev 163456)
+++ trunk/Source/WebCore/loader/ImageLoader.cpp	2014-02-05 18:25:26 UTC (rev 163457)
@@ -53,8 +53,7 @@
     {
         if (!p)
             return;
-        ASSERT(p->element());
-        ValueCheck<WebCore::Element*>::checkConsistency(p->element());
+        ValueCheck<WebCore::Element*>::checkConsistency(&p->element());
     }
 };
 
@@ -87,7 +86,7 @@
     return frame && frame->loader().pageDismissalEventBeingDispatched() != FrameLoader::NoDismissal;
 }
 
-ImageLoader::ImageLoader(Element* element)
+ImageLoader::ImageLoader(Element& element)
     : m_element(element)
     , m_image(0)
     , m_derefElementTimer(this, &ImageLoader::timerFired)
@@ -120,7 +119,7 @@
     // If the ImageLoader is being destroyed but it is still protecting its image-loading Element,
     // remove that protection here.
     if (m_elementIsProtected)
-        m_element->deref();
+        element().deref();
 }
 
 void ImageLoader::setImage(CachedImage* newImage)
@@ -165,11 +164,11 @@
 {
     // If we're not making renderers for the page, then don't load images.  We don't want to slow
     // down the raw HTML parsing case by loading images we don't intend to display.
-    Document& document = m_element->document();
+    Document& document = element().document();
     if (!document.hasLivingRenderTree())
         return;
 
-    AtomicString attr = m_element->imageSourceURL();
+    AtomicString attr = element().imageSourceURL();
 
     if (attr == m_failedLoadURL)
         return;
@@ -179,9 +178,9 @@
     CachedResourceHandle<CachedImage> newImage = 0;
     if (!attr.isNull() && !stripLeadingAndTrailingHTMLSpaces(attr).isEmpty()) {
         CachedResourceRequest request(ResourceRequest(document.completeURL(sourceURI(attr))));
-        request.setInitiator(element());
+        request.setInitiator(&element());
 
-        String crossOriginMode = m_element->fastGetAttribute(HTMLNames::crossoriginAttr);
+        String crossOriginMode = element().fastGetAttribute(HTMLNames::crossoriginAttr);
         if (!crossOriginMode.isNull()) {
             StoredCredentials allowCredentials = equalIgnoringCase(crossOriginMode, "use-credentials") ? AllowStoredCredentials : DoNotAllowStoredCredentials;
             updateRequestForAccessControl(request.mutableResourceRequest(), document.securityOrigin(), allowCredentials);
@@ -284,9 +283,9 @@
     if (!m_hasPendingLoadEvent)
         return;
 
-    if (m_element->fastHasAttribute(HTMLNames::crossoriginAttr)
-        && !m_element->document().securityOrigin()->canRequest(image()->response().url())
-        && !resource->passesAccessControlCheck(m_element->document().securityOrigin())) {
+    if (element().fastHasAttribute(HTMLNames::crossoriginAttr)
+        && !element().document().securityOrigin()->canRequest(image()->response().url())
+        && !resource->passesAccessControlCheck(element().document().securityOrigin())) {
 
         setImageWithoutConsideringPendingLoadEvent(0);
 
@@ -294,7 +293,7 @@
         errorEventSender().dispatchEventSoon(this);
 
         DEFINE_STATIC_LOCAL(String, consoleMessage, (ASCIILiteral("Cross-origin image load denied by Cross-Origin Resource Sharing policy.")));
-        m_element->document().addConsoleMessage(SecurityMessageSource, ErrorMessageLevel, consoleMessage);
+        element().document().addConsoleMessage(SecurityMessageSource, ErrorMessageLevel, consoleMessage);
 
         ASSERT(!m_hasPendingLoadEvent);
 
@@ -317,7 +316,7 @@
 
 RenderImageResource* ImageLoader::renderImageResource()
 {
-    auto renderer = m_element->renderer();
+    auto renderer = element().renderer();
     if (!renderer)
         return nullptr;
 
@@ -367,7 +366,7 @@
         if (m_derefElementTimer.isActive())
             m_derefElementTimer.stop();
         else
-            m_element->ref();
+            element().ref();
     } else {
         ASSERT(!m_derefElementTimer.isActive());
         m_derefElementTimer.startOneShot(0);
@@ -376,7 +375,7 @@
 
 void ImageLoader::timerFired(Timer<ImageLoader>&)
 {
-    m_element->deref();
+    element().deref();
 }
 
 void ImageLoader::dispatchPendingEvent(ImageEventSender* eventSender)
@@ -397,10 +396,10 @@
         return;
     if (!m_image)
         return;
-    if (!m_element->document().hasLivingRenderTree())
+    if (!element().document().hasLivingRenderTree())
         return;
     m_hasPendingBeforeLoadEvent = false;
-    if (m_element->dispatchBeforeLoadEvent(m_image->url())) {
+    if (element().dispatchBeforeLoadEvent(m_image->url())) {
         updateRenderer();
         return;
     }
@@ -412,8 +411,8 @@
     loadEventSender().cancelEvent(this);
     m_hasPendingLoadEvent = false;
     
-    if (isHTMLObjectElement(m_element))
-        toHTMLObjectElement(m_element)->renderFallbackContent();
+    if (isHTMLObjectElement(element()))
+        toHTMLObjectElement(element()).renderFallbackContent();
 
     // Only consider updating the protection ref-count of the Element immediately before returning
     // from this function as doing so might result in the destruction of this ImageLoader.
@@ -427,7 +426,7 @@
     if (!m_image)
         return;
     m_hasPendingLoadEvent = false;
-    if (m_element->document().hasLivingRenderTree())
+    if (element().document().hasLivingRenderTree())
         dispatchLoadEvent();
 
     // Only consider updating the protection ref-count of the Element immediately before returning
@@ -440,8 +439,8 @@
     if (!m_hasPendingErrorEvent)
         return;
     m_hasPendingErrorEvent = false;
-    if (m_element->document().hasLivingRenderTree())
-        m_element->dispatchEvent(Event::create(eventNames().errorEvent, false, false));
+    if (element().document().hasLivingRenderTree())
+        element().dispatchEvent(Event::create(eventNames().errorEvent, false, false));
 
     // Only consider updating the protection ref-count of the Element immediately before returning
     // from this function as doing so might result in the destruction of this ImageLoader.

Modified: trunk/Source/WebCore/loader/ImageLoader.h (163456 => 163457)


--- trunk/Source/WebCore/loader/ImageLoader.h	2014-02-05 18:11:33 UTC (rev 163456)
+++ trunk/Source/WebCore/loader/ImageLoader.h	2014-02-05 18:25:26 UTC (rev 163457)
@@ -39,7 +39,6 @@
 
 class ImageLoader : public CachedImageClient {
 public:
-    explicit ImageLoader(Element*);
     virtual ~ImageLoader();
 
     // This function should be called when the element is attached to a document; starts
@@ -52,7 +51,9 @@
 
     void elementDidMoveToNewDocument();
 
-    Element* element() const { return m_element; }
+    Element& element() { return m_element; }
+    const Element& element() const { return m_element; }
+
     bool imageComplete() const { return m_imageComplete; }
 
     CachedImage* image() const { return m_image.get(); }
@@ -70,6 +71,7 @@
     static void dispatchPendingErrorEvents();
 
 protected:
+    explicit ImageLoader(Element&);
     virtual void notifyFinished(CachedResource*) override;
 
 private:
@@ -90,7 +92,7 @@
 
     void timerFired(Timer<ImageLoader>&);
 
-    Element* m_element;
+    Element& m_element;
     CachedResourceHandle<CachedImage> m_image;
     Timer<ImageLoader> m_derefElementTimer;
     AtomicString m_failedLoadURL;

Modified: trunk/Source/WebCore/svg/SVGImageElement.cpp (163456 => 163457)


--- trunk/Source/WebCore/svg/SVGImageElement.cpp	2014-02-05 18:11:33 UTC (rev 163456)
+++ trunk/Source/WebCore/svg/SVGImageElement.cpp	2014-02-05 18:25:26 UTC (rev 163457)
@@ -60,7 +60,7 @@
     , m_y(LengthModeHeight)
     , m_width(LengthModeWidth)
     , m_height(LengthModeHeight)
-    , m_imageLoader(this)
+    , m_imageLoader(*this)
 {
     registerAnimatedPropertiesForSVGImageElement();
 }

Modified: trunk/Source/WebCore/svg/SVGImageLoader.cpp (163456 => 163457)


--- trunk/Source/WebCore/svg/SVGImageLoader.cpp	2014-02-05 18:11:33 UTC (rev 163456)
+++ trunk/Source/WebCore/svg/SVGImageLoader.cpp	2014-02-05 18:25:26 UTC (rev 163457)
@@ -25,33 +25,35 @@
 #include "Event.h"
 #include "EventNames.h"
 #include "HTMLParserIdioms.h"
-#include "RenderImage.h"
 #include "SVGImageElement.h"
 
 namespace WebCore {
 
-SVGImageLoader::SVGImageLoader(SVGImageElement* node)
-    : ImageLoader(node)
+SVGImageLoader::SVGImageLoader(SVGImageElement& element)
+    : ImageLoader(element)
 {
 }
 
+SVGImageLoader::~SVGImageLoader()
+{
+}
+
 void SVGImageLoader::dispatchLoadEvent()
 {
     if (image()->errorOccurred())
-        element()->dispatchEvent(Event::create(eventNames().errorEvent, false, false));
+        element().dispatchEvent(Event::create(eventNames().errorEvent, false, false));
     else {
-        SVGImageElement* imageElement = toSVGImageElement(element());
-        if (imageElement->externalResourcesRequiredBaseValue())
-            imageElement->sendSVGLoadEventIfPossible(true);
+        if (toSVGImageElement(element()).externalResourcesRequiredBaseValue())
+            toSVGImageElement(ImageLoader::element()).sendSVGLoadEventIfPossible(true);
     }
 }
 
 String SVGImageLoader::sourceURI(const AtomicString& attribute) const
 {
-    URL base = element()->baseURI();
+    URL base = element().baseURI();
     if (base.isValid())
         return URL(base, stripLeadingAndTrailingHTMLSpaces(attribute)).string();
-    return element()->document().completeURL(stripLeadingAndTrailingHTMLSpaces(attribute));
+    return element().document().completeURL(stripLeadingAndTrailingHTMLSpaces(attribute));
 }
 
 }

Modified: trunk/Source/WebCore/svg/SVGImageLoader.h (163456 => 163457)


--- trunk/Source/WebCore/svg/SVGImageLoader.h	2014-02-05 18:11:33 UTC (rev 163456)
+++ trunk/Source/WebCore/svg/SVGImageLoader.h	2014-02-05 18:25:26 UTC (rev 163457)
@@ -26,9 +26,10 @@
 
 class SVGImageElement;
 
-class SVGImageLoader : public ImageLoader {
+class SVGImageLoader final : public ImageLoader {
 public:
-    SVGImageLoader(SVGImageElement*);
+    explicit SVGImageLoader(SVGImageElement&);
+    virtual ~SVGImageLoader();
 
 private:
     virtual void dispatchLoadEvent() override;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to