| 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_->children()[0]), | 36 parent1_(root_->children()[0]), |
| 36 parent2_(root_->children()[1]), | 37 parent2_(root_->children()[1]), |
| 37 child1_(parent1_->children()[0]), | 38 child1_(parent1_->children()[0]), |
| 38 child2_(parent2_->children()[0]), | 39 child2_(parent2_->children()[0]), |
| 39 grand_child_(child2_->children()[0]), | 40 grand_child_(child2_->children()[0]), |
| 40 great_grand_child_(grand_child_->children()[0]) { | 41 great_grand_child_(grand_child_->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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 scoped_refptr<AnimationTimeline> timeline_; | 89 scoped_refptr<AnimationTimeline> timeline_; |
| 88 }; | 90 }; |
| 89 | 91 |
| 90 TEST_F(LayerUtilsGetAnimationBoundsTest, ScaleRoot) { | 92 TEST_F(LayerUtilsGetAnimationBoundsTest, ScaleRoot) { |
| 91 double duration = 1.0; | 93 double duration = 1.0; |
| 92 | 94 |
| 93 TransformOperations start; | 95 TransformOperations start; |
| 94 start.AppendScale(1.f, 1.f, 1.f); | 96 start.AppendScale(1.f, 1.f, 1.f); |
| 95 TransformOperations end; | 97 TransformOperations end; |
| 96 end.AppendScale(2.f, 2.f, 1.f); | 98 end.AppendScale(2.f, 2.f, 1.f); |
| 97 AddAnimatedTransformToLayerWithPlayer(root()->id(), timeline(), duration, | 99 AddAnimatedTransformToElementWithPlayer(root()->element_id(), timeline(), |
| 98 start, end); | 100 duration, start, end); |
| 99 | 101 |
| 100 root()->SetPosition(gfx::PointF()); | 102 root()->SetPosition(gfx::PointF()); |
| 101 parent1()->SetPosition(gfx::PointF()); | 103 parent1()->SetPosition(gfx::PointF()); |
| 102 parent1()->SetBounds(gfx::Size(350, 200)); | 104 parent1()->SetBounds(gfx::Size(350, 200)); |
| 103 | 105 |
| 104 child1()->SetDrawsContent(true); | 106 child1()->SetDrawsContent(true); |
| 105 child1()->SetPosition(gfx::PointF(150.f, 50.f)); | 107 child1()->SetPosition(gfx::PointF(150.f, 50.f)); |
| 106 child1()->SetBounds(gfx::Size(100, 200)); | 108 child1()->SetBounds(gfx::Size(100, 200)); |
| 107 | 109 |
| 108 host_impl().active_tree()->BuildPropertyTreesForTesting(); | 110 host_impl().active_tree()->BuildPropertyTreesForTesting(); |
| 109 | 111 |
| 110 gfx::BoxF box; | 112 gfx::BoxF box; |
| 111 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); | 113 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); |
| 112 EXPECT_TRUE(success); | 114 EXPECT_TRUE(success); |
| 113 gfx::BoxF expected(150.f, 50.f, 0.f, 350.f, 450.f, 0.f); | 115 gfx::BoxF expected(150.f, 50.f, 0.f, 350.f, 450.f, 0.f); |
| 114 EXPECT_BOXF_EQ(expected, box); | 116 EXPECT_BOXF_EQ(expected, box); |
| 115 } | 117 } |
| 116 | 118 |
| 117 TEST_F(LayerUtilsGetAnimationBoundsTest, TranslateParentLayer) { | 119 TEST_F(LayerUtilsGetAnimationBoundsTest, TranslateParentLayer) { |
| 118 double duration = 1.0; | 120 double duration = 1.0; |
| 119 | 121 |
| 120 TransformOperations start; | 122 TransformOperations start; |
| 121 start.AppendTranslate(0.f, 0.f, 0.f); | 123 start.AppendTranslate(0.f, 0.f, 0.f); |
| 122 TransformOperations end; | 124 TransformOperations end; |
| 123 end.AppendTranslate(50.f, 50.f, 0.f); | 125 end.AppendTranslate(50.f, 50.f, 0.f); |
| 124 AddAnimatedTransformToLayerWithPlayer(parent1()->id(), timeline(), duration, | 126 AddAnimatedTransformToElementWithPlayer(parent1()->element_id(), timeline(), |
| 125 start, end); | 127 duration, start, end); |
| 126 | 128 |
| 127 parent1()->SetBounds(gfx::Size(350, 200)); | 129 parent1()->SetBounds(gfx::Size(350, 200)); |
| 128 | 130 |
| 129 child1()->SetDrawsContent(true); | 131 child1()->SetDrawsContent(true); |
| 130 child1()->SetPosition(gfx::PointF(150.f, 50.f)); | 132 child1()->SetPosition(gfx::PointF(150.f, 50.f)); |
| 131 child1()->SetBounds(gfx::Size(100, 200)); | 133 child1()->SetBounds(gfx::Size(100, 200)); |
| 132 | 134 |
| 133 host_impl().active_tree()->BuildPropertyTreesForTesting(); | 135 host_impl().active_tree()->BuildPropertyTreesForTesting(); |
| 134 | 136 |
| 135 gfx::BoxF box; | 137 gfx::BoxF box; |
| 136 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); | 138 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); |
| 137 EXPECT_TRUE(success); | 139 EXPECT_TRUE(success); |
| 138 gfx::BoxF expected(150.f, 50.f, 0.f, 150.f, 250.f, 0.f); | 140 gfx::BoxF expected(150.f, 50.f, 0.f, 150.f, 250.f, 0.f); |
| 139 EXPECT_BOXF_EQ(expected, box); | 141 EXPECT_BOXF_EQ(expected, box); |
| 140 } | 142 } |
| 141 | 143 |
| 142 TEST_F(LayerUtilsGetAnimationBoundsTest, TranslateChildLayer) { | 144 TEST_F(LayerUtilsGetAnimationBoundsTest, TranslateChildLayer) { |
| 143 double duration = 1.0; | 145 double duration = 1.0; |
| 144 | 146 |
| 145 TransformOperations start; | 147 TransformOperations start; |
| 146 start.AppendTranslate(0.f, 0.f, 0.f); | 148 start.AppendTranslate(0.f, 0.f, 0.f); |
| 147 TransformOperations end; | 149 TransformOperations end; |
| 148 end.AppendTranslate(50.f, 50.f, 0.f); | 150 end.AppendTranslate(50.f, 50.f, 0.f); |
| 149 AddAnimatedTransformToLayerWithPlayer(child1()->id(), timeline(), duration, | 151 AddAnimatedTransformToElementWithPlayer(child1()->element_id(), timeline(), |
| 150 start, end); | 152 duration, start, end); |
| 151 parent1()->SetBounds(gfx::Size(350, 200)); | 153 parent1()->SetBounds(gfx::Size(350, 200)); |
| 152 | 154 |
| 153 child1()->SetDrawsContent(true); | 155 child1()->SetDrawsContent(true); |
| 154 child1()->SetPosition(gfx::PointF(150.f, 50.f)); | 156 child1()->SetPosition(gfx::PointF(150.f, 50.f)); |
| 155 child1()->SetBounds(gfx::Size(100, 200)); | 157 child1()->SetBounds(gfx::Size(100, 200)); |
| 156 | 158 |
| 157 host_impl().active_tree()->BuildPropertyTreesForTesting(); | 159 host_impl().active_tree()->BuildPropertyTreesForTesting(); |
| 158 | 160 |
| 159 gfx::BoxF box; | 161 gfx::BoxF box; |
| 160 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); | 162 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); |
| 161 EXPECT_TRUE(success); | 163 EXPECT_TRUE(success); |
| 162 gfx::BoxF expected(150.f, 50.f, 0.f, 150.f, 250.f, 0.f); | 164 gfx::BoxF expected(150.f, 50.f, 0.f, 150.f, 250.f, 0.f); |
| 163 EXPECT_BOXF_EQ(expected, box); | 165 EXPECT_BOXF_EQ(expected, box); |
| 164 } | 166 } |
| 165 | 167 |
| 166 TEST_F(LayerUtilsGetAnimationBoundsTest, TranslateBothLayers) { | 168 TEST_F(LayerUtilsGetAnimationBoundsTest, TranslateBothLayers) { |
| 167 double duration = 1.0; | 169 double duration = 1.0; |
| 168 | 170 |
| 169 TransformOperations start; | 171 TransformOperations start; |
| 170 start.AppendTranslate(0.f, 0.f, 0.f); | 172 start.AppendTranslate(0.f, 0.f, 0.f); |
| 171 TransformOperations child_end; | 173 TransformOperations child_end; |
| 172 child_end.AppendTranslate(50.f, 0.f, 0.f); | 174 child_end.AppendTranslate(50.f, 0.f, 0.f); |
| 173 AddAnimatedTransformToLayerWithPlayer(parent1()->id(), timeline(), duration, | 175 AddAnimatedTransformToElementWithPlayer(parent1()->element_id(), timeline(), |
| 174 start, child_end); | 176 duration, start, child_end); |
| 175 | 177 |
| 176 TransformOperations grand_child_end; | 178 TransformOperations grand_child_end; |
| 177 grand_child_end.AppendTranslate(0.f, 50.f, 0.f); | 179 grand_child_end.AppendTranslate(0.f, 50.f, 0.f); |
| 178 AddAnimatedTransformToLayerWithPlayer(child1()->id(), timeline(), duration, | 180 AddAnimatedTransformToElementWithPlayer(child1()->element_id(), timeline(), |
| 179 start, grand_child_end); | 181 duration, start, grand_child_end); |
| 180 | 182 |
| 181 parent1()->SetBounds(gfx::Size(350, 200)); | 183 parent1()->SetBounds(gfx::Size(350, 200)); |
| 182 | 184 |
| 183 child1()->SetDrawsContent(true); | 185 child1()->SetDrawsContent(true); |
| 184 child1()->SetPosition(gfx::PointF(150.f, 50.f)); | 186 child1()->SetPosition(gfx::PointF(150.f, 50.f)); |
| 185 child1()->SetBounds(gfx::Size(100, 200)); | 187 child1()->SetBounds(gfx::Size(100, 200)); |
| 186 | 188 |
| 187 host_impl().active_tree()->BuildPropertyTreesForTesting(); | 189 host_impl().active_tree()->BuildPropertyTreesForTesting(); |
| 188 | 190 |
| 189 gfx::BoxF box; | 191 gfx::BoxF box; |
| 190 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); | 192 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); |
| 191 EXPECT_TRUE(success); | 193 EXPECT_TRUE(success); |
| 192 gfx::BoxF expected(150.f, 50.f, 0.f, 150.f, 250.f, 0.f); | 194 gfx::BoxF expected(150.f, 50.f, 0.f, 150.f, 250.f, 0.f); |
| 193 EXPECT_BOXF_EQ(expected, box); | 195 EXPECT_BOXF_EQ(expected, box); |
| 194 } | 196 } |
| 195 | 197 |
| 196 TEST_F(LayerUtilsGetAnimationBoundsTest, RotateXNoPerspective) { | 198 TEST_F(LayerUtilsGetAnimationBoundsTest, RotateXNoPerspective) { |
| 197 double duration = 1.0; | 199 double duration = 1.0; |
| 198 | 200 |
| 199 TransformOperations start; | 201 TransformOperations start; |
| 200 start.AppendRotate(1.f, 0.f, 0.f, 0.f); | 202 start.AppendRotate(1.f, 0.f, 0.f, 0.f); |
| 201 TransformOperations end; | 203 TransformOperations end; |
| 202 end.AppendRotate(1.f, 0.f, 0.f, 90.f); | 204 end.AppendRotate(1.f, 0.f, 0.f, 90.f); |
| 203 | 205 |
| 204 AddAnimatedTransformToLayerWithPlayer(child1()->id(), timeline(), duration, | 206 AddAnimatedTransformToElementWithPlayer(child1()->element_id(), timeline(), |
| 205 start, end); | 207 duration, start, end); |
| 206 | 208 |
| 207 parent1()->SetBounds(gfx::Size(350, 200)); | 209 parent1()->SetBounds(gfx::Size(350, 200)); |
| 208 | 210 |
| 209 gfx::Size bounds(100, 100); | 211 gfx::Size bounds(100, 100); |
| 210 child1()->SetDrawsContent(true); | 212 child1()->SetDrawsContent(true); |
| 211 child1()->SetPosition(gfx::PointF(150.f, 50.f)); | 213 child1()->SetPosition(gfx::PointF(150.f, 50.f)); |
| 212 child1()->SetBounds(bounds); | 214 child1()->SetBounds(bounds); |
| 213 child1()->test_properties()->transform_origin = | 215 child1()->test_properties()->transform_origin = |
| 214 gfx::Point3F(bounds.width() * 0.5f, bounds.height() * 0.5f, 0); | 216 gfx::Point3F(bounds.width() * 0.5f, bounds.height() * 0.5f, 0); |
| 215 | 217 |
| 216 host_impl().active_tree()->BuildPropertyTreesForTesting(); | 218 host_impl().active_tree()->BuildPropertyTreesForTesting(); |
| 217 | 219 |
| 218 gfx::BoxF box; | 220 gfx::BoxF box; |
| 219 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); | 221 bool success = LayerUtils::GetAnimationBounds(*child1(), &box); |
| 220 EXPECT_TRUE(success); | 222 EXPECT_TRUE(success); |
| 221 gfx::BoxF expected(150.f, 50.f, -50.f, 100.f, 100.f, 100.f); | 223 gfx::BoxF expected(150.f, 50.f, -50.f, 100.f, 100.f, 100.f); |
| 222 EXPECT_BOXF_EQ(expected, box); | 224 EXPECT_BOXF_EQ(expected, box); |
| 223 } | 225 } |
| 224 | 226 |
| 225 TEST_F(LayerUtilsGetAnimationBoundsTest, RotateXWithPerspective) { | 227 TEST_F(LayerUtilsGetAnimationBoundsTest, RotateXWithPerspective) { |
| 226 double duration = 1.0; | 228 double duration = 1.0; |
| 227 | 229 |
| 228 TransformOperations start; | 230 TransformOperations start; |
| 229 start.AppendRotate(1.f, 0.f, 0.f, 0.f); | 231 start.AppendRotate(1.f, 0.f, 0.f, 0.f); |
| 230 TransformOperations end; | 232 TransformOperations end; |
| 231 end.AppendRotate(1.f, 0.f, 0.f, 90.f); | 233 end.AppendRotate(1.f, 0.f, 0.f, 90.f); |
| 232 | 234 |
| 233 AddAnimatedTransformToLayerWithPlayer(child1()->id(), timeline(), duration, | 235 AddAnimatedTransformToElementWithPlayer(child1()->element_id(), timeline(), |
| 234 start, end); | 236 duration, start, end); |
| 235 | 237 |
| 236 // Make the anchor point not the default 0.5 value and line up with the | 238 // Make the anchor point not the default 0.5 value and line up with the |
| 237 // child center to make the math easier. | 239 // child center to make the math easier. |
| 238 parent1()->test_properties()->transform_origin = | 240 parent1()->test_properties()->transform_origin = |
| 239 gfx::Point3F(0.375f * 400.f, 0.375f * 400.f, 0.f); | 241 gfx::Point3F(0.375f * 400.f, 0.375f * 400.f, 0.f); |
| 240 parent1()->SetBounds(gfx::Size(400, 400)); | 242 parent1()->SetBounds(gfx::Size(400, 400)); |
| 241 | 243 |
| 242 gfx::Transform perspective; | 244 gfx::Transform perspective; |
| 243 perspective.ApplyPerspectiveDepth(100.f); | 245 perspective.ApplyPerspectiveDepth(100.f); |
| 244 parent1()->SetTransform(perspective); | 246 parent1()->SetTransform(perspective); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 264 // local transform when there is an animation applied to the layer / node. | 266 // local transform when there is an animation applied to the layer / node. |
| 265 // The intended behavior is that the animation should overwrite the transform. | 267 // The intended behavior is that the animation should overwrite the transform. |
| 266 | 268 |
| 267 double duration = 1.0; | 269 double duration = 1.0; |
| 268 | 270 |
| 269 TransformOperations start; | 271 TransformOperations start; |
| 270 start.AppendRotate(1.f, 0.f, 0.f, 0.f); | 272 start.AppendRotate(1.f, 0.f, 0.f, 0.f); |
| 271 TransformOperations end; | 273 TransformOperations end; |
| 272 end.AppendRotate(1.f, 0.f, 0.f, 90.f); | 274 end.AppendRotate(1.f, 0.f, 0.f, 90.f); |
| 273 | 275 |
| 274 AddAnimatedTransformToLayerWithPlayer(parent1()->id(), timeline(), duration, | 276 AddAnimatedTransformToElementWithPlayer(parent1()->element_id(), timeline(), |
| 275 start, end); | 277 duration, start, end); |
| 276 | 278 |
| 277 // Make the anchor point not the default 0.5 value and line up | 279 // Make the anchor point not the default 0.5 value and line up |
| 278 // with the child center to make the math easier. | 280 // with the child center to make the math easier. |
| 279 parent1()->test_properties()->transform_origin = | 281 parent1()->test_properties()->transform_origin = |
| 280 gfx::Point3F(0.375f * 400.f, 0.375f * 400.f, 0.f); | 282 gfx::Point3F(0.375f * 400.f, 0.375f * 400.f, 0.f); |
| 281 parent1()->SetBounds(gfx::Size(400, 400)); | 283 parent1()->SetBounds(gfx::Size(400, 400)); |
| 282 | 284 |
| 283 gfx::Transform perspective; | 285 gfx::Transform perspective; |
| 284 perspective.ApplyPerspectiveDepth(100.f); | 286 perspective.ApplyPerspectiveDepth(100.f); |
| 285 parent1()->SetTransform(perspective); | 287 parent1()->SetTransform(perspective); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 300 EXPECT_BOXF_EQ(expected, box); | 302 EXPECT_BOXF_EQ(expected, box); |
| 301 } | 303 } |
| 302 | 304 |
| 303 TEST_F(LayerUtilsGetAnimationBoundsTest, RotateZ) { | 305 TEST_F(LayerUtilsGetAnimationBoundsTest, RotateZ) { |
| 304 double duration = 1.0; | 306 double duration = 1.0; |
| 305 | 307 |
| 306 TransformOperations start; | 308 TransformOperations start; |
| 307 start.AppendRotate(0.f, 0.f, 1.f, 0.f); | 309 start.AppendRotate(0.f, 0.f, 1.f, 0.f); |
| 308 TransformOperations end; | 310 TransformOperations end; |
| 309 end.AppendRotate(0.f, 0.f, 1.f, 90.f); | 311 end.AppendRotate(0.f, 0.f, 1.f, 90.f); |
| 310 AddAnimatedTransformToLayerWithPlayer(child1()->id(), timeline(), duration, | 312 AddAnimatedTransformToElementWithPlayer(child1()->element_id(), timeline(), |
| 311 start, end); | 313 duration, start, end); |
| 312 | 314 |
| 313 parent1()->SetBounds(gfx::Size(350, 200)); | 315 parent1()->SetBounds(gfx::Size(350, 200)); |
| 314 | 316 |
| 315 gfx::Size bounds(100, 100); | 317 gfx::Size bounds(100, 100); |
| 316 child1()->SetDrawsContent(true); | 318 child1()->SetDrawsContent(true); |
| 317 child1()->SetPosition(gfx::PointF(150.f, 50.f)); | 319 child1()->SetPosition(gfx::PointF(150.f, 50.f)); |
| 318 child1()->SetBounds(bounds); | 320 child1()->SetBounds(bounds); |
| 319 child1()->test_properties()->transform_origin = | 321 child1()->test_properties()->transform_origin = |
| 320 gfx::Point3F(bounds.width() * 0.5f, bounds.height() * 0.5f, 0); | 322 gfx::Point3F(bounds.width() * 0.5f, bounds.height() * 0.5f, 0); |
| 321 | 323 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 334 EXPECT_BOXF_EQ(expected, box); | 336 EXPECT_BOXF_EQ(expected, box); |
| 335 } | 337 } |
| 336 | 338 |
| 337 TEST_F(LayerUtilsGetAnimationBoundsTest, MismatchedTransforms) { | 339 TEST_F(LayerUtilsGetAnimationBoundsTest, MismatchedTransforms) { |
| 338 double duration = 1.0; | 340 double duration = 1.0; |
| 339 | 341 |
| 340 TransformOperations start; | 342 TransformOperations start; |
| 341 start.AppendTranslate(5, 6, 7); | 343 start.AppendTranslate(5, 6, 7); |
| 342 TransformOperations end; | 344 TransformOperations end; |
| 343 end.AppendRotate(0.f, 0.f, 1.f, 90.f); | 345 end.AppendRotate(0.f, 0.f, 1.f, 90.f); |
| 344 AddAnimatedTransformToLayerWithPlayer(child1()->id(), timeline(), duration, | 346 AddAnimatedTransformToElementWithPlayer(child1()->element_id(), timeline(), |
| 345 start, end); | 347 duration, start, end); |
| 346 | 348 |
| 347 parent1()->SetBounds(gfx::Size(350, 200)); | 349 parent1()->SetBounds(gfx::Size(350, 200)); |
| 348 | 350 |
| 349 gfx::Size bounds(100, 100); | 351 gfx::Size bounds(100, 100); |
| 350 child1()->SetDrawsContent(true); | 352 child1()->SetDrawsContent(true); |
| 351 child1()->SetPosition(gfx::PointF(150.f, 50.f)); | 353 child1()->SetPosition(gfx::PointF(150.f, 50.f)); |
| 352 child1()->SetBounds(bounds); | 354 child1()->SetBounds(bounds); |
| 353 | 355 |
| 354 host_impl().active_tree()->BuildPropertyTreesForTesting(); | 356 host_impl().active_tree()->BuildPropertyTreesForTesting(); |
| 355 | 357 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 369 // This test is used to check if GetAnimationBounds correctly skips layers and | 371 // This test is used to check if GetAnimationBounds correctly skips layers and |
| 370 // take layers which do not own a transform_node into consideration. | 372 // take layers which do not own a transform_node into consideration. |
| 371 // Under this topology, only root and grand_child own transform_nodes. | 373 // Under this topology, only root and grand_child own transform_nodes. |
| 372 | 374 |
| 373 double duration = 1.0; | 375 double duration = 1.0; |
| 374 | 376 |
| 375 TransformOperations start; | 377 TransformOperations start; |
| 376 start.AppendTranslate(0.f, 0.f, 0.f); | 378 start.AppendTranslate(0.f, 0.f, 0.f); |
| 377 TransformOperations great_grand_child_end; | 379 TransformOperations great_grand_child_end; |
| 378 great_grand_child_end.AppendTranslate(50.f, 0.f, 0.f); | 380 great_grand_child_end.AppendTranslate(50.f, 0.f, 0.f); |
| 379 AddAnimatedTransformToLayerWithPlayer(grand_child()->id(), timeline(), | 381 AddAnimatedTransformToElementWithPlayer(grand_child()->element_id(), |
| 380 duration, start, great_grand_child_end); | 382 timeline(), duration, start, |
| 383 great_grand_child_end); |
| 381 | 384 |
| 382 gfx::Transform translate_2d_transform; | 385 gfx::Transform translate_2d_transform; |
| 383 translate_2d_transform.Translate(80.f, 60.f); | 386 translate_2d_transform.Translate(80.f, 60.f); |
| 384 root()->SetBounds(gfx::Size(350, 200)); | 387 root()->SetBounds(gfx::Size(350, 200)); |
| 385 parent2()->SetPosition(gfx::PointF(40.f, 45.f)); | 388 parent2()->SetPosition(gfx::PointF(40.f, 45.f)); |
| 386 child2()->SetTransform(translate_2d_transform); | 389 child2()->SetTransform(translate_2d_transform); |
| 387 great_grand_child()->SetDrawsContent(true); | 390 great_grand_child()->SetDrawsContent(true); |
| 388 great_grand_child()->SetPosition(gfx::PointF(150.f, 50.f)); | 391 great_grand_child()->SetPosition(gfx::PointF(150.f, 50.f)); |
| 389 great_grand_child()->SetBounds(gfx::Size(100, 200)); | 392 great_grand_child()->SetBounds(gfx::Size(100, 200)); |
| 390 host_impl().active_tree()->BuildPropertyTreesForTesting(); | 393 host_impl().active_tree()->BuildPropertyTreesForTesting(); |
| 391 | 394 |
| 392 gfx::BoxF box; | 395 gfx::BoxF box; |
| 393 bool success = LayerUtils::GetAnimationBounds(*great_grand_child(), &box); | 396 bool success = LayerUtils::GetAnimationBounds(*great_grand_child(), &box); |
| 394 EXPECT_TRUE(success); | 397 EXPECT_TRUE(success); |
| 395 gfx::BoxF expected(270.f, 155.f, 0.f, 150.f, 200.f, 0.f); | 398 gfx::BoxF expected(270.f, 155.f, 0.f, 150.f, 200.f, 0.f); |
| 396 EXPECT_BOXF_EQ(expected, box); | 399 EXPECT_BOXF_EQ(expected, box); |
| 397 } | 400 } |
| 398 | 401 |
| 399 TEST_F(LayerUtilsGetAnimationBoundsTest, | 402 TEST_F(LayerUtilsGetAnimationBoundsTest, |
| 400 RotateZUnderAncestorsWithPositionOr2DTransform) { | 403 RotateZUnderAncestorsWithPositionOr2DTransform) { |
| 401 double duration = 1.0; | 404 double duration = 1.0; |
| 402 | 405 |
| 403 TransformOperations start; | 406 TransformOperations start; |
| 404 start.AppendRotate(0.f, 0.f, 1.f, 0.f); | 407 start.AppendRotate(0.f, 0.f, 1.f, 0.f); |
| 405 TransformOperations great_grand_child_end; | 408 TransformOperations great_grand_child_end; |
| 406 great_grand_child_end.AppendRotate(0.f, 0.f, 1.f, 90.f); | 409 great_grand_child_end.AppendRotate(0.f, 0.f, 1.f, 90.f); |
| 407 AddAnimatedTransformToLayerWithPlayer(grand_child()->id(), timeline(), | 410 AddAnimatedTransformToElementWithPlayer(grand_child()->element_id(), |
| 408 duration, start, great_grand_child_end); | 411 timeline(), duration, start, |
| 412 great_grand_child_end); |
| 409 | 413 |
| 410 gfx::Transform translate_2d_transform; | 414 gfx::Transform translate_2d_transform; |
| 411 translate_2d_transform.Translate(80.f, 60.f); | 415 translate_2d_transform.Translate(80.f, 60.f); |
| 412 root()->SetBounds(gfx::Size(350, 200)); | 416 root()->SetBounds(gfx::Size(350, 200)); |
| 413 parent2()->SetPosition(gfx::PointF(40.f, 45.f)); | 417 parent2()->SetPosition(gfx::PointF(40.f, 45.f)); |
| 414 child2()->SetTransform(translate_2d_transform); | 418 child2()->SetTransform(translate_2d_transform); |
| 415 | 419 |
| 416 gfx::Size bounds(100, 100); | 420 gfx::Size bounds(100, 100); |
| 417 grand_child()->SetPosition(gfx::PointF(150.f, 50.f)); | 421 grand_child()->SetPosition(gfx::PointF(150.f, 50.f)); |
| 418 grand_child()->SetBounds(bounds); | 422 grand_child()->SetBounds(bounds); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 444 // +------grand_child (Perspective) | 448 // +------grand_child (Perspective) |
| 445 // +--------great_grand_child (RotateX, DrawsContent) | 449 // +--------great_grand_child (RotateX, DrawsContent) |
| 446 // Due to the RotateX animation, great_grand_child also owns a transform_node | 450 // Due to the RotateX animation, great_grand_child also owns a transform_node |
| 447 | 451 |
| 448 double duration = 1.0; | 452 double duration = 1.0; |
| 449 | 453 |
| 450 TransformOperations start; | 454 TransformOperations start; |
| 451 start.AppendRotate(1.f, 0.f, 0.f, 0.f); | 455 start.AppendRotate(1.f, 0.f, 0.f, 0.f); |
| 452 TransformOperations great_grand_child_end; | 456 TransformOperations great_grand_child_end; |
| 453 great_grand_child_end.AppendRotate(1.f, 0.f, 0.f, 90.f); | 457 great_grand_child_end.AppendRotate(1.f, 0.f, 0.f, 90.f); |
| 454 AddAnimatedTransformToLayerWithPlayer(great_grand_child()->id(), timeline(), | 458 AddAnimatedTransformToElementWithPlayer(great_grand_child()->element_id(), |
| 455 duration, start, great_grand_child_end); | 459 timeline(), duration, start, |
| 460 great_grand_child_end); |
| 456 | 461 |
| 457 gfx::Transform translate_2d_transform; | 462 gfx::Transform translate_2d_transform; |
| 458 translate_2d_transform.Translate(80.f, 60.f); | 463 translate_2d_transform.Translate(80.f, 60.f); |
| 459 | 464 |
| 460 root()->SetBounds(gfx::Size(350, 200)); | 465 root()->SetBounds(gfx::Size(350, 200)); |
| 461 parent2()->SetPosition(gfx::PointF(40.f, 45.f)); | 466 parent2()->SetPosition(gfx::PointF(40.f, 45.f)); |
| 462 child2()->SetTransform(translate_2d_transform); | 467 child2()->SetTransform(translate_2d_transform); |
| 463 | 468 |
| 464 gfx::Transform perspective; | 469 gfx::Transform perspective; |
| 465 perspective.ApplyPerspectiveDepth(100.f); | 470 perspective.ApplyPerspectiveDepth(100.f); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 525 } | 530 } |
| 526 | 531 |
| 527 TEST_F(LayerUtilsGetAnimationBoundsTest, | 532 TEST_F(LayerUtilsGetAnimationBoundsTest, |
| 528 RotateXNoPerspectiveUnderAncestorsWithPositionOr2DTransform) { | 533 RotateXNoPerspectiveUnderAncestorsWithPositionOr2DTransform) { |
| 529 double duration = 1.0; | 534 double duration = 1.0; |
| 530 | 535 |
| 531 TransformOperations start; | 536 TransformOperations start; |
| 532 start.AppendRotate(1.f, 0.f, 0.f, 0.f); | 537 start.AppendRotate(1.f, 0.f, 0.f, 0.f); |
| 533 TransformOperations rotate_x_end; | 538 TransformOperations rotate_x_end; |
| 534 rotate_x_end.AppendRotate(1.f, 0.f, 0.f, 90.f); | 539 rotate_x_end.AppendRotate(1.f, 0.f, 0.f, 90.f); |
| 535 AddAnimatedTransformToLayerWithPlayer(great_grand_child()->id(), timeline(), | 540 AddAnimatedTransformToElementWithPlayer(great_grand_child()->element_id(), |
| 536 duration, start, rotate_x_end); | 541 timeline(), duration, start, |
| 542 rotate_x_end); |
| 537 | 543 |
| 538 gfx::Transform translate_2d_transform; | 544 gfx::Transform translate_2d_transform; |
| 539 translate_2d_transform.Translate(80.f, 60.f); | 545 translate_2d_transform.Translate(80.f, 60.f); |
| 540 | 546 |
| 541 root()->SetBounds(gfx::Size(350, 200)); | 547 root()->SetBounds(gfx::Size(350, 200)); |
| 542 parent2()->SetPosition(gfx::PointF(40.f, 45.f)); | 548 parent2()->SetPosition(gfx::PointF(40.f, 45.f)); |
| 543 child2()->SetTransform(translate_2d_transform); | 549 child2()->SetTransform(translate_2d_transform); |
| 544 | 550 |
| 545 gfx::Size bounds(100.f, 100.f); | 551 gfx::Size bounds(100.f, 100.f); |
| 546 grand_child()->SetPosition(gfx::PointF(150.f, 50.f)); | 552 grand_child()->SetPosition(gfx::PointF(150.f, 50.f)); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 562 // Same as RotateXWithPerspectiveUnderAncestorsWithPositionOr2DTransform test, | 568 // Same as RotateXWithPerspectiveUnderAncestorsWithPositionOr2DTransform test, |
| 563 // except for the perspective calculations. | 569 // except for the perspective calculations. |
| 564 | 570 |
| 565 gfx::BoxF expected(295.f, 180.f, -25.f, 50.f, 50.f, 50.f); | 571 gfx::BoxF expected(295.f, 180.f, -25.f, 50.f, 50.f, 50.f); |
| 566 EXPECT_BOXF_EQ(expected, box); | 572 EXPECT_BOXF_EQ(expected, box); |
| 567 } | 573 } |
| 568 | 574 |
| 569 } // namespace | 575 } // namespace |
| 570 | 576 |
| 571 } // namespace cc | 577 } // namespace cc |
| OLD | NEW |