Title: [98008] trunk/Source/WebCore
Revision
98008
Author
[email protected]
Date
2011-10-20 12:05:00 -0700 (Thu, 20 Oct 2011)

Log Message

Add a way to print the Frame tree from the debugger.

Reviewed by Sam Weinig.

Add a showFrameTree(frame) method, callable from gdb,
which dumps the Frame tree, including the frame's view,
document, owner element and URI.

* page/FrameTree.cpp:
(printIndent):
(printFrames):
(showFrameTree):
* page/FrameTree.h:
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateClipRects):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresCompositingForFrame):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (98007 => 98008)


--- trunk/Source/WebCore/ChangeLog	2011-10-20 19:03:21 UTC (rev 98007)
+++ trunk/Source/WebCore/ChangeLog	2011-10-20 19:05:00 UTC (rev 98008)
@@ -1,3 +1,23 @@
+2011-10-20  Simon Fraser  <[email protected]>
+
+        Add a way to print the Frame tree from the debugger.
+
+        Reviewed by Sam Weinig.
+        
+        Add a showFrameTree(frame) method, callable from gdb,
+        which dumps the Frame tree, including the frame's view,
+        document, owner element and URI.
+
+        * page/FrameTree.cpp:
+        (printIndent):
+        (printFrames):
+        (showFrameTree):
+        * page/FrameTree.h:
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::updateClipRects):
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::requiresCompositingForFrame):
+
 2011-10-20  Andreas Kling  <[email protected]>
 
         Remove StyleBase::cssText().

Modified: trunk/Source/WebCore/page/FrameTree.cpp (98007 => 98008)


--- trunk/Source/WebCore/page/FrameTree.cpp	2011-10-20 19:03:21 UTC (rev 98007)
+++ trunk/Source/WebCore/page/FrameTree.cpp	2011-10-20 19:05:00 UTC (rev 98008)
@@ -335,3 +335,46 @@
 }
 
 } // namespace WebCore
+
+#ifndef NDEBUG
+
+static void printIndent(int indent)
+{
+    for (int i = 0; i < indent; ++i)
+        printf("    ");
+}
+
+static void printFrames(const WebCore::Frame* frame, const WebCore::Frame* targetFrame, int indent)
+{
+    if (frame == targetFrame) {
+        printf("--> ");
+        printIndent(indent - 1);
+    } else
+        printIndent(indent);
+
+    WebCore::FrameView* view = frame->view();
+    printf("Frame %p %dx%d\n", frame, view ? view->width() : 0, view ? view->height() : 0);
+    printIndent(indent);
+    printf("  ownerElement=%p\n", frame->ownerElement());
+    printIndent(indent);
+    printf("  frameView=%p\n", view);
+    printIndent(indent);
+    printf("  document=%p\n", frame->document());
+    printIndent(indent);
+    printf("  uri=%s\n\n", frame->document()->documentURI().utf8().data());
+
+    for (WebCore::Frame* child = frame->tree()->firstChild(); child; child = child->tree()->nextSibling())
+        printFrames(child, targetFrame, indent + 1);
+}
+
+void showFrameTree(const WebCore::Frame* frame)
+{
+    if (!frame) {
+        printf("Null input frame\n");
+        return;
+    }
+
+    printFrames(frame->tree()->top(), frame, 0);
+}
+
+#endif

Modified: trunk/Source/WebCore/page/FrameTree.h (98007 => 98008)


--- trunk/Source/WebCore/page/FrameTree.h	2011-10-20 19:03:21 UTC (rev 98007)
+++ trunk/Source/WebCore/page/FrameTree.h	2011-10-20 19:05:00 UTC (rev 98008)
@@ -90,4 +90,9 @@
 
 } // namespace WebCore
 
+#ifndef NDEBUG
+// Outside the WebCore namespace for ease of invocation from gdb.
+void showFrameTree(const WebCore::Frame*);
+#endif
+
 #endif // FrameTree_h
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to