| 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);
|
|
|