Changeset 84747 in webkit
- Timestamp:
- Apr 23, 2011 5:51:54 PM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r84745 r84747 1 2011-04-23 MORITA Hajime <morrita@google.com> 2 3 Reviewed by Dimitri Glazkov. 4 5 [Refactoring] NodeRenderParentDetector should be NodeRenderFactory 6 https://bugs.webkit.org/show_bug.cgi?id=59280 7 8 - Rename NodeRenderParentDetector to NodeRendererFactory 9 - move createRendererAndStyle() and createRendererIfNeeded to 10 NodeRendererFactory 11 12 No new test, no behavioral change. 13 14 * dom/Node.cpp: 15 (WebCore::NodeRendererFactory::NodeRendererFactory): 16 (WebCore::NodeRendererFactory::document): 17 (WebCore::NodeRendererFactory::nextRenderer): 18 (WebCore::NodeRendererFactory::findVisualParent): 19 (WebCore::NodeRendererFactory::shouldCreateRenderer): 20 (WebCore::NodeRendererFactory::createRendererAndStyle): 21 (WebCore::NodeRendererFactory::createRendererIfNeeded): 22 (WebCore::Node::parentNodeForRenderingAndStyle): 23 (WebCore::Node::createRendererIfNeeded): 24 * dom/Node.h: 25 * html/HTMLDetailsElement.cpp: 26 (WebCore::DetailsSummaryElement::detailsElement): Added const_cast due to the chage on parentNodeForRenderingAndStyle() 27 1 28 2011-04-23 MORITA Hajime <morrita@google.com> 2 29 -
trunk/Source/WebCore/dom/Node.cpp
r84672 r84747 1465 1465 1466 1466 1467 class NodeRender ParentDetector{1467 class NodeRendererFactory { 1468 1468 public: 1469 1469 enum Type { … … 1474 1474 }; 1475 1475 1476 NodeRender ParentDetector(Node* node)1476 NodeRendererFactory(Node* node) 1477 1477 : m_type(NotFound) 1478 1478 , m_node(node) … … 1483 1483 1484 1484 ContainerNode* parentNodeForRenderingAndStyle() const { return m_parentNodeForRenderingAndStyle; } 1485 void createRendererIfNeeded(); 1486 1487 private: 1488 Document* document() { return m_node->document(); } 1489 ContainerNode* findVisualParent(); 1490 RenderObject* nextRenderer() const { return m_node->nextRenderer(); } 1491 RenderObject* createRendererAndStyle(); 1485 1492 bool shouldCreateRenderer() const; 1486 1487 private:1488 ContainerNode* findVisualParent();1489 1493 1490 1494 Type m_type; … … 1494 1498 }; 1495 1499 1496 ContainerNode* NodeRender ParentDetector::findVisualParent()1500 ContainerNode* NodeRendererFactory::findVisualParent() 1497 1501 { 1498 1502 ContainerNode* parent = m_node->parentOrHostNode(); … … 1510 1514 if (ContainerNode* contentContainer = m_visualParentShadowRoot->contentContainerFor(m_node)) { 1511 1515 m_type = AsContentChild; 1512 return NodeRender ParentDetector(contentContainer).parentNodeForRenderingAndStyle();1516 return NodeRendererFactory(contentContainer).parentNodeForRenderingAndStyle(); 1513 1517 } 1514 1518 … … 1521 1525 } 1522 1526 1523 bool NodeRender ParentDetector::shouldCreateRenderer() const1527 bool NodeRendererFactory::shouldCreateRenderer() const 1524 1528 { 1525 1529 ASSERT(m_parentNodeForRenderingAndStyle); … … 1545 1549 } 1546 1550 1547 1548 ContainerNode* Node::parentNodeForRenderingAndStyle() const 1549 { 1550 return NodeRenderParentDetector(const_cast<Node*>(this)).parentNodeForRenderingAndStyle(); 1551 } 1552 1553 RenderObject* Node::createRendererAndStyle() 1554 { 1555 ASSERT(!renderer()); 1551 RenderObject* NodeRendererFactory::createRendererAndStyle() 1552 { 1553 ASSERT(!m_node->renderer()); 1556 1554 ASSERT(document()->shouldCreateRenderers()); 1557 1555 1558 NodeRenderParentDetector parentDetector(this); 1559 if (!parentDetector.shouldCreateRenderer()) 1556 if (!shouldCreateRenderer()) 1560 1557 return 0; 1561 1558 1562 RefPtr<RenderStyle> style = styleForRenderer();1563 if (! rendererIsNeeded(style.get()))1559 RefPtr<RenderStyle> style = m_node->styleForRenderer(); 1560 if (!m_node->rendererIsNeeded(style.get())) 1564 1561 return 0; 1565 1562 1566 RenderObject* newRenderer = createRenderer(document()->renderArena(), style.get());1563 RenderObject* newRenderer = m_node->createRenderer(document()->renderArena(), style.get()); 1567 1564 if (!newRenderer) 1568 1565 return 0; 1569 1566 1570 if (! parentDetector.parentNodeForRenderingAndStyle()->renderer()->isChildAllowed(newRenderer, style.get())) {1567 if (!m_parentNodeForRenderingAndStyle->renderer()->isChildAllowed(newRenderer, style.get())) { 1571 1568 newRenderer->destroy(); 1572 1569 return 0; 1573 1570 } 1574 setRenderer(newRenderer); 1571 1572 m_node->setRenderer(newRenderer); 1575 1573 newRenderer->setAnimatableStyle(style.release()); // setAnimatableStyle() can depend on renderer() already being set. 1576 1574 return newRenderer; … … 1591 1589 #endif 1592 1590 1593 void Node ::createRendererIfNeeded()1591 void NodeRendererFactory::createRendererIfNeeded() 1594 1592 { 1595 1593 if (!document()->shouldCreateRenderers()) 1596 1594 return; 1597 1595 1598 ASSERT(! renderer());1596 ASSERT(!m_node->renderer()); 1599 1597 1600 1598 RenderObject* newRenderer = createRendererAndStyle(); 1601 1599 1602 1600 #if ENABLE(FULLSCREEN_API) 1603 if (document()->webkitIsFullScreen() && document()->webkitCurrentFullScreenElement() == this)1601 if (document()->webkitIsFullScreen() && document()->webkitCurrentFullScreenElement() == m_node) 1604 1602 newRenderer = wrapWithRenderFullScreen(newRenderer, document()); 1605 1603 #endif … … 1609 1607 1610 1608 // Note: Adding newRenderer instead of renderer(). renderer() may be a child of newRenderer. 1611 parentNodeForRenderingAndStyle()->renderer()->addChild(newRenderer, nextRenderer()); 1609 m_parentNodeForRenderingAndStyle->renderer()->addChild(newRenderer, nextRenderer()); 1610 } 1611 1612 ContainerNode* Node::parentNodeForRenderingAndStyle() 1613 { 1614 return NodeRendererFactory(this).parentNodeForRenderingAndStyle(); 1615 } 1616 1617 void Node::createRendererIfNeeded() 1618 { 1619 NodeRendererFactory(this).createRendererIfNeeded(); 1612 1620 } 1613 1621 -
trunk/Source/WebCore/dom/Node.h
r84586 r84747 461 461 virtual bool childShouldCreateRenderer(Node*) const { return true; } 462 462 virtual RenderObject* createRenderer(RenderArena*, RenderStyle*); 463 ContainerNode* parentNodeForRenderingAndStyle() const;463 ContainerNode* parentNodeForRenderingAndStyle(); 464 464 465 465 // Wrapper for nodes that don't have a renderer, but still cache the style (like HTMLOptionElement). … … 664 664 void markAncestorsWithChildNeedsStyleRecalc(); 665 665 666 RenderObject* createRendererAndStyle();667 668 666 virtual void refEventTarget(); 669 667 virtual void derefEventTarget(); -
trunk/Source/WebCore/html/HTMLSummaryElement.cpp
r84632 r84747 81 81 HTMLDetailsElement* HTMLSummaryElement::detailsElement() const 82 82 { 83 Element* mayDetails = toElement( parentNodeForRenderingAndStyle());83 Element* mayDetails = toElement(const_cast<HTMLSummaryElement*>(this)->parentNodeForRenderingAndStyle()); 84 84 if (!mayDetails || !mayDetails->hasTagName(detailsTag)) 85 85 return 0;
Note: See TracChangeset
for help on using the changeset viewer.