Changeset 108770 in webkit


Ignore:
Timestamp:
Feb 24, 2012 4:02:11 AM (12 years ago)
Author:
hayato@chromium.org
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):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r108769 r108770  
     12012-02-24  Hayato Ito  <hayato@chromium.org>
     2
     3        Make Node::showTreeForThis (and Node::showTreeForThisAcrossFrame) dump multiple shadow roots.
     4        https://bugs.webkit.org/show_bug.cgi?id=79351
     5
     6        Reviewed by Dimitri Glazkov.
     7
     8        No new tests since these utility functions are only available in debug build.
     9        I manually tested in GDB session.
     10
     11        * dom/Node.cpp:
     12        (WebCore::oldestShadowRootFor):
     13        (WebCore::traverseTreeAndMark):
     14        (WebCore::parentOrHostOrFrameOwner):
     15        (WebCore::showSubTreeAcrossFrame):
     16        * dom/ShadowRoot.h:
     17        (WebCore::ShadowRoot::youngerShadowRoot):
     18        (WebCore::ShadowRoot::olderShadowRoot):
     19        (WebCore::toShadowRoot):
     20        (WebCore):
     21
    1222012-02-24  Pavel Feldman  <pfeldman@chromium.org>
    223
  • trunk/Source/WebCore/dom/Node.cpp

    r108605 r108770  
    810810}
    811811
    812 inline static ShadowRoot* oldestShadowRoot(Node* node)
     812inline static ShadowRoot* oldestShadowRootFor(const Node* node)
    813813{
    814814    return node->isElementNode() && toElement(node)->hasShadowRoot() ? toElement(node)->shadowRootList()->oldestShadowRoot() : 0;
     
    22702270        fprintf(stderr, "%s", indent.utf8().data());
    22712271        node->showNode();
    2272 
    22732272        if (node->isShadowRoot()) {
    2274             if (ShadowRoot* youngerShadowRoot = toShadowRoot(const_cast<Node*>(node))->youngerShadowRoot())
     2273            if (ShadowRoot* youngerShadowRoot = toShadowRoot(node)->youngerShadowRoot())
    22752274                traverseTreeAndMark(indent + "\t", youngerShadowRoot, markedNode1, markedLabel1, markedNode2, markedLabel2);
    2276         } else if (ShadowRoot* rootNode = oldestShadowRoot(const_cast<Node*>(node)))
    2277             traverseTreeAndMark(indent + "\t", rootNode, markedNode1, markedLabel1, markedNode2, markedLabel2);
     2275        } else if (ShadowRoot* oldestShadowRoot = oldestShadowRootFor(node))
     2276            traverseTreeAndMark(indent + "\t", oldestShadowRoot, markedNode1, markedLabel1, markedNode2, markedLabel2);
    22782277    }
    22792278}
     
    23052304}
    23062305
    2307 static ContainerNode* parentOrHostOrFrameOwner(Node* node)
     2306static ContainerNode* parentOrHostOrFrameOwner(const Node* node)
    23082307{
    23092308    ContainerNode* parent = node->parentOrHostNode();
     
    23132312}
    23142313
    2315 static void showSubTreeAcrossFrame(Node* node, const Node* markedNode, const String& indent)
     2314static void showSubTreeAcrossFrame(const Node* node, const Node* markedNode, const String& indent)
    23162315{
    23172316    if (node == markedNode)
     
    23192318    fputs(indent.utf8().data(), stderr);
    23202319    node->showNode();
    2321     if (node->isFrameOwnerElement())
    2322         showSubTreeAcrossFrame(static_cast<HTMLFrameOwnerElement*>(node)->contentDocument(), markedNode, indent + "\t");
    2323     if (node->isShadowRoot()) {
    2324         if (ShadowRoot* youngerShadowRoot = toShadowRoot(node)->youngerShadowRoot())
    2325             showSubTreeAcrossFrame(youngerShadowRoot, markedNode, indent + "\t");
    2326     } else if (ShadowRoot* shadowRoot = oldestShadowRoot(node))
    2327         showSubTreeAcrossFrame(shadowRoot, markedNode, indent + "\t");
     2320     if (node->isShadowRoot()) {
     2321         if (ShadowRoot* youngerShadowRoot = toShadowRoot(node)->youngerShadowRoot())
     2322             showSubTreeAcrossFrame(youngerShadowRoot, markedNode, indent + "\t");
     2323     } else {
     2324         if (node->isFrameOwnerElement())
     2325             showSubTreeAcrossFrame(static_cast<const HTMLFrameOwnerElement*>(node)->contentDocument(), markedNode, indent + "\t");
     2326         if (ShadowRoot* oldestShadowRoot = oldestShadowRootFor(node))
     2327             showSubTreeAcrossFrame(oldestShadowRoot, markedNode, indent + "\t");
     2328     }
    23282329    for (Node* child = node->firstChild(); child; child = child->nextSibling())
    23292330        showSubTreeAcrossFrame(child, markedNode, indent + "\t");
  • trunk/Source/WebCore/dom/ShadowRoot.h

    r108713 r108770  
    7373    ShadowRootList* list() const;
    7474
    75     ShadowRoot* youngerShadowRoot() { return prev(); }
    76     ShadowRoot* olderShadowRoot() { return next(); }
     75    ShadowRoot* youngerShadowRoot() const { return prev(); }
     76    ShadowRoot* olderShadowRoot() const { return next(); }
    7777
    7878    bool hasContentElement() const;
     
    9191};
    9292
     93inline const ShadowRoot* toShadowRoot(const Node* node)
     94{
     95    ASSERT(!node || node->isShadowRoot());
     96    return static_cast<const ShadowRoot*>(node);
     97}
     98
    9399inline ShadowRoot* toShadowRoot(Node* node)
    94100{
    95     ASSERT(!node || node->isShadowRoot());
    96     return static_cast<ShadowRoot*>(node);
     101    return const_cast<ShadowRoot*>(toShadowRoot(static_cast<const Node*>(node)));
    97102}
    98103
Note: See TracChangeset for help on using the changeset viewer.