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 |