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

Unified Diff: cc/layer_tree_host_common_unittest.cc

Issue 12278010: Merge 181957 (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1410/src/
Patch Set: Created 7 years, 10 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
« no previous file with comments | « cc/layer_tree_host_common.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/layer_tree_host_common_unittest.cc
===================================================================
--- cc/layer_tree_host_common_unittest.cc (revision 182807)
+++ cc/layer_tree_host_common_unittest.cc (working copy)
@@ -313,11 +313,9 @@
// But then, the child also does not preserve3D. When it gives its hierarchy to the grandChild, it should be flattened to 2D.
gfx::Transform parentSublayerMatrix;
parentSublayerMatrix.Scale3d(10, 10, 3.3);
- gfx::Transform parentTranslationToCenter;
- parentTranslationToCenter.Translate(5, 6);
- // Sublayer matrix is applied to the center of the parent layer.
+ // Sublayer matrix is applied to the anchor point of the parent layer.
parentCompositeTransform = parentTranslationToAnchor * parentLayerTransform * inverse(parentTranslationToAnchor)
- * parentTranslationToCenter * parentSublayerMatrix * inverse(parentTranslationToCenter);
+ * parentTranslationToAnchor * parentSublayerMatrix * inverse(parentTranslationToAnchor);
gfx::Transform flattenedCompositeTransform = parentCompositeTransform;
flattenedCompositeTransform.FlattenTo2d();
setLayerPropertiesForTesting(parent.get(), parentLayerTransform, parentSublayerMatrix, gfx::PointF(0.25, 0.25), gfx::PointF(0, 0), gfx::Size(10, 12), false);
@@ -366,10 +364,8 @@
gfx::Transform parentSublayerMatrix;
parentSublayerMatrix.Scale3d(0.9, 1, 3.3);
- gfx::Transform parentTranslationToCenter;
- parentTranslationToCenter.Translate(50, 60);
gfx::Transform parentCompositeTransform = parentTranslationToAnchor * parentLayerTransform * inverse(parentTranslationToAnchor)
- * parentTranslationToCenter * parentSublayerMatrix * inverse(parentTranslationToCenter);
+ * parentTranslationToAnchor * parentSublayerMatrix * inverse(parentTranslationToAnchor);
gfx::Vector2dF parentCompositeScale = MathUtil::computeTransform2dScaleComponents(parentCompositeTransform, 1.0f);
gfx::Transform surfaceSublayerTransform;
surfaceSublayerTransform.Scale(parentCompositeScale.x(), parentCompositeScale.y());
@@ -400,6 +396,35 @@
EXPECT_TRANSFORMATION_MATRIX_EQ(surfaceSublayerCompositeTransform, child->renderTarget()->renderSurface()->screenSpaceTransform());
}
+TEST(LayerTreeHostCommonTest, verifySublayerTransformWithAnchorPoint)
+{
+ // crbug.com/157961 - we were always applying the sublayer transform about
+ // the center of the layer, rather than the anchor point.
+
+ scoped_refptr<Layer> root = Layer::create();
+ scoped_refptr<Layer> parent = Layer::create();
+ scoped_refptr<LayerWithForcedDrawsContent> child = make_scoped_refptr(new LayerWithForcedDrawsContent());
+ root->addChild(parent);
+ parent->addChild(child);
+
+ gfx::Transform identityMatrix;
+ gfx::Transform parentSublayerMatrix;
+ parentSublayerMatrix.ApplyPerspectiveDepth(2.0);
+ gfx::PointF parentAnchorPoint(0.2f, 0.8f);
+
+ setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(1, 2), false);
+ setLayerPropertiesForTesting(parent.get(), identityMatrix, parentSublayerMatrix, parentAnchorPoint, gfx::PointF(0, 0), gfx::Size(100, 100), false);
+ setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(10, 10), false);
+ executeCalculateDrawProperties(root.get());
+
+ gfx::Transform expectedChildDrawTransform;
+ expectedChildDrawTransform.Translate(20, 80);
+ expectedChildDrawTransform.ApplyPerspectiveDepth(2.0);
+ expectedChildDrawTransform.Translate(-20, -80);
+ EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildDrawTransform, child->drawTransform());
+}
+
+
TEST(LayerTreeHostCommonTest, verifySeparateRenderTargetRequirementWithClipping)
{
scoped_refptr<Layer> root = Layer::create();
@@ -510,12 +535,8 @@
parentTranslationToAnchor.Translate(2.5, 3);
gfx::Transform parentSublayerMatrix;
parentSublayerMatrix.Scale3d(10, 10, 3.3);
- gfx::Transform parentTranslationToCenter;
- parentTranslationToCenter.Translate(5, 6);
gfx::Transform parentCompositeTransform = parentTranslationToAnchor * parentLayerTransform * inverse(parentTranslationToAnchor)
- * parentTranslationToCenter * parentSublayerMatrix * inverse(parentTranslationToCenter);
- gfx::Transform childTranslationToCenter;
- childTranslationToCenter.Translate(8, 9);
+ * parentTranslationToAnchor * parentSublayerMatrix * inverse(parentTranslationToAnchor);
gfx::Transform replicaLayerTransform;
replicaLayerTransform.Scale3d(3, 3, 1);
gfx::Vector2dF parentCompositeScale = MathUtil::computeTransform2dScaleComponents(parentCompositeTransform, 1.f);
@@ -590,8 +611,6 @@
// y component has a translation by 1 for every ancestor, which indicates the "depth" of the layer in the hierarchy.
gfx::Transform translationToAnchor;
translationToAnchor.Translate(2.5, 0);
- gfx::Transform translationToCenter;
- translationToCenter.Translate(5, 5);
gfx::Transform layerTransform;
layerTransform.Translate(1, 1);
gfx::Transform sublayerTransform;
@@ -600,7 +619,7 @@
replicaLayerTransform.Scale3d(-2, 5, 1);
gfx::Transform A = translationToAnchor * layerTransform * inverse(translationToAnchor);
- gfx::Transform B = translationToCenter * sublayerTransform * inverse(translationToCenter);
+ gfx::Transform B = translationToAnchor * sublayerTransform * inverse(translationToAnchor);
gfx::Transform R = A * translationToAnchor * replicaLayerTransform * inverse(translationToAnchor);
gfx::Vector2dF surface1ParentTransformScale = MathUtil::computeTransform2dScaleComponents(A * B, 1.f);
« no previous file with comments | « cc/layer_tree_host_common.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698