didFirstVisuallyNonEmptyLayout dispatched too early
https://bugs.webkit.org/show_bug.cgi?id=64412
Reviewed by Darin Adler and Sam Weinig.
Improve the mechanism that dispatches didFirstVisuallyNonEmptyLayout
- Wait until a threshold of characters and pixels has been exceeded before dispatching.
- Wait until stylesheets are loaded (painting is disabled in this case).
* page/FrameView.cpp:
(WebCore::FrameView::reset):
(WebCore::FrameView::performPostLayoutTasks):
* page/FrameView.h:
(WebCore::FrameView::incrementVisuallyNonEmptyCharacterCount):
(WebCore::FrameView::incrementVisuallyNonEmptyPixelCount):
* rendering/RenderImage.cpp:
(WebCore::RenderImage::RenderImage):
(WebCore::RenderImage::imageChanged):
* rendering/RenderImage.h:
* rendering/RenderText.cpp:
(WebCore::RenderText::RenderText):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@90900 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/rendering/RenderImage.cpp b/Source/WebCore/rendering/RenderImage.cpp
index 849984b..733a219 100644
--- a/Source/WebCore/rendering/RenderImage.cpp
+++ b/Source/WebCore/rendering/RenderImage.cpp
@@ -51,10 +51,9 @@
RenderImage::RenderImage(Node* node)
: RenderReplaced(node, IntSize(0, 0))
, m_needsToSetSizeForAltText(false)
+ , m_didIncrementVisuallyNonEmptyPixelCount(false)
{
updateAltText();
-
- view()->frameView()->setIsVisuallyNonEmpty();
}
RenderImage::~RenderImage()
@@ -140,6 +139,11 @@
if (newImage != m_imageResource->imagePtr() || !newImage)
return;
+
+ if (!m_didIncrementVisuallyNonEmptyPixelCount) {
+ view()->frameView()->incrementVisuallyNonEmptyPixelCount(m_imageResource->imageSize(1.0f));
+ m_didIncrementVisuallyNonEmptyPixelCount = true;
+ }
bool imageSizeChanged = false;