Title: [108770] trunk/Source/WebCore
Revision
108770
Author
[email protected]
Date
2012-02-24 04:02:11 -0800 (Fri, 24 Feb 2012)

Log Message

Make Node::showTreeForThis (and Node::showTreeForThisAcrossFrame) dump multiple shadow roots.
https://bugs.webkit.org/show_bug.cgi?id=79351

Reviewed by Dimitri Glazkov.

No new tests since these utility functions are only available in debug build.
I manually tested in GDB session.

* dom/Node.cpp:
(WebCore::oldestShadowRootFor):
(WebCore::traverseTreeAndMark):
(WebCore::parentOrHostOrFrameOwner):
(WebCore::showSubTreeAcrossFrame):
* dom/ShadowRoot.h:
(WebCore::ShadowRoot::youngerShadowRoot):
(WebCore::ShadowRoot::olderShadowRoot):
(WebCore::toShadowRoot):
(WebCore):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (108769 => 108770)


--- trunk/Source/WebCore/ChangeLog	2012-02-24 11:58:30 UTC (rev 108769)
+++ trunk/Source/WebCore/ChangeLog	2012-02-24 12:02:11 UTC (rev 108770)
@@ -1,3 +1,24 @@
+2012-02-24  Hayato Ito  <[email protected]>
+
+        Make Node::showTreeForThis (and Node::showTreeForThisAcrossFrame) dump multiple shadow roots.
+        https://bugs.webkit.org/show_bug.cgi?id=79351
+
+        Reviewed by Dimitri Glazkov.
+
+        No new tests since these utility functions are only available in debug build.
+        I manually tested in GDB session.
+
+        * dom/Node.cpp:
+        (WebCore::oldestShadowRootFor):
+        (WebCore::traverseTreeAndMark):
+        (WebCore::parentOrHostOrFrameOwner):
+        (WebCore::showSubTreeAcrossFrame):
+        * dom/ShadowRoot.h:
+        (WebCore::ShadowRoot::youngerShadowRoot):
+        (WebCore::ShadowRoot::olderShadowRoot):
+        (WebCore::toShadowRoot):
+        (WebCore):
+
 2012-02-24  Pavel Feldman  <[email protected]>
 
         Not reviewed: follow up to inspector's r108331, using more general condition.

Modified: trunk/Source/WebCore/dom/Node.cpp (108769 => 108770)


--- trunk/Source/WebCore/dom/Node.cpp	2012-02-24 11:58:30 UTC (rev 108769)
+++ trunk/Source/WebCore/dom/Node.cpp	2012-02-24 12:02:11 UTC (rev 108770)
@@ -809,7 +809,7 @@
     return false;
 }
 
-inline static ShadowRoot* oldestShadowRoot(Node* node)
+inline static ShadowRoot* oldestShadowRootFor(const Node* node)
 {
     return node->isElementNode() && toElement(node)->hasShadowRoot() ? toElement(node)->shadowRootList()->oldestShadowRoot() : 0;
 }
@@ -2269,12 +2269,11 @@
             indent += "\t";
         fprintf(stderr, "%s", indent.utf8().data());
         node->showNode();
-
         if (node->isShadowRoot()) {
-            if (ShadowRoot* youngerShadowRoot = toShadowRoot(const_cast<Node*>(node))->youngerShadowRoot())
+            if (ShadowRoot* youngerShadowRoot = toShadowRoot(node)->youngerShadowRoot())
                 traverseTreeAndMark(indent + "\t", youngerShadowRoot, markedNode1, markedLabel1, markedNode2, markedLabel2);
-        } else if (ShadowRoot* rootNode = oldestShadowRoot(const_cast<Node*>(node)))
-            traverseTreeAndMark(indent + "\t", rootNode, markedNode1, markedLabel1, markedNode2, markedLabel2);
+        } else if (ShadowRoot* oldestShadowRoot = oldestShadowRootFor(node))
+            traverseTreeAndMark(indent + "\t", oldestShadowRoot, markedNode1, markedLabel1, markedNode2, markedLabel2);
     }
 }
 
