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

Unified Diff: cc/trees/layer_tree_host_common_unittest.cc

Issue 2105673003: cc: Compute animation scale on demand (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nit changes 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/trees/draw_property_utils.cc ('k') | cc/trees/property_tree.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/layer_tree_host_common_unittest.cc
diff --git a/cc/trees/layer_tree_host_common_unittest.cc b/cc/trees/layer_tree_host_common_unittest.cc
index fbcec34abcc8dae2aa9d95f488dff0b2888b53ad..55a00ff9a91ffdaa31aeb30b4f29b853fd2df306 100644
--- a/cc/trees/layer_tree_host_common_unittest.cc
+++ b/cc/trees/layer_tree_host_common_unittest.cc
@@ -7377,25 +7377,15 @@ TEST_F(LayerTreeHostCommonTest, MaximumAnimationScaleFactor) {
ExecuteCalculateDrawProperties(grand_parent_raw);
// No layers have animations.
- EXPECT_EQ(
- 0.f,
- grand_parent_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(0.f,
- parent_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(
- 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_parent_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(parent_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(child_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_child_raw));
- EXPECT_EQ(
- 0.f,
- grand_parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(0.f,
- parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(0.f,
- child_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(
- 0.f,
- grand_child_raw->draw_properties().starting_animation_contents_scale);
+ EXPECT_EQ(0.f, GetStartingAnimationScale(grand_parent_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(parent_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(child_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(grand_child_raw));
TransformOperations translation;
translation.AppendTranslate(1.f, 2.f, 3.f);
@@ -7410,25 +7400,15 @@ TEST_F(LayerTreeHostCommonTest, MaximumAnimationScaleFactor) {
translation);
// No layers have scale-affecting animations.
- EXPECT_EQ(
- 0.f,
- grand_parent_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(0.f,
- parent_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(
- 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_parent_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(parent_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(child_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_child_raw));
- EXPECT_EQ(
- 0.f,
- grand_parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(0.f,
- parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(0.f,
- child_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(
- 0.f,
- grand_child_raw->draw_properties().starting_animation_contents_scale);
+ EXPECT_EQ(0.f, GetStartingAnimationScale(grand_parent_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(parent_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(child_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(grand_child_raw));
TransformOperations scale;
scale.AppendScale(5.f, 4.f, 3.f);
@@ -7439,25 +7419,15 @@ TEST_F(LayerTreeHostCommonTest, MaximumAnimationScaleFactor) {
ExecuteCalculateDrawProperties(grand_parent_raw);
// Only |child| has a scale-affecting animation.
- EXPECT_EQ(
- 0.f,
- grand_parent_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(0.f,
- parent_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(5.f, child_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(
- 5.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_parent_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(parent_raw));
+ EXPECT_EQ(5.f, GetMaximumAnimationScale(child_raw));
+ EXPECT_EQ(5.f, GetMaximumAnimationScale(grand_child_raw));
- EXPECT_EQ(
- 0.f,
- grand_parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(0.f,
- parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(1.f,
- child_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(
- 1.f,
- grand_child_raw->draw_properties().starting_animation_contents_scale);
+ EXPECT_EQ(0.f, GetStartingAnimationScale(grand_parent_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(parent_raw));
+ EXPECT_EQ(1.f, GetStartingAnimationScale(child_raw));
+ EXPECT_EQ(1.f, GetStartingAnimationScale(grand_child_raw));
AddAnimatedTransformToElementWithPlayer(grand_parent_raw->element_id(),
timeline, 1.0, TransformOperations(),
@@ -7466,27 +7436,17 @@ TEST_F(LayerTreeHostCommonTest, MaximumAnimationScaleFactor) {
ExecuteCalculateDrawProperties(grand_parent_raw);
// |grand_parent| and |child| have scale-affecting animations.
- EXPECT_EQ(
- 5.f,
- grand_parent_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(5.f,
- parent_raw->draw_properties().maximum_animation_contents_scale);
+ EXPECT_EQ(5.f, GetMaximumAnimationScale(grand_parent_raw));
+ EXPECT_EQ(5.f, GetMaximumAnimationScale(parent_raw));
// We don't support combining animated scales from two nodes; 0.f means
// that the maximum scale could not be computed.
- EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(
- 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(child_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_child_raw));
- EXPECT_EQ(
- 1.f,
- grand_parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(1.f,
- parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(0.f,
- child_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(
- 0.f,
- grand_child_raw->draw_properties().starting_animation_contents_scale);
+ EXPECT_EQ(1.f, GetStartingAnimationScale(grand_parent_raw));
+ EXPECT_EQ(1.f, GetStartingAnimationScale(parent_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(child_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(grand_child_raw));
AddAnimatedTransformToElementWithPlayer(parent_raw->element_id(), timeline,
1.0, TransformOperations(), scale);
@@ -7494,25 +7454,15 @@ TEST_F(LayerTreeHostCommonTest, MaximumAnimationScaleFactor) {
ExecuteCalculateDrawProperties(grand_parent_raw);
// |grand_parent|, |parent|, and |child| have scale-affecting animations.
- EXPECT_EQ(
- 5.f,
- grand_parent_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(0.f,
- parent_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(
- 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
+ EXPECT_EQ(5.f, GetMaximumAnimationScale(grand_parent_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(parent_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(child_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_child_raw));
- EXPECT_EQ(
- 1.f,
- grand_parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(0.f,
- parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(0.f,
- child_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(
- 0.f,
- grand_child_raw->draw_properties().starting_animation_contents_scale);
+ EXPECT_EQ(1.f, GetStartingAnimationScale(grand_parent_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(parent_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(child_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(grand_child_raw));
AbortAnimationsOnElementWithPlayer(grand_parent_raw->element_id(), timeline,
TargetProperty::TRANSFORM);
@@ -7532,25 +7482,15 @@ TEST_F(LayerTreeHostCommonTest, MaximumAnimationScaleFactor) {
// |child| has a scale-affecting animation but computing the maximum of this
// animation is not supported.
- EXPECT_EQ(
- 0.f,
- grand_parent_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(0.f,
- parent_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(
- 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_parent_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(parent_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(child_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_child_raw));
- EXPECT_EQ(
- 0.f,
- grand_parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(0.f,
- parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(0.f,
- child_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(
- 0.f,
- grand_child_raw->draw_properties().starting_animation_contents_scale);
+ EXPECT_EQ(0.f, GetStartingAnimationScale(grand_parent_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(parent_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(child_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(grand_child_raw));
AbortAnimationsOnElementWithPlayer(child_raw->element_id(), timeline,
TargetProperty::TRANSFORM);
@@ -7566,27 +7506,15 @@ TEST_F(LayerTreeHostCommonTest, MaximumAnimationScaleFactor) {
// |grand_parent| and |parent| each have scale 2.f. |parent| has a scale
// animation with maximum scale 5.f.
- EXPECT_EQ(
- 0.f,
- grand_parent_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(10.f,
- parent_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(10.f,
- child_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(
- 10.f,
- grand_child_raw->draw_properties().maximum_animation_contents_scale);
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_parent_raw));
+ EXPECT_EQ(10.f, GetMaximumAnimationScale(parent_raw));
+ EXPECT_EQ(10.f, GetMaximumAnimationScale(child_raw));
+ EXPECT_EQ(10.f, GetMaximumAnimationScale(grand_child_raw));
- EXPECT_EQ(
- 0.f,
- grand_parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(2.f,
- parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(2.f,
- child_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(
- 2.f,
- grand_child_raw->draw_properties().starting_animation_contents_scale);
+ EXPECT_EQ(0.f, GetStartingAnimationScale(grand_parent_raw));
+ EXPECT_EQ(2.f, GetStartingAnimationScale(parent_raw));
+ EXPECT_EQ(2.f, GetStartingAnimationScale(child_raw));
+ EXPECT_EQ(2.f, GetStartingAnimationScale(grand_child_raw));
gfx::Transform perspective_matrix;
perspective_matrix.ApplyPerspectiveDepth(2.f);
@@ -7595,25 +7523,15 @@ TEST_F(LayerTreeHostCommonTest, MaximumAnimationScaleFactor) {
ExecuteCalculateDrawProperties(grand_parent_raw);
// |child| has a transform that's neither a translation nor a scale.
- EXPECT_EQ(
- 0.f,
- grand_parent_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(10.f,
- parent_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(
- 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_parent_raw));
+ EXPECT_EQ(10.f, GetMaximumAnimationScale(parent_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(child_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_child_raw));
- EXPECT_EQ(
- 0.f,
- grand_parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(2.f,
- parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(0.f,
- child_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(
- 0.f,
- grand_child_raw->draw_properties().starting_animation_contents_scale);
+ EXPECT_EQ(0.f, GetStartingAnimationScale(grand_parent_raw));
+ EXPECT_EQ(2.f, GetStartingAnimationScale(parent_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(child_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(grand_child_raw));
parent_raw->SetTransform(perspective_matrix);
grand_parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true;
@@ -7621,25 +7539,15 @@ TEST_F(LayerTreeHostCommonTest, MaximumAnimationScaleFactor) {
// |parent| and |child| have transforms that are neither translations nor
// scales.
- EXPECT_EQ(
- 0.f,
- grand_parent_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(0.f,
- parent_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(
- 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_parent_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(parent_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(child_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_child_raw));
- EXPECT_EQ(
- 0.f,
- grand_parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(0.f,
- parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(0.f,
- child_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(
- 0.f,
- grand_child_raw->draw_properties().starting_animation_contents_scale);
+ EXPECT_EQ(0.f, GetStartingAnimationScale(grand_parent_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(parent_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(child_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(grand_child_raw));
parent_raw->SetTransform(identity_matrix);
child_raw->SetTransform(identity_matrix);
@@ -7649,25 +7557,15 @@ TEST_F(LayerTreeHostCommonTest, MaximumAnimationScaleFactor) {
ExecuteCalculateDrawProperties(grand_parent_raw);
// |grand_parent| has a transform that's neither a translation nor a scale.
- EXPECT_EQ(
- 0.f,
- grand_parent_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(0.f,
- parent_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale);
- EXPECT_EQ(
- 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_parent_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(parent_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(child_raw));
+ EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_child_raw));
- EXPECT_EQ(
- 0.f,
- grand_parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(0.f,
- parent_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(0.f,
- child_raw->draw_properties().starting_animation_contents_scale);
- EXPECT_EQ(
- 0.f,
- grand_child_raw->draw_properties().starting_animation_contents_scale);
+ EXPECT_EQ(0.f, GetStartingAnimationScale(grand_parent_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(parent_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(child_raw));
+ EXPECT_EQ(0.f, GetStartingAnimationScale(grand_child_raw));
}
static void GatherDrawnLayers(LayerImplList* rsll,
@@ -8021,12 +7919,9 @@ TEST_F(LayerTreeHostCommonTest, DrawPropertyScales) {
child1_layer->test_properties()->mask_layer->GetIdealContentsScale());
EXPECT_FLOAT_EQ(5.f, child2_layer->GetIdealContentsScale());
- EXPECT_FLOAT_EQ(
- 0.f, root_layer->draw_properties().maximum_animation_contents_scale);
- EXPECT_FLOAT_EQ(
- 0.f, child1_layer->draw_properties().maximum_animation_contents_scale);
- EXPECT_FLOAT_EQ(
- 8.f, child2_layer->draw_properties().maximum_animation_contents_scale);
+ EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(root_layer));
+ EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(child1_layer));
+ EXPECT_FLOAT_EQ(8.f, GetMaximumAnimationScale(child2_layer));
// Changing page-scale would affect ideal_contents_scale and
// maximum_animation_contents_scale.
@@ -8055,12 +7950,9 @@ TEST_F(LayerTreeHostCommonTest, DrawPropertyScales) {
->mask_layer->GetIdealContentsScale());
EXPECT_FLOAT_EQ(15.f, child2_layer->GetIdealContentsScale());
- EXPECT_FLOAT_EQ(
- 0.f, root_layer->draw_properties().maximum_animation_contents_scale);
- EXPECT_FLOAT_EQ(
- 0.f, child1_layer->draw_properties().maximum_animation_contents_scale);
- EXPECT_FLOAT_EQ(
- 24.f, child2_layer->draw_properties().maximum_animation_contents_scale);
+ EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(root_layer));
+ EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(child1_layer));
+ EXPECT_FLOAT_EQ(24.f, GetMaximumAnimationScale(child2_layer));
// Changing device-scale would affect ideal_contents_scale and
// maximum_animation_contents_scale.
@@ -8081,12 +7973,141 @@ TEST_F(LayerTreeHostCommonTest, DrawPropertyScales) {
->mask_layer->GetIdealContentsScale());
EXPECT_FLOAT_EQ(60.f, child2_layer->GetIdealContentsScale());
- EXPECT_FLOAT_EQ(
- 0.f, root_layer->draw_properties().maximum_animation_contents_scale);
- EXPECT_FLOAT_EQ(
- 0.f, child1_layer->draw_properties().maximum_animation_contents_scale);
- EXPECT_FLOAT_EQ(
- 96.f, child2_layer->draw_properties().maximum_animation_contents_scale);
+ EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(root_layer));
+ EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(child1_layer));
+ EXPECT_FLOAT_EQ(96.f, GetMaximumAnimationScale(child2_layer));
+}
+
+TEST_F(LayerTreeHostCommonTest, AnimationScales) {
+ FakeImplTaskRunnerProvider task_runner_provider;
+ TestSharedBitmapManager shared_bitmap_manager;
+ TestTaskGraphRunner task_graph_runner;
+ LayerTreeSettings settings = host()->settings();
+ settings.layer_transforms_should_scale_layer_contents = true;
+ FakeLayerTreeHostImpl host_impl(settings, &task_runner_provider,
+ &shared_bitmap_manager, &task_graph_runner);
+
+ std::unique_ptr<LayerImpl> root =
+ LayerImpl::Create(host_impl.active_tree(), 1);
+ LayerImpl* root_layer = root.get();
+ std::unique_ptr<LayerImpl> child1 =
+ LayerImpl::Create(host_impl.active_tree(), 2);
+ LayerImpl* child1_layer = child1.get();
+ std::unique_ptr<LayerImpl> child2 =
+ LayerImpl::Create(host_impl.active_tree(), 3);
+ LayerImpl* child2_layer = child2.get();
+
+ root->test_properties()->AddChild(std::move(child1));
+ child1_layer->test_properties()->AddChild(std::move(child2));
+ host_impl.active_tree()->SetRootLayerForTesting(std::move(root));
+
+ host_impl.active_tree()->SetElementIdsForTesting();
+
+ gfx::Transform identity_matrix, scale_transform_child1,
+ scale_transform_child2;
+ scale_transform_child1.Scale(2, 3);
+ scale_transform_child2.Scale(4, 5);
+
+ SetLayerPropertiesForTesting(root_layer, identity_matrix, gfx::Point3F(),
+ gfx::PointF(), gfx::Size(1, 1), true, false,
+ true);
+ SetLayerPropertiesForTesting(child1_layer, scale_transform_child1,
+ gfx::Point3F(), gfx::PointF(), gfx::Size(1, 1),
+ true, false, false);
+
+ TransformOperations scale;
+ scale.AppendScale(5.f, 8.f, 3.f);
+
+ scoped_refptr<AnimationTimeline> timeline =
+ AnimationTimeline::Create(AnimationIdProvider::NextTimelineId());
+ host_impl.animation_host()->AddAnimationTimeline(timeline);
+
+ AddAnimatedTransformToElementWithPlayer(child2_layer->element_id(), timeline,
+ 1.0, TransformOperations(), scale);
+
+ SetLayerPropertiesForTesting(child2_layer, scale_transform_child2,
+ gfx::Point3F(), gfx::PointF(), gfx::Size(1, 1),
+ true, false, false);
+
+ // Correctly computes animation scale when rebuilding property trees.
+ root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true;
+ ExecuteCalculateDrawProperties(root_layer);
+
+ EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(root_layer));
+ EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(child1_layer));
+ EXPECT_FLOAT_EQ(24.f, GetMaximumAnimationScale(child2_layer));
+
+ EXPECT_FLOAT_EQ(0.f, GetStartingAnimationScale(root_layer));
+ EXPECT_FLOAT_EQ(0.f, GetStartingAnimationScale(child1_layer));
+ EXPECT_FLOAT_EQ(3.f, GetStartingAnimationScale(child2_layer));
+
+ // Correctly updates animation scale when layer property changes.
+ child1_layer->SetTransform(identity_matrix);
+ child1_layer->UpdatePropertyTreeTransform();
+ root_layer->layer_tree_impl()->property_trees()->needs_rebuild = false;
+ ExecuteCalculateDrawProperties(root_layer);
+ EXPECT_FLOAT_EQ(8.f, GetMaximumAnimationScale(child2_layer));
+ EXPECT_FLOAT_EQ(1.f, GetStartingAnimationScale(child2_layer));
+
+ // Do not update animation scale if already updated.
+ host_impl.active_tree()->property_trees()->SetAnimationScalesForTesting(
+ child2_layer->transform_tree_index(), 100.f, 100.f);
+ EXPECT_FLOAT_EQ(100.f, GetMaximumAnimationScale(child2_layer));
+ EXPECT_FLOAT_EQ(100.f, GetStartingAnimationScale(child2_layer));
+}
+
+TEST_F(LayerTreeHostCommonTest,
+ AnimationScaleWhenLayerTransformShouldNotScaleLayerBounds) {
+ // Returns empty scale if layer_transforms_should_scale_layer_contents is
+ // false.
+ FakeImplTaskRunnerProvider task_runner_provider;
+ TestSharedBitmapManager shared_bitmap_manager;
+ TestTaskGraphRunner task_graph_runner;
+ LayerTreeSettings settings = host()->settings();
+ settings.layer_transforms_should_scale_layer_contents = false;
+ FakeLayerTreeHostImpl host_impl(settings, &task_runner_provider,
+ &shared_bitmap_manager, &task_graph_runner);
+
+ std::unique_ptr<LayerImpl> root =
+ LayerImpl::Create(host_impl.active_tree(), 1);
+ LayerImpl* root_layer = root.get();
+ std::unique_ptr<LayerImpl> child =
+ LayerImpl::Create(host_impl.active_tree(), 2);
+ LayerImpl* child_layer = child.get();
+
+ root->test_properties()->AddChild(std::move(child));
+ host_impl.active_tree()->SetRootLayerForTesting(std::move(root));
+
+ host_impl.active_tree()->SetElementIdsForTesting();
+
+ gfx::Transform identity_matrix, scale_transform_child;
+ scale_transform_child.Scale(4, 5);
+
+ SetLayerPropertiesForTesting(root_layer, identity_matrix, gfx::Point3F(),
+ gfx::PointF(), gfx::Size(1, 1), true, false,
+ true);
+ TransformOperations scale;
+ scale.AppendScale(5.f, 8.f, 3.f);
+
+ scoped_refptr<AnimationTimeline> timeline =
+ AnimationTimeline::Create(AnimationIdProvider::NextTimelineId());
+ host_impl.animation_host()->AddAnimationTimeline(timeline);
+
+ AddAnimatedTransformToElementWithPlayer(child_layer->element_id(), timeline,
+ 1.0, TransformOperations(), scale);
+
+ SetLayerPropertiesForTesting(child_layer, scale_transform_child,
+ gfx::Point3F(), gfx::PointF(), gfx::Size(1, 1),
+ true, false, false);
+
+ root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true;
+ ExecuteCalculateDrawProperties(root_layer);
+
+ EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(root_layer));
+ EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(child_layer));
+
+ EXPECT_FLOAT_EQ(0.f, GetStartingAnimationScale(root_layer));
+ EXPECT_FLOAT_EQ(0.f, GetStartingAnimationScale(child_layer));
}
TEST_F(LayerTreeHostCommonTest, VisibleContentRectInChildRenderSurface) {
« no previous file with comments | « cc/trees/draw_property_utils.cc ('k') | cc/trees/property_tree.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698