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;