Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1832)

Unified Diff: cc/surfaces/display_scheduler_unittest.cc

Issue 1251823005: cc: Make DisplayScheduler aware of resize and add tracing. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix tests; small logic changes Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/surfaces/display_scheduler.cc ('k') | cc/surfaces/display_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « cc/surfaces/display_scheduler.cc ('k') | cc/surfaces/display_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698