Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/surfaces/display_scheduler.h" | 5 #include "cc/surfaces/display_scheduler.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/test/null_task_runner.h" | 8 #include "base/test/null_task_runner.h" |
| 9 #include "base/test/simple_test_tick_clock.h" | 9 #include "base/test/simple_test_tick_clock.h" |
| 10 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 47 int max_pending_swaps) | 47 int max_pending_swaps) |
| 48 : DisplayScheduler(task_runner, max_pending_swaps), | 48 : DisplayScheduler(task_runner, max_pending_swaps), |
| 49 scheduler_begin_frame_deadline_count_(0) { | 49 scheduler_begin_frame_deadline_count_(0) { |
| 50 SetBeginFrameSource(begin_frame_source); | 50 SetBeginFrameSource(begin_frame_source); |
| 51 } | 51 } |
| 52 | 52 |
| 53 base::TimeTicks DesiredBeginFrameDeadlineTimeForTest() { | 53 base::TimeTicks DesiredBeginFrameDeadlineTimeForTest() { |
| 54 return DesiredBeginFrameDeadlineTime(); | 54 return DesiredBeginFrameDeadlineTime(); |
| 55 } | 55 } |
| 56 | 56 |
| 57 void BeginFrameDeadlineForTest() { OnBeginFrameDeadline(); } | 57 void BeginFrameDeadlineForTest() { |
| 58 // Ensure that any missed BeginFrames were handled by the scheduler. We need | |
| 59 // to run the scheduled task ourselves since the NullTaskRunner won't. | |
| 60 if (!missed_begin_frame_task_.IsCancelled()) | |
| 61 missed_begin_frame_task_.callback().Run(); | |
| 62 OnBeginFrameDeadline(); | |
| 63 } | |
| 58 | 64 |
| 59 void ScheduleBeginFrameDeadline() override { | 65 void ScheduleBeginFrameDeadline() override { |
| 60 scheduler_begin_frame_deadline_count_++; | 66 scheduler_begin_frame_deadline_count_++; |
| 61 DisplayScheduler::ScheduleBeginFrameDeadline(); | 67 DisplayScheduler::ScheduleBeginFrameDeadline(); |
| 62 } | 68 } |
| 63 | 69 |
| 64 int scheduler_begin_frame_deadline_count() { | 70 int scheduler_begin_frame_deadline_count() { |
| 65 return scheduler_begin_frame_deadline_count_; | 71 return scheduler_begin_frame_deadline_count_; |
| 66 } | 72 } |
| 67 | 73 |
| 74 bool inside_begin_frame_deadline_interval() { | |
| 75 return inside_begin_frame_deadline_interval_; | |
| 76 } | |
| 77 | |
| 68 protected: | 78 protected: |
| 69 int scheduler_begin_frame_deadline_count_; | 79 int scheduler_begin_frame_deadline_count_; |
| 70 }; | 80 }; |
| 71 | 81 |
| 72 class DisplaySchedulerTest : public testing::Test { | 82 class DisplaySchedulerTest : public testing::Test { |
| 73 public: | 83 public: |
| 74 DisplaySchedulerTest() | 84 DisplaySchedulerTest() |
| 75 : fake_begin_frame_source_(0.f, false), | 85 : fake_begin_frame_source_(0.f, false), |
| 76 task_runner_(new base::NullTaskRunner), | 86 task_runner_(new base::NullTaskRunner), |
| 77 scheduler_(&fake_begin_frame_source_, | 87 scheduler_(&fake_begin_frame_source_, |
| 78 task_runner_.get(), | 88 task_runner_.get(), |
| 79 kMaxPendingSwaps) { | 89 kMaxPendingSwaps) { |
| 80 now_src_.Advance(base::TimeDelta::FromMicroseconds(10000)); | 90 now_src_.Advance(base::TimeDelta::FromMicroseconds(10000)); |
| 81 scheduler_.SetClient(&client_); | 91 scheduler_.SetClient(&client_); |
| 82 } | 92 } |
| 83 | 93 |
| 84 ~DisplaySchedulerTest() override {} | 94 ~DisplaySchedulerTest() override {} |
| 85 | 95 |
| 86 void SetUp() override { scheduler_.SetRootSurfaceResourcesLocked(false); } | 96 void SetUp() override { scheduler_.SetRootSurfaceResourcesLocked(false); } |
| 87 | 97 |
| 88 void BeginFrameForTest() { | 98 void BeginFrameForTest() { |
| 99 now_src_.Advance(base::TimeDelta::FromMicroseconds(10000)); | |
|
brianderson
2017/01/03 19:30:16
To help test readability, can you make it explicit
Eric Seckler
2017/01/04 10:14:49
Done.
| |
| 89 base::TimeTicks frame_time = now_src_.NowTicks(); | 100 base::TimeTicks frame_time = now_src_.NowTicks(); |
| 90 base::TimeDelta interval = BeginFrameArgs::DefaultInterval(); | 101 base::TimeDelta interval = BeginFrameArgs::DefaultInterval(); |
| 91 base::TimeTicks deadline = frame_time + interval; | 102 base::TimeTicks deadline = frame_time + interval; |
| 92 // FakeBeginFrameSource deals with |source_id| and |sequence_number|. | 103 // FakeBeginFrameSource deals with |source_id| and |sequence_number|. |
| 93 fake_begin_frame_source_.TestOnBeginFrame( | 104 fake_begin_frame_source_.TestOnBeginFrame( |
| 94 BeginFrameArgs::Create(BEGINFRAME_FROM_HERE, 0, 1, frame_time, deadline, | 105 BeginFrameArgs::Create(BEGINFRAME_FROM_HERE, 0, 1, frame_time, deadline, |
| 95 interval, BeginFrameArgs::NORMAL)); | 106 interval, BeginFrameArgs::NORMAL)); |
| 96 } | 107 } |
| 97 | 108 |
| 98 protected: | 109 protected: |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 119 | 130 |
| 120 scheduler_.SetVisible(true); | 131 scheduler_.SetVisible(true); |
| 121 | 132 |
| 122 // Go trough an initial BeginFrame cycle with the root surface. | 133 // Go trough an initial BeginFrame cycle with the root surface. |
| 123 BeginFrameForTest(); | 134 BeginFrameForTest(); |
| 124 scheduler_.SetNewRootSurface(root_surface_id1); | 135 scheduler_.SetNewRootSurface(root_surface_id1); |
| 125 scheduler_.BeginFrameDeadlineForTest(); | 136 scheduler_.BeginFrameDeadlineForTest(); |
| 126 | 137 |
| 127 // Resize on the next begin frame cycle should cause the deadline to wait | 138 // Resize on the next begin frame cycle should cause the deadline to wait |
| 128 // for a new root surface. | 139 // for a new root surface. |
| 140 BeginFrameForTest(); | |
| 129 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); | 141 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); |
| 130 BeginFrameForTest(); | |
| 131 scheduler_.SurfaceDamaged(sid1); | 142 scheduler_.SurfaceDamaged(sid1); |
| 132 EXPECT_GT(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 143 EXPECT_GT(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 133 scheduler_.DisplayResized(); | 144 scheduler_.DisplayResized(); |
| 134 EXPECT_EQ(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 145 EXPECT_EQ(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 135 scheduler_.SetNewRootSurface(root_surface_id2); | 146 scheduler_.SetNewRootSurface(root_surface_id2); |
| 136 EXPECT_GE(now_src().NowTicks(), | 147 EXPECT_GE(now_src().NowTicks(), |
| 137 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 148 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 138 scheduler_.BeginFrameDeadlineForTest(); | 149 scheduler_.BeginFrameDeadlineForTest(); |
| 139 | 150 |
| 140 // Verify deadline goes back to normal after resize. | 151 // Verify deadline goes back to normal after resize. |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 157 | 168 |
| 158 scheduler_.SetVisible(true); | 169 scheduler_.SetVisible(true); |
| 159 | 170 |
| 160 // Go trough an initial BeginFrame cycle with the root surface. | 171 // Go trough an initial BeginFrame cycle with the root surface. |
| 161 BeginFrameForTest(); | 172 BeginFrameForTest(); |
| 162 scheduler_.SetNewRootSurface(root_surface_id); | 173 scheduler_.SetNewRootSurface(root_surface_id); |
| 163 scheduler_.BeginFrameDeadlineForTest(); | 174 scheduler_.BeginFrameDeadlineForTest(); |
| 164 | 175 |
| 165 // Resize on the next begin frame cycle should cause the deadline to wait | 176 // Resize on the next begin frame cycle should cause the deadline to wait |
| 166 // for a new root surface. | 177 // for a new root surface. |
| 178 BeginFrameForTest(); | |
| 167 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); | 179 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); |
| 168 BeginFrameForTest(); | |
| 169 scheduler_.SurfaceDamaged(sid1); | 180 scheduler_.SurfaceDamaged(sid1); |
| 170 EXPECT_GT(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 181 EXPECT_GT(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 171 scheduler_.DisplayResized(); | 182 scheduler_.DisplayResized(); |
| 172 EXPECT_EQ(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 183 EXPECT_EQ(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 173 scheduler_.SurfaceDamaged(root_surface_id); | 184 scheduler_.SurfaceDamaged(root_surface_id); |
| 174 EXPECT_GE(now_src().NowTicks(), | 185 EXPECT_GE(now_src().NowTicks(), |
| 175 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 186 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 176 scheduler_.BeginFrameDeadlineForTest(); | 187 scheduler_.BeginFrameDeadlineForTest(); |
| 177 | 188 |
| 178 // Verify deadline goes back to normal after resize. | 189 // Verify deadline goes back to normal after resize. |
| 190 BeginFrameForTest(); | |
| 179 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); | 191 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); |
| 180 BeginFrameForTest(); | |
| 181 scheduler_.SurfaceDamaged(sid1); | 192 scheduler_.SurfaceDamaged(sid1); |
| 182 EXPECT_GT(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 193 EXPECT_GT(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 183 scheduler_.SurfaceDamaged(root_surface_id); | 194 scheduler_.SurfaceDamaged(root_surface_id); |
| 184 EXPECT_GE(now_src().NowTicks(), | 195 EXPECT_GE(now_src().NowTicks(), |
| 185 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 196 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 186 scheduler_.BeginFrameDeadlineForTest(); | 197 scheduler_.BeginFrameDeadlineForTest(); |
| 187 } | 198 } |
| 188 | 199 |
| 189 TEST_F(DisplaySchedulerTest, SurfaceDamaged) { | 200 TEST_F(DisplaySchedulerTest, SurfaceDamaged) { |
| 190 SurfaceId root_surface_id(kArbitraryFrameSinkId, | 201 SurfaceId root_surface_id(kArbitraryFrameSinkId, |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 235 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 246 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 236 scheduler_.SurfaceDamaged(sid2); | 247 scheduler_.SurfaceDamaged(sid2); |
| 237 EXPECT_GE(now_src().NowTicks(), | 248 EXPECT_GE(now_src().NowTicks(), |
| 238 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 249 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 239 scheduler_.BeginFrameDeadlineForTest(); | 250 scheduler_.BeginFrameDeadlineForTest(); |
| 240 | 251 |
| 241 // Make the system idle | 252 // Make the system idle |
| 242 BeginFrameForTest(); | 253 BeginFrameForTest(); |
| 243 scheduler_.BeginFrameDeadlineForTest(); | 254 scheduler_.BeginFrameDeadlineForTest(); |
| 244 BeginFrameForTest(); | 255 BeginFrameForTest(); |
| 245 scheduler_.BeginFrameDeadlineForTest(); | 256 EXPECT_FALSE(scheduler_.inside_begin_frame_deadline_interval()); |
| 246 | 257 |
| 247 // Deadline should trigger early if child surfaces are idle and | 258 // Deadline should trigger early if child surfaces are idle and |
| 248 // we get damage on the root surface. | 259 // we get damage on the root surface. |
| 249 BeginFrameForTest(); | 260 BeginFrameForTest(); |
| 250 EXPECT_LT(now_src().NowTicks(), | 261 EXPECT_FALSE(scheduler_.inside_begin_frame_deadline_interval()); |
| 251 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | |
| 252 scheduler_.SurfaceDamaged(root_surface_id); | 262 scheduler_.SurfaceDamaged(root_surface_id); |
| 253 EXPECT_GE(now_src().NowTicks(), | 263 EXPECT_GE(now_src().NowTicks(), |
| 254 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 264 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 255 scheduler_.BeginFrameDeadlineForTest(); | 265 scheduler_.BeginFrameDeadlineForTest(); |
| 256 } | 266 } |
| 257 | 267 |
| 258 TEST_F(DisplaySchedulerTest, OutputSurfaceLost) { | 268 TEST_F(DisplaySchedulerTest, OutputSurfaceLost) { |
| 259 SurfaceId root_surface_id(kArbitraryFrameSinkId, | 269 SurfaceId root_surface_id(kArbitraryFrameSinkId, |
| 260 LocalFrameId(0, base::UnguessableToken::Create())); | 270 LocalFrameId(0, base::UnguessableToken::Create())); |
| 261 SurfaceId sid1(kArbitraryFrameSinkId, | 271 SurfaceId sid1(kArbitraryFrameSinkId, |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 416 // DrawAndSwap normally. | 426 // DrawAndSwap normally. |
| 417 BeginFrameForTest(); | 427 BeginFrameForTest(); |
| 418 EXPECT_LT(now_src().NowTicks(), | 428 EXPECT_LT(now_src().NowTicks(), |
| 419 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 429 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 420 EXPECT_EQ(0, client_.draw_and_swap_count()); | 430 EXPECT_EQ(0, client_.draw_and_swap_count()); |
| 421 scheduler_.SurfaceDamaged(sid1); | 431 scheduler_.SurfaceDamaged(sid1); |
| 422 scheduler_.BeginFrameDeadlineForTest(); | 432 scheduler_.BeginFrameDeadlineForTest(); |
| 423 EXPECT_EQ(1, client_.draw_and_swap_count()); | 433 EXPECT_EQ(1, client_.draw_and_swap_count()); |
| 424 | 434 |
| 425 // Deadline triggers late while root resources are locked. | 435 // Deadline triggers late while root resources are locked. |
| 436 BeginFrameForTest(); | |
| 426 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); | 437 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); |
| 427 BeginFrameForTest(); | |
| 428 scheduler_.SurfaceDamaged(sid1); | 438 scheduler_.SurfaceDamaged(sid1); |
| 429 EXPECT_GT(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 439 EXPECT_GT(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 430 scheduler_.SetRootSurfaceResourcesLocked(true); | 440 scheduler_.SetRootSurfaceResourcesLocked(true); |
| 431 EXPECT_EQ(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 441 EXPECT_EQ(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 432 | 442 |
| 433 // Deadline does not DrawAndSwap while root resources are locked. | 443 // Deadline does not DrawAndSwap while root resources are locked. |
| 434 EXPECT_EQ(1, client_.draw_and_swap_count()); | 444 EXPECT_EQ(1, client_.draw_and_swap_count()); |
| 435 scheduler_.SurfaceDamaged(sid1); | 445 scheduler_.SurfaceDamaged(sid1); |
| 436 scheduler_.BeginFrameDeadlineForTest(); | 446 scheduler_.BeginFrameDeadlineForTest(); |
| 437 EXPECT_EQ(1, client_.draw_and_swap_count()); | 447 EXPECT_EQ(1, client_.draw_and_swap_count()); |
| 438 | 448 |
| 439 // Deadline triggers normally when root resources are unlocked. | 449 // Deadline triggers normally when root resources are unlocked. |
| 450 BeginFrameForTest(); | |
| 440 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); | 451 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); |
| 441 BeginFrameForTest(); | |
| 442 scheduler_.SurfaceDamaged(sid1); | 452 scheduler_.SurfaceDamaged(sid1); |
| 443 EXPECT_EQ(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 453 EXPECT_EQ(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 444 scheduler_.SetRootSurfaceResourcesLocked(false); | 454 scheduler_.SetRootSurfaceResourcesLocked(false); |
| 445 scheduler_.SurfaceDamaged(root_surface_id); | 455 scheduler_.SurfaceDamaged(root_surface_id); |
| 446 EXPECT_EQ(base::TimeTicks(), | 456 EXPECT_EQ(base::TimeTicks(), |
| 447 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 457 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 448 | 458 |
| 449 EXPECT_EQ(1, client_.draw_and_swap_count()); | 459 EXPECT_EQ(1, client_.draw_and_swap_count()); |
| 450 scheduler_.BeginFrameDeadlineForTest(); | 460 scheduler_.BeginFrameDeadlineForTest(); |
| 451 EXPECT_EQ(2, client_.draw_and_swap_count()); | 461 EXPECT_EQ(2, client_.draw_and_swap_count()); |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 479 EXPECT_LT(now_src().NowTicks(), | 489 EXPECT_LT(now_src().NowTicks(), |
| 480 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 490 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 481 EXPECT_EQ(2, client_.draw_and_swap_count()); | 491 EXPECT_EQ(2, client_.draw_and_swap_count()); |
| 482 scheduler_.SurfaceDamaged(sid1); | 492 scheduler_.SurfaceDamaged(sid1); |
| 483 scheduler_.SurfaceDamaged(sid2); | 493 scheduler_.SurfaceDamaged(sid2); |
| 484 scheduler_.BeginFrameDeadlineForTest(); | 494 scheduler_.BeginFrameDeadlineForTest(); |
| 485 EXPECT_EQ(3, client_.draw_and_swap_count()); | 495 EXPECT_EQ(3, client_.draw_and_swap_count()); |
| 486 scheduler_.DidSwapBuffers(); | 496 scheduler_.DidSwapBuffers(); |
| 487 | 497 |
| 488 // Deadline triggers late when swap throttled. | 498 // Deadline triggers late when swap throttled. |
| 499 BeginFrameForTest(); | |
| 489 base::TimeTicks late_deadline = | 500 base::TimeTicks late_deadline = |
| 490 now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); | 501 now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); |
| 491 BeginFrameForTest(); | |
| 492 // Damage surface 1, but not surface 2 so we avoid triggering deadline | 502 // Damage surface 1, but not surface 2 so we avoid triggering deadline |
| 493 // early because all surfaces are ready. | 503 // early because all surfaces are ready. |
| 494 scheduler_.SurfaceDamaged(sid1); | 504 scheduler_.SurfaceDamaged(sid1); |
| 495 EXPECT_EQ(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 505 EXPECT_EQ(late_deadline, scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 496 | 506 |
| 497 // Don't draw and swap in deadline while swap throttled. | 507 // Don't draw and swap in deadline while swap throttled. |
| 498 EXPECT_EQ(3, client_.draw_and_swap_count()); | 508 EXPECT_EQ(3, client_.draw_and_swap_count()); |
| 499 scheduler_.BeginFrameDeadlineForTest(); | 509 scheduler_.BeginFrameDeadlineForTest(); |
| 500 EXPECT_EQ(3, client_.draw_and_swap_count()); | 510 EXPECT_EQ(3, client_.draw_and_swap_count()); |
| 501 | 511 |
| 502 // Deadline triggers normally once not swap throttled. | 512 // Deadline triggers normally once not swap throttled. |
| 503 // Damage from previous BeginFrame should cary over, so don't damage again. | 513 // Damage from previous BeginFrame should cary over, so don't damage again. |
| 514 scheduler_.DidReceiveSwapBuffersAck(); | |
| 515 BeginFrameForTest(); | |
| 504 base::TimeTicks expected_deadline = | 516 base::TimeTicks expected_deadline = |
| 505 scheduler_.LastUsedBeginFrameArgs().deadline - | 517 scheduler_.LastUsedBeginFrameArgs().deadline - |
| 506 BeginFrameArgs::DefaultEstimatedParentDrawTime(); | 518 BeginFrameArgs::DefaultEstimatedParentDrawTime(); |
| 507 scheduler_.DidReceiveSwapBuffersAck(); | |
| 508 BeginFrameForTest(); | |
| 509 EXPECT_EQ(expected_deadline, | 519 EXPECT_EQ(expected_deadline, |
| 510 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 520 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
| 511 // Still waiting for surface 2. Once it updates, deadline should trigger | 521 // Still waiting for surface 2. Once it updates, deadline should trigger |
| 512 // immediately again. | 522 // immediately again. |
| 513 scheduler_.SurfaceDamaged(sid2); | 523 scheduler_.SurfaceDamaged(sid2); |
| 514 EXPECT_EQ(scheduler_.DesiredBeginFrameDeadlineTimeForTest(), | 524 EXPECT_EQ(scheduler_.DesiredBeginFrameDeadlineTimeForTest(), |
| 515 base::TimeTicks()); | 525 base::TimeTicks()); |
| 516 // Draw and swap now that we aren't throttled. | 526 // Draw and swap now that we aren't throttled. |
| 517 EXPECT_EQ(3, client_.draw_and_swap_count()); | 527 EXPECT_EQ(3, client_.draw_and_swap_count()); |
| 518 scheduler_.BeginFrameDeadlineForTest(); | 528 scheduler_.BeginFrameDeadlineForTest(); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 571 | 581 |
| 572 scheduler_.SetRootSurfaceResourcesLocked(true); | 582 scheduler_.SetRootSurfaceResourcesLocked(true); |
| 573 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); | 583 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); |
| 574 | 584 |
| 575 scheduler_.OutputSurfaceLost(); | 585 scheduler_.OutputSurfaceLost(); |
| 576 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); | 586 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); |
| 577 } | 587 } |
| 578 | 588 |
| 579 } // namespace | 589 } // namespace |
| 580 } // namespace cc | 590 } // namespace cc |
| OLD | NEW |