| Index: cc/trees/layer_tree_host_common_unittest.cc
|
| diff --git a/cc/trees/layer_tree_host_common_unittest.cc b/cc/trees/layer_tree_host_common_unittest.cc
|
| index 873c9265b9059c8f71f9b09fe1acbdb9a9355e35..6817657d07dd8ec3c4685866c9914aa6aabd1235 100644
|
| --- a/cc/trees/layer_tree_host_common_unittest.cc
|
| +++ b/cc/trees/layer_tree_host_common_unittest.cc
|
| @@ -181,8 +181,6 @@ class LayerTreeHostCommonTestBase : public LayerTestCommon::LayerImplTest {
|
|
|
| void ExecuteCalculateDrawPropertiesAndSaveUpdateLayerList(Layer* root_layer) {
|
| DCHECK(root_layer->layer_tree_host());
|
| - bool can_render_to_separate_surface = true;
|
| -
|
| const Layer* page_scale_layer =
|
| root_layer->layer_tree_host()->page_scale_layer();
|
| Layer* inner_viewport_scroll_layer =
|
| @@ -207,8 +205,7 @@ class LayerTreeHostCommonTestBase : public LayerTestCommon::LayerImplTest {
|
| elastic_overscroll, page_scale_factor, device_scale_factor,
|
| gfx::Rect(device_viewport_size), gfx::Transform(), property_trees);
|
| draw_property_utils::UpdatePropertyTrees(root_layer->layer_tree_host(),
|
| - property_trees,
|
| - can_render_to_separate_surface);
|
| + property_trees);
|
| draw_property_utils::FindLayersThatNeedUpdates(
|
| root_layer->layer_tree_host(), property_trees, &update_layer_list_);
|
| }
|
| @@ -216,7 +213,6 @@ class LayerTreeHostCommonTestBase : public LayerTestCommon::LayerImplTest {
|
| void ExecuteCalculateDrawPropertiesAndSaveUpdateLayerList(
|
| LayerImpl* root_layer) {
|
| DCHECK(root_layer->layer_tree_impl());
|
| - bool can_render_to_separate_surface = true;
|
| bool can_adjust_raster_scales = true;
|
|
|
| const LayerImpl* page_scale_layer = nullptr;
|
| @@ -244,8 +240,7 @@ class LayerTreeHostCommonTestBase : public LayerTestCommon::LayerImplTest {
|
| elastic_overscroll, page_scale_factor, device_scale_factor,
|
| gfx::Rect(device_viewport_size), gfx::Transform(), property_trees);
|
| draw_property_utils::UpdatePropertyTreesAndRenderSurfaces(
|
| - root_layer, property_trees, can_render_to_separate_surface,
|
| - can_adjust_raster_scales);
|
| + root_layer, property_trees, can_adjust_raster_scales);
|
| draw_property_utils::FindLayersThatNeedUpdates(
|
| root_layer->layer_tree_impl(), property_trees,
|
| update_layer_list_impl_.get());
|
| @@ -263,7 +258,6 @@ class LayerTreeHostCommonTestBase : public LayerTestCommon::LayerImplTest {
|
| LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
|
| root_layer, device_viewport_size, render_surface_list_impl_.get());
|
| inputs.can_adjust_raster_scales = true;
|
| - inputs.can_render_to_separate_surface = false;
|
|
|
| LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs);
|
| }
|
| @@ -277,7 +271,6 @@ class LayerTreeHostCommonTestBase : public LayerTestCommon::LayerImplTest {
|
| DCHECK(!root_layer->bounds().IsEmpty());
|
| LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
|
| root_layer, device_viewport_size, render_surface_list_impl_.get());
|
| - inputs.can_render_to_separate_surface = true;
|
| inputs.can_adjust_raster_scales = false;
|
|
|
| LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs);
|
| @@ -770,54 +763,6 @@ TEST_F(LayerTreeHostCommonTest, TransformsForSingleRenderSurface) {
|
| child->render_target()->screen_space_transform());
|
| }
|
|
|
| -TEST_F(LayerTreeHostCommonTest, TransformsWhenCannotRenderToSeparateSurface) {
|
| - LayerImpl* root = root_layer_for_testing();
|
| - LayerImpl* parent = AddChildToRoot<LayerImpl>();
|
| - LayerImpl* child = AddChild<LayerImpl>(parent);
|
| - LayerImpl* grand_child = AddChild<LayerImpl>(child);
|
| -
|
| - gfx::Transform parent_transform;
|
| - parent_transform.Translate(10.0, 10.0);
|
| -
|
| - gfx::Transform child_transform;
|
| - child_transform.Rotate(45.0);
|
| -
|
| - root->SetBounds(gfx::Size(100, 100));
|
| - parent->test_properties()->transform = parent_transform;
|
| - parent->SetBounds(gfx::Size(10, 10));
|
| - child->test_properties()->transform = child_transform;
|
| - child->SetBounds(gfx::Size(10, 10));
|
| - child->test_properties()->force_render_surface = true;
|
| - grand_child->SetPosition(gfx::PointF(2.f, 2.f));
|
| - grand_child->SetBounds(gfx::Size(20, 20));
|
| - grand_child->SetDrawsContent(true);
|
| -
|
| - gfx::Transform expected_grand_child_screen_space_transform;
|
| - expected_grand_child_screen_space_transform.Translate(10.0, 10.0);
|
| - expected_grand_child_screen_space_transform.Rotate(45.0);
|
| - expected_grand_child_screen_space_transform.Translate(2.0, 2.0);
|
| -
|
| - // First compute draw properties with separate surfaces enabled.
|
| - ExecuteCalculateDrawProperties(root);
|
| -
|
| - // The grand child's draw transform should be its offset wrt the child.
|
| - gfx::Transform expected_grand_child_draw_transform;
|
| - expected_grand_child_draw_transform.Translate(2.0, 2.0);
|
| - EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_draw_transform,
|
| - grand_child->DrawTransform());
|
| - EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_screen_space_transform,
|
| - grand_child->ScreenSpaceTransform());
|
| -
|
| - ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(root);
|
| -
|
| - // With separate surfaces disabled, the grand child's draw transform should be
|
| - // the same as its screen space transform.
|
| - EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_screen_space_transform,
|
| - grand_child->DrawTransform());
|
| - EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_screen_space_transform,
|
| - grand_child->ScreenSpaceTransform());
|
| -}
|
| -
|
| TEST_F(LayerTreeHostCommonTest, TransformsForRenderSurfaceHierarchy) {
|
| // This test creates a more complex tree and verifies it all at once. This
|
| // covers the following cases:
|
| @@ -1611,66 +1556,6 @@ TEST_F(LayerTreeHostCommonTest, RenderSurfaceDrawOpacity) {
|
| EXPECT_EQ(0.25f, GetRenderSurface(surface2)->draw_opacity());
|
| }
|
|
|
| -TEST_F(LayerTreeHostCommonTest, DrawOpacityWhenCannotRenderToSeparateSurface) {
|
| - // Tests that when separate surfaces are disabled, a layer's draw opacity is
|
| - // the product of all ancestor layer opacties and the layer's own opacity.
|
| - // (Rendering will still be incorrect in situations where we really do need
|
| - // surfaces to apply opacity, such as when we have overlapping layers with an
|
| - // ancestor whose opacity is <1.)
|
| - LayerImpl* root = root_layer_for_testing();
|
| - LayerImpl* parent = AddChild<LayerImpl>(root);
|
| - LayerImpl* child1 = AddChild<LayerImpl>(parent);
|
| - LayerImpl* child2 = AddChild<LayerImpl>(parent);
|
| - LayerImpl* grand_child = AddChild<LayerImpl>(child1);
|
| - LayerImpl* leaf_node1 = AddChild<LayerImpl>(grand_child);
|
| - LayerImpl* leaf_node2 = AddChild<LayerImpl>(child2);
|
| -
|
| - root->SetBounds(gfx::Size(100, 100));
|
| - root->SetDrawsContent(true);
|
| - parent->SetBounds(gfx::Size(100, 100));
|
| - parent->SetDrawsContent(true);
|
| - child1->SetBounds(gfx::Size(100, 100));
|
| - child1->SetDrawsContent(true);
|
| - child1->test_properties()->opacity = 0.5f;
|
| - child1->test_properties()->force_render_surface = true;
|
| - child2->SetBounds(gfx::Size(100, 100));
|
| - child2->SetDrawsContent(true);
|
| - grand_child->SetBounds(gfx::Size(100, 100));
|
| - grand_child->SetDrawsContent(true);
|
| - grand_child->test_properties()->opacity = 0.5f;
|
| - grand_child->test_properties()->force_render_surface = true;
|
| - leaf_node1->SetBounds(gfx::Size(100, 100));
|
| - leaf_node1->SetDrawsContent(true);
|
| - leaf_node1->test_properties()->opacity = 0.5f;
|
| - leaf_node2->SetBounds(gfx::Size(100, 100));
|
| - leaf_node2->SetDrawsContent(true);
|
| - leaf_node2->test_properties()->opacity = 0.5f;
|
| -
|
| - // With surfaces enabled, each layer's draw opacity is the product of layer
|
| - // opacities on the path from the layer to its render target, not including
|
| - // the opacity of the layer that owns the target surface (since that opacity
|
| - // is applied by the surface).
|
| - ExecuteCalculateDrawProperties(root);
|
| - EXPECT_EQ(1.f, root->draw_opacity());
|
| - EXPECT_EQ(1.f, parent->draw_opacity());
|
| - EXPECT_EQ(1.f, child1->draw_opacity());
|
| - EXPECT_EQ(1.f, child2->draw_opacity());
|
| - EXPECT_EQ(1.f, grand_child->draw_opacity());
|
| - EXPECT_EQ(0.5f, leaf_node1->draw_opacity());
|
| - EXPECT_EQ(0.5f, leaf_node2->draw_opacity());
|
| -
|
| - // With surfaces disabled, each layer's draw opacity is the product of layer
|
| - // opacities on the path from the layer to the root.
|
| - ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(root);
|
| - EXPECT_EQ(1.f, root->draw_opacity());
|
| - EXPECT_EQ(1.f, parent->draw_opacity());
|
| - EXPECT_EQ(0.5f, child1->draw_opacity());
|
| - EXPECT_EQ(1.f, child2->draw_opacity());
|
| - EXPECT_EQ(0.25f, grand_child->draw_opacity());
|
| - EXPECT_EQ(0.125f, leaf_node1->draw_opacity());
|
| - EXPECT_EQ(0.5f, leaf_node2->draw_opacity());
|
| -}
|
| -
|
| TEST_F(LayerTreeHostCommonTest, ForceRenderSurface) {
|
| LayerImpl* root = root_layer_for_testing();
|
| LayerImpl* render_surface1 = AddChildToRoot<LayerImpl>();
|
| @@ -1953,154 +1838,6 @@ TEST_F(LayerTreeHostCommonTest, UpdateClipRectCorrectly) {
|
| EXPECT_EQ(gfx::Rect(), child->clip_rect());
|
| }
|
|
|
| -TEST_F(LayerTreeHostCommonTest, IsClippedWhenCannotRenderToSeparateSurface) {
|
| - // Tests that when separate surfaces are disabled, is_clipped is true exactly
|
| - // when a layer or its ancestor has a clip; in particular, if a layer
|
| - // is_clipped, so is its entire subtree (since there are no render surfaces
|
| - // that can reset is_clipped).
|
| - LayerImpl* root = root_layer_for_testing();
|
| - LayerImpl* parent = AddChild<LayerImpl>(root);
|
| - LayerImpl* child1 = AddChild<LayerImpl>(parent);
|
| - LayerImpl* child2 = AddChild<LayerImpl>(parent);
|
| - LayerImpl* grand_child = AddChild<LayerImpl>(child1);
|
| - LayerImpl* leaf_node1 = AddChild<LayerImpl>(grand_child);
|
| - LayerImpl* leaf_node2 = AddChild<LayerImpl>(child2);
|
| -
|
| - root->SetBounds(gfx::Size(100, 100));
|
| - root->SetDrawsContent(true);
|
| - parent->SetBounds(gfx::Size(100, 100));
|
| - parent->SetDrawsContent(true);
|
| - child1->SetBounds(gfx::Size(100, 100));
|
| - child1->SetDrawsContent(true);
|
| - child1->test_properties()->force_render_surface = true;
|
| - child2->SetBounds(gfx::Size(100, 100));
|
| - child2->SetDrawsContent(true);
|
| - grand_child->SetBounds(gfx::Size(100, 100));
|
| - grand_child->SetDrawsContent(true);
|
| - grand_child->test_properties()->force_render_surface = true;
|
| - leaf_node1->SetBounds(gfx::Size(100, 100));
|
| - leaf_node1->SetDrawsContent(true);
|
| - leaf_node2->SetBounds(gfx::Size(100, 100));
|
| - leaf_node2->SetDrawsContent(true);
|
| -
|
| - // Case 1: Nothing is clipped. In this case, is_clipped is always false, with
|
| - // or without surfaces.
|
| - ExecuteCalculateDrawProperties(root);
|
| - EXPECT_FALSE(root->is_clipped());
|
| - EXPECT_FALSE(parent->is_clipped());
|
| - EXPECT_FALSE(child1->is_clipped());
|
| - EXPECT_FALSE(child2->is_clipped());
|
| - EXPECT_FALSE(grand_child->is_clipped());
|
| - EXPECT_FALSE(leaf_node1->is_clipped());
|
| - EXPECT_FALSE(leaf_node2->is_clipped());
|
| -
|
| - ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(root);
|
| - EXPECT_FALSE(root->is_clipped());
|
| - EXPECT_FALSE(parent->is_clipped());
|
| - EXPECT_FALSE(child1->is_clipped());
|
| - EXPECT_FALSE(child2->is_clipped());
|
| - EXPECT_FALSE(grand_child->is_clipped());
|
| - EXPECT_FALSE(leaf_node1->is_clipped());
|
| - EXPECT_FALSE(leaf_node2->is_clipped());
|
| -
|
| - // Case 2: The root is clipped. With surfaces, this only persists until the
|
| - // next render surface. Without surfaces, the entire tree is clipped.
|
| - root->SetMasksToBounds(true);
|
| - host_impl()->active_tree()->property_trees()->needs_rebuild = true;
|
| - ExecuteCalculateDrawProperties(root);
|
| - EXPECT_TRUE(root->is_clipped());
|
| - EXPECT_TRUE(parent->is_clipped());
|
| - EXPECT_FALSE(child1->is_clipped());
|
| - EXPECT_TRUE(child2->is_clipped());
|
| - EXPECT_FALSE(grand_child->is_clipped());
|
| - EXPECT_FALSE(leaf_node1->is_clipped());
|
| - EXPECT_TRUE(leaf_node2->is_clipped());
|
| -
|
| - ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(root);
|
| - EXPECT_TRUE(root->is_clipped());
|
| - EXPECT_TRUE(parent->is_clipped());
|
| - EXPECT_TRUE(child1->is_clipped());
|
| - EXPECT_TRUE(child2->is_clipped());
|
| - EXPECT_TRUE(grand_child->is_clipped());
|
| - EXPECT_TRUE(leaf_node1->is_clipped());
|
| - EXPECT_TRUE(leaf_node2->is_clipped());
|
| -
|
| - root->SetMasksToBounds(false);
|
| -
|
| - // Case 3: The parent is clipped. Again, with surfaces, this only persists
|
| - // until the next render surface. Without surfaces, parent's entire subtree is
|
| - // clipped.
|
| - parent->SetMasksToBounds(true);
|
| - host_impl()->active_tree()->property_trees()->needs_rebuild = true;
|
| - ExecuteCalculateDrawProperties(root);
|
| - EXPECT_FALSE(root->is_clipped());
|
| - EXPECT_TRUE(parent->is_clipped());
|
| - EXPECT_FALSE(child1->is_clipped());
|
| - EXPECT_TRUE(child2->is_clipped());
|
| - EXPECT_FALSE(grand_child->is_clipped());
|
| - EXPECT_FALSE(leaf_node1->is_clipped());
|
| - EXPECT_TRUE(leaf_node2->is_clipped());
|
| -
|
| - ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(root);
|
| - EXPECT_FALSE(root->is_clipped());
|
| - EXPECT_TRUE(parent->is_clipped());
|
| - EXPECT_TRUE(child1->is_clipped());
|
| - EXPECT_TRUE(child2->is_clipped());
|
| - EXPECT_TRUE(grand_child->is_clipped());
|
| - EXPECT_TRUE(leaf_node1->is_clipped());
|
| - EXPECT_TRUE(leaf_node2->is_clipped());
|
| -
|
| - parent->SetMasksToBounds(false);
|
| -
|
| - // Case 4: child1 is clipped. With surfaces, only child1 is_clipped, since it
|
| - // has no non-surface children. Without surfaces, child1's entire subtree is
|
| - // clipped.
|
| - child1->SetMasksToBounds(true);
|
| - host_impl()->active_tree()->property_trees()->needs_rebuild = true;
|
| - ExecuteCalculateDrawProperties(root);
|
| - EXPECT_FALSE(root->is_clipped());
|
| - EXPECT_FALSE(parent->is_clipped());
|
| - EXPECT_TRUE(child1->is_clipped());
|
| - EXPECT_FALSE(child2->is_clipped());
|
| - EXPECT_FALSE(grand_child->is_clipped());
|
| - EXPECT_FALSE(leaf_node1->is_clipped());
|
| - EXPECT_FALSE(leaf_node2->is_clipped());
|
| -
|
| - ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(root);
|
| - EXPECT_FALSE(root->is_clipped());
|
| - EXPECT_FALSE(parent->is_clipped());
|
| - EXPECT_TRUE(child1->is_clipped());
|
| - EXPECT_FALSE(child2->is_clipped());
|
| - EXPECT_TRUE(grand_child->is_clipped());
|
| - EXPECT_TRUE(leaf_node1->is_clipped());
|
| - EXPECT_FALSE(leaf_node2->is_clipped());
|
| -
|
| - child1->SetMasksToBounds(false);
|
| -
|
| - // Case 5: Only the leaf nodes are clipped. The behavior with and without
|
| - // surfaces is the same.
|
| - leaf_node1->SetMasksToBounds(true);
|
| - leaf_node2->SetMasksToBounds(true);
|
| - host_impl()->active_tree()->property_trees()->needs_rebuild = true;
|
| - ExecuteCalculateDrawProperties(root);
|
| - EXPECT_FALSE(root->is_clipped());
|
| - EXPECT_FALSE(parent->is_clipped());
|
| - EXPECT_FALSE(child1->is_clipped());
|
| - EXPECT_FALSE(child2->is_clipped());
|
| - EXPECT_FALSE(grand_child->is_clipped());
|
| - EXPECT_TRUE(leaf_node1->is_clipped());
|
| - EXPECT_TRUE(leaf_node2->is_clipped());
|
| -
|
| - ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(root);
|
| - EXPECT_FALSE(root->is_clipped());
|
| - EXPECT_FALSE(parent->is_clipped());
|
| - EXPECT_FALSE(child1->is_clipped());
|
| - EXPECT_FALSE(child2->is_clipped());
|
| - EXPECT_FALSE(grand_child->is_clipped());
|
| - EXPECT_TRUE(leaf_node1->is_clipped());
|
| - EXPECT_TRUE(leaf_node2->is_clipped());
|
| -}
|
| -
|
| TEST_F(LayerTreeHostCommonTest, DrawableContentRectForLayers) {
|
| // Verify that layers get the appropriate DrawableContentRect when their
|
| // parent MasksToBounds is true.
|
| @@ -2210,274 +1947,6 @@ TEST_F(LayerTreeHostCommonTest, ClipRectIsPropagatedCorrectlyToSurfaces) {
|
| GetRenderSurface(grand_child3)->clip_rect());
|
| }
|
|
|
| -TEST_F(LayerTreeHostCommonTest, ClipRectWhenCannotRenderToSeparateSurface) {
|
| - // Tests that when separate surfaces are disabled, a layer's clip_rect is the
|
| - // intersection of all ancestor clips in screen space; in particular, if a
|
| - // layer masks to bounds, it contributes to the clip_rect of all layers in its
|
| - // subtree (since there are no render surfaces that can reset the clip_rect).
|
| - LayerImpl* root = root_layer_for_testing();
|
| - LayerImpl* parent = AddChild<LayerImpl>(root);
|
| - LayerImpl* child1 = AddChild<LayerImpl>(parent);
|
| - LayerImpl* child2 = AddChild<LayerImpl>(parent);
|
| - LayerImpl* grand_child = AddChild<LayerImpl>(child1);
|
| - LayerImpl* leaf_node1 = AddChild<LayerImpl>(grand_child);
|
| - LayerImpl* leaf_node2 = AddChild<LayerImpl>(child2);
|
| -
|
| - root->SetBounds(gfx::Size(100, 100));
|
| - parent->SetPosition(gfx::PointF(2.f, 2.f));
|
| - parent->SetBounds(gfx::Size(400, 400));
|
| - child1->SetPosition(gfx::PointF(4.f, 4.f));
|
| - child1->SetBounds(gfx::Size(800, 800));
|
| - child2->SetPosition(gfx::PointF(3.f, 3.f));
|
| - child2->SetBounds(gfx::Size(800, 800));
|
| - grand_child->SetPosition(gfx::PointF(8.f, 8.f));
|
| - grand_child->SetBounds(gfx::Size(1500, 1500));
|
| - leaf_node1->SetPosition(gfx::PointF(16.f, 16.f));
|
| - leaf_node1->SetBounds(gfx::Size(2000, 2000));
|
| - leaf_node2->SetPosition(gfx::PointF(9.f, 9.f));
|
| - leaf_node2->SetBounds(gfx::Size(2000, 2000));
|
| -
|
| - root->SetDrawsContent(true);
|
| - parent->SetDrawsContent(true);
|
| - child1->SetDrawsContent(true);
|
| - child2->SetDrawsContent(true);
|
| - grand_child->SetDrawsContent(true);
|
| - leaf_node1->SetDrawsContent(true);
|
| - leaf_node2->SetDrawsContent(true);
|
| -
|
| - root->test_properties()->force_render_surface = true;
|
| - child1->test_properties()->force_render_surface = true;
|
| - grand_child->test_properties()->force_render_surface = true;
|
| -
|
| - // Case 1: Nothing is clipped. In this case, each layer's clip rect is its
|
| - // bounds in target space. The only thing that changes when surfaces are
|
| - // disabled is that target space is always screen space.
|
| - ExecuteCalculateDrawProperties(root);
|
| - EXPECT_TRUE(GetRenderSurface(root));
|
| - EXPECT_FALSE(GetRenderSurface(parent));
|
| - EXPECT_TRUE(GetRenderSurface(child1));
|
| - EXPECT_FALSE(GetRenderSurface(child2));
|
| - EXPECT_TRUE(GetRenderSurface(grand_child));
|
| - EXPECT_FALSE(GetRenderSurface(leaf_node1));
|
| - EXPECT_FALSE(GetRenderSurface(leaf_node2));
|
| - EXPECT_FALSE(root->is_clipped());
|
| - EXPECT_FALSE(parent->is_clipped());
|
| - EXPECT_FALSE(child1->is_clipped());
|
| - EXPECT_FALSE(child2->is_clipped());
|
| - EXPECT_FALSE(grand_child->is_clipped());
|
| - EXPECT_FALSE(leaf_node1->is_clipped());
|
| - EXPECT_FALSE(leaf_node2->is_clipped());
|
| - EXPECT_TRUE(GetRenderSurface(root)->is_clipped());
|
| - EXPECT_FALSE(GetRenderSurface(child1)->is_clipped());
|
| - EXPECT_FALSE(GetRenderSurface(grand_child)->is_clipped());
|
| - EXPECT_EQ(gfx::Rect(100, 100), GetRenderSurface(root)->clip_rect());
|
| -
|
| - ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(root);
|
| - EXPECT_FALSE(root->is_clipped());
|
| - EXPECT_FALSE(parent->is_clipped());
|
| - EXPECT_FALSE(child1->is_clipped());
|
| - EXPECT_FALSE(child2->is_clipped());
|
| - EXPECT_FALSE(grand_child->is_clipped());
|
| - EXPECT_FALSE(leaf_node1->is_clipped());
|
| - EXPECT_FALSE(leaf_node2->is_clipped());
|
| - EXPECT_TRUE(GetRenderSurface(root)->is_clipped());
|
| - EXPECT_EQ(gfx::Rect(100, 100), GetRenderSurface(root)->clip_rect());
|
| -
|
| - // Case 2: The root is clipped. In this case, layers that draw into the root
|
| - // render surface are clipped by the root's bounds.
|
| - root->SetMasksToBounds(true);
|
| - host_impl()->active_tree()->property_trees()->needs_rebuild = true;
|
| - root->test_properties()->force_render_surface = true;
|
| - child1->test_properties()->force_render_surface = true;
|
| - grand_child->test_properties()->force_render_surface = true;
|
| - ExecuteCalculateDrawProperties(root);
|
| - EXPECT_TRUE(GetRenderSurface(root));
|
| - EXPECT_FALSE(GetRenderSurface(parent));
|
| - EXPECT_TRUE(GetRenderSurface(child1));
|
| - EXPECT_FALSE(GetRenderSurface(child2));
|
| - EXPECT_TRUE(GetRenderSurface(grand_child));
|
| - EXPECT_FALSE(GetRenderSurface(leaf_node1));
|
| - EXPECT_FALSE(GetRenderSurface(leaf_node2));
|
| - EXPECT_TRUE(root->is_clipped());
|
| - EXPECT_TRUE(parent->is_clipped());
|
| - EXPECT_FALSE(child1->is_clipped());
|
| - EXPECT_TRUE(GetRenderSurface(child1)->is_clipped());
|
| - EXPECT_TRUE(child2->is_clipped());
|
| - EXPECT_FALSE(grand_child->is_clipped());
|
| - EXPECT_FALSE(GetRenderSurface(grand_child)->is_clipped());
|
| - EXPECT_FALSE(leaf_node1->is_clipped());
|
| - EXPECT_TRUE(leaf_node2->is_clipped());
|
| - EXPECT_EQ(gfx::Rect(100, 100), root->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(100, 100), parent->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(100, 100), GetRenderSurface(child1)->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(100, 100), child2->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(100, 100), leaf_node2->clip_rect());
|
| -
|
| - ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(root);
|
| - EXPECT_TRUE(root->is_clipped());
|
| - EXPECT_TRUE(parent->is_clipped());
|
| - EXPECT_TRUE(child1->is_clipped());
|
| - EXPECT_TRUE(child2->is_clipped());
|
| - EXPECT_TRUE(grand_child->is_clipped());
|
| - EXPECT_TRUE(leaf_node1->is_clipped());
|
| - EXPECT_TRUE(leaf_node2->is_clipped());
|
| - EXPECT_EQ(gfx::Rect(100, 100), root->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(100, 100), parent->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(100, 100), child1->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(100, 100), child2->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(100, 100), grand_child->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(100, 100), leaf_node1->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(100, 100), leaf_node2->clip_rect());
|
| -
|
| - root->SetMasksToBounds(false);
|
| -
|
| - // Case 3: The parent and child1 are clipped. When surfaces are enabled, the
|
| - // parent clip rect only contributes to the subtree rooted at child2, since
|
| - // the subtree rooted at child1 renders into a separate surface. Similarly,
|
| - // child1's clip rect doesn't contribute to its descendants, since its only
|
| - // child is a render surface. However, without surfaces, these clip rects
|
| - // contribute to all descendants.
|
| - parent->SetMasksToBounds(true);
|
| - child1->SetMasksToBounds(true);
|
| - host_impl()->active_tree()->property_trees()->needs_rebuild = true;
|
| - root->test_properties()->force_render_surface = true;
|
| - child1->test_properties()->force_render_surface = true;
|
| - grand_child->test_properties()->force_render_surface = true;
|
| - ExecuteCalculateDrawProperties(root);
|
| - EXPECT_TRUE(GetRenderSurface(root));
|
| - EXPECT_FALSE(GetRenderSurface(parent));
|
| - EXPECT_TRUE(GetRenderSurface(child1));
|
| - EXPECT_FALSE(GetRenderSurface(child2));
|
| - EXPECT_TRUE(GetRenderSurface(grand_child));
|
| - EXPECT_FALSE(GetRenderSurface(leaf_node1));
|
| - EXPECT_FALSE(GetRenderSurface(leaf_node2));
|
| - EXPECT_FALSE(root->is_clipped());
|
| - EXPECT_TRUE(GetRenderSurface(root)->is_clipped());
|
| - EXPECT_TRUE(parent->is_clipped());
|
| - EXPECT_TRUE(child1->is_clipped());
|
| - EXPECT_TRUE(child2->is_clipped());
|
| - EXPECT_FALSE(grand_child->is_clipped());
|
| - EXPECT_TRUE(GetRenderSurface(grand_child)->is_clipped());
|
| - EXPECT_FALSE(leaf_node1->is_clipped());
|
| - EXPECT_TRUE(leaf_node2->is_clipped());
|
| - EXPECT_EQ(gfx::Rect(100, 100), GetRenderSurface(root)->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(2, 2, 400, 400), parent->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(800, 800), child1->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(2, 2, 400, 400), child2->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(800, 800), GetRenderSurface(grand_child)->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(2, 2, 400, 400), leaf_node2->clip_rect());
|
| -
|
| - ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(root);
|
| - EXPECT_FALSE(root->is_clipped());
|
| - EXPECT_TRUE(GetRenderSurface(root)->is_clipped());
|
| - EXPECT_TRUE(parent->is_clipped());
|
| - EXPECT_TRUE(child1->is_clipped());
|
| - EXPECT_TRUE(child2->is_clipped());
|
| - EXPECT_TRUE(grand_child->is_clipped());
|
| - EXPECT_TRUE(leaf_node1->is_clipped());
|
| - EXPECT_TRUE(leaf_node2->is_clipped());
|
| - EXPECT_EQ(gfx::Rect(100, 100), GetRenderSurface(root)->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(2, 2, 400, 400), parent->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(6, 6, 396, 396), child1->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(2, 2, 400, 400), child2->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(6, 6, 396, 396), grand_child->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(6, 6, 396, 396), leaf_node1->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(2, 2, 400, 400), leaf_node2->clip_rect());
|
| -}
|
| -
|
| -TEST_F(LayerTreeHostCommonTest, HitTestingWhenSurfacesDisabled) {
|
| - LayerImpl* root = root_layer_for_testing();
|
| - LayerImpl* parent = AddChild<LayerImpl>(root);
|
| - LayerImpl* child = AddChild<LayerImpl>(parent);
|
| - LayerImpl* grand_child = AddChild<LayerImpl>(child);
|
| - LayerImpl* leaf_node = AddChild<LayerImpl>(grand_child);
|
| -
|
| - root->SetBounds(gfx::Size(100, 100));
|
| - parent->SetPosition(gfx::PointF(2.f, 2.f));
|
| - parent->SetBounds(gfx::Size(400, 400));
|
| - parent->SetMasksToBounds(true);
|
| - child->SetPosition(gfx::PointF(4.f, 4.f));
|
| - child->SetBounds(gfx::Size(800, 800));
|
| - child->SetMasksToBounds(true);
|
| - child->test_properties()->force_render_surface = true;
|
| - grand_child->SetPosition(gfx::PointF(8.f, 8.f));
|
| - grand_child->SetBounds(gfx::Size(1500, 1500));
|
| - grand_child->test_properties()->force_render_surface = true;
|
| - leaf_node->SetPosition(gfx::PointF(16.f, 16.f));
|
| - leaf_node->SetBounds(gfx::Size(2000, 2000));
|
| -
|
| - root->SetDrawsContent(true);
|
| - parent->SetDrawsContent(true);
|
| - child->SetDrawsContent(true);
|
| - grand_child->SetDrawsContent(true);
|
| - leaf_node->SetDrawsContent(true);
|
| -
|
| - host_impl()->set_resourceless_software_draw_for_testing();
|
| - ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(root);
|
| - gfx::PointF test_point(90.f, 90.f);
|
| - LayerImpl* result_layer =
|
| - root->layer_tree_impl()->FindLayerThatIsHitByPoint(test_point);
|
| - ASSERT_TRUE(result_layer);
|
| - EXPECT_EQ(leaf_node, result_layer);
|
| -}
|
| -
|
| -TEST_F(LayerTreeHostCommonTest, SurfacesDisabledAndReEnabled) {
|
| - // Tests that draw properties are computed correctly when we disable and then
|
| - // re-enable separate surfaces.
|
| - LayerImpl* root = root_layer_for_testing();
|
| - LayerImpl* parent = AddChild<LayerImpl>(root);
|
| - LayerImpl* child = AddChild<LayerImpl>(parent);
|
| - LayerImpl* grand_child = AddChild<LayerImpl>(child);
|
| - LayerImpl* leaf_node = AddChild<LayerImpl>(grand_child);
|
| -
|
| - root->SetBounds(gfx::Size(100, 100));
|
| - parent->SetPosition(gfx::PointF(2.f, 2.f));
|
| - parent->SetBounds(gfx::Size(400, 400));
|
| - parent->SetMasksToBounds(true);
|
| - child->SetPosition(gfx::PointF(4.f, 4.f));
|
| - child->SetBounds(gfx::Size(800, 800));
|
| - child->SetMasksToBounds(true);
|
| - child->test_properties()->force_render_surface = true;
|
| - grand_child->SetPosition(gfx::PointF(8.f, 8.f));
|
| - grand_child->SetBounds(gfx::Size(1500, 1500));
|
| - grand_child->test_properties()->force_render_surface = true;
|
| - leaf_node->SetPosition(gfx::PointF(16.f, 16.f));
|
| - leaf_node->SetBounds(gfx::Size(2000, 2000));
|
| -
|
| - root->SetDrawsContent(true);
|
| - parent->SetDrawsContent(true);
|
| - child->SetDrawsContent(true);
|
| - grand_child->SetDrawsContent(true);
|
| - leaf_node->SetDrawsContent(true);
|
| -
|
| - gfx::Transform expected_leaf_draw_transform_with_surfaces;
|
| - expected_leaf_draw_transform_with_surfaces.Translate(16.0, 16.0);
|
| -
|
| - gfx::Transform expected_leaf_draw_transform_without_surfaces;
|
| - expected_leaf_draw_transform_without_surfaces.Translate(30.0, 30.0);
|
| -
|
| - ExecuteCalculateDrawProperties(root);
|
| - EXPECT_FALSE(leaf_node->is_clipped());
|
| - EXPECT_TRUE(leaf_node->render_target()->is_clipped());
|
| - EXPECT_EQ(gfx::Rect(16, 16, 2000, 2000), leaf_node->drawable_content_rect());
|
| - EXPECT_TRANSFORMATION_MATRIX_EQ(expected_leaf_draw_transform_with_surfaces,
|
| - leaf_node->DrawTransform());
|
| -
|
| - ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(root);
|
| - EXPECT_TRUE(leaf_node->is_clipped());
|
| - EXPECT_EQ(gfx::Rect(6, 6, 396, 396), leaf_node->clip_rect());
|
| - EXPECT_EQ(gfx::Rect(30, 30, 372, 372), leaf_node->drawable_content_rect());
|
| - EXPECT_TRANSFORMATION_MATRIX_EQ(expected_leaf_draw_transform_without_surfaces,
|
| - leaf_node->DrawTransform());
|
| -
|
| - ExecuteCalculateDrawProperties(root);
|
| - EXPECT_FALSE(leaf_node->is_clipped());
|
| - EXPECT_TRUE(leaf_node->render_target()->is_clipped());
|
| - EXPECT_EQ(gfx::Rect(16, 16, 2000, 2000), leaf_node->drawable_content_rect());
|
| - EXPECT_TRANSFORMATION_MATRIX_EQ(expected_leaf_draw_transform_with_surfaces,
|
| - leaf_node->DrawTransform());
|
| -}
|
| -
|
| TEST_F(LayerTreeHostCommonTest, AnimationsForRenderSurfaceHierarchy) {
|
| LayerImpl* root = root_layer_for_testing();
|
| LayerImpl* render_surface1 = AddChildToRoot<LayerImpl>();
|
| @@ -3352,184 +2821,6 @@ TEST_F(LayerTreeHostCommonTest,
|
| }
|
|
|
| TEST_F(LayerTreeHostCommonTest,
|
| - DrawableAndVisibleRectsWhenCannotRenderToSeparateSurface) {
|
| - LayerImpl* root = root_layer_for_testing();
|
| - LayerImpl* parent = AddChild<LayerImpl>(root);
|
| - LayerImpl* child1 = AddChild<LayerImpl>(parent);
|
| - LayerImpl* child2 = AddChild<LayerImpl>(parent);
|
| - LayerImpl* grand_child1 = AddChild<LayerImpl>(child1);
|
| - LayerImpl* grand_child2 = AddChild<LayerImpl>(child2);
|
| - LayerImpl* leaf_node1 = AddChild<LayerImpl>(grand_child1);
|
| - LayerImpl* leaf_node2 = AddChild<LayerImpl>(grand_child2);
|
| -
|
| - root->SetBounds(gfx::Size(100, 100));
|
| - parent->SetPosition(gfx::PointF(2.f, 2.f));
|
| - parent->SetBounds(gfx::Size(400, 400));
|
| - child1->SetPosition(gfx::PointF(4.f, 4.f));
|
| - child1->SetBounds(gfx::Size(800, 800));
|
| - child1->test_properties()->force_render_surface = true;
|
| - child2->SetPosition(gfx::PointF(3.f, 3.f));
|
| - child2->SetBounds(gfx::Size(800, 800));
|
| - child2->test_properties()->force_render_surface = true;
|
| - grand_child1->SetPosition(gfx::PointF(8.f, 8.f));
|
| - grand_child1->SetBounds(gfx::Size(1500, 1500));
|
| - grand_child2->SetPosition(gfx::PointF(7.f, 7.f));
|
| - grand_child2->SetBounds(gfx::Size(1500, 1500));
|
| - leaf_node1->SetPosition(gfx::PointF(16.f, 16.f));
|
| - leaf_node1->SetBounds(gfx::Size(2000, 2000));
|
| - leaf_node2->SetPosition(gfx::PointF(9.f, 9.f));
|
| - leaf_node2->SetBounds(gfx::Size(2000, 2000));
|
| -
|
| - root->SetDrawsContent(true);
|
| - parent->SetDrawsContent(true);
|
| - child1->SetDrawsContent(true);
|
| - child2->SetDrawsContent(true);
|
| - grand_child1->SetDrawsContent(true);
|
| - grand_child2->SetDrawsContent(true);
|
| - leaf_node1->SetDrawsContent(true);
|
| - leaf_node2->SetDrawsContent(true);
|
| -
|
| - // Case 1: No layers clip. Visible rects are clipped by the viewport.
|
| - // Each layer's drawable content rect is its bounds in target space; the only
|
| - // thing that changes with surfaces disabled is that target space is always
|
| - // screen space.
|
| - child1->test_properties()->force_render_surface = true;
|
| - child2->test_properties()->force_render_surface = true;
|
| - ExecuteCalculateDrawProperties(root);
|
| - EXPECT_EQ(gfx::Rect(100, 100), root->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(0, 0, 98, 98), parent->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(94, 94), child1->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(95, 95), child2->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(86, 86), grand_child1->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(88, 88), grand_child2->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(70, 70), leaf_node1->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(79, 79), leaf_node2->visible_layer_rect());
|
| -
|
| - EXPECT_EQ(gfx::Rect(100, 100), root->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(2, 2, 400, 400), parent->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(800, 800), child1->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(800, 800), child2->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(8, 8, 1500, 1500), grand_child1->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(7, 7, 1500, 1500), grand_child2->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(24, 24, 2000, 2000), leaf_node1->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(16, 16, 2000, 2000), leaf_node2->drawable_content_rect());
|
| -
|
| - ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(root);
|
| - EXPECT_EQ(gfx::Rect(100, 100), root->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(98, 98), parent->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(94, 94), child1->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(95, 95), child2->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(86, 86), grand_child1->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(88, 88), grand_child2->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(70, 70), leaf_node1->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(79, 79), leaf_node2->visible_layer_rect());
|
| -
|
| - EXPECT_EQ(gfx::Rect(100, 100), root->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(2, 2, 400, 400), parent->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(6, 6, 800, 800), child1->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(5, 5, 800, 800), child2->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(14, 14, 1500, 1500),
|
| - grand_child1->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(12, 12, 1500, 1500),
|
| - grand_child2->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(30, 30, 2000, 2000), leaf_node1->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(21, 21, 2000, 2000), leaf_node2->drawable_content_rect());
|
| -
|
| - // Case 2: The parent clips. In this case, neither surface is unclipped, so
|
| - // all visible layer rects are clipped by the intersection of all ancestor
|
| - // clips, whether or not surfaces are disabled. However, drawable content
|
| - // rects are clipped only until the next render surface is reached, so
|
| - // descendants of parent have their drawable content rects clipped only when
|
| - // surfaces are disabled.
|
| - parent->SetMasksToBounds(true);
|
| - host_impl()->active_tree()->property_trees()->needs_rebuild = true;
|
| - ExecuteCalculateDrawProperties(root);
|
| - EXPECT_EQ(gfx::Rect(100, 100), root->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(98, 98), parent->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(94, 94), child1->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(95, 95), child2->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(86, 86), grand_child1->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(88, 88), grand_child2->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(70, 70), leaf_node1->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(79, 79), leaf_node2->visible_layer_rect());
|
| -
|
| - EXPECT_EQ(gfx::Rect(100, 100), root->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(2, 2, 400, 400), parent->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(800, 800), child1->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(800, 800), child2->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(8, 8, 1500, 1500), grand_child1->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(7, 7, 1500, 1500), grand_child2->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(24, 24, 2000, 2000), leaf_node1->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(16, 16, 2000, 2000), leaf_node2->drawable_content_rect());
|
| -
|
| - ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(root);
|
| - EXPECT_EQ(gfx::Rect(100, 100), root->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(98, 98), parent->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(94, 94), child1->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(95, 95), child2->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(86, 86), grand_child1->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(88, 88), grand_child2->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(70, 70), leaf_node1->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(79, 79), leaf_node2->visible_layer_rect());
|
| -
|
| - EXPECT_EQ(gfx::Rect(100, 100), root->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(2, 2, 400, 400), parent->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(6, 6, 396, 396), child1->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(5, 5, 397, 397), child2->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(14, 14, 388, 388), grand_child1->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(12, 12, 390, 390), grand_child2->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(30, 30, 372, 372), leaf_node1->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(21, 21, 381, 381), leaf_node2->drawable_content_rect());
|
| -
|
| - parent->SetMasksToBounds(false);
|
| -
|
| - // Case 3: child1 and grand_child2 clip. In this case, descendants of these
|
| - // layers have their visible rects clipped by them; Similarly, descendants of
|
| - // these layers have their drawable content rects clipped by them.
|
| - child1->SetMasksToBounds(true);
|
| - grand_child2->SetMasksToBounds(true);
|
| - host_impl()->active_tree()->property_trees()->needs_rebuild = true;
|
| - ExecuteCalculateDrawProperties(root);
|
| - EXPECT_EQ(gfx::Rect(100, 100), root->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(98, 98), parent->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(94, 94), child1->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(95, 95), child2->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(86, 86), grand_child1->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(88, 88), grand_child2->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(70, 70), leaf_node1->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(79, 79), leaf_node2->visible_layer_rect());
|
| -
|
| - EXPECT_EQ(gfx::Rect(100, 100), root->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(2, 2, 400, 400), parent->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(800, 800), child1->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(800, 800), child2->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(8, 8, 792, 792), grand_child1->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(7, 7, 1500, 1500), grand_child2->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(24, 24, 776, 776), leaf_node1->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(16, 16, 1491, 1491), leaf_node2->drawable_content_rect());
|
| -
|
| - ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(root);
|
| - EXPECT_EQ(gfx::Rect(100, 100), root->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(98, 98), parent->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(94, 94), child1->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(95, 95), child2->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(86, 86), grand_child1->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(88, 88), grand_child2->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(70, 70), leaf_node1->visible_layer_rect());
|
| - EXPECT_EQ(gfx::Rect(79, 79), leaf_node2->visible_layer_rect());
|
| -
|
| - EXPECT_EQ(gfx::Rect(100, 100), root->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(2, 2, 400, 400), parent->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(6, 6, 800, 800), child1->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(5, 5, 800, 800), child2->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(14, 14, 792, 792), grand_child1->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(12, 12, 1500, 1500),
|
| - grand_child2->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(30, 30, 776, 776), leaf_node1->drawable_content_rect());
|
| - EXPECT_EQ(gfx::Rect(21, 21, 1491, 1491), leaf_node2->drawable_content_rect());
|
| -}
|
| -
|
| -TEST_F(LayerTreeHostCommonTest,
|
| VisibleContentRectsForClippedSurfaceWithEmptyClip) {
|
| LayerImpl* root = root_layer_for_testing();
|
| LayerImpl* child1 = AddChild<LayerImpl>(root);
|
| @@ -6140,109 +5431,6 @@ TEST_F(LayerTreeHostCommonTest,
|
| EXPECT_FALSE(GetRenderSurface(child3));
|
| }
|
|
|
| -TEST_F(LayerTreeHostCommonTest, CanRenderToSeparateSurface) {
|
| - FakeImplTaskRunnerProvider task_runner_provider;
|
| - TestTaskGraphRunner task_graph_runner;
|
| - FakeLayerTreeHostImpl host_impl(&task_runner_provider, &task_graph_runner);
|
| -
|
| - std::unique_ptr<LayerImpl> root =
|
| - LayerImpl::Create(host_impl.active_tree(), 12345);
|
| - std::unique_ptr<LayerImpl> child1 =
|
| - LayerImpl::Create(host_impl.active_tree(), 123456);
|
| - std::unique_ptr<LayerImpl> child2 =
|
| - LayerImpl::Create(host_impl.active_tree(), 1234567);
|
| - std::unique_ptr<LayerImpl> child3 =
|
| - LayerImpl::Create(host_impl.active_tree(), 12345678);
|
| -
|
| - gfx::Size bounds(100, 100);
|
| -
|
| - root->SetBounds(bounds);
|
| - root->SetDrawsContent(true);
|
| -
|
| - // This layer structure normally forces render surface due to preserves3d
|
| - // behavior.
|
| - child1->SetBounds(bounds);
|
| - child1->SetDrawsContent(true);
|
| - child1->test_properties()->should_flatten_transform = false;
|
| - child1->test_properties()->sorting_context_id = 1;
|
| - child2->SetBounds(bounds);
|
| - child2->SetDrawsContent(true);
|
| - child2->test_properties()->sorting_context_id = 1;
|
| - child3->SetBounds(bounds);
|
| - child3->SetDrawsContent(true);
|
| - child3->test_properties()->sorting_context_id = 1;
|
| -
|
| - child2->test_properties()->AddChild(std::move(child3));
|
| - child1->test_properties()->AddChild(std::move(child2));
|
| - root->test_properties()->AddChild(std::move(child1));
|
| - LayerImpl* root_layer = root.get();
|
| - root_layer->layer_tree_impl()->SetRootLayerForTesting(std::move(root));
|
| -
|
| - {
|
| - RenderSurfaceList render_surface_list;
|
| - LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
|
| - root_layer, root_layer->bounds(), &render_surface_list);
|
| - inputs.can_render_to_separate_surface = true;
|
| - LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs);
|
| -
|
| - EXPECT_EQ(2u, render_surface_list.size());
|
| -
|
| - int count_represents_target_render_surface = 0;
|
| - int count_represents_contributing_render_surface = 0;
|
| - int count_represents_itself = 0;
|
| - for (EffectTreeLayerListIterator it(host_impl.active_tree());
|
| - it.state() != EffectTreeLayerListIterator::State::END; ++it) {
|
| - if (it.state() == EffectTreeLayerListIterator::State::TARGET_SURFACE) {
|
| - count_represents_target_render_surface++;
|
| - } else if (it.state() ==
|
| - EffectTreeLayerListIterator::State::CONTRIBUTING_SURFACE) {
|
| - count_represents_contributing_render_surface++;
|
| - } else {
|
| - count_represents_itself++;
|
| - }
|
| - }
|
| -
|
| - // Two render surfaces.
|
| - EXPECT_EQ(2, count_represents_target_render_surface);
|
| - // Second render surface contributes to root render surface.
|
| - EXPECT_EQ(1, count_represents_contributing_render_surface);
|
| - // All 4 layers represent itself.
|
| - EXPECT_EQ(4, count_represents_itself);
|
| - }
|
| -
|
| - {
|
| - RenderSurfaceList render_surface_list;
|
| - LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
|
| - root_layer, root_layer->bounds(), &render_surface_list);
|
| - inputs.can_render_to_separate_surface = false;
|
| - LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs);
|
| -
|
| - EXPECT_EQ(1u, render_surface_list.size());
|
| -
|
| - int count_represents_target_render_surface = 0;
|
| - int count_represents_contributing_render_surface = 0;
|
| - int count_represents_itself = 0;
|
| - for (EffectTreeLayerListIterator it(host_impl.active_tree());
|
| - it.state() != EffectTreeLayerListIterator::State::END; ++it) {
|
| - if (it.state() == EffectTreeLayerListIterator::State::TARGET_SURFACE) {
|
| - count_represents_target_render_surface++;
|
| - } else if (it.state() ==
|
| - EffectTreeLayerListIterator::State::CONTRIBUTING_SURFACE) {
|
| - count_represents_contributing_render_surface++;
|
| - } else {
|
| - count_represents_itself++;
|
| - }
|
| - }
|
| -
|
| - // Only root layer has a render surface.
|
| - EXPECT_EQ(1, count_represents_target_render_surface);
|
| - // No layer contributes a render surface to root render surface.
|
| - EXPECT_EQ(0, count_represents_contributing_render_surface);
|
| - // All 4 layers represent itself.
|
| - EXPECT_EQ(4, count_represents_itself);
|
| - }
|
| -}
|
| -
|
| TEST_F(LayerTreeHostCommonTest, DoNotIncludeBackfaceInvisibleSurfaces) {
|
| LayerImpl* root = root_layer_for_testing();
|
| LayerImpl* back_facing = AddChild<LayerImpl>(root);
|
|
|