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 2105673003: cc: Compute animation scale on demand (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and resolve comments Created 4 years, 5 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 7359 matching lines...) Expand 10 before | Expand all | Expand 10 after
7370 7370
7371 SetLayerPropertiesForTesting(grand_child_raw, identity_matrix, gfx::Point3F(), 7371 SetLayerPropertiesForTesting(grand_child_raw, identity_matrix, gfx::Point3F(),
7372 gfx::PointF(), gfx::Size(1, 2), true, false, 7372 gfx::PointF(), gfx::Size(1, 2), true, false,
7373 false); 7373 false);
7374 7374
7375 host_impl.active_tree()->SetRootLayerForTesting(std::move(grand_parent)); 7375 host_impl.active_tree()->SetRootLayerForTesting(std::move(grand_parent));
7376 7376
7377 ExecuteCalculateDrawProperties(grand_parent_raw); 7377 ExecuteCalculateDrawProperties(grand_parent_raw);
7378 7378
7379 // No layers have animations. 7379 // No layers have animations.
7380 EXPECT_EQ( 7380 EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_parent_raw));
7381 0.f, 7381 EXPECT_EQ(0.f, GetMaximumAnimationScale(parent_raw));
7382 grand_parent_raw->draw_properties().maximum_animation_contents_scale); 7382 EXPECT_EQ(0.f, GetMaximumAnimationScale(child_raw));
7383 EXPECT_EQ(0.f, 7383 EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_child_raw));
7384 parent_raw->draw_properties().maximum_animation_contents_scale);
7385 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale);
7386 EXPECT_EQ(
7387 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
7388 7384
7389 EXPECT_EQ( 7385 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_parent_raw));
7390 0.f, 7386 EXPECT_EQ(0.f, GetStartingAnimationScale(parent_raw));
7391 grand_parent_raw->draw_properties().starting_animation_contents_scale); 7387 EXPECT_EQ(0.f, GetStartingAnimationScale(child_raw));
7392 EXPECT_EQ(0.f, 7388 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_child_raw));
7393 parent_raw->draw_properties().starting_animation_contents_scale);
7394 EXPECT_EQ(0.f,
7395 child_raw->draw_properties().starting_animation_contents_scale);
7396 EXPECT_EQ(
7397 0.f,
7398 grand_child_raw->draw_properties().starting_animation_contents_scale);
7399 7389
7400 TransformOperations translation; 7390 TransformOperations translation;
7401 translation.AppendTranslate(1.f, 2.f, 3.f); 7391 translation.AppendTranslate(1.f, 2.f, 3.f);
7402 7392
7403 scoped_refptr<AnimationTimeline> timeline; 7393 scoped_refptr<AnimationTimeline> timeline;
7404 timeline = AnimationTimeline::Create(AnimationIdProvider::NextTimelineId()); 7394 timeline = AnimationTimeline::Create(AnimationIdProvider::NextTimelineId());
7405 host_impl.animation_host()->AddAnimationTimeline(timeline); 7395 host_impl.animation_host()->AddAnimationTimeline(timeline);
7406 7396
7407 host_impl.active_tree()->SetElementIdsForTesting(); 7397 host_impl.active_tree()->SetElementIdsForTesting();
7408 AddAnimatedTransformToElementWithPlayer(parent_raw->element_id(), timeline, 7398 AddAnimatedTransformToElementWithPlayer(parent_raw->element_id(), timeline,
7409 1.0, TransformOperations(), 7399 1.0, TransformOperations(),
7410 translation); 7400 translation);
7411 7401
7412 // No layers have scale-affecting animations. 7402 // No layers have scale-affecting animations.
7413 EXPECT_EQ( 7403 EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_parent_raw));
7414 0.f, 7404 EXPECT_EQ(0.f, GetMaximumAnimationScale(parent_raw));
7415 grand_parent_raw->draw_properties().maximum_animation_contents_scale); 7405 EXPECT_EQ(0.f, GetMaximumAnimationScale(child_raw));
7416 EXPECT_EQ(0.f, 7406 EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_child_raw));
7417 parent_raw->draw_properties().maximum_animation_contents_scale);
7418 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale);
7419 EXPECT_EQ(
7420 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
7421 7407
7422 EXPECT_EQ( 7408 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_parent_raw));
7423 0.f, 7409 EXPECT_EQ(0.f, GetStartingAnimationScale(parent_raw));
7424 grand_parent_raw->draw_properties().starting_animation_contents_scale); 7410 EXPECT_EQ(0.f, GetStartingAnimationScale(child_raw));
7425 EXPECT_EQ(0.f, 7411 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_child_raw));
7426 parent_raw->draw_properties().starting_animation_contents_scale);
7427 EXPECT_EQ(0.f,
7428 child_raw->draw_properties().starting_animation_contents_scale);
7429 EXPECT_EQ(
7430 0.f,
7431 grand_child_raw->draw_properties().starting_animation_contents_scale);
7432 7412
7433 TransformOperations scale; 7413 TransformOperations scale;
7434 scale.AppendScale(5.f, 4.f, 3.f); 7414 scale.AppendScale(5.f, 4.f, 3.f);
7435 7415
7436 AddAnimatedTransformToElementWithPlayer(child_raw->element_id(), timeline, 7416 AddAnimatedTransformToElementWithPlayer(child_raw->element_id(), timeline,
7437 1.0, TransformOperations(), scale); 7417 1.0, TransformOperations(), scale);
7438 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; 7418 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true;
7439 ExecuteCalculateDrawProperties(grand_parent_raw); 7419 ExecuteCalculateDrawProperties(grand_parent_raw);
7440 7420
7441 // Only |child| has a scale-affecting animation. 7421 // Only |child| has a scale-affecting animation.
7442 EXPECT_EQ( 7422 EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_parent_raw));
7443 0.f, 7423 EXPECT_EQ(0.f, GetMaximumAnimationScale(parent_raw));
7444 grand_parent_raw->draw_properties().maximum_animation_contents_scale); 7424 EXPECT_EQ(5.f, GetMaximumAnimationScale(child_raw));
7445 EXPECT_EQ(0.f, 7425 EXPECT_EQ(5.f, GetMaximumAnimationScale(grand_child_raw));
7446 parent_raw->draw_properties().maximum_animation_contents_scale);
7447 EXPECT_EQ(5.f, child_raw->draw_properties().maximum_animation_contents_scale);
7448 EXPECT_EQ(
7449 5.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
7450 7426
7451 EXPECT_EQ( 7427 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_parent_raw));
7452 0.f, 7428 EXPECT_EQ(0.f, GetStartingAnimationScale(parent_raw));
7453 grand_parent_raw->draw_properties().starting_animation_contents_scale); 7429 EXPECT_EQ(1.f, GetStartingAnimationScale(child_raw));
7454 EXPECT_EQ(0.f, 7430 EXPECT_EQ(1.f, GetStartingAnimationScale(grand_child_raw));
7455 parent_raw->draw_properties().starting_animation_contents_scale);
7456 EXPECT_EQ(1.f,
7457 child_raw->draw_properties().starting_animation_contents_scale);
7458 EXPECT_EQ(
7459 1.f,
7460 grand_child_raw->draw_properties().starting_animation_contents_scale);
7461 7431
7462 AddAnimatedTransformToElementWithPlayer(grand_parent_raw->element_id(), 7432 AddAnimatedTransformToElementWithPlayer(grand_parent_raw->element_id(),
7463 timeline, 1.0, TransformOperations(), 7433 timeline, 1.0, TransformOperations(),
7464 scale); 7434 scale);
7465 grand_parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; 7435 grand_parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true;
7466 ExecuteCalculateDrawProperties(grand_parent_raw); 7436 ExecuteCalculateDrawProperties(grand_parent_raw);
7467 7437
7468 // |grand_parent| and |child| have scale-affecting animations. 7438 // |grand_parent| and |child| have scale-affecting animations.
7469 EXPECT_EQ( 7439 EXPECT_EQ(5.f, GetMaximumAnimationScale(grand_parent_raw));
7470 5.f, 7440 EXPECT_EQ(5.f, GetMaximumAnimationScale(parent_raw));
7471 grand_parent_raw->draw_properties().maximum_animation_contents_scale);
7472 EXPECT_EQ(5.f,
7473 parent_raw->draw_properties().maximum_animation_contents_scale);
7474 // We don't support combining animated scales from two nodes; 0.f means 7441 // We don't support combining animated scales from two nodes; 0.f means
7475 // that the maximum scale could not be computed. 7442 // that the maximum scale could not be computed.
7476 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale); 7443 EXPECT_EQ(0.f, GetMaximumAnimationScale(child_raw));
7477 EXPECT_EQ( 7444 EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_child_raw));
7478 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
7479 7445
7480 EXPECT_EQ( 7446 EXPECT_EQ(1.f, GetStartingAnimationScale(grand_parent_raw));
7481 1.f, 7447 EXPECT_EQ(1.f, GetStartingAnimationScale(parent_raw));
7482 grand_parent_raw->draw_properties().starting_animation_contents_scale); 7448 EXPECT_EQ(0.f, GetStartingAnimationScale(child_raw));
7483 EXPECT_EQ(1.f, 7449 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_child_raw));
7484 parent_raw->draw_properties().starting_animation_contents_scale);
7485 EXPECT_EQ(0.f,
7486 child_raw->draw_properties().starting_animation_contents_scale);
7487 EXPECT_EQ(
7488 0.f,
7489 grand_child_raw->draw_properties().starting_animation_contents_scale);
7490 7450
7491 AddAnimatedTransformToElementWithPlayer(parent_raw->element_id(), timeline, 7451 AddAnimatedTransformToElementWithPlayer(parent_raw->element_id(), timeline,
7492 1.0, TransformOperations(), scale); 7452 1.0, TransformOperations(), scale);
7493 parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; 7453 parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true;
7494 ExecuteCalculateDrawProperties(grand_parent_raw); 7454 ExecuteCalculateDrawProperties(grand_parent_raw);
7495 7455
7496 // |grand_parent|, |parent|, and |child| have scale-affecting animations. 7456 // |grand_parent|, |parent|, and |child| have scale-affecting animations.
7497 EXPECT_EQ( 7457 EXPECT_EQ(5.f, GetMaximumAnimationScale(grand_parent_raw));
7498 5.f, 7458 EXPECT_EQ(0.f, GetMaximumAnimationScale(parent_raw));
7499 grand_parent_raw->draw_properties().maximum_animation_contents_scale); 7459 EXPECT_EQ(0.f, GetMaximumAnimationScale(child_raw));
7500 EXPECT_EQ(0.f, 7460 EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_child_raw));
7501 parent_raw->draw_properties().maximum_animation_contents_scale);
7502 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale);
7503 EXPECT_EQ(
7504 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
7505 7461
7506 EXPECT_EQ( 7462 EXPECT_EQ(1.f, GetStartingAnimationScale(grand_parent_raw));
7507 1.f, 7463 EXPECT_EQ(0.f, GetStartingAnimationScale(parent_raw));
7508 grand_parent_raw->draw_properties().starting_animation_contents_scale); 7464 EXPECT_EQ(0.f, GetStartingAnimationScale(child_raw));
7509 EXPECT_EQ(0.f, 7465 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_child_raw));
7510 parent_raw->draw_properties().starting_animation_contents_scale);
7511 EXPECT_EQ(0.f,
7512 child_raw->draw_properties().starting_animation_contents_scale);
7513 EXPECT_EQ(
7514 0.f,
7515 grand_child_raw->draw_properties().starting_animation_contents_scale);
7516 7466
7517 AbortAnimationsOnElementWithPlayer(grand_parent_raw->element_id(), timeline, 7467 AbortAnimationsOnElementWithPlayer(grand_parent_raw->element_id(), timeline,
7518 TargetProperty::TRANSFORM); 7468 TargetProperty::TRANSFORM);
7519 AbortAnimationsOnElementWithPlayer(parent_raw->element_id(), timeline, 7469 AbortAnimationsOnElementWithPlayer(parent_raw->element_id(), timeline,
7520 TargetProperty::TRANSFORM); 7470 TargetProperty::TRANSFORM);
7521 AbortAnimationsOnElementWithPlayer(child_raw->element_id(), timeline, 7471 AbortAnimationsOnElementWithPlayer(child_raw->element_id(), timeline,
7522 TargetProperty::TRANSFORM); 7472 TargetProperty::TRANSFORM);
7523 7473
7524 TransformOperations perspective; 7474 TransformOperations perspective;
7525 perspective.AppendPerspective(10.f); 7475 perspective.AppendPerspective(10.f);
7526 7476
7527 AddAnimatedTransformToElementWithPlayer(child_raw->element_id(), timeline, 7477 AddAnimatedTransformToElementWithPlayer(child_raw->element_id(), timeline,
7528 1.0, TransformOperations(), 7478 1.0, TransformOperations(),
7529 perspective); 7479 perspective);
7530 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; 7480 child_raw->layer_tree_impl()->property_trees()->needs_rebuild = true;
7531 ExecuteCalculateDrawProperties(grand_parent_raw); 7481 ExecuteCalculateDrawProperties(grand_parent_raw);
7532 7482
7533 // |child| has a scale-affecting animation but computing the maximum of this 7483 // |child| has a scale-affecting animation but computing the maximum of this
7534 // animation is not supported. 7484 // animation is not supported.
7535 EXPECT_EQ( 7485 EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_parent_raw));
7536 0.f, 7486 EXPECT_EQ(0.f, GetMaximumAnimationScale(parent_raw));
7537 grand_parent_raw->draw_properties().maximum_animation_contents_scale); 7487 EXPECT_EQ(0.f, GetMaximumAnimationScale(child_raw));
7538 EXPECT_EQ(0.f, 7488 EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_child_raw));
7539 parent_raw->draw_properties().maximum_animation_contents_scale);
7540 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale);
7541 EXPECT_EQ(
7542 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
7543 7489
7544 EXPECT_EQ( 7490 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_parent_raw));
7545 0.f, 7491 EXPECT_EQ(0.f, GetStartingAnimationScale(parent_raw));
7546 grand_parent_raw->draw_properties().starting_animation_contents_scale); 7492 EXPECT_EQ(0.f, GetStartingAnimationScale(child_raw));
7547 EXPECT_EQ(0.f, 7493 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_child_raw));
7548 parent_raw->draw_properties().starting_animation_contents_scale);
7549 EXPECT_EQ(0.f,
7550 child_raw->draw_properties().starting_animation_contents_scale);
7551 EXPECT_EQ(
7552 0.f,
7553 grand_child_raw->draw_properties().starting_animation_contents_scale);
7554 7494
7555 AbortAnimationsOnElementWithPlayer(child_raw->element_id(), timeline, 7495 AbortAnimationsOnElementWithPlayer(child_raw->element_id(), timeline,
7556 TargetProperty::TRANSFORM); 7496 TargetProperty::TRANSFORM);
7557 gfx::Transform scale_matrix; 7497 gfx::Transform scale_matrix;
7558 scale_matrix.Scale(1.f, 2.f); 7498 scale_matrix.Scale(1.f, 2.f);
7559 grand_parent_raw->SetTransform(scale_matrix); 7499 grand_parent_raw->SetTransform(scale_matrix);
7560 parent_raw->SetTransform(scale_matrix); 7500 parent_raw->SetTransform(scale_matrix);
7561 grand_parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; 7501 grand_parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true;
7562 7502
7563 AddAnimatedTransformToElementWithPlayer(parent_raw->element_id(), timeline, 7503 AddAnimatedTransformToElementWithPlayer(parent_raw->element_id(), timeline,
7564 1.0, TransformOperations(), scale); 7504 1.0, TransformOperations(), scale);
7565 ExecuteCalculateDrawProperties(grand_parent_raw); 7505 ExecuteCalculateDrawProperties(grand_parent_raw);
7566 7506
7567 // |grand_parent| and |parent| each have scale 2.f. |parent| has a scale 7507 // |grand_parent| and |parent| each have scale 2.f. |parent| has a scale
7568 // animation with maximum scale 5.f. 7508 // animation with maximum scale 5.f.
7569 EXPECT_EQ( 7509 EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_parent_raw));
7570 0.f, 7510 EXPECT_EQ(10.f, GetMaximumAnimationScale(parent_raw));
7571 grand_parent_raw->draw_properties().maximum_animation_contents_scale); 7511 EXPECT_EQ(10.f, GetMaximumAnimationScale(child_raw));
7572 EXPECT_EQ(10.f, 7512 EXPECT_EQ(10.f, GetMaximumAnimationScale(grand_child_raw));
7573 parent_raw->draw_properties().maximum_animation_contents_scale);
7574 EXPECT_EQ(10.f,
7575 child_raw->draw_properties().maximum_animation_contents_scale);
7576 EXPECT_EQ(
7577 10.f,
7578 grand_child_raw->draw_properties().maximum_animation_contents_scale);
7579 7513
7580 EXPECT_EQ( 7514 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_parent_raw));
7581 0.f, 7515 EXPECT_EQ(2.f, GetStartingAnimationScale(parent_raw));
7582 grand_parent_raw->draw_properties().starting_animation_contents_scale); 7516 EXPECT_EQ(2.f, GetStartingAnimationScale(child_raw));
7583 EXPECT_EQ(2.f, 7517 EXPECT_EQ(2.f, GetStartingAnimationScale(grand_child_raw));
7584 parent_raw->draw_properties().starting_animation_contents_scale);
7585 EXPECT_EQ(2.f,
7586 child_raw->draw_properties().starting_animation_contents_scale);
7587 EXPECT_EQ(
7588 2.f,
7589 grand_child_raw->draw_properties().starting_animation_contents_scale);
7590 7518
7591 gfx::Transform perspective_matrix; 7519 gfx::Transform perspective_matrix;
7592 perspective_matrix.ApplyPerspectiveDepth(2.f); 7520 perspective_matrix.ApplyPerspectiveDepth(2.f);
7593 child_raw->SetTransform(perspective_matrix); 7521 child_raw->SetTransform(perspective_matrix);
7594 grand_parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; 7522 grand_parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true;
7595 ExecuteCalculateDrawProperties(grand_parent_raw); 7523 ExecuteCalculateDrawProperties(grand_parent_raw);
7596 7524
7597 // |child| has a transform that's neither a translation nor a scale. 7525 // |child| has a transform that's neither a translation nor a scale.
7598 EXPECT_EQ( 7526 EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_parent_raw));
7599 0.f, 7527 EXPECT_EQ(10.f, GetMaximumAnimationScale(parent_raw));
7600 grand_parent_raw->draw_properties().maximum_animation_contents_scale); 7528 EXPECT_EQ(0.f, GetMaximumAnimationScale(child_raw));
7601 EXPECT_EQ(10.f, 7529 EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_child_raw));
7602 parent_raw->draw_properties().maximum_animation_contents_scale);
7603 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale);
7604 EXPECT_EQ(
7605 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
7606 7530
7607 EXPECT_EQ( 7531 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_parent_raw));
7608 0.f, 7532 EXPECT_EQ(2.f, GetStartingAnimationScale(parent_raw));
7609 grand_parent_raw->draw_properties().starting_animation_contents_scale); 7533 EXPECT_EQ(0.f, GetStartingAnimationScale(child_raw));
7610 EXPECT_EQ(2.f, 7534 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_child_raw));
7611 parent_raw->draw_properties().starting_animation_contents_scale);
7612 EXPECT_EQ(0.f,
7613 child_raw->draw_properties().starting_animation_contents_scale);
7614 EXPECT_EQ(
7615 0.f,
7616 grand_child_raw->draw_properties().starting_animation_contents_scale);
7617 7535
7618 parent_raw->SetTransform(perspective_matrix); 7536 parent_raw->SetTransform(perspective_matrix);
7619 grand_parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; 7537 grand_parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true;
7620 ExecuteCalculateDrawProperties(grand_parent_raw); 7538 ExecuteCalculateDrawProperties(grand_parent_raw);
7621 7539
7622 // |parent| and |child| have transforms that are neither translations nor 7540 // |parent| and |child| have transforms that are neither translations nor
7623 // scales. 7541 // scales.
7624 EXPECT_EQ( 7542 EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_parent_raw));
7625 0.f, 7543 EXPECT_EQ(0.f, GetMaximumAnimationScale(parent_raw));
7626 grand_parent_raw->draw_properties().maximum_animation_contents_scale); 7544 EXPECT_EQ(0.f, GetMaximumAnimationScale(child_raw));
7627 EXPECT_EQ(0.f, 7545 EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_child_raw));
7628 parent_raw->draw_properties().maximum_animation_contents_scale);
7629 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale);
7630 EXPECT_EQ(
7631 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
7632 7546
7633 EXPECT_EQ( 7547 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_parent_raw));
7634 0.f, 7548 EXPECT_EQ(0.f, GetStartingAnimationScale(parent_raw));
7635 grand_parent_raw->draw_properties().starting_animation_contents_scale); 7549 EXPECT_EQ(0.f, GetStartingAnimationScale(child_raw));
7636 EXPECT_EQ(0.f, 7550 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_child_raw));
7637 parent_raw->draw_properties().starting_animation_contents_scale);
7638 EXPECT_EQ(0.f,
7639 child_raw->draw_properties().starting_animation_contents_scale);
7640 EXPECT_EQ(
7641 0.f,
7642 grand_child_raw->draw_properties().starting_animation_contents_scale);
7643 7551
7644 parent_raw->SetTransform(identity_matrix); 7552 parent_raw->SetTransform(identity_matrix);
7645 child_raw->SetTransform(identity_matrix); 7553 child_raw->SetTransform(identity_matrix);
7646 grand_parent_raw->SetTransform(perspective_matrix); 7554 grand_parent_raw->SetTransform(perspective_matrix);
7647 grand_parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true; 7555 grand_parent_raw->layer_tree_impl()->property_trees()->needs_rebuild = true;
7648 7556
7649 ExecuteCalculateDrawProperties(grand_parent_raw); 7557 ExecuteCalculateDrawProperties(grand_parent_raw);
7650 7558
7651 // |grand_parent| has a transform that's neither a translation nor a scale. 7559 // |grand_parent| has a transform that's neither a translation nor a scale.
7652 EXPECT_EQ( 7560 EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_parent_raw));
7653 0.f, 7561 EXPECT_EQ(0.f, GetMaximumAnimationScale(parent_raw));
7654 grand_parent_raw->draw_properties().maximum_animation_contents_scale); 7562 EXPECT_EQ(0.f, GetMaximumAnimationScale(child_raw));
7655 EXPECT_EQ(0.f, 7563 EXPECT_EQ(0.f, GetMaximumAnimationScale(grand_child_raw));
7656 parent_raw->draw_properties().maximum_animation_contents_scale);
7657 EXPECT_EQ(0.f, child_raw->draw_properties().maximum_animation_contents_scale);
7658 EXPECT_EQ(
7659 0.f, grand_child_raw->draw_properties().maximum_animation_contents_scale);
7660 7564
7661 EXPECT_EQ( 7565 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_parent_raw));
7662 0.f, 7566 EXPECT_EQ(0.f, GetStartingAnimationScale(parent_raw));
7663 grand_parent_raw->draw_properties().starting_animation_contents_scale); 7567 EXPECT_EQ(0.f, GetStartingAnimationScale(child_raw));
7664 EXPECT_EQ(0.f, 7568 EXPECT_EQ(0.f, GetStartingAnimationScale(grand_child_raw));
7665 parent_raw->draw_properties().starting_animation_contents_scale);
7666 EXPECT_EQ(0.f,
7667 child_raw->draw_properties().starting_animation_contents_scale);
7668 EXPECT_EQ(
7669 0.f,
7670 grand_child_raw->draw_properties().starting_animation_contents_scale);
7671 } 7569 }
7672 7570
7673 static void GatherDrawnLayers(LayerImplList* rsll, 7571 static void GatherDrawnLayers(LayerImplList* rsll,
7674 std::set<LayerImpl*>* drawn_layers) { 7572 std::set<LayerImpl*>* drawn_layers) {
7675 for (LayerIterator it = LayerIterator::Begin(rsll), 7573 for (LayerIterator it = LayerIterator::Begin(rsll),
7676 end = LayerIterator::End(rsll); 7574 end = LayerIterator::End(rsll);
7677 it != end; ++it) { 7575 it != end; ++it) {
7678 LayerImpl* layer = *it; 7576 LayerImpl* layer = *it;
7679 if (it.represents_itself()) 7577 if (it.represents_itself())
7680 drawn_layers->insert(layer); 7578 drawn_layers->insert(layer);
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
8014 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true; 7912 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true;
8015 ExecuteCalculateDrawProperties(root_layer); 7913 ExecuteCalculateDrawProperties(root_layer);
8016 7914
8017 EXPECT_FLOAT_EQ(1.f, root_layer->GetIdealContentsScale()); 7915 EXPECT_FLOAT_EQ(1.f, root_layer->GetIdealContentsScale());
8018 EXPECT_FLOAT_EQ(3.f, child1_layer->GetIdealContentsScale()); 7916 EXPECT_FLOAT_EQ(3.f, child1_layer->GetIdealContentsScale());
8019 EXPECT_FLOAT_EQ( 7917 EXPECT_FLOAT_EQ(
8020 3.f, 7918 3.f,
8021 child1_layer->test_properties()->mask_layer->GetIdealContentsScale()); 7919 child1_layer->test_properties()->mask_layer->GetIdealContentsScale());
8022 EXPECT_FLOAT_EQ(5.f, child2_layer->GetIdealContentsScale()); 7920 EXPECT_FLOAT_EQ(5.f, child2_layer->GetIdealContentsScale());
8023 7921
8024 EXPECT_FLOAT_EQ( 7922 EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(root_layer));
8025 0.f, root_layer->draw_properties().maximum_animation_contents_scale); 7923 EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(child1_layer));
8026 EXPECT_FLOAT_EQ( 7924 EXPECT_FLOAT_EQ(8.f, GetMaximumAnimationScale(child2_layer));
8027 0.f, child1_layer->draw_properties().maximum_animation_contents_scale);
8028 EXPECT_FLOAT_EQ(
8029 8.f, child2_layer->draw_properties().maximum_animation_contents_scale);
8030 7925
8031 // Changing page-scale would affect ideal_contents_scale and 7926 // Changing page-scale would affect ideal_contents_scale and
8032 // maximum_animation_contents_scale. 7927 // maximum_animation_contents_scale.
8033 7928
8034 float page_scale_factor = 3.f; 7929 float page_scale_factor = 3.f;
8035 float device_scale_factor = 1.0f; 7930 float device_scale_factor = 1.0f;
8036 std::vector<LayerImpl*> render_surface_layer_list; 7931 std::vector<LayerImpl*> render_surface_layer_list;
8037 gfx::Size device_viewport_size = 7932 gfx::Size device_viewport_size =
8038 gfx::Size(root_layer->bounds().width() * device_scale_factor, 7933 gfx::Size(root_layer->bounds().width() * device_scale_factor,
8039 root_layer->bounds().height() * device_scale_factor); 7934 root_layer->bounds().height() * device_scale_factor);
8040 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 7935 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
8041 root_layer, device_viewport_size, &render_surface_layer_list); 7936 root_layer, device_viewport_size, &render_surface_layer_list);
8042 7937
8043 inputs.page_scale_factor = page_scale_factor; 7938 inputs.page_scale_factor = page_scale_factor;
8044 inputs.can_adjust_raster_scales = true; 7939 inputs.can_adjust_raster_scales = true;
8045 inputs.page_scale_layer = root_layer; 7940 inputs.page_scale_layer = root_layer;
8046 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); 7941 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs);
8047 7942
8048 EXPECT_FLOAT_EQ(3.f, root_layer->GetIdealContentsScale()); 7943 EXPECT_FLOAT_EQ(3.f, root_layer->GetIdealContentsScale());
8049 EXPECT_FLOAT_EQ(9.f, child1_layer->GetIdealContentsScale()); 7944 EXPECT_FLOAT_EQ(9.f, child1_layer->GetIdealContentsScale());
8050 EXPECT_FLOAT_EQ( 7945 EXPECT_FLOAT_EQ(
8051 9.f, 7946 9.f,
8052 child1_layer->test_properties()->mask_layer->GetIdealContentsScale()); 7947 child1_layer->test_properties()->mask_layer->GetIdealContentsScale());
8053 EXPECT_FLOAT_EQ(9.f, child1_layer->test_properties() 7948 EXPECT_FLOAT_EQ(9.f, child1_layer->test_properties()
8054 ->replica_layer->test_properties() 7949 ->replica_layer->test_properties()
8055 ->mask_layer->GetIdealContentsScale()); 7950 ->mask_layer->GetIdealContentsScale());
8056 EXPECT_FLOAT_EQ(15.f, child2_layer->GetIdealContentsScale()); 7951 EXPECT_FLOAT_EQ(15.f, child2_layer->GetIdealContentsScale());
8057 7952
8058 EXPECT_FLOAT_EQ( 7953 EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(root_layer));
8059 0.f, root_layer->draw_properties().maximum_animation_contents_scale); 7954 EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(child1_layer));
8060 EXPECT_FLOAT_EQ( 7955 EXPECT_FLOAT_EQ(24.f, GetMaximumAnimationScale(child2_layer));
8061 0.f, child1_layer->draw_properties().maximum_animation_contents_scale);
8062 EXPECT_FLOAT_EQ(
8063 24.f, child2_layer->draw_properties().maximum_animation_contents_scale);
8064 7956
8065 // Changing device-scale would affect ideal_contents_scale and 7957 // Changing device-scale would affect ideal_contents_scale and
8066 // maximum_animation_contents_scale. 7958 // maximum_animation_contents_scale.
8067 7959
8068 device_scale_factor = 4.0f; 7960 device_scale_factor = 4.0f;
8069 inputs.device_scale_factor = device_scale_factor; 7961 inputs.device_scale_factor = device_scale_factor;
8070 inputs.can_adjust_raster_scales = true; 7962 inputs.can_adjust_raster_scales = true;
8071 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true; 7963 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true;
8072 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); 7964 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs);
8073 7965
8074 EXPECT_FLOAT_EQ(12.f, root_layer->GetIdealContentsScale()); 7966 EXPECT_FLOAT_EQ(12.f, root_layer->GetIdealContentsScale());
8075 EXPECT_FLOAT_EQ(36.f, child1_layer->GetIdealContentsScale()); 7967 EXPECT_FLOAT_EQ(36.f, child1_layer->GetIdealContentsScale());
8076 EXPECT_FLOAT_EQ( 7968 EXPECT_FLOAT_EQ(
8077 36.f, 7969 36.f,
8078 child1_layer->test_properties()->mask_layer->GetIdealContentsScale()); 7970 child1_layer->test_properties()->mask_layer->GetIdealContentsScale());
8079 EXPECT_FLOAT_EQ(36.f, child1_layer->test_properties() 7971 EXPECT_FLOAT_EQ(36.f, child1_layer->test_properties()
8080 ->replica_layer->test_properties() 7972 ->replica_layer->test_properties()
8081 ->mask_layer->GetIdealContentsScale()); 7973 ->mask_layer->GetIdealContentsScale());
8082 EXPECT_FLOAT_EQ(60.f, child2_layer->GetIdealContentsScale()); 7974 EXPECT_FLOAT_EQ(60.f, child2_layer->GetIdealContentsScale());
8083 7975
8084 EXPECT_FLOAT_EQ( 7976 EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(root_layer));
8085 0.f, root_layer->draw_properties().maximum_animation_contents_scale); 7977 EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(child1_layer));
8086 EXPECT_FLOAT_EQ( 7978 EXPECT_FLOAT_EQ(96.f, GetMaximumAnimationScale(child2_layer));
8087 0.f, child1_layer->draw_properties().maximum_animation_contents_scale); 7979 }
8088 EXPECT_FLOAT_EQ( 7980
8089 96.f, child2_layer->draw_properties().maximum_animation_contents_scale); 7981 TEST_F(LayerTreeHostCommonTest, AnimationScales) {
7982 FakeImplTaskRunnerProvider task_runner_provider;
7983 TestSharedBitmapManager shared_bitmap_manager;
7984 TestTaskGraphRunner task_graph_runner;
7985 LayerTreeSettings settings = host()->settings();
7986 settings.layer_transforms_should_scale_layer_contents = true;
7987 FakeLayerTreeHostImpl host_impl(settings, &task_runner_provider,
7988 &shared_bitmap_manager, &task_graph_runner);
7989
7990 std::unique_ptr<LayerImpl> root =
7991 LayerImpl::Create(host_impl.active_tree(), 1);
7992 LayerImpl* root_layer = root.get();
7993 std::unique_ptr<LayerImpl> child1 =
7994 LayerImpl::Create(host_impl.active_tree(), 2);
7995 LayerImpl* child1_layer = child1.get();
7996 std::unique_ptr<LayerImpl> child2 =
7997 LayerImpl::Create(host_impl.active_tree(), 3);
7998 LayerImpl* child2_layer = child2.get();
7999
8000 root->test_properties()->AddChild(std::move(child1));
8001 child1_layer->test_properties()->AddChild(std::move(child2));
8002 // root->test_properties()->force_render_surface = true;
8003 // root->SetDrawsContent(true);
jaydasika 2016/06/30 19:56:50 Remove commented code.
8004 host_impl.active_tree()->SetRootLayerForTesting(std::move(root));
8005
8006 host_impl.active_tree()->SetElementIdsForTesting();
8007
8008 gfx::Transform identity_matrix, scale_transform_child1,
8009 scale_transform_child2;
8010 scale_transform_child1.Scale(2, 3);
8011 scale_transform_child2.Scale(4, 5);
8012
8013 SetLayerPropertiesForTesting(root_layer, identity_matrix, gfx::Point3F(),
8014 gfx::PointF(), gfx::Size(1, 1), true, false,
8015 true);
8016 SetLayerPropertiesForTesting(child1_layer, scale_transform_child1,
8017 gfx::Point3F(), gfx::PointF(), gfx::Size(1, 1),
8018 true, false, false);
8019
8020 TransformOperations scale;
8021 scale.AppendScale(5.f, 8.f, 3.f);
8022
8023 scoped_refptr<AnimationTimeline> timeline =
8024 AnimationTimeline::Create(AnimationIdProvider::NextTimelineId());
8025 host_impl.animation_host()->AddAnimationTimeline(timeline);
8026
8027 AddAnimatedTransformToElementWithPlayer(child2_layer->element_id(), timeline,
8028 1.0, TransformOperations(), scale);
8029
8030 SetLayerPropertiesForTesting(child2_layer, scale_transform_child2,
8031 gfx::Point3F(), gfx::PointF(), gfx::Size(1, 1),
8032 true, false, false);
8033
8034 // Correctly computes animation scale when rebuilding property trees
8035 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true;
8036 ExecuteCalculateDrawProperties(root_layer);
8037
8038 EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(root_layer));
8039 EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(child1_layer));
8040 EXPECT_FLOAT_EQ(24.f, GetMaximumAnimationScale(child2_layer));
8041
8042 EXPECT_FLOAT_EQ(0.f, GetStartingAnimationScale(root_layer));
8043 EXPECT_FLOAT_EQ(0.f, GetStartingAnimationScale(child1_layer));
8044 EXPECT_FLOAT_EQ(3.f, GetStartingAnimationScale(child2_layer));
8045
8046 // Correctly updates animation scale when layer property changes
8047 child1_layer->SetTransform(identity_matrix);
8048 child1_layer->UpdatePropertyTreeTransform();
8049 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = false;
8050 ExecuteCalculateDrawProperties(root_layer);
8051 EXPECT_FLOAT_EQ(8.f, GetMaximumAnimationScale(child2_layer));
8052 EXPECT_FLOAT_EQ(1.f, GetStartingAnimationScale(child2_layer));
8053
8054 // Do not update animation scale if already updated
8055 host_impl.active_tree()->property_trees()->SetAnimationScalesForTesting(
8056 child2_layer->transform_tree_index(), 100.f, 100.f);
8057 EXPECT_FLOAT_EQ(100.f, GetMaximumAnimationScale(child2_layer));
8058 EXPECT_FLOAT_EQ(100.f, GetStartingAnimationScale(child2_layer));
8059 }
8060
8061 TEST_F(LayerTreeHostCommonTest,
8062 AnimationScaleWhenLayerTransformShouldNotScaleLayerBounds) {
8063 // Returns empty scale if layer_transforms_should_scale_layer_contents is
8064 // false
8065 FakeImplTaskRunnerProvider task_runner_provider;
8066 TestSharedBitmapManager shared_bitmap_manager;
8067 TestTaskGraphRunner task_graph_runner;
8068 LayerTreeSettings settings = host()->settings();
8069 settings.layer_transforms_should_scale_layer_contents = false;
8070 FakeLayerTreeHostImpl host_impl(settings, &task_runner_provider,
8071 &shared_bitmap_manager, &task_graph_runner);
8072
8073 std::unique_ptr<LayerImpl> root =
8074 LayerImpl::Create(host_impl.active_tree(), 1);
8075 LayerImpl* root_layer = root.get();
8076 std::unique_ptr<LayerImpl> child =
8077 LayerImpl::Create(host_impl.active_tree(), 2);
8078 LayerImpl* child_layer = child.get();
8079
8080 root->test_properties()->AddChild(std::move(child));
8081 host_impl.active_tree()->SetRootLayerForTesting(std::move(root));
8082
8083 host_impl.active_tree()->SetElementIdsForTesting();
8084
8085 gfx::Transform identity_matrix, scale_transform_child;
8086 scale_transform_child.Scale(4, 5);
8087
8088 SetLayerPropertiesForTesting(root_layer, identity_matrix, gfx::Point3F(),
8089 gfx::PointF(), gfx::Size(1, 1), true, false,
8090 true);
8091 TransformOperations scale;
8092 scale.AppendScale(5.f, 8.f, 3.f);
8093
8094 scoped_refptr<AnimationTimeline> timeline =
8095 AnimationTimeline::Create(AnimationIdProvider::NextTimelineId());
8096 host_impl.animation_host()->AddAnimationTimeline(timeline);
8097
8098 AddAnimatedTransformToElementWithPlayer(child_layer->element_id(), timeline,
8099 1.0, TransformOperations(), scale);
8100
8101 SetLayerPropertiesForTesting(child_layer, scale_transform_child,
8102 gfx::Point3F(), gfx::PointF(), gfx::Size(1, 1),
8103 true, false, false);
8104
8105 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true;
8106 ExecuteCalculateDrawProperties(root_layer);
8107
8108 EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(root_layer));
8109 EXPECT_FLOAT_EQ(0.f, GetMaximumAnimationScale(child_layer));
8110
8111 EXPECT_FLOAT_EQ(0.f, GetStartingAnimationScale(root_layer));
8112 EXPECT_FLOAT_EQ(0.f, GetStartingAnimationScale(child_layer));
8090 } 8113 }
8091 8114
8092 TEST_F(LayerTreeHostCommonTest, VisibleContentRectInChildRenderSurface) { 8115 TEST_F(LayerTreeHostCommonTest, VisibleContentRectInChildRenderSurface) {
8093 LayerImpl* root = root_layer_for_testing(); 8116 LayerImpl* root = root_layer_for_testing();
8094 LayerImpl* clip = AddChild<LayerImpl>(root); 8117 LayerImpl* clip = AddChild<LayerImpl>(root);
8095 LayerImpl* content = AddChild<LayerImpl>(clip); 8118 LayerImpl* content = AddChild<LayerImpl>(clip);
8096 8119
8097 const gfx::Transform identity_matrix; 8120 const gfx::Transform identity_matrix;
8098 SetLayerPropertiesForTesting(root, identity_matrix, gfx::Point3F(), 8121 SetLayerPropertiesForTesting(root, identity_matrix, gfx::Point3F(),
8099 gfx::PointF(), gfx::Size(768 / 2, 3000), true, 8122 gfx::PointF(), gfx::Size(768 / 2, 3000), true,
(...skipping 2295 matching lines...) Expand 10 before | Expand all | Expand 10 after
10395 EXPECT_EQ(scroll_child6.id, grand_child10->scroll_tree_index()); 10418 EXPECT_EQ(scroll_child6.id, grand_child10->scroll_tree_index());
10396 EXPECT_EQ(scroll_root1.id, parent3->scroll_tree_index()); 10419 EXPECT_EQ(scroll_root1.id, parent3->scroll_tree_index());
10397 EXPECT_EQ(scroll_child7.id, child8->scroll_tree_index()); 10420 EXPECT_EQ(scroll_child7.id, child8->scroll_tree_index());
10398 EXPECT_EQ(scroll_root1.id, parent4->scroll_tree_index()); 10421 EXPECT_EQ(scroll_root1.id, parent4->scroll_tree_index());
10399 EXPECT_EQ(scroll_root1.id, child9->scroll_tree_index()); 10422 EXPECT_EQ(scroll_root1.id, child9->scroll_tree_index());
10400 EXPECT_EQ(scroll_root1.id, grand_child12->scroll_tree_index()); 10423 EXPECT_EQ(scroll_root1.id, grand_child12->scroll_tree_index());
10401 } 10424 }
10402 10425
10403 } // namespace 10426 } // namespace
10404 } // namespace cc 10427 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698