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

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

Issue 2762123004: cc: LayerTreeHostImpl uses element id to tick animations (Closed)
Patch Set: remove accidental debug print Created 3 years, 9 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/damage_tracker.h" 5 #include "cc/trees/damage_tracker.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "cc/base/filter_operation.h" 9 #include "cc/base/filter_operation.h"
10 #include "cc/base/filter_operations.h" 10 #include "cc/base/filter_operations.h"
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 99
100 for (int i = 0; i < number_of_children; ++i) { 100 for (int i = 0; i < number_of_children; ++i) {
101 std::unique_ptr<LayerImpl> child = 101 std::unique_ptr<LayerImpl> child =
102 LayerImpl::Create(host_impl_.active_tree(), 2 + i); 102 LayerImpl::Create(host_impl_.active_tree(), 2 + i);
103 child->SetPosition(gfx::PointF(100.f, 100.f)); 103 child->SetPosition(gfx::PointF(100.f, 100.f));
104 child->SetBounds(gfx::Size(30, 30)); 104 child->SetBounds(gfx::Size(30, 30));
105 child->SetDrawsContent(true); 105 child->SetDrawsContent(true);
106 root->test_properties()->AddChild(std::move(child)); 106 root->test_properties()->AddChild(std::move(child));
107 } 107 }
108 host_impl_.active_tree()->SetRootLayerForTesting(std::move(root)); 108 host_impl_.active_tree()->SetRootLayerForTesting(std::move(root));
109 host_impl_.active_tree()->SetElementIdsForTesting();
109 110
110 return host_impl_.active_tree()->root_layer_for_testing(); 111 return host_impl_.active_tree()->root_layer_for_testing();
111 } 112 }
112 113
113 LayerImpl* CreateTestTreeWithTwoSurfaces() { 114 LayerImpl* CreateTestTreeWithTwoSurfaces() {
114 // This test tree has two render surfaces: one for the root, and one for 115 // This test tree has two render surfaces: one for the root, and one for
115 // child1. Additionally, the root has a second child layer, and child1 has 116 // child1. Additionally, the root has a second child layer, and child1 has
116 // two children of its own. 117 // two children of its own.
117 118
118 host_impl_.active_tree()->DetachLayers(); 119 host_impl_.active_tree()->DetachLayers();
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 151
151 grand_child2->SetPosition(gfx::PointF(190.f, 190.f)); 152 grand_child2->SetPosition(gfx::PointF(190.f, 190.f));
152 grand_child2->SetBounds(gfx::Size(6, 8)); 153 grand_child2->SetBounds(gfx::Size(6, 8));
153 grand_child2->SetDrawsContent(true); 154 grand_child2->SetDrawsContent(true);
154 155
155 child1->test_properties()->AddChild(std::move(grand_child1)); 156 child1->test_properties()->AddChild(std::move(grand_child1));
156 child1->test_properties()->AddChild(std::move(grand_child2)); 157 child1->test_properties()->AddChild(std::move(grand_child2));
157 root->test_properties()->AddChild(std::move(child1)); 158 root->test_properties()->AddChild(std::move(child1));
158 root->test_properties()->AddChild(std::move(child2)); 159 root->test_properties()->AddChild(std::move(child2));
159 host_impl_.active_tree()->SetRootLayerForTesting(std::move(root)); 160 host_impl_.active_tree()->SetRootLayerForTesting(std::move(root));
161 host_impl_.active_tree()->SetElementIdsForTesting();
160 162
161 return host_impl_.active_tree()->root_layer_for_testing(); 163 return host_impl_.active_tree()->root_layer_for_testing();
162 } 164 }
163 165
164 LayerImpl* CreateAndSetUpTestTreeWithOneSurface(int number_of_children = 1) { 166 LayerImpl* CreateAndSetUpTestTreeWithOneSurface(int number_of_children = 1) {
165 LayerImpl* root = CreateTestTreeWithOneSurface(number_of_children); 167 LayerImpl* root = CreateTestTreeWithOneSurface(number_of_children);
166 168
167 // Setup includes going past the first frame which always damages 169 // Setup includes going past the first frame which always damages
168 // everything, so that we can actually perform specific tests. 170 // everything, so that we can actually perform specific tests.
169 root->layer_tree_impl()->property_trees()->needs_rebuild = true; 171 root->layer_tree_impl()->property_trees()->needs_rebuild = true;
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 LayerImpl* root = CreateAndSetUpTestTreeWithOneSurface(); 388 LayerImpl* root = CreateAndSetUpTestTreeWithOneSurface();
387 LayerImpl* child = root->test_properties()->children[0]; 389 LayerImpl* child = root->test_properties()->children[0];
388 390
389 // CASE 1: The layer's property changed flag takes priority over update rect. 391 // CASE 1: The layer's property changed flag takes priority over update rect.
390 // 392 //
391 child->test_properties()->force_render_surface = true; 393 child->test_properties()->force_render_surface = true;
392 root->layer_tree_impl()->property_trees()->needs_rebuild = true; 394 root->layer_tree_impl()->property_trees()->needs_rebuild = true;
393 EmulateDrawingOneFrame(root); 395 EmulateDrawingOneFrame(root);
394 ClearDamageForAllSurfaces(root); 396 ClearDamageForAllSurfaces(root);
395 child->SetUpdateRect(gfx::Rect(10, 11, 12, 13)); 397 child->SetUpdateRect(gfx::Rect(10, 11, 12, 13));
396 root->layer_tree_impl()->property_trees()->effect_tree.OnOpacityAnimated( 398 root->layer_tree_impl()->SetTreeLayerOpacityMutated(child->element_id(),
397 0.5f, child->effect_tree_index(), root->layer_tree_impl()); 399 0.5f);
398 EmulateDrawingOneFrame(root); 400 EmulateDrawingOneFrame(root);
399 401
400 ASSERT_EQ(2u, root->GetRenderSurface()->layer_list().size()); 402 ASSERT_EQ(2u, root->GetRenderSurface()->layer_list().size());
401 403
402 // Damage should be the entire child layer in target_surface space. 404 // Damage should be the entire child layer in target_surface space.
403 gfx::Rect expected_rect = gfx::Rect(100, 100, 30, 30); 405 gfx::Rect expected_rect = gfx::Rect(100, 100, 30, 30);
404 gfx::Rect root_damage_rect; 406 gfx::Rect root_damage_rect;
405 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid( 407 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid(
406 &root_damage_rect)); 408 &root_damage_rect));
407 EXPECT_EQ(expected_rect.ToString(), root_damage_rect.ToString()); 409 EXPECT_EQ(expected_rect.ToString(), root_damage_rect.ToString());
408 410
409 // CASE 2: If a layer moves due to property change, it damages both the new 411 // CASE 2: If a layer moves due to property change, it damages both the new
410 // location and the old (exposed) location. The old location is the 412 // location and the old (exposed) location. The old location is the
411 // entire old layer, not just the update_rect. 413 // entire old layer, not just the update_rect.
412 414
413 // Cycle one frame of no change, just to sanity check that the next rect is 415 // Cycle one frame of no change, just to sanity check that the next rect is
414 // not because of the old damage state. 416 // not because of the old damage state.
415 ClearDamageForAllSurfaces(root); 417 ClearDamageForAllSurfaces(root);
416 root->layer_tree_impl()->property_trees()->needs_rebuild = true; 418 root->layer_tree_impl()->property_trees()->needs_rebuild = true;
417 EmulateDrawingOneFrame(root); 419 EmulateDrawingOneFrame(root);
418 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid( 420 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid(
419 &root_damage_rect)); 421 &root_damage_rect));
420 EXPECT_TRUE(root_damage_rect.IsEmpty()); 422 EXPECT_TRUE(root_damage_rect.IsEmpty());
421 423
422 // Then, test the actual layer movement. 424 // Then, test the actual layer movement.
423 ClearDamageForAllSurfaces(root); 425 ClearDamageForAllSurfaces(root);
424 gfx::Transform translation; 426 gfx::Transform translation;
425 translation.Translate(100.f, 130.f); 427 translation.Translate(100.f, 130.f);
426 root->layer_tree_impl()->property_trees()->transform_tree.OnTransformAnimated( 428 root->layer_tree_impl()->SetTreeLayerTransformMutated(child->element_id(),
427 translation, child->transform_tree_index(), root->layer_tree_impl()); 429 translation);
428 EmulateDrawingOneFrame(root); 430 EmulateDrawingOneFrame(root);
429 431
430 // Expect damage to be the combination of the previous one and the new one. 432 // Expect damage to be the combination of the previous one and the new one.
431 expected_rect.Union(gfx::Rect(200, 230, 30, 30)); 433 expected_rect.Union(gfx::Rect(200, 230, 30, 30));
432 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid( 434 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid(
433 &root_damage_rect)); 435 &root_damage_rect));
434 EXPECT_FLOAT_RECT_EQ(expected_rect, root_damage_rect); 436 EXPECT_FLOAT_RECT_EQ(expected_rect, root_damage_rect);
435 } 437 }
436 438
437 TEST_F(DamageTrackerTest, VerifyDamageWhenSurfaceRemoved) { 439 TEST_F(DamageTrackerTest, VerifyDamageWhenSurfaceRemoved) {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 // Sanity check that the layer actually moved to (85, 85), damaging its old 477 // Sanity check that the layer actually moved to (85, 85), damaging its old
476 // location and new location. 478 // location and new location.
477 gfx::Rect root_damage_rect; 479 gfx::Rect root_damage_rect;
478 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid( 480 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid(
479 &root_damage_rect)); 481 &root_damage_rect));
480 EXPECT_EQ(gfx::Rect(85, 85, 45, 45).ToString(), root_damage_rect.ToString()); 482 EXPECT_EQ(gfx::Rect(85, 85, 45, 45).ToString(), root_damage_rect.ToString());
481 483
482 // With the anchor on the layer's center, now we can test the rotation more 484 // With the anchor on the layer's center, now we can test the rotation more
483 // intuitively, since it applies about the layer's anchor. 485 // intuitively, since it applies about the layer's anchor.
484 ClearDamageForAllSurfaces(root); 486 ClearDamageForAllSurfaces(root);
485 root->layer_tree_impl()->property_trees()->transform_tree.OnTransformAnimated( 487 root->layer_tree_impl()->SetTreeLayerTransformMutated(child->element_id(),
486 rotation, child->transform_tree_index(), root->layer_tree_impl()); 488 rotation);
487 EmulateDrawingOneFrame(root); 489 EmulateDrawingOneFrame(root);
488 490
489 // Since the child layer is square, rotation by 45 degrees about the center 491 // Since the child layer is square, rotation by 45 degrees about the center
490 // should increase the size of the expected rect by sqrt(2), centered around 492 // should increase the size of the expected rect by sqrt(2), centered around
491 // (100, 100). The old exposed region should be fully contained in the new 493 // (100, 100). The old exposed region should be fully contained in the new
492 // region. 494 // region.
493 float expected_width = 30.f * sqrt(2.f); 495 float expected_width = 30.f * sqrt(2.f);
494 float expected_position = 100.f - 0.5f * expected_width; 496 float expected_position = 100.f - 0.5f * expected_width;
495 gfx::Rect expected_rect = gfx::ToEnclosingRect(gfx::RectF( 497 gfx::Rect expected_rect = gfx::ToEnclosingRect(gfx::RectF(
496 expected_position, expected_position, expected_width, expected_width)); 498 expected_position, expected_position, expected_width, expected_width));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 gfx::RectF test_rect(child->position(), gfx::SizeF(child->bounds())); 535 gfx::RectF test_rect(child->position(), gfx::SizeF(child->bounds()));
534 bool clipped = false; 536 bool clipped = false;
535 MathUtil::MapQuad(transform, gfx::QuadF(test_rect), &clipped); 537 MathUtil::MapQuad(transform, gfx::QuadF(test_rect), &clipped);
536 EXPECT_TRUE(clipped); 538 EXPECT_TRUE(clipped);
537 539
538 // Damage the child without moving it. 540 // Damage the child without moving it.
539 child->test_properties()->force_render_surface = true; 541 child->test_properties()->force_render_surface = true;
540 root->layer_tree_impl()->property_trees()->needs_rebuild = true; 542 root->layer_tree_impl()->property_trees()->needs_rebuild = true;
541 EmulateDrawingOneFrame(root); 543 EmulateDrawingOneFrame(root);
542 ClearDamageForAllSurfaces(root); 544 ClearDamageForAllSurfaces(root);
543 root->layer_tree_impl()->property_trees()->effect_tree.OnOpacityAnimated( 545 root->layer_tree_impl()->SetTreeLayerOpacityMutated(child->element_id(),
544 0.5f, child->effect_tree_index(), root->layer_tree_impl()); 546 0.5f);
545 EmulateDrawingOneFrame(root); 547 EmulateDrawingOneFrame(root);
546 548
547 // The expected damage should cover the entire root surface (500x500), but we 549 // The expected damage should cover the entire root surface (500x500), but we
548 // don't care whether the damage rect was clamped or is larger than the 550 // don't care whether the damage rect was clamped or is larger than the
549 // surface for this test. 551 // surface for this test.
550 gfx::Rect root_damage_rect; 552 gfx::Rect root_damage_rect;
551 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid( 553 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid(
552 &root_damage_rect)); 554 &root_damage_rect));
553 gfx::Rect damage_we_care_about = gfx::Rect(gfx::Size(500, 500)); 555 gfx::Rect damage_we_care_about = gfx::Rect(gfx::Size(500, 500));
554 EXPECT_TRUE(root_damage_rect.Contains(damage_we_care_about)); 556 EXPECT_TRUE(root_damage_rect.Contains(damage_we_care_about));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
594 596
595 FilterOperations filters; 597 FilterOperations filters;
596 filters.Append(FilterOperation::CreateReferenceFilter( 598 filters.Append(FilterOperation::CreateReferenceFilter(
597 SkBlurImageFilter::Make(2, 2, nullptr))); 599 SkBlurImageFilter::Make(2, 2, nullptr)));
598 600
599 // Setting the filter will damage the whole surface. 601 // Setting the filter will damage the whole surface.
600 ClearDamageForAllSurfaces(root); 602 ClearDamageForAllSurfaces(root);
601 child->test_properties()->force_render_surface = true; 603 child->test_properties()->force_render_surface = true;
602 root->layer_tree_impl()->property_trees()->needs_rebuild = true; 604 root->layer_tree_impl()->property_trees()->needs_rebuild = true;
603 EmulateDrawingOneFrame(root); 605 EmulateDrawingOneFrame(root);
604 child->layer_tree_impl()->property_trees()->effect_tree.OnFilterAnimated( 606 child->layer_tree_impl()->SetTreeLayerFilterMutated(child->element_id(),
605 filters, child->effect_tree_index(), child->layer_tree_impl()); 607 filters);
606 EmulateDrawingOneFrame(root); 608 EmulateDrawingOneFrame(root);
607 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid( 609 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid(
608 &root_damage_rect)); 610 &root_damage_rect));
609 EXPECT_TRUE(child->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid( 611 EXPECT_TRUE(child->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid(
610 &child_damage_rect)); 612 &child_damage_rect));
611 613
612 // gfx::Rect(100, 100, 30, 30), expanded by 6px for the 2px blur filter. 614 // gfx::Rect(100, 100, 30, 30), expanded by 6px for the 2px blur filter.
613 EXPECT_EQ(gfx::Rect(94, 94, 42, 42), root_damage_rect); 615 EXPECT_EQ(gfx::Rect(94, 94, 42, 42), root_damage_rect);
614 616
615 // gfx::Rect(0, 0, 30, 30), expanded by 6px for the 2px blur filter. 617 // gfx::Rect(0, 0, 30, 30), expanded by 6px for the 2px blur filter.
(...skipping 29 matching lines...) Expand all
645 SkBlurImageFilter::Make(2, 2, nullptr))); 647 SkBlurImageFilter::Make(2, 2, nullptr)));
646 648
647 // Setting the filter will damage the whole surface. 649 // Setting the filter will damage the whole surface.
648 gfx::Transform transform; 650 gfx::Transform transform;
649 transform.RotateAboutYAxis(60); 651 transform.RotateAboutYAxis(60);
650 ClearDamageForAllSurfaces(root); 652 ClearDamageForAllSurfaces(root);
651 child->test_properties()->force_render_surface = true; 653 child->test_properties()->force_render_surface = true;
652 child->test_properties()->transform = transform; 654 child->test_properties()->transform = transform;
653 root->layer_tree_impl()->property_trees()->needs_rebuild = true; 655 root->layer_tree_impl()->property_trees()->needs_rebuild = true;
654 EmulateDrawingOneFrame(root); 656 EmulateDrawingOneFrame(root);
655 child->layer_tree_impl()->property_trees()->effect_tree.OnFilterAnimated( 657 child->layer_tree_impl()->SetTreeLayerFilterMutated(child->element_id(),
656 filters, child->effect_tree_index(), child->layer_tree_impl()); 658 filters);
657 EmulateDrawingOneFrame(root); 659 EmulateDrawingOneFrame(root);
658 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid( 660 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid(
659 &root_damage_rect)); 661 &root_damage_rect));
660 EXPECT_TRUE(child->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid( 662 EXPECT_TRUE(child->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid(
661 &child_damage_rect)); 663 &child_damage_rect));
662 664
663 // Blur outset is 6px for a 2px blur. 665 // Blur outset is 6px for a 2px blur.
664 int blur_outset = 6; 666 int blur_outset = 6;
665 int rotated_outset_left = blur_outset / 2; 667 int rotated_outset_left = blur_outset / 2;
666 int expected_rotated_width = (30 + 2 * blur_outset) / 2; 668 int expected_rotated_width = (30 + 2 * blur_outset) / 2;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 703
702 FilterOperations filters; 704 FilterOperations filters;
703 filters.Append(FilterOperation::CreateBlurFilter(3.f)); 705 filters.Append(FilterOperation::CreateBlurFilter(3.f));
704 706
705 // Setting the filter will damage the whole surface. 707 // Setting the filter will damage the whole surface.
706 ClearDamageForAllSurfaces(root); 708 ClearDamageForAllSurfaces(root);
707 child->test_properties()->force_render_surface = true; 709 child->test_properties()->force_render_surface = true;
708 root->layer_tree_impl()->property_trees()->needs_rebuild = true; 710 root->layer_tree_impl()->property_trees()->needs_rebuild = true;
709 int device_scale_factor = 2; 711 int device_scale_factor = 2;
710 EmulateDrawingOneFrame(root, device_scale_factor); 712 EmulateDrawingOneFrame(root, device_scale_factor);
711 child->layer_tree_impl()->property_trees()->effect_tree.OnFilterAnimated( 713 child->layer_tree_impl()->SetTreeLayerFilterMutated(child->element_id(),
712 filters, child->effect_tree_index(), child->layer_tree_impl()); 714 filters);
713 EmulateDrawingOneFrame(root, device_scale_factor); 715 EmulateDrawingOneFrame(root, device_scale_factor);
714 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid( 716 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid(
715 &root_damage_rect)); 717 &root_damage_rect));
716 EXPECT_TRUE(child->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid( 718 EXPECT_TRUE(child->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid(
717 &child_damage_rect)); 719 &child_damage_rect));
718 720
719 // Blur outset is 9px for a 3px blur, scaled up by DSF. 721 // Blur outset is 9px for a 3px blur, scaled up by DSF.
720 int blur_outset = 9 * device_scale_factor; 722 int blur_outset = 9 * device_scale_factor;
721 gfx::Rect original_rect(100, 100, 100, 100); 723 gfx::Rect original_rect(100, 100, 100, 100);
722 gfx::Rect expected_child_damage_rect(60, 60); 724 gfx::Rect expected_child_damage_rect(60, 60);
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
1002 child2->test_properties()->force_render_surface = true; 1004 child2->test_properties()->force_render_surface = true;
1003 grand_child1->test_properties()->force_render_surface = true; 1005 grand_child1->test_properties()->force_render_surface = true;
1004 root->layer_tree_impl()->property_trees()->needs_rebuild = true; 1006 root->layer_tree_impl()->property_trees()->needs_rebuild = true;
1005 EmulateDrawingOneFrame(root); 1007 EmulateDrawingOneFrame(root);
1006 gfx::Rect child_damage_rect; 1008 gfx::Rect child_damage_rect;
1007 gfx::Rect root_damage_rect; 1009 gfx::Rect root_damage_rect;
1008 1010
1009 // CASE 1: Damage to a descendant surface should propagate properly to 1011 // CASE 1: Damage to a descendant surface should propagate properly to
1010 // ancestor surface. 1012 // ancestor surface.
1011 ClearDamageForAllSurfaces(root); 1013 ClearDamageForAllSurfaces(root);
1012 root->layer_tree_impl()->property_trees()->effect_tree.OnOpacityAnimated( 1014 root->layer_tree_impl()->SetTreeLayerOpacityMutated(
1013 0.5f, grand_child1->effect_tree_index(), root->layer_tree_impl()); 1015 grand_child1->element_id(), 0.5f);
1014 EmulateDrawingOneFrame(root); 1016 EmulateDrawingOneFrame(root);
1015 EXPECT_TRUE( 1017 EXPECT_TRUE(
1016 child1->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid( 1018 child1->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid(
1017 &child_damage_rect)); 1019 &child_damage_rect));
1018 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid( 1020 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid(
1019 &root_damage_rect)); 1021 &root_damage_rect));
1020 EXPECT_EQ(gfx::Rect(200, 200, 6, 8).ToString(), child_damage_rect.ToString()); 1022 EXPECT_EQ(gfx::Rect(200, 200, 6, 8).ToString(), child_damage_rect.ToString());
1021 EXPECT_EQ(gfx::Rect(300, 300, 6, 8).ToString(), root_damage_rect.ToString()); 1023 EXPECT_EQ(gfx::Rect(300, 300, 6, 8).ToString(), root_damage_rect.ToString());
1022 1024
1023 // CASE 2: Same as previous case, but with additional damage elsewhere that 1025 // CASE 2: Same as previous case, but with additional damage elsewhere that
1024 // should be properly unioned. 1026 // should be properly unioned.
1025 // - child1 surface damage in root surface space: 1027 // - child1 surface damage in root surface space:
1026 // gfx::Rect(300, 300, 6, 8); 1028 // gfx::Rect(300, 300, 6, 8);
1027 // - child2 damage in root surface space: 1029 // - child2 damage in root surface space:
1028 // gfx::Rect(11, 11, 18, 18); 1030 // gfx::Rect(11, 11, 18, 18);
1029 ClearDamageForAllSurfaces(root); 1031 ClearDamageForAllSurfaces(root);
1030 root->layer_tree_impl()->property_trees()->effect_tree.OnOpacityAnimated( 1032 root->layer_tree_impl()->SetTreeLayerOpacityMutated(
1031 0.7f, grand_child1->effect_tree_index(), root->layer_tree_impl()); 1033 grand_child1->element_id(), 0.7f);
1032 root->layer_tree_impl()->property_trees()->effect_tree.OnOpacityAnimated( 1034 root->layer_tree_impl()->SetTreeLayerOpacityMutated(child2->element_id(),
1033 0.7f, child2->effect_tree_index(), root->layer_tree_impl()); 1035 0.7f);
1034 EmulateDrawingOneFrame(root); 1036 EmulateDrawingOneFrame(root);
1035 EXPECT_TRUE( 1037 EXPECT_TRUE(
1036 child1->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid( 1038 child1->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid(
1037 &child_damage_rect)); 1039 &child_damage_rect));
1038 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid( 1040 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid(
1039 &root_damage_rect)); 1041 &root_damage_rect));
1040 EXPECT_EQ(gfx::Rect(200, 200, 6, 8).ToString(), child_damage_rect.ToString()); 1042 EXPECT_EQ(gfx::Rect(200, 200, 6, 8).ToString(), child_damage_rect.ToString());
1041 EXPECT_EQ(gfx::Rect(11, 11, 295, 297).ToString(), 1043 EXPECT_EQ(gfx::Rect(11, 11, 295, 297).ToString(),
1042 root_damage_rect.ToString()); 1044 root_damage_rect.ToString());
1043 } 1045 }
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1092 // transforming it, while the root surface would be damaged appropriately. 1094 // transforming it, while the root surface would be damaged appropriately.
1093 1095
1094 LayerImpl* root = CreateAndSetUpTestTreeWithTwoSurfaces(); 1096 LayerImpl* root = CreateAndSetUpTestTreeWithTwoSurfaces();
1095 LayerImpl* child1 = root->test_properties()->children[0]; 1097 LayerImpl* child1 = root->test_properties()->children[0];
1096 gfx::Rect child_damage_rect; 1098 gfx::Rect child_damage_rect;
1097 gfx::Rect root_damage_rect; 1099 gfx::Rect root_damage_rect;
1098 1100
1099 ClearDamageForAllSurfaces(root); 1101 ClearDamageForAllSurfaces(root);
1100 gfx::Transform translation; 1102 gfx::Transform translation;
1101 translation.Translate(-50.f, -50.f); 1103 translation.Translate(-50.f, -50.f);
1102 root->layer_tree_impl()->property_trees()->transform_tree.OnTransformAnimated( 1104 root->layer_tree_impl()->SetTreeLayerTransformMutated(child1->element_id(),
1103 translation, child1->transform_tree_index(), root->layer_tree_impl()); 1105 translation);
1104 EmulateDrawingOneFrame(root); 1106 EmulateDrawingOneFrame(root);
1105 EXPECT_TRUE( 1107 EXPECT_TRUE(
1106 child1->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid( 1108 child1->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid(
1107 &child_damage_rect)); 1109 &child_damage_rect));
1108 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid( 1110 EXPECT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid(
1109 &root_damage_rect)); 1111 &root_damage_rect));
1110 1112
1111 // The new surface bounds should be damaged entirely. 1113 // The new surface bounds should be damaged entirely.
1112 EXPECT_EQ(gfx::Rect(190, 190, 16, 18).ToString(), 1114 EXPECT_EQ(gfx::Rect(190, 190, 16, 18).ToString(),
1113 child_damage_rect.ToString()); 1115 child_damage_rect.ToString());
(...skipping 597 matching lines...) Expand 10 before | Expand all | Expand 10 after
1711 ASSERT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid( 1713 ASSERT_TRUE(root->GetRenderSurface()->damage_tracker()->GetDamageRectIfValid(
1712 &damage_rect)); 1714 &damage_rect));
1713 EXPECT_TRUE(damage_rect.Contains(root->GetRenderSurface()->content_rect())); 1715 EXPECT_TRUE(damage_rect.Contains(root->GetRenderSurface()->content_rect()));
1714 EXPECT_TRUE(damage_rect.Contains( 1716 EXPECT_TRUE(damage_rect.Contains(
1715 gfx::ToEnclosingRect(child1->GetRenderSurface()->DrawableContentRect()))); 1717 gfx::ToEnclosingRect(child1->GetRenderSurface()->DrawableContentRect())));
1716 EXPECT_EQ(damage_rect, root->GetRenderSurface()->GetDamageRect()); 1718 EXPECT_EQ(damage_rect, root->GetRenderSurface()->GetDamageRect());
1717 } 1719 }
1718 1720
1719 } // namespace 1721 } // namespace
1720 } // namespace cc 1722 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698