- a/Source/WebCore/ChangeLog +14 lines
Lines 1-3 a/Source/WebCore/ChangeLog_sec1
1
2011-04-22  Dimitri Glazkov  <dglazkov@chromium.org>
2
3
        Reviewed by NOBODY (OOPS!).
4
5
        Make showTree/showTreeForThis aware of the shadow DOM
6
        https://bugs.webkit.org/show_bug.cgi?id=52965
7
8
        No new tests, because this code is only compiled in DEBUG.
9
10
        * dom/Node.cpp:
11
        (WebCore::traverseTreeAndMark): Moved tree traversal logic here, adding
12
            recursive sub-traversal of the shadow tree.
13
        (WebCore::Node::showTreeAndMark): Changed to use the new tree traversal function.
14
1
2011-04-22  Pavel Feldman  <pfeldman@google.com>
15
2011-04-22  Pavel Feldman  <pfeldman@google.com>
2
16
3
        Reviewed by Yury Semikhatsky.
17
        Reviewed by Yury Semikhatsky.
- a/Source/WebCore/dom/Node.cpp -11 / +24 lines
Lines 2445-2470 void Node::showTreeForThis() const a/Source/WebCore/dom/Node.cpp_sec1
2445
    showTreeAndMark(this, "*");
2445
    showTreeAndMark(this, "*");
2446
}
2446
}
2447
2447
2448
void Node::showTreeAndMark(const Node* markedNode1, const char* markedLabel1, const Node* markedNode2, const char * markedLabel2) const
2448
static void traverseTreeAndMark(const String& baseIndent, const Node* rootNode, const Node* markedNode1, const char* markedLabel1, const Node* markedNode2, const char* markedLabel2)
2449
{
2449
{
2450
    const Node* rootNode;
2450
    for (const Node* node = rootNode; node; node = node->traverseNextNode()) {
2451
    const Node* node = this;
2452
    while (node->parentNode() && !node->hasTagName(bodyTag))
2453
        node = node->parentNode();
2454
    rootNode = node;
2455
        
2456
    for (node = rootNode; node; node = node->traverseNextNode()) {
2457
        if (node == markedNode1)
2451
        if (node == markedNode1)
2458
            fprintf(stderr, "%s", markedLabel1);
2452
            fprintf(stderr, "%s", markedLabel1);
2459
        if (node == markedNode2)
2453
        if (node == markedNode2)
2460
            fprintf(stderr, "%s", markedLabel2);
2454
            fprintf(stderr, "%s", markedLabel2);
2461
                        
2455
2462
        for (const Node* tmpNode = node; tmpNode && tmpNode != rootNode; tmpNode = tmpNode->parentNode())
2456
        String indent = baseIndent;
2463
            fprintf(stderr, "\t");
2457
        for (const Node* tmpNode = node; tmpNode && tmpNode != rootNode; tmpNode = tmpNode->parentOrHostNode())
2458
            indent += "\t";
2459
        fprintf(stderr, "%s", indent.utf8().data());
2464
        node->showNode();
2460
        node->showNode();
2461
2462
        if (ContainerNode* shadow = shadowRoot(const_cast<Node*>(node))) {
2463
            indent += "\t";
2464
            traverseTreeAndMark(indent, shadow, markedNode1, markedLabel1, markedNode2, markedLabel2);
2465
        }
2465
    }
2466
    }
2466
}
2467
}
2467
2468
2469
void Node::showTreeAndMark(const Node* markedNode1, const char* markedLabel1, const Node* markedNode2, const char* markedLabel2) const
2470
{
2471
    const Node* rootNode;
2472
    const Node* node = this;
2473
    while (node->parentOrHostNode() && !node->hasTagName(bodyTag))
2474
        node = node->parentOrHostNode();
2475
    rootNode = node;
2476
2477
    String startingIndent;
2478
    traverseTreeAndMark(startingIndent, rootNode, markedNode1, markedLabel1, markedNode2, markedLabel2);
2479
}
2480
2468
void Node::formatForDebugger(char* buffer, unsigned length) const
2481
void Node::formatForDebugger(char* buffer, unsigned length) const
2469
{
2482
{
2470
    String result;
2483
    String result;

Return to Bug 52965