Chromium Code Reviews| Index: cc/layers/surface_layer_impl_unittest.cc |
| diff --git a/cc/layers/surface_layer_impl_unittest.cc b/cc/layers/surface_layer_impl_unittest.cc |
| index 1747e1be63c2eef846c56670b7968424c54732f5..e032d1ede4c3e5505728c871ac0aaf2f43f76e4a 100644 |
| --- a/cc/layers/surface_layer_impl_unittest.cc |
| +++ b/cc/layers/surface_layer_impl_unittest.cc |
| @@ -8,6 +8,7 @@ |
| #include "cc/layers/append_quads_data.h" |
| #include "cc/test/layer_test_common.h" |
| +#include "cc/trees/layer_tree_host_common.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| namespace cc { |
| @@ -15,6 +16,77 @@ namespace { |
| static constexpr FrameSinkId kArbitraryFrameSinkId(1, 1); |
| +TEST(SurfaceLayerImplTest, OcclusionWithDSF) { |
|
danakj
2017/02/10 16:32:22
try to avoid acronyms
malaykeshav
2017/02/10 20:24:58
Done
|
| + float device_scale_factor = 1.25f; |
| + |
| + gfx::Size layer_size(1000, 1000); |
| + gfx::Size scaled_surface_size( |
| + gfx::ScaleToCeiledSize(layer_size, device_scale_factor)); |
| + gfx::Size viewport_size(1250, 1325); |
| + |
| + const LocalSurfaceId kArbitraryLocalSurfaceId( |
| + 9, base::UnguessableToken::Create()); |
| + |
| + LayerTestCommon::LayerImplTest impl; |
| + |
| + SurfaceLayerImpl* surface_layer_impl = |
| + impl.AddChildToRoot<SurfaceLayerImpl>(); |
| + surface_layer_impl->SetBounds(layer_size); |
| + surface_layer_impl->SetDrawsContent(true); |
| + SurfaceId surface_id(kArbitraryFrameSinkId, kArbitraryLocalSurfaceId); |
| + surface_layer_impl->SetSurfaceInfo( |
| + SurfaceInfo(surface_id, device_scale_factor, scaled_surface_size)); |
| + |
| + LayerImplList layer_list; |
| + LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
| + impl.root_layer_for_testing(), viewport_size, device_scale_factor, |
| + &layer_list); |
| + LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
| + |
| + { |
| + SCOPED_TRACE("No occlusion"); |
| + gfx::Rect occluded; |
| + impl.AppendQuadsWithOcclusion(surface_layer_impl, occluded); |
| + |
| + LayerTestCommon::VerifyQuadsExactlyCoverRect( |
| + impl.quad_list(), gfx::Rect(scaled_surface_size)); |
| + EXPECT_EQ(1u, impl.quad_list().size()); |
| + } |
| + |
| + { |
| + SCOPED_TRACE("Full occlusion"); |
| + gfx::Rect occluded(scaled_surface_size); |
| + impl.AppendQuadsWithOcclusion(surface_layer_impl, occluded); |
| + |
| + LayerTestCommon::VerifyQuadsExactlyCoverRect(impl.quad_list(), gfx::Rect()); |
| + EXPECT_EQ(impl.quad_list().size(), 0u); |
| + } |
| + |
| + { |
| + SCOPED_TRACE("Partial occlusion"); |
|
danakj
2017/02/10 16:32:22
Which cases fail in this test without your changes
malaykeshav
2017/02/10 20:24:58
All except "No occlusion".
|
| + gfx::Rect occluded(gfx::ScaleToEnclosingRect(gfx::Rect(200, 0, 800, 1000), |
| + device_scale_factor)); |
| + impl.AppendQuadsWithOcclusion(surface_layer_impl, occluded); |
| + |
| + size_t partially_occluded_count = 0; |
| + LayerTestCommon::VerifyQuadsAreOccluded(impl.quad_list(), occluded, |
| + &partially_occluded_count); |
| + // The layer outputs one quad, which is partially occluded. |
| + EXPECT_EQ(1u, impl.quad_list().size()); |
| + EXPECT_EQ(1u, partially_occluded_count); |
| + } |
| + { |
| + SCOPED_TRACE("No outside occlusion"); |
| + gfx::Rect occluded(gfx::ScaleToEnclosingRect(gfx::Rect(0, 1000, 1250, 300), |
| + device_scale_factor)); |
| + impl.AppendQuadsWithOcclusion(surface_layer_impl, occluded); |
| + |
| + LayerTestCommon::VerifyQuadsExactlyCoverRect( |
| + impl.quad_list(), gfx::Rect(scaled_surface_size)); |
| + EXPECT_EQ(1u, impl.quad_list().size()); |
| + } |
| +} |
| + |
| TEST(SurfaceLayerImplTest, Occlusion) { |
| gfx::Size layer_size(1000, 1000); |
| gfx::Size viewport_size(1000, 1000); |