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

Unified Diff: cc/layer_tree_host_common_unittest.cc

Issue 12407002: Align physical pixels of scrolled layers (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix win break again 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') | cc/math_util.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/layer_tree_host_common_unittest.cc
diff --git a/cc/layer_tree_host_common_unittest.cc b/cc/layer_tree_host_common_unittest.cc
index 655bbaf5dd79890bc67ed3762c78748111f9fd3c..926ae2ba364041be4a0fcdcdba8f01328d4e20b2 100644
--- a/cc/layer_tree_host_common_unittest.cc
+++ b/cc/layer_tree_host_common_unittest.cc
@@ -258,6 +258,58 @@ TEST(LayerTreeHostCommonTest, verifyTransformsForSingleLayer)
EXPECT_TRANSFORMATION_MATRIX_EQ(expectedResult, layer->screenSpaceTransform());
}
+TEST(LayerTreeHostCommonTest, verifyTransformsAboutScrollOffset)
+{
+ const gfx::Vector2d kScrollOffset(50, 100);
+ const gfx::Vector2dF kScrollDelta(2.34f, 5.67f);
+ const gfx::PointF kScrollLayerPosition(-kScrollOffset.x(), -kScrollOffset.y());
+ const float kPageScale = 0.888f;
+ const float kDeviceScale = 1.666f;
+
+ FakeImplProxy proxy;
+ FakeLayerTreeHostImpl hostImpl(&proxy);
+
+ gfx::Transform identityMatrix;
+ scoped_ptr<LayerImpl> sublayerScopedPtr(LayerImpl::create(hostImpl.activeTree(), 1));
+ LayerImpl* sublayer = sublayerScopedPtr.get();
+ sublayer->setContentsScale(kPageScale * kDeviceScale, kPageScale * kDeviceScale);
+ setLayerPropertiesForTesting(sublayer, identityMatrix, identityMatrix, gfx::Point(0, 0), gfx::PointF(0, 0), gfx::Size(500, 500), false);
+
+ scoped_ptr<LayerImpl> scrollLayerScopedPtr(LayerImpl::create(hostImpl.activeTree(), 2));
+ LayerImpl* scrollLayer = scrollLayerScopedPtr.get();
+ setLayerPropertiesForTesting(scrollLayer, identityMatrix, identityMatrix, gfx::PointF(0, 0), kScrollLayerPosition, gfx::Size(10, 20), false);
+ scrollLayer->setScrollable(true);
+ scrollLayer->setScrollOffset(kScrollOffset);
+ scrollLayer->setScrollDelta(kScrollDelta);
+ gfx::Transform implTransform;
+ implTransform.Scale(kPageScale, kPageScale);
+ scrollLayer->setImplTransform(implTransform);
+ scrollLayer->addChild(sublayerScopedPtr.Pass());
+
+ scoped_ptr<LayerImpl> root(LayerImpl::create(hostImpl.activeTree(), 3));
+ setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(3, 4), false);
+ root->addChild(scrollLayerScopedPtr.Pass());
+
+ executeCalculateDrawProperties(root.get(), kDeviceScale, kPageScale);
+ gfx::Transform expectedTransform = identityMatrix;
+ gfx::PointF subLayerScreenPosition = kScrollLayerPosition - kScrollDelta;
+ subLayerScreenPosition.Scale(kPageScale * kDeviceScale);
+ expectedTransform.Translate(MathUtil::Round(subLayerScreenPosition.x()), MathUtil::Round(subLayerScreenPosition.y()));
+ EXPECT_TRANSFORMATION_MATRIX_EQ(expectedTransform, sublayer->drawTransform());
+ EXPECT_TRANSFORMATION_MATRIX_EQ(expectedTransform, sublayer->screenSpaceTransform());
+
+ gfx::Transform arbitraryTranslate;
+ const float kTranslateX = 10.6f;
+ const float kTranslateY = 20.6f;
+ arbitraryTranslate.Translate(kTranslateX, kTranslateY);
+ setLayerPropertiesForTesting(scrollLayer, arbitraryTranslate, identityMatrix, gfx::PointF(0, 0), kScrollLayerPosition, gfx::Size(10, 20), false);
+ executeCalculateDrawProperties(root.get(), kDeviceScale, kPageScale);
+ expectedTransform.MakeIdentity();
+ expectedTransform.Translate(MathUtil::Round(kTranslateX * kPageScale * kDeviceScale + subLayerScreenPosition.x()),
+ MathUtil::Round(kTranslateY * kPageScale * kDeviceScale + subLayerScreenPosition.y()));
+ EXPECT_TRANSFORMATION_MATRIX_EQ(expectedTransform, sublayer->drawTransform());
+}
+
TEST(LayerTreeHostCommonTest, verifyTransformsForSimpleHierarchy)
{
gfx::Transform identityMatrix;
« no previous file with comments | « cc/layer_tree_host_common.cc ('k') | cc/math_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698