Changeset 108770 in webkit
- Timestamp:
- Feb 24, 2012 4:02:11 AM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r108769 r108770 1 2012-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 1 22 2012-02-24 Pavel Feldman <pfeldman@chromium.org> 2 23 -
trunk/Source/WebCore/dom/Node.cpp
r108605 r108770 810 810 } 811 811 812 inline static ShadowRoot* oldestShadowRoot (Node* node)812 inline static ShadowRoot* oldestShadowRootFor(const Node* node) 813 813 { 814 814 return node->isElementNode() && toElement(node)->hasShadowRoot() ? toElement(node)->shadowRootList()->oldestShadowRoot() : 0; … … 2270 2270 fprintf(stderr, "%s", indent.utf8().data()); 2271 2271 node->showNode(); 2272 2273 2272 if (node->isShadowRoot()) { 2274 if (ShadowRoot* youngerShadowRoot = toShadowRoot( const_cast<Node*>(node))->youngerShadowRoot())2273 if (ShadowRoot* youngerShadowRoot = toShadowRoot(node)->youngerShadowRoot()) 2275 2274 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); 2278 2277 } 2279 2278 } … … 2305 2304 } 2306 2305 2307 static ContainerNode* parentOrHostOrFrameOwner( Node* node)2306 static ContainerNode* parentOrHostOrFrameOwner(const Node* node) 2308 2307 { 2309 2308 ContainerNode* parent = node->parentOrHostNode(); … … 2313 2312 } 2314 2313 2315 static void showSubTreeAcrossFrame( Node* node, const Node* markedNode, const String& indent)2314 static void showSubTreeAcrossFrame(const Node* node, const Node* markedNode, const String& indent) 2316 2315 { 2317 2316 if (node == markedNode) … … 2319 2318 fputs(indent.utf8().data(), stderr); 2320 2319 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 } 2328 2329 for (Node* child = node->firstChild(); child; child = child->nextSibling()) 2329 2330 showSubTreeAcrossFrame(child, markedNode, indent + "\t"); -
trunk/Source/WebCore/dom/ShadowRoot.h
r108713 r108770 73 73 ShadowRootList* list() const; 74 74 75 ShadowRoot* youngerShadowRoot() { return prev(); }76 ShadowRoot* olderShadowRoot() { return next(); }75 ShadowRoot* youngerShadowRoot() const { return prev(); } 76 ShadowRoot* olderShadowRoot() const { return next(); } 77 77 78 78 bool hasContentElement() const; … … 91 91 }; 92 92 93 inline const ShadowRoot* toShadowRoot(const Node* node) 94 { 95 ASSERT(!node || node->isShadowRoot()); 96 return static_cast<const ShadowRoot*>(node); 97 } 98 93 99 inline ShadowRoot* toShadowRoot(Node* node) 94 100 { 95 ASSERT(!node || node->isShadowRoot()); 96 return static_cast<ShadowRoot*>(node); 101 return const_cast<ShadowRoot*>(toShadowRoot(static_cast<const Node*>(node))); 97 102 } 98 103
Note: See TracChangeset
for help on using the changeset viewer.