summaryrefslogtreecommitdiffstats
path: root/cc/surfaces/display_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'cc/surfaces/display_unittest.cc')
-rw-r--r--cc/surfaces/display_unittest.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/cc/surfaces/display_unittest.cc b/cc/surfaces/display_unittest.cc
index a92496c..c699349 100644
--- a/cc/surfaces/display_unittest.cc
+++ b/cc/surfaces/display_unittest.cc
@@ -396,6 +396,30 @@ TEST_F(DisplayTest, DisplayDamaged) {
EXPECT_EQ(6u, output_surface_ptr_->num_sent_frames());
}
+ {
+ // Surface that's damaged completely should be resized and swapped.
+ pass = RenderPass::Create();
+ pass->output_rect = gfx::Rect(0, 0, 99, 99);
+ pass->damage_rect = gfx::Rect(0, 0, 99, 99);
+ pass->id = RenderPassId(1, 1);
+
+ pass_list.push_back(pass.Pass());
+ scheduler.ResetDamageForTest();
+ SubmitCompositorFrame(&pass_list, surface_id);
+ EXPECT_TRUE(scheduler.damaged);
+ EXPECT_FALSE(scheduler.display_resized_);
+ EXPECT_FALSE(scheduler.has_new_root_surface);
+
+ scheduler.swapped = false;
+ display.DrawAndSwap();
+ EXPECT_TRUE(scheduler.swapped);
+ EXPECT_EQ(7u, output_surface_ptr_->num_sent_frames());
+ EXPECT_EQ(gfx::Size(100, 100),
+ software_output_device_->viewport_pixel_size());
+ EXPECT_EQ(gfx::Rect(0, 0, 100, 100),
+ software_output_device_->damage_rect());
+ }
+
factory_.Destroy(surface_id);
}