summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorspartha <sudarshan.p@samsung.com>2014-05-06 10:49:12 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-05-06 17:29:13 +0200
commit9b8f8bc6e2bedfdb7962bcdd978e41b07d9a0f6c (patch)
tree87f2b51194c20c48bc9e6ddcd47c0511c6f83ab3
parentd2b72129add81abcfe5801197159d6a55adfe11e (diff)
downloadqtwebkit-9b8f8bc6e2bedfdb7962bcdd978e41b07d9a0f6c.tar.gz
Update RenderImage when the image src is cleared
When the src is removed via JavaScript, the image loader now updates the renderer. BUG=123017 Review URL: https://chromiumcodereview.appspot.com/20473002 git-svn-id: svn://svn.chromium.org/blink/trunk@155294 bbb929c8-8fbe-4397-9dbb-9b2b20218538 Task-number: QTBUG-38287 Change-Id: I49c353cfa4ad1f7c1ceac80df81b8cb713d291df Reviewed-by: Michael Bruning <michael.bruning@digia.com>
-rw-r--r--Source/WebCore/loader/ImageLoader.cpp5
-rw-r--r--Source/WebCore/rendering/RenderImage.cpp6
-rw-r--r--Source/WebCore/rendering/RenderImageResource.cpp2
3 files changed, 9 insertions, 4 deletions
diff --git a/Source/WebCore/loader/ImageLoader.cpp b/Source/WebCore/loader/ImageLoader.cpp
index 4ac8c476d..c9fc3a976 100644
--- a/Source/WebCore/loader/ImageLoader.cpp
+++ b/Source/WebCore/loader/ImageLoader.cpp
@@ -173,7 +173,7 @@ void ImageLoader::updateFromElement()
AtomicString attr = m_element->imageSourceURL();
- if (attr == m_failedLoadURL)
+ if (!m_failedLoadURL.isEmpty() && attr == m_failedLoadURL)
return;
// Do not load any image if the 'src' attribute is missing or if it is
@@ -254,7 +254,10 @@ void ImageLoader::updateFromElement()
// being queued to fire. Ensure this happens after beforeload is
// dispatched.
newImage->addClient(this);
+ } else {
+ updateRenderer();
}
+
if (oldImage)
oldImage->removeClient(this);
}
diff --git a/Source/WebCore/rendering/RenderImage.cpp b/Source/WebCore/rendering/RenderImage.cpp
index 698894bb9..f0c1c0c67 100644
--- a/Source/WebCore/rendering/RenderImage.cpp
+++ b/Source/WebCore/rendering/RenderImage.cpp
@@ -169,7 +169,7 @@ void RenderImage::imageChanged(WrappedImagePtr newImage, const IntRect* rect)
if (!m_imageResource)
return;
- if (newImage != m_imageResource->imagePtr() || !newImage)
+ if (newImage != m_imageResource->imagePtr())
return;
if (!m_didIncrementVisuallyNonEmptyPixelCount) {
@@ -181,7 +181,7 @@ void RenderImage::imageChanged(WrappedImagePtr newImage, const IntRect* rect)
bool imageSizeChanged = false;
// Set image dimensions, taking into account the size of the alt text.
- if (m_imageResource->errorOccurred()) {
+ if (m_imageResource->errorOccurred() || !newImage) {
if (!m_altText.isEmpty() && document()->hasPendingStyleRecalc()) {
ASSERT(node());
if (node()) {
@@ -200,7 +200,7 @@ bool RenderImage::updateIntrinsicSizeIfNeeded(const LayoutSize& newSize, bool im
{
if (newSize == intrinsicSize() && !imageSizeChanged)
return false;
- if (m_imageResource->errorOccurred())
+ if (m_imageResource->errorOccurred() || !m_imageResource->hasImage())
return imageSizeChanged;
setIntrinsicSize(newSize);
return true;
diff --git a/Source/WebCore/rendering/RenderImageResource.cpp b/Source/WebCore/rendering/RenderImageResource.cpp
index a0b46d358..5821c2391 100644
--- a/Source/WebCore/rendering/RenderImageResource.cpp
+++ b/Source/WebCore/rendering/RenderImageResource.cpp
@@ -73,6 +73,8 @@ void RenderImageResource::setCachedImage(CachedImage* newImage)
m_cachedImage->addClient(m_renderer);
if (m_cachedImage->errorOccurred())
m_renderer->imageChanged(m_cachedImage.get());
+ } else {
+ m_renderer->imageChanged(m_cachedImage.get());
}
}