[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