Changeset 162523 in webkit


Ignore:
Timestamp:
Jan 22, 2014 9:30:13 AM (10 years ago)
Author:
commit-queue@webkit.org
Message:

[CSS Regions] layerOwner in RenderNamedFlowFragment cannot return null
https://bugs.webkit.org/show_bug.cgi?id=127343

Patch by Mihai Maerean <Mihai Maerean> on 2014-01-22
Reviewed by Sam Weinig.

RenderNamedFlowFragment::layerOwner cannot return null because regions create stacking
contexts which create layers.

No new tests, no functional change.

  • rendering/RenderFlowThread.cpp:

(WebCore::RenderFlowThread::hasCompositingRegionDescendant):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::calculateClipRects):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::adjustAncestorCompositingBoundsForFlowThread):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::computeRegionCompositingRequirements):

  • rendering/RenderNamedFlowFragment.h:
Location:
trunk/Source/WebCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r162518 r162523  
     12014-01-22  Mihai Maerean  <mmaerean@adobe.com>
     2
     3        [CSS Regions] layerOwner in RenderNamedFlowFragment cannot return null
     4        https://bugs.webkit.org/show_bug.cgi?id=127343
     5
     6        Reviewed by Sam Weinig.
     7
     8        RenderNamedFlowFragment::layerOwner cannot return null because regions create stacking
     9        contexts which create layers.
     10
     11        No new tests, no functional change.
     12
     13        * rendering/RenderFlowThread.cpp:
     14        (WebCore::RenderFlowThread::hasCompositingRegionDescendant):
     15        * rendering/RenderLayer.cpp:
     16        (WebCore::RenderLayer::calculateClipRects):
     17        * rendering/RenderLayerBacking.cpp:
     18        (WebCore::RenderLayerBacking::adjustAncestorCompositingBoundsForFlowThread):
     19        * rendering/RenderLayerCompositor.cpp:
     20        (WebCore::RenderLayerCompositor::computeRegionCompositingRequirements):
     21        * rendering/RenderNamedFlowFragment.h:
     22
    1232014-01-22  Antti Koivisto  <antti@apple.com>
    224
  • trunk/Source/WebCore/rendering/RenderFlowThread.cpp

    r162117 r162523  
    252252bool RenderFlowThread::hasCompositingRegionDescendant() const
    253253{
    254     for (auto iter = m_regionList.begin(), end = m_regionList.end(); iter != end; ++iter)
    255         if (RenderLayerModelObject* layerOwner = toRenderNamedFlowFragment(*iter)->layerOwner())
    256             if (layerOwner->hasLayer() && layerOwner->layer()->hasCompositingDescendant())
    257                 return true;
     254    for (auto& region : m_regionList)
     255        if (toRenderNamedFlowFragment(region)->layerOwner().layer()->hasCompositingDescendant())
     256            return true;
    258257
    259258    return false;
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r162115 r162523  
    69386938void RenderLayer::paintNamedFlowThreadInsideRegion(GraphicsContext* context, RenderNamedFlowFragment* region, LayoutRect paintDirtyRect, LayoutPoint paintOffset, PaintBehavior paintBehavior, PaintLayerFlags paintFlags)
    69396939{
    6940     LayoutRect regionContentBox = toRenderBox(region->layerOwner())->contentBoxRect();
     6940    LayoutRect regionContentBox = toRenderBox(region->layerOwner()).contentBoxRect();
    69416941    LayoutSize moveOffset = region->flowThreadPortionLocation() - (paintOffset + regionContentBox.location());
    69426942    IntPoint adjustedPaintOffset = roundedIntPoint(-moveOffset);
  • trunk/Source/WebCore/rendering/RenderLayerBacking.cpp

    r162480 r162523  
    10021002            m_owningLayer.convertToPixelSnappedLayerCoords(flowThreadLayer, flowDelta);
    10031003            parentRegion->adjustRegionBoundsFromFlowThreadPortionRect(flowDelta, ancestorCompositingBounds);
    1004             RenderBoxModelObject* layerOwner = toRenderBoxModelObject(parentRegion->layerOwner());
    1005             if (layerOwner->hasLayer() && layerOwner->layer()->backing()) {
     1004            RenderBoxModelObject& layerOwner = toRenderBoxModelObject(parentRegion->layerOwner());
     1005            if (layerOwner.layer()->backing()) {
    10061006                // Make sure that the region propagates its borders, paddings, outlines or box-shadows to layers inside it.
    10071007                // Note that the composited bounds of the RenderRegion are already calculated
    10081008                // because RenderLayerCompositor::rebuildCompositingLayerTree will only
    10091009                // iterate on the content of the region after the region itself is computed.
    1010                 ancestorCompositingBounds.moveBy(roundedIntPoint(layerOwner->layer()->backing()->compositedBounds().location()));
    1011                 ancestorCompositingBounds.move(-layerOwner->borderAndPaddingStart(), -layerOwner->borderAndPaddingBefore());
     1010                ancestorCompositingBounds.moveBy(roundedIntPoint(layerOwner.layer()->backing()->compositedBounds().location()));
     1011                ancestorCompositingBounds.move(-layerOwner.borderAndPaddingStart(), -layerOwner.borderAndPaddingBefore());
    10121012            }
    10131013        }
  • trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp

    r162518 r162523  
    12891289
    12901290    if (overlapMap)
    1291         overlapMap->geometryMap().popMappingsToAncestor(region->layerOwner());
     1291        overlapMap->geometryMap().popMappingsToAncestor(&region->layerOwner());
    12921292}
    12931293
  • trunk/Source/WebCore/rendering/RenderNamedFlowFragment.h

    r162158 r162523  
    6666    // parent renderer instead.
    6767    // This method returns that renderer holding the layer.
    68     // The return value may be null.
    69     RenderLayerModelObject* layerOwner() const { return parent() && parent()->isRenderLayerModelObject() ? toRenderLayerModelObject(parent())
    70         : nullptr; }
     68    // The return value cannot be null because CSS Regions create Stacking Contexts (which means they create layers).
     69    RenderLayerModelObject& layerOwner() const { return *toRenderLayerModelObject(parent()); }
    7170
    7271    bool hasCustomRegionStyle() const { return m_hasCustomRegionStyle; }
Note: See TracChangeset for help on using the changeset viewer.