| 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 15e4d4c70ebe976e11ad6c8a467721500d9fa154..02967130506740ad706f373d5268f8d0744101ef 100644
|
| --- a/cc/trees/layer_tree_host_common_unittest.cc
|
| +++ b/cc/trees/layer_tree_host_common_unittest.cc
|
| @@ -5649,6 +5649,50 @@ TEST_F(LayerTreeHostCommonTest, ClippedOutCopyRequest) {
|
| EXPECT_TRUE(root_layer->contributes_to_drawn_render_surface());
|
| }
|
|
|
| +TEST_F(LayerTreeHostCommonTest, SingularTransformAndCopyRequests) {
|
| + LayerImpl* root = root_layer_for_testing();
|
| + root->SetBounds(gfx::Size(50, 50));
|
| + root->SetDrawsContent(true);
|
| +
|
| + LayerImpl* singular_transform_layer = AddChild<LayerImpl>(root);
|
| + singular_transform_layer->SetBounds(gfx::Size(100, 100));
|
| + singular_transform_layer->SetDrawsContent(true);
|
| + gfx::Transform singular;
|
| + singular.Scale3d(6.f, 6.f, 0.f);
|
| + singular_transform_layer->test_properties()->transform = singular;
|
| +
|
| + LayerImpl* copy_layer = AddChild<LayerImpl>(singular_transform_layer);
|
| + copy_layer->SetBounds(gfx::Size(100, 100));
|
| + copy_layer->SetDrawsContent(true);
|
| + copy_layer->test_properties()->copy_requests.push_back(
|
| + CopyOutputRequest::CreateRequest(base::Bind(&EmptyCopyOutputCallback)));
|
| +
|
| + LayerImpl* copy_child = AddChild<LayerImpl>(copy_layer);
|
| + copy_child->SetBounds(gfx::Size(100, 100));
|
| + copy_child->SetDrawsContent(true);
|
| +
|
| + LayerImpl* copy_grand_child = AddChild<LayerImpl>(copy_child);
|
| + copy_grand_child->SetBounds(gfx::Size(100, 100));
|
| + copy_grand_child->SetDrawsContent(true);
|
| + copy_grand_child->test_properties()->transform = singular;
|
| +
|
| + DCHECK(!copy_layer->test_properties()->copy_requests.empty());
|
| + ExecuteCalculateDrawProperties(root);
|
| + DCHECK(copy_layer->test_properties()->copy_requests.empty());
|
| +
|
| + // A layer with singular transform should not contribute to drawn render
|
| + // surface.
|
| + EXPECT_FALSE(singular_transform_layer->contributes_to_drawn_render_surface());
|
| + // Even though copy_layer and copy_child have singular screen space transform,
|
| + // they still contribute to drawn render surface as their transform to the
|
| + // closest ancestor with copy request is not singular.
|
| + EXPECT_TRUE(copy_layer->contributes_to_drawn_render_surface());
|
| + EXPECT_TRUE(copy_child->contributes_to_drawn_render_surface());
|
| + // copy_grand_child's transform to its closest ancestor with copy request is
|
| + // also singular. So, it doesn't contribute to drawn render surface.
|
| + EXPECT_FALSE(copy_grand_child->contributes_to_drawn_render_surface());
|
| +}
|
| +
|
| TEST_F(LayerTreeHostCommonTest, VisibleRectInNonRootCopyRequest) {
|
| LayerImpl* root = root_layer_for_testing();
|
| root->SetBounds(gfx::Size(50, 50));
|
|
|