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