Chromium Code Reviews| Index: third_party/WebKit/Source/core/paint/PaintInvalidator.cpp |
| diff --git a/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp b/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp |
| index c250cac23558cf24e557f35ddb5115e285b29ca3..879ec10c56c36afd5282b6ce7290b41b9808f5c1 100644 |
| --- a/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp |
| +++ b/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp |
| @@ -73,12 +73,15 @@ static LayoutRect mapLocalRectToPaintInvalidationBacking(GeometryMapper& geometr |
| GeometryPropertyTreeState currentTreeState(context.treeBuilderContext.current.transform, context.treeBuilderContext.current.clip, context.treeBuilderContext.currentEffect); |
| GeometryPropertyTreeState containerTreeState; |
| const ObjectPaintProperties* containerPaintProperties = context.paintInvalidationContainer->objectPaintProperties(); |
| - containerPaintProperties->getContentsProperties(containerTreeState); |
| + LayoutPoint paintOffsetFromContainerTreeState; |
| + containerPaintProperties->getContentsPropertyTreeState(containerTreeState, paintOffsetFromContainerTreeState); |
| bool success = false; |
| result = LayoutRect(geometryMapper.mapToVisualRectInDestinationSpace(rect, currentTreeState, containerTreeState, success)); |
| DCHECK(success); |
| - result.moveBy(-containerPaintProperties->localBorderBoxProperties()->paintOffset); |
| + |
| + // Convert the result from containerTreeState space to the container's contents space. |
| + result.moveBy(-paintOffsetFromContainerTreeState); |
| } |
| if (context.paintInvalidationContainer->layer()->groupedMapping()) |
| @@ -114,12 +117,17 @@ LayoutPoint PaintInvalidator::computeLocationFromPaintInvalidationBacking(const |
| if (object != context.paintInvalidationContainer) { |
| point.moveBy(FloatPoint(context.treeBuilderContext.current.paintOffset)); |
| - bool success = false; |
| GeometryPropertyTreeState currentTreeState(context.treeBuilderContext.current.transform, context.treeBuilderContext.current.clip, context.treeBuilderContext.currentEffect); |
| GeometryPropertyTreeState containerTreeState; |
| - context.paintInvalidationContainer->objectPaintProperties()->getContentsProperties(containerTreeState); |
| + LayoutPoint paintOffsetFromContainerTreeState; |
| + context.paintInvalidationContainer->objectPaintProperties()->getContentsPropertyTreeState(containerTreeState, paintOffsetFromContainerTreeState); |
| + |
| + bool success = false; |
| point = m_geometryMapper.mapRectToDestinationSpace(FloatRect(point, FloatSize()), currentTreeState, containerTreeState, success).location(); |
| DCHECK(success); |
| + |
| + // Convert the result from containerTreeState space to the container's contents space. |
| + point.moveBy(-paintOffsetFromContainerTreeState); |
|
Xianzhu
2016/09/29 22:21:35
This was a bug but doesn't matter much because the
|
| } |
| if (context.paintInvalidationContainer->layer()->groupedMapping()) |