Index: third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp |
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp b/third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp |
index 96fe94dd115a0cc4288aa04e12de721f860e13bf..4ccfc42bf08430bf43c814a9617e140299688a95 100644 |
--- a/third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp |
+++ b/third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp |
@@ -249,8 +249,16 @@ LayoutRect PaintLayerClipper::localClipRect( |
#ifdef CHECK_CLIP_RECTS |
#define CHECK_RECTS_EQ(expected, actual) \ |
- CHECK((expected.isEmpty() && actual.isEmpty()) || expected == actual) \ |
- << "expected=" << expected.toString() << " actual=" << actual.toString() |
+ do { \ |
chrishtr
2017/02/16 21:44:28
I adjusted this to not assert, in order to get bet
|
+ bool matches = \ |
+ (expected.isEmpty() && actual.isEmpty()) || expected == actual; \ |
+ if (!matches) { \ |
+ LOG(ERROR) << "Rects don't match for m_layer=" \ |
+ << m_layer.layoutObject()->debugName() \ |
+ << " expected=" << expected.toString() \ |
+ << " actual=" << actual.toString(); \ |
+ } \ |
+ } while (false); |
#endif |
void PaintLayerClipper::mapLocalToRootWithGeometryMapper( |
@@ -272,6 +280,7 @@ void PaintLayerClipper::mapLocalToRootWithGeometryMapper( |
rectToMap = LayoutRect(m_geometryMapper->sourceToDestinationRect( |
localRect, layerTransform, rootTransform)); |
rectToMap.moveBy(-context.rootLayer->layoutObject()->paintOffset()); |
+ rectToMap.move(context.subPixelAccumulation); |
chrishtr
2017/02/16 21:44:28
This is exercised by the layout test
fast/sub-pixe
|
} |
void PaintLayerClipper::calculateRectsWithGeometryMapper( |
@@ -288,16 +297,15 @@ void PaintLayerClipper::calculateRectsWithGeometryMapper( |
foregroundRect = ClipRect(LayoutRect(LayoutRect::infiniteIntRect())); |
} else { |
backgroundRect = clipRectWithGeometryMapper(context, false); |
- applyOverflowClipToBackgroundRectWithGeometryMapper(context, |
- backgroundRect); |
- backgroundRect.move( |
- context.subPixelAccumulation); // TODO(chrishtr): is this needed? |
chrishtr
2017/02/16 21:44:28
Confirmed that it is needed.
|
+ backgroundRect.move(context.subPixelAccumulation); |
backgroundRect.intersect(paintDirtyRect); |
- foregroundRect.move( |
- context.subPixelAccumulation); // TODO(chrishtr): is this needed? |
+ applyOverflowClipToBackgroundRectWithGeometryMapper(context, |
+ backgroundRect); |
+ |
foregroundRect = clipRectWithGeometryMapper(context, true); |
+ foregroundRect.move(context.subPixelAccumulation); |
chrishtr
2017/02/16 21:44:28
I moved this above new line 309 for consistency wi
|
foregroundRect.intersect(paintDirtyRect); |
} |
LayoutPoint offset; |
@@ -310,9 +318,9 @@ void PaintLayerClipper::calculateRectsWithGeometryMapper( |
#ifdef CHECK_CLIP_RECTS |
ClipRect testBackgroundRect, testForegroundRect; |
LayoutRect testLayerBounds; |
- PaintLayerClipper(m_layer, false) |
+ PaintLayerClipper(m_layer, nullptr) |
.calculateRects(context, paintDirtyRect, testLayerBounds, |
- testBackgroundRect, testForegroundRect); |
+ testBackgroundRect, testForegroundRect, offsetFromRoot); |
CHECK_RECTS_EQ(testBackgroundRect, backgroundRect); |
CHECK_RECTS_EQ(testForegroundRect, foregroundRect); |
CHECK_RECTS_EQ(testLayerBounds, layerBounds); |
@@ -510,7 +518,7 @@ ClipRect PaintLayerClipper::backgroundClipRect( |
ClipRect backgroundClipRect = clipRectWithGeometryMapper(context, false); |
#ifdef CHECK_CLIP_RECTS |
ClipRect testBackgroundClipRect = |
- PaintLayerClipper(m_layer, false).backgroundClipRect(context); |
+ PaintLayerClipper(m_layer, nullptr).backgroundClipRect(context); |
CHECK_RECTS_EQ(testBackgroundClipRect, backgroundClipRect); |
#endif |
return backgroundClipRect; |