Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(948)

Unified Diff: third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinderTest.cpp

Issue 2714283002: Fix unexpected blurry text caused by combination of skew and promotion (Closed)
Patch Set: Layout test update && bug fix Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinderTest.cpp
diff --git a/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinderTest.cpp b/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinderTest.cpp
index ce5ddb73319dffff4ac917288477a1df61a414b2..fbcca8a4a29118b7b0bf5969bc343276692db480 100644
--- a/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinderTest.cpp
+++ b/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinderTest.cpp
@@ -303,4 +303,56 @@ TEST_F(CompositingReasonFinderTest, DoNotCompositeNestedSticky) {
EXPECT_EQ(NotComposited, innerStickyLayer->compositingState());
}
+TEST_F(CompositingReasonFinderTest, CompositeSkewWithPromotedSkewedAncestor) {
+ setBodyInnerHTML(
+ "<style>.skew { transform: skew(20deg);}"
+ ".counter-skew { transform: skew(-20deg); }"
+ ".composited { will-change: transform; }</style>"
+ "<div class='skew'>"
+ " <div id='non-composited' class='counter-skew'></div>"
+ "</div>"
+ "<div id='skew' class='skew'>"
+ " <div id='should-composite' class='counter-skew'></div>"
+ " <div id='composited' class='composited counter-skew'></div>"
+ "</div>");
+ document().view()->updateAllLifecyclePhases();
+
+ // Skewed element is not composited automatically.
+ Element* nonComposited = document().getElementById("non-composited");
+ PaintLayer* nonCompositedLayer =
+ toLayoutBoxModelObject(nonComposited->layoutObject())->layer();
+ ASSERT_TRUE(nonCompositedLayer);
+ EXPECT_EQ(NotComposited, nonCompositedLayer->compositingState());
+
+ // Composite as it has composited descendant.
+ Element* compositedElement = document().getElementById("skew");
+ PaintLayer* compositedLayer =
+ toLayoutBoxModelObject(compositedElement->layoutObject())->layer();
+ ASSERT_TRUE(compositedLayer);
+ EXPECT_EQ(PaintsIntoOwnBacking, compositedLayer->compositingState());
+
+ // Skewed element with promoted skewed ancestor gets promoted as well.
+ compositedElement = document().getElementById("should-composite");
+ compositedLayer =
+ toLayoutBoxModelObject(compositedElement->layoutObject())->layer();
+ ASSERT_TRUE(compositedLayer);
+ EXPECT_EQ(PaintsIntoOwnBacking, compositedLayer->compositingState());
+
+ // Skewed element without promoted ancestor does not composite.
+ document().getElementById("composited")->removeAttribute("class");
+ document().view()->updateAllLifecyclePhases();
+ ASSERT_TRUE(compositedLayer);
+ EXPECT_EQ(NotComposited, compositedLayer->compositingState());
+
+ // Skewed element with promoted ancestor which is not skewed does not
+ // composite.
+ document()
+ .getElementById("composited")
+ ->setAttribute(HTMLNames::classAttr, "composited");
+ document().getElementById("skew")->removeAttribute("class");
+ document().view()->updateAllLifecyclePhases();
+ ASSERT_TRUE(compositedLayer);
+ EXPECT_EQ(NotComposited, compositedLayer->compositingState());
+}
+
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698