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 6817657d07dd8ec3c4685866c9914aa6aabd1235..055ae9165c458fa80b7809b7a4752a182649953d 100644 |
--- a/cc/trees/layer_tree_host_common_unittest.cc |
+++ b/cc/trees/layer_tree_host_common_unittest.cc |
@@ -878,16 +878,20 @@ TEST_F(LayerTreeHostCommonTest, TransformsForRenderSurfaceHierarchy) { |
// Only layers that are associated with render surfaces should have an actual |
// RenderSurface() value. |
ASSERT_TRUE(GetRenderSurface(root)); |
- ASSERT_FALSE(GetRenderSurface(child_of_root)); |
- ASSERT_FALSE(GetRenderSurface(grand_child_of_root)); |
+ ASSERT_EQ(GetRenderSurface(child_of_root), GetRenderSurface(root)); |
+ ASSERT_EQ(GetRenderSurface(grand_child_of_root), GetRenderSurface(root)); |
- ASSERT_TRUE(GetRenderSurface(render_surface1)); |
- ASSERT_FALSE(GetRenderSurface(child_of_rs1)); |
- ASSERT_FALSE(GetRenderSurface(grand_child_of_rs1)); |
+ ASSERT_NE(GetRenderSurface(render_surface1), GetRenderSurface(root)); |
+ ASSERT_EQ(GetRenderSurface(child_of_rs1), GetRenderSurface(render_surface1)); |
+ ASSERT_EQ(GetRenderSurface(grand_child_of_rs1), |
+ GetRenderSurface(render_surface1)); |
- ASSERT_TRUE(GetRenderSurface(render_surface2)); |
- ASSERT_FALSE(GetRenderSurface(child_of_rs2)); |
- ASSERT_FALSE(GetRenderSurface(grand_child_of_rs2)); |
+ ASSERT_NE(GetRenderSurface(render_surface2), GetRenderSurface(root)); |
+ ASSERT_NE(GetRenderSurface(render_surface2), |
+ GetRenderSurface(render_surface1)); |
+ ASSERT_EQ(GetRenderSurface(child_of_rs2), GetRenderSurface(render_surface2)); |
+ ASSERT_EQ(GetRenderSurface(grand_child_of_rs2), |
+ GetRenderSurface(render_surface2)); |
// Verify all render target accessors |
EXPECT_EQ(GetRenderSurface(root), parent->render_target()); |
@@ -1548,7 +1552,7 @@ TEST_F(LayerTreeHostCommonTest, RenderSurfaceDrawOpacity) { |
ExecuteCalculateDrawProperties(root); |
ASSERT_TRUE(GetRenderSurface(surface1)); |
- ASSERT_FALSE(GetRenderSurface(not_surface)); |
+ ASSERT_EQ(GetRenderSurface(not_surface), GetRenderSurface(surface1)); |
ASSERT_TRUE(GetRenderSurface(surface2)); |
EXPECT_EQ(0.5f, GetRenderSurface(surface1)->draw_opacity()); |
// surface2's draw opacity should include the opacity of not-surface and |
@@ -1572,7 +1576,7 @@ TEST_F(LayerTreeHostCommonTest, ForceRenderSurface) { |
// The root layer always creates a render surface |
EXPECT_TRUE(GetRenderSurface(root)); |
- EXPECT_TRUE(GetRenderSurface(render_surface1)); |
+ EXPECT_NE(GetRenderSurface(render_surface1), GetRenderSurface(root)); |
} |
{ |
@@ -1580,7 +1584,7 @@ TEST_F(LayerTreeHostCommonTest, ForceRenderSurface) { |
render_surface1->layer_tree_impl()->property_trees()->needs_rebuild = true; |
ExecuteCalculateDrawPropertiesAndSaveUpdateLayerList(root); |
EXPECT_TRUE(GetRenderSurface(root)); |
- EXPECT_FALSE(GetRenderSurface(render_surface1)); |
+ EXPECT_EQ(GetRenderSurface(render_surface1), GetRenderSurface(root)); |
} |
} |
@@ -1607,8 +1611,8 @@ TEST_F(LayerTreeHostCommonTest, RenderSurfacesFlattenScreenSpaceTransform) { |
ExecuteCalculateDrawProperties(root); |
EXPECT_TRUE(GetRenderSurface(parent)); |
- EXPECT_FALSE(GetRenderSurface(child)); |
- EXPECT_FALSE(GetRenderSurface(grand_child)); |
+ EXPECT_EQ(GetRenderSurface(child), GetRenderSurface(parent)); |
+ EXPECT_EQ(GetRenderSurface(grand_child), GetRenderSurface(parent)); |
EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), child->DrawTransform()); |
EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), |
@@ -1947,6 +1951,42 @@ TEST_F(LayerTreeHostCommonTest, ClipRectIsPropagatedCorrectlyToSurfaces) { |
GetRenderSurface(grand_child3)->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, AnimationsForRenderSurfaceHierarchy) { |
LayerImpl* root = root_layer_for_testing(); |
LayerImpl* render_surface1 = AddChildToRoot<LayerImpl>(); |
@@ -2046,16 +2086,20 @@ TEST_F(LayerTreeHostCommonTest, AnimationsForRenderSurfaceHierarchy) { |
// Only layers that are associated with render surfaces should have an actual |
// RenderSurface() value. |
ASSERT_TRUE(GetRenderSurface(root)); |
- ASSERT_FALSE(GetRenderSurface(child_of_root)); |
- ASSERT_FALSE(GetRenderSurface(grand_child_of_root)); |
+ ASSERT_EQ(GetRenderSurface(child_of_root), GetRenderSurface(root)); |
+ ASSERT_EQ(GetRenderSurface(grand_child_of_root), GetRenderSurface(root)); |
- ASSERT_TRUE(GetRenderSurface(render_surface1)); |
- ASSERT_FALSE(GetRenderSurface(child_of_rs1)); |
- ASSERT_FALSE(GetRenderSurface(grand_child_of_rs1)); |
+ ASSERT_NE(GetRenderSurface(render_surface1), GetRenderSurface(root)); |
+ ASSERT_EQ(GetRenderSurface(child_of_rs1), GetRenderSurface(render_surface1)); |
+ ASSERT_EQ(GetRenderSurface(grand_child_of_rs1), |
+ GetRenderSurface(render_surface1)); |
- ASSERT_TRUE(GetRenderSurface(render_surface2)); |
- ASSERT_FALSE(GetRenderSurface(child_of_rs2)); |
- ASSERT_FALSE(GetRenderSurface(grand_child_of_rs2)); |
+ ASSERT_NE(GetRenderSurface(render_surface2), GetRenderSurface(root)); |
+ ASSERT_NE(GetRenderSurface(render_surface2), |
+ GetRenderSurface(render_surface1)); |
+ ASSERT_EQ(GetRenderSurface(child_of_rs2), GetRenderSurface(render_surface2)); |
+ ASSERT_EQ(GetRenderSurface(grand_child_of_rs2), |
+ GetRenderSurface(render_surface2)); |
// Verify all render target accessors |
EXPECT_EQ(GetRenderSurface(root), root->render_target()); |
@@ -3686,14 +3730,20 @@ TEST_F(LayerTreeHostCommonTest, BackFaceCullingWithoutPreserves3d) { |
ExecuteCalculateDrawPropertiesAndSaveUpdateLayerList(root); |
// Verify which render surfaces were created. |
- EXPECT_FALSE(GetRenderSurface(front_facing_child)); |
- EXPECT_FALSE(GetRenderSurface(back_facing_child)); |
- EXPECT_TRUE(GetRenderSurface(front_facing_surface)); |
- EXPECT_TRUE(GetRenderSurface(back_facing_surface)); |
- EXPECT_FALSE(GetRenderSurface(front_facing_child_of_front_facing_surface)); |
- EXPECT_FALSE(GetRenderSurface(back_facing_child_of_front_facing_surface)); |
- EXPECT_FALSE(GetRenderSurface(front_facing_child_of_back_facing_surface)); |
- EXPECT_FALSE(GetRenderSurface(back_facing_child_of_back_facing_surface)); |
+ EXPECT_EQ(GetRenderSurface(front_facing_child), GetRenderSurface(root)); |
+ EXPECT_EQ(GetRenderSurface(back_facing_child), GetRenderSurface(root)); |
+ EXPECT_NE(GetRenderSurface(front_facing_surface), GetRenderSurface(root)); |
+ EXPECT_NE(GetRenderSurface(back_facing_surface), GetRenderSurface(root)); |
+ EXPECT_NE(GetRenderSurface(back_facing_surface), |
+ GetRenderSurface(front_facing_surface)); |
+ EXPECT_EQ(GetRenderSurface(front_facing_child_of_front_facing_surface), |
+ GetRenderSurface(front_facing_surface)); |
+ EXPECT_EQ(GetRenderSurface(back_facing_child_of_front_facing_surface), |
+ GetRenderSurface(front_facing_surface)); |
+ EXPECT_EQ(GetRenderSurface(front_facing_child_of_back_facing_surface), |
+ GetRenderSurface(back_facing_surface)); |
+ EXPECT_EQ(GetRenderSurface(back_facing_child_of_back_facing_surface), |
+ GetRenderSurface(back_facing_surface)); |
EXPECT_EQ(3u, update_layer_list_impl()->size()); |
EXPECT_TRUE(UpdateLayerListImplContains(front_facing_child->id())); |
@@ -3794,15 +3844,21 @@ TEST_F(LayerTreeHostCommonTest, BackFaceCullingWithPreserves3d) { |
ExecuteCalculateDrawPropertiesAndSaveUpdateLayerList(root); |
// Verify which render surfaces were created and used. |
- EXPECT_FALSE(GetRenderSurface(front_facing_child)); |
- EXPECT_FALSE(GetRenderSurface(back_facing_child)); |
- EXPECT_TRUE(GetRenderSurface(front_facing_surface)); |
+ EXPECT_EQ(GetRenderSurface(front_facing_child), GetRenderSurface(root)); |
+ EXPECT_EQ(GetRenderSurface(back_facing_child), GetRenderSurface(root)); |
+ EXPECT_NE(GetRenderSurface(front_facing_surface), GetRenderSurface(root)); |
// We expect that a has_render_surface was created but not used. |
- EXPECT_TRUE(GetRenderSurface(back_facing_surface)); |
- EXPECT_FALSE(GetRenderSurface(front_facing_child_of_front_facing_surface)); |
- EXPECT_FALSE(GetRenderSurface(back_facing_child_of_front_facing_surface)); |
- EXPECT_FALSE(GetRenderSurface(front_facing_child_of_back_facing_surface)); |
- EXPECT_FALSE(GetRenderSurface(back_facing_child_of_back_facing_surface)); |
+ EXPECT_NE(GetRenderSurface(back_facing_surface), GetRenderSurface(root)); |
+ EXPECT_NE(GetRenderSurface(back_facing_surface), |
+ GetRenderSurface(front_facing_surface)); |
+ EXPECT_EQ(GetRenderSurface(front_facing_child_of_front_facing_surface), |
+ GetRenderSurface(front_facing_surface)); |
+ EXPECT_EQ(GetRenderSurface(back_facing_child_of_front_facing_surface), |
+ GetRenderSurface(front_facing_surface)); |
+ EXPECT_EQ(GetRenderSurface(front_facing_child_of_back_facing_surface), |
+ GetRenderSurface(back_facing_surface)); |
+ EXPECT_EQ(GetRenderSurface(back_facing_child_of_back_facing_surface), |
+ GetRenderSurface(back_facing_surface)); |
EXPECT_EQ(3u, update_layer_list_impl()->size()); |
@@ -3868,11 +3924,12 @@ TEST_F(LayerTreeHostCommonTest, BackFaceCullingWithAnimatingTransforms) { |
ExecuteCalculateDrawPropertiesAndSaveUpdateLayerList(root); |
- EXPECT_FALSE(GetRenderSurface(child)); |
+ EXPECT_EQ(GetRenderSurface(child), GetRenderSurface(root)); |
EXPECT_TRUE(GetRenderSurface(animating_surface)); |
- EXPECT_FALSE(GetRenderSurface(child_of_animating_surface)); |
- EXPECT_FALSE(GetRenderSurface(animating_child)); |
- EXPECT_FALSE(GetRenderSurface(child2)); |
+ EXPECT_EQ(GetRenderSurface(child_of_animating_surface), |
+ GetRenderSurface(animating_surface)); |
+ EXPECT_EQ(GetRenderSurface(animating_child), GetRenderSurface(root)); |
+ EXPECT_EQ(GetRenderSurface(child2), GetRenderSurface(root)); |
EXPECT_EQ(1u, update_layer_list_impl()->size()); |
@@ -3931,9 +3988,9 @@ TEST_F(LayerTreeHostCommonTest, |
EXPECT_TRUE(GetRenderSurface(front_facing_surface)); |
// We expect the render surface to have been created, but remain unused. |
- EXPECT_TRUE(GetRenderSurface(back_facing_surface)); |
- EXPECT_FALSE(GetRenderSurface(child1)); |
- EXPECT_FALSE(GetRenderSurface(child2)); |
+ EXPECT_NE(GetRenderSurface(back_facing_surface), GetRenderSurface(root)); |
+ EXPECT_EQ(GetRenderSurface(child1), GetRenderSurface(front_facing_surface)); |
+ EXPECT_EQ(GetRenderSurface(child2), GetRenderSurface(back_facing_surface)); |
EXPECT_EQ(2u, update_layer_list_impl()->size()); |
EXPECT_TRUE(UpdateLayerListImplContains(front_facing_surface->id())); |
@@ -4333,7 +4390,7 @@ TEST_F(LayerTreeHostCommonTest, TransparentChildRenderSurfaceCreation) { |
grand_child->SetBounds(gfx::Size(10, 10)); |
grand_child->SetDrawsContent(true); |
ExecuteCalculateDrawProperties(root); |
- EXPECT_FALSE(GetRenderSurface(child)); |
+ EXPECT_EQ(GetRenderSurface(child), GetRenderSurface(root)); |
} |
TEST_F(LayerTreeHostCommonTest, OpacityAnimatingOnPendingTree) { |
@@ -5426,9 +5483,9 @@ TEST_F(LayerTreeHostCommonTest, |
// Verify which render surfaces were created. |
EXPECT_TRUE(GetRenderSurface(root)); |
- EXPECT_FALSE(GetRenderSurface(child1)); |
- EXPECT_TRUE(GetRenderSurface(child2)); |
- EXPECT_FALSE(GetRenderSurface(child3)); |
+ EXPECT_EQ(GetRenderSurface(child1), GetRenderSurface(root)); |
+ EXPECT_NE(GetRenderSurface(child2), GetRenderSurface(root)); |
+ EXPECT_EQ(GetRenderSurface(child3), GetRenderSurface(child2)); |
} |
TEST_F(LayerTreeHostCommonTest, DoNotIncludeBackfaceInvisibleSurfaces) { |
@@ -8302,10 +8359,10 @@ TEST_F(LayerTreeHostCommonTest, AnimatedOpacityCreatesRenderSurface) { |
10.0, 1.f, 0.2f, false); |
ExecuteCalculateDrawProperties(root); |
- EXPECT_EQ(1.f, child->Opacity()); |
+ EXPECT_EQ(1.f, OpacityForLayer(child)); |
EXPECT_TRUE(GetRenderSurface(root)); |
- EXPECT_TRUE(GetRenderSurface(child)); |
- EXPECT_FALSE(GetRenderSurface(grandchild)); |
+ EXPECT_NE(GetRenderSurface(child), GetRenderSurface(root)); |
+ EXPECT_EQ(GetRenderSurface(grandchild), GetRenderSurface(child)); |
} |
// Verify that having an animated filter (but no current filter, as these |
@@ -8325,8 +8382,8 @@ TEST_F(LayerTreeHostCommonTest, AnimatedFilterCreatesRenderSurface) { |
ExecuteCalculateDrawProperties(root); |
EXPECT_TRUE(GetRenderSurface(root)); |
- EXPECT_TRUE(GetRenderSurface(child)); |
- EXPECT_FALSE(GetRenderSurface(grandchild)); |
+ EXPECT_NE(GetRenderSurface(child), GetRenderSurface(root)); |
+ EXPECT_EQ(GetRenderSurface(grandchild), GetRenderSurface(child)); |
EXPECT_TRUE(GetRenderSurface(root)->Filters().IsEmpty()); |
EXPECT_TRUE(GetRenderSurface(child)->Filters().IsEmpty()); |
@@ -8369,8 +8426,8 @@ TEST_F(LayerTreeHostCommonTest, DelayedFilterAnimationCreatesRenderSurface) { |
ExecuteCalculateDrawProperties(root); |
EXPECT_TRUE(GetRenderSurface(root)); |
- EXPECT_TRUE(GetRenderSurface(child)); |
- EXPECT_FALSE(GetRenderSurface(grandchild)); |
+ EXPECT_NE(GetRenderSurface(child), GetRenderSurface(root)); |
+ EXPECT_EQ(GetRenderSurface(grandchild), GetRenderSurface(child)); |
EXPECT_TRUE(GetRenderSurface(root)->Filters().IsEmpty()); |
EXPECT_TRUE(GetRenderSurface(child)->Filters().IsEmpty()); |
@@ -9081,10 +9138,10 @@ TEST_F(LayerTreeHostCommonTest, RenderSurfaceClipsSubtree) { |
EXPECT_EQ(transform_node->owning_layer_id, significant_transform->id()); |
EXPECT_TRUE(GetRenderSurface(root)); |
- EXPECT_FALSE(GetRenderSurface(significant_transform)); |
+ EXPECT_EQ(GetRenderSurface(significant_transform), GetRenderSurface(root)); |
EXPECT_TRUE(GetRenderSurface(layer_clips_subtree)); |
- EXPECT_TRUE(GetRenderSurface(render_surface)); |
- EXPECT_FALSE(GetRenderSurface(test_layer)); |
+ EXPECT_NE(GetRenderSurface(render_surface), GetRenderSurface(root)); |
+ EXPECT_EQ(GetRenderSurface(test_layer), GetRenderSurface(render_surface)); |
EXPECT_EQ(gfx::Rect(30, 20), test_layer->visible_layer_rect()); |
} |