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

Unified Diff: third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp

Issue 2571043002: Set a direct compositing reason for 3D transform & will-change property tree nodes (Closed)
Patch Set: none Created 4 years 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/paint/PaintPropertyTreeBuilderTest.cpp
diff --git a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp
index bd9a0b02a5482e7e10b465f4cb14ae36c4504171..c5b5f979fe69e30528d669d964492e8869bcf052 100644
--- a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp
@@ -334,7 +334,12 @@ TEST_P(PaintPropertyTreeBuilderTest, Perspective) {
}
TEST_P(PaintPropertyTreeBuilderTest, Transform) {
- loadTestData("transform.html");
+ setBodyInnerHTML(
+ "<style> body { margin: 0 } </style>"
+ "<div id='transform' style='margin-left: 50px; margin-top: 100px;"
+ " width: 400px; height: 300px;"
+ " transform: translate3D(123px, 456px, 789px)'>"
+ "</div>");
Element* transform = document().getElementById("transform");
const ObjectPaintProperties* transformProperties =
@@ -349,9 +354,86 @@ TEST_P(PaintPropertyTreeBuilderTest, Transform) {
transformProperties->paintOffsetTranslation()->matrix());
EXPECT_EQ(frameScrollTranslation(),
transformProperties->paintOffsetTranslation()->parent());
+
+ EXPECT_TRUE(transformProperties->transform()->hasDirectCompositingReasons());
+ EXPECT_FALSE(frameScrollTranslation()->hasDirectCompositingReasons());
+
CHECK_EXACT_VISUAL_RECT(LayoutRect(173, 556, 400, 300),
transform->layoutObject(),
document().view()->layoutView());
+
+ transform->setAttribute(
+ HTMLNames::styleAttr,
+ "margin-left: 50px; margin-top: 100px; width: 400px; height: 300px;");
+ document().view()->updateAllLifecyclePhases();
+ EXPECT_EQ(nullptr, transform->layoutObject()->paintProperties()->transform());
+
+ transform->setAttribute(
+ HTMLNames::styleAttr,
+ "margin-left: 50px; margin-top: 100px; width: 400px; height: 300px; "
+ "transform: translate3D(123px, 456px, 789px)");
+ document().view()->updateAllLifecyclePhases();
+ EXPECT_EQ(
+ TransformationMatrix().translate3d(123, 456, 789),
+ transform->layoutObject()->paintProperties()->transform()->matrix());
+}
+
+TEST_P(PaintPropertyTreeBuilderTest, WillChangeTransform) {
+ setBodyInnerHTML(
+ "<style> body { margin: 0 } </style>"
+ "<div id='transform' style='margin-left: 50px; margin-top: 100px;"
+ " width: 400px; height: 300px;"
+ " will-change: transform'>"
+ "</div>");
+
+ Element* transform = document().getElementById("transform");
+ const ObjectPaintProperties* transformProperties =
+ transform->layoutObject()->paintProperties();
+
+ EXPECT_EQ(TransformationMatrix(), transformProperties->transform()->matrix());
+ EXPECT_EQ(FloatPoint3D(200, 150, 0),
+ transformProperties->transform()->origin());
+ EXPECT_EQ(nullptr, transformProperties->paintOffsetTranslation());
+ EXPECT_TRUE(transformProperties->transform()->hasDirectCompositingReasons());
+
+ CHECK_EXACT_VISUAL_RECT(LayoutRect(50, 100, 400, 300),
+ transform->layoutObject(),
+ document().view()->layoutView());
+
+ transform->setAttribute(
+ HTMLNames::styleAttr,
+ "margin-left: 50px; margin-top: 100px; width: 400px; height: 300px;");
+ document().view()->updateAllLifecyclePhases();
+ EXPECT_EQ(nullptr, transform->layoutObject()->paintProperties()->transform());
+
+ transform->setAttribute(
+ HTMLNames::styleAttr,
+ "margin-left: 50px; margin-top: 100px; width: 400px; height: 300px; "
+ "will-change: transform");
+ document().view()->updateAllLifecyclePhases();
+ EXPECT_EQ(
+ TransformationMatrix(),
+ transform->layoutObject()->paintProperties()->transform()->matrix());
+}
+
+TEST_P(PaintPropertyTreeBuilderTest, WillChangeContents) {
+ setBodyInnerHTML(
+ "<style> body { margin: 0 } </style>"
+ "<div id='transform' style='margin-left: 50px; margin-top: 100px;"
+ " width: 400px; height: 300px;"
+ " will-change: transform, contents'>"
+ "</div>");
+
+ Element* transform = document().getElementById("transform");
+ const ObjectPaintProperties* transformProperties =
+ transform->layoutObject()->paintProperties();
+
+ EXPECT_EQ(nullptr, transformProperties->transform());
+ EXPECT_EQ(nullptr, transformProperties->paintOffsetTranslation());
+
+ CHECK_EXACT_VISUAL_RECT(LayoutRect(50, 100, 400, 300),
+ transform->layoutObject(),
+ document().view()->layoutView());
}
TEST_P(PaintPropertyTreeBuilderTest, RelativePositionInline) {

Powered by Google App Engine
This is Rietveld 408576698