Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 <algorithm> | 7 #include <algorithm> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <tuple> | |
|
Ian Vollick
2015/02/21 23:00:49
Although not needed for my changes, the presubmit
enne (OOO)
2015/02/23 19:01:50
This doesn't build on Android, unfortunately. I r
| |
| 9 | 10 |
| 10 #include "cc/animation/layer_animation_controller.h" | 11 #include "cc/animation/layer_animation_controller.h" |
| 11 #include "cc/animation/transform_operations.h" | 12 #include "cc/animation/transform_operations.h" |
| 12 #include "cc/base/math_util.h" | 13 #include "cc/base/math_util.h" |
| 13 #include "cc/layers/content_layer.h" | 14 #include "cc/layers/content_layer.h" |
| 14 #include "cc/layers/content_layer_client.h" | 15 #include "cc/layers/content_layer_client.h" |
| 15 #include "cc/layers/layer.h" | 16 #include "cc/layers/layer.h" |
| 16 #include "cc/layers/layer_client.h" | 17 #include "cc/layers/layer_client.h" |
| 17 #include "cc/layers/layer_impl.h" | 18 #include "cc/layers/layer_impl.h" |
| 18 #include "cc/layers/layer_iterator.h" | 19 #include "cc/layers/layer_iterator.h" |
| (...skipping 2949 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2968 AddAnimatedTransformToLayer( | 2969 AddAnimatedTransformToLayer( |
| 2969 root.get(), 10.0, start_transform_operations, end_transform_operations); | 2970 root.get(), 10.0, start_transform_operations, end_transform_operations); |
| 2970 | 2971 |
| 2971 EXPECT_TRUE(root->TransformIsAnimating()); | 2972 EXPECT_TRUE(root->TransformIsAnimating()); |
| 2972 | 2973 |
| 2973 ExecuteCalculateDrawProperties(root.get()); | 2974 ExecuteCalculateDrawProperties(root.get()); |
| 2974 | 2975 |
| 2975 EXPECT_FALSE(child->draw_properties().sorted_for_recursion); | 2976 EXPECT_FALSE(child->draw_properties().sorted_for_recursion); |
| 2976 } | 2977 } |
| 2977 | 2978 |
| 2979 TEST_F(LayerTreeHostCommonTest, WillSortAtContextBoundary) { | |
| 2980 // Creates a layer tree that looks as follows: | |
| 2981 // * root (sorting-context-id1) | |
| 2982 // * parent (sorting-context-id2) | |
| 2983 // * child1 (sorting-context-id2) | |
| 2984 // * child2 (sorting-context-id2) | |
| 2985 // | |
| 2986 // This test ensures that we sort at |parent| even though both it and root are | |
| 2987 // set to be 3d sorted. | |
| 2988 FakeImplProxy proxy; | |
| 2989 TestSharedBitmapManager shared_bitmap_manager; | |
| 2990 FakeLayerTreeHostImpl host_impl(&proxy, &shared_bitmap_manager); | |
| 2991 | |
| 2992 scoped_ptr<LayerImpl> root_ptr(LayerImpl::Create(host_impl.active_tree(), 1)); | |
| 2993 LayerImpl* root = root_ptr.get(); | |
| 2994 scoped_ptr<LayerImpl> parent_ptr( | |
| 2995 LayerImpl::Create(host_impl.active_tree(), 2)); | |
| 2996 LayerImpl* parent = parent_ptr.get(); | |
| 2997 scoped_ptr<LayerImpl> child1_ptr( | |
| 2998 LayerImpl::Create(host_impl.active_tree(), 3)); | |
| 2999 LayerImpl* child1 = child1_ptr.get(); | |
| 3000 scoped_ptr<LayerImpl> child2_ptr( | |
| 3001 LayerImpl::Create(host_impl.active_tree(), 4)); | |
| 3002 LayerImpl* child2 = child2_ptr.get(); | |
| 3003 | |
| 3004 gfx::Transform identity_matrix; | |
| 3005 gfx::Transform below_matrix; | |
| 3006 below_matrix.Translate3d(0.f, 0.f, -10.f); | |
| 3007 gfx::Transform above_matrix; | |
| 3008 above_matrix.Translate3d(0.f, 0.f, 10.f); | |
| 3009 | |
| 3010 SetLayerPropertiesForTesting(root, identity_matrix, gfx::Point3F(), | |
| 3011 gfx::PointF(), gfx::Size(100, 100), true, true, | |
| 3012 true); | |
| 3013 SetLayerPropertiesForTesting(parent, identity_matrix, gfx::Point3F(), | |
| 3014 gfx::PointF(), gfx::Size(50, 50), true, true, | |
| 3015 true); | |
| 3016 SetLayerPropertiesForTesting(child1, above_matrix, gfx::Point3F(), | |
| 3017 gfx::PointF(), gfx::Size(50, 50), true, true, | |
| 3018 false); | |
| 3019 SetLayerPropertiesForTesting(child2, below_matrix, gfx::Point3F(), | |
| 3020 gfx::PointF(), gfx::Size(50, 50), true, true, | |
| 3021 false); | |
| 3022 | |
| 3023 root->Set3dSortingContextId(3); | |
| 3024 root->SetDrawsContent(true); | |
| 3025 parent->Set3dSortingContextId(7); | |
| 3026 parent->SetDrawsContent(true); | |
| 3027 child1->Set3dSortingContextId(7); | |
| 3028 child1->SetDrawsContent(true); | |
| 3029 child2->Set3dSortingContextId(7); | |
| 3030 child2->SetDrawsContent(true); | |
| 3031 | |
| 3032 parent->AddChild(child1_ptr.Pass()); | |
| 3033 parent->AddChild(child2_ptr.Pass()); | |
| 3034 root->AddChild(parent_ptr.Pass()); | |
| 3035 | |
| 3036 LayerImplList render_surface_layer_list; | |
| 3037 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | |
| 3038 root_ptr.get(), root->bounds(), &render_surface_layer_list); | |
| 3039 inputs.can_adjust_raster_scales = true; | |
| 3040 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | |
| 3041 | |
| 3042 EXPECT_TRUE(root->render_surface()); | |
| 3043 EXPECT_EQ(2u, render_surface_layer_list.size()); | |
| 3044 | |
| 3045 EXPECT_EQ(3u, parent->render_surface()->layer_list().size()); | |
| 3046 EXPECT_EQ(child2->id(), parent->render_surface()->layer_list().at(0)->id()); | |
| 3047 EXPECT_EQ(parent->id(), parent->render_surface()->layer_list().at(1)->id()); | |
| 3048 EXPECT_EQ(child1->id(), parent->render_surface()->layer_list().at(2)->id()); | |
| 3049 } | |
| 3050 | |
| 2978 TEST_F(LayerTreeHostCommonTest, | 3051 TEST_F(LayerTreeHostCommonTest, |
| 2979 SingularNonAnimatingTransformDoesNotPreventClearingDrawProperties) { | 3052 SingularNonAnimatingTransformDoesNotPreventClearingDrawProperties) { |
| 2980 scoped_refptr<Layer> root = Layer::Create(); | 3053 scoped_refptr<Layer> root = Layer::Create(); |
| 2981 | 3054 |
| 2982 scoped_ptr<FakeLayerTreeHost> host(CreateFakeLayerTreeHost()); | 3055 scoped_ptr<FakeLayerTreeHost> host(CreateFakeLayerTreeHost()); |
| 2983 host->SetRootLayer(root); | 3056 host->SetRootLayer(root); |
| 2984 | 3057 |
| 2985 gfx::Transform identity_matrix; | 3058 gfx::Transform identity_matrix; |
| 2986 gfx::Transform uninvertible_matrix(0.0, 0.0, 0.0, 0.0, 0.0, 0.0); | 3059 gfx::Transform uninvertible_matrix(0.0, 0.0, 0.0, 0.0, 0.0, 0.0); |
| 2987 ASSERT_FALSE(uninvertible_matrix.IsInvertible()); | 3060 ASSERT_FALSE(uninvertible_matrix.IsInvertible()); |
| (...skipping 5678 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8666 | 8739 |
| 8667 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 8740 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
| 8668 | 8741 |
| 8669 gfx::Rect affected_by_delta(0, 0, root_size.width(), | 8742 gfx::Rect affected_by_delta(0, 0, root_size.width(), |
| 8670 root_size.height() + 50); | 8743 root_size.height() + 50); |
| 8671 EXPECT_EQ(affected_by_delta, sublayer->visible_content_rect()); | 8744 EXPECT_EQ(affected_by_delta, sublayer->visible_content_rect()); |
| 8672 } | 8745 } |
| 8673 | 8746 |
| 8674 } // namespace | 8747 } // namespace |
| 8675 } // namespace cc | 8748 } // namespace cc |
| OLD | NEW |