@@ -2304,7 +2303,7 @@
     strncpy(buffer, result.utf8().data(), length - 1);
 }
 
-static ContainerNode* parentOrHostOrFrameOwner(Node* node)
+static ContainerNode* parentOrHostOrFrameOwner(const Node* node)
 {
     ContainerNode* parent = node->parentOrHostNode();
     if (!parent && node->document() && node->document()->frame())
@@ -2312,19 +2311,21 @@
     return parent;
 }
 
-static void showSubTreeAcrossFrame(Node* node, const Node* markedNode, const String& indent)
+static void showSubTreeAcrossFrame(const Node* node, const Node* markedNode, const String& indent)
 {
     if (node == markedNode)
         fputs("*", stderr);
     fputs(indent.utf8().data(), stderr);
     node->showNode();
-    if (node->isFrameOwnerElement())
-        showSubTreeAcrossFrame(static_cast<HTMLFrameOwnerElement*>(node)->contentDocument(), markedNode, indent + "\t");
-    if (node->isShadowRoot()) {
-        if (ShadowRoot* youngerShadowRoot = toShadowRoot(node)->youngerShadowRoot())
-            showSubTreeAcrossFrame(youngerShadowRoot, markedNode, indent + "\t");
-    } else if (ShadowRoot* shadowRoot = oldestShadowRoot(node))
-        showSubTreeAcrossFrame(shadowRoot, markedNode, indent + "\t");
+     if (node->isShadowRoot()) {
+         if (ShadowRoot* youngerShadowRoot = toShadowRoot(node)->youngerShadowRoot())
+             showSubTreeAcrossFrame(youngerShadowRoot, markedNode, indent + "\t");
+     } else {
+         if (node->isFrameOwnerElement())
+             showSubTreeAcrossFrame(static_cast<const HTMLFrameOwnerElement*>(node)->contentDocument(), markedNode, indent + "\t");
+         if (ShadowRoot* oldestShadowRoot = oldestShadowRootFor(node))
+             showSubTreeAcrossFrame(oldestShadowRoot, markedNode, indent + "\t");
+     }
     for (Node* child = node->firstChild(); child; child = child->nextSibling())
         showSubTreeAcrossFrame(child, markedNode, indent + "\t");
 }

Modified: trunk/Source/WebCore/dom/ShadowRoot.h (108769 => 108770)


--- trunk/Source/WebCore/dom/ShadowRoot.h	2012-02-24 11:58:30 UTC (rev 108769)
+++ trunk/Source/WebCore/dom/ShadowRoot.h	2012-02-24 12:02:11 UTC (rev 108770)
@@ -72,8 +72,8 @@
     Element* host() const { return shadowHost(); }
     ShadowRootList* list() const;
 
-    ShadowRoot* youngerShadowRoot() { return prev(); }
-    ShadowRoot* olderShadowRoot() { return next(); }
+    ShadowRoot* youngerShadowRoot() const { return prev(); }
+    ShadowRoot* olderShadowRoot() const { return next(); }
 
     bool hasContentElement() const;
 
@@ -90,12 +90,17 @@
     bool m_applyAuthorSheets : 1;
 };
 
-inline ShadowRoot* toShadowRoot(Node* node)
+inline const ShadowRoot* toShadowRoot(const Node* node)
 {
     ASSERT(!node || node->isShadowRoot());
-    return static_cast<ShadowRoot*>(node);
+    return static_cast<const ShadowRoot*>(node);
 }
 
+inline ShadowRoot* toShadowRoot(Node* node)
+{
+    return const_cast<ShadowRoot*>(toShadowRoot(static_cast<const Node*>(node)));
+}
+
 } // namespace
 
 #endif
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to