Index: third_party/WebKit/Source/core/paint/BoxPaintInvalidatorTest.cpp |
diff --git a/third_party/WebKit/Source/core/paint/BoxPaintInvalidatorTest.cpp b/third_party/WebKit/Source/core/paint/BoxPaintInvalidatorTest.cpp |
index f771914735ad8c3ee0384b3ae817d7ab303c9d0d..3668a4fc0a3c0892a264b27b06e77725e1e50a67 100644 |
--- a/third_party/WebKit/Source/core/paint/BoxPaintInvalidatorTest.cpp |
+++ b/third_party/WebKit/Source/core/paint/BoxPaintInvalidatorTest.cpp |
@@ -59,6 +59,9 @@ class BoxPaintInvalidatorTest : public ::testing::WithParamInterface<bool>, |
" .gradient {" |
" background-image: linear-gradient(blue, yellow)" |
" }" |
+ " .transform {" |
+ " transform: scale(2);" |
+ " }" |
"</style>" |
"<div id='target' class='border'></div>"); |
} |
@@ -116,64 +119,98 @@ TEST_P(BoxPaintInvalidatorTest, SubpixelVisualRectChagne) { |
Element* target = document().getElementById("target"); |
- // Should do full invalidation if new geometry has subpixels. |
document().view()->setTracksPaintInvalidations(true); |
target->setAttribute(HTMLNames::styleAttr, "width: 100.6px; height: 70.3px"); |
document().view()->updateAllLifecyclePhases(); |
const auto* rasterInvalidations = |
&getRasterInvalidationTracking()->trackedRasterInvalidations; |
ASSERT_EQ(2u, rasterInvalidations->size()); |
- EXPECT_EQ(IntRect(0, 0, 70, 140), (*rasterInvalidations)[0].rect); |
+ EXPECT_EQ(IntRect(60, 0, 61, 111), (*rasterInvalidations)[0].rect); |
+ EXPECT_EQ(PaintInvalidationIncremental, (*rasterInvalidations)[0].reason); |
+ EXPECT_EQ(IntRect(0, 90, 70, 50), (*rasterInvalidations)[1].rect); |
+ EXPECT_EQ(PaintInvalidationIncremental, (*rasterInvalidations)[1].reason); |
+ document().view()->setTracksPaintInvalidations(false); |
+ |
+ document().view()->setTracksPaintInvalidations(true); |
+ target->setAttribute(HTMLNames::styleAttr, "width: 50px; height: 100px"); |
+ document().view()->updateAllLifecyclePhases(); |
+ rasterInvalidations = |
+ &getRasterInvalidationTracking()->trackedRasterInvalidations; |
+ ASSERT_EQ(2u, rasterInvalidations->size()); |
+ EXPECT_EQ(IntRect(60, 0, 61, 111), (*rasterInvalidations)[0].rect); |
+ EXPECT_EQ(PaintInvalidationIncremental, (*rasterInvalidations)[0].reason); |
+ EXPECT_EQ(IntRect(0, 90, 70, 50), (*rasterInvalidations)[1].rect); |
+ EXPECT_EQ(PaintInvalidationIncremental, (*rasterInvalidations)[1].reason); |
+ document().view()->setTracksPaintInvalidations(false); |
+} |
+ |
+TEST_P(BoxPaintInvalidatorTest, SubpixelVisualRectChagneWithTransform) { |
wkorman
2017/02/21 22:54:19
Chagne -> Change
Xianzhu
2017/02/21 23:15:59
Done.
|
+ ScopedSlimmingPaintInvalidationForTest scopedSlimmingPaintInvalidation(true); |
+ |
+ Element* target = document().getElementById("target"); |
+ target->setAttribute(HTMLNames::classAttr, "border transform"); |
+ document().view()->updateAllLifecyclePhases(); |
+ |
+ document().view()->setTracksPaintInvalidations(true); |
+ target->setAttribute(HTMLNames::styleAttr, "width: 100.6px; height: 70.3px"); |
+ document().view()->updateAllLifecyclePhases(); |
+ const auto* rasterInvalidations = |
+ &getRasterInvalidationTracking()->trackedRasterInvalidations; |
+ ASSERT_EQ(2u, rasterInvalidations->size()); |
+ EXPECT_EQ(IntRect(0, 0, 140, 280), (*rasterInvalidations)[0].rect); |
EXPECT_EQ(PaintInvalidationBorderBoxChange, (*rasterInvalidations)[0].reason); |
- EXPECT_EQ(IntRect(0, 0, 121, 111), (*rasterInvalidations)[1].rect); |
+ EXPECT_EQ(IntRect(0, 0, 242, 222), (*rasterInvalidations)[1].rect); |
EXPECT_EQ(PaintInvalidationBorderBoxChange, (*rasterInvalidations)[1].reason); |
document().view()->setTracksPaintInvalidations(false); |
- // Should do full invalidation if old geometry has subpixels. |
document().view()->setTracksPaintInvalidations(true); |
target->setAttribute(HTMLNames::styleAttr, "width: 50px; height: 100px"); |
document().view()->updateAllLifecyclePhases(); |
rasterInvalidations = |
&getRasterInvalidationTracking()->trackedRasterInvalidations; |
ASSERT_EQ(2u, rasterInvalidations->size()); |
- EXPECT_EQ(IntRect(0, 0, 121, 111), (*rasterInvalidations)[0].rect); |
+ EXPECT_EQ(IntRect(0, 0, 242, 222), (*rasterInvalidations)[0].rect); |
EXPECT_EQ(PaintInvalidationBorderBoxChange, (*rasterInvalidations)[0].reason); |
- EXPECT_EQ(IntRect(0, 0, 70, 140), (*rasterInvalidations)[1].rect); |
+ EXPECT_EQ(IntRect(0, 0, 140, 280), (*rasterInvalidations)[1].rect); |
EXPECT_EQ(PaintInvalidationBorderBoxChange, (*rasterInvalidations)[1].reason); |
document().view()->setTracksPaintInvalidations(false); |
} |
-TEST_P(BoxPaintInvalidatorTest, SubpixelChangeWithoutVisualRectChange) { |
+TEST_P(BoxPaintInvalidatorTest, SubpixelWithinPixelsChange) { |
ScopedSlimmingPaintInvalidationForTest scopedSlimmingPaintInvalidation(true); |
Element* target = document().getElementById("target"); |
LayoutObject* targetObject = target->layoutObject(); |
EXPECT_EQ(LayoutRect(0, 0, 70, 140), targetObject->previousVisualRect()); |
- // Should do full invalidation if new geometry has subpixels even if the paint |
- // invalidation rect doesn't change. |
document().view()->setTracksPaintInvalidations(true); |
target->setAttribute(HTMLNames::styleAttr, |
"margin-top: 0.6px; width: 50px; height: 99.3px"); |
document().view()->updateAllLifecyclePhases(); |
- EXPECT_EQ(LayoutRect(0, 0, 70, 140), targetObject->previousVisualRect()); |
+ EXPECT_EQ(LayoutRect(LayoutUnit(), LayoutUnit(0.6), LayoutUnit(70), |
+ LayoutUnit(139.3)), |
+ targetObject->previousVisualRect()); |
const auto* rasterInvalidations = |
&getRasterInvalidationTracking()->trackedRasterInvalidations; |
ASSERT_EQ(1u, rasterInvalidations->size()); |
EXPECT_EQ(IntRect(0, 0, 70, 140), (*rasterInvalidations)[0].rect); |
- EXPECT_EQ(PaintInvalidationLocationChange, (*rasterInvalidations)[0].reason); |
+ EXPECT_EQ(PaintInvalidationBoundsChange, (*rasterInvalidations)[0].reason); |
document().view()->setTracksPaintInvalidations(false); |
document().view()->setTracksPaintInvalidations(true); |
target->setAttribute(HTMLNames::styleAttr, |
"margin-top: 0.6px; width: 49.3px; height: 98.5px"); |
document().view()->updateAllLifecyclePhases(); |
- EXPECT_EQ(LayoutRect(0, 0, 70, 140), targetObject->previousVisualRect()); |
+ EXPECT_EQ(LayoutRect(LayoutUnit(), LayoutUnit(0.6), LayoutUnit(69.3), |
+ LayoutUnit(138.5)), |
+ targetObject->previousVisualRect()); |
rasterInvalidations = |
&getRasterInvalidationTracking()->trackedRasterInvalidations; |
- ASSERT_EQ(1u, rasterInvalidations->size()); |
- EXPECT_EQ(IntRect(0, 0, 70, 140), (*rasterInvalidations)[0].rect); |
- EXPECT_EQ(PaintInvalidationBorderBoxChange, (*rasterInvalidations)[0].reason); |
+ ASSERT_EQ(2u, rasterInvalidations->size()); |
+ EXPECT_EQ(IntRect(59, 0, 11, 140), (*rasterInvalidations)[0].rect); |
+ EXPECT_EQ(PaintInvalidationIncremental, (*rasterInvalidations)[0].reason); |
+ EXPECT_EQ(IntRect(0, 119, 70, 21), (*rasterInvalidations)[1].rect); |
+ EXPECT_EQ(PaintInvalidationIncremental, (*rasterInvalidations)[1].reason); |
document().view()->setTracksPaintInvalidations(false); |
} |