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

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

Issue 2334003003: cc : Compute visible rects dynamically (1) (Closed)
Patch Set: comment Created 4 years, 3 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
« no previous file with comments | « cc/trees/layer_tree_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/trees/layer_tree_impl.h" 5 #include "cc/trees/layer_tree_impl.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "cc/animation/mutable_properties.h" 8 #include "cc/animation/mutable_properties.h"
9 #include "cc/layers/heads_up_display_layer_impl.h" 9 #include "cc/layers/heads_up_display_layer_impl.h"
10 #include "cc/test/fake_layer_tree_host_impl.h" 10 #include "cc/test/fake_layer_tree_host_impl.h"
(...skipping 22 matching lines...) Expand all
33 LayerTreeImplTest() : impl_test_(LayerTreeImplTestSettings()) {} 33 LayerTreeImplTest() : impl_test_(LayerTreeImplTestSettings()) {}
34 34
35 FakeLayerTreeHostImpl& host_impl() const { return *impl_test_.host_impl(); } 35 FakeLayerTreeHostImpl& host_impl() const { return *impl_test_.host_impl(); }
36 36
37 LayerImpl* root_layer() { return impl_test_.root_layer_for_testing(); } 37 LayerImpl* root_layer() { return impl_test_.root_layer_for_testing(); }
38 38
39 const LayerImplList& RenderSurfaceLayerList() const { 39 const LayerImplList& RenderSurfaceLayerList() const {
40 return host_impl().active_tree()->RenderSurfaceLayerList(); 40 return host_impl().active_tree()->RenderSurfaceLayerList();
41 } 41 }
42 42
43 void ExecuteCalculateDrawProperties(LayerImpl* root_layer) { 43 void ExecuteCalculateDrawProperties(
44 LayerImpl* root_layer,
45 bool skip_verify_visible_rect_calculations = false) {
44 // We are probably not testing what is intended if the root_layer bounds are 46 // We are probably not testing what is intended if the root_layer bounds are
45 // empty. 47 // empty.
46 DCHECK(!root_layer->bounds().IsEmpty()); 48 DCHECK(!root_layer->bounds().IsEmpty());
47 49
48 render_surface_layer_list_impl_.clear(); 50 render_surface_layer_list_impl_.clear();
49 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 51 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
50 root_layer, root_layer->bounds(), &render_surface_layer_list_impl_); 52 root_layer, root_layer->bounds(), &render_surface_layer_list_impl_);
51 inputs.can_adjust_raster_scales = true; 53 inputs.can_adjust_raster_scales = true;
54 if (skip_verify_visible_rect_calculations)
55 inputs.verify_visible_rect_calculations = false;
52 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); 56 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs);
53 } 57 }
54 58
55 int HitTestSimpleTree(int root_id, 59 int HitTestSimpleTree(int root_id,
56 int left_child_id, 60 int left_child_id,
57 int right_child_id, 61 int right_child_id,
58 int root_sorting_context, 62 int root_sorting_context,
59 int left_child_sorting_context, 63 int left_child_sorting_context,
60 int right_child_sorting_context, 64 int right_child_sorting_context,
61 float root_depth, 65 float root_depth,
(...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after
613 // 617 //
614 // The child and grand_child layers are both initialized to clip the 618 // The child and grand_child layers are both initialized to clip the
615 // rotated_leaf. The child layer is rotated about the top-left corner, so that 619 // rotated_leaf. The child layer is rotated about the top-left corner, so that
616 // the root + child clips combined create a triangle. The rotated_leaf will 620 // the root + child clips combined create a triangle. The rotated_leaf will
617 // only be visible where it overlaps this triangle. 621 // only be visible where it overlaps this triangle.
618 // 622 //
619 LayerImpl* root = root_layer(); 623 LayerImpl* root = root_layer();
620 624
621 root->SetBounds(gfx::Size(100, 100)); 625 root->SetBounds(gfx::Size(100, 100));
622 root->SetMasksToBounds(true); 626 root->SetMasksToBounds(true);
627 // Visible rects computed by combinig clips in target space and root space
628 // don't match because of rotation transforms. So, we skip
629 // verify_visible_rect_calculations.
630 bool skip_verify_visible_rect_calculations = true;
623 { 631 {
624 std::unique_ptr<LayerImpl> child = 632 std::unique_ptr<LayerImpl> child =
625 LayerImpl::Create(host_impl().active_tree(), 456); 633 LayerImpl::Create(host_impl().active_tree(), 456);
626 std::unique_ptr<LayerImpl> grand_child = 634 std::unique_ptr<LayerImpl> grand_child =
627 LayerImpl::Create(host_impl().active_tree(), 789); 635 LayerImpl::Create(host_impl().active_tree(), 789);
628 std::unique_ptr<LayerImpl> rotated_leaf = 636 std::unique_ptr<LayerImpl> rotated_leaf =
629 LayerImpl::Create(host_impl().active_tree(), 2468); 637 LayerImpl::Create(host_impl().active_tree(), 2468);
630 638
631 child->SetPosition(gfx::PointF(10.f, 10.f)); 639 child->SetPosition(gfx::PointF(10.f, 10.f));
632 child->SetBounds(gfx::Size(80, 80)); 640 child->SetBounds(gfx::Size(80, 80));
(...skipping 19 matching lines...) Expand all
652 rotated_leaf_transform.RotateAboutZAxis(45.0); 660 rotated_leaf_transform.RotateAboutZAxis(45.0);
653 rotated_leaf_transform.Translate(-50.0, -50.0); 661 rotated_leaf_transform.Translate(-50.0, -50.0);
654 rotated_leaf->SetBounds(gfx::Size(100, 100)); 662 rotated_leaf->SetBounds(gfx::Size(100, 100));
655 rotated_leaf->test_properties()->transform = rotated_leaf_transform; 663 rotated_leaf->test_properties()->transform = rotated_leaf_transform;
656 rotated_leaf->SetDrawsContent(true); 664 rotated_leaf->SetDrawsContent(true);
657 665
658 grand_child->test_properties()->AddChild(std::move(rotated_leaf)); 666 grand_child->test_properties()->AddChild(std::move(rotated_leaf));
659 child->test_properties()->AddChild(std::move(grand_child)); 667 child->test_properties()->AddChild(std::move(grand_child));
660 root->test_properties()->AddChild(std::move(child)); 668 root->test_properties()->AddChild(std::move(child));
661 669
662 ExecuteCalculateDrawProperties(root); 670 ExecuteCalculateDrawProperties(root, skip_verify_visible_rect_calculations);
663 } 671 }
664 672
665 host_impl().SetViewportSize(root->bounds()); 673 host_impl().SetViewportSize(root->bounds());
666 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 674 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(
675 skip_verify_visible_rect_calculations);
667 // (11, 89) is close to the the bottom left corner within the clip, but it is 676 // (11, 89) is close to the the bottom left corner within the clip, but it is
668 // not inside the layer. 677 // not inside the layer.
669 gfx::PointF test_point(11.f, 89.f); 678 gfx::PointF test_point(11.f, 89.f);
670 LayerImpl* result_layer = 679 LayerImpl* result_layer =
671 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 680 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
672 EXPECT_FALSE(result_layer); 681 EXPECT_FALSE(result_layer);
673 682
674 // Closer inwards from the bottom left will overlap the layer. 683 // Closer inwards from the bottom left will overlap the layer.
675 test_point = gfx::PointF(25.f, 75.f); 684 test_point = gfx::PointF(25.f, 75.f);
676 result_layer = 685 result_layer =
(...skipping 1694 matching lines...) Expand 10 before | Expand all | Expand 10 after
2371 auto weak_promise = promise->AsWeakPtr(); 2380 auto weak_promise = promise->AsWeakPtr();
2372 host_impl().active_tree()->QueueSwapPromise(std::move(promise)); 2381 host_impl().active_tree()->QueueSwapPromise(std::move(promise));
2373 host_impl().active_tree()->BreakSwapPromises( 2382 host_impl().active_tree()->BreakSwapPromises(
2374 SwapPromise::DidNotSwapReason::SWAP_FAILS); 2383 SwapPromise::DidNotSwapReason::SWAP_FAILS);
2375 EXPECT_FALSE(weak_promise); 2384 EXPECT_FALSE(weak_promise);
2376 } 2385 }
2377 } 2386 }
2378 2387
2379 } // namespace 2388 } // namespace
2380 } // namespace cc 2389 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698