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 | 9 |
10 #include "cc/animation/layer_animation_controller.h" | 10 #include "cc/animation/layer_animation_controller.h" |
(...skipping 2674 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2685 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), | 2685 SetLayerPropertiesForTesting(root.get(), identity_matrix, gfx::Point3F(), |
2686 gfx::PointF(60, 70), gfx::Size(100, 100), true, | 2686 gfx::PointF(60, 70), gfx::Size(100, 100), true, |
2687 false); | 2687 false); |
2688 ExecuteCalculateDrawProperties(root.get()); | 2688 ExecuteCalculateDrawProperties(root.get()); |
2689 | 2689 |
2690 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), | 2690 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), |
2691 root->render_surface()->DrawableContentRect()); | 2691 root->render_surface()->DrawableContentRect()); |
2692 // In target space, not clipped. | 2692 // In target space, not clipped. |
2693 EXPECT_EQ(gfx::Rect(60, 70, 100, 100), root->drawable_content_rect()); | 2693 EXPECT_EQ(gfx::Rect(60, 70, 100, 100), root->drawable_content_rect()); |
2694 // In layer space, clipped. | 2694 // In layer space, clipped. |
2695 EXPECT_EQ(gfx::Rect(0, 0, 40, 30), root->visible_content_rect()); | 2695 EXPECT_EQ(gfx::Rect(0, 0, 40, 30), root->visible_layer_rect()); |
2696 } | 2696 } |
2697 | 2697 |
2698 TEST_F(LayerTreeHostCommonTest, DrawableAndVisibleContentRectsForSimpleLayers) { | 2698 TEST_F(LayerTreeHostCommonTest, DrawableAndVisibleContentRectsForSimpleLayers) { |
2699 scoped_refptr<Layer> root = Layer::Create(layer_settings()); | 2699 scoped_refptr<Layer> root = Layer::Create(layer_settings()); |
2700 scoped_refptr<LayerWithForcedDrawsContent> child1 = | 2700 scoped_refptr<LayerWithForcedDrawsContent> child1 = |
2701 make_scoped_refptr(new LayerWithForcedDrawsContent(layer_settings())); | 2701 make_scoped_refptr(new LayerWithForcedDrawsContent(layer_settings())); |
2702 scoped_refptr<LayerWithForcedDrawsContent> child2 = | 2702 scoped_refptr<LayerWithForcedDrawsContent> child2 = |
2703 make_scoped_refptr(new LayerWithForcedDrawsContent(layer_settings())); | 2703 make_scoped_refptr(new LayerWithForcedDrawsContent(layer_settings())); |
2704 scoped_refptr<LayerWithForcedDrawsContent> child3 = | 2704 scoped_refptr<LayerWithForcedDrawsContent> child3 = |
2705 make_scoped_refptr(new LayerWithForcedDrawsContent(layer_settings())); | 2705 make_scoped_refptr(new LayerWithForcedDrawsContent(layer_settings())); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2739 gfx::Size(50, 50), | 2739 gfx::Size(50, 50), |
2740 true, | 2740 true, |
2741 false); | 2741 false); |
2742 | 2742 |
2743 ExecuteCalculateDrawProperties(root.get()); | 2743 ExecuteCalculateDrawProperties(root.get()); |
2744 | 2744 |
2745 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), | 2745 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), |
2746 root->render_surface()->DrawableContentRect()); | 2746 root->render_surface()->DrawableContentRect()); |
2747 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), root->drawable_content_rect()); | 2747 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), root->drawable_content_rect()); |
2748 | 2748 |
2749 // Layers that do not draw content should have empty visible_content_rects. | 2749 // Layers that do not draw content should have empty visible_layer_rects. |
2750 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_content_rect()); | 2750 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect()); |
2751 | 2751 |
2752 // layer visible_content_rects are clipped by their target surface. | 2752 // layer visible_layer_rects are clipped by their target surface. |
2753 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_content_rect()); | 2753 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_layer_rect()); |
2754 EXPECT_EQ(gfx::Rect(0, 0, 25, 25), child2->visible_content_rect()); | 2754 EXPECT_EQ(gfx::Rect(0, 0, 25, 25), child2->visible_layer_rect()); |
2755 EXPECT_TRUE(child3->visible_content_rect().IsEmpty()); | 2755 EXPECT_TRUE(child3->visible_layer_rect().IsEmpty()); |
2756 | 2756 |
2757 // layer drawable_content_rects are not clipped. | 2757 // layer drawable_content_rects are not clipped. |
2758 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->drawable_content_rect()); | 2758 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->drawable_content_rect()); |
2759 EXPECT_EQ(gfx::Rect(75, 75, 50, 50), child2->drawable_content_rect()); | 2759 EXPECT_EQ(gfx::Rect(75, 75, 50, 50), child2->drawable_content_rect()); |
2760 EXPECT_EQ(gfx::Rect(125, 125, 50, 50), child3->drawable_content_rect()); | 2760 EXPECT_EQ(gfx::Rect(125, 125, 50, 50), child3->drawable_content_rect()); |
2761 } | 2761 } |
2762 | 2762 |
2763 TEST_F(LayerTreeHostCommonTest, | 2763 TEST_F(LayerTreeHostCommonTest, |
2764 DrawableAndVisibleContentRectsForLayersClippedByLayer) { | 2764 DrawableAndVisibleContentRectsForLayersClippedByLayer) { |
2765 scoped_refptr<Layer> root = Layer::Create(layer_settings()); | 2765 scoped_refptr<Layer> root = Layer::Create(layer_settings()); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2818 child->SetMasksToBounds(true); | 2818 child->SetMasksToBounds(true); |
2819 ExecuteCalculateDrawProperties(root.get()); | 2819 ExecuteCalculateDrawProperties(root.get()); |
2820 | 2820 |
2821 ASSERT_FALSE(child->render_surface()); | 2821 ASSERT_FALSE(child->render_surface()); |
2822 | 2822 |
2823 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), | 2823 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), |
2824 root->render_surface()->DrawableContentRect()); | 2824 root->render_surface()->DrawableContentRect()); |
2825 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), root->drawable_content_rect()); | 2825 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), root->drawable_content_rect()); |
2826 | 2826 |
2827 // Layers that do not draw content should have empty visible content rects. | 2827 // Layers that do not draw content should have empty visible content rects. |
2828 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_content_rect()); | 2828 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect()); |
2829 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), child->visible_content_rect()); | 2829 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), child->visible_layer_rect()); |
2830 | 2830 |
2831 // All grandchild visible content rects should be clipped by child. | 2831 // All grandchild visible content rects should be clipped by child. |
2832 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), grand_child1->visible_content_rect()); | 2832 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), grand_child1->visible_layer_rect()); |
2833 EXPECT_EQ(gfx::Rect(0, 0, 25, 25), grand_child2->visible_content_rect()); | 2833 EXPECT_EQ(gfx::Rect(0, 0, 25, 25), grand_child2->visible_layer_rect()); |
2834 EXPECT_TRUE(grand_child3->visible_content_rect().IsEmpty()); | 2834 EXPECT_TRUE(grand_child3->visible_layer_rect().IsEmpty()); |
2835 | 2835 |
2836 // All grandchild DrawableContentRects should also be clipped by child. | 2836 // All grandchild DrawableContentRects should also be clipped by child. |
2837 EXPECT_EQ(gfx::Rect(5, 5, 50, 50), grand_child1->drawable_content_rect()); | 2837 EXPECT_EQ(gfx::Rect(5, 5, 50, 50), grand_child1->drawable_content_rect()); |
2838 EXPECT_EQ(gfx::Rect(75, 75, 25, 25), grand_child2->drawable_content_rect()); | 2838 EXPECT_EQ(gfx::Rect(75, 75, 25, 25), grand_child2->drawable_content_rect()); |
2839 EXPECT_TRUE(grand_child3->drawable_content_rect().IsEmpty()); | 2839 EXPECT_TRUE(grand_child3->drawable_content_rect().IsEmpty()); |
2840 } | 2840 } |
2841 | 2841 |
2842 TEST_F(LayerTreeHostCommonTest, VisibleContentRectWithClippingAndScaling) { | 2842 TEST_F(LayerTreeHostCommonTest, VisibleContentRectWithClippingAndScaling) { |
2843 scoped_refptr<Layer> root = Layer::Create(layer_settings()); | 2843 scoped_refptr<Layer> root = Layer::Create(layer_settings()); |
2844 scoped_refptr<Layer> child = Layer::Create(layer_settings()); | 2844 scoped_refptr<Layer> child = Layer::Create(layer_settings()); |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2930 render_surface1->SetForceRenderSurface(true); | 2930 render_surface1->SetForceRenderSurface(true); |
2931 ExecuteCalculateDrawProperties(root.get()); | 2931 ExecuteCalculateDrawProperties(root.get()); |
2932 | 2932 |
2933 ASSERT_TRUE(render_surface1->render_surface()); | 2933 ASSERT_TRUE(render_surface1->render_surface()); |
2934 | 2934 |
2935 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), | 2935 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), |
2936 root->render_surface()->DrawableContentRect()); | 2936 root->render_surface()->DrawableContentRect()); |
2937 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), root->drawable_content_rect()); | 2937 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), root->drawable_content_rect()); |
2938 | 2938 |
2939 // Layers that do not draw content should have empty visible content rects. | 2939 // Layers that do not draw content should have empty visible content rects. |
2940 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_content_rect()); | 2940 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect()); |
2941 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface1->visible_content_rect()); | 2941 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface1->visible_layer_rect()); |
2942 | 2942 |
2943 // An unclipped surface grows its DrawableContentRect to include all drawable | 2943 // An unclipped surface grows its DrawableContentRect to include all drawable |
2944 // regions of the subtree. | 2944 // regions of the subtree. |
2945 EXPECT_EQ(gfx::Rect(5, 5, 170, 170), | 2945 EXPECT_EQ(gfx::Rect(5, 5, 170, 170), |
2946 render_surface1->render_surface()->DrawableContentRect()); | 2946 render_surface1->render_surface()->DrawableContentRect()); |
2947 | 2947 |
2948 // All layers that draw content into the unclipped surface are also unclipped. | 2948 // All layers that draw content into the unclipped surface are also unclipped. |
2949 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_content_rect()); | 2949 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_layer_rect()); |
2950 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child2->visible_content_rect()); | 2950 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child2->visible_layer_rect()); |
2951 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child3->visible_content_rect()); | 2951 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child3->visible_layer_rect()); |
2952 | 2952 |
2953 EXPECT_EQ(gfx::Rect(5, 5, 50, 50), child1->drawable_content_rect()); | 2953 EXPECT_EQ(gfx::Rect(5, 5, 50, 50), child1->drawable_content_rect()); |
2954 EXPECT_EQ(gfx::Rect(75, 75, 50, 50), child2->drawable_content_rect()); | 2954 EXPECT_EQ(gfx::Rect(75, 75, 50, 50), child2->drawable_content_rect()); |
2955 EXPECT_EQ(gfx::Rect(125, 125, 50, 50), child3->drawable_content_rect()); | 2955 EXPECT_EQ(gfx::Rect(125, 125, 50, 50), child3->drawable_content_rect()); |
2956 } | 2956 } |
2957 | 2957 |
2958 TEST_F(LayerTreeHostCommonTest, | 2958 TEST_F(LayerTreeHostCommonTest, |
2959 VisibleContentRectsForClippedSurfaceWithEmptyClip) { | 2959 VisibleContentRectsForClippedSurfaceWithEmptyClip) { |
2960 scoped_refptr<Layer> root = Layer::Create(layer_settings()); | 2960 scoped_refptr<Layer> root = Layer::Create(layer_settings()); |
2961 scoped_refptr<LayerWithForcedDrawsContent> child1 = | 2961 scoped_refptr<LayerWithForcedDrawsContent> child1 = |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2993 ASSERT_TRUE(root->render_surface()); | 2993 ASSERT_TRUE(root->render_surface()); |
2994 EXPECT_FALSE(root->is_clipped()); | 2994 EXPECT_FALSE(root->is_clipped()); |
2995 | 2995 |
2996 gfx::Rect empty; | 2996 gfx::Rect empty; |
2997 EXPECT_EQ(empty, root->render_surface()->clip_rect()); | 2997 EXPECT_EQ(empty, root->render_surface()->clip_rect()); |
2998 EXPECT_TRUE(root->render_surface()->is_clipped()); | 2998 EXPECT_TRUE(root->render_surface()->is_clipped()); |
2999 | 2999 |
3000 // Visible content rect calculation will check if the target surface is | 3000 // Visible content rect calculation will check if the target surface is |
3001 // clipped or not. An empty clip rect does not indicate the render surface | 3001 // clipped or not. An empty clip rect does not indicate the render surface |
3002 // is unclipped. | 3002 // is unclipped. |
3003 EXPECT_EQ(empty, child1->visible_content_rect()); | 3003 EXPECT_EQ(empty, child1->visible_layer_rect()); |
3004 EXPECT_EQ(empty, child2->visible_content_rect()); | 3004 EXPECT_EQ(empty, child2->visible_layer_rect()); |
3005 EXPECT_EQ(empty, child3->visible_content_rect()); | 3005 EXPECT_EQ(empty, child3->visible_layer_rect()); |
3006 } | 3006 } |
3007 | 3007 |
3008 TEST_F(LayerTreeHostCommonTest, | 3008 TEST_F(LayerTreeHostCommonTest, |
3009 DrawableAndVisibleContentRectsForLayersWithUninvertibleTransform) { | 3009 DrawableAndVisibleContentRectsForLayersWithUninvertibleTransform) { |
3010 scoped_refptr<Layer> root = Layer::Create(layer_settings()); | 3010 scoped_refptr<Layer> root = Layer::Create(layer_settings()); |
3011 scoped_refptr<LayerWithForcedDrawsContent> child = | 3011 scoped_refptr<LayerWithForcedDrawsContent> child = |
3012 make_scoped_refptr(new LayerWithForcedDrawsContent(layer_settings())); | 3012 make_scoped_refptr(new LayerWithForcedDrawsContent(layer_settings())); |
3013 root->AddChild(child); | 3013 root->AddChild(child); |
3014 | 3014 |
3015 scoped_ptr<FakeLayerTreeHost> host(CreateFakeLayerTreeHost()); | 3015 scoped_ptr<FakeLayerTreeHost> host(CreateFakeLayerTreeHost()); |
(...skipping 14 matching lines...) Expand all Loading... |
3030 SetLayerPropertiesForTesting(child.get(), | 3030 SetLayerPropertiesForTesting(child.get(), |
3031 uninvertible_matrix, | 3031 uninvertible_matrix, |
3032 gfx::Point3F(), | 3032 gfx::Point3F(), |
3033 gfx::PointF(5.f, 5.f), | 3033 gfx::PointF(5.f, 5.f), |
3034 gfx::Size(50, 50), | 3034 gfx::Size(50, 50), |
3035 true, | 3035 true, |
3036 false); | 3036 false); |
3037 | 3037 |
3038 ExecuteCalculateDrawProperties(root.get()); | 3038 ExecuteCalculateDrawProperties(root.get()); |
3039 | 3039 |
3040 EXPECT_TRUE(child->visible_content_rect().IsEmpty()); | 3040 EXPECT_TRUE(child->visible_layer_rect().IsEmpty()); |
3041 EXPECT_TRUE(child->drawable_content_rect().IsEmpty()); | 3041 EXPECT_TRUE(child->drawable_content_rect().IsEmpty()); |
3042 | 3042 |
3043 // Case 2: a matrix with flattened z, uninvertible and not visible according | 3043 // Case 2: a matrix with flattened z, uninvertible and not visible according |
3044 // to the CSS spec. | 3044 // to the CSS spec. |
3045 uninvertible_matrix.MakeIdentity(); | 3045 uninvertible_matrix.MakeIdentity(); |
3046 uninvertible_matrix.matrix().set(2, 2, 0.0); | 3046 uninvertible_matrix.matrix().set(2, 2, 0.0); |
3047 ASSERT_FALSE(uninvertible_matrix.IsInvertible()); | 3047 ASSERT_FALSE(uninvertible_matrix.IsInvertible()); |
3048 | 3048 |
3049 SetLayerPropertiesForTesting(child.get(), | 3049 SetLayerPropertiesForTesting(child.get(), |
3050 uninvertible_matrix, | 3050 uninvertible_matrix, |
3051 gfx::Point3F(), | 3051 gfx::Point3F(), |
3052 gfx::PointF(5.f, 5.f), | 3052 gfx::PointF(5.f, 5.f), |
3053 gfx::Size(50, 50), | 3053 gfx::Size(50, 50), |
3054 true, | 3054 true, |
3055 false); | 3055 false); |
3056 | 3056 |
3057 ExecuteCalculateDrawProperties(root.get()); | 3057 ExecuteCalculateDrawProperties(root.get()); |
3058 | 3058 |
3059 EXPECT_TRUE(child->visible_content_rect().IsEmpty()); | 3059 EXPECT_TRUE(child->visible_layer_rect().IsEmpty()); |
3060 EXPECT_TRUE(child->drawable_content_rect().IsEmpty()); | 3060 EXPECT_TRUE(child->drawable_content_rect().IsEmpty()); |
3061 | 3061 |
3062 // Case 3: a matrix with flattened z, also uninvertible and not visible. | 3062 // Case 3: a matrix with flattened z, also uninvertible and not visible. |
3063 uninvertible_matrix.MakeIdentity(); | 3063 uninvertible_matrix.MakeIdentity(); |
3064 uninvertible_matrix.Translate(500.0, 0.0); | 3064 uninvertible_matrix.Translate(500.0, 0.0); |
3065 uninvertible_matrix.matrix().set(2, 2, 0.0); | 3065 uninvertible_matrix.matrix().set(2, 2, 0.0); |
3066 ASSERT_FALSE(uninvertible_matrix.IsInvertible()); | 3066 ASSERT_FALSE(uninvertible_matrix.IsInvertible()); |
3067 | 3067 |
3068 SetLayerPropertiesForTesting(child.get(), | 3068 SetLayerPropertiesForTesting(child.get(), |
3069 uninvertible_matrix, | 3069 uninvertible_matrix, |
3070 gfx::Point3F(), | 3070 gfx::Point3F(), |
3071 gfx::PointF(5.f, 5.f), | 3071 gfx::PointF(5.f, 5.f), |
3072 gfx::Size(50, 50), | 3072 gfx::Size(50, 50), |
3073 true, | 3073 true, |
3074 false); | 3074 false); |
3075 | 3075 |
3076 ExecuteCalculateDrawProperties(root.get()); | 3076 ExecuteCalculateDrawProperties(root.get()); |
3077 | 3077 |
3078 EXPECT_TRUE(child->visible_content_rect().IsEmpty()); | 3078 EXPECT_TRUE(child->visible_layer_rect().IsEmpty()); |
3079 EXPECT_TRUE(child->drawable_content_rect().IsEmpty()); | 3079 EXPECT_TRUE(child->drawable_content_rect().IsEmpty()); |
3080 } | 3080 } |
3081 | 3081 |
3082 TEST_F(LayerTreeHostCommonTest, | 3082 TEST_F(LayerTreeHostCommonTest, |
3083 SingularTransformDoesNotPreventClearingDrawProperties) { | 3083 SingularTransformDoesNotPreventClearingDrawProperties) { |
3084 scoped_refptr<Layer> root = Layer::Create(layer_settings()); | 3084 scoped_refptr<Layer> root = Layer::Create(layer_settings()); |
3085 scoped_refptr<LayerWithForcedDrawsContent> child = | 3085 scoped_refptr<LayerWithForcedDrawsContent> child = |
3086 make_scoped_refptr(new LayerWithForcedDrawsContent(layer_settings())); | 3086 make_scoped_refptr(new LayerWithForcedDrawsContent(layer_settings())); |
3087 root->AddChild(child); | 3087 root->AddChild(child); |
3088 | 3088 |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3213 render_surface1->SetForceRenderSurface(true); | 3213 render_surface1->SetForceRenderSurface(true); |
3214 ExecuteCalculateDrawProperties(root.get()); | 3214 ExecuteCalculateDrawProperties(root.get()); |
3215 | 3215 |
3216 ASSERT_TRUE(render_surface1->render_surface()); | 3216 ASSERT_TRUE(render_surface1->render_surface()); |
3217 | 3217 |
3218 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), | 3218 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), |
3219 root->render_surface()->DrawableContentRect()); | 3219 root->render_surface()->DrawableContentRect()); |
3220 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), root->drawable_content_rect()); | 3220 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), root->drawable_content_rect()); |
3221 | 3221 |
3222 // Layers that do not draw content should have empty visible content rects. | 3222 // Layers that do not draw content should have empty visible content rects. |
3223 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_content_rect()); | 3223 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect()); |
3224 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface1->visible_content_rect()); | 3224 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface1->visible_layer_rect()); |
3225 | 3225 |
3226 // A clipped surface grows its DrawableContentRect to include all drawable | 3226 // A clipped surface grows its DrawableContentRect to include all drawable |
3227 // regions of the subtree, but also gets clamped by the ancestor's clip. | 3227 // regions of the subtree, but also gets clamped by the ancestor's clip. |
3228 EXPECT_EQ(gfx::Rect(5, 5, 95, 95), | 3228 EXPECT_EQ(gfx::Rect(5, 5, 95, 95), |
3229 render_surface1->render_surface()->DrawableContentRect()); | 3229 render_surface1->render_surface()->DrawableContentRect()); |
3230 | 3230 |
3231 // All layers that draw content into the surface have their visible content | 3231 // All layers that draw content into the surface have their visible content |
3232 // rect clipped by the surface clip rect. | 3232 // rect clipped by the surface clip rect. |
3233 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_content_rect()); | 3233 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_layer_rect()); |
3234 EXPECT_EQ(gfx::Rect(0, 0, 25, 25), child2->visible_content_rect()); | 3234 EXPECT_EQ(gfx::Rect(0, 0, 25, 25), child2->visible_layer_rect()); |
3235 EXPECT_TRUE(child3->visible_content_rect().IsEmpty()); | 3235 EXPECT_TRUE(child3->visible_layer_rect().IsEmpty()); |
3236 | 3236 |
3237 // But the DrawableContentRects are unclipped. | 3237 // But the DrawableContentRects are unclipped. |
3238 EXPECT_EQ(gfx::Rect(5, 5, 50, 50), child1->drawable_content_rect()); | 3238 EXPECT_EQ(gfx::Rect(5, 5, 50, 50), child1->drawable_content_rect()); |
3239 EXPECT_EQ(gfx::Rect(75, 75, 50, 50), child2->drawable_content_rect()); | 3239 EXPECT_EQ(gfx::Rect(75, 75, 50, 50), child2->drawable_content_rect()); |
3240 EXPECT_EQ(gfx::Rect(125, 125, 50, 50), child3->drawable_content_rect()); | 3240 EXPECT_EQ(gfx::Rect(125, 125, 50, 50), child3->drawable_content_rect()); |
3241 } | 3241 } |
3242 | 3242 |
3243 TEST_F(LayerTreeHostCommonTest, | 3243 TEST_F(LayerTreeHostCommonTest, |
3244 DrawableAndVisibleContentRectsForSurfaceHierarchy) { | 3244 DrawableAndVisibleContentRectsForSurfaceHierarchy) { |
3245 // Check that clipping does not propagate down surfaces. | 3245 // Check that clipping does not propagate down surfaces. |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3311 ExecuteCalculateDrawProperties(root.get()); | 3311 ExecuteCalculateDrawProperties(root.get()); |
3312 | 3312 |
3313 ASSERT_TRUE(render_surface1->render_surface()); | 3313 ASSERT_TRUE(render_surface1->render_surface()); |
3314 ASSERT_TRUE(render_surface2->render_surface()); | 3314 ASSERT_TRUE(render_surface2->render_surface()); |
3315 | 3315 |
3316 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), | 3316 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), |
3317 root->render_surface()->DrawableContentRect()); | 3317 root->render_surface()->DrawableContentRect()); |
3318 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), root->drawable_content_rect()); | 3318 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), root->drawable_content_rect()); |
3319 | 3319 |
3320 // Layers that do not draw content should have empty visible content rects. | 3320 // Layers that do not draw content should have empty visible content rects. |
3321 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_content_rect()); | 3321 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect()); |
3322 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface1->visible_content_rect()); | 3322 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface1->visible_layer_rect()); |
3323 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface2->visible_content_rect()); | 3323 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface2->visible_layer_rect()); |
3324 | 3324 |
3325 // A clipped surface grows its DrawableContentRect to include all drawable | 3325 // A clipped surface grows its DrawableContentRect to include all drawable |
3326 // regions of the subtree, but also gets clamped by the ancestor's clip. | 3326 // regions of the subtree, but also gets clamped by the ancestor's clip. |
3327 EXPECT_EQ(gfx::Rect(5, 5, 95, 95), | 3327 EXPECT_EQ(gfx::Rect(5, 5, 95, 95), |
3328 render_surface1->render_surface()->DrawableContentRect()); | 3328 render_surface1->render_surface()->DrawableContentRect()); |
3329 | 3329 |
3330 // render_surface1 lives in the "unclipped universe" of render_surface1, and | 3330 // render_surface1 lives in the "unclipped universe" of render_surface1, and |
3331 // is only implicitly clipped by render_surface1's content rect. So, | 3331 // is only implicitly clipped by render_surface1's content rect. So, |
3332 // render_surface2 grows to enclose all drawable content of its subtree. | 3332 // render_surface2 grows to enclose all drawable content of its subtree. |
3333 EXPECT_EQ(gfx::Rect(5, 5, 170, 170), | 3333 EXPECT_EQ(gfx::Rect(5, 5, 170, 170), |
3334 render_surface2->render_surface()->DrawableContentRect()); | 3334 render_surface2->render_surface()->DrawableContentRect()); |
3335 | 3335 |
3336 // All layers that draw content into render_surface2 think they are unclipped. | 3336 // All layers that draw content into render_surface2 think they are unclipped. |
3337 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_content_rect()); | 3337 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_layer_rect()); |
3338 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child2->visible_content_rect()); | 3338 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child2->visible_layer_rect()); |
3339 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child3->visible_content_rect()); | 3339 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child3->visible_layer_rect()); |
3340 | 3340 |
3341 // DrawableContentRects are also unclipped. | 3341 // DrawableContentRects are also unclipped. |
3342 EXPECT_EQ(gfx::Rect(5, 5, 50, 50), child1->drawable_content_rect()); | 3342 EXPECT_EQ(gfx::Rect(5, 5, 50, 50), child1->drawable_content_rect()); |
3343 EXPECT_EQ(gfx::Rect(75, 75, 50, 50), child2->drawable_content_rect()); | 3343 EXPECT_EQ(gfx::Rect(75, 75, 50, 50), child2->drawable_content_rect()); |
3344 EXPECT_EQ(gfx::Rect(125, 125, 50, 50), child3->drawable_content_rect()); | 3344 EXPECT_EQ(gfx::Rect(125, 125, 50, 50), child3->drawable_content_rect()); |
3345 } | 3345 } |
3346 | 3346 |
3347 TEST_F(LayerTreeHostCommonTest, | 3347 TEST_F(LayerTreeHostCommonTest, |
3348 DrawableAndVisibleContentRectsWithTransformOnUnclippedSurface) { | 3348 DrawableAndVisibleContentRectsWithTransformOnUnclippedSurface) { |
3349 // Layers that have non-axis aligned bounds (due to transforms) have an | 3349 // Layers that have non-axis aligned bounds (due to transforms) have an |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3387 render_surface1->SetForceRenderSurface(true); | 3387 render_surface1->SetForceRenderSurface(true); |
3388 ExecuteCalculateDrawProperties(root.get()); | 3388 ExecuteCalculateDrawProperties(root.get()); |
3389 | 3389 |
3390 ASSERT_TRUE(render_surface1->render_surface()); | 3390 ASSERT_TRUE(render_surface1->render_surface()); |
3391 | 3391 |
3392 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), | 3392 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), |
3393 root->render_surface()->DrawableContentRect()); | 3393 root->render_surface()->DrawableContentRect()); |
3394 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), root->drawable_content_rect()); | 3394 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), root->drawable_content_rect()); |
3395 | 3395 |
3396 // Layers that do not draw content should have empty visible content rects. | 3396 // Layers that do not draw content should have empty visible content rects. |
3397 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_content_rect()); | 3397 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect()); |
3398 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface1->visible_content_rect()); | 3398 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), render_surface1->visible_layer_rect()); |
3399 | 3399 |
3400 // The unclipped surface grows its DrawableContentRect to include all drawable | 3400 // The unclipped surface grows its DrawableContentRect to include all drawable |
3401 // regions of the subtree. | 3401 // regions of the subtree. |
3402 int diagonal_radius = ceil(sqrt(2.0) * 25.0); | 3402 int diagonal_radius = ceil(sqrt(2.0) * 25.0); |
3403 gfx::Rect expected_surface_drawable_content = | 3403 gfx::Rect expected_surface_drawable_content = |
3404 gfx::Rect(50 - diagonal_radius, | 3404 gfx::Rect(50 - diagonal_radius, |
3405 50 - diagonal_radius, | 3405 50 - diagonal_radius, |
3406 diagonal_radius * 2, | 3406 diagonal_radius * 2, |
3407 diagonal_radius * 2); | 3407 diagonal_radius * 2); |
3408 EXPECT_EQ(expected_surface_drawable_content, | 3408 EXPECT_EQ(expected_surface_drawable_content, |
3409 render_surface1->render_surface()->DrawableContentRect()); | 3409 render_surface1->render_surface()->DrawableContentRect()); |
3410 | 3410 |
3411 // All layers that draw content into the unclipped surface are also unclipped. | 3411 // All layers that draw content into the unclipped surface are also unclipped. |
3412 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_content_rect()); | 3412 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_layer_rect()); |
3413 EXPECT_EQ(expected_surface_drawable_content, child1->drawable_content_rect()); | 3413 EXPECT_EQ(expected_surface_drawable_content, child1->drawable_content_rect()); |
3414 } | 3414 } |
3415 | 3415 |
3416 TEST_F(LayerTreeHostCommonTest, | 3416 TEST_F(LayerTreeHostCommonTest, |
3417 DrawableAndVisibleContentRectsWithTransformOnClippedSurface) { | 3417 DrawableAndVisibleContentRectsWithTransformOnClippedSurface) { |
3418 // Layers that have non-axis aligned bounds (due to transforms) have an | 3418 // Layers that have non-axis aligned bounds (due to transforms) have an |
3419 // expanded, axis-aligned DrawableContentRect and visible content rect. | 3419 // expanded, axis-aligned DrawableContentRect and visible content rect. |
3420 | 3420 |
3421 scoped_refptr<Layer> root = Layer::Create(layer_settings()); | 3421 scoped_refptr<Layer> root = Layer::Create(layer_settings()); |
3422 scoped_refptr<Layer> render_surface1 = Layer::Create(layer_settings()); | 3422 scoped_refptr<Layer> render_surface1 = Layer::Create(layer_settings()); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3470 gfx::Rect expected_surface_drawable_content = | 3470 gfx::Rect expected_surface_drawable_content = |
3471 gfx::IntersectRects(unclipped_surface_content, gfx::Rect(0, 0, 50, 50)); | 3471 gfx::IntersectRects(unclipped_surface_content, gfx::Rect(0, 0, 50, 50)); |
3472 EXPECT_EQ(expected_surface_drawable_content, | 3472 EXPECT_EQ(expected_surface_drawable_content, |
3473 render_surface1->render_surface()->DrawableContentRect()); | 3473 render_surface1->render_surface()->DrawableContentRect()); |
3474 | 3474 |
3475 // On the clipped surface, only a quarter of the child1 is visible, but when | 3475 // On the clipped surface, only a quarter of the child1 is visible, but when |
3476 // rotating it back to child1's content space, the actual enclosing rect ends | 3476 // rotating it back to child1's content space, the actual enclosing rect ends |
3477 // up covering the full left half of child1. | 3477 // up covering the full left half of child1. |
3478 // | 3478 // |
3479 // Given the floating point math, this number is a little bit fuzzy. | 3479 // Given the floating point math, this number is a little bit fuzzy. |
3480 EXPECT_EQ(gfx::Rect(0, 0, 26, 50), child1->visible_content_rect()); | 3480 EXPECT_EQ(gfx::Rect(0, 0, 26, 50), child1->visible_layer_rect()); |
3481 | 3481 |
3482 // The child's DrawableContentRect is unclipped. | 3482 // The child's DrawableContentRect is unclipped. |
3483 EXPECT_EQ(unclipped_surface_content, child1->drawable_content_rect()); | 3483 EXPECT_EQ(unclipped_surface_content, child1->drawable_content_rect()); |
3484 } | 3484 } |
3485 | 3485 |
3486 TEST_F(LayerTreeHostCommonTest, DrawableAndVisibleContentRectsInHighDPI) { | 3486 TEST_F(LayerTreeHostCommonTest, DrawableAndVisibleContentRectsInHighDPI) { |
3487 MockContentLayerClient client; | 3487 MockContentLayerClient client; |
3488 | 3488 |
3489 scoped_refptr<Layer> root = Layer::Create(layer_settings()); | 3489 scoped_refptr<Layer> root = Layer::Create(layer_settings()); |
3490 scoped_refptr<FakePictureLayer> render_surface1 = | 3490 scoped_refptr<FakePictureLayer> render_surface1 = |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3571 // render_surface2 lives in the "unclipped universe" of render_surface1, and | 3571 // render_surface2 lives in the "unclipped universe" of render_surface1, and |
3572 // is only implicitly clipped by render_surface1. | 3572 // is only implicitly clipped by render_surface1. |
3573 EXPECT_EQ(gfx::Rect(10, 10, 350, 350), | 3573 EXPECT_EQ(gfx::Rect(10, 10, 350, 350), |
3574 render_surface2->render_surface()->DrawableContentRect()); | 3574 render_surface2->render_surface()->DrawableContentRect()); |
3575 | 3575 |
3576 EXPECT_EQ(gfx::Rect(10, 10, 100, 100), child1->drawable_content_rect()); | 3576 EXPECT_EQ(gfx::Rect(10, 10, 100, 100), child1->drawable_content_rect()); |
3577 EXPECT_EQ(gfx::Rect(150, 150, 100, 100), child2->drawable_content_rect()); | 3577 EXPECT_EQ(gfx::Rect(150, 150, 100, 100), child2->drawable_content_rect()); |
3578 EXPECT_EQ(gfx::Rect(250, 250, 100, 100), child3->drawable_content_rect()); | 3578 EXPECT_EQ(gfx::Rect(250, 250, 100, 100), child3->drawable_content_rect()); |
3579 | 3579 |
3580 // The root layer does not actually draw content of its own. | 3580 // The root layer does not actually draw content of its own. |
3581 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_content_rect()); | 3581 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root->visible_layer_rect()); |
3582 | 3582 |
3583 // All layer visible content rects are not expressed in content space of each | 3583 // All layer visible content rects are not expressed in content space of each |
3584 // layer, so they are not scaled by the device_scale_factor. | 3584 // layer, so they are not scaled by the device_scale_factor. |
3585 EXPECT_EQ(gfx::Rect(0, 0, 3, 4), render_surface1->visible_content_rect()); | 3585 EXPECT_EQ(gfx::Rect(0, 0, 3, 4), render_surface1->visible_layer_rect()); |
3586 EXPECT_EQ(gfx::Rect(0, 0, 7, 13), render_surface2->visible_content_rect()); | 3586 EXPECT_EQ(gfx::Rect(0, 0, 7, 13), render_surface2->visible_layer_rect()); |
3587 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_content_rect()); | 3587 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child1->visible_layer_rect()); |
3588 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child2->visible_content_rect()); | 3588 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child2->visible_layer_rect()); |
3589 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child3->visible_content_rect()); | 3589 EXPECT_EQ(gfx::Rect(0, 0, 50, 50), child3->visible_layer_rect()); |
3590 } | 3590 } |
3591 | 3591 |
3592 TEST_F(LayerTreeHostCommonTest, BackFaceCullingWithoutPreserves3d) { | 3592 TEST_F(LayerTreeHostCommonTest, BackFaceCullingWithoutPreserves3d) { |
3593 // Verify the behavior of back-face culling when there are no preserve-3d | 3593 // Verify the behavior of back-face culling when there are no preserve-3d |
3594 // layers. Note that 3d transforms still apply in this case, but they are | 3594 // layers. Note that 3d transforms still apply in this case, but they are |
3595 // "flattened" to each parent layer according to current W3C spec. | 3595 // "flattened" to each parent layer according to current W3C spec. |
3596 | 3596 |
3597 const gfx::Transform identity_matrix; | 3597 const gfx::Transform identity_matrix; |
3598 scoped_refptr<Layer> parent = Layer::Create(layer_settings()); | 3598 scoped_refptr<Layer> parent = Layer::Create(layer_settings()); |
3599 scoped_refptr<LayerWithForcedDrawsContent> front_facing_child = | 3599 scoped_refptr<LayerWithForcedDrawsContent> front_facing_child = |
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4104 ASSERT_EQ( | 4104 ASSERT_EQ( |
4105 2u, | 4105 2u, |
4106 render_surface_layer_list.at(1)->render_surface()->layer_list().size()); | 4106 render_surface_layer_list.at(1)->render_surface()->layer_list().size()); |
4107 EXPECT_EQ(animating_surface->id(), | 4107 EXPECT_EQ(animating_surface->id(), |
4108 render_surface_layer_list.at(1) | 4108 render_surface_layer_list.at(1) |
4109 ->render_surface()->layer_list().at(0)->id()); | 4109 ->render_surface()->layer_list().at(0)->id()); |
4110 EXPECT_EQ(child_of_animating_surface->id(), | 4110 EXPECT_EQ(child_of_animating_surface->id(), |
4111 render_surface_layer_list.at(1) | 4111 render_surface_layer_list.at(1) |
4112 ->render_surface()->layer_list().at(1)->id()); | 4112 ->render_surface()->layer_list().at(1)->id()); |
4113 | 4113 |
4114 EXPECT_FALSE(child2->visible_content_rect().IsEmpty()); | 4114 EXPECT_FALSE(child2->visible_layer_rect().IsEmpty()); |
4115 | 4115 |
4116 // The animating layers should have a visible content rect that represents the | 4116 // The animating layers should have a visible content rect that represents the |
4117 // area of the front face that is within the viewport. | 4117 // area of the front face that is within the viewport. |
4118 EXPECT_EQ(animating_child->visible_content_rect(), | 4118 EXPECT_EQ(animating_child->visible_layer_rect(), |
4119 gfx::Rect(animating_child->bounds())); | 4119 gfx::Rect(animating_child->bounds())); |
4120 EXPECT_EQ(animating_surface->visible_content_rect(), | 4120 EXPECT_EQ(animating_surface->visible_layer_rect(), |
4121 gfx::Rect(animating_surface->bounds())); | 4121 gfx::Rect(animating_surface->bounds())); |
4122 // And layers in the subtree of the animating layer should have valid visible | 4122 // And layers in the subtree of the animating layer should have valid visible |
4123 // content rects also. | 4123 // content rects also. |
4124 EXPECT_EQ(child_of_animating_surface->visible_content_rect(), | 4124 EXPECT_EQ(child_of_animating_surface->visible_layer_rect(), |
4125 gfx::Rect(child_of_animating_surface->bounds())); | 4125 gfx::Rect(child_of_animating_surface->bounds())); |
4126 } | 4126 } |
4127 | 4127 |
4128 TEST_F(LayerTreeHostCommonTest, | 4128 TEST_F(LayerTreeHostCommonTest, |
4129 BackFaceCullingWithPreserves3dForFlatteningSurface) { | 4129 BackFaceCullingWithPreserves3dForFlatteningSurface) { |
4130 // Verify the behavior of back-face culling for a render surface that is | 4130 // Verify the behavior of back-face culling for a render surface that is |
4131 // created when it flattens its subtree, and its parent has preserves-3d. | 4131 // created when it flattens its subtree, and its parent has preserves-3d. |
4132 | 4132 |
4133 const gfx::Transform identity_matrix; | 4133 const gfx::Transform identity_matrix; |
4134 scoped_refptr<Layer> parent = Layer::Create(layer_settings()); | 4134 scoped_refptr<Layer> parent = Layer::Create(layer_settings()); |
(...skipping 1494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5629 | 5629 |
5630 scoped_ptr<FakeLayerTreeHost> host(CreateFakeLayerTreeHost()); | 5630 scoped_ptr<FakeLayerTreeHost> host(CreateFakeLayerTreeHost()); |
5631 host->SetRootLayer(root); | 5631 host->SetRootLayer(root); |
5632 | 5632 |
5633 RenderSurfaceLayerList render_surface_layer_list; | 5633 RenderSurfaceLayerList render_surface_layer_list; |
5634 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 5634 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
5635 root.get(), root->bounds(), &render_surface_layer_list); | 5635 root.get(), root->bounds(), &render_surface_layer_list); |
5636 inputs.can_adjust_raster_scales = true; | 5636 inputs.can_adjust_raster_scales = true; |
5637 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 5637 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
5638 | 5638 |
5639 // The visible_content_rect for the |surface_child| should not be clipped by | 5639 // The visible_layer_rect for the |surface_child| should not be clipped by |
5640 // the viewport. | 5640 // the viewport. |
5641 EXPECT_EQ(gfx::Rect(50, 50).ToString(), | 5641 EXPECT_EQ(gfx::Rect(50, 50).ToString(), |
5642 surface_child->visible_content_rect().ToString()); | 5642 surface_child->visible_layer_rect().ToString()); |
5643 } | 5643 } |
5644 | 5644 |
5645 TEST_F(LayerTreeHostCommonTest, TransformedClipParent) { | 5645 TEST_F(LayerTreeHostCommonTest, TransformedClipParent) { |
5646 // Ensure that a transform between the layer and its render surface is not a | 5646 // Ensure that a transform between the layer and its render surface is not a |
5647 // problem. Constructs the following layer tree. | 5647 // problem. Constructs the following layer tree. |
5648 // | 5648 // |
5649 // root (a render surface) | 5649 // root (a render surface) |
5650 // + render_surface | 5650 // + render_surface |
5651 // + clip_parent (scaled) | 5651 // + clip_parent (scaled) |
5652 // + intervening_clipping_layer | 5652 // + intervening_clipping_layer |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5860 render_surface1->render_surface()->content_rect().ToString()); | 5860 render_surface1->render_surface()->content_rect().ToString()); |
5861 EXPECT_EQ(gfx::Rect(-1, -1, 40, 40).ToString(), | 5861 EXPECT_EQ(gfx::Rect(-1, -1, 40, 40).ToString(), |
5862 render_surface2->render_surface()->content_rect().ToString()); | 5862 render_surface2->render_surface()->content_rect().ToString()); |
5863 | 5863 |
5864 // The clip child should have inherited the clip parent's clip (projected to | 5864 // The clip child should have inherited the clip parent's clip (projected to |
5865 // the right space, of course), and should have the correctly sized visible | 5865 // the right space, of course), and should have the correctly sized visible |
5866 // content rect. | 5866 // content rect. |
5867 EXPECT_EQ(gfx::Rect(-1, -1, 40, 40).ToString(), | 5867 EXPECT_EQ(gfx::Rect(-1, -1, 40, 40).ToString(), |
5868 clip_child->clip_rect().ToString()); | 5868 clip_child->clip_rect().ToString()); |
5869 EXPECT_EQ(gfx::Rect(9, 9, 40, 40).ToString(), | 5869 EXPECT_EQ(gfx::Rect(9, 9, 40, 40).ToString(), |
5870 clip_child->visible_content_rect().ToString()); | 5870 clip_child->visible_layer_rect().ToString()); |
5871 EXPECT_TRUE(clip_child->is_clipped()); | 5871 EXPECT_TRUE(clip_child->is_clipped()); |
5872 } | 5872 } |
5873 | 5873 |
5874 TEST_F(LayerTreeHostCommonTest, ClipParentScrolledInterveningLayer) { | 5874 TEST_F(LayerTreeHostCommonTest, ClipParentScrolledInterveningLayer) { |
5875 // Ensure that intervening render surfaces are not a problem, even if there | 5875 // Ensure that intervening render surfaces are not a problem, even if there |
5876 // is a scroll involved. Note, we do _not_ have to consider any other sort | 5876 // is a scroll involved. Note, we do _not_ have to consider any other sort |
5877 // of transform. | 5877 // of transform. |
5878 // | 5878 // |
5879 // root (a render surface) | 5879 // root (a render surface) |
5880 // + clip_parent (masks to bounds) | 5880 // + clip_parent (masks to bounds) |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5989 render_surface1->render_surface()->content_rect().ToString()); | 5989 render_surface1->render_surface()->content_rect().ToString()); |
5990 EXPECT_EQ(gfx::Rect(2, 2, 40, 40).ToString(), | 5990 EXPECT_EQ(gfx::Rect(2, 2, 40, 40).ToString(), |
5991 render_surface2->render_surface()->content_rect().ToString()); | 5991 render_surface2->render_surface()->content_rect().ToString()); |
5992 | 5992 |
5993 // The clip child should have inherited the clip parent's clip (projected to | 5993 // The clip child should have inherited the clip parent's clip (projected to |
5994 // the right space, of course), and should have the correctly sized visible | 5994 // the right space, of course), and should have the correctly sized visible |
5995 // content rect. | 5995 // content rect. |
5996 EXPECT_EQ(gfx::Rect(2, 2, 40, 40).ToString(), | 5996 EXPECT_EQ(gfx::Rect(2, 2, 40, 40).ToString(), |
5997 clip_child->clip_rect().ToString()); | 5997 clip_child->clip_rect().ToString()); |
5998 EXPECT_EQ(gfx::Rect(12, 12, 40, 40).ToString(), | 5998 EXPECT_EQ(gfx::Rect(12, 12, 40, 40).ToString(), |
5999 clip_child->visible_content_rect().ToString()); | 5999 clip_child->visible_layer_rect().ToString()); |
6000 EXPECT_TRUE(clip_child->is_clipped()); | 6000 EXPECT_TRUE(clip_child->is_clipped()); |
6001 } | 6001 } |
6002 | 6002 |
6003 TEST_F(LayerTreeHostCommonTest, DescendantsOfClipChildren) { | 6003 TEST_F(LayerTreeHostCommonTest, DescendantsOfClipChildren) { |
6004 // Ensures that descendants of the clip child inherit the correct clip. | 6004 // Ensures that descendants of the clip child inherit the correct clip. |
6005 // | 6005 // |
6006 // root (a render surface) | 6006 // root (a render surface) |
6007 // + clip_parent (masks to bounds) | 6007 // + clip_parent (masks to bounds) |
6008 // + intervening (masks to bounds) | 6008 // + intervening (masks to bounds) |
6009 // + clip_child | 6009 // + clip_child |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6069 ExecuteCalculateDrawProperties(root.get()); | 6069 ExecuteCalculateDrawProperties(root.get()); |
6070 | 6070 |
6071 EXPECT_TRUE(root->render_surface()); | 6071 EXPECT_TRUE(root->render_surface()); |
6072 | 6072 |
6073 // Neither the clip child nor its descendant should have inherited the clip | 6073 // Neither the clip child nor its descendant should have inherited the clip |
6074 // from |intervening|. | 6074 // from |intervening|. |
6075 EXPECT_EQ(gfx::Rect(0, 0, 40, 40).ToString(), | 6075 EXPECT_EQ(gfx::Rect(0, 0, 40, 40).ToString(), |
6076 clip_child->clip_rect().ToString()); | 6076 clip_child->clip_rect().ToString()); |
6077 EXPECT_TRUE(clip_child->is_clipped()); | 6077 EXPECT_TRUE(clip_child->is_clipped()); |
6078 EXPECT_EQ(gfx::Rect(0, 0, 40, 40).ToString(), | 6078 EXPECT_EQ(gfx::Rect(0, 0, 40, 40).ToString(), |
6079 child->visible_content_rect().ToString()); | 6079 child->visible_layer_rect().ToString()); |
6080 EXPECT_TRUE(child->is_clipped()); | 6080 EXPECT_TRUE(child->is_clipped()); |
6081 } | 6081 } |
6082 | 6082 |
6083 TEST_F(LayerTreeHostCommonTest, | 6083 TEST_F(LayerTreeHostCommonTest, |
6084 SurfacesShouldBeUnaffectedByNonDescendantClipChildren) { | 6084 SurfacesShouldBeUnaffectedByNonDescendantClipChildren) { |
6085 // Ensures that non-descendant clip children in the tree do not affect | 6085 // Ensures that non-descendant clip children in the tree do not affect |
6086 // render surfaces. | 6086 // render surfaces. |
6087 // | 6087 // |
6088 // root (a render surface) | 6088 // root (a render surface) |
6089 // + clip_parent (masks to bounds) | 6089 // + clip_parent (masks to bounds) |
(...skipping 1831 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7921 RenderSurfaceLayerList render_surface_layer_list; | 7921 RenderSurfaceLayerList render_surface_layer_list; |
7922 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( | 7922 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( |
7923 host->root_layer(), device_viewport_size, &render_surface_layer_list); | 7923 host->root_layer(), device_viewport_size, &render_surface_layer_list); |
7924 inputs.device_scale_factor = 2.f; | 7924 inputs.device_scale_factor = 2.f; |
7925 inputs.page_scale_factor = 1.f; | 7925 inputs.page_scale_factor = 1.f; |
7926 inputs.page_scale_layer = NULL; | 7926 inputs.page_scale_layer = NULL; |
7927 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 7927 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
7928 | 7928 |
7929 // Layers in the root render surface have their visible content rect clipped | 7929 // Layers in the root render surface have their visible content rect clipped |
7930 // by the viewport. | 7930 // by the viewport. |
7931 EXPECT_EQ(gfx::Rect(768 / 2, 582 / 2), root->visible_content_rect()); | 7931 EXPECT_EQ(gfx::Rect(768 / 2, 582 / 2), root->visible_layer_rect()); |
7932 | 7932 |
7933 // Layers drawing to a child render surface should still have their visible | 7933 // Layers drawing to a child render surface should still have their visible |
7934 // content rect clipped by the viewport. | 7934 // content rect clipped by the viewport. |
7935 EXPECT_EQ(gfx::Rect(768 / 2, 582 / 2), content->visible_content_rect()); | 7935 EXPECT_EQ(gfx::Rect(768 / 2, 582 / 2), content->visible_layer_rect()); |
7936 } | 7936 } |
7937 | 7937 |
7938 TEST_F(LayerTreeHostCommonTest, BoundsDeltaAffectVisibleContentRect) { | 7938 TEST_F(LayerTreeHostCommonTest, BoundsDeltaAffectVisibleContentRect) { |
7939 FakeImplProxy proxy; | 7939 FakeImplProxy proxy; |
7940 TestSharedBitmapManager shared_bitmap_manager; | 7940 TestSharedBitmapManager shared_bitmap_manager; |
7941 TestTaskGraphRunner task_graph_runner; | 7941 TestTaskGraphRunner task_graph_runner; |
7942 FakeLayerTreeHostImpl host_impl(&proxy, &shared_bitmap_manager, | 7942 FakeLayerTreeHostImpl host_impl(&proxy, &shared_bitmap_manager, |
7943 &task_graph_runner); | 7943 &task_graph_runner); |
7944 | 7944 |
7945 // Set two layers: the root layer clips it's child, | 7945 // Set two layers: the root layer clips it's child, |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7981 false, | 7981 false, |
7982 false); | 7982 false); |
7983 sublayer->SetDrawsContent(true); | 7983 sublayer->SetDrawsContent(true); |
7984 | 7984 |
7985 LayerImplList layer_impl_list; | 7985 LayerImplList layer_impl_list; |
7986 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 7986 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
7987 root, device_viewport_size, &layer_impl_list); | 7987 root, device_viewport_size, &layer_impl_list); |
7988 | 7988 |
7989 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 7989 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
7990 | 7990 |
7991 EXPECT_EQ(gfx::Rect(root_size), sublayer->visible_content_rect()); | 7991 EXPECT_EQ(gfx::Rect(root_size), sublayer->visible_layer_rect()); |
7992 | 7992 |
7993 root->SetBoundsDelta(gfx::Vector2dF(0.0, 50.0)); | 7993 root->SetBoundsDelta(gfx::Vector2dF(0.0, 50.0)); |
7994 | 7994 |
7995 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 7995 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
7996 | 7996 |
7997 gfx::Rect affected_by_delta(0, 0, root_size.width(), | 7997 gfx::Rect affected_by_delta(0, 0, root_size.width(), |
7998 root_size.height() + 50); | 7998 root_size.height() + 50); |
7999 EXPECT_EQ(affected_by_delta, sublayer->visible_content_rect()); | 7999 EXPECT_EQ(affected_by_delta, sublayer->visible_layer_rect()); |
8000 } | 8000 } |
8001 | 8001 |
8002 TEST_F(LayerTreeHostCommonTest, VisibleContentRectForAnimatedLayer) { | 8002 TEST_F(LayerTreeHostCommonTest, VisibleContentRectForAnimatedLayer) { |
8003 const gfx::Transform identity_matrix; | 8003 const gfx::Transform identity_matrix; |
8004 scoped_refptr<Layer> root = Layer::Create(layer_settings()); | 8004 scoped_refptr<Layer> root = Layer::Create(layer_settings()); |
8005 scoped_refptr<LayerWithForcedDrawsContent> animated = | 8005 scoped_refptr<LayerWithForcedDrawsContent> animated = |
8006 make_scoped_refptr(new LayerWithForcedDrawsContent(layer_settings())); | 8006 make_scoped_refptr(new LayerWithForcedDrawsContent(layer_settings())); |
8007 | 8007 |
8008 root->AddChild(animated); | 8008 root->AddChild(animated); |
8009 | 8009 |
(...skipping 801 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8811 EXPECT_FALSE(root->layer_or_descendant_is_drawn()); | 8811 EXPECT_FALSE(root->layer_or_descendant_is_drawn()); |
8812 EXPECT_FALSE(root->visited()); | 8812 EXPECT_FALSE(root->visited()); |
8813 EXPECT_FALSE(root->sorted_for_recursion()); | 8813 EXPECT_FALSE(root->sorted_for_recursion()); |
8814 EXPECT_FALSE(child->layer_or_descendant_is_drawn()); | 8814 EXPECT_FALSE(child->layer_or_descendant_is_drawn()); |
8815 EXPECT_FALSE(child->visited()); | 8815 EXPECT_FALSE(child->visited()); |
8816 EXPECT_FALSE(child->sorted_for_recursion()); | 8816 EXPECT_FALSE(child->sorted_for_recursion()); |
8817 } | 8817 } |
8818 | 8818 |
8819 } // namespace | 8819 } // namespace |
8820 } // namespace cc | 8820 } // namespace cc |
OLD | NEW |