Changeset 109157 in webkit


Ignore:
Timestamp:
Feb 28, 2012 3:09:06 PM (12 years ago)
Author:
jchaffraix@webkit.org
Message:

Move RenderLayer::size() calls to a common function
https://bugs.webkit.org/show_bug.cgi?id=76972

Reviewed by Simon Fraser.

Refactoring only.

This change introduces RenderBox::cachedSizeForOverflowClip() that handles all the cached size
requests that currently goes through the RenderLayer. This indirection helps to decouple the need
for a RenderLayer so that we can lazily allocate RenderLayers as part of bug 75568.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::cachedSizeForOverflowClip):
Added this function to handle the calls to RenderLayer's size(). Unfortunately a lot of the
code calls RenderLayer::size() directly so I could not make it private.

  • rendering/LayoutState.cpp:

(WebCore::LayoutState::LayoutState):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::computeRectForRepaint):

  • rendering/RenderBox.h:

(RenderBox):

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::clippedOverflowRectForRepaint):
(WebCore::RenderInline::computeRectForRepaint):

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::computeRectForRepaint):
Fixed the call sites above.

Location:
trunk/Source/WebCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r109155 r109157  
     12012-02-28  Julien Chaffraix  <jchaffraix@webkit.org>
     2
     3        Move RenderLayer::size() calls to a common function
     4        https://bugs.webkit.org/show_bug.cgi?id=76972
     5
     6        Reviewed by Simon Fraser.
     7
     8        Refactoring only.
     9
     10        This change introduces RenderBox::cachedSizeForOverflowClip() that handles all the cached size
     11        requests that currently goes through the RenderLayer. This indirection helps to decouple the need
     12        for a RenderLayer so that we can lazily allocate RenderLayers as part of bug 75568.
     13
     14        * rendering/RenderBox.cpp:
     15        (WebCore::RenderBox::cachedSizeForOverflowClip):
     16        Added this function to handle the calls to RenderLayer's size(). Unfortunately a lot of the
     17        code calls RenderLayer::size() directly so I could not make it private.
     18
     19        * rendering/LayoutState.cpp:
     20        (WebCore::LayoutState::LayoutState):
     21        * rendering/RenderBox.cpp:
     22        (WebCore::RenderBox::computeRectForRepaint):
     23        * rendering/RenderBox.h:
     24        (RenderBox):
     25        * rendering/RenderInline.cpp:
     26        (WebCore::RenderInline::clippedOverflowRectForRepaint):
     27        (WebCore::RenderInline::computeRectForRepaint):
     28        * rendering/RenderObject.cpp:
     29        (WebCore::RenderObject::computeRectForRepaint):
     30        Fixed the call sites above.
     31
    1322012-02-28  Tim Dresser  <tdresser@chromium.org>
    233
  • trunk/Source/WebCore/rendering/LayoutState.cpp

    r108382 r109157  
    7171
    7272    if (renderer->hasOverflowClip()) {
    73         RenderLayer* layer = renderer->layer();
    74         LayoutRect clipRect(toPoint(m_paintOffset) + renderer->view()->layoutDelta(), layer->size());
     73        LayoutRect clipRect(toPoint(m_paintOffset) + renderer->view()->layoutDelta(), renderer->cachedSizeForOverflowClip());
    7574        if (m_clipped)
    7675            m_clipRect.intersect(clipRect);
     
    157156
    158157    if (container->hasOverflowClip()) {
     158        m_clipped = true;
    159159        RenderBox* containerBox = toRenderBox(container);
    160         RenderLayer* layer = containerBox->layer();
    161         m_clipped = true;
    162         m_clipRect = LayoutRect(toPoint(m_paintOffset), layer->size());
     160        m_clipRect = LayoutRect(toPoint(m_paintOffset), containerBox->cachedSizeForOverflowClip());
    163161        m_paintOffset -= containerBox->scrolledContentOffset();
    164162    }
  • trunk/Source/WebCore/rendering/RenderBox.cpp

    r109104 r109157  
    754754}
    755755
     756IntSize RenderBox::cachedSizeForOverflowClip() const
     757{
     758    ASSERT(hasOverflowClip());
     759    ASSERT(hasLayer());
     760
     761    return layer()->size();
     762}
     763
    756764LayoutUnit RenderBox::minPreferredLogicalWidth() const
    757765{
     
    16431651
    16441652        LayoutRect repaintRect(topLeft, rect.size());
    1645         LayoutRect boxRect(LayoutPoint(), containerBox->layer()->size());
     1653        LayoutRect boxRect(LayoutPoint(), containerBox->cachedSizeForOverflowClip());
    16461654        rect = intersection(repaintRect, boxRect);
    16471655        if (rect.isEmpty())
  • trunk/Source/WebCore/rendering/RenderBox.h

    r109104 r109157  
    449449
    450450    IntSize scrolledContentOffset() const;
     451    IntSize cachedSizeForOverflowClip() const;
    451452
    452453    virtual bool hasRelativeDimensions() const;
  • trunk/Source/WebCore/rendering/RenderInline.cpp

    r108719 r109157  
    10341034        repaintRect.move(-cb->scrolledContentOffset()); // For overflow:auto/scroll/hidden.
    10351035
    1036         LayoutRect boxRect(LayoutPoint(), cb->layer()->size());
     1036        LayoutRect boxRect(LayoutPoint(), cb->cachedSizeForOverflowClip());
    10371037        r = intersection(repaintRect, boxRect);
    10381038    }
     
    11361136
    11371137        LayoutRect repaintRect(topLeft, rect.size());
    1138         LayoutRect boxRect(LayoutPoint(), containerBox->layer()->size());
     1138        LayoutRect boxRect(LayoutPoint(), containerBox->cachedSizeForOverflowClip());
    11391139        rect = intersection(repaintRect, boxRect);
    11401140        if (rect.isEmpty())
  • trunk/Source/WebCore/rendering/RenderObject.cpp

    r109060 r109157  
    15211521            repaintRect.move(-boxParent->scrolledContentOffset()); // For overflow:auto/scroll/hidden.
    15221522
    1523             LayoutRect boxRect(LayoutPoint(), boxParent->layer()->size());
     1523            LayoutRect boxRect(LayoutPoint(), boxParent->cachedSizeForOverflowClip());
    15241524            rect = intersection(repaintRect, boxRect);
    15251525            if (rect.isEmpty())
Note: See TracChangeset for help on using the changeset viewer.