Index: cc/surfaces/display_scheduler_unittest.cc |
diff --git a/cc/surfaces/display_scheduler_unittest.cc b/cc/surfaces/display_scheduler_unittest.cc |
index dee1225aca1ade598c5ae91809a2d9183f7775fc..ffb0b43b0fd7686567d579f9aacecac32435b206 100644 |
--- a/cc/surfaces/display_scheduler_unittest.cc |
+++ b/cc/surfaces/display_scheduler_unittest.cc |
@@ -107,14 +107,73 @@ class DisplaySchedulerTest : public testing::Test { |
scoped_ptr<TestDisplayScheduler> scheduler_; |
}; |
-TEST_F(DisplaySchedulerTest, EntireDisplayDamagedDrawsImmediately) { |
+TEST_F(DisplaySchedulerTest, ResizeHasLateDeadlineUntilNewRootSurface) { |
+ SurfaceId root_surface_id1(1); |
+ SurfaceId root_surface_id2(2); |
+ SurfaceId sid1(3); |
+ base::TimeTicks late_deadline; |
+ |
+ // Go trough an initial BeginFrame cycle with the root surface. |
+ BeginFrameForTest(); |
+ scheduler_->SetNewRootSurface(root_surface_id1); |
+ scheduler_->BeginFrameDeadlineForTest(); |
+ |
+ // Resize on the next begin frame cycle should cause the deadline to wait |
+ // for a new root surface. |
+ late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); |
+ BeginFrameForTest(); |
+ scheduler_->SurfaceDamaged(sid1); |
+ EXPECT_GT(late_deadline, scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
+ scheduler_->DisplayResized(); |
+ EXPECT_EQ(late_deadline, scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
+ scheduler_->SetNewRootSurface(root_surface_id2); |
+ EXPECT_GE(now_src().NowTicks(), |
+ scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
+ scheduler_->BeginFrameDeadlineForTest(); |
+ |
+ // Verify deadline goes back to normal after resize. |
+ late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); |
+ BeginFrameForTest(); |
+ scheduler_->SurfaceDamaged(sid1); |
+ EXPECT_GT(late_deadline, scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
+ scheduler_->SurfaceDamaged(root_surface_id2); |
+ EXPECT_GE(now_src().NowTicks(), |
+ scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
+ scheduler_->BeginFrameDeadlineForTest(); |
+} |
+ |
+TEST_F(DisplaySchedulerTest, ResizeHasLateDeadlineUntilDamagedSurface) { |
SurfaceId root_surface_id(1); |
+ SurfaceId sid1(2); |
+ base::TimeTicks late_deadline; |
+ |
+ // Go trough an initial BeginFrame cycle with the root surface. |
BeginFrameForTest(); |
- EXPECT_LT(now_src().NowTicks(), |
+ scheduler_->SetNewRootSurface(root_surface_id); |
+ scheduler_->BeginFrameDeadlineForTest(); |
+ |
+ // Resize on the next begin frame cycle should cause the deadline to wait |
+ // for a new root surface. |
+ late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); |
+ BeginFrameForTest(); |
+ scheduler_->SurfaceDamaged(sid1); |
+ EXPECT_GT(late_deadline, scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
+ scheduler_->DisplayResized(); |
+ EXPECT_EQ(late_deadline, scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
+ scheduler_->SurfaceDamaged(root_surface_id); |
+ EXPECT_GE(now_src().NowTicks(), |
scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
- scheduler_->EntireDisplayDamaged(root_surface_id); |
+ scheduler_->BeginFrameDeadlineForTest(); |
+ |
+ // Verify deadline goes back to normal after resize. |
+ late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); |
+ BeginFrameForTest(); |
+ scheduler_->SurfaceDamaged(sid1); |
+ EXPECT_GT(late_deadline, scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
+ scheduler_->SurfaceDamaged(root_surface_id); |
EXPECT_GE(now_src().NowTicks(), |
scheduler_->DesiredBeginFrameDeadlineTimeForTest()); |
+ scheduler_->BeginFrameDeadlineForTest(); |
} |
TEST_F(DisplaySchedulerTest, SurfaceDamaged) { |
@@ -123,7 +182,7 @@ TEST_F(DisplaySchedulerTest, SurfaceDamaged) { |
SurfaceId sid2(2); |
// Set the root surface |
- scheduler_->EntireDisplayDamaged(root_surface_id); |
+ scheduler_->SetNewRootSurface(root_surface_id); |
// Get scheduler to detect surface 1 as active by drawing |
// two frames in a row with damage from surface 1. |
@@ -327,7 +386,10 @@ TEST_F(DisplaySchedulerTest, ScheduleBeginFrameDeadline) { |
scheduler_->DidSwapBuffersComplete(); |
EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count()); |
- scheduler_->EntireDisplayDamaged(root_surface_id); |
+ scheduler_->DisplayResized(); |
+ EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count()); |
+ |
+ scheduler_->SetNewRootSurface(root_surface_id); |
EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count()); |
scheduler_->SurfaceDamaged(sid1); |