| Index: third_party/WebKit/Source/core/paint/LayerClipRecorder.cpp
|
| diff --git a/third_party/WebKit/Source/core/paint/LayerClipRecorder.cpp b/third_party/WebKit/Source/core/paint/LayerClipRecorder.cpp
|
| index bd8878a302b1dba1b02acd1c370850ad6cce395d..f31e457490999375f65e7d1ec74f90bbfffe1a4d 100644
|
| --- a/third_party/WebKit/Source/core/paint/LayerClipRecorder.cpp
|
| +++ b/third_party/WebKit/Source/core/paint/LayerClipRecorder.cpp
|
| @@ -20,7 +20,7 @@ LayerClipRecorder::LayerClipRecorder(
|
| const LayoutBoxModelObject& layoutObject,
|
| DisplayItem::Type clipType,
|
| const ClipRect& clipRect,
|
| - const PaintLayerPaintingInfo* localPaintingInfo,
|
| + const PaintLayer* clipRoot,
|
| const LayoutPoint& fragmentOffset,
|
| PaintLayerFlags paintFlags,
|
| BorderRadiusClippingRule rule)
|
| @@ -29,8 +29,8 @@ LayerClipRecorder::LayerClipRecorder(
|
| m_clipType(clipType) {
|
| IntRect snappedClipRect = pixelSnappedIntRect(clipRect.rect());
|
| Vector<FloatRoundedRect> roundedRects;
|
| - if (localPaintingInfo && clipRect.hasRadius()) {
|
| - collectRoundedRectClips(*layoutObject.layer(), *localPaintingInfo,
|
| + if (clipRoot && clipRect.hasRadius()) {
|
| + collectRoundedRectClips(*layoutObject.layer(), clipRoot,
|
| graphicsContext, fragmentOffset, paintFlags, rule,
|
| roundedRects);
|
| }
|
| @@ -58,7 +58,7 @@ static bool inContainingBlockChain(PaintLayer* startLayer,
|
|
|
| void LayerClipRecorder::collectRoundedRectClips(
|
| PaintLayer& paintLayer,
|
| - const PaintLayerPaintingInfo& localPaintingInfo,
|
| + const PaintLayer* clipRoot,
|
| GraphicsContext& context,
|
| const LayoutPoint& fragmentOffset,
|
| PaintLayerFlags paintFlags,
|
| @@ -79,14 +79,15 @@ void LayerClipRecorder::collectRoundedRectClips(
|
| // is properly clipped so that it can in turn clip the scrolled contents in
|
| // the compositor.
|
| if (layer->needsCompositedScrolling() &&
|
| - !(paintFlags & PaintLayerPaintingChildClippingMaskPhase))
|
| + !(paintFlags & PaintLayerPaintingChildClippingMaskPhase ||
|
| + paintFlags & PaintLayerPaintingAncestorClippingMaskPhase))
|
| break;
|
|
|
| if (layer->layoutObject()->hasOverflowClip() &&
|
| layer->layoutObject()->style()->hasBorderRadius() &&
|
| inContainingBlockChain(&paintLayer, layer)) {
|
| LayoutPoint delta(fragmentOffset);
|
| - layer->convertToLayerCoords(localPaintingInfo.rootLayer, delta);
|
| + layer->convertToLayerCoords(clipRoot, delta);
|
|
|
| // The PaintLayer's size is pixel-snapped if it is a LayoutBox. We can't
|
| // use a pre-snapped border rect for clipping, since
|
| @@ -99,7 +100,7 @@ void LayerClipRecorder::collectRoundedRectClips(
|
| LayoutRect(delta, size)));
|
| }
|
|
|
| - if (layer == localPaintingInfo.rootLayer)
|
| + if (layer == clipRoot)
|
| break;
|
| }
|
| }
|
|
|