| Index: third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl_unittest.cc
|
| diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl_unittest.cc b/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl_unittest.cc
|
| index 554f41261afa6666868411770a76abf3ccaf9fcb..6acf0cb3cbcc03d0c9d911fb8c5bd0af94bc5a1b 100644
|
| --- a/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl_unittest.cc
|
| +++ b/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl_unittest.cc
|
| @@ -627,6 +627,62 @@ TEST_F(WebViewSchedulerImplTest, SuspendTimersWhileVirtualTimeIsPaused) {
|
| EXPECT_THAT(run_order, ElementsAre(1));
|
| }
|
|
|
| +TEST_F(WebViewSchedulerImplTest, VirtualTimeBudgetExhaustedCallback) {
|
| + std::vector<base::TimeTicks> real_times;
|
| + std::vector<size_t> virtual_times_ms;
|
| + base::TimeTicks initial_real_time = scheduler_->tick_clock()->NowTicks();
|
| + size_t initial_virtual_time_ms =
|
| + web_frame_scheduler_->TimerTaskRunner()
|
| + ->MonotonicallyIncreasingVirtualTimeSeconds() *
|
| + 1000.0;
|
| +
|
| + web_view_scheduler_->EnableVirtualTime();
|
| +
|
| + web_frame_scheduler_->TimerTaskRunner()->PostDelayedTask(
|
| + BLINK_FROM_HERE,
|
| + MakeVirtualTimeRecorderTask(clock_.get(),
|
| + web_frame_scheduler_->TimerTaskRunner(),
|
| + &real_times, &virtual_times_ms),
|
| + 1.0);
|
| +
|
| + web_frame_scheduler_->TimerTaskRunner()->PostDelayedTask(
|
| + BLINK_FROM_HERE,
|
| + MakeVirtualTimeRecorderTask(clock_.get(),
|
| + web_frame_scheduler_->TimerTaskRunner(),
|
| + &real_times, &virtual_times_ms),
|
| + 2.0);
|
| +
|
| + web_frame_scheduler_->TimerTaskRunner()->PostDelayedTask(
|
| + BLINK_FROM_HERE,
|
| + MakeVirtualTimeRecorderTask(clock_.get(),
|
| + web_frame_scheduler_->TimerTaskRunner(),
|
| + &real_times, &virtual_times_ms),
|
| + 5.0);
|
| +
|
| + web_frame_scheduler_->TimerTaskRunner()->PostDelayedTask(
|
| + BLINK_FROM_HERE,
|
| + MakeVirtualTimeRecorderTask(clock_.get(),
|
| + web_frame_scheduler_->TimerTaskRunner(),
|
| + &real_times, &virtual_times_ms),
|
| + 7.0);
|
| +
|
| + web_view_scheduler_->GrantVirtualTimeBudget(
|
| + base::TimeDelta::FromMilliseconds(5),
|
| + WTF::Bind(
|
| + [](WebViewScheduler* scheduler) {
|
| + scheduler->SetVirtualTimePolicy(VirtualTimePolicy::PAUSE);
|
| + },
|
| + WTF::Unretained(web_view_scheduler_.get())));
|
| +
|
| + mock_task_runner_->RunUntilIdle();
|
| +
|
| + // The timer that is scheduled for the exact point in time when virtual time
|
| + // expires will not run.
|
| + EXPECT_THAT(real_times, ElementsAre(initial_real_time, initial_real_time));
|
| + EXPECT_THAT(virtual_times_ms, ElementsAre(initial_virtual_time_ms + 1,
|
| + initial_virtual_time_ms + 2));
|
| +}
|
| +
|
| namespace {
|
|
|
| using ScopedExpensiveBackgroundTimerThrottlingForTest =
|
|
|