diff options
| author | spartha <sudarshan.p@samsung.com> | 2014-05-06 10:49:12 +0200 |
|---|---|---|
| committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-05-06 17:29:13 +0200 |
| commit | 9b8f8bc6e2bedfdb7962bcdd978e41b07d9a0f6c (patch) | |
| tree | 87f2b51194c20c48bc9e6ddcd47c0511c6f83ab3 | |
| parent | d2b72129add81abcfe5801197159d6a55adfe11e (diff) | |
| download | qtwebkit-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.cpp | 5 | ||||
| -rw-r--r-- | Source/WebCore/rendering/RenderImage.cpp | 6 | ||||
| -rw-r--r-- | Source/WebCore/rendering/RenderImageResource.cpp | 2 |
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()); } } |
