Changeset 84747 in webkit


Ignore:
Timestamp:
Apr 23, 2011 5:51:54 PM (13 years ago)
Author:
morrita@google.com
Message:

2011-04-23 MORITA Hajime <morrita@google.com>

Reviewed by Dimitri Glazkov.

[Refactoring] NodeRenderParentDetector should be NodeRenderFactory
https://bugs.webkit.org/show_bug.cgi?id=59280

  • Rename NodeRenderParentDetector to NodeRendererFactory
  • move createRendererAndStyle() and createRendererIfNeeded to NodeRendererFactory

No new test, no behavioral change.

  • dom/Node.cpp: (WebCore::NodeRendererFactory::NodeRendererFactory): (WebCore::NodeRendererFactory::document): (WebCore::NodeRendererFactory::nextRenderer): (WebCore::NodeRendererFactory::findVisualParent): (WebCore::NodeRendererFactory::shouldCreateRenderer): (WebCore::NodeRendererFactory::createRendererAndStyle): (WebCore::NodeRendererFactory::createRendererIfNeeded): (WebCore::Node::parentNodeForRenderingAndStyle): (WebCore::Node::createRendererIfNeeded):
  • dom/Node.h:
  • html/HTMLDetailsElement.cpp: (WebCore::DetailsSummaryElement::detailsElement): Added const_cast due to the chage on parentNodeForRenderingAndStyle()
Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r84745 r84747  
     12011-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
    1282011-04-23  MORITA Hajime  <morrita@google.com>
    229
  • trunk/Source/WebCore/dom/Node.cpp

    r84672 r84747  
    14651465
    14661466
    1467 class NodeRenderParentDetector {
     1467class NodeRendererFactory {
    14681468public:
    14691469    enum Type {
     
    14741474    };
    14751475
    1476     NodeRenderParentDetector(Node* node)
     1476    NodeRendererFactory(Node* node)
    14771477        : m_type(NotFound)
    14781478        , m_node(node)
     
    14831483 
    14841484    ContainerNode* parentNodeForRenderingAndStyle() const { return m_parentNodeForRenderingAndStyle; }
     1485    void createRendererIfNeeded();
     1486
     1487private:
     1488    Document* document() { return m_node->document(); }
     1489    ContainerNode* findVisualParent();
     1490    RenderObject* nextRenderer() const { return m_node->nextRenderer(); }
     1491    RenderObject* createRendererAndStyle();
    14851492    bool shouldCreateRenderer() const;
    1486 
    1487 private:
    1488     ContainerNode* findVisualParent();
    14891493
    14901494    Type m_type;
     
    14941498};
    14951499
    1496 ContainerNode* NodeRenderParentDetector::findVisualParent()
     1500ContainerNode* NodeRendererFactory::findVisualParent()
    14971501{
    14981502    ContainerNode* parent = m_node->parentOrHostNode();
     
    15101514            if (ContainerNode* contentContainer = m_visualParentShadowRoot->contentContainerFor(m_node)) {
    15111515                m_type = AsContentChild;
    1512                 return NodeRenderParentDetector(contentContainer).parentNodeForRenderingAndStyle();
     1516                return NodeRendererFactory(contentContainer).parentNodeForRenderingAndStyle();
    15131517            }
    15141518
     
    15211525}
    15221526
    1523 bool NodeRenderParentDetector::shouldCreateRenderer() const
     1527bool NodeRendererFactory::shouldCreateRenderer() const
    15241528{
    15251529    ASSERT(m_parentNodeForRenderingAndStyle);
     
    15451549}
    15461550
    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());
     1551RenderObject* NodeRendererFactory::createRendererAndStyle()
     1552{
     1553    ASSERT(!m_node->renderer());
    15561554    ASSERT(document()->shouldCreateRenderers());
    15571555
    1558     NodeRenderParentDetector parentDetector(this);
    1559     if (!parentDetector.shouldCreateRenderer())
     1556    if (!shouldCreateRenderer())
    15601557        return 0;
    15611558
    1562     RefPtr<RenderStyle> style = styleForRenderer();
    1563     if (!rendererIsNeeded(style.get()))
     1559    RefPtr<RenderStyle> style = m_node->styleForRenderer();
     1560    if (!m_node->rendererIsNeeded(style.get()))
    15641561        return 0;
    15651562
    1566     RenderObject* newRenderer = createRenderer(document()->renderArena(), style.get());
     1563    RenderObject* newRenderer = m_node->createRenderer(document()->renderArena(), style.get());
    15671564    if (!newRenderer)
    15681565        return 0;
    15691566
    1570     if (!parentDetector.parentNodeForRenderingAndStyle()->renderer()->isChildAllowed(newRenderer, style.get())) {
     1567    if (!m_parentNodeForRenderingAndStyle->renderer()->isChildAllowed(newRenderer, style.get())) {
    15711568        newRenderer->destroy();
    15721569        return 0;
    15731570    }
    1574     setRenderer(newRenderer);
     1571
     1572    m_node->setRenderer(newRenderer);
    15751573    newRenderer->setAnimatableStyle(style.release()); // setAnimatableStyle() can depend on renderer() already being set.
    15761574    return newRenderer;
     
    15911589#endif
    15921590
    1593 void Node::createRendererIfNeeded()
     1591void NodeRendererFactory::createRendererIfNeeded()
    15941592{
    15951593    if (!document()->shouldCreateRenderers())
    15961594        return;
    15971595
    1598     ASSERT(!renderer());
     1596    ASSERT(!m_node->renderer());
    15991597
    16001598    RenderObject* newRenderer = createRendererAndStyle();
    16011599
    16021600#if ENABLE(FULLSCREEN_API)
    1603     if (document()->webkitIsFullScreen() && document()->webkitCurrentFullScreenElement() == this)
     1601    if (document()->webkitIsFullScreen() && document()->webkitCurrentFullScreenElement() == m_node)
    16041602        newRenderer = wrapWithRenderFullScreen(newRenderer, document());
    16051603#endif
     
    16091607
    16101608    // 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
     1612ContainerNode* Node::parentNodeForRenderingAndStyle()
     1613{
     1614    return NodeRendererFactory(this).parentNodeForRenderingAndStyle();
     1615}
     1616
     1617void Node::createRendererIfNeeded()
     1618{
     1619    NodeRendererFactory(this).createRendererIfNeeded();
    16121620}
    16131621
  • trunk/Source/WebCore/dom/Node.h

    r84586 r84747  
    461461    virtual bool childShouldCreateRenderer(Node*) const { return true; }
    462462    virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
    463     ContainerNode* parentNodeForRenderingAndStyle() const;
     463    ContainerNode* parentNodeForRenderingAndStyle();
    464464   
    465465    // Wrapper for nodes that don't have a renderer, but still cache the style (like HTMLOptionElement).
     
    664664    void markAncestorsWithChildNeedsStyleRecalc();
    665665
    666     RenderObject* createRendererAndStyle();
    667 
    668666    virtual void refEventTarget();
    669667    virtual void derefEventTarget();
  • trunk/Source/WebCore/html/HTMLSummaryElement.cpp

    r84632 r84747  
    8181HTMLDetailsElement* HTMLSummaryElement::detailsElement() const
    8282{
    83     Element* mayDetails = toElement(parentNodeForRenderingAndStyle());
     83    Element* mayDetails = toElement(const_cast<HTMLSummaryElement*>(this)->parentNodeForRenderingAndStyle());
    8484    if (!mayDetails || !mayDetails->hasTagName(detailsTag))
    8585        return 0;
Note: See TracChangeset for help on using the changeset viewer.