OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/layers/layer_utils.h" | 5 #include "cc/layers/layer_utils.h" |
6 | 6 |
7 #include "cc/animation/animation_host.h" | 7 #include "cc/animation/animation_host.h" |
8 #include "cc/animation/animation_id_provider.h" | 8 #include "cc/animation/animation_id_provider.h" |
9 #include "cc/animation/transform_operations.h" | 9 #include "cc/animation/transform_operations.h" |
10 #include "cc/layers/layer_impl.h" | 10 #include "cc/layers/layer_impl.h" |
11 #include "cc/test/animation_test_common.h" | 11 #include "cc/test/animation_test_common.h" |
12 #include "cc/test/fake_impl_task_runner_provider.h" | 12 #include "cc/test/fake_impl_task_runner_provider.h" |
13 #include "cc/test/fake_layer_tree_host_impl.h" | 13 #include "cc/test/fake_layer_tree_host_impl.h" |
14 #include "cc/test/test_shared_bitmap_manager.h" | 14 #include "cc/test/test_shared_bitmap_manager.h" |
15 #include "cc/test/test_task_graph_runner.h" | 15 #include "cc/test/test_task_graph_runner.h" |
| 16 #include "cc/trees/layer_tree_host_common.h" |
16 #include "cc/trees/layer_tree_impl.h" | 17 #include "cc/trees/layer_tree_impl.h" |
17 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
18 #include "ui/gfx/geometry/box_f.h" | 19 #include "ui/gfx/geometry/box_f.h" |
19 #include "ui/gfx/test/gfx_util.h" | 20 #include "ui/gfx/test/gfx_util.h" |
20 | 21 |
21 namespace cc { | 22 namespace cc { |
22 namespace { | 23 namespace { |
23 | 24 |
24 float diagonal(float width, float height) { | 25 float diagonal(float width, float height) { |
25 return std::sqrt(width * width + height * height); | 26 return std::sqrt(width * width + height * height); |
26 } | 27 } |
27 | 28 |
28 class LayerUtilsGetAnimationBoundsTest : public testing::Test { | 29 class LayerUtilsGetAnimationBoundsTest : public testing::Test { |
29 public: | 30 public: |
30 LayerUtilsGetAnimationBoundsTest() | 31 LayerUtilsGetAnimationBoundsTest() |
31 : host_impl_(&task_runner_provider_, | 32 : host_impl_(&task_runner_provider_, |
32 &shared_bitmap_manager_, | 33 &shared_bitmap_manager_, |
33 &task_graph_runner_), | 34 &task_graph_runner_), |
34 root_(CreateTwoForkTree(&host_impl_)), | 35 root_(CreateTwoForkTree(&host_impl_)), |
35 parent1_(root_->test_properties()->children[0]), | 36 parent1_(root_->test_properties()->children[0]), |
36 parent2_(root_->test_properties()->children[1]), | 37 parent2_(root_->test_properties()->children[1]), |
37 child1_(parent1_->test_properties()->children[0]), | 38 child1_(parent1_->test_properties()->children[0]), |
38 child2_(parent2_->test_properties()->children[0]), | 39 child2_(parent2_->test_properties()->children[0]), |
39 grand_child_(child2_->test_properties()->children[0]), | 40 grand_child_(child2_->test_properties()->children[0]), |
40 great_grand_child_(grand_child_->test_properties()->children[0]) { | 41 great_grand_child_(grand_child_->test_properties()->children[0]) { |
41 timeline_ = | 42 timeline_ = |
42 AnimationTimeline::Create(AnimationIdProvider::NextTimelineId()); | 43 AnimationTimeline::Create(AnimationIdProvider::NextTimelineId()); |
43 host_impl_.animation_host()->AddAnimationTimeline(timeline_); | 44 host_impl_.animation_host()->AddAnimationTimeline(timeline_); |
| 45 host_impl_.active_tree()->SetElementIdsForTesting(); |
44 } | 46 } |
45 | 47 |
46 LayerImpl* root() { return root_; } | 48 LayerImpl* root() { return root_; } |
47 LayerImpl* parent1() { return parent1_; } | 49 LayerImpl* parent1() { return parent1_; } |
48 LayerImpl* child1() { return child1_; } | 50 LayerImpl* child1() { return child1_; } |
49 LayerImpl* parent2() { return parent2_; } | 51 LayerImpl* parent2() { return parent2_; } |
50 LayerImpl* child2() { return child2_; } | 52 LayerImpl* child2() { return child2_; } |
51 LayerImpl* grand_child() { return grand_child_; } | 53 LayerImpl* grand_child() { return grand_child_; } |
52 LayerImpl* great_grand_child() { return great_grand_child_; } | 54 LayerImpl* great_grand_child() { return great_grand_child_; } |
53 | 55 |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 scoped_refptr<AnimationTimeline> timeline_; | 101 scoped_refptr<AnimationTimeline> timeline_; |
100 }; | 102 }; |
101 | 103 |
102 TEST_F(LayerUtilsGetAnimationBoundsTest, ScaleRoot) { | 104 TEST_F(LayerUtilsGetAnimationBoundsTest, ScaleRoot) { |
103 double duration = 1.0; | 105 double duration = 1.0; |
104 | 106 |
105 TransformOperations start; | 107 TransformOperations start; |
106 start.AppendScale(1.f, 1.f, 1.f); | 108 start.AppendScale(1.f, 1.f, 1.f); |
107 TransformOperations end; | 109 TransformOperations end; |
108 end.AppendScale(2.f, 2.f, 1.f); | 110 end.AppendScale(2.f, 2.f, 1.f); |
109 AddAnimatedTransformToLayerWithPlayer(root()->id(), timeline(), duration, | 111 AddAnimatedTransformToElementWithPlayer(root()->element_id(), timeline(), |
110 start, end); | 112 duration, start, end); |
111 | 113 |
112 root()->SetPosition(gfx::PointF()); | 114 root()->SetPosition(gfx::PointF()); |
113 parent1()->SetPosition(gfx::PointF()); | 115 parent1()->SetPosition(gfx::PointF()); |
114 parent1()->SetBounds(gfx::Size(350, 200)); | 116 parent1()->SetBounds(gfx::Size(350, 200)); |
115 | 117 |
116 child1()->SetDrawsContent(true); | 118 child1()->SetDrawsContent(true); |
117 child1()->SetPosition(gfx::PointF(150.f, 50.f)); | 119 child1()->SetPosition(gfx::PointF(150.f, 50.f)); |
118 child1()->SetBounds(gfx::Size(100, 200)); | 120 child1()->SetBounds(gfx::Size(100, 200)); |
119 | 121 |
120 host_impl().active_tree()->BuildLayerListAndPropertyTreesForTesting(); | 122 host_impl().active_tree()->BuildLayerListAndPropertyTreesForTesting(); |
121 | 123 |
122 gfx::BoxF box; | 124 gfx::BoxF box; |
123 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); | 125 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); |
124 EXPECT_TRUE(success); | 126 EXPECT_TRUE(success); |
125 gfx::BoxF expected(150.f, 50.f, 0.f, 350.f, 450.f, 0.f); | 127 gfx::BoxF expected(150.f, 50.f, 0.f, 350.f, 450.f, 0.f); |
126 EXPECT_BOXF_EQ(expected, box); | 128 EXPECT_BOXF_EQ(expected, box); |
127 } | 129 } |
128 | 130 |
129 TEST_F(LayerUtilsGetAnimationBoundsTest, TranslateParentLayer) { | 131 TEST_F(LayerUtilsGetAnimationBoundsTest, TranslateParentLayer) { |
130 double duration = 1.0; | 132 double duration = 1.0; |
131 | 133 |
132 TransformOperations start; | 134 TransformOperations start; |
133 start.AppendTranslate(0.f, 0.f, 0.f); | 135 start.AppendTranslate(0.f, 0.f, 0.f); |
134 TransformOperations end; | 136 TransformOperations end; |
135 end.AppendTranslate(50.f, 50.f, 0.f); | 137 end.AppendTranslate(50.f, 50.f, 0.f); |
136 AddAnimatedTransformToLayerWithPlayer(parent1()->id(), timeline(), duration, | 138 AddAnimatedTransformToElementWithPlayer(parent1()->element_id(), timeline(), |
137 start, end); | 139 duration, start, end); |
138 | 140 |
139 parent1()->SetBounds(gfx::Size(350, 200)); | 141 parent1()->SetBounds(gfx::Size(350, 200)); |
140 | 142 |
141 child1()->SetDrawsContent(true); | 143 child1()->SetDrawsContent(true); |
142 child1()->SetPosition(gfx::PointF(150.f, 50.f)); | 144 child1()->SetPosition(gfx::PointF(150.f, 50.f)); |
143 child1()->SetBounds(gfx::Size(100, 200)); | 145 child1()->SetBounds(gfx::Size(100, 200)); |
144 | 146 |
145 host_impl().active_tree()->BuildLayerListAndPropertyTreesForTesting(); | 147 host_impl().active_tree()->BuildLayerListAndPropertyTreesForTesting(); |
146 | 148 |
147 gfx::BoxF box; | 149 gfx::BoxF box; |
148 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); | 150 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); |
149 EXPECT_TRUE(success); | 151 EXPECT_TRUE(success); |
150 gfx::BoxF expected(150.f, 50.f, 0.f, 150.f, 250.f, 0.f); | 152 gfx::BoxF expected(150.f, 50.f, 0.f, 150.f, 250.f, 0.f); |
151 EXPECT_BOXF_EQ(expected, box); | 153 EXPECT_BOXF_EQ(expected, box); |
152 } | 154 } |
153 | 155 |
154 TEST_F(LayerUtilsGetAnimationBoundsTest, TranslateChildLayer) { | 156 TEST_F(LayerUtilsGetAnimationBoundsTest, TranslateChildLayer) { |
155 double duration = 1.0; | 157 double duration = 1.0; |
156 | 158 |
157 TransformOperations start; | 159 TransformOperations start; |
158 start.AppendTranslate(0.f, 0.f, 0.f); | 160 start.AppendTranslate(0.f, 0.f, 0.f); |
159 TransformOperations end; | 161 TransformOperations end; |
160 end.AppendTranslate(50.f, 50.f, 0.f); | 162 end.AppendTranslate(50.f, 50.f, 0.f); |
161 AddAnimatedTransformToLayerWithPlayer(child1()->id(), timeline(), duration, | 163 AddAnimatedTransformToElementWithPlayer(child1()->element_id(), timeline(), |
162 start, end); | 164 duration, start, end); |
163 parent1()->SetBounds(gfx::Size(350, 200)); | 165 parent1()->SetBounds(gfx::Size(350, 200)); |
164 | 166 |
165 child1()->SetDrawsContent(true); | 167 child1()->SetDrawsContent(true); |
166 child1()->SetPosition(gfx::PointF(150.f, 50.f)); | 168 child1()->SetPosition(gfx::PointF(150.f, 50.f)); |
167 child1()->SetBounds(gfx::Size(100, 200)); | 169 child1()->SetBounds(gfx::Size(100, 200)); |
168 | 170 |
169 host_impl().active_tree()->BuildLayerListAndPropertyTreesForTesting(); | 171 host_impl().active_tree()->BuildLayerListAndPropertyTreesForTesting(); |
170 | 172 |
171 gfx::BoxF box; | 173 gfx::BoxF box; |
172 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); | 174 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); |
173 EXPECT_TRUE(success); | 175 EXPECT_TRUE(success); |
174 gfx::BoxF expected(150.f, 50.f, 0.f, 150.f, 250.f, 0.f); | 176 gfx::BoxF expected(150.f, 50.f, 0.f, 150.f, 250.f, 0.f); |
175 EXPECT_BOXF_EQ(expected, box); | 177 EXPECT_BOXF_EQ(expected, box); |
176 } | 178 } |
177 | 179 |
178 TEST_F(LayerUtilsGetAnimationBoundsTest, TranslateBothLayers) { | 180 TEST_F(LayerUtilsGetAnimationBoundsTest, TranslateBothLayers) { |
179 double duration = 1.0; | 181 double duration = 1.0; |
180 | 182 |
181 TransformOperations start; | 183 TransformOperations start; |
182 start.AppendTranslate(0.f, 0.f, 0.f); | 184 start.AppendTranslate(0.f, 0.f, 0.f); |
183 TransformOperations child_end; | 185 TransformOperations child_end; |
184 child_end.AppendTranslate(50.f, 0.f, 0.f); | 186 child_end.AppendTranslate(50.f, 0.f, 0.f); |
185 AddAnimatedTransformToLayerWithPlayer(parent1()->id(), timeline(), duration, | 187 AddAnimatedTransformToElementWithPlayer(parent1()->element_id(), timeline(), |
186 start, child_end); | 188 duration, start, child_end); |
187 | 189 |
188 TransformOperations grand_child_end; | 190 TransformOperations grand_child_end; |
189 grand_child_end.AppendTranslate(0.f, 50.f, 0.f); | 191 grand_child_end.AppendTranslate(0.f, 50.f, 0.f); |
190 AddAnimatedTransformToLayerWithPlayer(child1()->id(), timeline(), duration, | 192 AddAnimatedTransformToElementWithPlayer(child1()->element_id(), timeline(), |
191 start, grand_child_end); | 193 duration, start, grand_child_end); |
192 | 194 |
193 parent1()->SetBounds(gfx::Size(350, 200)); | 195 parent1()->SetBounds(gfx::Size(350, 200)); |
194 | 196 |
195 child1()->SetDrawsContent(true); | 197 child1()->SetDrawsContent(true); |
196 child1()->SetPosition(gfx::PointF(150.f, 50.f)); | 198 child1()->SetPosition(gfx::PointF(150.f, 50.f)); |
197 child1()->SetBounds(gfx::Size(100, 200)); | 199 child1()->SetBounds(gfx::Size(100, 200)); |
198 | 200 |
199 host_impl().active_tree()->BuildLayerListAndPropertyTreesForTesting(); | 201 host_impl().active_tree()->BuildLayerListAndPropertyTreesForTesting(); |
200 | 202 |
201 gfx::BoxF box; | 203 gfx::BoxF box; |
202 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); | 204 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); |
203 EXPECT_TRUE(success); | 205 EXPECT_TRUE(success); |
204 gfx::BoxF expected(150.f, 50.f, 0.f, 150.f, 250.f, 0.f); | 206 gfx::BoxF expected(150.f, 50.f, 0.f, 150.f, 250.f, 0.f); |
205 EXPECT_BOXF_EQ(expected, box); | 207 EXPECT_BOXF_EQ(expected, box); |
206 } | 208 } |
207 | 209 |
208 TEST_F(LayerUtilsGetAnimationBoundsTest, RotateXNoPerspective) { | 210 TEST_F(LayerUtilsGetAnimationBoundsTest, RotateXNoPerspective) { |
209 double duration = 1.0; | 211 double duration = 1.0; |
210 | 212 |
211 TransformOperations start; | 213 TransformOperations start; |
212 start.AppendRotate(1.f, 0.f, 0.f, 0.f); | 214 start.AppendRotate(1.f, 0.f, 0.f, 0.f); |
213 TransformOperations end; | 215 TransformOperations end; |
214 end.AppendRotate(1.f, 0.f, 0.f, 90.f); | 216 end.AppendRotate(1.f, 0.f, 0.f, 90.f); |
215 | 217 |
216 AddAnimatedTransformToLayerWithPlayer(child1()->id(), timeline(), duration, | 218 AddAnimatedTransformToElementWithPlayer(child1()->element_id(), timeline(), |
217 start, end); | 219 duration, start, end); |
218 | 220 |
219 parent1()->SetBounds(gfx::Size(350, 200)); | 221 parent1()->SetBounds(gfx::Size(350, 200)); |
220 | 222 |
221 gfx::Size bounds(100, 100); | 223 gfx::Size bounds(100, 100); |
222 child1()->SetDrawsContent(true); | 224 child1()->SetDrawsContent(true); |
223 child1()->SetPosition(gfx::PointF(150.f, 50.f)); | 225 child1()->SetPosition(gfx::PointF(150.f, 50.f)); |
224 child1()->SetBounds(bounds); | 226 child1()->SetBounds(bounds); |
225 child1()->test_properties()->transform_origin = | 227 child1()->test_properties()->transform_origin = |
226 gfx::Point3F(bounds.width() * 0.5f, bounds.height() * 0.5f, 0); | 228 gfx::Point3F(bounds.width() * 0.5f, bounds.height() * 0.5f, 0); |
227 | 229 |
228 host_impl().active_tree()->BuildLayerListAndPropertyTreesForTesting(); | 230 host_impl().active_tree()->BuildLayerListAndPropertyTreesForTesting(); |
229 | 231 |
230 gfx::BoxF box; | 232 gfx::BoxF box; |
231 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); | 233 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); |
232 EXPECT_TRUE(success); | 234 EXPECT_TRUE(success); |
233 gfx::BoxF expected(150.f, 50.f, -50.f, 100.f, 100.f, 100.f); | 235 gfx::BoxF expected(150.f, 50.f, -50.f, 100.f, 100.f, 100.f); |
234 EXPECT_BOXF_EQ(expected, box); | 236 EXPECT_BOXF_EQ(expected, box); |
235 } | 237 } |
236 | 238 |
237 TEST_F(LayerUtilsGetAnimationBoundsTest, RotateXWithPerspective) { | 239 TEST_F(LayerUtilsGetAnimationBoundsTest, RotateXWithPerspective) { |
238 double duration = 1.0; | 240 double duration = 1.0; |
239 | 241 |
240 TransformOperations start; | 242 TransformOperations start; |
241 start.AppendRotate(1.f, 0.f, 0.f, 0.f); | 243 start.AppendRotate(1.f, 0.f, 0.f, 0.f); |
242 TransformOperations end; | 244 TransformOperations end; |
243 end.AppendRotate(1.f, 0.f, 0.f, 90.f); | 245 end.AppendRotate(1.f, 0.f, 0.f, 90.f); |
244 | 246 |
245 AddAnimatedTransformToLayerWithPlayer(child1()->id(), timeline(), duration, | 247 AddAnimatedTransformToElementWithPlayer(child1()->element_id(), timeline(), |
246 start, end); | 248 duration, start, end); |
247 | 249 |
248 // Make the anchor point not the default 0.5 value and line up with the | 250 // Make the anchor point not the default 0.5 value and line up with the |
249 // child center to make the math easier. | 251 // child center to make the math easier. |
250 parent1()->test_properties()->transform_origin = | 252 parent1()->test_properties()->transform_origin = |
251 gfx::Point3F(0.375f * 400.f, 0.375f * 400.f, 0.f); | 253 gfx::Point3F(0.375f * 400.f, 0.375f * 400.f, 0.f); |
252 parent1()->SetBounds(gfx::Size(400, 400)); | 254 parent1()->SetBounds(gfx::Size(400, 400)); |
253 | 255 |
254 gfx::Transform perspective; | 256 gfx::Transform perspective; |
255 perspective.ApplyPerspectiveDepth(100.f); | 257 perspective.ApplyPerspectiveDepth(100.f); |
256 parent1()->SetTransform(perspective); | 258 parent1()->SetTransform(perspective); |
(...skipping 19 matching lines...) Expand all Loading... |
276 // local transform when there is an animation applied to the layer / node. | 278 // local transform when there is an animation applied to the layer / node. |
277 // The intended behavior is that the animation should overwrite the transform. | 279 // The intended behavior is that the animation should overwrite the transform. |
278 | 280 |
279 double duration = 1.0; | 281 double duration = 1.0; |
280 | 282 |
281 TransformOperations start; | 283 TransformOperations start; |
282 start.AppendRotate(1.f, 0.f, 0.f, 0.f); | 284 start.AppendRotate(1.f, 0.f, 0.f, 0.f); |
283 TransformOperations end; | 285 TransformOperations end; |
284 end.AppendRotate(1.f, 0.f, 0.f, 90.f); | 286 end.AppendRotate(1.f, 0.f, 0.f, 90.f); |
285 | 287 |
286 AddAnimatedTransformToLayerWithPlayer(parent1()->id(), timeline(), duration, | 288 AddAnimatedTransformToElementWithPlayer(parent1()->element_id(), timeline(), |
287 start, end); | 289 duration, start, end); |
288 | 290 |
289 // Make the anchor point not the default 0.5 value and line up | 291 // Make the anchor point not the default 0.5 value and line up |
290 // with the child center to make the math easier. | 292 // with the child center to make the math easier. |
291 parent1()->test_properties()->transform_origin = | 293 parent1()->test_properties()->transform_origin = |
292 gfx::Point3F(0.375f * 400.f, 0.375f * 400.f, 0.f); | 294 gfx::Point3F(0.375f * 400.f, 0.375f * 400.f, 0.f); |
293 parent1()->SetBounds(gfx::Size(400, 400)); | 295 parent1()->SetBounds(gfx::Size(400, 400)); |
294 | 296 |
295 gfx::Transform perspective; | 297 gfx::Transform perspective; |
296 perspective.ApplyPerspectiveDepth(100.f); | 298 perspective.ApplyPerspectiveDepth(100.f); |
297 parent1()->SetTransform(perspective); | 299 parent1()->SetTransform(perspective); |
(...skipping 14 matching lines...) Expand all Loading... |
312 EXPECT_BOXF_EQ(expected, box); | 314 EXPECT_BOXF_EQ(expected, box); |
313 } | 315 } |
314 | 316 |
315 TEST_F(LayerUtilsGetAnimationBoundsTest, RotateZ) { | 317 TEST_F(LayerUtilsGetAnimationBoundsTest, RotateZ) { |
316 double duration = 1.0; | 318 double duration = 1.0; |
317 | 319 |
318 TransformOperations start; | 320 TransformOperations start; |
319 start.AppendRotate(0.f, 0.f, 1.f, 0.f); | 321 start.AppendRotate(0.f, 0.f, 1.f, 0.f); |
320 TransformOperations end; | 322 TransformOperations end; |
321 end.AppendRotate(0.f, 0.f, 1.f, 90.f); | 323 end.AppendRotate(0.f, 0.f, 1.f, 90.f); |
322 AddAnimatedTransformToLayerWithPlayer(child1()->id(), timeline(), duration, | 324 AddAnimatedTransformToElementWithPlayer(child1()->element_id(), timeline(), |
323 start, end); | 325 duration, start, end); |
324 | 326 |
325 parent1()->SetBounds(gfx::Size(350, 200)); | 327 parent1()->SetBounds(gfx::Size(350, 200)); |
326 | 328 |
327 gfx::Size bounds(100, 100); | 329 gfx::Size bounds(100, 100); |
328 child1()->SetDrawsContent(true); | 330 child1()->SetDrawsContent(true); |
329 child1()->SetPosition(gfx::PointF(150.f, 50.f)); | 331 child1()->SetPosition(gfx::PointF(150.f, 50.f)); |
330 child1()->SetBounds(bounds); | 332 child1()->SetBounds(bounds); |
331 child1()->test_properties()->transform_origin = | 333 child1()->test_properties()->transform_origin = |
332 gfx::Point3F(bounds.width() * 0.5f, bounds.height() * 0.5f, 0); | 334 gfx::Point3F(bounds.width() * 0.5f, bounds.height() * 0.5f, 0); |
333 | 335 |
(...skipping 12 matching lines...) Expand all Loading... |
346 EXPECT_BOXF_EQ(expected, box); | 348 EXPECT_BOXF_EQ(expected, box); |
347 } | 349 } |
348 | 350 |
349 TEST_F(LayerUtilsGetAnimationBoundsTest, MismatchedTransforms) { | 351 TEST_F(LayerUtilsGetAnimationBoundsTest, MismatchedTransforms) { |
350 double duration = 1.0; | 352 double duration = 1.0; |
351 | 353 |
352 TransformOperations start; | 354 TransformOperations start; |
353 start.AppendTranslate(5, 6, 7); | 355 start.AppendTranslate(5, 6, 7); |
354 TransformOperations end; | 356 TransformOperations end; |
355 end.AppendRotate(0.f, 0.f, 1.f, 90.f); | 357 end.AppendRotate(0.f, 0.f, 1.f, 90.f); |
356 AddAnimatedTransformToLayerWithPlayer(child1()->id(), timeline(), duration, | 358 AddAnimatedTransformToElementWithPlayer(child1()->element_id(), timeline(), |
357 start, end); | 359 duration, start, end); |
358 | 360 |
359 parent1()->SetBounds(gfx::Size(350, 200)); | 361 parent1()->SetBounds(gfx::Size(350, 200)); |
360 | 362 |
361 gfx::Size bounds(100, 100); | 363 gfx::Size bounds(100, 100); |
362 child1()->SetDrawsContent(true); | 364 child1()->SetDrawsContent(true); |
363 child1()->SetPosition(gfx::PointF(150.f, 50.f)); | 365 child1()->SetPosition(gfx::PointF(150.f, 50.f)); |
364 child1()->SetBounds(bounds); | 366 child1()->SetBounds(bounds); |
365 | 367 |
366 host_impl().active_tree()->BuildLayerListAndPropertyTreesForTesting(); | 368 host_impl().active_tree()->BuildLayerListAndPropertyTreesForTesting(); |
367 | 369 |
(...skipping 13 matching lines...) Expand all Loading... |
381 // This test is used to check if GetAnimationBounds correctly skips layers and | 383 // This test is used to check if GetAnimationBounds correctly skips layers and |
382 // take layers which do not own a transform_node into consideration. | 384 // take layers which do not own a transform_node into consideration. |
383 // Under this topology, only root and grand_child own transform_nodes. | 385 // Under this topology, only root and grand_child own transform_nodes. |
384 | 386 |
385 double duration = 1.0; | 387 double duration = 1.0; |
386 | 388 |
387 TransformOperations start; | 389 TransformOperations start; |
388 start.AppendTranslate(0.f, 0.f, 0.f); | 390 start.AppendTranslate(0.f, 0.f, 0.f); |
389 TransformOperations great_grand_child_end; | 391 TransformOperations great_grand_child_end; |
390 great_grand_child_end.AppendTranslate(50.f, 0.f, 0.f); | 392 great_grand_child_end.AppendTranslate(50.f, 0.f, 0.f); |
391 AddAnimatedTransformToLayerWithPlayer(grand_child()->id(), timeline(), | 393 AddAnimatedTransformToElementWithPlayer(grand_child()->element_id(), |
392 duration, start, great_grand_child_end); | 394 timeline(), duration, start, |
| 395 great_grand_child_end); |
393 | 396 |
394 gfx::Transform translate_2d_transform; | 397 gfx::Transform translate_2d_transform; |
395 translate_2d_transform.Translate(80.f, 60.f); | 398 translate_2d_transform.Translate(80.f, 60.f); |
396 root()->SetBounds(gfx::Size(350, 200)); | 399 root()->SetBounds(gfx::Size(350, 200)); |
397 parent2()->SetPosition(gfx::PointF(40.f, 45.f)); | 400 parent2()->SetPosition(gfx::PointF(40.f, 45.f)); |
398 child2()->SetTransform(translate_2d_transform); | 401 child2()->SetTransform(translate_2d_transform); |
399 great_grand_child()->SetDrawsContent(true); | 402 great_grand_child()->SetDrawsContent(true); |
400 great_grand_child()->SetPosition(gfx::PointF(150.f, 50.f)); | 403 great_grand_child()->SetPosition(gfx::PointF(150.f, 50.f)); |
401 great_grand_child()->SetBounds(gfx::Size(100, 200)); | 404 great_grand_child()->SetBounds(gfx::Size(100, 200)); |
402 host_impl().active_tree()->BuildLayerListAndPropertyTreesForTesting(); | 405 host_impl().active_tree()->BuildLayerListAndPropertyTreesForTesting(); |
403 | 406 |
404 gfx::BoxF box; | 407 gfx::BoxF box; |
405 bool success = LayerUtils::GetAnimationBounds(*great_grand_child(), &box); | 408 bool success = LayerUtils::GetAnimationBounds(*great_grand_child(), &box); |
406 EXPECT_TRUE(success); | 409 EXPECT_TRUE(success); |
407 gfx::BoxF expected(270.f, 155.f, 0.f, 150.f, 200.f, 0.f); | 410 gfx::BoxF expected(270.f, 155.f, 0.f, 150.f, 200.f, 0.f); |
408 EXPECT_BOXF_EQ(expected, box); | 411 EXPECT_BOXF_EQ(expected, box); |
409 } | 412 } |
410 | 413 |
411 TEST_F(LayerUtilsGetAnimationBoundsTest, | 414 TEST_F(LayerUtilsGetAnimationBoundsTest, |
412 RotateZUnderAncestorsWithPositionOr2DTransform) { | 415 RotateZUnderAncestorsWithPositionOr2DTransform) { |
413 double duration = 1.0; | 416 double duration = 1.0; |
414 | 417 |
415 TransformOperations start; | 418 TransformOperations start; |
416 start.AppendRotate(0.f, 0.f, 1.f, 0.f); | 419 start.AppendRotate(0.f, 0.f, 1.f, 0.f); |
417 TransformOperations great_grand_child_end; | 420 TransformOperations great_grand_child_end; |
418 great_grand_child_end.AppendRotate(0.f, 0.f, 1.f, 90.f); | 421 great_grand_child_end.AppendRotate(0.f, 0.f, 1.f, 90.f); |
419 AddAnimatedTransformToLayerWithPlayer(grand_child()->id(), timeline(), | 422 AddAnimatedTransformToElementWithPlayer(grand_child()->element_id(), |
420 duration, start, great_grand_child_end); | 423 timeline(), duration, start, |
| 424 great_grand_child_end); |
421 | 425 |
422 gfx::Transform translate_2d_transform; | 426 gfx::Transform translate_2d_transform; |
423 translate_2d_transform.Translate(80.f, 60.f); | 427 translate_2d_transform.Translate(80.f, 60.f); |
424 root()->SetBounds(gfx::Size(350, 200)); | 428 root()->SetBounds(gfx::Size(350, 200)); |
425 parent2()->SetPosition(gfx::PointF(40.f, 45.f)); | 429 parent2()->SetPosition(gfx::PointF(40.f, 45.f)); |
426 child2()->SetTransform(translate_2d_transform); | 430 child2()->SetTransform(translate_2d_transform); |
427 | 431 |
428 gfx::Size bounds(100, 100); | 432 gfx::Size bounds(100, 100); |
429 grand_child()->SetPosition(gfx::PointF(150.f, 50.f)); | 433 grand_child()->SetPosition(gfx::PointF(150.f, 50.f)); |
430 grand_child()->SetBounds(bounds); | 434 grand_child()->SetBounds(bounds); |
(...skipping 25 matching lines...) Expand all Loading... |
456 // +------grand_child (Perspective) | 460 // +------grand_child (Perspective) |
457 // +--------great_grand_child (RotateX, DrawsContent) | 461 // +--------great_grand_child (RotateX, DrawsContent) |
458 // Due to the RotateX animation, great_grand_child also owns a transform_node | 462 // Due to the RotateX animation, great_grand_child also owns a transform_node |
459 | 463 |
460 double duration = 1.0; | 464 double duration = 1.0; |
461 | 465 |
462 TransformOperations start; | 466 TransformOperations start; |
463 start.AppendRotate(1.f, 0.f, 0.f, 0.f); | 467 start.AppendRotate(1.f, 0.f, 0.f, 0.f); |
464 TransformOperations great_grand_child_end; | 468 TransformOperations great_grand_child_end; |
465 great_grand_child_end.AppendRotate(1.f, 0.f, 0.f, 90.f); | 469 great_grand_child_end.AppendRotate(1.f, 0.f, 0.f, 90.f); |
466 AddAnimatedTransformToLayerWithPlayer(great_grand_child()->id(), timeline(), | 470 AddAnimatedTransformToElementWithPlayer(great_grand_child()->element_id(), |
467 duration, start, great_grand_child_end); | 471 timeline(), duration, start, |
| 472 great_grand_child_end); |
468 | 473 |
469 gfx::Transform translate_2d_transform; | 474 gfx::Transform translate_2d_transform; |
470 translate_2d_transform.Translate(80.f, 60.f); | 475 translate_2d_transform.Translate(80.f, 60.f); |
471 | 476 |
472 root()->SetBounds(gfx::Size(350, 200)); | 477 root()->SetBounds(gfx::Size(350, 200)); |
473 parent2()->SetPosition(gfx::PointF(40.f, 45.f)); | 478 parent2()->SetPosition(gfx::PointF(40.f, 45.f)); |
474 child2()->SetTransform(translate_2d_transform); | 479 child2()->SetTransform(translate_2d_transform); |
475 | 480 |
476 gfx::Transform perspective; | 481 gfx::Transform perspective; |
477 perspective.ApplyPerspectiveDepth(100.f); | 482 perspective.ApplyPerspectiveDepth(100.f); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 } | 542 } |
538 | 543 |
539 TEST_F(LayerUtilsGetAnimationBoundsTest, | 544 TEST_F(LayerUtilsGetAnimationBoundsTest, |
540 RotateXNoPerspectiveUnderAncestorsWithPositionOr2DTransform) { | 545 RotateXNoPerspectiveUnderAncestorsWithPositionOr2DTransform) { |
541 double duration = 1.0; | 546 double duration = 1.0; |
542 | 547 |
543 TransformOperations start; | 548 TransformOperations start; |
544 start.AppendRotate(1.f, 0.f, 0.f, 0.f); | 549 start.AppendRotate(1.f, 0.f, 0.f, 0.f); |
545 TransformOperations rotate_x_end; | 550 TransformOperations rotate_x_end; |
546 rotate_x_end.AppendRotate(1.f, 0.f, 0.f, 90.f); | 551 rotate_x_end.AppendRotate(1.f, 0.f, 0.f, 90.f); |
547 AddAnimatedTransformToLayerWithPlayer(great_grand_child()->id(), timeline(), | 552 AddAnimatedTransformToElementWithPlayer(great_grand_child()->element_id(), |
548 duration, start, rotate_x_end); | 553 timeline(), duration, start, |
| 554 rotate_x_end); |
549 | 555 |
550 gfx::Transform translate_2d_transform; | 556 gfx::Transform translate_2d_transform; |
551 translate_2d_transform.Translate(80.f, 60.f); | 557 translate_2d_transform.Translate(80.f, 60.f); |
552 | 558 |
553 root()->SetBounds(gfx::Size(350, 200)); | 559 root()->SetBounds(gfx::Size(350, 200)); |
554 parent2()->SetPosition(gfx::PointF(40.f, 45.f)); | 560 parent2()->SetPosition(gfx::PointF(40.f, 45.f)); |
555 child2()->SetTransform(translate_2d_transform); | 561 child2()->SetTransform(translate_2d_transform); |
556 | 562 |
557 gfx::Size bounds(100.f, 100.f); | 563 gfx::Size bounds(100.f, 100.f); |
558 grand_child()->SetPosition(gfx::PointF(150.f, 50.f)); | 564 grand_child()->SetPosition(gfx::PointF(150.f, 50.f)); |
(...skipping 15 matching lines...) Expand all Loading... |
574 // Same as RotateXWithPerspectiveUnderAncestorsWithPositionOr2DTransform test, | 580 // Same as RotateXWithPerspectiveUnderAncestorsWithPositionOr2DTransform test, |
575 // except for the perspective calculations. | 581 // except for the perspective calculations. |
576 | 582 |
577 gfx::BoxF expected(295.f, 180.f, -25.f, 50.f, 50.f, 50.f); | 583 gfx::BoxF expected(295.f, 180.f, -25.f, 50.f, 50.f, 50.f); |
578 EXPECT_BOXF_EQ(expected, box); | 584 EXPECT_BOXF_EQ(expected, box); |
579 } | 585 } |
580 | 586 |
581 } // namespace | 587 } // namespace |
582 | 588 |
583 } // namespace cc | 589 } // namespace cc |
OLD | NEW |