[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

simon.fraser at apple.com simon.fraser at apple.com
Wed Dec 22 15:38:39 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 0b52507b33937b4f8cb9bf9e7e135863bd621249
Author: simon.fraser at apple.com <simon.fraser at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Nov 9 21:59:47 2010 +0000

    2010-11-09  Simon Fraser  <simon.fraser at apple.com>
    
            Reviewed by James Robinson.
    
            Make showLayerTree() more useful for debugging
            https://bugs.webkit.org/show_bug.cgi?id=49273
    
            Three things to make showLayerTree() more useful when called from gdb:
            1. Add showLayerTree(RenderObject*)
            2. Make it not update layout, so you can call it when debugging layout code.
            3. Add output of the 'needs layout' flags for each renderer.
    
            * rendering/RenderLayer.cpp:
            (showLayerTree):
            * rendering/RenderLayer.h:
            * rendering/RenderTreeAsText.cpp:
            (WebCore::RenderTreeAsText::writeRenderObject):
            (WebCore::externalRepresentation):
            * rendering/RenderTreeAsText.h:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@71674 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 711a5ae..c7fd8b4 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,23 @@
+2010-11-09  Simon Fraser  <simon.fraser at apple.com>
+
+        Reviewed by James Robinson.
+
+        Make showLayerTree() more useful for debugging
+        https://bugs.webkit.org/show_bug.cgi?id=49273
+
+        Three things to make showLayerTree() more useful when called from gdb:
+        1. Add showLayerTree(RenderObject*)
+        2. Make it not update layout, so you can call it when debugging layout code.
+        3. Add output of the 'needs layout' flags for each renderer.
+
+        * rendering/RenderLayer.cpp:
+        (showLayerTree):
+        * rendering/RenderLayer.h:
+        * rendering/RenderTreeAsText.cpp:
+        (WebCore::RenderTreeAsText::writeRenderObject):
+        (WebCore::externalRepresentation):
+        * rendering/RenderTreeAsText.h:
+
 2010-11-09  Chris Rogers  <crogers at google.com>
 
         Reviewed by James Robinson.
diff --git a/WebCore/rendering/RenderLayer.cpp b/WebCore/rendering/RenderLayer.cpp
index 2f89eb5..7b9000c 100644
--- a/WebCore/rendering/RenderLayer.cpp
+++ b/WebCore/rendering/RenderLayer.cpp
@@ -3924,8 +3924,15 @@ void showLayerTree(const WebCore::RenderLayer* layer)
         return;
 
     if (WebCore::Frame* frame = layer->renderer()->frame()) {
-        WTF::String output = externalRepresentation(frame, WebCore::RenderAsTextShowAllLayers | WebCore::RenderAsTextShowLayerNesting | WebCore::RenderAsTextShowCompositedLayers | WebCore::RenderAsTextShowAddresses | WebCore::RenderAsTextShowIDAndClass);
+        WTF::String output = externalRepresentation(frame, WebCore::RenderAsTextShowAllLayers | WebCore::RenderAsTextShowLayerNesting | WebCore::RenderAsTextShowCompositedLayers | WebCore::RenderAsTextShowAddresses | WebCore::RenderAsTextShowIDAndClass | WebCore::RenderAsTextDontUpdateLayout | WebCore::RenderAsTextShowLayoutState);
         fprintf(stderr, "%s\n", output.utf8().data());
     }
 }
+
+void showLayerTree(const WebCore::RenderObject* renderer)
+{
+    if (!renderer)
+        return;
+    showLayerTree(renderer->enclosingLayer());
+}
 #endif
diff --git a/WebCore/rendering/RenderLayer.h b/WebCore/rendering/RenderLayer.h
index 7e67115..07cf2ec 100644
--- a/WebCore/rendering/RenderLayer.h
+++ b/WebCore/rendering/RenderLayer.h
@@ -693,7 +693,8 @@ private:
 
 #ifndef NDEBUG
 // Outside the WebCore namespace for ease of invocation from gdb.
-void showLayerTree(const WebCore::RenderLayer* layer);
+void showLayerTree(const WebCore::RenderLayer*);
+void showLayerTree(const WebCore::RenderObject*);
 #endif
 
 #endif // RenderLayer_h
diff --git a/WebCore/rendering/RenderTreeAsText.cpp b/WebCore/rendering/RenderTreeAsText.cpp
index ec36b7e..f93cd55 100644
--- a/WebCore/rendering/RenderTreeAsText.cpp
+++ b/WebCore/rendering/RenderTreeAsText.cpp
@@ -413,6 +413,41 @@ void RenderTreeAsText::writeRenderObject(TextStream& ts, const RenderObject& o,
             }
         }
     }
+    
+    if (behavior & RenderAsTextShowLayoutState) {
+        bool needsLayout = o.selfNeedsLayout() || o.needsPositionedMovementLayout() || o.posChildNeedsLayout() || o.normalChildNeedsLayout();
+        if (needsLayout)
+            ts << " (needs layout:";
+        
+        bool havePrevious = false;
+        if (o.selfNeedsLayout()) {
+            ts << " self";
+            havePrevious = true;
+        }
+
+        if (o.needsPositionedMovementLayout()) {
+            if (havePrevious)
+                ts << ",";
+            havePrevious = true;
+            ts << " positioned movement";
+        }
+
+        if (o.normalChildNeedsLayout()) {
+            if (havePrevious)
+                ts << ",";
+            havePrevious = true;
+            ts << " child";
+        }
+
+        if (o.posChildNeedsLayout()) {
+            if (havePrevious)
+                ts << ",";
+            ts << " positioned child";
+        }
+
+        if (needsLayout)
+            ts << ")";
+    }
 
 #if PLATFORM(QT)
     // Print attributes of embedded QWidgets. E.g. when the WebCore::Widget
@@ -691,7 +726,8 @@ String externalRepresentation(Frame* frame, RenderAsTextBehavior behavior)
         printContext.begin(frame->contentRenderer()->width());
     }
 
-    frame->document()->updateLayout();
+    if (!(behavior & RenderAsTextDontUpdateLayout))
+        frame->document()->updateLayout();
 
     RenderObject* o = frame->contentRenderer();
     if (!o)
diff --git a/WebCore/rendering/RenderTreeAsText.h b/WebCore/rendering/RenderTreeAsText.h
index 59a0abb..4c8b145 100644
--- a/WebCore/rendering/RenderTreeAsText.h
+++ b/WebCore/rendering/RenderTreeAsText.h
@@ -48,7 +48,9 @@ enum RenderAsTextBehaviorFlags {
     RenderAsTextShowCompositedLayers = 1 << 2, // Show which layers are composited.
     RenderAsTextShowAddresses = 1 << 3, // Show layer and renderer addresses.
     RenderAsTextShowIDAndClass = 1 << 4, // Show id and class attributes
-    RenderAsTextPrintingMode = 1 << 5 // Dump the tree in printing mode.
+    RenderAsTextPrintingMode = 1 << 5, // Dump the tree in printing mode.
+    RenderAsTextDontUpdateLayout = 1 << 6, // Don't update layout, to make it safe to call showLayerTree() from the debugger inside layout or painting code.
+    RenderAsTextShowLayoutState = 1 << 7 // Print the various 'needs layout' bits on renderers.
 };
 typedef unsigned RenderAsTextBehavior;
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list