Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "cc/layer.h" | |
| 6 #include "testing/gtest/include/gtest/gtest.h" | |
| 7 #include "third_party/WebKit/Source/Platform/chromium/public/WebFloatPoint.h" | |
| 8 #include "third_party/WebKit/Source/Platform/chromium/public/WebSize.h" | |
| 9 #include "third_party/WebKit/Source/Platform/chromium/public/WebTransformationMa trix.h" | |
| 10 #include "third_party/skia/include/utils/SkMatrix44.h" | |
| 11 #include "ui/gfx/point3_f.h" | |
| 12 #include "webkit/compositor_bindings/web_layer_impl_fixed_bounds.h" | |
| 13 | |
| 14 using namespace WebKit; | |
| 15 | |
| 16 TEST(WebLayerImplFixedBoundsTest, IdentityBounds) | |
|
enne (OOO)
2013/02/22 00:10:49
Thanks for these tests. It's hard to tell from lo
Xianzhu
2013/02/22 00:53:30
Agreed. Will change the tests.
| |
| 17 { | |
| 18 scoped_ptr<WebLayerImplFixedBounds> layer(new WebLayerImplFixedBounds()); | |
| 19 layer->setAnchorPoint(WebFloatPoint(0, 0)); | |
| 20 layer->setFixedBounds(gfx::Size(100, 100)); | |
| 21 layer->setBounds(WebSize(100, 100)); | |
| 22 EXPECT_EQ(WebSize(100, 100), layer->bounds()); | |
| 23 EXPECT_EQ(gfx::Size(100, 100), layer->layer()->bounds()); | |
| 24 EXPECT_EQ(gfx::Transform(), layer->layer()->transform()); | |
| 25 } | |
| 26 | |
| 27 gfx::Point3F transformPoint(const gfx::Transform& transform, const gfx::Point3F& point) | |
| 28 { | |
| 29 gfx::Point3F result = point; | |
| 30 transform.TransformPoint(result); | |
| 31 return result; | |
| 32 } | |
| 33 | |
| 34 #define EXPECT_POINT3F_EQ(p1, p2) \ | |
| 35 EXPECT_FLOAT_EQ((p1).x(), (p2).x()); \ | |
| 36 EXPECT_FLOAT_EQ((p1).y(), (p2).y()); \ | |
| 37 EXPECT_FLOAT_EQ((p1).z(), (p2).z()); | |
| 38 | |
| 39 TEST(WebLayerImplFixedBoundsTest, NonIdentityBounds) | |
| 40 { | |
| 41 scoped_ptr<WebLayerImplFixedBounds> layer(new WebLayerImplFixedBounds()); | |
| 42 layer->setAnchorPoint(WebFloatPoint(0, 0)); | |
| 43 layer->setFixedBounds(gfx::Size(100, 50)); | |
| 44 layer->setBounds(WebSize(250, 200)); | |
| 45 EXPECT_EQ(WebSize(250, 200), layer->bounds()); | |
| 46 EXPECT_EQ(gfx::Size(100, 50), layer->layer()->bounds()); | |
| 47 EXPECT_POINT3F_EQ(gfx::Point3F(25, 80, 1), transformPoint(layer->layer()->tr ansform(), gfx::Point3F(10, 20, 1))); | |
| 48 EXPECT_POINT3F_EQ(gfx::Point3F(4, 5, 1), transformPoint(layer->layer()->subl ayerTransform(), gfx::Point3F(10, 20, 1))); | |
| 49 EXPECT_TRUE(layer->transform().isIdentity()); | |
| 50 | |
| 51 layer->setBounds(gfx::Size(75, 100)); | |
| 52 EXPECT_EQ(WebSize(75, 100), layer->bounds()); | |
| 53 EXPECT_EQ(gfx::Size(100, 50), layer->layer()->bounds()); | |
| 54 EXPECT_POINT3F_EQ(gfx::Point3F(7.5f, 40, 1), transformPoint(layer->layer()-> transform(), gfx::Point3F(10, 20, 1))); | |
| 55 EXPECT_POINT3F_EQ(gfx::Point3F(10, 20, 1), transformPoint(layer->layer()->su blayerTransform(), gfx::Point3F(7.5f, 40, 1))); | |
| 56 EXPECT_TRUE(layer->transform().isIdentity()); | |
| 57 | |
| 58 layer->setFixedBounds(gfx::Size(200, 100)); | |
| 59 EXPECT_EQ(WebSize(75, 100), layer->bounds()); | |
| 60 EXPECT_EQ(gfx::Size(200, 100), layer->layer()->bounds()); | |
| 61 EXPECT_POINT3F_EQ(gfx::Point3F(3.75f, 20, 1), transformPoint(layer->layer()- >transform(), gfx::Point3F(10, 20, 1))); | |
| 62 EXPECT_POINT3F_EQ(gfx::Point3F(10, 20, 1), transformPoint(layer->layer()->su blayerTransform(), gfx::Point3F(3.75f, 20, 1))); | |
| 63 EXPECT_TRUE(layer->transform().isIdentity()); | |
| 64 } | |
| 65 | |
| 66 TEST(WebLayerImplFixedBoundsTest, WithOriginalTransform) | |
| 67 { | |
| 68 gfx::Transform originalTransform; | |
| 69 originalTransform.Translate3d(50, 60, 70); | |
| 70 originalTransform.Scale3d(1.5, 2.5, 3.5); | |
| 71 | |
| 72 scoped_ptr<WebLayerImplFixedBounds> layer(new WebLayerImplFixedBounds()); | |
| 73 layer->setAnchorPoint(WebFloatPoint(0, 0)); | |
| 74 layer->setTransform(originalTransform.matrix()); | |
| 75 layer->setFixedBounds(gfx::Size(100, 200)); | |
| 76 layer->setBounds(gfx::Size(150, 50)); | |
| 77 EXPECT_EQ(WebSize(150, 50), layer->bounds()); | |
| 78 EXPECT_EQ(gfx::Size(100, 200), layer->layer()->bounds()); | |
| 79 EXPECT_POINT3F_EQ(transformPoint(originalTransform, gfx::Point3F(15, 5, 1)), transformPoint(layer->layer()->transform(), gfx::Point3F(10, 20, 1))); | |
| 80 | |
| 81 originalTransform.RotateAbout(gfx::Vector3dF(1.8, 2.8, 3.8), 100); | |
| 82 layer->setTransform(originalTransform.matrix()); | |
| 83 EXPECT_EQ(WebSize(150, 50), layer->bounds()); | |
| 84 EXPECT_EQ(gfx::Size(100, 200), layer->layer()->bounds()); | |
| 85 EXPECT_POINT3F_EQ(transformPoint(originalTransform, gfx::Point3F(15, 5, 1)), transformPoint(layer->layer()->transform(), gfx::Point3F(10, 20, 1))); | |
| 86 } | |
| 87 | |
| 88 TEST(WebLayerImplFixedBoundsTest, WithAnchorPoint) | |
| 89 { | |
| 90 scoped_ptr<WebLayerImplFixedBounds> layer(new WebLayerImplFixedBounds()); | |
| 91 layer->setAnchorPoint(WebFloatPoint(0.4, 0.6)); | |
| 92 layer->setFixedBounds(gfx::Size(100, 200)); | |
| 93 layer->setBounds(WebSize(150, 250)); | |
| 94 EXPECT_EQ(WebSize(150, 250), layer->bounds()); | |
| 95 EXPECT_EQ(gfx::Size(100, 200), layer->layer()->bounds()); | |
| 96 float left = -40.f; | |
| 97 float top = -120.f; | |
| 98 EXPECT_POINT3F_EQ(gfx::Point3F(left, top, 0), transformPoint(layer->layer()- >transform(), gfx::Point3F(left, top, 0))); | |
| 99 EXPECT_POINT3F_EQ(gfx::Point3F(left + 75, top + 125, 0), transformPoint(laye r->layer()->transform(), gfx::Point3F(left + 50, top + 100, 0))); | |
| 100 } | |
| 101 | |
| 102 TEST(WebLayerImplFixedBoundsTest, WithOriginalTransformAndSublayerTransformAndAn chorPoint) | |
| 103 { | |
| 104 gfx::Transform originalTransform; | |
| 105 originalTransform.Translate3d(50, 60, 70); | |
| 106 originalTransform.Scale3d(1.5, 2.5, 3.5); | |
| 107 | |
| 108 gfx::Transform sublayerTransform; | |
| 109 sublayerTransform.Scale3d(1.1, 2.2, 3.3); | |
| 110 sublayerTransform.Translate3d(11, 22, 33); | |
| 111 sublayerTransform.RotateAbout(gfx::Vector3dF(3.3, 2.2, 1.1), 99); | |
| 112 | |
| 113 scoped_ptr<WebLayerImplFixedBounds> layer(new WebLayerImplFixedBounds()); | |
| 114 layer->setAnchorPoint(WebFloatPoint(0.3, 0.7)); | |
| 115 layer->setTransform(originalTransform.matrix()); | |
| 116 layer->setSublayerTransform(sublayerTransform.matrix()); | |
| 117 layer->setFixedBounds(gfx::Size(100, 100)); | |
| 118 layer->setBounds(gfx::Size(150, 150)); | |
| 119 float left = -30.f; | |
| 120 float top = -70.f; | |
| 121 EXPECT_EQ(WebSize(150, 150), layer->bounds()); | |
| 122 EXPECT_EQ(gfx::Size(100, 100), layer->layer()->bounds()); | |
| 123 EXPECT_POINT3F_EQ(transformPoint(originalTransform, gfx::Point3F(left + 15, top + 15, 1)), | |
| 124 transformPoint(layer->layer()->transform(), gfx::Point3F(l eft + 10, top + 10, 1))); | |
| 125 EXPECT_POINT3F_EQ(transformPoint(sublayerTransform, gfx::Point3F(left + 10, top + 10, 1)), | |
| 126 transformPoint(layer->layer()->sublayerTransform(), gfx::P oint3F(left + 15, top + 15, 1))); | |
| 127 } | |
| OLD | NEW |