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

Side by Side Diff: cc/layers/layer_utils_unittest.cc

Issue 1057283003: Remove parts of //cc we aren't using (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 8 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 unified diff | Download patch
« no previous file with comments | « cc/layers/layer_utils.cc ('k') | cc/layers/nine_patch_layer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 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/layers/layer_utils.h"
6
7 #include "cc/animation/transform_operations.h"
8 #include "cc/layers/layer_impl.h"
9 #include "cc/test/animation_test_common.h"
10 #include "cc/test/fake_impl_proxy.h"
11 #include "cc/test/fake_layer_tree_host_impl.h"
12 #include "cc/test/test_shared_bitmap_manager.h"
13 #include "cc/test/test_task_graph_runner.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15 #include "ui/gfx/geometry/box_f.h"
16 #include "ui/gfx/test/gfx_util.h"
17
18 namespace cc {
19 namespace {
20
21 float diagonal(float width, float height) {
22 return std::sqrt(width * width + height * height);
23 }
24
25 class LayerUtilsGetAnimationBoundsTest : public testing::Test {
26 public:
27 LayerUtilsGetAnimationBoundsTest()
28 : host_impl_(&proxy_, &shared_bitmap_manager_, &task_graph_runner_),
29 root_(CreateThreeNodeTree(&host_impl_)),
30 parent_(root_->children()[0]),
31 child_(parent_->children()[0]) {}
32
33 LayerImpl* root() { return root_.get(); }
34 LayerImpl* parent() { return parent_; }
35 LayerImpl* child() { return child_; }
36
37 private:
38 static scoped_ptr<LayerImpl> CreateThreeNodeTree(
39 LayerTreeHostImpl* host_impl) {
40 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl->active_tree(), 1);
41 root->AddChild(LayerImpl::Create(host_impl->active_tree(), 2));
42 root->children()[0]->AddChild(
43 LayerImpl::Create(host_impl->active_tree(), 3));
44 return root.Pass();
45 }
46
47 FakeImplProxy proxy_;
48 TestSharedBitmapManager shared_bitmap_manager_;
49 TestTaskGraphRunner task_graph_runner_;
50 FakeLayerTreeHostImpl host_impl_;
51 scoped_ptr<LayerImpl> root_;
52 LayerImpl* parent_;
53 LayerImpl* child_;
54 };
55
56 TEST_F(LayerUtilsGetAnimationBoundsTest, ScaleRoot) {
57 double duration = 1.0;
58
59 TransformOperations start;
60 start.AppendScale(1.f, 1.f, 1.f);
61 TransformOperations end;
62 end.AppendScale(2.f, 2.f, 1.f);
63 AddAnimatedTransformToLayer(root(), duration, start, end);
64
65 root()->SetPosition(gfx::PointF());
66 parent()->SetPosition(gfx::PointF());
67 parent()->SetBounds(gfx::Size(350, 200));
68
69 child()->SetDrawsContent(true);
70 child()->draw_properties().screen_space_transform_is_animating = true;
71 child()->SetPosition(gfx::PointF(150.f, 50.f));
72 child()->SetBounds(gfx::Size(100, 200));
73
74 gfx::BoxF box;
75 bool success = LayerUtils::GetAnimationBounds(*child(), &box);
76 EXPECT_TRUE(success);
77 gfx::BoxF expected(150.f, 50.f, 0.f, 350.f, 450.f, 0.f);
78 EXPECT_BOXF_EQ(expected, box);
79 }
80
81 TEST_F(LayerUtilsGetAnimationBoundsTest, TranslateParentLayer) {
82 double duration = 1.0;
83
84 TransformOperations start;
85 start.AppendTranslate(0.f, 0.f, 0.f);
86 TransformOperations end;
87 end.AppendTranslate(50.f, 50.f, 0.f);
88 AddAnimatedTransformToLayer(parent(), duration, start, end);
89
90 parent()->SetBounds(gfx::Size(350, 200));
91
92 child()->SetDrawsContent(true);
93 child()->draw_properties().screen_space_transform_is_animating = true;
94 child()->SetPosition(gfx::PointF(150.f, 50.f));
95 child()->SetBounds(gfx::Size(100, 200));
96
97 gfx::BoxF box;
98 bool success = LayerUtils::GetAnimationBounds(*child(), &box);
99 EXPECT_TRUE(success);
100 gfx::BoxF expected(150.f, 50.f, 0.f, 150.f, 250.f, 0.f);
101 EXPECT_BOXF_EQ(expected, box);
102 }
103
104 TEST_F(LayerUtilsGetAnimationBoundsTest, TranslateChildLayer) {
105 double duration = 1.0;
106
107 TransformOperations start;
108 start.AppendTranslate(0.f, 0.f, 0.f);
109 TransformOperations end;
110 end.AppendTranslate(50.f, 50.f, 0.f);
111 AddAnimatedTransformToLayer(child(), duration, start, end);
112
113 parent()->SetBounds(gfx::Size(350, 200));
114
115 child()->SetDrawsContent(true);
116 child()->draw_properties().screen_space_transform_is_animating = true;
117 child()->SetPosition(gfx::PointF(150.f, 50.f));
118 child()->SetBounds(gfx::Size(100, 200));
119
120 gfx::BoxF box;
121 bool success = LayerUtils::GetAnimationBounds(*child(), &box);
122 EXPECT_TRUE(success);
123 gfx::BoxF expected(150.f, 50.f, 0.f, 150.f, 250.f, 0.f);
124 EXPECT_BOXF_EQ(expected, box);
125 }
126
127 TEST_F(LayerUtilsGetAnimationBoundsTest, TranslateBothLayers) {
128 double duration = 1.0;
129
130 TransformOperations start;
131 start.AppendTranslate(0.f, 0.f, 0.f);
132 TransformOperations child_end;
133 child_end.AppendTranslate(50.f, 0.f, 0.f);
134 AddAnimatedTransformToLayer(parent(), duration, start, child_end);
135
136 TransformOperations grand_child_end;
137 grand_child_end.AppendTranslate(0.f, 50.f, 0.f);
138 AddAnimatedTransformToLayer(child(), duration, start, grand_child_end);
139
140 parent()->SetBounds(gfx::Size(350, 200));
141
142 child()->SetDrawsContent(true);
143 child()->draw_properties().screen_space_transform_is_animating = true;
144 child()->SetPosition(gfx::PointF(150.f, 50.f));
145 child()->SetBounds(gfx::Size(100, 200));
146
147 gfx::BoxF box;
148 bool success = LayerUtils::GetAnimationBounds(*child(), &box);
149 EXPECT_TRUE(success);
150 gfx::BoxF expected(150.f, 50.f, 0.f, 150.f, 250.f, 0.f);
151 EXPECT_BOXF_EQ(expected, box);
152 }
153
154 TEST_F(LayerUtilsGetAnimationBoundsTest, RotateXNoPerspective) {
155 double duration = 1.0;
156
157 TransformOperations start;
158 start.AppendRotate(1.f, 0.f, 0.f, 0.f);
159 TransformOperations end;
160 end.AppendRotate(1.f, 0.f, 0.f, 90.f);
161 AddAnimatedTransformToLayer(child(), duration, start, end);
162
163 parent()->SetBounds(gfx::Size(350, 200));
164
165 gfx::Size bounds(100, 100);
166 child()->SetDrawsContent(true);
167 child()->draw_properties().screen_space_transform_is_animating = true;
168 child()->SetPosition(gfx::PointF(150.f, 50.f));
169 child()->SetBounds(bounds);
170 child()->SetTransformOrigin(
171 gfx::Point3F(bounds.width() * 0.5f, bounds.height() * 0.5f, 0));
172
173 gfx::BoxF box;
174 bool success = LayerUtils::GetAnimationBounds(*child(), &box);
175 EXPECT_TRUE(success);
176 gfx::BoxF expected(150.f, 50.f, -50.f, 100.f, 100.f, 100.f);
177 EXPECT_BOXF_EQ(expected, box);
178 }
179
180 TEST_F(LayerUtilsGetAnimationBoundsTest, RotateXWithPerspective) {
181 double duration = 1.0;
182
183 TransformOperations start;
184 start.AppendRotate(1.f, 0.f, 0.f, 0.f);
185 TransformOperations end;
186 end.AppendRotate(1.f, 0.f, 0.f, 90.f);
187 AddAnimatedTransformToLayer(child(), duration, start, end);
188
189 // Make the anchor point not the default 0.5 value and line up with the
190 // child center to make the math easier.
191 parent()->SetTransformOrigin(
192 gfx::Point3F(0.375f * 400.f, 0.375f * 400.f, 0.f));
193 parent()->SetBounds(gfx::Size(400, 400));
194
195 gfx::Transform perspective;
196 perspective.ApplyPerspectiveDepth(100.f);
197 parent()->SetTransform(perspective);
198
199 gfx::Size bounds(100, 100);
200 child()->SetDrawsContent(true);
201 child()->draw_properties().screen_space_transform_is_animating = true;
202 child()->SetPosition(gfx::PointF(100.f, 100.f));
203 child()->SetBounds(bounds);
204 child()->SetTransformOrigin(
205 gfx::Point3F(bounds.width() * 0.5f, bounds.height() * 0.5f, 0));
206
207 gfx::BoxF box;
208 bool success = LayerUtils::GetAnimationBounds(*child(), &box);
209 EXPECT_TRUE(success);
210 gfx::BoxF expected(50.f, 50.f, -33.333336f, 200.f, 200.f, 133.333344f);
211 EXPECT_BOXF_EQ(expected, box);
212 }
213
214 TEST_F(LayerUtilsGetAnimationBoundsTest, RotateZ) {
215 double duration = 1.0;
216
217 TransformOperations start;
218 start.AppendRotate(0.f, 0.f, 1.f, 0.f);
219 TransformOperations end;
220 end.AppendRotate(0.f, 0.f, 1.f, 90.f);
221 AddAnimatedTransformToLayer(child(), duration, start, end);
222
223 parent()->SetBounds(gfx::Size(350, 200));
224
225 gfx::Size bounds(100, 100);
226 child()->SetDrawsContent(true);
227 child()->draw_properties().screen_space_transform_is_animating = true;
228 child()->SetPosition(gfx::PointF(150.f, 50.f));
229 child()->SetBounds(bounds);
230 child()->SetTransformOrigin(
231 gfx::Point3F(bounds.width() * 0.5f, bounds.height() * 0.5f, 0));
232
233 gfx::BoxF box;
234 bool success = LayerUtils::GetAnimationBounds(*child(), &box);
235 EXPECT_TRUE(success);
236 float diag = diagonal(bounds.width(), bounds.height());
237 gfx::BoxF expected(150.f + 0.5f * (bounds.width() - diag),
238 50.f + 0.5f * (bounds.height() - diag),
239 0.f,
240 diag,
241 diag,
242 0.f);
243 EXPECT_BOXF_EQ(expected, box);
244 }
245
246 TEST_F(LayerUtilsGetAnimationBoundsTest, MismatchedTransforms) {
247 double duration = 1.0;
248
249 TransformOperations start;
250 start.AppendTranslate(5, 6, 7);
251 TransformOperations end;
252 end.AppendRotate(0.f, 0.f, 1.f, 90.f);
253 AddAnimatedTransformToLayer(child(), duration, start, end);
254
255 parent()->SetBounds(gfx::Size(350, 200));
256
257 gfx::Size bounds(100, 100);
258 child()->SetDrawsContent(true);
259 child()->draw_properties().screen_space_transform_is_animating = true;
260 child()->SetPosition(gfx::PointF(150.f, 50.f));
261 child()->SetBounds(bounds);
262
263 gfx::BoxF box;
264 bool success = LayerUtils::GetAnimationBounds(*child(), &box);
265 EXPECT_FALSE(success);
266 }
267
268 } // namespace
269 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/layer_utils.cc ('k') | cc/layers/nine_patch_layer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698