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

Side by Side Diff: cc/trees/layer_tree_host_common_unittest.cc

Issue 1973083002: Use element id's for animations (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: get element id's from scroll node data directly. Created 4 years, 6 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
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/trees/layer_tree_host_common.h" 5 #include "cc/trees/layer_tree_host_common.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 2535 matching lines...) Expand 10 before | Expand all | Expand 10 after
2546 grand_child_of_root, layer_transform, gfx::Point3F(0.25f, 0.f, 0.f), 2546 grand_child_of_root, layer_transform, gfx::Point3F(0.25f, 0.f, 0.f),
2547 gfx::PointF(2.5f, 0.f), gfx::Size(10, 10), true, false, false); 2547 gfx::PointF(2.5f, 0.f), gfx::Size(10, 10), true, false, false);
2548 SetLayerPropertiesForTesting( 2548 SetLayerPropertiesForTesting(
2549 grand_child_of_rs1, layer_transform, gfx::Point3F(0.25f, 0.f, 0.f), 2549 grand_child_of_rs1, layer_transform, gfx::Point3F(0.25f, 0.f, 0.f),
2550 gfx::PointF(2.5f, 0.f), gfx::Size(10, 10), true, false, false); 2550 gfx::PointF(2.5f, 0.f), gfx::Size(10, 10), true, false, false);
2551 SetLayerPropertiesForTesting( 2551 SetLayerPropertiesForTesting(
2552 grand_child_of_rs2, layer_transform, gfx::Point3F(0.25f, 0.f, 0.f), 2552 grand_child_of_rs2, layer_transform, gfx::Point3F(0.25f, 0.f, 0.f),
2553 gfx::PointF(2.5f, 0.f), gfx::Size(10, 10), true, false, false); 2553 gfx::PointF(2.5f, 0.f), gfx::Size(10, 10), true, false, false);
2554 2554
2555 parent->layer_tree_impl()->BuildPropertyTreesForTesting(); 2555 parent->layer_tree_impl()->BuildPropertyTreesForTesting();
2556 SetElementIdsForTesting();
2556 2557
2557 // Put an animated opacity on the render surface. 2558 // Put an animated opacity on the render surface.
2558 AddOpacityTransitionToLayerWithPlayer(render_surface1->id(), timeline_impl(), 2559 AddOpacityTransitionToElementWithPlayer(
2559 10.0, 1.f, 0.f, false); 2560 render_surface1->element_id(), timeline_impl(), 10.0, 1.f, 0.f, false);
2560 2561
2561 // Also put an animated opacity on a layer without descendants. 2562 // Also put an animated opacity on a layer without descendants.
2562 AddOpacityTransitionToLayerWithPlayer(grand_child_of_root->id(), 2563 AddOpacityTransitionToElementWithPlayer(grand_child_of_root->element_id(),
2563 timeline_impl(), 10.0, 1.f, 0.f, false); 2564 timeline_impl(), 10.0, 1.f, 0.f,
2565 false);
2564 2566
2565 // Put a transform animation on the render surface. 2567 // Put a transform animation on the render surface.
2566 AddAnimatedTransformToLayerWithPlayer(render_surface2->id(), timeline_impl(), 2568 AddAnimatedTransformToElementWithPlayer(render_surface2->element_id(),
2567 10.0, 30, 0); 2569 timeline_impl(), 10.0, 30, 0);
2568 2570
2569 // Also put transform animations on grand_child_of_root, and 2571 // Also put transform animations on grand_child_of_root, and
2570 // grand_child_of_rs2 2572 // grand_child_of_rs2
2571 AddAnimatedTransformToLayerWithPlayer(grand_child_of_root->id(), 2573 AddAnimatedTransformToElementWithPlayer(grand_child_of_root->element_id(),
2572 timeline_impl(), 10.0, 30, 0); 2574 timeline_impl(), 10.0, 30, 0);
2573 AddAnimatedTransformToLayerWithPlayer(grand_child_of_rs2->id(), 2575 AddAnimatedTransformToElementWithPlayer(grand_child_of_rs2->element_id(),
2574 timeline_impl(), 10.0, 30, 0); 2576 timeline_impl(), 10.0, 30, 0);
2575 2577
2576 parent->layer_tree_impl()->property_trees()->needs_rebuild = true; 2578 parent->layer_tree_impl()->property_trees()->needs_rebuild = true;
2577 ExecuteCalculateDrawProperties(parent); 2579 ExecuteCalculateDrawProperties(parent);
2578 2580
2579 // Only layers that are associated with render surfaces should have an actual 2581 // Only layers that are associated with render surfaces should have an actual
2580 // RenderSurface() value. 2582 // RenderSurface() value.
2581 ASSERT_TRUE(parent->render_surface()); 2583 ASSERT_TRUE(parent->render_surface());
2582 ASSERT_FALSE(child_of_root->render_surface()); 2584 ASSERT_FALSE(child_of_root->render_surface());
2583 ASSERT_FALSE(grand_child_of_root->render_surface()); 2585 ASSERT_FALSE(grand_child_of_root->render_surface());
2584 2586
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
2683 gfx::Size(10, 10), true, false, true); 2685 gfx::Size(10, 10), true, false, true);
2684 SetLayerPropertiesForTesting(child, identity, gfx::Point3F(), gfx::PointF(), 2686 SetLayerPropertiesForTesting(child, identity, gfx::Point3F(), gfx::PointF(),
2685 gfx::Size(10, 10), true, false, false); 2687 gfx::Size(10, 10), true, false, false);
2686 SetLayerPropertiesForTesting(grand_child, identity, gfx::Point3F(), 2688 SetLayerPropertiesForTesting(grand_child, identity, gfx::Point3F(),
2687 gfx::PointF(), gfx::Size(10, 10), true, false, 2689 gfx::PointF(), gfx::Size(10, 10), true, false,
2688 false); 2690 false);
2689 SetLayerPropertiesForTesting(great_grand_child, identity, gfx::Point3F(), 2691 SetLayerPropertiesForTesting(great_grand_child, identity, gfx::Point3F(),
2690 gfx::PointF(), gfx::Size(10, 10), true, false, 2692 gfx::PointF(), gfx::Size(10, 10), true, false,
2691 false); 2693 false);
2692 2694
2695 SetElementIdsForTesting();
2696
2693 // Add a transform animation with a start delay to |grand_child|. 2697 // Add a transform animation with a start delay to |grand_child|.
2694 std::unique_ptr<Animation> animation = Animation::Create( 2698 std::unique_ptr<Animation> animation = Animation::Create(
2695 std::unique_ptr<AnimationCurve>(new FakeTransformTransition(1.0)), 0, 1, 2699 std::unique_ptr<AnimationCurve>(new FakeTransformTransition(1.0)), 0, 1,
2696 TargetProperty::TRANSFORM); 2700 TargetProperty::TRANSFORM);
2697 animation->set_fill_mode(Animation::FillMode::NONE); 2701 animation->set_fill_mode(Animation::FillMode::NONE);
2698 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000)); 2702 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000));
2699 AddAnimationToLayerWithPlayer(grand_child->id(), timeline_impl(), 2703 AddAnimationToElementWithPlayer(grand_child->element_id(), timeline_impl(),
2700 std::move(animation)); 2704 std::move(animation));
2701 ExecuteCalculateDrawProperties(parent); 2705 ExecuteCalculateDrawProperties(parent);
2702 2706
2703 EXPECT_FALSE(parent->screen_space_transform_is_animating()); 2707 EXPECT_FALSE(parent->screen_space_transform_is_animating());
2704 EXPECT_FALSE(child->screen_space_transform_is_animating()); 2708 EXPECT_FALSE(child->screen_space_transform_is_animating());
2705 2709
2706 EXPECT_FALSE(grand_child->TransformIsAnimating()); 2710 EXPECT_FALSE(grand_child->TransformIsAnimating());
2707 EXPECT_TRUE(grand_child->HasPotentiallyRunningTransformAnimation()); 2711 EXPECT_TRUE(grand_child->HasPotentiallyRunningTransformAnimation());
2708 EXPECT_TRUE(grand_child->screen_space_transform_is_animating()); 2712 EXPECT_TRUE(grand_child->screen_space_transform_is_animating());
2709 EXPECT_TRUE(great_grand_child->screen_space_transform_is_animating()); 2713 EXPECT_TRUE(great_grand_child->screen_space_transform_is_animating());
2710 } 2714 }
(...skipping 1700 matching lines...) Expand 10 before | Expand all | Expand 10 after
4411 child2->SetDrawsContent(true); 4415 child2->SetDrawsContent(true);
4412 animating_surface->SetDrawsContent(true); 4416 animating_surface->SetDrawsContent(true);
4413 child_of_animating_surface->SetDrawsContent(true); 4417 child_of_animating_surface->SetDrawsContent(true);
4414 animating_child->SetDrawsContent(true); 4418 animating_child->SetDrawsContent(true);
4415 4419
4416 gfx::Transform backface_matrix; 4420 gfx::Transform backface_matrix;
4417 backface_matrix.Translate(50.0, 50.0); 4421 backface_matrix.Translate(50.0, 50.0);
4418 backface_matrix.RotateAboutYAxis(180.0); 4422 backface_matrix.RotateAboutYAxis(180.0);
4419 backface_matrix.Translate(-50.0, -50.0); 4423 backface_matrix.Translate(-50.0, -50.0);
4420 4424
4425 SetElementIdsForTesting();
4426
4421 // Animate the transform on the render surface. 4427 // Animate the transform on the render surface.
4422 AddAnimatedTransformToLayerWithPlayer(animating_surface->id(), 4428 AddAnimatedTransformToElementWithPlayer(animating_surface->element_id(),
4423 timeline_impl(), 10.0, 30, 0); 4429 timeline_impl(), 10.0, 30, 0);
4424 // This is just an animating layer, not a surface. 4430 // This is just an animating layer, not a surface.
4425 AddAnimatedTransformToLayerWithPlayer(animating_child->id(), timeline_impl(), 4431 AddAnimatedTransformToElementWithPlayer(animating_child->element_id(),
4426 10.0, 30, 0); 4432 timeline_impl(), 10.0, 30, 0);
4427 4433
4428 SetLayerPropertiesForTesting(parent, identity_matrix, gfx::Point3F(), 4434 SetLayerPropertiesForTesting(parent, identity_matrix, gfx::Point3F(),
4429 gfx::PointF(), gfx::Size(100, 100), true, false); 4435 gfx::PointF(), gfx::Size(100, 100), true, false);
4430 SetLayerPropertiesForTesting(child, backface_matrix, gfx::Point3F(), 4436 SetLayerPropertiesForTesting(child, backface_matrix, gfx::Point3F(),
4431 gfx::PointF(), gfx::Size(100, 100), true, false); 4437 gfx::PointF(), gfx::Size(100, 100), true, false);
4432 SetLayerPropertiesForTesting(animating_surface, backface_matrix, 4438 SetLayerPropertiesForTesting(animating_surface, backface_matrix,
4433 gfx::Point3F(), gfx::PointF(), 4439 gfx::Point3F(), gfx::PointF(),
4434 gfx::Size(100, 100), true, false, true); 4440 gfx::Size(100, 100), true, false, true);
4435 SetLayerPropertiesForTesting(child_of_animating_surface, backface_matrix, 4441 SetLayerPropertiesForTesting(child_of_animating_surface, backface_matrix,
4436 gfx::Point3F(), gfx::PointF(), 4442 gfx::Point3F(), gfx::PointF(),
(...skipping 591 matching lines...) Expand 10 before | Expand all | Expand 10 after
5028 false); 5034 false);
5029 child->SetDrawsContent(true); 5035 child->SetDrawsContent(true);
5030 child->test_properties()->opacity = 0.0f; 5036 child->test_properties()->opacity = 0.0f;
5031 5037
5032 const int child_id = child->id(); 5038 const int child_id = child->id();
5033 root->AddChild(std::move(child)); 5039 root->AddChild(std::move(child));
5034 root->SetHasRenderSurface(true); 5040 root->SetHasRenderSurface(true);
5035 LayerImpl* root_layer = root.get(); 5041 LayerImpl* root_layer = root.get();
5036 host_impl.pending_tree()->SetRootLayer(std::move(root)); 5042 host_impl.pending_tree()->SetRootLayer(std::move(root));
5037 host_impl.pending_tree()->BuildPropertyTreesForTesting(); 5043 host_impl.pending_tree()->BuildPropertyTreesForTesting();
5044
5038 // Add opacity animation. 5045 // Add opacity animation.
5039 scoped_refptr<AnimationTimeline> timeline = 5046 scoped_refptr<AnimationTimeline> timeline =
5040 AnimationTimeline::Create(AnimationIdProvider::NextTimelineId()); 5047 AnimationTimeline::Create(AnimationIdProvider::NextTimelineId());
5041 host_impl.animation_host()->AddAnimationTimeline(timeline); 5048 host_impl.animation_host()->AddAnimationTimeline(timeline);
5049 host_impl.pending_tree()->SetElementIdsForTesting();
5042 5050
5043 AddOpacityTransitionToLayerWithPlayer(child_id, timeline, 10.0, 0.0f, 1.0f, 5051 ElementId child_element_id =
5044 false); 5052 host_impl.pending_tree()->LayerById(child_id)->element_id();
5053
5054 AddOpacityTransitionToElementWithPlayer(child_element_id, timeline, 10.0,
5055 0.0f, 1.0f, false);
5045 5056
5046 LayerImplList render_surface_layer_list; 5057 LayerImplList render_surface_layer_list;
5047 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 5058 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
5048 root_layer, root_layer->bounds(), &render_surface_layer_list); 5059 root_layer, root_layer->bounds(), &render_surface_layer_list);
5049 inputs.can_adjust_raster_scales = true; 5060 inputs.can_adjust_raster_scales = true;
5050 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); 5061 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs);
5051 5062
5052 // We should have one render surface and two layers. The child 5063 // We should have one render surface and two layers. The child
5053 // layer should be included even though it is transparent. 5064 // layer should be included even though it is transparent.
5054 ASSERT_EQ(1u, render_surface_layer_list.size()); 5065 ASSERT_EQ(1u, render_surface_layer_list.size());
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
5138 5149
5139 // Stash raw pointers to look at later. 5150 // Stash raw pointers to look at later.
5140 root_ = root_ptr.get(); 5151 root_ = root_ptr.get();
5141 child_ = child_ptr.get(); 5152 child_ = child_ptr.get();
5142 grand_child_ = grand_child_ptr.get(); 5153 grand_child_ = grand_child_ptr.get();
5143 5154
5144 child_->AddChild(std::move(grand_child_ptr)); 5155 child_->AddChild(std::move(grand_child_ptr));
5145 root_->AddChild(std::move(child_ptr)); 5156 root_->AddChild(std::move(child_ptr));
5146 host_impl_.active_tree()->SetRootLayer(std::move(root_ptr)); 5157 host_impl_.active_tree()->SetRootLayer(std::move(root_ptr));
5147 5158
5159 host_impl_.active_tree()->SetElementIdsForTesting();
5160
5148 root_->SetContentsOpaque(true); 5161 root_->SetContentsOpaque(true);
5149 child_->SetContentsOpaque(true); 5162 child_->SetContentsOpaque(true);
5150 grand_child_->SetContentsOpaque(true); 5163 grand_child_->SetContentsOpaque(true);
5151 5164
5152 root_->SetDrawsContent(true); 5165 root_->SetDrawsContent(true);
5153 child_->SetDrawsContent(true); 5166 child_->SetDrawsContent(true);
5154 grand_child_->SetDrawsContent(true); 5167 grand_child_->SetDrawsContent(true);
5155 5168
5156 gfx::Transform identity_matrix; 5169 gfx::Transform identity_matrix;
5157 SetLayerPropertiesForTesting(root_, identity_matrix, gfx::Point3F(), 5170 SetLayerPropertiesForTesting(root_, identity_matrix, gfx::Point3F(),
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
5290 // Sanity check: Make sure can_use_lcd_text_ is set on each node. 5303 // Sanity check: Make sure can_use_lcd_text_ is set on each node.
5291 ExecuteCalculateDrawProperties(root_, 1.f, 1.f, NULL, can_use_lcd_text_, 5304 ExecuteCalculateDrawProperties(root_, 1.f, 1.f, NULL, can_use_lcd_text_,
5292 layers_always_allowed_lcd_text_); 5305 layers_always_allowed_lcd_text_);
5293 EXPECT_EQ(expect_lcd_text, root_->can_use_lcd_text()); 5306 EXPECT_EQ(expect_lcd_text, root_->can_use_lcd_text());
5294 EXPECT_EQ(expect_lcd_text, child_->can_use_lcd_text()); 5307 EXPECT_EQ(expect_lcd_text, child_->can_use_lcd_text());
5295 EXPECT_EQ(expect_lcd_text, grand_child_->can_use_lcd_text()); 5308 EXPECT_EQ(expect_lcd_text, grand_child_->can_use_lcd_text());
5296 5309
5297 // Add opacity animation. 5310 // Add opacity animation.
5298 child_->test_properties()->opacity = 0.9f; 5311 child_->test_properties()->opacity = 0.9f;
5299 child_->layer_tree_impl()->property_trees()->needs_rebuild = true; 5312 child_->layer_tree_impl()->property_trees()->needs_rebuild = true;
5300 AddOpacityTransitionToLayerWithPlayer(child_->id(), timeline(), 10.0, 0.9f, 5313 SetElementIdsForTesting();
5301 0.1f, false); 5314
5315 AddOpacityTransitionToElementWithPlayer(child_->element_id(), timeline(),
5316 10.0, 0.9f, 0.1f, false);
5302 ExecuteCalculateDrawProperties(root_, 1.f, 1.f, NULL, can_use_lcd_text_, 5317 ExecuteCalculateDrawProperties(root_, 1.f, 1.f, NULL, can_use_lcd_text_,
5303 layers_always_allowed_lcd_text_); 5318 layers_always_allowed_lcd_text_);
5304 // Text LCD should be adjusted while animation is active. 5319 // Text LCD should be adjusted while animation is active.
5305 EXPECT_EQ(expect_lcd_text, root_->can_use_lcd_text()); 5320 EXPECT_EQ(expect_lcd_text, root_->can_use_lcd_text());
5306 EXPECT_EQ(expect_not_lcd_text, child_->can_use_lcd_text()); 5321 EXPECT_EQ(expect_not_lcd_text, child_->can_use_lcd_text());
5307 EXPECT_EQ(expect_not_lcd_text, grand_child_->can_use_lcd_text()); 5322 EXPECT_EQ(expect_not_lcd_text, grand_child_->can_use_lcd_text());
5308 } 5323 }
5309 5324
5310 TEST_P(LCDTextTest, CanUseLCDTextWithAnimationContentsOpaque) { 5325 TEST_P(LCDTextTest, CanUseLCDTextWithAnimationContentsOpaque) {
5311 bool expect_lcd_text = can_use_lcd_text_ || layers_always_allowed_lcd_text_; 5326 bool expect_lcd_text = can_use_lcd_text_ || layers_always_allowed_lcd_text_;
5312 bool expect_not_lcd_text = layers_always_allowed_lcd_text_; 5327 bool expect_not_lcd_text = layers_always_allowed_lcd_text_;
5313 5328
5314 // Sanity check: Make sure can_use_lcd_text_ is set on each node. 5329 // Sanity check: Make sure can_use_lcd_text_ is set on each node.
5315 ExecuteCalculateDrawProperties(root_, 1.f, 1.f, NULL, can_use_lcd_text_, 5330 ExecuteCalculateDrawProperties(root_, 1.f, 1.f, NULL, can_use_lcd_text_,
5316 layers_always_allowed_lcd_text_); 5331 layers_always_allowed_lcd_text_);
5317 EXPECT_EQ(expect_lcd_text, root_->can_use_lcd_text()); 5332 EXPECT_EQ(expect_lcd_text, root_->can_use_lcd_text());
5318 EXPECT_EQ(expect_lcd_text, child_->can_use_lcd_text()); 5333 EXPECT_EQ(expect_lcd_text, child_->can_use_lcd_text());
5319 EXPECT_EQ(expect_lcd_text, grand_child_->can_use_lcd_text()); 5334 EXPECT_EQ(expect_lcd_text, grand_child_->can_use_lcd_text());
5335 SetElementIdsForTesting();
5320 5336
5321 // Mark contents non-opaque within the first animation frame. 5337 // Mark contents non-opaque within the first animation frame.
5322 child_->SetContentsOpaque(false); 5338 child_->SetContentsOpaque(false);
5323 AddOpacityTransitionToLayerWithPlayer(child_->id(), timeline(), 10.0, 0.9f, 5339 AddOpacityTransitionToElementWithPlayer(child_->element_id(), timeline(),
5324 0.1f, false); 5340 10.0, 0.9f, 0.1f, false);
5325 ExecuteCalculateDrawProperties(root_, 1.f, 1.f, NULL, can_use_lcd_text_, 5341 ExecuteCalculateDrawProperties(root_, 1.f, 1.f, NULL, can_use_lcd_text_,
5326 layers_always_allowed_lcd_text_); 5342 layers_always_allowed_lcd_text_);
5327 // LCD text should be disabled for non-opaque layers even during animations. 5343 // LCD text should be disabled for non-opaque layers even during animations.
5328 EXPECT_EQ(expect_lcd_text, root_->can_use_lcd_text()); 5344 EXPECT_EQ(expect_lcd_text, root_->can_use_lcd_text());
5329 EXPECT_EQ(expect_not_lcd_text, child_->can_use_lcd_text()); 5345 EXPECT_EQ(expect_not_lcd_text, child_->can_use_lcd_text());
5330 EXPECT_EQ(expect_lcd_text, grand_child_->can_use_lcd_text()); 5346 EXPECT_EQ(expect_lcd_text, grand_child_->can_use_lcd_text());
5331 } 5347 }
5332 5348
5333 INSTANTIATE_TEST_CASE_P(LayerTreeHostCommonTest, 5349 INSTANTIATE_TEST_CASE_P(LayerTreeHostCommonTest,
5334 LCDTextTest, 5350 LCDTextTest,
(...skipping 1745 matching lines...) Expand 10 before | Expand all | Expand 10 after
7080 SetLayerPropertiesForTesting(scroller, identity_transform, gfx::Point3F(), 7096 SetLayerPropertiesForTesting(scroller, identity_transform, gfx::Point3F(),
7081 gfx::PointF(), gfx::Size(100, 100), true, false, 7097 gfx::PointF(), gfx::Size(100, 100), true, false,
7082 false); 7098 false);
7083 7099
7084 gfx::Transform end_scale; 7100 gfx::Transform end_scale;
7085 end_scale.Scale(2.f, 2.f); 7101 end_scale.Scale(2.f, 2.f);
7086 TransformOperations start_operations; 7102 TransformOperations start_operations;
7087 start_operations.AppendMatrix(start_scale); 7103 start_operations.AppendMatrix(start_scale);
7088 TransformOperations end_operations; 7104 TransformOperations end_operations;
7089 end_operations.AppendMatrix(end_scale); 7105 end_operations.AppendMatrix(end_scale);
7090 AddAnimatedTransformToLayerWithPlayer(animated_layer->id(), timeline_impl(), 7106 SetElementIdsForTesting();
7091 1.0, start_operations, end_operations); 7107
7108 AddAnimatedTransformToElementWithPlayer(animated_layer->element_id(),
7109 timeline_impl(), 1.0,
7110 start_operations, end_operations);
7092 gfx::Vector2dF scroll_delta(5.f, 9.f); 7111 gfx::Vector2dF scroll_delta(5.f, 9.f);
7093 SetScrollOffsetDelta(scroller, scroll_delta); 7112 SetScrollOffsetDelta(scroller, scroll_delta);
7094 7113
7095 ExecuteCalculateDrawProperties(root); 7114 ExecuteCalculateDrawProperties(root);
7096 7115
7097 gfx::Vector2dF expected_draw_transform_translation(-7.5f, -13.5f); 7116 gfx::Vector2dF expected_draw_transform_translation(-7.5f, -13.5f);
7098 EXPECT_VECTOR2DF_EQ(expected_draw_transform_translation, 7117 EXPECT_VECTOR2DF_EQ(expected_draw_transform_translation,
7099 scroller->DrawTransform().To2dTranslation()); 7118 scroller->DrawTransform().To2dTranslation());
7100 } 7119 }
7101 7120
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
7184 0.f, 7203 0.f,
7185 grand_child_raw->draw_properties().starting_animation_contents_scale); 7204 grand_child_raw->draw_properties().starting_animation_contents_scale);
7186 7205
7187 TransformOperations translation; 7206 TransformOperations translation;
7188 translation.AppendTranslate(1.f, 2.f, 3.f); 7207 translation.AppendTranslate(1.f, 2.f, 3.f);
7189 7208
7190 scoped_refptr<AnimationTimeline> timeline; 7209 scoped_refptr<AnimationTimeline> timeline;
7191 timeline = AnimationTimeline::Create(AnimationIdProvider::NextTimelineId()); 7210 timeline = AnimationTimeline::Create(AnimationIdProvider::NextTimelineId());
7192 host_impl.animation_host()->AddAnimationTimeline(timeline); 7211 host_impl.animation_host()->AddAnimationTimeline(timeline);
7193 7212
7194 AddAnimatedTransformToLayerWithPlayer(parent_raw->id(), timeline, 1.0, 7213 host_impl.active_tree()->SetElementIdsForTesting();
7195 TransformOperations(), translation); 7214 AddAnimatedTransformToElementWithPlayer(parent_raw->element_id(), timeline,
7215 1.0, TransformOperations(),
7216 translation);
7196 7217
7197 // No layers have scale-affecting animations. 7218 // No layers have scale-affecting animations.
7198 EXPECT_EQ( 7219 EXPECT_EQ(
7199 0.f, 7220 0.f,
7200 grand_parent_raw->draw_properties().maximum_animation_contents_scale); 7221 grand_parent_raw->draw_properties().maximum_animation_contents_scale);
7201 EXPECT_EQ(0.f, 7222 EXPECT_EQ(0.f,
7202 parent_raw->draw_properties().maximum_animation_contents_scale); 7223 parent_raw->draw_properties().maximum_animation_contents_scale);
7203 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale); 7224 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale);
7204 EXPECT_EQ( 7225 EXPECT_EQ(
7205 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale); 7226 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
7206 7227
7207 EXPECT_EQ( 7228 EXPECT_EQ(
7208 0.f, 7229 0.f,
7209 grand_parent_raw->draw_properties().starting_animation_contents_scale); 7230 grand_parent_raw->draw_properties().starting_animation_contents_scale);
7210 EXPECT_EQ(0.f, 7231 EXPECT_EQ(0.f,
7211 parent_raw->draw_properties().starting_animation_contents_scale); 7232 parent_raw->draw_properties().starting_animation_contents_scale);
7212 EXPECT_EQ(0.f, 7233 EXPECT_EQ(0.f,
7213 child_raw->draw_properties().starting_animation_contents_scale); 7234 child_raw->draw_properties().starting_animation_contents_scale);
7214 EXPECT_EQ( 7235 EXPECT_EQ(
7215 0.f, 7236 0.f,
7216 grand_child_raw->draw_properties().starting_animation_contents_scale); 7237 grand_child_raw->draw_properties().starting_animation_contents_scale);
7217 7238
7218 TransformOperations scale; 7239 TransformOperations scale;
7219 scale.AppendScale(5.f, 4.f, 3.f); 7240 scale.AppendScale(5.f, 4.f, 3.f);
7220 7241
7221 AddAnimatedTransformToLayerWithPlayer(child_raw->id(), timeline, 1.0, 7242 AddAnimatedTransformToElementWithPlayer(child_raw->element_id(), timeline,
7222 TransformOperations(), scale); 7243 1.0, TransformOperations(), scale);
7223 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; 7244 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true;
7224 ExecuteCalculateDrawProperties(grand_parent_raw); 7245 ExecuteCalculateDrawProperties(grand_parent_raw);
7225 7246
7226 // Only |child| has a scale-affecting animation. 7247 // Only |child| has a scale-affecting animation.
7227 EXPECT_EQ( 7248 EXPECT_EQ(
7228 0.f, 7249 0.f,
7229 grand_parent_raw->draw_properties().maximum_animation_contents_scale); 7250 grand_parent_raw->draw_properties().maximum_animation_contents_scale);
7230 EXPECT_EQ(0.f, 7251 EXPECT_EQ(0.f,
7231 parent_raw->draw_properties().maximum_animation_contents_scale); 7252 parent_raw->draw_properties().maximum_animation_contents_scale);
7232 EXPECT_EQ(5.f, child_raw->draw_properties().maximum_animation_contents_scale); 7253 EXPECT_EQ(5.f, child_raw->draw_properties().maximum_animation_contents_scale);
7233 EXPECT_EQ( 7254 EXPECT_EQ(
7234 5.f, grand_child_raw->draw_properties().maximum_animation_contents_scale); 7255 5.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
7235 7256
7236 EXPECT_EQ( 7257 EXPECT_EQ(
7237 0.f, 7258 0.f,
7238 grand_parent_raw->draw_properties().starting_animation_contents_scale); 7259 grand_parent_raw->draw_properties().starting_animation_contents_scale);
7239 EXPECT_EQ(0.f, 7260 EXPECT_EQ(0.f,
7240 parent_raw->draw_properties().starting_animation_contents_scale); 7261 parent_raw->draw_properties().starting_animation_contents_scale);
7241 EXPECT_EQ(1.f, 7262 EXPECT_EQ(1.f,
7242 child_raw->draw_properties().starting_animation_contents_scale); 7263 child_raw->draw_properties().starting_animation_contents_scale);
7243 EXPECT_EQ( 7264 EXPECT_EQ(
7244 1.f, 7265 1.f,
7245 grand_child_raw->draw_properties().starting_animation_contents_scale); 7266 grand_child_raw->draw_properties().starting_animation_contents_scale);
7246 7267
7247 AddAnimatedTransformToLayerWithPlayer(grand_parent_raw->id(), timeline, 1.0, 7268 AddAnimatedTransformToElementWithPlayer(grand_parent_raw->element_id(),
7248 TransformOperations(), scale); 7269 timeline, 1.0, TransformOperations(),
7270 scale);
7249 grand_parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; 7271 grand_parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true;
7250 ExecuteCalculateDrawProperties(grand_parent_raw); 7272 ExecuteCalculateDrawProperties(grand_parent_raw);
7251 7273
7252 // |grand_parent| and |child| have scale-affecting animations. 7274 // |grand_parent| and |child| have scale-affecting animations.
7253 EXPECT_EQ( 7275 EXPECT_EQ(
7254 5.f, 7276 5.f,
7255 grand_parent_raw->draw_properties().maximum_animation_contents_scale); 7277 grand_parent_raw->draw_properties().maximum_animation_contents_scale);
7256 EXPECT_EQ(5.f, 7278 EXPECT_EQ(5.f,
7257 parent_raw->draw_properties().maximum_animation_contents_scale); 7279 parent_raw->draw_properties().maximum_animation_contents_scale);
7258 // We don't support combining animated scales from two nodes; 0.f means 7280 // We don't support combining animated scales from two nodes; 0.f means
7259 // that the maximum scale could not be computed. 7281 // that the maximum scale could not be computed.
7260 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale); 7282 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale);
7261 EXPECT_EQ( 7283 EXPECT_EQ(
7262 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale); 7284 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
7263 7285
7264 EXPECT_EQ( 7286 EXPECT_EQ(
7265 1.f, 7287 1.f,
7266 grand_parent_raw->draw_properties().starting_animation_contents_scale); 7288 grand_parent_raw->draw_properties().starting_animation_contents_scale);
7267 EXPECT_EQ(1.f, 7289 EXPECT_EQ(1.f,
7268 parent_raw->draw_properties().starting_animation_contents_scale); 7290 parent_raw->draw_properties().starting_animation_contents_scale);
7269 EXPECT_EQ(0.f, 7291 EXPECT_EQ(0.f,
7270 child_raw->draw_properties().starting_animation_contents_scale); 7292 child_raw->draw_properties().starting_animation_contents_scale);
7271 EXPECT_EQ( 7293 EXPECT_EQ(
7272 0.f, 7294 0.f,
7273 grand_child_raw->draw_properties().starting_animation_contents_scale); 7295 grand_child_raw->draw_properties().starting_animation_contents_scale);
7274 7296
7275 AddAnimatedTransformToLayerWithPlayer(parent_raw->id(), timeline, 1.0, 7297 AddAnimatedTransformToElementWithPlayer(parent_raw->element_id(), timeline,
7276 TransformOperations(), scale); 7298 1.0, TransformOperations(), scale);
7277 parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; 7299 parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true;
7278 ExecuteCalculateDrawProperties(grand_parent_raw); 7300 ExecuteCalculateDrawProperties(grand_parent_raw);
7279 7301
7280 // |grand_parent|, |parent|, and |child| have scale-affecting animations. 7302 // |grand_parent|, |parent|, and |child| have scale-affecting animations.
7281 EXPECT_EQ( 7303 EXPECT_EQ(
7282 5.f, 7304 5.f,
7283 grand_parent_raw->draw_properties().maximum_animation_contents_scale); 7305 grand_parent_raw->draw_properties().maximum_animation_contents_scale);
7284 EXPECT_EQ(0.f, 7306 EXPECT_EQ(0.f,
7285 parent_raw->draw_properties().maximum_animation_contents_scale); 7307 parent_raw->draw_properties().maximum_animation_contents_scale);
7286 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale); 7308 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale);
7287 EXPECT_EQ( 7309 EXPECT_EQ(
7288 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale); 7310 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
7289 7311
7290 EXPECT_EQ( 7312 EXPECT_EQ(
7291 1.f, 7313 1.f,
7292 grand_parent_raw->draw_properties().starting_animation_contents_scale); 7314 grand_parent_raw->draw_properties().starting_animation_contents_scale);
7293 EXPECT_EQ(0.f, 7315 EXPECT_EQ(0.f,
7294 parent_raw->draw_properties().starting_animation_contents_scale); 7316 parent_raw->draw_properties().starting_animation_contents_scale);
7295 EXPECT_EQ(0.f, 7317 EXPECT_EQ(0.f,
7296 child_raw->draw_properties().starting_animation_contents_scale); 7318 child_raw->draw_properties().starting_animation_contents_scale);
7297 EXPECT_EQ( 7319 EXPECT_EQ(
7298 0.f, 7320 0.f,
7299 grand_child_raw->draw_properties().starting_animation_contents_scale); 7321 grand_child_raw->draw_properties().starting_animation_contents_scale);
7300 7322
7301 AbortAnimationsOnLayerWithPlayer(grand_parent_raw->id(), timeline, 7323 AbortAnimationsOnElementWithPlayer(grand_parent_raw->element_id(), timeline,
7302 TargetProperty::TRANSFORM); 7324 TargetProperty::TRANSFORM);
7303 AbortAnimationsOnLayerWithPlayer(parent_raw->id(), timeline, 7325 AbortAnimationsOnElementWithPlayer(parent_raw->element_id(), timeline,
7304 TargetProperty::TRANSFORM); 7326 TargetProperty::TRANSFORM);
7305 AbortAnimationsOnLayerWithPlayer(child_raw->id(), timeline, 7327 AbortAnimationsOnElementWithPlayer(child_raw->element_id(), timeline,
7306 TargetProperty::TRANSFORM); 7328 TargetProperty::TRANSFORM);
7307 7329
7308 TransformOperations perspective; 7330 TransformOperations perspective;
7309 perspective.AppendPerspective(10.f); 7331 perspective.AppendPerspective(10.f);
7310 7332
7311 AddAnimatedTransformToLayerWithPlayer(child_raw->id(), timeline, 1.0, 7333 AddAnimatedTransformToElementWithPlayer(child_raw->element_id(), timeline,
7312 TransformOperations(), perspective); 7334 1.0, TransformOperations(),
7335 perspective);
7313 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; 7336 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true;
7314 ExecuteCalculateDrawProperties(grand_parent_raw); 7337 ExecuteCalculateDrawProperties(grand_parent_raw);
7315 7338
7316 // |child| has a scale-affecting animation but computing the maximum of this 7339 // |child| has a scale-affecting animation but computing the maximum of this
7317 // animation is not supported. 7340 // animation is not supported.
7318 EXPECT_EQ( 7341 EXPECT_EQ(
7319 0.f, 7342 0.f,
7320 grand_parent_raw->draw_properties().maximum_animation_contents_scale); 7343 grand_parent_raw->draw_properties().maximum_animation_contents_scale);
7321 EXPECT_EQ(0.f, 7344 EXPECT_EQ(0.f,
7322 parent_raw->draw_properties().maximum_animation_contents_scale); 7345 parent_raw->draw_properties().maximum_animation_contents_scale);
7323 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale); 7346 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale);
7324 EXPECT_EQ( 7347 EXPECT_EQ(
7325 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale); 7348 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
7326 7349
7327 EXPECT_EQ( 7350 EXPECT_EQ(
7328 0.f, 7351 0.f,
7329 grand_parent_raw->draw_properties().starting_animation_contents_scale); 7352 grand_parent_raw->draw_properties().starting_animation_contents_scale);
7330 EXPECT_EQ(0.f, 7353 EXPECT_EQ(0.f,
7331 parent_raw->draw_properties().starting_animation_contents_scale); 7354 parent_raw->draw_properties().starting_animation_contents_scale);
7332 EXPECT_EQ(0.f, 7355 EXPECT_EQ(0.f,
7333 child_raw->draw_properties().starting_animation_contents_scale); 7356 child_raw->draw_properties().starting_animation_contents_scale);
7334 EXPECT_EQ( 7357 EXPECT_EQ(
7335 0.f, 7358 0.f,
7336 grand_child_raw->draw_properties().starting_animation_contents_scale); 7359 grand_child_raw->draw_properties().starting_animation_contents_scale);
7337 7360
7338 AbortAnimationsOnLayerWithPlayer(child_raw->id(), timeline, 7361 AbortAnimationsOnElementWithPlayer(child_raw->element_id(), timeline,
7339 TargetProperty::TRANSFORM); 7362 TargetProperty::TRANSFORM);
7340 gfx::Transform scale_matrix; 7363 gfx::Transform scale_matrix;
7341 scale_matrix.Scale(1.f, 2.f); 7364 scale_matrix.Scale(1.f, 2.f);
7342 grand_parent_raw->SetTransform(scale_matrix); 7365 grand_parent_raw->SetTransform(scale_matrix);
7343 parent_raw->SetTransform(scale_matrix); 7366 parent_raw->SetTransform(scale_matrix);
7344 grand_parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; 7367 grand_parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true;
7345 7368
7346 AddAnimatedTransformToLayerWithPlayer(parent_raw->id(), timeline, 1.0, 7369 AddAnimatedTransformToElementWithPlayer(parent_raw->element_id(), timeline,
7347 TransformOperations(), scale); 7370 1.0, TransformOperations(), scale);
7348 ExecuteCalculateDrawProperties(grand_parent_raw); 7371 ExecuteCalculateDrawProperties(grand_parent_raw);
7349 7372
7350 // |grand_parent| and |parent| each have scale 2.f. |parent| has a scale 7373 // |grand_parent| and |parent| each have scale 2.f. |parent| has a scale
7351 // animation with maximum scale 5.f. 7374 // animation with maximum scale 5.f.
7352 EXPECT_EQ( 7375 EXPECT_EQ(
7353 0.f, 7376 0.f,
7354 grand_parent_raw->draw_properties().maximum_animation_contents_scale); 7377 grand_parent_raw->draw_properties().maximum_animation_contents_scale);
7355 EXPECT_EQ(10.f, 7378 EXPECT_EQ(10.f,
7356 parent_raw->draw_properties().maximum_animation_contents_scale); 7379 parent_raw->draw_properties().maximum_animation_contents_scale);
7357 EXPECT_EQ(10.f, 7380 EXPECT_EQ(10.f,
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
7740 std::unique_ptr<LayerImpl> child2 = 7763 std::unique_ptr<LayerImpl> child2 =
7741 LayerImpl::Create(host_impl.active_tree(), 3); 7764 LayerImpl::Create(host_impl.active_tree(), 3);
7742 LayerImpl* child2_layer = child2.get(); 7765 LayerImpl* child2_layer = child2.get();
7743 7766
7744 root->AddChild(std::move(child1)); 7767 root->AddChild(std::move(child1));
7745 root->AddChild(std::move(child2)); 7768 root->AddChild(std::move(child2));
7746 root->test_properties()->force_render_surface = true; 7769 root->test_properties()->force_render_surface = true;
7747 root->SetDrawsContent(true); 7770 root->SetDrawsContent(true);
7748 host_impl.active_tree()->SetRootLayer(std::move(root)); 7771 host_impl.active_tree()->SetRootLayer(std::move(root));
7749 7772
7773 host_impl.active_tree()->SetElementIdsForTesting();
7774
7750 gfx::Transform identity_matrix, scale_transform_child1, 7775 gfx::Transform identity_matrix, scale_transform_child1,
7751 scale_transform_child2; 7776 scale_transform_child2;
7752 scale_transform_child1.Scale(2, 3); 7777 scale_transform_child1.Scale(2, 3);
7753 scale_transform_child2.Scale(4, 5); 7778 scale_transform_child2.Scale(4, 5);
7754 7779
7755 SetLayerPropertiesForTesting(root_layer, identity_matrix, gfx::Point3F(), 7780 SetLayerPropertiesForTesting(root_layer, identity_matrix, gfx::Point3F(),
7756 gfx::PointF(), gfx::Size(1, 1), true, false, 7781 gfx::PointF(), gfx::Size(1, 1), true, false,
7757 true); 7782 true);
7758 SetLayerPropertiesForTesting(child1_layer, scale_transform_child1, 7783 SetLayerPropertiesForTesting(child1_layer, scale_transform_child1,
7759 gfx::Point3F(), gfx::PointF(), gfx::Size(1, 1), 7784 gfx::Point3F(), gfx::PointF(), gfx::Size(1, 1),
(...skipping 10 matching lines...) Expand all
7770 7795
7771 ExecuteCalculateDrawProperties(root_layer); 7796 ExecuteCalculateDrawProperties(root_layer);
7772 7797
7773 TransformOperations scale; 7798 TransformOperations scale;
7774 scale.AppendScale(5.f, 8.f, 3.f); 7799 scale.AppendScale(5.f, 8.f, 3.f);
7775 7800
7776 scoped_refptr<AnimationTimeline> timeline = 7801 scoped_refptr<AnimationTimeline> timeline =
7777 AnimationTimeline::Create(AnimationIdProvider::NextTimelineId()); 7802 AnimationTimeline::Create(AnimationIdProvider::NextTimelineId());
7778 host_impl.animation_host()->AddAnimationTimeline(timeline); 7803 host_impl.animation_host()->AddAnimationTimeline(timeline);
7779 7804
7780 AddAnimatedTransformToLayerWithPlayer(child2_layer->id(), timeline, 1.0,
7781 TransformOperations(), scale);
7782
7783 SetLayerPropertiesForTesting(child2_layer, scale_transform_child2, 7805 SetLayerPropertiesForTesting(child2_layer, scale_transform_child2,
7784 gfx::Point3F(), gfx::PointF(), gfx::Size(1, 1), 7806 gfx::Point3F(), gfx::PointF(), gfx::Size(1, 1),
7785 true, false, false); 7807 true, false, false);
7786 child2_layer->SetDrawsContent(true); 7808 child2_layer->SetDrawsContent(true);
7787 7809
7810 AddAnimatedTransformToElementWithPlayer(child2_layer->element_id(), timeline,
7811 1.0, TransformOperations(), scale);
7812
7788 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true; 7813 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true;
7789 ExecuteCalculateDrawProperties(root_layer); 7814 ExecuteCalculateDrawProperties(root_layer);
7790 7815
7791 EXPECT_FLOAT_EQ(1.f, root_layer->GetIdealContentsScale()); 7816 EXPECT_FLOAT_EQ(1.f, root_layer->GetIdealContentsScale());
7792 EXPECT_FLOAT_EQ(3.f, child1_layer->GetIdealContentsScale()); 7817 EXPECT_FLOAT_EQ(3.f, child1_layer->GetIdealContentsScale());
7793 EXPECT_FLOAT_EQ(3.f, child1_layer->mask_layer()->GetIdealContentsScale()); 7818 EXPECT_FLOAT_EQ(3.f, child1_layer->mask_layer()->GetIdealContentsScale());
7794 EXPECT_FLOAT_EQ(5.f, child2_layer->GetIdealContentsScale()); 7819 EXPECT_FLOAT_EQ(5.f, child2_layer->GetIdealContentsScale());
7795 7820
7796 EXPECT_FLOAT_EQ( 7821 EXPECT_FLOAT_EQ(
7797 0.f, root_layer->draw_properties().maximum_animation_contents_scale); 7822 0.f, root_layer->draw_properties().maximum_animation_contents_scale);
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
8045 TEST_F(LayerTreeHostCommonTest, VisibleContentRectForAnimatedLayer) { 8070 TEST_F(LayerTreeHostCommonTest, VisibleContentRectForAnimatedLayer) {
8046 const gfx::Transform identity_matrix; 8071 const gfx::Transform identity_matrix;
8047 scoped_refptr<Layer> root = Layer::Create(); 8072 scoped_refptr<Layer> root = Layer::Create();
8048 scoped_refptr<LayerWithForcedDrawsContent> animated = 8073 scoped_refptr<LayerWithForcedDrawsContent> animated =
8049 make_scoped_refptr(new LayerWithForcedDrawsContent()); 8074 make_scoped_refptr(new LayerWithForcedDrawsContent());
8050 8075
8051 root->AddChild(animated); 8076 root->AddChild(animated);
8052 8077
8053 host()->SetRootLayer(root); 8078 host()->SetRootLayer(root);
8054 8079
8080 host()->SetElementIdsForTesting();
8081
8055 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), 8082 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(),
8056 gfx::PointF(), gfx::Size(100, 100), true, false); 8083 gfx::PointF(), gfx::Size(100, 100), true, false);
8057 SetLayerPropertiesForTesting(animated.get(), identity_matrix, gfx::Point3F(), 8084 SetLayerPropertiesForTesting(animated.get(), identity_matrix, gfx::Point3F(),
8058 gfx::PointF(), gfx::Size(20, 20), true, false); 8085 gfx::PointF(), gfx::Size(20, 20), true, false);
8059 8086
8060 root->SetMasksToBounds(true); 8087 root->SetMasksToBounds(true);
8061 root->SetForceRenderSurfaceForTesting(true); 8088 root->SetForceRenderSurfaceForTesting(true);
8062 animated->SetOpacity(0.f); 8089 animated->SetOpacity(0.f);
8063 8090
8064 AddOpacityTransitionToLayerWithPlayer(animated->id(), timeline(), 10.0, 0.f, 8091 SetElementIdsForTesting();
ajuma 2016/06/01 23:53:42 This adds ids to the the LTHI's active tree, right
Ian Vollick 2016/06/02 19:03:11 Nope, removed.
8065 1.f, false); 8092 AddOpacityTransitionToElementWithPlayer(animated->element_id(), timeline(),
8093 10.0, 0.f, 1.f, false);
8066 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); 8094 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get());
8067 8095
8068 EXPECT_FALSE(animated->visible_layer_rect_for_testing().IsEmpty()); 8096 EXPECT_FALSE(animated->visible_layer_rect_for_testing().IsEmpty());
8069 } 8097 }
8070 8098
8071 TEST_F(LayerTreeHostCommonTest, 8099 TEST_F(LayerTreeHostCommonTest,
8072 VisibleContentRectForAnimatedLayerWithSingularTransform) { 8100 VisibleContentRectForAnimatedLayerWithSingularTransform) {
8073 const gfx::Transform identity_matrix; 8101 const gfx::Transform identity_matrix;
8074 scoped_refptr<Layer> root = Layer::Create(); 8102 scoped_refptr<Layer> root = Layer::Create();
8075 scoped_refptr<Layer> clip = Layer::Create(); 8103 scoped_refptr<Layer> clip = Layer::Create();
8076 scoped_refptr<LayerWithForcedDrawsContent> animated = 8104 scoped_refptr<LayerWithForcedDrawsContent> animated =
8077 make_scoped_refptr(new LayerWithForcedDrawsContent()); 8105 make_scoped_refptr(new LayerWithForcedDrawsContent());
8078 scoped_refptr<LayerWithForcedDrawsContent> surface = 8106 scoped_refptr<LayerWithForcedDrawsContent> surface =
8079 make_scoped_refptr(new LayerWithForcedDrawsContent()); 8107 make_scoped_refptr(new LayerWithForcedDrawsContent());
8080 scoped_refptr<LayerWithForcedDrawsContent> descendant_of_animation = 8108 scoped_refptr<LayerWithForcedDrawsContent> descendant_of_animation =
8081 make_scoped_refptr(new LayerWithForcedDrawsContent()); 8109 make_scoped_refptr(new LayerWithForcedDrawsContent());
8082 8110
8083 root->AddChild(clip); 8111 root->AddChild(clip);
8084 clip->AddChild(animated); 8112 clip->AddChild(animated);
8085 animated->AddChild(surface); 8113 animated->AddChild(surface);
8086 surface->AddChild(descendant_of_animation); 8114 surface->AddChild(descendant_of_animation);
8087 8115
8088 clip->SetMasksToBounds(true); 8116 clip->SetMasksToBounds(true);
8089 surface->SetForceRenderSurfaceForTesting(true); 8117 surface->SetForceRenderSurfaceForTesting(true);
8090 8118
8091 host()->SetRootLayer(root); 8119 host()->SetRootLayer(root);
8092 8120
8121 host()->SetElementIdsForTesting();
8122
8093 gfx::Transform uninvertible_matrix; 8123 gfx::Transform uninvertible_matrix;
8094 uninvertible_matrix.Scale3d(6.f, 6.f, 0.f); 8124 uninvertible_matrix.Scale3d(6.f, 6.f, 0.f);
8095 8125
8096 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), 8126 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(),
8097 gfx::PointF(), gfx::Size(100, 100), true, false); 8127 gfx::PointF(), gfx::Size(100, 100), true, false);
8098 SetLayerPropertiesForTesting(clip.get(), identity_matrix, gfx::Point3F(), 8128 SetLayerPropertiesForTesting(clip.get(), identity_matrix, gfx::Point3F(),
8099 gfx::PointF(), gfx::Size(10, 10), true, false); 8129 gfx::PointF(), gfx::Size(10, 10), true, false);
8100 SetLayerPropertiesForTesting(animated.get(), uninvertible_matrix, 8130 SetLayerPropertiesForTesting(animated.get(), uninvertible_matrix,
8101 gfx::Point3F(), gfx::PointF(), 8131 gfx::Point3F(), gfx::PointF(),
8102 gfx::Size(120, 120), true, false); 8132 gfx::Size(120, 120), true, false);
8103 SetLayerPropertiesForTesting(surface.get(), identity_matrix, gfx::Point3F(), 8133 SetLayerPropertiesForTesting(surface.get(), identity_matrix, gfx::Point3F(),
8104 gfx::PointF(), gfx::Size(100, 100), true, false); 8134 gfx::PointF(), gfx::Size(100, 100), true, false);
8105 SetLayerPropertiesForTesting(descendant_of_animation.get(), identity_matrix, 8135 SetLayerPropertiesForTesting(descendant_of_animation.get(), identity_matrix,
8106 gfx::Point3F(), gfx::PointF(), 8136 gfx::Point3F(), gfx::PointF(),
8107 gfx::Size(200, 200), true, false); 8137 gfx::Size(200, 200), true, false);
8108 8138
8109 TransformOperations start_transform_operations; 8139 TransformOperations start_transform_operations;
8110 start_transform_operations.AppendMatrix(uninvertible_matrix); 8140 start_transform_operations.AppendMatrix(uninvertible_matrix);
8111 TransformOperations end_transform_operations; 8141 TransformOperations end_transform_operations;
8112 8142
8113 AddAnimatedTransformToLayerWithPlayer(animated->id(), timeline(), 10.0, 8143 SetElementIdsForTesting();
8114 start_transform_operations, 8144 AddAnimatedTransformToElementWithPlayer(animated->element_id(), timeline(),
8115 end_transform_operations); 8145 10.0, start_transform_operations,
8146 end_transform_operations);
8116 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); 8147 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get());
8117 8148
8118 // The animated layer has a singular transform and maps to a non-empty rect in 8149 // The animated layer has a singular transform and maps to a non-empty rect in
8119 // clipped target space, so is treated as fully visible. 8150 // clipped target space, so is treated as fully visible.
8120 EXPECT_EQ(gfx::Rect(120, 120), animated->visible_layer_rect_for_testing()); 8151 EXPECT_EQ(gfx::Rect(120, 120), animated->visible_layer_rect_for_testing());
8121 8152
8122 // The singular transform on |animated| is flattened when inherited by 8153 // The singular transform on |animated| is flattened when inherited by
8123 // |surface|, and this happens to make it invertible. 8154 // |surface|, and this happens to make it invertible.
8124 EXPECT_EQ(gfx::Rect(2, 2), surface->visible_layer_rect_for_testing()); 8155 EXPECT_EQ(gfx::Rect(2, 2), surface->visible_layer_rect_for_testing());
8125 EXPECT_EQ(gfx::Rect(2, 2), 8156 EXPECT_EQ(gfx::Rect(2, 2),
(...skipping 26 matching lines...) Expand all
8152 LayerImpl* grandchild = AddChild<LayerImpl>(child); 8183 LayerImpl* grandchild = AddChild<LayerImpl>(child);
8153 8184
8154 gfx::Transform identity_transform; 8185 gfx::Transform identity_transform;
8155 SetLayerPropertiesForTesting(root, identity_transform, gfx::Point3F(), 8186 SetLayerPropertiesForTesting(root, identity_transform, gfx::Point3F(),
8156 gfx::PointF(), gfx::Size(50, 50), true, false); 8187 gfx::PointF(), gfx::Size(50, 50), true, false);
8157 SetLayerPropertiesForTesting(child, identity_transform, gfx::Point3F(), 8188 SetLayerPropertiesForTesting(child, identity_transform, gfx::Point3F(),
8158 gfx::PointF(), gfx::Size(50, 50), true, false); 8189 gfx::PointF(), gfx::Size(50, 50), true, false);
8159 SetLayerPropertiesForTesting(grandchild, identity_transform, gfx::Point3F(), 8190 SetLayerPropertiesForTesting(grandchild, identity_transform, gfx::Point3F(),
8160 gfx::PointF(), gfx::Size(50, 50), true, false); 8191 gfx::PointF(), gfx::Size(50, 50), true, false);
8161 8192
8162 AddAnimatedFilterToLayerWithPlayer(child->id(), timeline_impl(), 10.0, 0.1f, 8193 SetElementIdsForTesting();
8163 0.2f); 8194 AddAnimatedFilterToElementWithPlayer(child->element_id(), timeline_impl(),
8195 10.0, 0.1f, 0.2f);
8164 ExecuteCalculateDrawProperties(root); 8196 ExecuteCalculateDrawProperties(root);
8165 8197
8166 EXPECT_TRUE(root->has_render_surface()); 8198 EXPECT_TRUE(root->has_render_surface());
8167 EXPECT_TRUE(child->has_render_surface()); 8199 EXPECT_TRUE(child->has_render_surface());
8168 EXPECT_FALSE(grandchild->has_render_surface()); 8200 EXPECT_FALSE(grandchild->has_render_surface());
8169 8201
8170 EXPECT_TRUE(root->filters().IsEmpty()); 8202 EXPECT_TRUE(root->filters().IsEmpty());
8171 EXPECT_TRUE(child->filters().IsEmpty()); 8203 EXPECT_TRUE(child->filters().IsEmpty());
8172 EXPECT_TRUE(grandchild->filters().IsEmpty()); 8204 EXPECT_TRUE(grandchild->filters().IsEmpty());
8173 8205
(...skipping 10 matching lines...) Expand all
8184 LayerImpl* grandchild = AddChild<LayerImpl>(child); 8216 LayerImpl* grandchild = AddChild<LayerImpl>(child);
8185 8217
8186 gfx::Transform identity_transform; 8218 gfx::Transform identity_transform;
8187 SetLayerPropertiesForTesting(root, identity_transform, gfx::Point3F(), 8219 SetLayerPropertiesForTesting(root, identity_transform, gfx::Point3F(),
8188 gfx::PointF(), gfx::Size(50, 50), true, false); 8220 gfx::PointF(), gfx::Size(50, 50), true, false);
8189 SetLayerPropertiesForTesting(child, identity_transform, gfx::Point3F(), 8221 SetLayerPropertiesForTesting(child, identity_transform, gfx::Point3F(),
8190 gfx::PointF(), gfx::Size(50, 50), true, false); 8222 gfx::PointF(), gfx::Size(50, 50), true, false);
8191 SetLayerPropertiesForTesting(grandchild, identity_transform, gfx::Point3F(), 8223 SetLayerPropertiesForTesting(grandchild, identity_transform, gfx::Point3F(),
8192 gfx::PointF(), gfx::Size(50, 50), true, false); 8224 gfx::PointF(), gfx::Size(50, 50), true, false);
8193 8225
8226 SetElementIdsForTesting();
8227
8194 std::unique_ptr<KeyframedFilterAnimationCurve> curve( 8228 std::unique_ptr<KeyframedFilterAnimationCurve> curve(
8195 KeyframedFilterAnimationCurve::Create()); 8229 KeyframedFilterAnimationCurve::Create());
8196 FilterOperations start_filters; 8230 FilterOperations start_filters;
8197 start_filters.Append(FilterOperation::CreateBrightnessFilter(0.1f)); 8231 start_filters.Append(FilterOperation::CreateBrightnessFilter(0.1f));
8198 FilterOperations end_filters; 8232 FilterOperations end_filters;
8199 end_filters.Append(FilterOperation::CreateBrightnessFilter(0.3f)); 8233 end_filters.Append(FilterOperation::CreateBrightnessFilter(0.3f));
8200 curve->AddKeyframe( 8234 curve->AddKeyframe(
8201 FilterKeyframe::Create(base::TimeDelta(), start_filters, nullptr)); 8235 FilterKeyframe::Create(base::TimeDelta(), start_filters, nullptr));
8202 curve->AddKeyframe(FilterKeyframe::Create( 8236 curve->AddKeyframe(FilterKeyframe::Create(
8203 base::TimeDelta::FromMilliseconds(100), end_filters, nullptr)); 8237 base::TimeDelta::FromMilliseconds(100), end_filters, nullptr));
8204 std::unique_ptr<Animation> animation = 8238 std::unique_ptr<Animation> animation =
8205 Animation::Create(std::move(curve), 0, 1, TargetProperty::FILTER); 8239 Animation::Create(std::move(curve), 0, 1, TargetProperty::FILTER);
8206 animation->set_fill_mode(Animation::FillMode::NONE); 8240 animation->set_fill_mode(Animation::FillMode::NONE);
8207 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000)); 8241 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000));
8208 8242
8209 AddAnimationToLayerWithPlayer(child->id(), timeline_impl(), 8243 AddAnimationToElementWithPlayer(child->element_id(), timeline_impl(),
8210 std::move(animation)); 8244 std::move(animation));
8211 ExecuteCalculateDrawProperties(root); 8245 ExecuteCalculateDrawProperties(root);
8212 8246
8213 EXPECT_TRUE(root->has_render_surface()); 8247 EXPECT_TRUE(root->has_render_surface());
8214 EXPECT_TRUE(child->has_render_surface()); 8248 EXPECT_TRUE(child->has_render_surface());
8215 EXPECT_FALSE(grandchild->has_render_surface()); 8249 EXPECT_FALSE(grandchild->has_render_surface());
8216 8250
8217 EXPECT_TRUE(root->filters().IsEmpty()); 8251 EXPECT_TRUE(root->filters().IsEmpty());
8218 EXPECT_TRUE(child->filters().IsEmpty()); 8252 EXPECT_TRUE(child->filters().IsEmpty());
8219 EXPECT_TRUE(grandchild->filters().IsEmpty()); 8253 EXPECT_TRUE(grandchild->filters().IsEmpty());
8220 8254
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
8562 gfx::PointF(), gfx::Size(10, 10), true, false); 8596 gfx::PointF(), gfx::Size(10, 10), true, false);
8563 SetLayerPropertiesForTesting(greatgrandchild.get(), identity, gfx::Point3F(), 8597 SetLayerPropertiesForTesting(greatgrandchild.get(), identity, gfx::Point3F(),
8564 gfx::PointF(), gfx::Size(10, 10), true, false); 8598 gfx::PointF(), gfx::Size(10, 10), true, false);
8565 8599
8566 root->AddChild(child); 8600 root->AddChild(child);
8567 child->AddChild(grandchild); 8601 child->AddChild(grandchild);
8568 grandchild->AddChild(greatgrandchild); 8602 grandchild->AddChild(greatgrandchild);
8569 8603
8570 host()->SetRootLayer(root); 8604 host()->SetRootLayer(root);
8571 8605
8606 host()->SetElementIdsForTesting();
8607
8572 // Check the non-skipped case. 8608 // Check the non-skipped case.
8573 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); 8609 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get());
8574 EXPECT_EQ(gfx::Rect(10, 10), grandchild->visible_layer_rect_for_testing()); 8610 EXPECT_EQ(gfx::Rect(10, 10), grandchild->visible_layer_rect_for_testing());
8575 8611
8576 // Now we will reset the visible rect from property trees for the grandchild, 8612 // Now we will reset the visible rect from property trees for the grandchild,
8577 // and we will configure |child| in several ways that should force the subtree 8613 // and we will configure |child| in several ways that should force the subtree
8578 // to be skipped. The visible content rect for |grandchild| should, therefore, 8614 // to be skipped. The visible content rect for |grandchild| should, therefore,
8579 // remain empty. 8615 // remain empty.
8580 grandchild->set_visible_layer_rect(gfx::Rect()); 8616 grandchild->set_visible_layer_rect(gfx::Rect());
8581 gfx::Transform singular; 8617 gfx::Transform singular;
8582 singular.matrix().set(0, 0, 0); 8618 singular.matrix().set(0, 0, 0);
8583 8619
8584 child->SetTransform(singular); 8620 child->SetTransform(singular);
8585 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); 8621 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get());
8586 EXPECT_EQ(gfx::Rect(0, 0), grandchild->visible_layer_rect_for_testing()); 8622 EXPECT_EQ(gfx::Rect(0, 0), grandchild->visible_layer_rect_for_testing());
8587 child->SetTransform(identity); 8623 child->SetTransform(identity);
8588 8624
8589 child->SetHideLayerAndSubtree(true); 8625 child->SetHideLayerAndSubtree(true);
8590 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); 8626 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get());
8591 EXPECT_EQ(gfx::Rect(0, 0), grandchild->visible_layer_rect_for_testing()); 8627 EXPECT_EQ(gfx::Rect(0, 0), grandchild->visible_layer_rect_for_testing());
8592 child->SetHideLayerAndSubtree(false); 8628 child->SetHideLayerAndSubtree(false);
8593 8629
8594 gfx::Transform zero_z_scale; 8630 gfx::Transform zero_z_scale;
8595 zero_z_scale.Scale3d(1, 1, 0); 8631 zero_z_scale.Scale3d(1, 1, 0);
8596 child->SetTransform(zero_z_scale); 8632 child->SetTransform(zero_z_scale);
8597 8633
8634 SetElementIdsForTesting();
ajuma 2016/06/01 23:53:42 Is this needed? (this test only has Layers, not La
Ian Vollick 2016/06/02 19:03:11 Whoops, removed. I clearly added the host()->SetEl
8635
8598 // Add a transform animation with a start delay. Now, even though |child| has 8636 // Add a transform animation with a start delay. Now, even though |child| has
8599 // a singular transform, the subtree should still get processed. 8637 // a singular transform, the subtree should still get processed.
8600 int animation_id = 0; 8638 int animation_id = 0;
8601 std::unique_ptr<Animation> animation = Animation::Create( 8639 std::unique_ptr<Animation> animation = Animation::Create(
8602 std::unique_ptr<AnimationCurve>(new FakeTransformTransition(1.0)), 8640 std::unique_ptr<AnimationCurve>(new FakeTransformTransition(1.0)),
8603 animation_id, 1, TargetProperty::TRANSFORM); 8641 animation_id, 1, TargetProperty::TRANSFORM);
8604 animation->set_fill_mode(Animation::FillMode::NONE); 8642 animation->set_fill_mode(Animation::FillMode::NONE);
8605 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000)); 8643 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000));
8606 AddAnimationToLayerWithPlayer(child->id(), timeline(), std::move(animation)); 8644 AddAnimationToElementWithPlayer(child->element_id(), timeline(),
8645 std::move(animation));
8607 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); 8646 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get());
8608 EXPECT_EQ(gfx::Rect(10, 10), grandchild->visible_layer_rect_for_testing()); 8647 EXPECT_EQ(gfx::Rect(10, 10), grandchild->visible_layer_rect_for_testing());
8609 grandchild->set_visible_layer_rect(gfx::Rect()); 8648 grandchild->set_visible_layer_rect(gfx::Rect());
8610 8649
8611 RemoveAnimationFromLayerWithExistingPlayer(child->id(), timeline(), 8650 RemoveAnimationFromElementWithExistingPlayer(child->element_id(), timeline(),
8612 animation_id); 8651 animation_id);
8613 child->SetTransform(identity); 8652 child->SetTransform(identity);
8614 child->SetOpacity(0.f); 8653 child->SetOpacity(0.f);
8615 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); 8654 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get());
8616 EXPECT_EQ(gfx::Rect(0, 0), grandchild->visible_layer_rect_for_testing()); 8655 EXPECT_EQ(gfx::Rect(0, 0), grandchild->visible_layer_rect_for_testing());
8617 8656
8618 // Now, even though child has zero opacity, we will configure |grandchild| and 8657 // Now, even though child has zero opacity, we will configure |grandchild| and
8619 // |greatgrandchild| in several ways that should force the subtree to be 8658 // |greatgrandchild| in several ways that should force the subtree to be
8620 // processed anyhow. 8659 // processed anyhow.
8621 grandchild->RequestCopyOfOutput( 8660 grandchild->RequestCopyOfOutput(
8622 CopyOutputRequest::CreateBitmapRequest(base::Bind(&CopyOutputCallback))); 8661 CopyOutputRequest::CreateBitmapRequest(base::Bind(&CopyOutputCallback)));
8623 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); 8662 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get());
8624 EXPECT_EQ(gfx::Rect(10, 10), grandchild->visible_layer_rect_for_testing()); 8663 EXPECT_EQ(gfx::Rect(10, 10), grandchild->visible_layer_rect_for_testing());
8625 greatgrandchild->set_visible_layer_rect(gfx::Rect()); 8664 greatgrandchild->set_visible_layer_rect(gfx::Rect());
8626 8665
8627 // Add an opacity animation with a start delay. 8666 // Add an opacity animation with a start delay.
8628 animation_id = 1; 8667 animation_id = 1;
8629 animation = Animation::Create( 8668 animation = Animation::Create(
8630 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)), 8669 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)),
8631 animation_id, 1, TargetProperty::OPACITY); 8670 animation_id, 1, TargetProperty::OPACITY);
8632 animation->set_fill_mode(Animation::FillMode::NONE); 8671 animation->set_fill_mode(Animation::FillMode::NONE);
8633 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000)); 8672 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000));
8634 AddAnimationToLayerWithExistingPlayer(child->id(), timeline(), 8673 AddAnimationToElementWithExistingPlayer(child->element_id(), timeline(),
8635 std::move(animation)); 8674 std::move(animation));
8636 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); 8675 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get());
8637 EXPECT_EQ(gfx::Rect(10, 10), grandchild->visible_layer_rect_for_testing()); 8676 EXPECT_EQ(gfx::Rect(10, 10), grandchild->visible_layer_rect_for_testing());
8638 } 8677 }
8639 8678
8640 TEST_F(LayerTreeHostCommonTest, SkippingLayerImpl) { 8679 TEST_F(LayerTreeHostCommonTest, SkippingLayerImpl) {
8641 FakeImplTaskRunnerProvider task_runner_provider; 8680 FakeImplTaskRunnerProvider task_runner_provider;
8642 TestSharedBitmapManager shared_bitmap_manager; 8681 TestSharedBitmapManager shared_bitmap_manager;
8643 TestTaskGraphRunner task_graph_runner; 8682 TestTaskGraphRunner task_graph_runner;
8644 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, 8683 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager,
8645 &task_graph_runner); 8684 &task_graph_runner);
(...skipping 24 matching lines...) Expand all
8670 false); 8709 false);
8671 8710
8672 LayerImpl* root_ptr = root.get(); 8711 LayerImpl* root_ptr = root.get();
8673 LayerImpl* child_ptr = child.get(); 8712 LayerImpl* child_ptr = child.get();
8674 LayerImpl* grandchild_ptr = grandchild.get(); 8713 LayerImpl* grandchild_ptr = grandchild.get();
8675 8714
8676 child->AddChild(std::move(grandchild)); 8715 child->AddChild(std::move(grandchild));
8677 root->AddChild(std::move(child)); 8716 root->AddChild(std::move(child));
8678 host_impl.active_tree()->SetRootLayer(std::move(root)); 8717 host_impl.active_tree()->SetRootLayer(std::move(root));
8679 8718
8719 host_impl.active_tree()->SetElementIdsForTesting();
8720
8680 // Check the non-skipped case. 8721 // Check the non-skipped case.
8681 // ExecuteCalculateDrawPropertiesWithPropertyTrees(root_ptr); 8722 // ExecuteCalculateDrawPropertiesWithPropertyTrees(root_ptr);
8682 // EXPECT_EQ(gfx::Rect(10, 10), grandchild_ptr->visible_layer_rect()); 8723 // EXPECT_EQ(gfx::Rect(10, 10), grandchild_ptr->visible_layer_rect());
8683 8724
8684 // Now we will reset the visible rect from property trees for the grandchild, 8725 // Now we will reset the visible rect from property trees for the grandchild,
8685 // and we will configure |child| in several ways that should force the subtree 8726 // and we will configure |child| in several ways that should force the subtree
8686 // to be skipped. The visible content rect for |grandchild| should, therefore, 8727 // to be skipped. The visible content rect for |grandchild| should, therefore,
8687 // remain empty. 8728 // remain empty.
8688 grandchild_ptr->set_visible_layer_rect(gfx::Rect()); 8729 grandchild_ptr->set_visible_layer_rect(gfx::Rect());
8689 8730
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
8765 TransformOperations operation; 8806 TransformOperations operation;
8766 operation.AppendMatrix(transform); 8807 operation.AppendMatrix(transform);
8767 curve->AddKeyframe( 8808 curve->AddKeyframe(
8768 TransformKeyframe::Create(base::TimeDelta(), start, nullptr)); 8809 TransformKeyframe::Create(base::TimeDelta(), start, nullptr));
8769 curve->AddKeyframe(TransformKeyframe::Create( 8810 curve->AddKeyframe(TransformKeyframe::Create(
8770 base::TimeDelta::FromSecondsD(1.0), operation, nullptr)); 8811 base::TimeDelta::FromSecondsD(1.0), operation, nullptr));
8771 std::unique_ptr<Animation> transform_animation( 8812 std::unique_ptr<Animation> transform_animation(
8772 Animation::Create(std::move(curve), 3, 3, TargetProperty::TRANSFORM)); 8813 Animation::Create(std::move(curve), 3, 3, TargetProperty::TRANSFORM));
8773 scoped_refptr<AnimationPlayer> player(AnimationPlayer::Create(1)); 8814 scoped_refptr<AnimationPlayer> player(AnimationPlayer::Create(1));
8774 host_impl.active_tree()->animation_host()->RegisterPlayerForElement( 8815 host_impl.active_tree()->animation_host()->RegisterPlayerForElement(
8775 root_ptr->id(), player.get()); 8816 root_ptr->element_id(), player.get());
8776 host_impl.active_tree() 8817 host_impl.active_tree()
8777 ->animation_host() 8818 ->animation_host()
8778 ->GetElementAnimationsForElementId(root_ptr->id()) 8819 ->GetElementAnimationsForElementId(root_ptr->element_id())
8779 ->AddAnimation(std::move(transform_animation)); 8820 ->AddAnimation(std::move(transform_animation));
8780 grandchild_ptr->set_visible_layer_rect(gfx::Rect()); 8821 grandchild_ptr->set_visible_layer_rect(gfx::Rect());
8781 child_ptr->SetScrollClipLayer(root_ptr->id()); 8822 child_ptr->SetScrollClipLayer(root_ptr->id());
8782 root_ptr->SetTransform(singular); 8823 root_ptr->SetTransform(singular);
8783 child_ptr->SetTransform(singular); 8824 child_ptr->SetTransform(singular);
8784 root_ptr->layer_tree_impl()->property_trees()->needs_rebuild = true; 8825 root_ptr->layer_tree_impl()->property_trees()->needs_rebuild = true;
8785 ExecuteCalculateDrawPropertiesWithPropertyTrees(root_ptr); 8826 ExecuteCalculateDrawPropertiesWithPropertyTrees(root_ptr);
8786 EXPECT_EQ(gfx::Rect(0, 0), grandchild_ptr->visible_layer_rect()); 8827 EXPECT_EQ(gfx::Rect(0, 0), grandchild_ptr->visible_layer_rect());
8787 8828
8788 host_impl.active_tree()->animation_host()->UnregisterPlayerForElement( 8829 host_impl.active_tree()->animation_host()->UnregisterPlayerForElement(
8789 root_ptr->id(), player.get()); 8830 root_ptr->element_id(), player.get());
8790 } 8831 }
8791 8832
8792 TEST_F(LayerTreeHostCommonTest, LayerSkippingInSubtreeOfSingularTransform) { 8833 TEST_F(LayerTreeHostCommonTest, LayerSkippingInSubtreeOfSingularTransform) {
8793 LayerImpl* root = root_layer(); 8834 LayerImpl* root = root_layer();
8794 LayerImpl* child = AddChild<LayerImpl>(root); 8835 LayerImpl* child = AddChild<LayerImpl>(root);
8795 LayerImpl* grand_child = AddChild<LayerImpl>(child); 8836 LayerImpl* grand_child = AddChild<LayerImpl>(child);
8796 8837
8797 gfx::Transform identity; 8838 gfx::Transform identity;
8798 SetLayerPropertiesForTesting(root, identity, gfx::Point3F(), gfx::PointF(), 8839 SetLayerPropertiesForTesting(root, identity, gfx::Point3F(), gfx::PointF(),
8799 gfx::Size(10, 10), true, false, true); 8840 gfx::Size(10, 10), true, false, true);
8800 SetLayerPropertiesForTesting(child, identity, gfx::Point3F(), gfx::PointF(), 8841 SetLayerPropertiesForTesting(child, identity, gfx::Point3F(), gfx::PointF(),
8801 gfx::Size(10, 10), true, false, false); 8842 gfx::Size(10, 10), true, false, false);
8802 SetLayerPropertiesForTesting(grand_child, identity, gfx::Point3F(), 8843 SetLayerPropertiesForTesting(grand_child, identity, gfx::Point3F(),
8803 gfx::PointF(), gfx::Size(10, 10), true, false, 8844 gfx::PointF(), gfx::Size(10, 10), true, false,
8804 false); 8845 false);
8846 SetElementIdsForTesting();
8805 8847
8806 gfx::Transform singular; 8848 gfx::Transform singular;
8807 singular.matrix().set(0, 0, 0); 8849 singular.matrix().set(0, 0, 0);
8808 singular.matrix().set(0, 1, 1); 8850 singular.matrix().set(0, 1, 1);
8809 8851
8810 child->SetTransform(singular); 8852 child->SetTransform(singular);
8811 child->SetDrawsContent(true); 8853 child->SetDrawsContent(true);
8812 grand_child->SetDrawsContent(true); 8854 grand_child->SetDrawsContent(true);
8813 8855
8814 std::unique_ptr<KeyframedTransformAnimationCurve> curve( 8856 std::unique_ptr<KeyframedTransformAnimationCurve> curve(
8815 KeyframedTransformAnimationCurve::Create()); 8857 KeyframedTransformAnimationCurve::Create());
8816 TransformOperations start; 8858 TransformOperations start;
8817 start.AppendTranslate(1.f, 2.f, 3.f); 8859 start.AppendTranslate(1.f, 2.f, 3.f);
8818 gfx::Transform transform; 8860 gfx::Transform transform;
8819 transform.Scale3d(1.0, 2.0, 3.0); 8861 transform.Scale3d(1.0, 2.0, 3.0);
8820 TransformOperations operation; 8862 TransformOperations operation;
8821 operation.AppendMatrix(transform); 8863 operation.AppendMatrix(transform);
8822 curve->AddKeyframe( 8864 curve->AddKeyframe(
8823 TransformKeyframe::Create(base::TimeDelta(), start, nullptr)); 8865 TransformKeyframe::Create(base::TimeDelta(), start, nullptr));
8824 curve->AddKeyframe(TransformKeyframe::Create( 8866 curve->AddKeyframe(TransformKeyframe::Create(
8825 base::TimeDelta::FromSecondsD(1.0), operation, nullptr)); 8867 base::TimeDelta::FromSecondsD(1.0), operation, nullptr));
8826 std::unique_ptr<Animation> transform_animation( 8868 std::unique_ptr<Animation> transform_animation(
8827 Animation::Create(std::move(curve), 3, 3, TargetProperty::TRANSFORM)); 8869 Animation::Create(std::move(curve), 3, 3, TargetProperty::TRANSFORM));
8828 scoped_refptr<AnimationPlayer> player(AnimationPlayer::Create(1)); 8870 scoped_refptr<AnimationPlayer> player(AnimationPlayer::Create(1));
8829 host_impl()->active_tree()->animation_host()->RegisterPlayerForElement( 8871 host_impl()->active_tree()->animation_host()->RegisterPlayerForElement(
8830 grand_child->id(), player.get()); 8872 grand_child->element_id(), player.get());
8831 host_impl() 8873 host_impl()
8832 ->active_tree() 8874 ->active_tree()
8833 ->animation_host() 8875 ->animation_host()
8834 ->GetElementAnimationsForElementId(grand_child->id()) 8876 ->GetElementAnimationsForElementId(grand_child->element_id())
8835 ->AddAnimation(std::move(transform_animation)); 8877 ->AddAnimation(std::move(transform_animation));
8836 8878
8837 ExecuteCalculateDrawProperties(root); 8879 ExecuteCalculateDrawProperties(root);
8838 EXPECT_EQ(gfx::Rect(0, 0), grand_child->visible_layer_rect()); 8880 EXPECT_EQ(gfx::Rect(0, 0), grand_child->visible_layer_rect());
8839 EXPECT_EQ(gfx::Rect(0, 0), child->visible_layer_rect()); 8881 EXPECT_EQ(gfx::Rect(0, 0), child->visible_layer_rect());
8840 8882
8841 host_impl()->active_tree()->animation_host()->UnregisterPlayerForElement( 8883 host_impl()->active_tree()->animation_host()->UnregisterPlayerForElement(
8842 grand_child->id(), player.get()); 8884 grand_child->element_id(), player.get());
8843 } 8885 }
8844 8886
8845 TEST_F(LayerTreeHostCommonTest, SkippingPendingLayerImpl) { 8887 TEST_F(LayerTreeHostCommonTest, SkippingPendingLayerImpl) {
8846 FakeImplTaskRunnerProvider task_runner_provider; 8888 FakeImplTaskRunnerProvider task_runner_provider;
8847 TestSharedBitmapManager shared_bitmap_manager; 8889 TestSharedBitmapManager shared_bitmap_manager;
8848 TestTaskGraphRunner task_graph_runner; 8890 TestTaskGraphRunner task_graph_runner;
8849 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager, 8891 FakeLayerTreeHostImpl host_impl(&task_runner_provider, &shared_bitmap_manager,
8850 &task_graph_runner); 8892 &task_graph_runner);
8851 8893
8852 gfx::Transform identity; 8894 gfx::Transform identity;
(...skipping 22 matching lines...) Expand all
8875 gfx::PointF(), gfx::Size(10, 10), true, false, 8917 gfx::PointF(), gfx::Size(10, 10), true, false,
8876 false); 8918 false);
8877 8919
8878 LayerImpl* root_ptr = root.get(); 8920 LayerImpl* root_ptr = root.get();
8879 LayerImpl* grandchild_ptr = grandchild.get(); 8921 LayerImpl* grandchild_ptr = grandchild.get();
8880 8922
8881 child->AddChild(std::move(grandchild)); 8923 child->AddChild(std::move(grandchild));
8882 root->AddChild(std::move(child)); 8924 root->AddChild(std::move(child));
8883 8925
8884 host_impl.pending_tree()->SetRootLayer(std::move(root)); 8926 host_impl.pending_tree()->SetRootLayer(std::move(root));
8927 host_impl.pending_tree()->SetElementIdsForTesting();
8885 8928
8886 // Check the non-skipped case. 8929 // Check the non-skipped case.
8887 ExecuteCalculateDrawPropertiesWithPropertyTrees(root_ptr); 8930 ExecuteCalculateDrawPropertiesWithPropertyTrees(root_ptr);
8888 EXPECT_EQ(gfx::Rect(10, 10), grandchild_ptr->visible_layer_rect()); 8931 EXPECT_EQ(gfx::Rect(10, 10), grandchild_ptr->visible_layer_rect());
8889 8932
8890 std::unique_ptr<KeyframedFloatAnimationCurve> curve( 8933 std::unique_ptr<KeyframedFloatAnimationCurve> curve(
8891 KeyframedFloatAnimationCurve::Create()); 8934 KeyframedFloatAnimationCurve::Create());
8892 std::unique_ptr<TimingFunction> func = EaseTimingFunction::Create(); 8935 std::unique_ptr<TimingFunction> func = EaseTimingFunction::Create();
8893 curve->AddKeyframe( 8936 curve->AddKeyframe(
8894 FloatKeyframe::Create(base::TimeDelta(), 0.9f, std::move(func))); 8937 FloatKeyframe::Create(base::TimeDelta(), 0.9f, std::move(func)));
8895 curve->AddKeyframe( 8938 curve->AddKeyframe(
8896 FloatKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), 0.3f, nullptr)); 8939 FloatKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), 0.3f, nullptr));
8897 std::unique_ptr<Animation> animation( 8940 std::unique_ptr<Animation> animation(
8898 Animation::Create(std::move(curve), 3, 3, TargetProperty::OPACITY)); 8941 Animation::Create(std::move(curve), 3, 3, TargetProperty::OPACITY));
8899 scoped_refptr<AnimationPlayer> player(AnimationPlayer::Create(1)); 8942 scoped_refptr<AnimationPlayer> player(AnimationPlayer::Create(1));
8900 host_impl.active_tree()->animation_host()->RegisterPlayerForElement( 8943 host_impl.active_tree()->animation_host()->RegisterPlayerForElement(
8901 root_ptr->id(), player.get()); 8944 root_ptr->element_id(), player.get());
8902 host_impl.active_tree() 8945 host_impl.active_tree()
8903 ->animation_host() 8946 ->animation_host()
8904 ->GetElementAnimationsForElementId(root_ptr->id()) 8947 ->GetElementAnimationsForElementId(root_ptr->element_id())
8905 ->AddAnimation(std::move(animation)); 8948 ->AddAnimation(std::move(animation));
8906 root_ptr->test_properties()->opacity = 0.f; 8949 root_ptr->test_properties()->opacity = 0.f;
8907 grandchild_ptr->set_visible_layer_rect(gfx::Rect()); 8950 grandchild_ptr->set_visible_layer_rect(gfx::Rect());
8908 root_ptr->layer_tree_impl()->property_trees()->needs_rebuild = true; 8951 root_ptr->layer_tree_impl()->property_trees()->needs_rebuild = true;
8909 ExecuteCalculateDrawPropertiesWithPropertyTrees(root_ptr); 8952 ExecuteCalculateDrawPropertiesWithPropertyTrees(root_ptr);
8910 EXPECT_EQ(gfx::Rect(10, 10), grandchild_ptr->visible_layer_rect()); 8953 EXPECT_EQ(gfx::Rect(10, 10), grandchild_ptr->visible_layer_rect());
8911 8954
8912 host_impl.active_tree()->animation_host()->UnregisterPlayerForElement( 8955 host_impl.active_tree()->animation_host()->UnregisterPlayerForElement(
8913 root_ptr->id(), player.get()); 8956 root_ptr->element_id(), player.get());
8914 } 8957 }
8915 8958
8916 TEST_F(LayerTreeHostCommonTest, SkippingLayer) { 8959 TEST_F(LayerTreeHostCommonTest, SkippingLayer) {
8917 gfx::Transform identity; 8960 gfx::Transform identity;
8918 LayerImpl* root = root_layer(); 8961 LayerImpl* root = root_layer();
8919 LayerImpl* child = AddChild<LayerImpl>(root); 8962 LayerImpl* child = AddChild<LayerImpl>(root);
8920 8963
8921 SetLayerPropertiesForTesting(root, identity, gfx::Point3F(), gfx::PointF(), 8964 SetLayerPropertiesForTesting(root, identity, gfx::Point3F(), gfx::PointF(),
8922 gfx::Size(100, 100), true, false, true); 8965 gfx::Size(100, 100), true, false, true);
8923 SetLayerPropertiesForTesting(child, identity, gfx::Point3F(), gfx::PointF(), 8966 SetLayerPropertiesForTesting(child, identity, gfx::Point3F(), gfx::PointF(),
(...skipping 830 matching lines...) Expand 10 before | Expand all | Expand 10 after
9754 9797
9755 TEST_F(LayerTreeHostCommonTest, OpacityAnimationsTrackingTest) { 9798 TEST_F(LayerTreeHostCommonTest, OpacityAnimationsTrackingTest) {
9756 const gfx::Transform identity_matrix; 9799 const gfx::Transform identity_matrix;
9757 scoped_refptr<Layer> root = Layer::Create(); 9800 scoped_refptr<Layer> root = Layer::Create();
9758 scoped_refptr<LayerWithForcedDrawsContent> animated = 9801 scoped_refptr<LayerWithForcedDrawsContent> animated =
9759 make_scoped_refptr(new LayerWithForcedDrawsContent()); 9802 make_scoped_refptr(new LayerWithForcedDrawsContent());
9760 root->AddChild(animated); 9803 root->AddChild(animated);
9761 9804
9762 host()->SetRootLayer(root); 9805 host()->SetRootLayer(root);
9763 9806
9807 host()->SetElementIdsForTesting();
9808
9764 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), 9809 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(),
9765 gfx::PointF(), gfx::Size(100, 100), true, false); 9810 gfx::PointF(), gfx::Size(100, 100), true, false);
9766 SetLayerPropertiesForTesting(animated.get(), identity_matrix, gfx::Point3F(), 9811 SetLayerPropertiesForTesting(animated.get(), identity_matrix, gfx::Point3F(),
9767 gfx::PointF(), gfx::Size(20, 20), true, false); 9812 gfx::PointF(), gfx::Size(20, 20), true, false);
9768 9813
9769 root->SetForceRenderSurfaceForTesting(true); 9814 root->SetForceRenderSurfaceForTesting(true);
9770 animated->SetOpacity(0.f); 9815 animated->SetOpacity(0.f);
9771 9816
9772 scoped_refptr<AnimationPlayer> player = 9817 scoped_refptr<AnimationPlayer> player =
9773 AnimationPlayer::Create(AnimationIdProvider::NextPlayerId()); 9818 AnimationPlayer::Create(AnimationIdProvider::NextPlayerId());
9774 timeline()->AttachPlayer(player); 9819 timeline()->AttachPlayer(player);
9775 player->AttachElement(animated->id()); 9820
9821 player->AttachElement(animated->element_id());
9776 9822
9777 int animation_id = 0; 9823 int animation_id = 0;
9778 std::unique_ptr<Animation> animation = Animation::Create( 9824 std::unique_ptr<Animation> animation = Animation::Create(
9779 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)), 9825 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)),
9780 animation_id, 1, TargetProperty::OPACITY); 9826 animation_id, 1, TargetProperty::OPACITY);
9781 animation->set_fill_mode(Animation::FillMode::NONE); 9827 animation->set_fill_mode(Animation::FillMode::NONE);
9782 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000)); 9828 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000));
9783 Animation* animation_ptr = animation.get(); 9829 Animation* animation_ptr = animation.get();
9784 AddAnimationToLayerWithExistingPlayer(animated->id(), timeline(), 9830 AddAnimationToElementWithExistingPlayer(animated->element_id(), timeline(),
9785 std::move(animation)); 9831 std::move(animation));
9786 9832
9787 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); 9833 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get());
9788 9834
9789 EffectTree& tree = root->layer_tree_host()->property_trees()->effect_tree; 9835 EffectTree& tree = root->layer_tree_host()->property_trees()->effect_tree;
9790 EffectNode* node = tree.Node(animated->effect_tree_index()); 9836 EffectNode* node = tree.Node(animated->effect_tree_index());
9791 EXPECT_FALSE(node->data.is_currently_animating_opacity); 9837 EXPECT_FALSE(node->data.is_currently_animating_opacity);
9792 EXPECT_TRUE(node->data.has_potential_opacity_animation); 9838 EXPECT_TRUE(node->data.has_potential_opacity_animation);
9793 9839
9794 animation_ptr->set_time_offset(base::TimeDelta::FromMilliseconds(0)); 9840 animation_ptr->set_time_offset(base::TimeDelta::FromMilliseconds(0));
9795 root->layer_tree_host()->AnimateLayers( 9841 root->layer_tree_host()->AnimateLayers(
(...skipping 10 matching lines...) Expand all
9806 9852
9807 TEST_F(LayerTreeHostCommonTest, TransformAnimationsTrackingTest) { 9853 TEST_F(LayerTreeHostCommonTest, TransformAnimationsTrackingTest) {
9808 const gfx::Transform identity_matrix; 9854 const gfx::Transform identity_matrix;
9809 scoped_refptr<Layer> root = Layer::Create(); 9855 scoped_refptr<Layer> root = Layer::Create();
9810 scoped_refptr<LayerWithForcedDrawsContent> animated = 9856 scoped_refptr<LayerWithForcedDrawsContent> animated =
9811 make_scoped_refptr(new LayerWithForcedDrawsContent()); 9857 make_scoped_refptr(new LayerWithForcedDrawsContent());
9812 root->AddChild(animated); 9858 root->AddChild(animated);
9813 9859
9814 host()->SetRootLayer(root); 9860 host()->SetRootLayer(root);
9815 9861
9862 host()->SetElementIdsForTesting();
9863
9816 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), 9864 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(),
9817 gfx::PointF(), gfx::Size(100, 100), true, false); 9865 gfx::PointF(), gfx::Size(100, 100), true, false);
9818 SetLayerPropertiesForTesting(animated.get(), identity_matrix, gfx::Point3F(), 9866 SetLayerPropertiesForTesting(animated.get(), identity_matrix, gfx::Point3F(),
9819 gfx::PointF(), gfx::Size(20, 20), true, false); 9867 gfx::PointF(), gfx::Size(20, 20), true, false);
9820 9868
9821 root->SetForceRenderSurfaceForTesting(true); 9869 root->SetForceRenderSurfaceForTesting(true);
9822 9870
9823 scoped_refptr<AnimationPlayer> player = 9871 scoped_refptr<AnimationPlayer> player =
9824 AnimationPlayer::Create(AnimationIdProvider::NextPlayerId()); 9872 AnimationPlayer::Create(AnimationIdProvider::NextPlayerId());
9825 timeline()->AttachPlayer(player); 9873 timeline()->AttachPlayer(player);
9826 player->AttachElement(animated->id()); 9874 player->AttachElement(animated->element_id());
9827 9875
9828 std::unique_ptr<KeyframedTransformAnimationCurve> curve( 9876 std::unique_ptr<KeyframedTransformAnimationCurve> curve(
9829 KeyframedTransformAnimationCurve::Create()); 9877 KeyframedTransformAnimationCurve::Create());
9830 TransformOperations start; 9878 TransformOperations start;
9831 start.AppendTranslate(1.f, 2.f, 3.f); 9879 start.AppendTranslate(1.f, 2.f, 3.f);
9832 gfx::Transform transform; 9880 gfx::Transform transform;
9833 transform.Scale3d(1.0, 2.0, 3.0); 9881 transform.Scale3d(1.0, 2.0, 3.0);
9834 TransformOperations operation; 9882 TransformOperations operation;
9835 operation.AppendMatrix(transform); 9883 operation.AppendMatrix(transform);
9836 curve->AddKeyframe( 9884 curve->AddKeyframe(
9837 TransformKeyframe::Create(base::TimeDelta(), start, nullptr)); 9885 TransformKeyframe::Create(base::TimeDelta(), start, nullptr));
9838 curve->AddKeyframe(TransformKeyframe::Create( 9886 curve->AddKeyframe(TransformKeyframe::Create(
9839 base::TimeDelta::FromSecondsD(1.0), operation, nullptr)); 9887 base::TimeDelta::FromSecondsD(1.0), operation, nullptr));
9840 std::unique_ptr<Animation> animation( 9888 std::unique_ptr<Animation> animation(
9841 Animation::Create(std::move(curve), 3, 3, TargetProperty::TRANSFORM)); 9889 Animation::Create(std::move(curve), 3, 3, TargetProperty::TRANSFORM));
9842 animation->set_fill_mode(Animation::FillMode::NONE); 9890 animation->set_fill_mode(Animation::FillMode::NONE);
9843 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000)); 9891 animation->set_time_offset(base::TimeDelta::FromMilliseconds(-1000));
9844 Animation* animation_ptr = animation.get(); 9892 Animation* animation_ptr = animation.get();
9845 AddAnimationToLayerWithExistingPlayer(animated->id(), timeline(), 9893 AddAnimationToElementWithExistingPlayer(animated->element_id(), timeline(),
9846 std::move(animation)); 9894 std::move(animation));
9847 9895
9848 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get()); 9896 ExecuteCalculateDrawPropertiesWithPropertyTrees(root.get());
9849 9897
9850 TransformTree& tree = 9898 TransformTree& tree =
9851 root->layer_tree_host()->property_trees()->transform_tree; 9899 root->layer_tree_host()->property_trees()->transform_tree;
9852 TransformNode* node = tree.Node(animated->transform_tree_index()); 9900 TransformNode* node = tree.Node(animated->transform_tree_index());
9853 EXPECT_FALSE(node->data.is_currently_animating); 9901 EXPECT_FALSE(node->data.is_currently_animating);
9854 EXPECT_TRUE(node->data.has_potential_animation); 9902 EXPECT_TRUE(node->data.has_potential_animation);
9855 9903
9856 animation_ptr->set_time_offset(base::TimeDelta::FromMilliseconds(0)); 9904 animation_ptr->set_time_offset(base::TimeDelta::FromMilliseconds(0));
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
10092 EXPECT_EQ(scroll_child6.id, grand_child10->scroll_tree_index()); 10140 EXPECT_EQ(scroll_child6.id, grand_child10->scroll_tree_index());
10093 EXPECT_EQ(scroll_root1.id, parent3->scroll_tree_index()); 10141 EXPECT_EQ(scroll_root1.id, parent3->scroll_tree_index());
10094 EXPECT_EQ(scroll_child7.id, child8->scroll_tree_index()); 10142 EXPECT_EQ(scroll_child7.id, child8->scroll_tree_index());
10095 EXPECT_EQ(scroll_root1.id, parent4->scroll_tree_index()); 10143 EXPECT_EQ(scroll_root1.id, parent4->scroll_tree_index());
10096 EXPECT_EQ(scroll_root1.id, child9->scroll_tree_index()); 10144 EXPECT_EQ(scroll_root1.id, child9->scroll_tree_index());
10097 EXPECT_EQ(scroll_root1.id, grand_child12->scroll_tree_index()); 10145 EXPECT_EQ(scroll_root1.id, grand_child12->scroll_tree_index());
10098 } 10146 }
10099 10147
10100 } // namespace 10148 } // namespace
10101 } // namespace cc 10149 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698