Diff
Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/ChangeLog (181535 => 181536)
--- releases/WebKitGTK/webkit-2.8/Source/WebCore/ChangeLog 2015-03-16 10:27:14 UTC (rev 181535)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/ChangeLog 2015-03-16 10:30:51 UTC (rev 181536)
@@ -1,3 +1,24 @@
+2015-03-11 Commit Queue <commit-qu...@webkit.org>
+
+ Unreviewed, rolling out r179340 and r179344.
+ https://bugs.webkit.org/show_bug.cgi?id=142598
+
+ Caused images to stay alive forever when navigating away from
+ the page before they finish loading. (Requested by kling on
+ #webkit).
+
+ Reverted changesets:
+
+ "CachedImage: ensure clients overrides imageChanged instead of
+ notifyFinished"
+ https://bugs.webkit.org/show_bug.cgi?id=140722
+ http://trac.webkit.org/changeset/179340
+
+ "HTMLImageLoader: fix build failure on assert condition after
+ r179340"
+ https://bugs.webkit.org/show_bug.cgi?id=140722
+ http://trac.webkit.org/changeset/179344
+
2015-03-12 Geoffrey Garen <gga...@apple.com>
REGRESSION: Crash under Heap::reportExtraMemoryAllocatedSlowCase for media element
Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLImageLoader.cpp (181535 => 181536)
--- releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLImageLoader.cpp 2015-03-16 10:27:14 UTC (rev 181535)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLImageLoader.cpp 2015-03-16 10:30:51 UTC (rev 181536)
@@ -72,15 +72,12 @@
return stripLeadingAndTrailingHTMLSpaces(attr);
}
-void HTMLImageLoader::imageChanged(CachedImage* cachedImage, const IntRect*)
+void HTMLImageLoader::notifyFinished(CachedResource*)
{
- ASSERT(cachedImage == image());
+ CachedImage* cachedImage = image();
- if (!cachedImage->isLoaded())
- return;
-
Ref<Element> protect(element());
- ImageLoader::imageChanged(cachedImage);
+ ImageLoader::notifyFinished(cachedImage);
bool loadError = cachedImage->errorOccurred() || cachedImage->response().httpStatusCode() >= 400;
if (!loadError) {
Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLImageLoader.h (181535 => 181536)
--- releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLImageLoader.h 2015-03-16 10:27:14 UTC (rev 181535)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/html/HTMLImageLoader.h 2015-03-16 10:30:51 UTC (rev 181536)
@@ -35,7 +35,7 @@
virtual void dispatchLoadEvent() override;
virtual String sourceURI(const AtomicString&) const override;
- virtual void imageChanged(CachedImage*, const IntRect* = nullptr) override;
+ virtual void notifyFinished(CachedResource*) override;
};
}
Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/loader/ImageLoader.cpp (181535 => 181536)
--- releases/WebKitGTK/webkit-2.8/Source/WebCore/loader/ImageLoader.cpp 2015-03-16 10:27:14 UTC (rev 181535)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/loader/ImageLoader.cpp 2015-03-16 10:30:51 UTC (rev 181536)
@@ -272,14 +272,11 @@
updateFromElement();
}
-void ImageLoader::imageChanged(CachedImage* cachedImage, const IntRect*)
+void ImageLoader::notifyFinished(CachedResource* resource)
{
ASSERT(m_failedLoadURL.isEmpty());
- ASSERT(cachedImage == m_image.get());
+ ASSERT(resource == m_image.get());
- if (!cachedImage->isLoaded())
- return;
-
m_imageComplete = true;
if (!hasPendingBeforeLoadEvent())
updateRenderer();
@@ -289,7 +286,7 @@
if (element().fastHasAttribute(HTMLNames::crossoriginAttr)
&& !element().document().securityOrigin()->canRequest(image()->response().url())
- && !cachedImage->passesAccessControlCheck(element().document().securityOrigin())) {
+ && !resource->passesAccessControlCheck(element().document().securityOrigin())) {
setImageWithoutConsideringPendingLoadEvent(0);
@@ -307,7 +304,7 @@
return;
}
- if (cachedImage->wasCanceled()) {
+ if (resource->wasCanceled()) {
m_hasPendingLoadEvent = 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: releases/WebKitGTK/webkit-2.8/Source/WebCore/loader/ImageLoader.h (181535 => 181536)
--- releases/WebKitGTK/webkit-2.8/Source/WebCore/loader/ImageLoader.h 2015-03-16 10:27:14 UTC (rev 181535)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/loader/ImageLoader.h 2015-03-16 10:30:51 UTC (rev 181536)
@@ -73,7 +73,7 @@
protected:
explicit ImageLoader(Element&);
- virtual void imageChanged(CachedImage*, const IntRect* = nullptr) override;
+ virtual void notifyFinished(CachedResource*) override;
private:
virtual void dispatchLoadEvent() = 0;
Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/loader/cache/CachedImage.cpp (181535 => 181536)
--- releases/WebKitGTK/webkit-2.8/Source/WebCore/loader/cache/CachedImage.cpp 2015-03-16 10:27:14 UTC (rev 181535)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/loader/cache/CachedImage.cpp 2015-03-16 10:30:51 UTC (rev 181536)
@@ -429,11 +429,10 @@
return;
}
+ notifyObservers();
if (m_image)
setEncodedSize(m_image->data() ? m_image->data()->size() : 0);
-
- setLoading(false);
- notifyObservers();
+ CachedResource::finishLoading(data);
}
void CachedImage::error(CachedResource::Status status)
Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/loader/cache/CachedImageClient.h (181535 => 181536)
--- releases/WebKitGTK/webkit-2.8/Source/WebCore/loader/cache/CachedImageClient.h 2015-03-16 10:27:14 UTC (rev 181535)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/loader/cache/CachedImageClient.h 2015-03-16 10:30:51 UTC (rev 181536)
@@ -38,13 +38,10 @@
// Called whenever a frame of an image changes because we got more data from the network.
// If not null, the IntRect is the changed rect of the image.
- virtual void imageChanged(CachedImage*, const IntRect* = nullptr) { }
+ virtual void imageChanged(CachedImage*, const IntRect* = 0) { }
// Called when GIF animation progresses.
virtual void newImageAnimationFrameAvailable(CachedImage& image) { imageChanged(&image); }
-
- // Use imageChanged instead.
- virtual void notifyFinished(CachedResource*) override final { }
};
}
Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/rendering/RenderImage.cpp (181535 => 181536)
--- releases/WebKitGTK/webkit-2.8/Source/WebCore/rendering/RenderImage.cpp 2015-03-16 10:27:14 UTC (rev 181535)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/rendering/RenderImage.cpp 2015-03-16 10:30:51 UTC (rev 181536)
@@ -364,6 +364,20 @@
}
}
+void RenderImage::notifyFinished(CachedResource* newImage)
+{
+ if (documentBeingDestroyed())
+ return;
+
+ invalidateBackgroundObscurationStatus();
+
+ if (newImage == imageResource().cachedImage()) {
+ // tell any potential compositing layers
+ // that the image is done and they can reference it directly.
+ contentChanged(ImageChanged);
+ }
+}
+
void RenderImage::paintReplaced(PaintInfo& paintInfo, const LayoutPoint& paintOffset)
{
LayoutUnit cWidth = contentWidth();
Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/rendering/RenderImage.h (181535 => 181536)
--- releases/WebKitGTK/webkit-2.8/Source/WebCore/rendering/RenderImage.h 2015-03-16 10:27:14 UTC (rev 181535)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/rendering/RenderImage.h 2015-03-16 10:30:51 UTC (rev 181536)
@@ -99,6 +99,7 @@
virtual LayoutUnit minimumReplacedHeight() const override;
+ virtual void notifyFinished(CachedResource*) override final;
virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction) override final;
virtual bool boxShadowShouldBeAppliedToBackground(BackgroundBleedAvoidance, InlineFlowBox*) const override final;
Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/svg/SVGFEImageElement.cpp (181535 => 181536)
--- releases/WebKitGTK/webkit-2.8/Source/WebCore/svg/SVGFEImageElement.cpp 2015-03-16 10:27:14 UTC (rev 181535)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/svg/SVGFEImageElement.cpp 2015-03-16 10:30:51 UTC (rev 181536)
@@ -190,11 +190,8 @@
clearResourceReferences();
}
-void SVGFEImageElement::imageChanged(CachedImage* cachedImage, const IntRect*)
+void SVGFEImageElement::notifyFinished(CachedResource*)
{
- if (!cachedImage || !cachedImage->isLoaded())
- return;
-
if (!inDocument())
return;
Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/svg/SVGFEImageElement.h (181535 => 181536)
--- releases/WebKitGTK/webkit-2.8/Source/WebCore/svg/SVGFEImageElement.h 2015-03-16 10:27:14 UTC (rev 181535)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/svg/SVGFEImageElement.h 2015-03-16 10:30:51 UTC (rev 181536)
@@ -51,7 +51,7 @@
bool isSupportedAttribute(const QualifiedName&);
virtual void parseAttribute(const QualifiedName&, const AtomicString&) override;
virtual void svgAttributeChanged(const QualifiedName&) override;
- virtual void imageChanged(CachedImage*, const IntRect* = nullptr) override;
+ virtual void notifyFinished(CachedResource*) override;
virtual void addSubresourceAttributeURLs(ListHashSet<URL>&) const override;
virtual PassRefPtr<FilterEffect> build(SVGFilterBuilder*, Filter*) override;